Implement and verify File Integration use cases

File protocols (FTP, SFTP, local)
File consumers (consuming based on a delimiter, streaming files)
File producer/writers

Following table shows the list of file integration use cases that needs to be verified and implemented.
File Integration Use Cases

Use Case
Sub Use case
Ballerina FTP Module / File Module
Status

Reading a file from a specified location in file system

From Local location
✅
improve

From FTP location
✅

From FTP location in passive mode
✅

From SFTP location
✅

From SFTP location in passive mode
✅

From FTPS location in passive mode

Writing a file to a specified location in file system

To Local location
✅
improve

From FTP location
✅

From FTP location in passive mode
✅

From SFTP location
✅

From SFTP location in passive mode
✅

From FTPS location in passive mode

Moving a file without a transformation

✅

Move a file/folder within the same server

Get file properties

Get size of a file
✅

Get last modified time of a file

Split and merge files

Splits files into multiple chunks

Merges files into a single file

Append content to an existing file

Read specified lines of a file

Read specific lines between given line numbers from a file

Reads a specific line from a file

Processing archived files

Archive files or folder in the file system

List all files inside zip file

Decompresses a zip file in the file system

Check and Fetch files in the file system

Search for a file based on a given file pattern, directory pattern in a specified location

Checks the existence of a file in a specified location.

Fetch a file by a pattern

Get the content list of a given path
✅

Copy files from one location to another

Copy particular files with given file pattern from files on the local physical file system or a file on an FTP server to a specified location

Create a file or folder

Create a file or folder on the local physical file system  with or without content

Create a file or folder on a FTP server  with or without content
✅

Deleting a file or folder

Delete a file / folder on the local physical file system

Delete a file / folder on the  FTP server
✅

Sending a file

Send a file to a specified location on the local physical file system

Send a file to a specified location on a ftp server
✅

Connect to a FTP server through a Proxy

Connect to a ftp server through a proxy

I have drafted a sample program to implement the functionality of the file listener listening to a local folder. Here when a modification is done to the listening folder, the files are processed and move them to a specified location.
import ballerina/file;
import ballerina/log;
import ballerina/internal;
import ballerina/io;

listener file:Listener localFolder = new ({
    path: "/Users/nipuni/Documents/Ballerina_Integrator/file-integration/fs",
    recursive: false
});

service fileSystem on localFolder {

    resource function onModify(file:FileEvent m) {

        error? e = localFolder.__start();
        log:printInfo("File created");

        string source = "/Users/nipuni/Documents/Ballerina_Integrator/file-integration/fs";
        string fileNamePattern = "xml";

        internal:Path src = new(source);

        internal:Path[]|error fileList = src.list();

        if (fileList is internal:Path[]) {
            foreach (var file in fileList) {
                string ext = file.getExtension();

                if (ext == fileNamePattern) {
                    string name = file.getName();

                    string srcPath = "/Users/nipuni/Documents/Ballerina_Integrator/file-integration/fs";
                    srcPath = srcPath + "/" + name;

                    string target = "/Users/nipuni/Documents/Ballerina_Integrator/file-integration/out";
                    target = target + "/" + name;

                    internal:Path srcP = new(srcPath);
                    internal:Path dest = new(target);

                    processFile(ext, srcPath);
                    log:printInfo("Processing finished");

                    error? er = srcP.moveTo(dest);
                    io:println(er);
                    log:printInfo("Operation successful");

                }
            }
        }
    }
}

// User can define the the processing ( Following is an example).
public function processFile(string ext, string source) {
    log:printInfo("Started processing the file ");

    if (ext == "xml") {
        log:printInfo("Reading xml file");
        io:ReadableByteChannel rbc = io:openReadableFile(source);
        io:println("Get byte channel");
        io:ReadableCharacterChannel rch = new(rbc, "UTF8");
        var result = rch.readXml();

        if (result is xml) {
            json j1 = result.toJSON({

            });
        }
    }

    if (ext == "csv") {
        log:printInfo("Reading csv file");
        io:ReadableCSVChannel rCsvChannel = io:openReadableCsvFile(source);

        while (rCsvChannel.hasNext()) {
            var records = rCsvChannel.getNext();

            if (records is string[]) {
                io:println(records);
            }
        }
    }
}

Following util functions are implemented to process xml and json files.
// Copyright (c) 2019 WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
//
// WSO2 Inc. licenses this file to you under the Apache License,
// Version 2.0 (the "License"); you may not use this file except
// in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied.  See the License for the
// specific language governing permissions and limitations
// under the License.

import ballerina/log;
import ballerina/io;
import ballerina/config;
import ballerina/http;

// Util function to read a json file.
public function readJsonFile(io:ReadableByteChannel result) returns json|error {

    io:ReadableCharacterChannel? charChannelResult = getCharChannel(result);
    var resultJson = charChannelResult.readJson();

    if (resultJson is json) {
        io:println("File content: ", resultJson);
        return resultJson;
    } else {
        log:printError("An error occured.", err = resultJson);
        return resultJson;
    }
}

// Util function to read a xml file.
public function readXmlFile(io:ReadableByteChannel result) returns xml|error? {

    io:ReadableCharacterChannel? charChannelResult = getCharChannel(result);
    var resultXml = charChannelResult.readXml();

    if (resultXml is xml) {
        io:println("File content: ", resultXml);
        return resultXml;
    } else {
        log:printError("An error occured.", err = resultXml);
        return resultXml;
    }
}

// Util function to convert a byte channel to a character channel.
public function getCharChannel(io:ReadableByteChannel getResult) returns io:ReadableCharacterChannel? {

    io:ReadableCharacterChannel? charChannel = new io:ReadableCharacterChannel(getResult, "utf-8");

    if (charChannel is io:ReadableCharacterChannel) {
        return charChannel;
    } else {
        log:printError("An error occured.");
        return;
    }
}


change report export csv + export unit tests

csv export for change report
cleanup export/display sources
several smaller fixes
unit tests for all rules + changes html + csv exports

very good - now only the SetGermanTimeZoneOnAllUnitTest function is missing, I guess


Error in setting up env to compile on Mac.

I followed the instruction to compile the code on Mac but I am still having the issue of not being able to get the units.  I saw a post mentioning synching using glock.  So I installed glock and ran the command:
open ~/.go/src/github.com/jwilder/docker-squash/GLOCKFILE: no such file or directory
It still gave me an error.  Do I need to clone the project into .go folder?  I am just not sure if that is supposed to be the case.  Thanks for your help.

Yes. Clone the project.


Minor refine of join

What problem does this PR solve?
Issue Number: ref #6233
Problem Summary:
What is changed and how it works?

Rename JoinHashTable.h/cpp to JoinHashMap.h/cpp
Rename JoinType in JoinHashTable.h to JoinMapMethod
Move Join::chooseMethod to JoinHashTable.h/cpp and rename it to chooseJoinMapMethod
Make convertColumnToNullable as a common utils function

Check List
Tests

[ ] Unit test
[ ] Integration test
[ ] Manual test (add detailed scripts or steps below)
[ ] No code

Side effects

[ ] Performance regression: Consumes more CPU
[ ] Performance regression: Consumes more Memory
[ ] Breaking backward compatibility

Documentation

[ ] Affects user behaviors
[ ] Contains syntax changes
[ ] Contains variable changes
[ ] Contains experimental features
[ ] Changes MySQL compatibility

Release note

None

/merge

/run-integration-test


Allow repetition of operationId

Whenever I am using OpenAPI, I'll always get across this issue that the operationId has to be globally unique and that it, somehow, is also the basis for naming functions.
So, it's impossible to have something like this (Java, Spring Boot)
@RestController
public class SomethingController {
    @RequestMapping(value = "/something", method = RequestMethod.GET)
    public SomethingDto get() {
        return new SomethingDto();
    }
}

@RestController
public class OtherthingController {
    @RequestMapping(value = "/otherthing", method = RequestMethod.GET)
    public OtherthingDto get() {
        return new OtherthingDto();
    }
}

without getting enumerated function names as a result (e.g. typescript-angular generator):
SomethingControllerService  #get
OtherthingControllerService #get1
                                ^

It makes me wonder how and why this decision has been made and even more so, that this is still the case in v3.
If there is the need for a unique identifier, operationId, why isn't there simply a non-unique peroperty operationName which is allowd to be repeated?
The result is that we have to rewrite function names which ends up looking like this:
somethingController.getSomething(/* .. */);
somethingController.createSomething(/* .. */);
somethingController.updateSomething(/* .. */);
somethingController.deleteSomething(/* .. */);
somethingController.getAllSomething(/* .. */);

instead of just
somethingController.get(/* .. */);
somethingController.create(/* .. */);
somethingController.update(/* .. */);
somethingController.delete(/* .. */);
somethingController.getAll(/* .. */);

I'm just raising this because I feel like this is an unnecessary complication when it comes to generating code and using it with a client.
See also

https://github.com/go-swagger/go-swagger/issues/1143

I think it would make more sense to have resourceName in Path item object. It would work for any RESTful service, which by definition assigns paths to resources.
Note that sometimes resources are nested (/resource/subresource).

This is a problem with Spring Boot using operationId in a way that was not intended.  The purpose of operationId is to be a unique identifier across the whole API, and other parts of the specification depend on this.

Actually, I can't tell whether the problem is with Spring Booth or Typescript Angular Generator.
If Spring Boot is insiting on creating things like get1, get2, etc. as operationIds and won't let you set override them with something meaningful, that's a problem with Spring Boot and should be raised there.
If Spring Boot is not doing that, and Typescript Angular Generator is coming up with get1 etc on its own (and there's no way to change it), the problem is with Typescript Angular Generator and should be raised there.
As far as the spec is concerned, operationId is doing what it's intended to do, and really cannot be made non-unique without breaking tons of other things.
Since @rafalkrupinski asked about a new non-unique field to do this, I'm going to add to the title to reflect that so I don't keep coming here intending to close it :-)

@rafalkrupinski actually I realize I misread your question and it is about resource identification.  Could you file that as a new issue?  I think it is likely to get addressed in OAS 4 Moonwalk (see OAI/sig-moonwalk#30), but if you want it considered for 3.x it should get its own issue here.  I suspect it's too big of change for 3.x, but it's possible it could be accommodated.

Having the very same problem. I have unified names for CRUD methods in all REST controllers and now they are all postfixed with numbers.


Fix signature matches in release builds

Compiler was removing the "unused" variables. Pin(T var) prevents this. The second commit just removes the duplicate properties within the .csproj, seems like auto-format might have made a mistake between a and b.

Updated in 02a5a86


Open other apps from the server

Hey guys,
I wanted to find a way to call a different activity, from a different app (say open Netflix) from the server.
You made the ServiceManager class in order to get the relevant services for each action (input, window, display and etc) and I though about implementing the IActivityManager and with that, open apps from the server.
I tried:
public void getActivityManager() {
 if (activityManager == null) {
            activityManager = new ActivityManager(getService("activity", "android.app.IActivityManager"));
        }
        return activityManager;
    }

but it failed.
Do you have any idea how to implement the service?
By the way, I will be happy to use any other way to open different apps. As I understand it, you gotta have an Activity to open other activities and the server doesn't have one.
Thanks!

To open an app, you must mimic what the SDK API does with Context.startActivity(Intent), but from an IActivityManager.
Some pointers:

https://github.com/aosp-mirror/platform_frameworks_base/commit/2882406de31bd2a60e523253d8794e14af236975
runStartActivity() https://android.googlesource.com/platform/frameworks/base/+/master/services/core/java/com/android/server/am/ActivityManagerShellCommand.java

Thanks for the help.
I really don't know if I'm looking in the relevant locations but I did this.
I looked at Am.java and I understood that mAm.asBinder().shellCommand() is the way to fire adb shell am ... commands so I tried to build the call via reflection. It looks like so:
// get the activity manager native interface
Class<?> cls = Class.forName("android.app.ActivityManagerNative");
Method getDefaultMethod = cls.getDeclaredMethod("getDefault");
IInterface am = (IInterface) getDefaultMethod.invoke(null);

// get the binder
Method asBinderMethod = am.getClass().getMethod("asBinder");
Object binderProxy = asBinderMethod.invoke(am);

and now I stuck cause I need to get the ShellCallback.class for the "shellCommand" method and the class is hidden (?)
tried like so (and it couldn't find the class):
 Class<?> shellCbClass = Class.forName("android.os.ShellCallback");
            System.out.println("Shell cb: " + shellCbClass);
                Method shellCommandMethod = binderProxy.getClass().getMethod("shellCommand", FileDescriptor.class,
                        FileDescriptor.class,
                        FileDescriptor.class,
                        String[].class,
                        shellCbClass,
                        ResultReceiver.class);

BTW I don't think that I'm looking at the right place. Can you point me further?

Thank you for your help.
I don't need this anymore


Feat/chart tick options

Proposed solution for #556

👋 Thanks for creating a pull request! 🚀 Checkout the storybooks we've created for it: react-chartsangular-charts


Bump version to 0.2.0

Opening a PR so I can check pre-commit and so.

Pull Request Test Coverage Report for Build<PHONE_NUMBER>3
Details

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 98.63%

Totals

Change from base Build<PHONE_NUMBER>2:
0.0%

Covered Lines:
68

Relevant Lines:
69

💛  - Coveralls

Pull Request Test Coverage Report for Build<PHONE_NUMBER>3
Details

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 98.63%

Totals

Change from base Build<PHONE_NUMBER>2:
0.0%

Covered Lines:
68

Relevant Lines:
69

💛  - Coveralls


Function traverseSnapshot not properly assembling the new translated route.

I'm submitting a ...  (check one with "x")
[ x] bug report => Search github for a similar issue or PR before submitting
[ ] feature request => Please check if similar feature request does not exist
[ ] support request => Suggested place for help and support is [stackoverflow](https://stackoverflow.com/), search for similar question before posting

Description
Using angular 7+ if a route as parameters, for example :name or :id, this method on this line "...Object.keys(snapshot.params).length ? [snapshot.params] : []," will add to the route the following ";name=valueofthename" or ";id=valueoftheid". There is another problem on the line above on the urlPart this urlPart I think needs to be splited by "/" otherwise if my route is something like "person/:name" the the result of calling the method changeLanguage that calls the traverseSnapshot will result in something like "lang/person%2Fvalueofthename;name=valueofthename".
🔬 Minimal Reproduction (if applicable)
On this code https://stackblitz.com/edit/localize-router-v2-issue-template-o6mvus if you write on the link "/en/hello/name" and after click on on of the buttons to change the language you will sew on the console the error "Cannot match any routes. URL Segment: 'de/hello%2Fname;name=name'" the type of the error does not matter for the problem as it is just a not matching error, the problem is actully the construction of the url that is not properly constructed.
🌍  Your Environment
Angular Version:

Angular CLI: 7.0.5
Node: 10.13.0
OS: win32 x64
Angular: 7.0.3
... animations, common, compiler, compiler-cli, core, forms
... http, language-service, platform-browser
... platform-browser-dynamic, router

Package                           Version
-----------------------------------------------------------
@angular-devkit/architect         0.10.5
@angular-devkit/build-angular     0.10.5
@angular-devkit/build-optimizer   0.10.5
@angular-devkit/build-webpack     0.10.5
@angular-devkit/core              7.0.5
@angular-devkit/schematics        7.0.5
@angular/cli                      7.0.5
@ngtools/webpack                  7.0.5
@schematics/angular               7.0.5
@schematics/update                0.10.5
rxjs                              6.3.3
typescript                        3.1.6
webpack                           4.19.1

Localize Router Version:

localize-router: 2.0.0-RC.2
localize-router-http-loader: 1.0.2

Anything else relevant?

@ngx-translate/core: 11.0.1
@ngx-translate/http-loader: 4.0.0

I have a potential fix for this here: https://github.com/cywolf/localize-router/tree/fix-151

Hi @cywolf just tested that changes and it seems to fix the problem that I described. Did you reported this problem previously on this repository? Asking to see if there is more discussion about the problem reported.
Did you try to create a pull request of your change to this greentube/localize-router? I verified that your solution fix my problem but I don't know if it will break something else.

@cywolf Your solution not working for me. Even if I did fork and just copied your file. It's huge bug for me actually :?

Hi @dragorwyin that is strange your case is very similar with mine and the solution by @cywolf worked for me, did you check your routing configuration to see if there is something wrong? are you able to create a example to reproduce your problem?

@JoseCMRocha Here is a reproduction:
I have a app-routing.module.ts file with simple configuration:
import { Routes } from '@angular/router';
import { FullComponent } from './core/layouts/full/full.component';
import { BlankComponent } from './core/layouts/blank/blank.component';
import { NotFoundComponent } from './modules/not-found/not-found.component';
import { LoginComponent } from './modules/login/login.component';
import { AuthGuardConfirmed } from './core/guard/auth-guard-confirmed.service';

export const routes: Routes = [
  {
    path: '',
    component: FullComponent,
    canLoad: [AuthGuardConfirmed],
  }, {
    path: '',
    component: BlankComponent,
    children: [{
      path: 'login',
      component: LoginComponent
    }, {
      path: 'register',
      loadChildren: './modules/register/register.module#RegisterModule',
    }]
  },
  { path: '404', component: NotFoundComponent },
  { path: '**', redirectTo: '/404' }
];

app.module.ts
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';

import { AppComponent } from './app.component';
import { FullComponent } from './core/layouts/full/full.component';
import { BlankComponent } from './core/layouts/blank/blank.component';
import { NotFoundComponent } from './modules/not-found/not-found.component';
import { LoginComponent } from './modules/login/login.component';
import { AuthGuardConfirmed } from './core/guard/auth-guard-confirmed.service';
import { TranslateHttpLoader } from '@ngx-translate/http-loader';

import { HttpClientModule, HttpClient } from '@angular/common/http';

import { TranslateModule, TranslateService, TranslateLoader } from '@ngx-translate/core';
import { LocalizeRouterModule, LocalizeRouterSettings, LocalizeParser } from 'localize-router';
import { LocalizeRouterHttpLoader } from 'localize-router-http-loader';
import { routes } from './app-routing.module';
import { RouterModule } from '@angular/router';
import { Location } from '@angular/common';

export function createTranslateLoader(http: HttpClient) {
  return new TranslateHttpLoader(http, './assets/i18n/', '.json');
}

export function HttpLoaderFactory(http: HttpClient) {
  return new TranslateHttpLoader(http);
}

@NgModule({
  declarations: [
    AppComponent,
    BlankComponent,
    NotFoundComponent,
    FullComponent,
    LoginComponent,
  ],
  imports: [
    BrowserModule,
    BrowserAnimationsModule,
    HttpClientModule,
    TranslateModule.forRoot({
      loader: {
        provide: TranslateLoader,
        useFactory: HttpLoaderFactory,
        deps: [HttpClient]
      }
    }),
    LocalizeRouterModule.forRoot(routes, {
      parser: {
        provide: LocalizeParser,
        useFactory: (translate, location, settings, http) =>
          new LocalizeRouterHttpLoader(translate, location, settings, http),
        deps: [TranslateService, Location, LocalizeRouterSettings, HttpClient]
      }
    }),
    RouterModule.forRoot(routes)
  ],
  providers: [
    AuthGuardConfirmed,
  ],
  bootstrap: [AppComponent]
})
export class AppModule { }

register.routing.ts:
import { Routes, RouterModule } from '@angular/router';
import { RegisterComponent } from './register.component';
import { ConfirmComponent } from './confirm/confirm.component';

export const routes: Routes = [
  {
    path: '',
    children: [{
      path: '',
      component: RegisterComponent
    }, {
      path: ':token',
      component: ConfirmComponent
    }]
  }
];

export const RegisterRoutes = RouterModule.forChild(routes);

register.module.ts
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { routes } from './register.routing';

import { MaterialModule } from '../../shared/material.module';
import { SharedModule } from '../../shared/shared.module';

import { ComponentsModule } from '../../components/components.module';
import { RegisterComponent } from './register.component';
import { ConfirmComponent } from './confirm/confirm.component';
import { TranslateModule, TranslateLoader } from '@ngx-translate/core';
import { LocalizeRouterModule } from 'localize-router';
import { RouterModule } from '@angular/router';

@NgModule({
  imports: [
    CommonModule,
    SharedModule,
    MaterialModule,
    ComponentsModule,
    TranslateModule,
    LocalizeRouterModule.forChild(routes),
    RouterModule.forChild(routes)
  ],
  declarations: [
    RegisterComponent,
    ConfirmComponent,
  ],
})
export class RegisterModule { }

I have translations in assets/i18n (pl.json and en.json):

pl.json: "{ ROUTES.register": "rejestracja }",
en.json: "{ ROUTES.register": "register }",

I have an locales.json in assets:
{
  "locales": [
    "en",
    "pl"
  ],
  "prefix": "ROUTES."
}

I hope there will be any solution and will be implemented soon in this library ;P

Hi, just wondering when @cywolf is going to be merged to fix this issue?

@MarcARoberge as @cywolf does not have time for tests, I just created a PR from his fork. We need this fix.

any news on this?

Are there any plans for this?

for a patch see https://github.com/Greentube/localize-router/pull/159#issuecomment-501331596


Fixed SQL script to improve legibility

Fixed SQL script to improve legibility.

@VanMSFT
IMPORTANT: When the changes are ready for publication, add a #sign-off comment to signal that the PR is ready for the review team to merge.
#label:"aq-pr-triaged"
@MicrosoftDocs/public-repo-pr-review-team

I'll approve these changes. #sign-off


[import/order] Regression in behavior with parent and sibling

Since Version 2.27.0 we've recognized a change in over 500 files with the ordering rule:
        "import/order": [
          "error",
          {
            "groups": ["builtin", "external", "parent", "sibling", "index"],
            "newlines-between": "always",
            "alphabetize": {
              "order": "asc",
              "caseInsensitive": true
            }
          }
        ],

For example:
@my-local-package/mysub-path
@my-local-package/mysub/path
They are now handled different than before and leads to hundres of linting errors where no before.

This eventually relates to https://github.com/import-js/eslint-plugin-import/issues/2683 and https://github.com/import-js/eslint-plugin-import/issues/2682

cc @Pearce-Ropion

According to the https://github.com/import-js/eslint-plugin-import/commit/347d78b678a772d5d04e56ff36c131e46d0423ef change, this is not a bug. The change was made to specifically address this specific use case (as far as I understand it)

@JohnnyDevNull how many of those changes are fixable with the autofixer?

We use a similar configuration to @JohnnyDevNull in a large codebase and the import-order rule considered this order valid in 2.26:
import abc from '../../abc'
import def from '../def'
import ghi from './ghi'
import jkl from './jkl'

But in 2.27 it's forcing the following order, which doesn't make sense to us:
import ghi from './ghi'
import jkl from './jkl'
import abc from '../../abc'
import def from '../def'

It looks like our only workaround right now would be to change our config to put "parent" and "sibling" into different groups, forcing adding a blank line between parent and sibling imports.
This regression does seem to come from this change:

According to the 347d78b change, this is not a bug. The change was made to specifically address this specific use case (as far as I understand it)

Looking at https://github.com/import-js/eslint-plugin-import/pull/2396, it looks like the intent was to sort forward slashes (/) before hyphens (-), so that alphabetical order would be:
something
something/subpath
something-else

But the change also triggered sorting the / character before dots (.), resulting in the issues reported here for parent and sibling imports in the same alphabetized group.
So the importsSorter function should probably be expanded on a bit to sort dots before slashes, hopefully fixing this while still passing the tests from #2396.

I had lock the plugin version to 2.26.o to fix this:

Quick progress update, I have a fix for this working locally. I'm working on adding a few more unit test cases to maintain code coverage. I should have a PR up by the end of the week.

According to the 347d78b change, this is not a bug. The change was made to specifically address this specific use case (as far as I understand it)

I would hazard to say it's a bug since the expected behavior, as described in the docs is not the actual one.

Quick progress update, I have a fix for this working locally. I'm working on adding a few more unit test cases to maintain code coverage. I should have a PR up by the end of the week.

@Pearce-Ropion How's this coming along?

Quick progress update, I have a fix for this working locally. I'm working on adding a few more unit test cases to maintain code coverage. I should have a PR up by the end of the week.

@Pearce-Ropion How's this coming along?

I've put up #2721. I think it needs more unit testing but figured I'd get the PR out there

Seems many people stay at 2.26.0 because of this issue:

@JohnnyDevNull how many of those changes are fixable with the autofixer?

It takes too long to run. We have round about 300 libraries in a NX Monorepo. It's impossible to get this through a code review without having new merge conflicts within a week. The only solution is to keep the local path as before or uninstalling the plugin sadly to say.
So we stay at 2.26.0 until it's fixed or we have to remove it because of eslint version upgrades.

We're also downgrading to 2.26.0 in TinyMCE to avoid this issue, the PR that resulted was too much
https://github.com/tinymce/tinymce/commit/841176b5013c113c6be4605ccf8d06e9c417e43d

Still not fixed, staying at 2.26.0

Still not fixed, staying at 2.26.0

for anyone can't wait, recommend: https://github.com/lydell/eslint-plugin-simple-import-sort

Still not fixed, staying at 2.26.0

Still not fixed, staying at 2.26.0


Serializer is not working

async def main():
    shazam = Shazam()
    top_five_track_from_amsterdam = await shazam.top_country_tracks('NL', 5)
    for track in top_five_track_from_amsterdam['tracks']:
        serialized = Serialize.track(data=track)
        print(serialized.title)
loop = asyncio.get_event_loop()
loop.run_until_complete(main())
Error:
    for track in top_five_track_from_amsterdam['tracks']:
KeyError: 'tracks'

async def main():  shazam = Shazam()  top_five_track_from_amsterdam = await shazam.top_country_tracks('NL', 5)  for track in top_five_track_from_amsterdam['tracks']:  serialized = Serialize.track(data=track)  print(serialized.title) loop = asyncio.get_event_loop() loop.run_until_complete(main())
Error:
 for track in top_five_track_from_amsterdam['tracks']: KeyError: 'tracks'

Hello!
import asyncio
from shazamio import Shazam, Serialize

async def main():
    shazam = Shazam()
    top_five_track_from_amsterdam = await shazam.top_country_tracks("NL", 100)
    tracks = Serialize.playlists(top_five_track_from_amsterdam)
    print(tracks)

    for track in top_five_track_from_amsterdam["data"]:
        serialized = Serialize.playlist(data=track)
        print(serialized)

loop = asyncio.get_event_loop_policy().get_event_loop()
loop.run_until_complete(main())

There are problems in the readme documentation, there is simply not enough time to update it. See the examples file, the code is always up to date.


Support for Datadog Powerpack Implementation in Terraformer

Datadog has recently introduced a Powerpack implementation using Terraform, but Terraformer currently lacks support for this feature. This issue is raised to track the request for adding support for Datadog Powerpack in Terraformer.
2024/01/31 10:49:13 datadog importing... powerpack
2024/01/31 10:49:13 datadog error importing powerpack, err: datadog: powerpack not supported service

Documentation Reference:
For more information on Datadog Powerpack using Terraform, refer to the official documentation: Datadog Powerpack Terraform Documentation

Do we have any update on this?

Opened a PR above for this. Hoping that we can get a review on it.


Improve speed of first detection?

The first call to detect a photo takes about 10 seconds, and then takes milliseconds for all subsequent detections. I read about the speed in #32  issue, but I'd like to know how to pre-solve some bottleneck that happens only on first detection.
--
Is there any way to call some function to prepare before starting detection and avoid this initial delay? Taking into consideration that the user needs to do an action (click a button) to start the face detection.
I am already doing the initiated boot load. According to the code.
App Init()
const MODEL_URL = "/static/models";
await faceapi.loadSsdMobilenetv1Model(MODEL_URL);
await faceapi.nets.faceLandmark68Net.loadFromUri(MODEL_URL);
await faceapi.loadFaceDetectionModel(MODEL_URL);
await faceapi.loadFaceRecognitionModel(MODEL_URL);

navigator.mediaDevices
  .getUserMedia({ video: { frameRate: { ideal: 10, max: 15 } } })
  .then(stream => {
    this.cameraPreview.srcObject = stream;
    this.cameraPreview.style.display = "block";
  })
  .catch(err => {
    alert("error");
  });

Call Detect
start(){
    configProcessFace();
    detectFace();
}

configProcessFace() {
  this.faceOptions = faceapi.SsdMobilenetv1Options({
    minConfidence: 0.8,
    maxResults: 1
  });
},
async detectFace() {
  const useTinyModel = false;
  const fullFaceDescription = await faceapi
    .detectSingleFace(this.canvasPreview, this.faceOptions)
    .withFaceLandmarks(useTinyModel)
    .withFaceDescriptor();

  if (fullFaceDescription && fullFaceDescription.detection.box) {
    .......
  }
  window.setTimeout(() => {
    this.detectFace();
  }, 400);
},

It is actually due to all the shader programs being compiled on the first run when using the WebGL backend.

Is there any way to call some function to prepare before starting detection and avoid this initial delay?

Yes, you can simply call the prediction chain you are using for an empty image or tensor initially, which will compile everything upfront. Just make sure when using a tensor, that the input size matches the input size of the face detector, for the SSD Mobilenet detector it is 512x512.

@justadudewhohacks Thanks for your quick reply. I do not know if I did something wrong or if I misunderstood it, I created a canvas element in the size of 512x512 and also tested on the size of the canvas element that has the frames of the video (1280x960). But when I click to start the face detect, the initial delay remains.
I did my initializer:
async loadModels() {
    const MODEL_URL = "/static/models";
    // await faceapi.loadMtcnnModel(MODEL_URL);
    await faceapi.loadSsdMobilenetv1Model(MODEL_URL);
    await faceapi.nets.faceLandmark68Net.loadFromUri(MODEL_URL);
    await faceapi.loadFaceDetectionModel(MODEL_URL);
    await faceapi.loadFaceRecognitionModel(MODEL_URL);
    this.prepareFaceDetector();
},
prepareFaceDetector() {
    var canvasTemp = document.createElement("canvas");
    canvasTemp.height = 512;
    canvasTemp.width = 512;

    let faceOptions = faceapi.SsdMobilenetv1Options({
      minConfidence: 0.8,
      maxResults: 1
    });
    const useTinyModel = false;
    const fullFaceDescription = faceapi
      .detectSingleFace(canvasTemp, faceOptions)
      .withFaceLandmarks(useTinyModel)
      .withFaceDescriptor();

    console.log("--------> " + JSON.stringify(fullFaceDescription));
}

--------> {"parentTask":{"parentTask":{},"input":{},"useTinyLandmarkNet":false},"input":{}}

@justadudewhohacks  Perfect.  I push a picture with a face, in the proportions 512x512 and did the recognition while loading the application. When the user will recognize it, it takes 1 second.
For consult:
prepareFaceDetector() {
      let base_image = new Image();
      base_image.src = "/static/img/startFaceDetect.jpg";
      base_image.onload = function() {
        const useTinyModel = true;
        const fullFaceDescription = faceapi
          .detectSingleFace(base_image, new faceapi.TinyFaceDetectorOptions())
          .withFaceLandmarks(useTinyModel)
          .withFaceDescriptor()
          .run()
          .then(res => {
            console.log("--------> " + JSON.stringify(res));
          });
      };
}

Hi @luisdemarchi , I am facing the same issue for first detection, takes about 12s for me. Would you mind explaining in simpler terms how you made it faster? My code currently looks something like this:
const faceMatcher = new faceapi.FaceMatcher(FINALVECTORS,0.5) 	var idVar = setInterval(async () => { 		console.log('start capturing intervals') 		const detections2 = await faceapi.detectSingleFace(video, new faceapi.TinyFaceDetectorOptions({inputSize:128})).withFaceLandmarks().withFaceDescriptor() 		if (detections2) { 			const results = faceMatcher.findBestMatch(detections2.descriptor) 			if (labels.includes(results['label'])) { 				document.getElementById('msg').innerHTML=(Hello, ${results['label']}!) 				console.log('done') 				clearInterval(idVar) 				// setTimeout(window.close, 3000)

In my case also it takes around 8-12 seconds And uses CPU resources completely which slows down the web app as it occupies the complete resources. I had made a loader to hide it.
But In previous comments, @justadudewhohacks mentions that shader programs are being compiled on the first. Is there any way I could do it without using lots of resources and time? Like how to call TensorFlow first or How to compile shader programs in the background first.


Cldc 1377 scheme status

Reset managing org for the sheme when a different organisation is selected as providing support
Only display schemes that have managing org id selected in the case log form
Only display relevant answers on the show scheme page
Validate all fields completed before marking scheme as confirmed

@Dan13L3 Is "Please answer all the required questions" okay for the schemes validation? We have individual validations on specific pages, this one is for the overall scheme completeness. Can make it more specific if that makes sense

@kosiakkatrina We could have an overall message of: 'You must answer all the required questions for this scheme'. But I wonder if it's more helpful for the user to just list all the individual answers that are missing and have a specific error for each? I can create a list of them that follows the 'Check answers' pattern above if helpful?

@kosiakkatrina We could have an overall message of: 'You must answer all the required questions for this scheme'. But I wonder if it's more helpful for the user to just list all the individual answers that are missing and have a specific error for each? I can create a list of them that follows the 'Check answers' pattern above if helpful?

@paulrobertlloyd Should we have individual answer validations or an overall one for the CYA schemes page?

We should ideally have both; an error summary at the top of the page which lists all the errors preventing the scheme from being saved, and then highlight the individual summary rows that are invalid.
We experimented with doing something like this when we were going to allow users to review a log before submitting:

Here is the HTML:

        Tenant has seen the privacy notice

            Error: Select if the tenant has seen the DLUHC privacy notice

        You didn’t answer this question

        Answer if tenant has seen the DLUHC privacy notice

CSS can be found here: https://github.com/communitiesuk/submit-social-housing-lettings-and-sales-data-prototype/blob/62810962aa01076f9ba1c8e3a73bf198d30814a7/app/assets/stylesheets/application.scss#L68-L71

We should ideally have both; an error summary at the top of the page which lists all the errors preventing the scheme from being saved, and then highlight the individual summary rows that are invalid.
We experimented with doing something like this when we were going to allow users to review a log before submitting:

Here is the HTML for the first row shown in the example above:

        Tenant has seen the privacy notice

            Error: Select if the tenant has seen the DLUHC privacy notice

        You didn’t answer this question

        Answer if tenant has seen the DLUHC privacy notice

CSS can be found here: https://github.com/communitiesuk/submit-social-housing-lettings-and-sales-data-prototype/blob/62810962aa01076f9ba1c8e3a73bf198d30814a7/app/assets/stylesheets/application.scss#L68-L71

@paulrobertlloyd Updated this now


Allow to change evidence

The purpose of this PR is to allow going back from the summary page and changing the evidence if necessary.
I haven't finished all the refactoring I wanted, but it's not making things worse. I think we can merge this now, so that the evidence is editable and then further improve the EvidenceController.

ok @dotemacs so this is almost done, apart from the parameters handling in the EvidenceController. The problem is that the params come from 3 different sources (url, EvidenceCheck model, Reason model), so there needs to be logic in the controller to handle that.
What I'm gonna do is try to refactor the evidence forms to what I think could solve this problem and push it up. You most probably won't like it :) but I'll give it a shot.

@dotemacs @colinbruce I haven't finished all I wanted and there are some more things to refactor in the EvidenceController, but I think we can go ahead and review / merge this PR. It doesn't make things worse. I'll pick up further refactoring of the controller / form objects in a separate PR.

Other than minor comment above, happy to merge.

Go for merge! :checkered_flag:


Admin: solutions' info links are broken

what is the right info link for the solutions?

Some of them have endpoints to solution_<solution_name>
https://manual.threefold.io/#/solution_network
https://manual.threefold.io/#/solution_ubuntu
https://manual.threefold.io/#/solution_kubernetes
https://manual.threefold.io/#/solution_storage
https://manual.threefold.io/#/solution_container
https://manual.threefold.io/#/solution_expose

The others have endpoints to <solution_name>
https://manual.threefold.io/#/delegate_domain
https://manual.threefold.io/#/four_to_six_gateway
https://manual.threefold.io/#/monitoring

Can we unify the info links and provide the right ones to update the Admin solutions' info links?

Also, etcd info link is not found.

OK, files in https://github.com/threefoldfoundation/info_sdk/tree/development/src/3bot_sysadmin/chatflows/solutions updated so that all start with solutions_
About url to be used (https://sdk.threefold.io/#/ vs. https://manual.threefold.io/#/, best to check with @Hamdy

@AhmedHanafy725 please replace the links. we no longer use manua;.threefold.io
ALL sdk solution links live here https://wiki.threefold.io/info/sdk#/sdk__solution_chatflows
https://wiki.threefold.io/info/sdk#/sdk__solution_chatflows
https://wiki.threefold.io/info/sdk#/sdk__solution_network
https://wiki.threefold.io/info/sdk#/sdk__solution_container


Allow 'Next step' button text to be changed

Allow the text on the Next step button to be changed via configuration in the smart answers Flow class.
Defaults to Next step unless overridden.
For example...
module SmartAnswer
  class MySmartAnswerFlow < Flow
    def define
      # ...
      next_button_text Continue
      # ...
    end
  end
end

Trello

@gclssvglx thanks for the PR! So it'd be preferable if the button label was specified in the question erb template e.g.
<%= text_for :next_button %>
Continue
<% end %>

This is because Smart Answer tries to keep separation of concerns, where view logic is kept out of the flow definition.

Replaced by #4719


dynamic content now works after changing the format of the content fi…

fixed the dynamic content now that the database content field has changed

Edit content feature is visible in the preview deployment.


Add widget

http://www.androidauthority.com/create-simple-android-widget-608975/

https://developer.android.com/guide/topics/appwidgets/index.html


Error in Rust Toolchain File

Here is my rust-toolchain.toml file:
[toolchain]
channel = "nightly"
components = ["rust-src"]

Even Better Toml, however, says there is a mistake here:

However, if you enter a value that is invalid, it does not report an error:

Is this a bug?
VSCode: 1.71.2
Even Better Toml: 0.18.1

I have fixed this bug by Modify schema for rust-toolchain.toml in my fork of schemastore, and I also add some tests to rust-toolchain for this schema at the same time.
The more tests bu using serde_json and jsonschema for this schema can be find in rust-playground.
I also use rust-toolchain.json as a local file association for this schema, and everything is ok now.
@tamasfe If this solution can be accepteable, I will pull a PR to schemastore from my fork, and this issue can be closed .
Thanks!

Hi @gfgafn, sorry I did not follow this. If it's a schema issue, then yes, please go ahead and submit a PR, thank you.

@tamasfe @Tim-Paik I have submit the PR, and now the rust-toolchain.toml  with channel field like below will not report an error
[toolchain]
channel = "nightly" # It can also be "stable", "1.64.0" ...
components = ["llvm-tools-preview"]
targets = ["riscv64gc-unknown-none-elf"]

and this issue can be closed.

Awesome, thank you!

I have fixed this bug by Modify schema for rust-toolchain.toml in my fork of schemastore, and I also add some tests to rust-toolchain for this schema at the same time.
The more tests using serde_json and jsonschema for this schema can be find in rust-playground.
I also use rust-toolchain.json as a local file association in VSCode for this schema, and everything is ok now.
// .vscode/settings.json
{
    "evenBetterToml.schema.associations": {
        "^(.*(/|\\\\)rust-toolchain([.]toml)?)$": "file:///C:/.../rust-toolchain.toml.json"
    },
}

@tamasfe If this solution can be accepteable, I will make a PR to schemastore from my fork, and this issue can be close.
Thanks!

The new tests case:
Test Code

#[cfg(test)]
pub mod standard_toolchain_tests {
    use jsonschema::JSONSchema;
    use serde_json::json;
pub fn is_validate_pass(schema: &JSONSchema, instance: serde_json::Value) -> bool {
    match schema.validate(&instance) {
        Ok(_) => true,
        Err(errors) => {
            errors.for_each(|e| println!("Validation error: {}", e));
            false
        }
    }
}

#[test]
fn test_toolchain_channel_only() {
    let res: serde_json::Value =
        serde_json::from_str(RUST_TOOLCHAIN_SCHEME).expect("Unable to parse");
    let schema: JSONSchema = JSONSchema::compile(&res).expect("can't compile");
    assert!(!is_validate_pass(&schema, json!({})));
    assert!(!is_validate_pass(
        &schema,
        json!({
            "toolchain":{}
        })
    ));
    vec!["stable", "beta", "nightly"]
        .iter()
        .for_each(|&channel| {
            assert!(is_validate_pass(
                &schema,
                json!({
                    "toolchain":{
                        "channel":channel,
                    }
                })
            ))
        });
    assert!(!is_validate_pass(
        &schema,
        json!({
            "toolchain":{
                "channel":"unknown",
            }
        })
    ));
    assert!(is_validate_pass(
        &schema,
        json!({
            "toolchain":{
                "channel":"1.63",
            }
        })
    ));
    assert!(is_validate_pass(
        &schema,
        json!({
            "toolchain":{
                "channel":"1.63.0",
            }
        })
    ));
    assert!(!is_validate_pass(
        &schema,
        json!({
            "toolchain":{
                "channel":"<IP_ADDRESS>",
            }
        })
    ));
}

#[test]
fn test_toolchain_targets_only() {
    let res: serde_json::Value =
        serde_json::from_str(RUST_TOOLCHAIN_SCHEME).expect("Unable to parse");
    let schema: JSONSchema = JSONSchema::compile(&res).expect("can't compile");
    assert!(!is_validate_pass(&schema, json!({})));
    assert!(is_validate_pass(
        &schema,
        json!({
            "toolchain":{"targets":[]}
        })
    ));
}

#[test]
fn test_toolchain_components_only() {
    let res: serde_json::Value =
        serde_json::from_str(RUST_TOOLCHAIN_SCHEME).expect("Unable to parse");
    let schema: JSONSchema = JSONSchema::compile(&res).expect("can't compile");
    assert!(!is_validate_pass(&schema, json!({})));
    assert!(is_validate_pass(
        &schema,
        json!({
            "toolchain":{"components":[]}
        })
    ));
}

#[test]
fn test_components_and_targets() {
    let res: serde_json::Value =
        serde_json::from_str(RUST_TOOLCHAIN_SCHEME).expect("Unable to parse");
    let schema: JSONSchema = JSONSchema::compile(&res).expect("can't compile");
    assert!(!is_validate_pass(&schema, json!({})));
    assert!(is_validate_pass(
        &schema,
        json!({
            "toolchain":{"components":[],"targets":[]}
        })
    ));
}

#[test]
fn test_toolchain_channel_and_data() {
    let res: serde_json::Value =
        serde_json::from_str(RUST_TOOLCHAIN_SCHEME).expect("Unable to parse");
    let schema: JSONSchema = JSONSchema::compile(&res).expect("can't compile");
    assert!(is_validate_pass(
        &schema,
        json!({
            "toolchain":{
                "channel":"nightly-2022-09-20",
            }
        })
    ));
    assert!(!is_validate_pass(
        &schema,
        json!({
            "toolchain":{
                "channel":"nightly-2022",
            }
        })
    ));
}

#[test]
fn test_toolchain_channel_and_host() {
    let res: serde_json::Value =
        serde_json::from_str(RUST_TOOLCHAIN_SCHEME).expect("Unable to parse");
    let schema: JSONSchema = JSONSchema::compile(&res).expect("can't compile");
    assert!(is_validate_pass(
        &schema,
        json!({
            "toolchain":{
                "channel":"stable-x86_64-pc-windows-msvc",
            }
        })
    ));
    assert!(is_validate_pass(
        &schema,
        json!({
            "toolchain":{
                "channel":"1.63.0-x86_64-pc-windows-msvc",
            }
        })
    ));
}

#[test]
fn test_toolchain_channel_and_data_and_host() {
    let res: serde_json::Value =
        serde_json::from_str(RUST_TOOLCHAIN_SCHEME).expect("Unable to parse");
    let schema: JSONSchema = JSONSchema::compile(&res).expect("can't compile");
    assert!(is_validate_pass(
        &schema,
        json!({
            "toolchain":{
                "channel":"nightly-2022-09-20-x86_64-unknown-linux-gnu",
            }
        })
    ));
}

#[test]
fn test_channel_and_targets() {
    let res: serde_json::Value =
        serde_json::from_str(RUST_TOOLCHAIN_SCHEME).expect("Unable to parse");
    let schema: JSONSchema = JSONSchema::compile(&res).expect("can't compile");
    assert!(is_validate_pass(
        &schema,
        json!({
            "toolchain":{
                "channel":"stable",
                "targets":[]
            }
        })
    ));
    assert!(is_validate_pass(
        &schema,
        json!({
            "toolchain":{
                "channel":"1.63.0",
                "targets":["x86_64-pc-windows-msvc","wasm32-unknown-unknown"]
            }
        })
    ));
    assert!(!is_validate_pass(
        &schema,
        json!({
            "toolchain":{
                "channel":"stable",
                "components":["wasm32-unknown-unknown","unknown_word"]
            }
        })
    ));
}

#[test]
fn test_channel_and_components() {
    let res: serde_json::Value =
        serde_json::from_str(RUST_TOOLCHAIN_SCHEME).expect("Unable to parse");
    let schema: JSONSchema = JSONSchema::compile(&res).expect("can't compile");
    assert!(is_validate_pass(
        &schema,
        json!({
            "toolchain":{
                "channel":"stable",
                "components":[]
            }
        })
    ));
    assert!(is_validate_pass(
        &schema,
        json!({
            "toolchain":{
                "channel":"stable",
                "components":["llvm-tools","rust-std"]
            }
        })
    ));
    assert!(!is_validate_pass(
        &schema,
        json!({
            "toolchain":{
                "channel":"stable",
                "components":["llvm-tools","unknown_word"]
            }
        })
    ));
}

#[test]
fn test_profile() {
    let res: serde_json::Value =
        serde_json::from_str(RUST_TOOLCHAIN_SCHEME).expect("Unable to parse");
    let schema: JSONSchema = JSONSchema::compile(&res).expect("can't compile");
    assert!(!is_validate_pass(
        &schema,
        json!({
            "toolchain":{
                "profile":"default"
            }
        })
    ));
    assert!(is_validate_pass(
        &schema,
        json!({
            "toolchain":{
                "channel":"stable",
                "profile":"default"
            }
        })
    ));
    assert!(is_validate_pass(
        &schema,
        json!({
            "toolchain":{
                "channel":"stable",
                "components":["llvm-tools"],
                "targets":[],
                "profile":"default"
            }
        })
    ));
    assert!(!is_validate_pass(
        &schema,
        json!({
            "toolchain":{
                "profile":"default",
                "path":"",
            }
        })
    ));
}

#[test]
fn test_custom_toolchain() {
    let res: serde_json::Value =
        serde_json::from_str(RUST_TOOLCHAIN_SCHEME).expect("Unable to parse");
    let schema: JSONSchema = JSONSchema::compile(&res).expect("can't compile");
    assert!(!is_validate_pass(&schema, json!({})));
    assert!(is_validate_pass(
        &schema,
        json!({
            "toolchain":{
                "path":""
            }
        })
    ));
    assert!(is_validate_pass(
        &schema,
        json!({
            "toolchain":{
                "path":"no_empty"
            }
        })
    ));
    assert!(!is_validate_pass(
        &schema,
        json!({
            "toolchain":{
                "path":"no_empty",
                "channel":""
            }
        })
    ));
    assert!(!is_validate_pass(
        &schema,
        json!({
            "toolchain":{
                "path":"no_empty",
                "channel":"stable",
                "targets":[],
                "components":[],
                "profile":"default"
            }
        })
    ));
}

const RUST_TOOLCHAIN_SCHEME: &str = r#"{
"$schema": "http://json-schema.org/draft-07/schema#",
"description": "https://rust-lang.github.io/rustup/overrides.html#the-toolchain-file",
"properties": {
    "toolchain": {
    "description": "A `toolchain` is a complete installation of the Rust compiler (`rustc`) and related tools (like `cargo`). A toolchain specification includes the release channel or version, and the host platform that the toolchain runs on.\n\n Get more from [`Toolchains`](https://rust-lang.github.io/rustup/concepts/toolchains.html)",
    "type": "object",
    "minProperties": 1,
    "properties": {
        "channel": {
        "description": "`channel` is a named release channel, a major and minor version number such as `1.42`, or a fully specified version number, such as `1.42.0`. Channel names can be optionally appended with an archive date, as in `nightly-2014-12-18`, in which case the toolchain is downloaded from the archive for that date. Get more from [`Toolchain specification`](https://rust-lang.github.io/rustup/concepts/toolchains.html).\n\nOther valid channel like `stable`,`1.63`,`1.63.0`,`nightly-2022-09-20`,`stable-x86_64-pc-windows-msvc`,`1.63.0-riscv64gc-unknown-linux-gnu`,`nightly-2022-09-20-x86_64-unknown-nux-gnu`",
        "type": "string",
        "pattern": "^(?:stable|beta|nightly|\\d+(?:\\.\\d+){1,2})(?:-\\d{4}(?:-\\d{2}){2})?(?:-\\D[^-]*(?:(?:-(?:[^-]+)){1,3}))?$",
        "examples": [
            "stable",
            "1.63",
            "1.63.0",
            "nightly-2022-09-20",
            "stable-x86_64-pc-windows-msvc",
            "1.63.0-riscv64gc-unknown-linux-gnu",
            "nightly-2022-09-20-x86_64-unknown-linux-gnu"
        ],
        "x-taplo": {
            "links": {
            "key": "https://rust-lang.github.io/rustup/concepts/channels.html"
            }
        }
        },
        "components": {
        "description": "Each release of Rust includes several \"components\", some of\nwhich are required (like `rustc`) and some that are optional (like [`clippy`](https://github.com/rust-lang/rust-clippy)) \n\n Learn more from [`Components`](https://rust-lang.github.io/rustup/concepts/components.html)",
        "type": "array",
        "items": {
            "type": "string",
            "enum": [
            "rustc",
            "cargo",
            "rustfmt",
            "rust-std",
            "rust-docs",
            "rls",
            "clippy",
            "miri",
            "rust",
            "rust-analysis",
            "llvm-tools",
            "rustc-docs",
            "rustc-dev",
            "rust-analyzer",
            "reproducible-artifacts",
            "rust-docs-json"
            ],
            "x-taplo": {
            "docs": {
                "enumValues": [
                "The Rust compiler and [Rustdoc].\n\n[rustdoc]: https://doc.rust-lang.org/rustdoc/",
                "[Cargo] is a package manager and build tool.\n\n[cargo]: https://doc.rust-lang.org/cargo/",
                "[Rustfmt] is a tool for automatically formatting code.\n\n[rustfmt]: https://github.com/rust-lang/rustfmt",
                "This is the Rust [standard library]. There is a separate\n  `rust-std` component for each target that `rustc` supports, such as\n  `rust-std-x86_64-pc-windows-msvc`. See the [Cross-compilation] chapter for\n  more detail.\n\n[standard library]: https://doc.rust-lang.org/std/\n[cross-compilation]: .https://rust-lang.github.io/rustup/cross-compilation.html",
                "This is a local copy of the [Rust documentation]. Use the\n  `rustup doc` command to open the documentation in a web browser. Run `rustup\n  doc --help` for more options.\n\n[rust documentation]: https://doc.rust-lang.org/",
                "[RLS] is a language server that provides support for editors and\n  IDEs.\n\n[RLS]: https://github.com/rust-lang/rls",
                "[Clippy] is a lint tool that provides extra checks for common\n  mistakes and stylistic choices.\n\n[clippy]: https://github.com/rust-lang/rust-clippy",
                "[Miri] is an experimental Rust interpreter, which can be used for\n  checking for undefined-behavior.\n\n[miri]: https://github.com/rust-lang/miri/",
                "This is a local copy of the source code of the Rust standard\n  library. This can be used by some tools, such as [RLS], to provide\n  auto-completion for functions within the standard library; [Miri] which is a\n  Rust interpreter; and Cargo's experimental [build-std] feature, which allows\n  you to rebuild the standard library locally.\n\n[RLS]: https://github.com/rust-lang/rls\n[miri]: https://github.com/rust-lang/miri/\n[build-std]: https://doc.rust-lang.org/nightly/cargo/reference/unstable.html#build-std",
                "Metadata about the standard library, used by tools like\n  [RLS].\n\n[RLS]: https://github.com/rust-lang/rls",
                "This contains a linker and platform libraries for building on\n  the `x86_64-pc-windows-gnu` platform.",
                "This is an experimental component which contains a\n  collection of [LLVM] tools.\n\n[LLVM]: https://llvm.org/",
                "This component contains the compiler as a library. Most users\n  will not need this; it is only needed for development *of* tools that link\n  to the compiler, such as making modifications to [Clippy].\n\n[clippy]: https://github.com/rust-lang/rust-clippy"
                ]
            }
            },
            "$comment": "Empty schema to allow for forward compatibility of new components"
        },
        "x-taplo": {
            "links": {
            "key": "https://rust-lang.github.io/rustup/concepts/components.html"
            }
        }
        },
        "targets": {
        "description": "`rustc` is capable of generating code for many platforms. The `target` specifies the platform that the code will be generated for. By default, `cargo` and `rustc` use the host toolchain's platform as the target. To build for a different `target`, usually the target's standard library needs to be installed first via the `rustup target` command. Or you can run `rustc --print target-list` to list [`\"built-in\" targets`](https://doc.rust-lang.org/rustc/targets/built-in.html) \n\n Get more from [`Platform Support`](https://doc.rust-lang.org/rustc/platform-support.html) and [`Targets`](https://doc.rust-lang.org/rustc/targets/index.html)",
        "type": "array",
        "$comment": "Allow arbitary strings for new targets or custom target JSON",
        "items": {
            "type": "string",
            "$comment": "From `rustc +nightly --print target-list`",
            "enum": [
            "aarch64-unknown-linux-gnu",
            "i686-pc-windows-gnu",
            "i686-pc-windows-msvc",
            "i686-unknown-linux-gnu",
            "x86_64-apple-darwin",
            "x86_64-pc-windows-gnu",
            "x86_64-pc-windows-msvc",
            "x86_64-unknown-linux-gnu",
            "aarch64-apple-darwin",
            "aarch64-pc-windows-msvc",
            "aarch64-unknown-linux-musl",
            "arm-unknown-linux-gnueabi",
            "arm-unknown-linux-gnueabihf",
            "armv7-unknown-linux-gnueabihf",
            "mips-unknown-linux-gnu",
            "mips64-unknown-linux-gnuabi64",
            "mips64el-unknown-linux-gnuabi64",
            "mipsel-unknown-linux-gnu",
            "powerpc-unknown-linux-gnu",
            "powerpc64-unknown-linux-gnu",
            "powerpc64le-unknown-linux-gnu",
            "riscv64gc-unknown-linux-gnu",
            "s390x-unknown-linux-gnu",
            "x86_64-unknown-freebsd",
            "x86_64-unknown-illumos",
            "x86_64-unknown-linux-musl",
            "x86_64-unknown-netbsd",
            "aarch64-apple-ios",
            "aarch64-apple-ios-sim",
            "aarch64-fuchsia",
            "aarch64-linux-android",
            "aarch64-unknown-fuchsia",
            "aarch64-unknown-none",
            "aarch64-unknown-none-softfloat",
            "aarch64-unknown-uefi",
            "arm-linux-androideabi",
            "arm-unknown-linux-musleabi",
            "arm-unknown-linux-musleabihf",
            "armebv7r-none-eabi",
            "armebv7r-none-eabihf",
            "armv5te-unknown-linux-gnueabi",
            "armv5te-unknown-linux-musleabi",
            "armv7-linux-androideabi",
            "armv7-unknown-linux-gnueabi",
            "armv7-unknown-linux-musleabi",
            "armv7-unknown-linux-musleabihf",
            "armv7a-none-eabi",
            "armv7r-none-eabi",
            "armv7r-none-eabihf",
            "asmjs-unknown-emscripten",
            "i586-pc-windows-msvc",
            "i586-unknown-linux-gnu",
            "i586-unknown-linux-musl",
            "i686-linux-android",
            "i686-unknown-freebsd",
            "i686-unknown-linux-musl",
            "i686-unknown-uefi",
            "mips-unknown-linux-musl",
            "mips64-unknown-linux-muslabi64",
            "mips64el-unknown-linux-muslabi64",
            "mipsel-unknown-linux-musl",
            "nvptx64-nvidia-cuda",
            "riscv32i-unknown-none-elf",
            "riscv32imac-unknown-none-elf",
            "riscv32imc-unknown-none-elf",
            "riscv64gc-unknown-none-elf",
            "riscv64imac-unknown-none-elf",
            "sparc64-unknown-linux-gnu",
            "sparcv9-sun-solaris",
            "thumbv6m-none-eabi",
            "thumbv7em-none-eabi",
            "thumbv7em-none-eabihf",
            "thumbv7m-none-eabi",
            "thumbv7neon-linux-androideabi",
            "thumbv7neon-unknown-linux-gnueabihf",
            "thumbv8m.base-none-eabi",
            "thumbv8m.main-none-eabi",
            "thumbv8m.main-none-eabihf",
            "wasm32-unknown-emscripten",
            "wasm32-unknown-unknown",
            "wasm32-wasi",
            "x86_64-apple-ios",
            "x86_64-fortanix-unknown-sgx",
            "x86_64-fuchsia",
            "x86_64-linux-android",
            "x86_64-pc-solaris",
            "x86_64-unknown-fuchsia",
            "x86_64-unknown-linux-gnux32",
            "x86_64-unknown-none",
            "x86_64-unknown-redox",
            "x86_64-unknown-uefi",
            "aarch64-apple-ios-macabi",
            "aarch64-apple-tvos",
            "aarch64-apple-watchos-sim",
            "aarch64-kmc-solid_asp3",
            "aarch64-nintendo-switch-freestanding",
            "aarch64-pc-windows-gnullvm",
            "aarch64-unknown-freebsd",
            "aarch64-unknown-hermit",
            "aarch64-unknown-linux-gnu_ilp32",
            "aarch64-unknown-linux-ohos",
            "aarch64-unknown-netbsd",
            "aarch64-unknown-nto-qnx710",
            "aarch64-unknown-openbsd",
            "aarch64-unknown-redox",
            "aarch64-uwp-windows-msvc",
            "aarch64-wrs-vxworks",
            "aarch64_be-unknown-linux-gnu",
            "aarch64_be-unknown-linux-gnu_ilp32",
            "arm64_32-apple-watchos",
            "armeb-unknown-linux-gnueabi",
            "armv4t-none-eabi",
            "armv4t-unknown-linux-gnueabi",
            "armv5te-none-eabi",
            "armv5te-unknown-linux-uclibceabi",
            "armv6-unknown-freebsd",
            "armv6-unknown-netbsd-eabihf",
            "armv6k-nintendo-3ds",
            "armv7-apple-ios",
            "armv7-sony-vita-newlibeabihf",
            "armv7-unknown-freebsd",
            "armv7-unknown-linux-ohos",
            "armv7-unknown-linux-uclibceabi",
            "armv7-unknown-linux-uclibceabihf",
            "armv7-unknown-netbsd-eabihf",
            "armv7-wrs-vxworks-eabihf",
            "armv7a-kmc-solid_asp3-eabi",
            "armv7a-kmc-solid_asp3-eabihf",
            "armv7a-none-eabihf",
            "armv7k-apple-watchos",
            "armv7s-apple-ios",
            "avr-unknown-gnu-atmega328",
            "bpfeb-unknown-none",
            "bpfel-unknown-none",
            "hexagon-unknown-linux-musl",
            "i386-apple-ios",
            "i586-pc-nto-qnx700",
            "i686-apple-darwin",
            "i686-unknown-haiku",
            "i686-unknown-netbsd",
            "i686-unknown-openbsd",
            "i686-uwp-windows-gnu",
            "i686-uwp-windows-msvc",
            "i686-wrs-vxworks",
            "loongarch64-unknown-linux-gnu",
            "m68k-unknown-linux-gnu",
            "mips-unknown-linux-uclibc",
            "mips64-openwrt-linux-musl",
            "mipsel-sony-psp",
            "mipsel-sony-psx",
            "mipsel-unknown-linux-uclibc",
            "mipsel-unknown-none",
            "mipsisa32r6-unknown-linux-gnu",
            "mipsisa32r6el-unknown-linux-gnu",
            "mipsisa64r6-unknown-linux-gnuabi64",
            "mipsisa64r6el-unknown-linux-gnuabi64",
            "msp430-none-elf",
            "powerpc-unknown-freebsd",
            "powerpc-unknown-linux-gnuspe",
            "powerpc-unknown-linux-musl",
            "powerpc-unknown-netbsd",
            "powerpc-unknown-openbsd",
            "powerpc-wrs-vxworks",
            "powerpc-wrs-vxworks-spe",
            "powerpc64-ibm-aix",
            "powerpc64-unknown-freebsd",
            "powerpc64-unknown-linux-musl",
            "powerpc64-unknown-openbsd",
            "powerpc64-wrs-vxworks",
            "powerpc64le-unknown-freebsd",
            "powerpc64le-unknown-linux-musl",
            "riscv32gc-unknown-linux-gnu",
            "riscv32gc-unknown-linux-musl",
            "riscv32im-unknown-none-elf",
            "riscv32imac-unknown-xous-elf",
            "riscv32imc-esp-espidf",
            "riscv64gc-unknown-freebsd",
            "riscv64gc-unknown-fuchsia",
            "riscv64gc-unknown-linux-musl",
            "riscv64gc-unknown-openbsd",
            "s390x-unknown-linux-musl",
            "sparc-unknown-linux-gnu",
            "sparc64-unknown-netbsd",
            "sparc64-unknown-openbsd",
            "thumbv4t-none-eabi",
            "thumbv5te-none-eabi",
            "thumbv7a-pc-windows-msvc",
            "thumbv7a-uwp-windows-msvc",
            "thumbv7neon-unknown-linux-musleabihf",
            "wasm64-unknown-unknown",
            "x86_64-apple-ios-macabi",
            "x86_64-apple-tvos",
            "x86_64-apple-watchos-sim",
            "x86_64-pc-nto-qnx710",
            "x86_64-pc-windows-gnullvm",
            "x86_64-sun-solaris",
            "x86_64-unknown-dragonfly",
            "x86_64-unknown-haiku",
            "x86_64-unknown-hermit",
            "x86_64-unknown-l4re-uclibc",
            "x86_64-unknown-openbsd",
            "x86_64-uwp-windows-gnu",
            "x86_64-uwp-windows-msvc",
            "x86_64-wrs-vxworks",
            "x86_64h-apple-darwin"
            ]
        },
        "x-taplo": {
            "links": {
            "key": "https://rust-lang.github.io/rustup/cross-compilation.html"
            }
        }
        },
        "profile": {
        "description": "[`Profiles`](https://rust-lang.github.io/rustup/concepts/profiles.htm) are groups of [`components`](https://rust-lang.github.io/rustup/concepts/components.html) you can choose to download while installing a new Rust [`toolchain`](https://rust-lang.github.io/rustup/concepts/toolchains.html).\n\n The `profiles` available at this time are `minimal`, `default`, and `complete`.",
        "type": "string",
        "default": "default",
        "enum": ["minimal", "default", "complete"],
        "x-taplo": {
            "links": {
            "key": "https://rust-lang.github.io/rustup/concepts/profiles.html"
            },
            "docs": {
            "enumValues": [
                "This profile includes as few components as possible to get a\nworking compiler (`rustc`, `rust-std`, and `cargo`). It's recommended to use\nthis component on Windows systems if you don't use local documentation (the\nlarge number of files can cause issues with some Antivirus systems), and in\nCI.",
                "This profile includes all of components in the **minimal**\nprofile, and adds `rust-docs`, `rustfmt`, and `clippy`. This profile will be\nused by `rustup` by default, and it's the one recommended for general use.",
                "This profile includes all the components available through\n`rustup`. This should never be used, as it includes *every* component ever\nincluded in the metadata and thus will almost always fail. If you are\nlooking for a way to install devtools such as `miri` or IDE integration\ntools (`rls`), you should use the `default` profile and\ninstall the needed additional components manually, either by using `rustup\ncomponent add` or by using `-c` when installing the toolchain."
            ]
            }
        }
        },
        "path": {
        "type": "string",
        "description": "Path to a custom local toolchain. Since a `path` directive directly names a local toolchain, other options\nlike `components`, `targets`, and `profile` have no effect. `channel`\nand `path` are mutually exclusive, since a `path` already points to a\nspecific toolchain. A relative `path` is resolved relative to the\nlocation of the `rust-toolchain.toml` file.\n\n Learn more from [`Custom toolchains`](https://rust-lang.github.io/rustup/concepts/toolchains.html#custom-toolchains)"
        }
    },
    "oneOf": [
        {
        "not": {
            "properties": {
            "path": {
                "type": "string"
            }
            },
            "required": ["path"]
        }
        },
        {
        "required": ["path"]
        }
    ],
    "dependencies": {
        "path": {
        "not": {
            "properties": {
            "channel": {
                "type": "string"
            }
            },
            "required": ["channel"]
        }
        },
        "channel": {
        "not": {
            "properties": {
            "path": {
                "type": "string"
            }
            },
            "required": ["path"]
        }
        },
        "profile": {
        "anyOf": [
            {
            "properties": {
                "channel": {
                "type": "string"
                }
            },
            "required": ["channel"]
            },
            {
            "properties": {
                "components": {
                "type": "array"
                }
            },
            "required": ["components"]
            },
            {
            "properties": {
                "targets": {
                "type": "array"
                }
            },
            "required": ["targets"]
            }
        ]
        }
    },
    "x-taplo": {
        "links": {
        "key": "https://rust-lang.github.io/rustup/concepts/toolchains.html"
        },
        "initKeys": ["channel"]
    }
    }
},
"required": ["toolchain"],
"title": "Schema for rust-toolchain.toml",
"type": "object",
"x-taplo-info": {
    "authors": ["ian-h-chamberlain (https://github.com/ian-h-chamberlain)"],
    "patterns": ["^(.*(/|\\\\)rust-toolchain([.]toml)?)$"]
}
}"#;

}


commit 101

I've created:

A branch,
Opened and closed an issue
Opened a pull request

I will add the changes made to my-branch to the master branch.


#001 Creating First Functionality

[x]  Create a logger
[x]  Create a custom exception
[x]  Create functionality
[x]  Manual check in a jupyter notebook

Done


Fourth Korean l10n work for release 1.17

Fourth Korean L10n Work For Release 1.17

translate assign-pod-node.md (#18955)
correct the misspelling (#19063)
Update to Outdated files in dev-1.17-ko.4 branch. (#19002)

Co-Authored-By: KimMJ<EMAIL_ADDRESS>Co-Authored-By: forybm<EMAIL_ADDRESS>Co-Authored-By: Yuk, Yongsu<EMAIL_ADDRESS>

/lgtm
/approve


typescript 1.4 0x80070005 - JavaScript runtime error: Access is denied.

0x80070005 - JavaScript runtime error: Access is denied.this.addExtension("Microsoft.VisualStudio.Web.BrowserLink.SourceMappingExtensionFactory",
receiving this error since installing TypeScript 1.4

b=function(n,t,i){var u=n.cssRules, is where error happening in dynamic script downloaded using  browserLink dynamic script

@v-vairam can you share more information about the project you are trying to build?

This error is occurring when a html content is loaded with a css class not found. Don't know why SourceMappingExtensionFactory would cause error.

We still need more information about the JS code, the TS code that generated it, and the expected "correct" behavior.


SoftBody Troubles

Godot version:
3.1.1 Mono Stable
OS/device including version:
Windows 10
Issue description:
I'm trying to do Batman's cape. I've suspended it by eight vertices on the shoulder. But two things happen: it's only help by one of the shoulders and the end of the cape appears stuck, as if nailed, to the floor. The following is a screenshot: https://www.dropbox.com/s/fvwqo2vur83ncbl/BatCapeProblem.png?dl=0

@OriginalAGP Can you (or anyone else) still reproduce this bug in Godot 3.2.2 or any later release?
If yes, please ensure that an up-to-date Minimal Reproduction Project (MRP) is included in this report (a MRP is a zipped Godot project with the minimal elements necessary to reliably trigger the bug). You can upload ZIP files in an issue comment with a drag and drop.

Closing due to lack of response. Please comment if you can still reproduce this bug.
PS: If no minimal reproduction project was included in the original bug report, please upload one as well to ease troubleshooting.


No such file or directory: 'tavsanli-41bb0a89bf6a.json'

Issue description
I am facing with bellow error when i try to launch application.
Error
File "/usr/local/lib/python3.12/importlib/__init__.py", line 90, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<frozen importlib._bootstrap>", line 1387, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1360, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1331, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 935, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 994, in exec_module
  File "<frozen importlib._bootstrap>", line 488, in _call_with_frames_removed
  File "/home/archaeology/apps/buluntu/models.py", line 26, in <module>
    drive_storage = GoogleDriveStorage(permissions=(permission, public_permission, ))
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/gdstorage/storage.py", line 160, in __init__
    credentials = Credentials.from_service_account_file(
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/google/oauth2/service_account.py", line 238, in from_service_account_file
    info, signer = _service_account_info.from_filename(
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/google/auth/_service_account_info.py", line 72, in from_filename
    with io.open(filename, "r", encoding="utf-8") as json_file:
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

FileNotFoundError: [Errno 2] No such file or directory: 'tavsanli-41bb0a89bf6a.json'
Error comes from Google API. Our readme file may not be up date or some required files might be missing

Did u setup .env file ?
22 Oca 2024 Pzt, saat 12:40 tarihinde _omerock @.***>
şunu yazdı:

Assigned #40
https://github.com/RythmSoft-Co/animated-octo-winner/issues/40 to
@CoderMungan https://github.com/CoderMungan.
—
Reply to this email directly, view it on GitHub
https://github.com/RythmSoft-Co/animated-octo-winner/issues/40#event-11554142476,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/A6I5IKAPWMAZJJ5IGMVIT6DYPYX2DAVCNFSM6AAAAABCE4HQESVHI2DSMVQWIX3LMV45UABCJFZXG5LFIV3GK3TUJZXXI2LGNFRWC5DJN5XDWMJRGU2TIMJUGI2DONQ
.
You are receiving this because you were assigned.Message ID:
@.***
.com>

Did u setup .env file ? 22 Oca 2024 Pzt, saat 12:40 tarihinde _omerock @.> şunu yazdı:
…
Assigned #40 <#40> to @CoderMungan https://github.com/CoderMungan. — Reply to this email directly, view it on GitHub <#40 (comment)>, or unsubscribe https://github.com/notifications/unsubscribe-auth/A6I5IKAPWMAZJJ5IGMVIT6DYPYX2DAVCNFSM6AAAAABCE4HQESVHI2DSMVQWIX3LMV45UABCJFZXG5LFIV3GK3TUJZXXI2LGNFRWC5DJN5XDWMJRGU2TIMJUGI2DONQ . You are receiving this because you were assigned.Message ID: @. .com>

Yes i set .env file and created two fields for app secret and email

I shared from discord this file. Thank you for the issue!


New version: MCreator.MCreator version 2021.3.51219

Installation timed out.
Auto-updated by vedantmgoyal2009/winget-pkgs-automation in workflow run 1071
Microsoft Reviewers: Open in CodeFlow

/azp run


please build for fedora37

I had noticed there has no repo for fedora37, can you support it?

Hi @cathaysia I've moved this issue to a more appropriate project for tracking.
RPM packages targeting Fedora 37 in the CUDA repo are planned for a future release.
Thank you for your patience.

thanks :)

Fedora 37 repository is now available: https://developer.download.nvidia.com/compute/cuda/repos/fedora37/x86_64/

CUDA toolkit 12.0.1
NVIDIA driver 525.85.12

Congratulations :)

From: kmittman @.>
Sent: Friday, February 3, 2023 2:59:26 AM
To: NVIDIA/yum-packaging-nvidia-driver @.>
Cc: DragonBillow @.>; Mention @.>
Subject: Re: [NVIDIA/yum-packaging-nvidia-driver] please build for fedora37 (Issue #6)
Closed #6https://github.com/NVIDIA/yum-packaging-nvidia-driver/issues/6 as completed.
―
Reply to this email directly, view it on GitHubhttps://github.com/NVIDIA/yum-packaging-nvidia-driver/issues/6#event-8424510003, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AKBJ6AK7WFQAFMVJZPT3WCDWVP7Y5ANCNFSM6AAAAAAT6VKG2M.
You are receiving this because you were mentioned.Message ID: @.***>


feat: update create flutter_app output text for clarity

Resolves #921
Updated CLI template output for
 very_good create flutter_app my_app
for more clarity on hoe to open the project.
Created a Very Good App! 🦄

In order to open your project, type:
       $ cd app_name
       $ code .
+----------------------------------------------------+
| Looking for more features?                         |
| We have an enterprise-grade solution for companies |
| called Very Good Start.                            |
|                                                    |
| For more info visit:                               |
| https://verygood.ventures/solution/very-good-start |
+----------------------------------------------------+

Type of Change

[ ] ✨ New feature (non-breaking change which adds functionality)
[ ] 🛠 Bug fix (non-breaking change which fixes an issue)
[ ] ❌ Breaking change (fix or feature that would cause existing functionality to change)
[x] 🧹 Code refactor
[ ] ✅ Build configuration change
[ ] 📝 Documentation
[x] 🗑 Chore

@alestiago Thank you for these amendments, It was fun working on this. Also, I have some ideas for very_good_cli, if we could discuss it, I would really appreciate it.

Hi @yaksh1 ! I'm glad you enjoyed working on this. If you have some enhancement ideas for the tool feel free to open an issue for each one of them and we can discuss it there 🙌


ADC Reading Is To Noisy, but Oscilloscope reading seem good

investigate why adc reading are too noisy,

solved, if sampled on 20kHz data is noisy, but if data filtered with moving averaged, its quite smooth. but if use sampling frequency 1MHz or above, sampled data not noisy, but after moving averaged filter, data become bumped


Enhancement: Desktop Notifications on success/fail FTP upload

When editing files, it can be a nice sanity check to have a desktop notification that pushes upon FTP upload success or failure.

But when you use the auto-upload or watch feature it adds a lot of visual noise to the editing experience...
When you use the Remote-FTP Tree view you can see the upload/download status in the bottom


Adding Flex dynamic sizing to Progress Bar

Made a few changes to allow easier dynamic sizing of the progress bar

I get the actual measured size of the layout with onLayout

If it's parent is a flex container and the flexGrow style is used to make it fill the available space, before the progress would still be the original width size. I use the previous values to update the progress to fill the actual size

Likewise, stretching the ProgressBar with the default alignSelf: 'stretch' would only stretch the container, not the progress. I update this value with the measured size as well.

Because I noticed progress bars can have children, I also made some changes to make sure the content is displayed on top of the progress and also that the container view wraps the size of the content.

Thank you for your PR, however I chose a different implementation instead: https://github.com/oblador/react-native-progress/commit/633e0da3420a3b5a981d0db86a5f4dedaaa71cd1
Let me know if that fixes your use case!

@kcrimi Did you try out the new fluid progress bar yet?

I haven't yet. I've been kind of inactive on that project but I'll try it out soon!

Closing due to alternative solution implemented and no reply.


SupportedLanguages protocol V2 \w aliases.

Signed-off-by: kuba--<EMAIL_ADDRESS>Closes https://github.com/bblfsh/python-client/issues/168
Apart from the extra method SupportedLanguages with aliases, this PR get rid of protocol v1 for python-client.

This change is

Commit history and some change look a bit suspicious - is that intentional?

I've rebased. we can squash during merge or i can rebase and squash again to just one commit


Fix bad position in Camera2D offset and camera rotation if smothing e…

…nabled.
Fix https://github.com/godotengine/godot/issues/16323 in master. Apply same solution of https://github.com/godotengine/godot/issues/2074 in rotation and offset.

Thanks!


Support PDF bookmarks for index letter headings

Many of the indexes I work with can grow quite large, spanning many pages. Currently, when using an index, the PDF bookmarks only have a single entry for the index. This pull request adds support for letter headings under the "Index" bookmark, with one entry for each letter heading that appears in the index.
Details:
There is a new parameter in the XSL, INDEX-BOOKMARKS.

When set to 0, no letter bookmarks will appear.
When set to any other number, bookmarks will appear if the total number of entries equals or exceeds the value of INDEX-BOOKMARKS. Default is currently set to 100, so that if the index only spans one or two pages, no extra bookmarks will appear.
Setting to 1 will force bookmarks to appear for any document that uses an index.

While doing this, I refactored bookmarks.xsl just slightly, to move index processing out of the larger createBookmarks named template. This makes it easier to override or customize, should anyone need to do so.
The only change for index.xsl is to add an ID to each letter group, which is needed to enable the bookmarks.

I think the feature here is pretty straightforward, I did wonder whether to make the parameter something that could be set in a build, but I ended up thinking it's too detailed for that. If you want to change the threshold at which entries appear, you can do so in an override / plugin.

I would prefer INDEX-BOOKMARKS to be in lowercase, or is there some reason to have it in uppercase? Also, the name could be more describing, like bookmarks.index-group-size.

No reason to have it in upper case, just that I wasn't paying much attention to the variable name. I've updated to use the suggested value.

@robander could you rebase on develop.

Yes. Going to take a little work - lots of conflicting changes and I don't remember much of what I did to get this working based on 2.1.

Pretty sure the only actual changes I made, or intended to make, are from the last two XSL files in the commit -- bookmarks.xsl and index.xsl. Tested 2.2.5 with just those 2 updates and the bookmarks are working. (I was pretty sure I didn't touch Java for this, and confused why they show up with the pull request).
I tried rebasing off of develop and got lots of conflicts because of the other files that show up in that commit. Is there an easy way to force update everything else and just keep those two changes? Or should I just do a new branch / new PR with the simple updates?

Tried rebasing again (after doing that successfully for another PR), and it claims I'm up to date, but pushing that doesn't do anything to this PR. At this point I think I'll make a new branch that just updates the 2 files and submit a PR with that.

Found it easier to open a new PR, #2350, closing this one.


add .gitignore

a .gitignore with the .idea path added.

.idea should be part of the project to simplify project configuration. All unnecessary files are excluded already.


Integers as keys in the hashmap.

Hey @sheredom
If I want to make this hashmap take integers instead of char*. Can I just use the Robert Jenkins' 32 bit Mix Function and Knuth's multiplicative method on the integer key element? would that be enough ?
    /* Robert Jenkins' 32 bit Mix Function */
    key += (key << 12);
    key ^= (key >> 22);
    key += (key << 4);
    key ^= (key >> 9);
    key += (key << 10);
    key ^= (key >> 2);
    key += (key << 7);
    key ^= (key >> 12);

    /* Knuth's Multiplicative Method *
    key = (key >> 3) *<PHONE_NUMBER>;

    return key % m->table_size;

Cheers.

Does not seem to give good result, quiet many collisions. Maybe should not be used as hashing int's:
Hashing 0x76cc8b60 => 96
Hashing 0x76cc9730 => 48
Hashing 0x76cd37e0 => 224
Hashing 0x76cd3100 => 0
Hashing 0x76d08f10 => 16
Hashing 0x76ce2cd0 => 208
Hashing 0x76cd3110 => 16
Hashing 0x76cd3130 => 48
Hashing 0x76cd3140 => 64
Hashing 0x76ce2d90 => 144
Hashing 0x76cc88e0 => 224
Hashing 0x76cd4120 => 32
Hashing 0x76cd3160 => 96
Hashing 0x76cd3170 => 112
Hashing 0x76cd31e0 => 224
Hashing 0x76cd31f0 => 240
Hashing 0x76cd3200 => 0
Hashing 0x76cd3220 => 32
Hashing 0x76cd3250 => 80
Hashing 0x76cd3270 => 112
Hashing 0x76cc2eb0 => 176
Hashing 0x76ccb210 => 16
Hashing 0x76cd32b0 => 176
Hashing 0x76cd32c0 => 192
Hashing 0x76cd32d0 => 208
Hashing 0x76cd32e0 => 224
Hashing 0x76cd3310 => 16
Hashing 0x76cd3320 => 32
Hashing 0x76cd3330 => 48
Hashing 0x76cd3340 => 64
Hashing 0x76cd1eb0 => 176
Hashing 0x76cd1910 => 16
Hashing 0x76cd3430 => 48
Hashing 0x76cc4e90 => 144
Hashing 0x76cd1de0 => 224
Hashing 0x76d0a290 => 144
Hashing 0x76cd20d0 => 208
Hashing 0x76cce840 => 64
Hashing 0x76d0a720 => 32
Hashing 0x76d0a8c0 => 192
Hashing 0x76ce4070 => 112
Hashing 0x76cd0630 => 48
Hashing 0x76cc9350 => 80
Hashing 0x76cd1c00 => 0
Hashing 0x76cd0780 => 128
Hashing 0x76cc9790 => 144
Hashing 0x76cd34c0 => 192
Hashing 0x76cd34d0 => 208
Hashing 0x76cd34e0 => 224
Hashing 0x76ce4470 => 112
Hashing 0x76cd34f0 => 240
Hashing 0x76cd3500 => 0
Hashing 0x76cd18f0 => 240
Hashing 0x76cd0480 => 128
Hashing 0x76ce4e90 => 144
Hashing 0x76cc9910 => 16
Hashing 0x76d0a9a0 => 160
Hashing 0x76d0aa50 => 80
Hashing 0x76ce5310 => 16
Hashing 0x76cd35b0 => 176
Hashing 0x76cd35c0 => 192
Hashing 0x76cd35d0 => 208
Hashing 0x76ce5240 => 64

However this simple one gave some pretty good results:

I actually wonder if you should just pass the integer as bytes and let the existing hash work on it. Something like:
int my_key = 42;
void* my_value;
hashmap_put(&hashmap, &my_key, sizeof(my_key), my_value);

Thank you ! It does the job.


I can't install 3.0.1 version from bower install

When I try to install the 3.0.1 version, bower prints "mismatch Version declared in the json (2.0.4) is different than the resolved one (3.0.1)", and it installs the 2.0.4 version.
How can I install the latest version using bower?
Thanks in advance!

Hi, can you send me the exact cmd?

bower install produce this:
bower ng-device-detector#^3.0.1       not-cached https://github.com/srfrnk/ng-device-detector.git#^3.0.1
bower ng-device-detector#^3.0.1          resolve https://github.com/srfrnk/ng-device-detector.git#^3.0.1
bower ng-device-detector#^3.0.1         checkout v3.0.1
bower ng-device-detector#^3.0.1         mismatch Version declared in the json (2.0.4) is different than the resolved one (3.0.1)
bower ng-device-detector#^3.0.1         resolved https://github.com/srfrnk/ng-device-detector.git#3.0.1
bower re-tree#^0.0.2                  not-cached https://github.com/srfrnk/re-tree.git#^0.0.2
bower re-tree#^0.0.2                     resolve https://github.com/srfrnk/re-tree.git#^0.0.2
bower re-tree#^0.0.2                    checkout v0.0.2
bower re-tree#^0.0.2                    resolved https://github.com/srfrnk/re-tree.git#0.0.2
bower ng-device-detector#^3.0.1          install ng-device-detector#3.0.1
bower re-tree#^0.0.2                     install re-tree#0.0.2

ng-device-detector#3.0.1 vendor/ng-device-detector
└── re-tree#0.0.2

re-tree#0.0.2 vendor/re-tree

After the installation the bower.json into the ng-device-detector directory reports "version": "2.0.4"

Please clean cache and retry now.
Do this:
$ rm -rf bower_components
$ bower cache clean
$ bower install
Let me know how it goes please.
10x.

Now it works.
Thanks very much!