Implemented propagate backward

Motivation and context
Resolved #2998

How has this been tested?

Checklist

[x] I submit my changes into the develop branch
[x] I have added a description of my changes into CHANGELOG file
[ ] I have updated the documentation accordingly
[x] I have added tests to cover my changes
[x] I have linked related issues (read github docs)
[x] I have increased versions of npm packages if it is necessary (cvat-canvas,
cvat-core, cvat-data and cvat-ui)

License

[x] I submit my code changes under the same MIT License that covers the project.
Feel free to contact the maintainers if that's a concern.

@klakhov
Resolved comments.

Also what do you think about showing current from value in input(maybe we should disable it in such case) instead of keeping it empty?

I do not think we should disable it because we still should be able to modify them, slider and direction are updated automatically when you change empty input.

I'm ok with changes. But I see one failed test with rotated images, feels its not related with this pr.

@klakhov
OMG, this is already the third unstable test in this PR.
I tried to fix it making assumption that reason is the same like for previous...


Make permissions input idempotent and add placeholder

This fixes #45 by not automatically adding WHERE ${value}), and adding a placeholder

Good catch! Small mistake on my end
Could you see if permissions within fields are working correctly as well? I don't have much time to test it myself right now, if so I'll get this merged as soon as possible

Yes, they had the same issue, and is fixed with this PR

Thanks for the fix!


How can we help?
I would like someone else to build the manifest.
Please read and ensure the following

[X] The installer meets the above requirements

Please provide the following information
Download Page Url: https://batchpatch.com/download
Publisher: Cocobolo Software LLC
Package Name: BatchPatch
Description: Install Windows Updates remotely across your entire network
Package Version: 2<IP_ADDRESS>.17
Installer URL:  https://batchpatch.com/downloads/batchpatch/?tmstv=1725492646

[!NOTE]
System Requirements:

Microsoft's Sysinternals PsExec must either be saved to your Windows system PATH or in the directory that you launch BatchPatch from OR you may simply tell BatchPatch the exact location of psexec.exe on your computer by using "Tools > Settings > Remote Execution > Use psexec.exe custom filepath" (Note: psexec.exe only goes on the BatchPatch computer, not on the target computers). Another option is to simply drop psexec.exe into C:\Windows and that should do the trick. Launch psexec.exe one time to accept the license agreement. If during your first test run BatchPatch appears to be stuck on "Attempting to initiate Windows Update" or "Deployment: Initiating execution ..." see this page for assistance.

Originally posted on Download | BatchPatch - The Ultimate Windows Update Tool


HDDS-5128. Retrun specific error messages for S3-SDK

What changes were proposed in this pull request?

Return WebApplicationException instead of OS3Exception in OzoneClientProducer.

What is the link to the Apache JIRA
https://issues.apache.org/jira/browse/HDDS-5128
How was this patch tested?
Test passed with S3-SDK requests. Can test with the following code:
AmazonS3 s3 = AmazonS3ClientBuilder.standard()
        .withEndpointConfiguration(new AwsClientBuilder.EndpointConfiguration("http://localhost:9878", Regions.DEFAULT_REGION.getName()))
        .withPathStyleAccessEnabled(true)
        .build();
ListObjectsV2Result result = s3.listObjectsV2(bucket_name);

For the real internal errors, I don't know if it's proper to return the root cause to end-users.
Say the user is trying to get data of a block, but the OM is having an issue connecting to the SCM, the internal error would be "OM can not connect to SCM", I don't know if the user would be confused about the term, or the user only needs to report to the ozone cluster PIC that an internal error is happening.

@elek Any update on this ticket? I think an S3gateway instance in MiniOzoneCluster would be useful for this kind of test case, may I ask if there are any second thoughts to not include S3gateway in MiniOzoneCluster?


fix: update Image component to use existing cfHeight and cfWidth [ALT-488]

Work in progress

I'm going to switch back to using cfImageWidth and cfImageHeight after noticing the added complexity in the UI side of this. Having Image fiends separate from cfWidth and cfHeight will help with having different design fields for Image components as the behavior will be somewhat different than Structure component Height and Widths


Flutter Doctor Issue

Flutter doctor can't find my IntelliJ IDEA Ultimate Edition version 2020.1.1. When I run the command, it doesn't show the app. It only shows my VS Code and  my Android Studio.

I don't think flutter doctor looks for IntelliJ IDEA, unless I am mistaken.

Hi @v1hhug0
I see there's an open issue addressing the case you described.
Please follow up on that issue, I'm closing the current one as duplicate.
If you disagree, please write in the comments and I will reopen it.
Thank you


At the bottom of readme, API Reference link to 404

API Reference
See API Reference.

Actually the API reference is working in progress.
You can see TypeScript declaration files instead now.


Delegate is_a? in BufferedFormBuilder to the underlying object to make it identifyable.

Hi,
It would be nice to delegate is_a? in the buffered form builder to the underlying object, or implement is_a? to return true when passed Phlex::Rails::BufferedFormBuilder or any of it's super classes.
As it is, there isn't a way to test whether a variable is a form builder or not. I tried other ways like calling respond_to and passing a form builder method like :text_field but respond_to isn't delegated either, so it ends up being called by Buffered's method_missing, which returns nil.
What do you think?
(thanks for Phlex by the way, it's changed the way I work on rails applications. My templates are so much cleaner now!)

For now, you should be able to use this
Phlex::Rails::BufferedFormBuilder === my_variable

But I agree we should implement is_a? on the decorators.


Support for const (and/or single-value enums) in polymorphism

Thanks for sharing this project!
Would it be possible to support const or single-value enum as just pre-set value without constructor parameter?
Usecase: We're thinking about using this in our project, but we need to figure out how to support polymorphism in at least semi-intuitive way. I'm thinking the support of const would make the first step.
E.g., this jsonschema:
title: Something Changed Event
allOf:
  - $ref: "Event.yaml"
  - $ref: "SomethingFields.yaml"
properties:
  type:
    const: "SomethingChangedEvent"
    default: "SomethingChangedEvent"

Along with this referenced Event.yaml parent:
title: Event
type: object
required:
  - type
properties:
  type:
    type: string

Currently generate this child:
class SomethingChangedEvent(
    type: String = "SomethingChangedEvent",
    val other: Other
) : Event(type)

But this would be more error-proof if const would result in this child being generated:
class SomethingChangedEvent(
    val other: Other
) : Event(type = "SomethingChangedEvent")

Regarding the usecase, one possible next step for us would be to use Jackson2 mixins to also (manually) add polymorphic deserialization support based on this.
I'm not sure how this should work without polymorphism involved, though - perhaps type in this case could be just val field that is not present in constructor parameters? Is this reasonable?

Hi - thanks for these suggestions.  On the first point, using the const value as a parameter to the base constructor from the derived class - I like the idea, but I took the approach of creating a field (and a constructor parameter) for each property.  Your suggestion would mean that the constructor for the derived class would not have a parameter for the constant value.
As you pointed out in your later comment, when you use const in a simple case with no inheritance it adds an init check on the value.  That is what I had planned - the property is present, but the const forces a check which means that the constructor will fail if the wrong value is used.  The fact that it doesn't output the check when the class is a derived class is a bug, and I am looking into it now.
I don't like your idea of re-ordering the fields - I think most people would expect constructor parameters to be in the same order as in the schema.  Using Kotlin named parameters it's easy to include just the parameters you need.
On your second point, support for polymorphism - this is tricky because it depends on the serialization / deserialization library being used.  I made an early design decision that the generated code should not contain any dependencies on other libraries, and I like to think that the code can be used by any of the JSON libraries.
Here I must declare a bias - I have my own serialization / deserialization library named kjson, and while I know that other libraries have a strong presence (you mentioned Jackson in one of your comments), I think that mine has real advantages.  It is native Kotlin, rather than a Kotlin facade on Java, it supports Kotlin classes like Pair and Triple, and it includes non-blocking output, for use in a coroutine environment.
It includes polymorphic deserialization - see the section on fromJSONPolymorphic.  In my day job, I use this functionality to deserialize CloudEvents, using the type field in the CloudEvents envelope to determine which target class to use.
Of course, none of this is automated.  I think it would be difficult to generate classes that could be deserialized automatically in a polymorphic manner, and any inclusion of library-dependent code would violate the principle I mentioned earlier of not adding dependencies on other libraries.  But I'm interested to know how others are tackling the problem, and if a more automated means of deserializing members of a class hierarchy can be found, that could be a valuable addition to the library.

Thanks for a very informative reply!
Regarding kjson library, I think we could take a look into using it, but ultimately one of the reasons we're using Jackson is that it's "tried and true", so we have a lot of experience with using it, how to handle which problems, how it integrates with Spring Framework, what performance we can expect from it, etc. So switching is currently somewhat unlikely.
How would you recommend defining jsonschema for support of polymorphism? The way I was trying to do it with "type" property and "const" values in children?

Regarding changing order of properties. I found a somewhat interesting workaround. If I only mark "type" property as required in parent, but don't actually define it, then I can define it as the last property in each child and it works surprisingly well. Perhaps we could be satisfied with this approach for another reason: if the parent doesn't have any properties at all, then children are generated as native data class, which is arguably even better. I just don't know if this will be supported by Jackson or any other deserialization framework.

In regard to the question of the recommended way of defining classes that are to be deserialized polymorphically - yes, I support the idea of defining a a "type" field in the base schema and redefining the same field as const with a specific value for each sub-schema.  How you make use of that in your deserialization library will be specific that that library, and it's difficult to see how it could be automated.  I am considering adding a configuration option to allow annotations to be added to classes or fields, but that is probably some way in the future.
Generating code for a oneOf presents some difficult challenges.  As you have found, if there are no shared fields, the generator can create classes using the name from the $ref, but when the class needs to combine properties from outside the oneOf with those inside, it has to generate a new name ("A", "B" etc.).  I am considering adding to the configuration option which currently allows you to choose an output class name (see classNames), extending it to allow control over the choice of nested class names as well.  That would require some manual configuration on your part, but it would be much simpler to implement than any automated mechanism for deriving the names.

Keep it open - I have worked out a fix for that missing validation bug, and I should be able to get a new version uploaded to Maven Central within 24 hours.  I'll notify you here.
Regarding oneOf - if the parent schema contains no properties of its own, just the oneOf with members consisting only of a single $ref, it will output the parent as an interface and use the name derived from the $ref for the child classes.  That can be useful, but it doesn't guarantee that a type discriminator property exists in the base, which is what I think you're trying to achieve.
I think we're both hitting against the mismatch between the JSON Schema specification and the requirements of polymorphism.  In any case, this has been a useful discussion, and I hope you're able to make productive use of the library.

I couldn't make it generate interface, but after your comment I tried a bit more thoroughly and it turns out it's not enough that there are no fields, I also need to remove type: object for it to generate interface. But although it generated interface, it wasn't used in child classes at all, when those classes have allOf in them. It works if I use just one $ref in the child directly (and there's no parent class), but no longer works once I wrap it in allOf (and a parent class is generated). Is this a bug? Also it's a bit strange that direct $ref actually uses the fields from the $ref, but doesn't use it as a parent.
Parent:
$schema: https://json-schema.org/draft-07/schema
title: Event
description: Generic parent for all events
oneOf:
  - $ref: SomethingChangedEvent.yaml
  - $ref: SomethingUpdatedEvent.yaml

Child (has parent, doesn't implement interface):
$schema: https://json-schema.org/draft-07/schema
title: Something Changed Event
description: Event when Something changed
allOf:
  - $ref: "Something.yaml"
properties:
  type:
    type: string
    const: SomethingChangedEvent
    default: SomethingChangedEvent

Child (no parent, implements interface):
$schema: https://json-schema.org/draft-07/schema
title: Something Changed Event
description: Event when Something changed
$ref: "Something.yaml"
properties:
  type:
    type: string
    const: SomethingChangedEvent
    default: SomethingChangedEvent

First of all, the new version of the project with the bug fix - version 0.78 - has been uploaded to Maven Central.  It took longer than I expected because I fixed a number of similar issues related to validations not being applied to overriding property definitions at the same time.
I'm going to have to investigate further on the cases you have listed above - thanks for doing this investigative work.  I'll let you know what I find.

You expressed an interest in the idea of adding annotations to the generated code – you may be interested to know that annotations are now available in version 0.82 of the code generator.  The configuration is described in the Configuration Guide.
I hope this helps with your uses of the code generator.

Thanks for the note. I'll definitely try it out when I get back to the original initiative.
Btw, I did end up using your kjson lib already for a small bit of functionality due to JsonPointer support. Although with kotlinx.serialization being released, it's possible that us and others will slowly migrate to that one in the future.


What happened if my channel is still in developing status but the date is out of the date?

What happened if my channel is still in developing status but the date is out of the date?
Does that would make login by line failed in some reason?

@Kevin-Misfit
No sure what you mean about "date is out of the date".


Getting yarn errors

It seems these tools are what I need to document my json schema: https://github.com/andrejellema/GlobalCoffeeDataStandard/blob/master/global-coffee-data-standard.schema.json
But I'm having major problems installing it. I'm getting a lot of yarn errors.
I'm using Win10 and I'm not familiar with yarn.
I also installed lerna, which is new to me too.
In my dev-folder everything seems to be ok:
D:\dev>yarn --version
1.13.0
D:\dev>lerna --version
3.10.7
D:\dev>node --version
v10.15.0

In the folder that holds my schema as well:
D:\dev\GlobalCoffeeDataStandard>yarn --version
1.13.0

But in the freshly cloned json-schema-tools schema I get this:
D:\dev\json-schema-tools>yarn --version
D:\dev\json-schema-tools\scripts\yarn\bin\yarn:2
argv0=$(echo "$0" | sed -e 's,\\,/,g')
        ^^^^

SyntaxError: missing ) after argument list
    at new Script (vm.js:79:7)
    at createScript (vm.js:251:10)
    at Object.runInThisContext (vm.js:303:10)
    at Module._compile (internal/modules/cjs/loader.js:657:28)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:700:10)
    at Module.load (internal/modules/cjs/loader.js:599:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:538:12)
    at Function.Module._load (internal/modules/cjs/loader.js:530:3)
    at Function.Module.runMain (internal/modules/cjs/loader.js:742:12)
    at startup (internal/bootstrap/node.js:283:19)

The documentation says I should start with lerna bootstrap. That is giving these errors:
D:\dev\json-schema-tools>lerna bootstrap
lerna notice cli v3.10.7
lerna info versioning independent
lerna info bootstrap root only
D:\dev\json-schema-tools\scripts\yarn\bin\yarn:2
argv0=$(echo "$0" | sed -e 's,\\,/,g')
        ^^^^

SyntaxError: missing ) after argument list
    at new Script (vm.js:79:7)
    at createScript (vm.js:251:10)
    at Object.runInThisContext (vm.js:303:10)
    at Module._compile (internal/modules/cjs/loader.js:657:28)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:700:10)
    at Module.load (internal/modules/cjs/loader.js:599:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:538:12)
    at Function.Module._load (internal/modules/cjs/loader.js:530:3)
    at Function.Module.runMain (internal/modules/cjs/loader.js:742:12)
    at startup (internal/bootstrap/node.js:283:19)
lerna ERR! yarn install --mutex network:42424 --non-interactive exited 1 in '@cloudflare/json-schema-tools'
lerna ERR! yarn install --mutex network:42424 --non-interactive exited 1 in '@cloudflare/json-schema-tools'

When I remove the .yarnrc-file it seems to work:
D:\dev\json-schema-tools>lerna bootstrap
lerna notice cli v3.10.7
lerna info versioning independent
lerna info bootstrap root only
yarn install v1.13.0
[1/4] Resolving packages...
[2/4] Fetching packages...
info<EMAIL_ADDRESS>The platform "win32" is incompatible with this module.
info<EMAIL_ADDRESS>is an optional dependency and failed compatibility check. Excluding it from installation.
[3/4] Linking dependencies...
warning "workspace-aggregator-cc28e7f7-5fbb-42d4-b547-a3fafb988fd4 > @cloudflare/json-schema-apidoc-loader ><EMAIL_ADDRESS>has unmet peer dependency<EMAIL_ADDRESS>|| ^3.0.0 || ^4.0.0".
[4/4] Building fresh packages...
Done in 11.82s.

I also can run doca init in my schema folder and the documentation folder is created and it contains several files.
I can also run
D:\dev\GlobalCoffeeDataStandard\git\documentation>yarn install
yarn install v1.13.0
[1/5] Validating package.json...
[2/5] Resolving packages...
success Already up-to-date.
Done in 0.35s.

But yarn start failes:
D:\dev\GlobalCoffeeDataStandard\git\documentation>yarn start
yarn run v1.13.0
$ node webpack/index | NODE_ENV=development node src/server
'NODE_ENV' is not recognized as an internal or external command,
operable program or batch file.
error Command failed with exit code 255.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.

D:\dev\GlobalCoffeeDataStandard\git\documentation>× ｢wdm｣: Hash: 1528029a029c0dd52815
Version: webpack 3.12.0
Time: 1417ms
 Asset    Size  Chunks                    Chunk Names
app.js  3.7 MB       0  [emitted]  [big]  app
  [14] ./node_modules/react/react.js 56 bytes {0} [built]
  [33] (webpack)/buildin/module.js 517 bytes {0} [built]
  [92] ./node_modules/react-dom/index.js 59 bytes {0} [built]
 [118] ./node_modules/react-redux/es/index.js 229 bytes {0} [built]
 [158] multi webpack-hot-middleware/client?path=http://<IP_ADDRESS>:8080/__webpack_hmr ./src/client/index.js 40 bytes {0} [built]
 [159] (webpack)-hot-middleware/client.js?path=http://<IP_ADDRESS>:8080/__webpack_hmr 7.77 kB {0} [built]
 [160] ./node_modules/querystring-es3/index.js 127 bytes {0} [built]
 [163] ./node_modules/strip-ansi/index.js 161 bytes {0} [built]
 [165] (webpack)-hot-middleware/client-overlay.js 2.21 kB {0} [built]
 [170] (webpack)-hot-middleware/process-update.js 4.37 kB {0} [built]
 [171] ./src/client/index.js 710 bytes {0} [built]
 [271] ./node_modules/react-redux/es/components/Provider.js 2.17 kB {0} [built]
 [299] ./src/client/main.js 1.27 kB {0} [built]
 [425] ./node_modules/@cloudflare/doca-default-theme/styles \.less$/ 160 bytes {0} [optional] [built]
 [427] ./src/client/store.js 1.42 kB {0} [built]
    + 416 hidden modules

ERROR in ./getting-started.json
Module build failed: Error: Cannot find module '@cloudflare/json-hyper-schema'
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:581:15)
    at Function.Module._load (internal/modules/cjs/loader.js:507:25)
    at Module.require (internal/modules/cjs/loader.js:637:17)
    at require (internal/modules/cjs/helpers.js:22:18)
    at Object.<anonymous> (D:\dev\GlobalCoffeeDataStandard\git\documentation\node_modules\@cloudflare\json-schema-transform\lib\example.js:2:18)
    at Module._compile (internal/modules/cjs/loader.js:689:30)
    at Module._extensions..js (internal/modules/cjs/loader.js:700:10)
    at Object.require.extensions.(anonymous function) [as .js] (D:\dev\GlobalCoffeeDataStandard\git\documentation\node_modules\babel-register\lib\node.js:152:7)
    at Module.load (internal/modules/cjs/loader.js:599:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:538:12)
 @ ./schemas.js 14:0-33
 @ ./src/client/store.js
 @ ./src/client/index.js
 @ multi webpack-hot-middleware/client?path=http://<IP_ADDRESS>:8080/__webpack_hmr ./src/client/index.js

After hours of trying I give up. Please assist me on how to run doca.

I had the same problems with win10.
Here is some advice for you:

Please try to escape the quote mark as follows:
argv0=$(echo ""$0"" | sed -e 's,\,/,g')

Then refer to issue#5 to solve other problems. Good luck!

I know this was a while ago but the above didn't work for me, so for anyone else who is running into Windows issues and isn't familiar with Yarn, I managed to get it working another way.
The repository is configured to use a particular (included) distribution of Yarn. My assumption is that this distribution is for *nix systems which is why attempting to run it on Windows doesn't work.
If you remove the reference to the included Yarn distribution from the repository ".yarnrc" file then your system Yarn installation will be used instead which seems to work fine for the version I'm using (1.22.4).

I am having the same problem on mac


Fix path matching bug

Path items are now sorted before they are traversed in the findPathNode
function. The bug was that it matched too eagerly on /{user_id}/{user_id}
when it should have matched /{user_id}/connection.
Sorting is not optimal, but it covers this case with no regressions.

Probably merge #11 first. This PR will work without it, but I tested based of that branch

yes, let's progress the feature set and then we can make it robust


add a version number to the backupminder plist output

so that we can warn if the version is missing or too old

Is this something we can pull from the app?  From an Info.plist or something?  Where do we keep the version number?

yes, it would be

/Applications/BackupMinderUI.app/Contents/Info.plist CFBundleVersion

	<key>CFBundleVersion</key>
	<string>1.1.0</string>

and 1.2 will be the one we release with this build

I'm leaning more towards just having the plugin look there, and making this a client issue instead of a BackupMinder one.  That would be effective immediately, and honestly I'd probably just have BackupMinder get it from there anyways so we don't have to keep up with it in the code itself.

Works. Will track in the plugin itself.


URLs are opening with Firefox instead of Chrome

Running on Arch Linux with i3 here.
Google chrome is opened right next to Cerebro, and running xdg-open http://google.com on a terminal  opens a new tab on chrome.
But cerebro is somehow opening urls on Firefox instead. I guess this is probably not a bug in cerebro, but in my OS configs. But how is cerebro figuring out what the default browser is, so I can properly configure my machine?

In the end shell.openExternal is used, you might want to continue investigating on Electron's side.
You are right, it's probably something with your OS configs, I'm also on Arch with i3, have both Chrome and Firefox, and both Cerebro and xdg-open open Chrome.

I didnt figure out how to resolve this, I have this issue here too


added support for rolling log files

Hi,
I am going to perform some changes to your suggestion: I will keep the default xml file as it was, and update the exported package versions to 1.2.17 since these still got 1.2.15.
Regards,
Arie

Ah, of course. I missed that.


[Bug]: Can't add recipes via KubeJS event.custom()

Bug Description

I tried to add recipe with KubeJS event.custom method but it didn't work. I can remove recipes but can't add.
How to Reproduce?
No response
Expected Behavior
No response
Version
1.18.2-2.0.1
Mod Loader Version
40.2.0
Mod Loader
Forge
Logs or additional context
No response

It doesn't work iwth even.custom() but if i add recipe json manually it works.


Clear state on simulation switch in omni

Assumes that all avatars, play areas, interactions, and visualisations should be erased. This makes sense for demos in the general case at least.

[x] Write tests

I've added a test and tested on standalone iMD VR that switching between a recording with interactions and a normal simulation doesn't leave avatars or interactions behind.


kmail, kontact: wrap external executable dependencies

Motivation for this change
follow-up to #108824
It turns out that the wrapping done for each KDE PIM component needs to
be done for the component itself as well as for kontact, which then
aggregates all of these components as KParts.
This commit introuduces specifying these wrapping dependencies in a
separate file to make them available for import from their respective
derivations.
It is designed to be extendable in case other PIM components turn out to
require external executables as well.
Things done

[x] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS linux)
Built on platform(s)

[x] NixOS
[ ] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[x] Tested compilation of all pkgs that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review wip"
[x] Tested execution of all binary files (usually in ./result/bin/)
21.11 Release Notes

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[x] Fits CONTRIBUTING.md.

DISCLAIMER: Due to the impure runtime discovery of KParts in kontact, I only tested the execution and proper calling of external executables in kontact via a backport of these changes to release-21.05. As these branches do not diverge largely yet, that shouldn't be a problem.

Feel free to LGTM this but do not merge yet, as I'd like to add a separate commit of nixpkgs-fmt-ing the affected files.

@GrahamcOfBorg build [ kmail kontact ]

I'm not really sure what's the right thing to do here now - sure, this would fix + circumvent the problem for this specific case, but I ran the following script to get some rough numbers on the usage of QStandardPaths::findExecutable() and I feel like we'll see this same problem in a lot other places as well:
for project in ${projects};
do
mkdir -p ~/tmp/kde/${project}
pushd ~/tmp/kde/${project}
curl https://invent.kde.org/groups/${project}/-/children.json\?per_page\=200 | \
  jq '.[]."relative_path"' -r | \
  xargs -I{} -n1 git clone --depth 1 https://invent.kde.org{}.git
popd
done
for project in ${projects};
do
echo ${project}": "$(ack -ch 'QStandardPaths::findExecutable' kde/${project});
done

Results:
accessibility: 1
education: 54
frameworks: 113
games: 4
graphics: 34
kdevelop: 54
libraries: 9
maui: 0
multimedia: 50
network: 45
office: 26
pim: 53
plasma: 51
plasma-mobile: 0
sdk: 17
system: 15
utilities: 39

Are there better solutions, which could be applied upstream as well? I believe a KDE application launching another KDE application using QStandardPaths::findExecutable() + QProcess() (or the likes) is definitely not the right way to do it and the proper alternative seems to be KIO::ApplicationLauncherJob(), as otherwise the child process won't even get a new resource scope (e.g. when systemd user-session support is active) or could be properly tracked as application by the desktop environment.
When a regular system binary is executed (e.g. K3b executing lame), I can't think of an alternative right now.
Should we possibly get someone from upstream involved in this discussion or at least try to get one started on #kde-devel:kde.org?

Should we possibly get someone from upstream involved in this discussion or at least try to get one started on #kde-devel:kde.org?

If you can get someone interested in that, more ideas from new people are welcome. Although I'm not that sure whether we can get upstream interested in adopting some more complicated approach just to serve a quirky distro like us.
What we'd need is build-time discovery of the required binaries, making their path a build parameter that is then compiled directly into the code. I don't know whether CMake can do that. If this can be brought upstream and KDE devs are willing to also adopt such coding conventions for their future changes, it'd be compatible with classic FHS distros as well as the binary path there is always the same anyways. But the if part is the important one.

I asked someone who does not know Nix packaging at all, and according to himself only has a cursory understanding of how Nix itself works. There's a number of issues touched-upon in the PR.
He came up with the following suggestions to see what can be fixed where, and how.
## QStandardPaths::findExecutable()

[[ I'll note that the quick-and-dirty check for uses of findExecutable() also picks up tests and wrappers, but you're right that there's a couple of hundred in the codebase ]]

There are two independent topics here:

### Launching KDE Applications

This should indeed be handled through a different launcher. You could file bugs at bugs.kde.org mentioning this; the upstream triagers will probably be able to point at the right people to bother with that.

Keep in mind not every use leads to a launch:

dolphin/src/settings/contextmenu/servicemenuinstaller/servicemenuinstaller.cpp
218:    const static bool konsoleAvailable = !
QStandardPaths::findExecutable("konsole").isEmpty();

dolphin/src/dolphinmainwindow.cpp
2222:        installed = !
QStandardPaths::findExecutable(QStringLiteral("kompare")).isEmpty();

Both of these might use a different approach .. or at least, could benefit from an abstraction to check for the presence of a KDE application. That moves your problem to the abstraction, rather than each individual call-site.

There don't seem to be **that** many cases of running a KDE application in this way, though. That makes patches submitted upstream feasible.

### Non-KDE Applications

There's a lot more of these. Consider:

k3b/plugins/encoder/external/k3bexternalencodercommand.cpp
34:    if( !QStandardPaths::findExecutable( "lame" ).isEmpty() ) {
56:    if( !QStandardPaths::findExecutable( "flac" ).isEmpty() ) {
79:    if( !QStandardPaths::findExecutable( "mppenc" ).isEmpty() ) {

Since findExecutable() uses $PATH, why would this be a problem, anyway? Surely lame is lame wherever it ends up installed, and the path to the lame executable should be in $PATH for it to be found anywhere -- that's not special to KDE applications.

If there are special considerations, then patching findExecutable() to do the right thing -- whatever that may be in the context of Nix -- seems like a better approach. There are only a very few uses of findExecutable() with explicit search-paths, those can probably be patched or ignored.

## CMake-Time executable discovery

You can use find_program() at CMake-time to .. find programs. The documentation is here:
	https://cmake.org/cmake/help/latest/command/find_program.html

Assuming you can convince CMake to find an executable, something like

find_program(LAME_EXECUTABLE
	NAMES lame
	...
	)

(and here, on Nix, you probably need to mess around to make it find anything) You get a full path back for the executable: on my machine, the value of ${LAME_EXECUTABLE} is subsequently /usr/local/bin/lame .

There are a couple of things you could do with that full path:

### C Macros on the command-line

Patch out the original name ("lame") and patch in a macro (LAME_EXECUTABLE) and then add a definition to the compile commands; something along the lines of:

if(NOT LAME_EXECUTABLE) # Wasn't found
	set(LAME_EXECUTABLE "lame") # Preserve default search
endif()
add_compile_definitions(LAME_EXECUTABLE="${LAME_EXECUTABLE}")

Then when building, I get command-lines like this:

/usr/bin/cc -DLAME_EXECUTABLE=\"/usr/local/bin/lame\"

### C Macros via a config.h

You could write a config.h.in that is processed by CMake, and then #include "config.h" in the relevant places. Write the things that you **would** pass as command-line arguments in the config.h instead.

This saves on command-line arguments, but makes the patch to the upstream source somewhat larger, because in many cases you'll need to introduce the config.h file -- along with the changes for actually changing what findExecutable() is going to look for.

### Something unbearably cool

At this point, you have a mapping: asking for "lame" should get you "/usr/local/bin/lame", so you can make a table of the mapping. If you patch findExecutable() at the Qt level, you could make it use the mapping somehow; then you don't have to patch any of the calling code, but you do have to get that table in-scope. The Qt resource system might be a way to do that, or you could play with custom ELF sections to add the table; then you end up scanning the table embedded in the executable to (re)map executable names inside findExecutable().

This probably would take the most effort, but has the lowest impact in the end on consumers (and would be a nice thing to upstream, too, although then perhaps a KDE Frameworks abstraction would be easier to wrangle).

Overall, perhaps a more extensive explanation of what-is-the-problem for not-Nixers would help drive a solution.


Fixing broken #109

Fix gitkube binary installation on Windows using scoop. Fixes a mistake in #109.

Thanks again @goostleek

Thx! :)


[Enhancement] Warn if user changes a relationship's end while this relationship is used in other views

In Archi it is possible to change the relationship's ends (this is done in a view by selection the relationship, then draging the anchor at one end and droping it on another element).
But when doing so, any other view containing the relationship will be impacted (the relationship will be udpated if the new end is also present in the view, or will be removed if the new end is not present) without any prior warning.
It would be good in such cases to warn the user, the exact same way we warn it when deleting an element from the model while it is used in another view.

Is this a duplicate of #558?

Is this a duplicate of #558?

Yes, it seems I've just had the same idea as this guy (jbsarrodie) ;-)


Inconsistencies in @suppcollection

I have been trying out some things with the @suppcollection entry type and I noticed some inconsistencies in how this entry type uses its data fields. The name that shows up as author in the citations and bibliography is the name entered in the type field you wish to cite. So for an introduction, the name that is used is the one entered in the introduction field. The name that is used for parencite and to sort the bibliography, however, is the one entered in the author field.
To give a full example, the following entry:
@suppcollection{afterword,
author = {Author, Different},
booktitle = {Book Title},
afterword = {Afterwordname, Firstname},
editora = {Editor, Book},
Publisher = {Publisher},
Location = {Location},
Date = {2020},
}

gives for footcite:

Firstname Afterwordname, afterword to Book Title, ed. Book Editor (Location: Publisher, 2020)

for \parencite:

(Author 2020)

and in the bibliography:

Afterwordname, Firstname. 2020. Afterword to Book Title, edited by Book Editor. Location: Publisher

while sorting it as "Author".
One solution to this problem is to enter the author name in both the afterword and the author field, but really it would make sense if it is just the author field and then the afterword field comes a boolean switch that if it has something in it, the entry is an afterword.

You've definitely spotted a problem with \parencite! I hope to spend time on it this weekend.
Aside from that, I think it's a good practice to give introductions, forewords, and the like their own bibliography database entries and cross-reference them to the works that they supplement. I would have handled your example like this:
@InCollection{afterword,
  afterword = {Afterwordname, Firstname},
  sortname = {Afterwordname, Firstname},
  crossref = {author}
}
@Book{author,
  author = {Author, Different},
  title = {Book Title},
  editor = {Editor, Book},
  publisher = {Publisher},
  location = {Location},
  date = {2020}
}

Using sortname should ensure correct sorting.

Fixed! The issue required a few modest changes.
While I was at it, I decided to add support for prefaces. This required several more changes to the *.bbx and *cbx and some additions to the *.dbx and *.lbx. Here's an example:
mwe.bib:
@InCollection{preface,
  preface = {Prefacename, Firstname},
  sortname = {Prefacename, Firstname},
  crossref = {author}
}
@Book{author,
  author = {Author, Different},
  title = {Book Title},
  editor = {Editor, Book},
  publisher = {Publisher},
  location = {Location},
  date = {2020},
}

mwe.tex:
\documentclass{article}
\usepackage[style=windycity]{biblatex}
\addbibresource{mwe.bib}
\begin{document}

A citation \parencite{preface}.

\printbibliography
\end{document}

This was a good catch! I'll admit that I don't pay nearly enough attention to \parencite, so this was yet another in a long line of bugs that I should have caught long ago.
Thanks for your help!


Create email reminder notification functionality

This functionality is used to send reminder notifications if (1) a user has their email notification preference on and (2) if their birthday is in a week. The application will send a reminder email to all of the users in the friend list if their email notification preferences are on as well. The user can also send a reminder email from the "Profile" page.

The email functionality is implemented and works well


x/blog:

Hi,
What version of Go are you using (go version)?
$ go version
'go' is not recognized as an internal or external command,
operable program or batch file.
Does this issue reproduce with the latest release?
Yes
What operating system and processor architecture are you using (go env)?
$ go env
'go' is not recognized as an internal or external command,
operable program or batch file.
What did you do?
I have downloaded go 1.14 and while extracting go 1.14 ,some of the exe in go 1.14 got deleted from Mcafee.
What did you expect to see?
I want to install the go 1.14 without deleting any exe in go 1.14
What did you see instead?
Some of the .exe files got deleted from go 1.14 by Mcafee. I have observed the notifications from Mcafee.
Here attached the screenshot for reference.

Please provide a soultion for this.
Thank you,
G.Ramya

Please don't create duplicate (https://github.com/golang/go/issues/37648) issues. Thanks.


The online documentation link in the top README is broken

The online documentation link in the top README.md is broken. There isn't much more to it.

Fixed.  I didn't realize the URLs were case-sensitive.


enhancement - combined columns option

It would be nice if there was an option to combine all columns so you would have:
NAME | URL | MAIN LANGUAGE | STARS | FORKS

Good idea, I could probably make this the default command if the program is invoked with username only: something along the lines of
stargazer stats username --> shows stats
stargazer url username --> shows urls

stargazer username --> shows combined information

what do you think? I will draft an implementation over the weekend and you may have a look!

I'm happy to test any updates when i have time.
Thanks for the handy little tool


feat: allow returning new config table in on_setup hook

This allows on_setup hooks to not have to rely on modifying table
instances in-place.

This is mostly just to get a place to discuss the inner workings of this hook. I figured it'd be nice for the on_setup hook to be able to return a new table instance, to allow registered hooks to not have to modify the received config tables directly. This is to avoid situations where mutations to the config table carries over to configs intended for other servers, for example in the following scenario:
local opts = { on_attach = on_attach }
lspconfig.tsserver.setup(opts)
lspconfig.sumneko_lua.setup(opts)

I might be missing something though, but wdyt?

Wait I think I spoke too soon. The tbl_extend() call inside the .setup(config) makes sure to avoid the problem of table references. I still think it'd be nice to be able return a new table in the hook and have lspconfig pick that up, this would make merging different tables easier to implement (just use the builtin vim.tbl_extend methods)


fix(connectors): fix parsing of comma separated string slice command line options

Description
Fixes parsing of comma separated options using string slice pflag
Verification Steps
CI tests should pass.
Checklist (Definition of Done)

[X] All acceptance criteria specified in JIRA have been completed
- [ ] Unit and integration tests added that prove the fix is effective or the feature works (tested against emulated and non-emulated OCM environment)
- [ ] Documentation added for the feature
[ ] CI and all relevant tests are passing
[ ] Code Review completed
- [ ] Verified independently by reviewer
[ ] All PR comments are resolved either by addressing them or creating follow up tasks
- [ ] Required metrics/dashboards/alerts have been added (or PR created).
- [ ] Required Standard Operating Procedure (SOP) is added.
- [ ] JIRA has been created for changes required on the client side

@lgarciaaco for comma separated options we need to use StringSliceVar instead of StringArrayVar, especially if the value could be an empty array.


Understanding a use case : Streaming parser over Read trait

Hi,
I'm considering trying to replace a hand-built parser we are using in a project in my lab with a nom-powered parser instead.  We are parsing a custom binary format called RAD (Reduced Alignment Data) for a bioinformatics application focused on single-cell RNA-seq processing.
Since genomic data can be big, so too can our files, and often they don't fit entirely into memory (or we wish to refrain from loading them all into memory at once).  The processing we wish to do can be done in a streaming (or at least chunked) way, and so the parsing must be streaming as well. I've been reading a little bit and see that nom supports a streaming parser.  However, I've had little luck in finding any documentation or tutorial that shows how to use nom's streaming parsing capability where the source of parsing is e.g. a structure implementing the Read trait, like a File.  Perhaps this is something trivial and I'm just overthinking it.  Could you point me at a resource that shows how to use the streaming parser with a File source, or give a brief explanation of how one would go about doing this?
Thanks!
Rob

This has been largely addressed by the creation of nom-bufreader, though I still have some confusion how to use it with some different combinators etc.  However, if I come up with nice MWEs that demonstrate my confusion, I'll post them as a separate issue.


Syntactic changes in README.md

Fixed the incorrectly typed website url and added link to the MIT license

I believe this pull request can be merged to this repo. Thanks @gabrielalmir10 !


Git Protocol Error

Hello,
When trying to Push the latest code changes from our SAP
On-Premise system to abapGit using the report ZABAPGIT. system throws an error. Please find the screen shot attached.
snip, removed, please dont share docx files -Hvam
Regards,
Santosh

@skezkhepatmelathil thanks, are you running the latest version? some fixes in this area just before the weekend, https://github.com/abapGit/abapGit/pull/4796

@larshp : I used the version available on 25th May, I will try to upgrade, if there is a latest version available after the said date. Thank you.

there have been multiple changes, https://github.com/abapGit/abapGit/commits/main
not sure it will fix it, but its not really worth debugging on old versions

@larshp : I did the upgrade now and its still the same error.

how many files are you staging? try staging just one and see if the error persists

Even with 1 file, I get the same error.

hmm, try:
a: verify that you can commit to the repository using the same username/email/password using command line git
b: try committing anything to a dummy repository using abapGit

ok, try narrowing it down to identify the issue
I cannot reproduce...

looks like if number of files exceed then I am seeing this error. around 20 files got committed.

we need more data. please post a screen shot of Utilities > Debug Info (from main menu).
also set a break-point in ZCL_ABAPGIT_GIT_TRANSPORT->RECEIVE_PACK. what's the value of lv_buffer?

Value of LV_buffer = 00779ccdc2fa6c585f791d0b6a281bfbbec33a474ee8 e52b517f2cd16f95527f1c7e41c1474b278bbfbc refs/heads/master# report-status#0000

could you please try replacing line 43+45 with the following? does this capture the response?
    DATA lv_response TYPE xstring.

    lv_response = lo_client->send_receive_close( lv_xstring ).

    lv_string = zcl_abapgit_convert=>xstring_to_string_utf8( lv_response ).

here is the screen shot after the suggested change.

Sorry, I really can't tell why you are not getting any response data AND no error code.

Go to transaction SMICM and increase the trace level Goto -> Trace Level -> Increase, reproduce and then display the trace with Goto -> Trace File -> Display End (or search for "TRC-LEVEL"). Remember to decrease the trace level once done.

Check if there are errors during SSL negotiation.
Look for "HTTP request (raw)" and "HTTP response (raw)" and check return code/errors

yes i do see some errors

Let's check some basics. Run the SSL test program with the trace:
https://docs.abapgit.org/other-test-ssl.html

Do you get "ok" for both github.com and api.github.com?
Any errors in the trace?

If there are errors, your SSL config is not ok. Check https://docs.abapgit.org/guide-ssl-setup.html and SAP Note 510007.
If there are no errors, SAP Support should have a look (send them the complete trace).

After executing the report, it says ok for both links.

I will contact SAP for the same. Thank you.

use component:BC-CST-IC for your support ticket

Sure, Thank you. I created a SAP incident. Will update you once its resolved.

Hello, I contacted SAP and here is the response I received from them ..
"As i can see in attachment screenshot regarding the ICM trace, This issue did not belong to SAP ICM side, As in log it clearly said No data from server received.
Error -  ERROR => IcmReadFromPartner(id=6/7248): No data from server received, role: Server, (rc=MPI_EBROKEN: pipe broken/canceled/7)
2733879 - ICM: ERROR => IcmReadFromPartner(id=): No data from server received
Resolution
You need to check the following:

There is some issue with the client, causing the client to close the connection prematurely.
The frontend client has a response timeout that expires while the client waits for response from the server.
There is some firewall, Proxy, etc. between the frontend and the server that closes the connection after a period of time

Regards,
Santosh

AG uses the default timeout for HTTP connection. Check and try to increase
icm/HTTP/client/keep_alive_timeout
icm/conn_close_timeout
icm/conn_timeout
icm/keep_alive_timeout
Another approach is trying to reproduce it with another system in your network. If the other system does not have the issue, then you can compare config.

Hi,
Tested the same in another system and it also has the same issue.
NOTE: ZABAPGIT version  1.89.0 works in one of our other system. Is there a way for us to install the same version in the current system?

1.89 is very old. You can install and run multiple versions of the stand-alone abapGit report. However, there might be changes with the DB persistence (XML in table ZABAPGIT). So there's no guarantee that this will work properly with older versions.

we increased the value of these parameters :
icm/HTTP/client/keep_alive_timeout
icm/conn_close_timeout
icm/conn_timeout
icm/keep_alive_timeout
And it still does not work.

in 1.89, is the value of lv_buffer in ZCL_ABAPGIT_GIT_TRANSPORT->RECEIVE_PACK the same or different? what's the difference?

@skezkhepatmelathil any news?

closing, no reply


bug(semantic): AstNode has incorrect ScopeId

playground link
function foo(cb) { cb = function() { function something(a) { cb(1 + a); } register(something); }(); } foo();
//                                                           ^^^^^^^^^

To reproduce:

get The first read reference for cb (it has a node whose Id is for the above CallExpression)
Get the ScopeId pointed to by that Reference
Get the node associated with that ScopeId
Notice that it's the anonymous function wrapping something, when it should be the something function

Excellent bug-hunting!
I suspect this may have been caused by #4347 (but that's just a guess).

Get the ScopeId pointed to by that Reference

The reference doesn't store ScopeId. If you mean the ScopeId of the symbol pointed to by this reference, then the node looks correct.
The following scope snapshot was generated by your provided playground's code
---
source: crates/oxc_semantic/tests/main.rs
assertion_line: 112
input_file: crates/oxc_semantic/tests/fixtures/oxc/index.ts
---
[
  {
    "children": [
      {
        "children": [
          {
            "children": [
              {
                "children": [],
                "flag": "ScopeFlags(StrictMode | Function)",
                "id": 3,
                "node": "Function(something)",
                "symbols": [
                  {
                    "flag": "SymbolFlags(FunctionScopedVariable)",
                    "id": 3,
                    "name": "a",
                    "node": "FormalParameter",
                    "references": [
                      {
                        "flag": "ReferenceFlag(Read)",
                        "id": 0,
                        "name": "a",
                        "node_id": 27
                      }
                    ]
                  }
                ]
              }
            ],
            "flag": "ScopeFlags(StrictMode | Function)",
            "id": 2,
            "node": "Function(<anonymous>)",
            "symbols": [
              {
                "flag": "SymbolFlags(FunctionScopedVariable)",
                "id": 2,
                "name": "something",
                "node": "Function(something)",
                "references": [
                  {
                    "flag": "ReferenceFlag(Read)",
                    "id": 0,
                    "name": "something",
                    "node_id": 32
                  }
                ]
              }
            ]
          }
        ],
        "flag": "ScopeFlags(StrictMode | Function)",
        "id": 1,
        "node": "Function(foo)",
        "symbols": [
          {
            "flag": "SymbolFlags(FunctionScopedVariable)",
            "id": 1,
            "name": "cb",
            "node": "FormalParameter",
            "references": [
              {
                "flag": "ReferenceFlag(Write)",
                "id": 0,
                "name": "cb",
                "node_id": 11
              },
              {
                "flag": "ReferenceFlag(Read)",
                "id": 1,
                "name": "cb",
                "node_id": 28
              }
            ]
          }
        ]
      }
    ],
    "flag": "ScopeFlags(StrictMode | Top)",
    "id": 0,
    "node": "Program",
    "symbols": [
      {
        "flag": "SymbolFlags(BlockScopedVariable | Function)",
        "id": 0,
        "name": "foo",
        "node": "Function(foo)",
        "references": [
          {
            "flag": "ReferenceFlag(Read)",
            "id": 0,
            "name": "foo",
            "node_id": 36
          }
        ]
      }
    ]
  }
]


Exit sequence and button

Ability to exit the application by regular termination via some sort of exit button

Completed on current branch, will be in next merge


Npm fails on parallel tox invocation.

:tada: This issue has been resolved in version 1.0.0 :tada:
The release is available on:

1.0.0
GitHub release

Your semantic-release bot :package::rocket:


[Locate32Portable] Add space to the name

Hi, I have a suggestion for Locate32 Portable
Please add space to the name.
Before
[Details]
Name=Locate32Portable

After
[Details]
Name=Locate32 Portable

ok https://github.com/gek64/GitHubDesktopPortable/commit/3d74a37b74eba478fa9575c550ba9d075918efa3


Wrong Keys?

Hey,
I have some trouble with the windows client. The generated keys are not working. Do you have any idea how I can fix that? There is no problem with the android authenticator via nfc...
Best regards
Julian

If I'm understanding you correctly, the Windows client is generating codes, but these codes are not being accepted by the remote services? If so it sounds to me like the issue is clock synchronization. The TOTP protocol relies on the time of the client and server being synchronized, so if the clock is off by several seconds or minutes, the codes generated might already be expired (or not yet valid). Clock synchronization is typically handled by the operating system automatically.

Thank you for your answer! The Problem was caused by my USB Hub...
Am 21.03.2016 12:42 nachm. schrieb "Dain Nilsson"<EMAIL_ADDRESS>
:

If I'm understanding you correctly, the Windows client is generating
codes, but these codes are not being accepted by the remote services? If so
it sounds to me like the issue is clock synchronization. The TOTP protocol
relies on the time of the client and server being synchronized, so if the
clock is off by several seconds or minutes, the codes generated might
already be expired (or not yet valid). Clock synchronization is typically
handled by the operating system automatically.
—
You are receiving this because you authored the thread.
Reply to this email directly or view it on GitHub
https://github.com/Yubico/yubioath-desktop/issues/77#issuecomment-199256009


Update Auto Layout section

Update Auto Layout section with following links:

Apple's Auto Layout guide
Auto Layout life cycle article

Whereas the latter might be a subject to add / not add, I believe the former is definitely missing from the Auto Layout learning materials.

The materials you provided are highly valuable. Thank you for your contribution!


Initial Setup Help

Sorry if this has been covered, couldn't find it in the previous issues or readme. I'm having trouble with the initial setup. Here is what I have in my _config.yml
plugins_dir: ./_plugins

plugins:
  - jekyll-rss

jekyll-rss:
  name: "Breaking Español"
  url: "http://breakingespanol.com"
  description: "One family's honest journey learning spanish"
  author: "Jennie Sullins"
  copyright: "Breaking Español"
  rss_path: "/"
  rss_name: "/feed.xml"
  rss_post_limit: 50

Then when visiting /feed.xml locally it gives a Not Found error. Is there something I'm missing here?
Thanks in advance,
Ben

Hey! Sorry for taking so long to get back to you on this!
I think if you maybe remove the leading slash in rss_name that might do the trick. Can you try that?

No worries, I went with this option instead - https://github.com/kemayo/davidlynch.org/blob/master/export.xml


Add logic to remove duplicates from signature list

I've done the changes as requested here: https://github.com/ethereum-optimism/superchain-ops/issues/267

🟡 Heimdall Review Status

Requirement
Status
More Info

Reviews

🟡
0/1

Denominator calculation

Show calculation

1 if user is bot
0

1 if user is external
0

From .codeflow.yml

1

Additional review requirements

Show calculation

Max
0

0

From CODEOWNERS

0

Global minimum
0

Max

1

1

1 if commit is unverified
1

Sum
2

Thanks for the contribution! We made a slightly simpler fix here: #95. Please let us know if this doesn't work for you.
Also working on a larger refactor in #97.


feat: expose PgTypeInfo consts for implement Type outside

Currently, when you want to implement extend types:
use sqlx::{Postgres, Type};
use sqlx::postgres::PgTypeInfo;

pub struct Timestamp(jiff::Timestamp);

impl Type<Postgres> for Timestamp {
    fn type_info() -> PgTypeInfo {
        PgTypeInfo::TIMESTAMPTZ
    }
}

It will fail with Constant `TIMESTAMPTZ` is private [E0603].
These consts can be public for implement Type outside.

Closed -
There is: I don't want the docs page for PgTypeInfo to be a miles-long list of associated consts with its methods and trait impls buried at the very bottom.
Perhaps these could live in a postgres::types::catalog module, but I'd need to think on that. I'd want to do all of them at once, which is out-of-scope for this PR.
from https://github.com/launchbadge/sqlx/pull/3511#issuecomment-2362575779.


Cache discovered extractor catalog when running pipeline

Migrated from GitLab: https://gitlab.com/meltano/meltano/-/issues/2460
Originally created by @ishan.mails on 2020-11-25 15:56:08

Problem to solve
(Summarize the problem we are trying to solve in the form of we need to do [A], so that [B] can [C])
We need to enable catalog to be cached and reused, so that meltano does not attempt to generate the entire catalog for each elt run.
I believe the catalog generation for each run turns out to be a costly operation and instead there can be some mechanism to preserve the catalog and refresh it on-demand or based on a schedule.
Target audience
This could be an opt-in feature as well. Meltano already allows to manually specify a catalog. It would be great if the meltano utilities such as schema filters can be applied on a manual catalog as well.
Further details
During my testing with tap-salesforce, the catalog file comes out to be 10MB with 1000 entities. It takes considerable amount of time and API calls to generate the catalog for each elt run when a typical use-case would involve syncing only 5-10 entities.
Proposal
There is already an option to specify the catalog file. I believe we only apply the same rules for a manual catalog, as it is done on a discovered catalog.
What does success look like, and how can we measure that?
(Define both the success metrics and acceptance criteria. Note that success metrics indicate the desired business outcomes, while acceptance criteria indicate when the solution is working correctly. If there is no way to measure success, link to an issue that will implement a way to measure this)
Regression test
(Ensure the feature doesn't cause any regressions)

[ ] Write adequate test cases and submit test results
[ ] Test results should be reviewed by a person from the team

Links / references
Please note that this was taken from GitLab, to be changed accordingly

View 2 previous comments from the original issue on GitLab

This will be helped by https://github.com/meltano/meltano/pull/8626, but

The catalog will only be cached for pipelines with the same state ID and run ID
elt/el is a legacy command and run is recommended
--refresh-catalog will offer a way of ignoring the cache

This will be helped by https://github.com/meltano/meltano/pull/8626, but

The catalog will only be cached for pipelines with the same state ID and run ID
elt/el is a legacy command and run is recommended
--refresh-catalog will offer a way of ignoring the cache


Jest fails to load monaco-editor after an upgrade to 0.21.0

monaco-editor version: 0.21.0+
Browser: N/A
OS: N/A
Severity: Very high (code cannot be tested)
The problem
0.21.0 release changed var global = self; to const global = self; in node_modules/monaco-editor/esm/vs/editor/editor.api.js. Now, this constant clashes with jest's 'global' producing the following error:
SyntaxError: Identifier 'global' has already been declared

Potential solution?
Changing the const back to var resolves the issue. The alternative solution is to rename global to anything else. Can this be fixed in 0.21.3?
How to reproduce
git clone https://github.com/A-Shleifman/monaco-jest-global-already-declared.git
cd monaco-jest-global-already-declared
npm i
npm t

The stack-overflow issue raised a few months ago: https://stackoverflow.com/questions/64042617/identifier-global-has-already-been-declared-at-compilefunction-error-in-jest

Same issue here. Is there a solution? I can't run jest on react components that are using monaco-editor.

@emilioSp I had to use patch-package to fix the problem directly in node_modules on postinstall.

monaco-editor+0.21.2.patch
diff --git a/node_modules/monaco-editor/esm/vs/editor/editor.api.js b/node_modules/monaco-editor/esm/vs/editor/editor.api.js
index 225acdb..8e9060e 100644
--- a/node_modules/monaco-editor/esm/vs/editor/editor.api.js
+++ b/node_modules/monaco-editor/esm/vs/editor/editor.api.js
@@ -6,7 +6,7 @@ import { EditorOptions } from './common/config/editorOptions.js';
 import { createMonacoBaseAPI } from './common/standalone/standaloneBase.js';
 import { createMonacoEditorAPI } from './standalone/browser/standaloneEditor.js';
 import { createMonacoLanguagesAPI } from './standalone/browser/standaloneLanguages.js';
-const global = self;
+var global = self;
 // Set defaults for standalone editor
 EditorOptions.wrappingIndent.defaultValue = 0 /* None */;
 EditorOptions.glyphMargin.defaultValue = false;

package.json
  "scripts": {
    "postinstall": "patch-package"
  }

Fixed via https://github.com/microsoft/vscode/pull/109833

@alexdima thanks for the fix. Any chance this will land in an upcoming release of monaco-editor ?

@alexdima thanks for the fix. Any chance this will land in an upcoming release of monaco-editor ?


chore: remove released collector profile and separate saves and follows ff

The type of this PR is: chore

This PR solves [PROJECT-XX]
Description
remove released collector profile and separate saves and follows ff

🙏

CI tests are not running for some reason


Base Classes

I'm not really sure how this would work, however, it might be nice to be able to have base classes for the various artifacts which would allow for better type hinting than BaseModel.
I'm open to ideas and open to helping.

Can you elaborate on that? I would like to know use cases with base classes of each artifacts respectibly.
In reality, generated classes for dbt artifacts don't directly inherit BaseModel so that we can implement something common among the classes of artifacts. However, I haven't seen any cases for that.

https://github.com/yu-iskw/dbt-artifacts-parser/blob/000344a47a724d498a4d7d2d82fd60b8ac5f4fa8/dbt_artifacts_parser/parsers/base.py

My use case is that I'm looking to build a tool which exposes the artifacts via a GraphQL API (https://github.com/judahrand/dbt-metadata-api). My first pass is trying to replicate the dbt Metadata API, though I'm not sure this is the best approach...
During development it is handy to hand type hints sort themselves out so that one gets autocomplete on them. For now I've just defined my own Union[ManifestV5, ManifestV6, ManifestV7] type and used that. This might even be the best approach... However, I also wonder if it would be possible to define a BaseManifest which is an abstract class which defines the common functionality between all the other classes?

@judahrand Thank you for the explanation. I see your point.
I'm not sure whether or not that works by using something like BaseManifest. As you know, we take advantage of datamodel-codegen commands in the datamodel-code-generator module to generate pydantic-based classes. Even a classe to a nested field inherit a specified base class. Since we pass the BaseParserClass class to datamodel-codegen commands in our case, all nested fields inherit the class. I am worried about type hinting gets confused due to a lot of inherited different classes.

https://github.com/yu-iskw/dbt-artifacts-parser/blob/main/dbt_artifacts_parser/parsers/manifest/manifest_v6.py#L45

If you are sure it wold work to create abstract classes by artifact type, I don't mind to refactor the code generation.

Unfortunately, at the moment I've moved away from using this package and instead am using dbt-core to parse the artifacts so I don't think I'll have much time to look into this.

Alright. Let's close the issue.


ComplexConv1d

It seems your implementation of complex convolution combining 'grouped convolution' differs from others. I don't quite understand your implementation about the 'forward' in 'class ComplexConv1d', especially 'weight_B = torch.cat([self.B[:spl].data * (-1), self.B[spl:].data]); idea_part = F.conv1d(x, weight_B, None, stride=self.stride, padding=0, dilation=self.dilation, groups=2)'. What is your mean of 'idea channels', 'idea_part'? It would be appreciated if you can give me some detailed explanation about them.

That should be an "imaginary part" that you can more understand that part. These channels start from given phases.

Close it.


Mustache rendering is getting old info or vars

What are you trying to achieve or the steps to reproduce?
When I change info of a convo it doesn't change into nested object as cards
first time
dialog.setVar('name', db.name); // howdy
await dialog.gotoThread('send_web');

convo.addMessage('{{vars.name}}', 'send_web');  // howdy

  convo.addMessage(
    {
      channelData: {
        attachment: {
          type: 'template',
          payload: {
            template_type: 'generic',
            elements: [
              {
                title: 'Name',
                subtitle: 'Name',
                buttons: [
                  {
                    type: 'web_url',
                    url: '{{{vars.name}}}', //howdy
                    title: 'Name'
                  }
                ]
              }
            ]
          }
        }
      }
    },
    'send_web'
  );

second time
dialog.setVar('name', db.name); // botkit
await dialog.gotoThread('send_web');

convo.addMessage('{{vars.name}}', 'send_web');  // botkit

  convo.addMessage(
    {
      channelData: {
        attachment: {
          type: 'template',
          payload: {
            template_type: 'generic',
            elements: [
              {
                title: 'Name',
                subtitle: 'Name',
                buttons: [
                  {
                    type: 'web_url',
                    url: '{{{vars.name}}}', //howdy  !!!!! keeps the old value
                    title: 'Name'
                  }
                ]
              }
            ]
          }
        }
      }
    },
    'send_web'
  );

What was the result you received?
Cards with old values
What did you expect?
Actual values
Context:

Botkit version: 4.5.0
Messaging Platform: Any
Node version: 10.15
Os: Linux
Any other relevant information:

Does your code indicate that you are calling convo.addMessage each time? Once the dialog is added to the controller, you should not make any further changes to the convo. Can you clarify?

Was facing similar issue, it was hard to debug being a variable copy issue.
Test my PR change https://github.com/howdyai/botkit/pull/1761 and confirm back if by any chance it works.
BTW just added similar sample.

Dear @adantoscano , have you found time to try the line var deepcopy to outgoing suggested by the PR ? What would be your feedback about the solution ?

@benbrown I do addMessage only once and setVar and goToThread into a before() that it gets info from my db and set this as a var to render.
Y think the error is related to @InnoraG says.

I agree.
I will get this reviewed and merged into the next release.


get env in htaccess

I'm using this package for wordpress. I need to add if function in htaccess to do the https redirection based on ENVIRONMENT.
How can I call the value in htaccess?
env file
ENVIRONMENT=production
DB_NAME=
DB_USER=
DB_PASSWORD=

No, you can't use this library for that.


ISPN-5884 BlockingInterceptor causing random failures

https://issues.jboss.org/browse/ISPN-5884

Introduce BlockingInterceptor.suspend(boolean)
Always block commands unless suspended
Fixes ClusteredListenerReplTest.testPrimaryOwnerGoesDownAfterBackupRaisesEvent

Please cherry-pick on 8.0.x as well.

Seems good to me, pulling...

Integrated into master, thanks @danberindei !

Also integrated into 8.0.x, thanks!


[OpenPower] test_bmc_devicetree, test teardown failed

HI, when I test them separately, they pass.
However, when I test them together, if the previous test case fails, it results in a subsequent test case "connection failed."
Here is my fixed content:
-Suite Setup         Open Connection And Log In
-Suite Teardown      Close All Connections
-Test Teardown       FFDC On Test Case Fail
+Test Setup         Open Connection And Log In
+Test Teardown      Run Keywords  Close All Connections
+...                AND           FFDC On Test Case Fail-Suite Setup         Open Connection And Log In

Good thought that.. fixed https://gerrit.openbmc.org/c/openbmc/openbmc-test-automation/+/67120  @tom-ky-wu


Demo application aspnetcore-angular2-universal.azurewebsites.net is stopped

Demo site does not work.

Thank you for letting me know! Must be something with my Azure account / setup. Let me fix that :)

@MarkPieszak happens to me all the time. :) Azure sites aren't getting stable with alot of moving parts around .net versions and tools.

😓 is it from the shift due to vs2017 I'm guessing?
I need to update the repo to the newest .NET, 2017, etc.
Need to spend a solid entire day to get this baby fixed up. Haha

:) I am waiting for these things to stable. I deploy my personal projects using web deploy from command line since last time I spent that same day figuring out why subsequent deployments of same project failed with 502.x errors.
But you are right, it must be shifing of csproj shift or something.

Yeah I hope by now things will be more "stable", everything has been rough enough from all ends with all this beta software, I know you've been going through the same pains! 😆
I'll give it a shot this week and see how bad it is :P lol

@siudeks Fixed :dancer:
Thanks for letting me know!


[fix #9640] remove pulsar-client-admin-api dependency : pulsar-common

Fixes #9640
Part 3
Motivation
Module pulsar-client-admin-api has been introduced in #9246, but it pulling in many dependencies.
This PR removes pulsar-common from the dependency, and resolves the issues.
With this PR, some temp dependencies like gson [#10513], swagger-annotations, slf4j-api, and commons-lang3 has been added. Later I will remove gson and commons-lang3, but I am not very sure about swagger-annotations and slf4j-api.
Modifications
remove pulsar-common from pulsar-client-admin-api.
Verifying this change

[x] Make sure that the change passes the CI checks.

/pulsarbot run-failure-checks

/pulsarbot run-failure-checks

/pulsarbot run-failure-checks

@eolivelli thanks for your comments. I just have a discussion with @codelipenghui earlier today, and we are on the same page. I will push some commits to change the class name, like change ClusterData to ClusterDataImpl as the implementation, and change ClusterDataInterface to ClusterData as the interface.

/pulsarbot run-failure-checks

@merlimat @codelipenghui @eolivelli please help to review this PR if you have time, thanks.

@eolivelli  Would you please help review this PR again?

@eolivelli thanks for your comments again.

This makes me think that even if we are now allowing to use pure interfaces in order to define the API, this API is not usable without the "Impl" classes.

Interfaces are intended to define the APIs and specifications, which of cause not usable without the "impl" classes. So I don't think this is a problem here.

So, what is the benefit of splitting the API classes from Impl ?

The main purpose of this PR is to solve #9640, and I am not splitting all the API classes into interface and impl class here, only those classes that will bring external dependencies into pulsar-client-admin-api. @lhotari has made a very clear description in #9640, and the discussion between @lhotari and @jerrypeng in #9638 is also very helpful to get to the context.

will it be allowed to run something like:

class MyClusterData implements ClusterData {
.....
}

admin.clusters().createCluster("test", new MyClusterData());

Actually, I do not get this point very clear, it would be great if you could give me more background about how you came up with this idea?

Probably we have to think more about this big breaking change, especially now that we are close to releasing 2.8.0.

You are right, so welcome to point it out if you have any specified concerns about this breaking change. You can also check here for some more details about the discussion on Pulsar Community Meeting.

Actually, I do not get this point very clear, it would be great if you could give me more background about how you came up with this idea?

You can try to write a simple client program that uses the new Admin API without using the "Impl" classes.
If we model the POJOs/Beans with interfaces then the user may try to use a custom implementation of the interface.
Having interfaces makes sense for the users who "read" data, actually the implementation will be provided by the runtime.
But when you come to use APIs (like createCluster) that need an implementation of the interface then you are stuck in using something that is not part of the "public API".
The Public API must be the only thing that you need in order to use the API.
createCluster wants an implementation of ClusterData but you cannot provide it if you do not use the *Impl classes.
I am assuming that the *Impl classes are "implementation details", and must not used explicitly but the client.
otherwise we are not really splitting the API in some "API part" (public) and "Implementation part" (hidden, not usable directly)
if we want to go this way we must provide builders or factories for all of the new interfaces, like we do with the Schema API (for instance Schema.AUTO_CONSUME());
Apart from this problem, this is a big breaking change, that we should do with care, and probably it is not safe to do it for 2.8.0 and we have to postpone it to 2.9.0 (or even 3.0.0??)
I believe the this is one of the cases where a PIP is a good way of working (the community meeting is informal and not everyone is able to attend)

My take here:
We are in a situation that we can’t roll back any of this change *easily. This change involves many PRs from many modules including client, client-admin, and functions. The earliest PR related to this change is probably a couple of months ago. So we need this change to land for 2.8.0
It is already a breaking change that we need to accept for pulsar-client-admin. It is hard to get to a very clean and ideal state in one release. I see what the PR proposed is the *best middle-ground situation that we can get between the 2.8.0 release and subsequent releases.
To unblock the 2.8.0 release, I think we can add @Evolving annotation to the pulsar client admin API to indicate there will be subsequent changes.

Can we add some builder/factory methods in order to help user code to create instances of the new interfaces without depending on the *Impl classes.
Alternatively we could change the name for instance from ClusterDataImpl to ClusterDataBean, following Java naming conventions and state Javadocs how to use them

I cannot fix the conflicts here because I cannot push the branch. I'll push a new PR with this changes.


[5.5] Remove duplicated code from MorphOneOrMany

Maybe I'm wrong but I think there is no point to have those 2 methods with exact same code as in parent class.

Looks correct to me. Good catch! 👍


Persist Query History Across multiple sessions

Currently query history is not persisted across sessions of ADS. It would be useful to have that stored so that users can see queries ran in previous sessions.

Dupe of #7438


Postal code validator creates undefined method 'match' for 12345:Fixnum

Hi,
I'm using ActiveValidator v4.0.0 in a project using Rails v<IP_ADDRESS>, ruby v2.3.1. I added the following to config/application.rb (inside the Class Application block):
ActiveValidators.activate(:email, :phone, :postal_code, :date)

But when I add validates :delivery_address_postcode, postal_code: { country: :fr } to my model and save data or run tests I get the following error:
NoMethodError:
        undefined method `match' for 86637:Fixnum
        Did you mean?  catch

Any idea why that happens? Is there something else to configure?

Looks like activevalidators should be converting the postal code to a string before trying to validate it.

@goulvench  Could you try replacing activevalidators in your Gemfile with this, and let me know if that fixes it?
gem 'activevalidators', github: 'penman/activevalidators', branch: 'numeric_postal_code'

Yes! Thank you, that works like a charm. My colleague told me to use strings instead for post codes in case we need to handle addresses outside of France, which would also solve that problem, but I believe your fix should be in the Gem nevertheless.

Great! When this issue is closed you can change your Gemfile back to normal.

Salut @goulvench,
Thanks for reporting it. @penman just fixed the issue and I just released a new version on Rubygems 1. Tell us if it's fixed for you.
Merci!
Franck

Works great! Thanks @penman and @franckverrot for your quick response!


README.md no instructions

There is no instructions in the README.md file, so I cannot setup or run any system, which there is no system that it talks about.  If it's talking about going into a README repository, there is none.

Also in "Machine learning supported web-base image labelling tool for researcher."
It should be "web-based", "for researchers".


Add tutorial for density matrix

What is the expected behavior?
It is possible to use the qasm simulator with 'method': 'density_matrix' to get density matrix results. The tutorial should include an example of this.

This repository is supposed to be archived. @nonhermitian can point to the correct location and format for a user guide on density-matrix simulation.

Actually we need to continue to use this repo for a variety of reasons.

I, and I'm sure many others, find this repo to be far more useful than the highly abstract docs. I would not recommend getting rid of it.

That was never what was going to happen.


float formatting issue

see first value
In [1]: import pandas

In [2]: pandas.__version__
Out[2]: '0.7.0.dev-e3df4e2'

In [3]: df = pandas.DataFrame({'A': [746.03, 0.00, 5620.00, 1592.36]})

In [4]: df
Out[4]:
   A
0  746.
1  0.00
2  5620
3  1592

In [5]:

This is the behavior as designed. Is it problematic for you? "746." is a valid python floating point representation.
In [1]: 746.
Out[1]: 746.0

When doing a read_clipboard from a DataFrame on the mailing list i noticed the above behavior, it felt weird (probably because i'm too used to engineering float formatting).
If this is intended, no problem.

I might have a further look at this. R for example is a bit cleverer about this kinda stuff:
> data.frame(a=c(746.03, 0.00, 5620.00, 1592.36))
        a
1  746.03
2    0.00
3 5620.00
4 1592.36
> data.frame(a=c(746.03, 0.00, 5620.00, 1592.36), b=rnorm(4))
        a          b
1  746.03 -1.3561377
2    0.00 -0.8483049
3 5620.00 -0.4424412
4 1592.36 -0.6585460

OK I undertook a pretty major refactor of all the formatting code which is now quite a lot simpler and better. In the case above:

In [1]: In [3]: df = pandas.DataFrame({'A': [746.03, 0.00, 5620.00, 1592.36]})

In [2]:

In [2]: In [4]: df
Out[2]:
         A
0   746.03
1     0.00
2  5620.00
3  1592.36

I also changed the default number of decimal places (plus the first digit to the left of the decimal point) to 7, which is really just a suggestion as in R. There are a few kinks yet even though the test suite passes, can you @lodagro have a whirl?

OK I'll take a look through these issues and fix the set_eng_float_format problem (really ought to have been a test!)


python310Packages.soco: 0.26.2 -> 0.26.3

Automatic update generated by nixpkgs-update tools. This update was made based on information from passthru.updateScript.
meta.description for python310Packages.soco is: "A CLI and library to control Sonos speakers"
meta.homepage for python310Packages.soco is: "http://python-soco.com/"
meta.changelog for python310Packages.soco is: ""
Updates performed

Ran passthru.UpdateScript

To inspect upstream changes

Release on GitHub

Compare changes on GitHub

Impact

Checks done (click to expand)

built on NixOS

Warning: a test defined in passthru.tests did not pass

0 of 0 passed binary check by having a zero exit code.

0 of 0 passed binary check by having the new version present in output.

found 0.26.3 with grep in /nix/store/bjjj9xcj1a15d4zrry15n6drdgdvidr3-python3.10-soco-0.26.3

found 0.26.3 in filename of file in /nix/store/bjjj9xcj1a15d4zrry15n6drdgdvidr3-python3.10-soco-0.26.3

Rebuild report (if merged into master) (click to expand)

11 total rebuild path(s)

8 package rebuild(s)

8 x86_64-linux rebuild(s)
3 x86_64-darwin rebuild(s)

First fifty rebuilds by attrpath
beets
beetsExternalPlugins.alternatives
beetsExternalPlugins.copyartifacts
beetsExternalPlugins.extrafiles
home-assistant-component-tests.sonos
python310Packages.soco
python39Packages.soco
soco-cli

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/bjjj9xcj1a15d4zrry15n6drdgdvidr3-python3.10-soco-0.26.3 \
  --option binary-caches 'https://cache.nixos.org/ https://nix-community.cachix.org/' \
  --option trusted-public-keys '
  nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(The Cachix cache is only trusted for this store-path realization.)
For the Cachix download to work, your user must be in the trusted-users list or you can use sudo since root is effectively trusted.
Or, build yourself:
nix-build -A python310Packages.soco https://github.com/r-ryantm/nixpkgs/archive/c16960ba2d345b8485ec63c7bc25ae1477674aee.tar.gz

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/bjjj9xcj1a15d4zrry15n6drdgdvidr3-python3.10-soco-0.26.3
ls -la /nix/store/bjjj9xcj1a15d4zrry15n6drdgdvidr3-python3.10-soco-0.26.3/bin

Pre-merge build results
We have automatically built all packages that will get rebuilt due to
this change.
This gives evidence on whether the upgrade will break dependent packages.
Note sometimes packages show up as failed to build independent of the
change, simply because they are already broken on the target branch.
Result of nixpkgs-review run on x86_64-linux 1

8 packages built:

beets
beetsExternalPlugins.alternatives
beetsExternalPlugins.copyartifacts
beetsExternalPlugins.extrafiles
home-assistant-component-tests.sonos
python310Packages.soco
python39Packages.soco
soco-cli

Maintainer pings
cc @lovesegfault for testing.

Result of nixpkgs-review pr 160886 run on x86_64-linux 1

8 packages built:

beets
beetsExternalPlugins.alternatives
beetsExternalPlugins.copyartifacts
beetsExternalPlugins.extrafiles
home-assistant-component-tests.sonos
python310Packages.soco
python39Packages.soco
soco-cli


Will Postgres be a first class alternative?

I've been trying a bit to get parse server to work with Postgres and have a few questions regarding the utility of this (and future) effort:

Does the core team think Postgres can become a first class alternative to MongoDB in parse server? (If not, just ignore the rest of this and close this issue)
Could you please lay out a roadmap/issue list/specs, addressing which could achieve this? (it's difficult for someone not familiar with the existing codebase to do this)
Would there be support for a new API that supports transactions (and possibly others that can leverage Postgres's capabilities)?

I don't mean to ask whether the core team will implement all of this. What I want to know is:

whether the core team would like parse server to take this direction
whether it is willing to lay out specs/issues that make the path to implement all these features clear

whether the core team would like parse server to take this direction

YES! Postgres is a first class citizen, that's why this adapter code is in parse-server and not in an external adapter.

whether it is willing to lay out specs/issues that make the path to implement all these features clear

There is no roadmap so far, the main focus would be stability, and reliability at first, performance next.
Then special use cases, BUT, without cluttering too much the common code. I'm open to all ideas coming that way. The same way, we have a few tricks for mongodb, we can have a few tricks for postgres.
What do you think?

YES! Postgres is a first class citizen

That's good to know :)

There is no roadmap so far, the main focus would be stability, and reliability at first, performance next.
Then special use cases, BUT, without cluttering too much the common code. I'm open to all ideas coming that way. The same way, we have a few tricks for mongodb, we can have a few tricks for postgres.

What do you think?

This sounds right and it makes sense. The thing is, as someone looking at this from the outside, I have no idea how can I translate this into some actionable tasks.
One step was to go through mongo specific tests and try to get them to run against postgres. Some of the tests were converted and some of the remaining ones seem like they'd be specific to MongoDB. I have already been able to use the dashboard with Postgres.
At this stage, I don't know what to do to next. If it were left to me, I'd probably start building in transaction support (because my app needs that). Then I'd start building my app using parse server and postgres. And during development, I'd work on fixing the postgres specific issues that I'd run into.
As you can see, my decisions (I'm only taking myself as an example here) would be driven by what my app needs. So if there are some features that I don't need, I won't realize about the stability/reliability issues related to that. I'm not sure you want parse server to be developed in that manner.
On the other hand, given that

there aren't many people using parse server with postgres and
there is no roadmap/guidelines on what needs to be done to achieve stability/reliability

I think it might be faster to implement new features (especially transaction support) and then improve reliability/stability/other bugs as they become apparent with increased usage.

As you can see, my decisions (I'm only taking myself as an example here) would be driven by what my app needs.

And that's great, if you have a need that is 'general' and not introducing special cases that could be implemented differently or outside.

I'm not sure you want parse server to be developed in that manner.

We all use specific areas of parse-server, and we can't possibly work on everything at once. If there is a particular improvement your want to bring, go ahead. The rest will follow.
Focusing on stability and performance just means that when a user reports a stability/performance issue, we prioritize those errors first vs the new features. Meaning we'll try to provide a fix in the next release.

At this stage, I don't know what to do to next. If it were left to me, I'd probably start building in transaction support

If at this stage, the dashboard is functioning correctly with the postgres support, then move forward with transaction support! We'll likely find new problems along the way.
Does it make sense?

That sounds good.
So for something like transactions, is there a formal process I need to go through before it can be worked on? Should I create an issue with an explanation on how I intend to go about it (for early feedback) or should I implement it, submit a PR and then see if it is acceptable?
A somewhat unrelated question - if I have questions about existing code, is there a specific chat room (gitter doesn't seem very active) or forum where I can ask them or should I do that here via GH issues?

is there a specific chat room

Shoot me a mail I'll get you in

is there a formal process I need to go through before it can be worked on?

probably outline how you would go about it before in https://github.com/parse-server-modules/parse-evolution (open a PR with the template in the proposals folder), that will help with communications.


Moved some UserDefaults outside of Preferences to avoid unnecessary .body computations

Discussion in issue https://github.com/twostraws/ControlRoom/issues/107.
I moved some UserDefaults outside of Preferences class because they should be local state of some views instead of global shared state (e.g. filterText, carrier). I used @AppStorage for memory persistence accros launches.
For filterText I made the filterSimulator() func of SimulatorsController public to be able to update the list when filterText changes.
I also removed some useless .environmentObject(preferences) calls since it was already called higher in the view tree.
There are still some UserDefaults that could be removed from Preferences I think.
All those changes avoid lots of .body computations that were uselessly triggered by the many Preferences updates triggered by keystrokes (in URL and Carrier fields for instance) and updating the simulators list view.

This is really great work – thank you very much!


Test database for bench isn't in the repo

Problem
Let's run cargo bench locally
➜ milli (main) ✗ cargo bench
    Blocking waiting for file lock on package cache
    Blocking waiting for file lock on package cache
   Compiling milli v0.1.0 (/Users/shekhirin/Projects/milli/milli)
    Finished bench [optimized + debuginfo] target(s) in 3m 14s
     Running target/release/deps/milli-ea87a0ce432f49ba

running 57 tests

...

test result: ok. 0 passed; 0 failed; 57 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running target/release/deps/search-cff73d24bb30ba0a
WARNING: HTML report generation will become a non-default optional feature in Criterion.rs 0.4.0.
This feature is being moved to cargo-criterion (https://github.com/bheisler/cargo-criterion) and will be optional in a future version of Criterion.rs. To silence this warning, either switch to cargo-criterion or enable the 'html_reports' feature in your Cargo.toml.

Gnuplot not found, using plotters backend
thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: No such file or directory (os error 2)', milli/benches/search.rs:17:47
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
error: bench failed

It crashes :(
thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: No such file or directory (os error 2)', milli/benches/search.rs:17:47

Solution
Include books-4cpu.mmdb file in the repo
https://github.com/meilisearch/milli/blob/9ad8b74111be114fed1ff3c9638293c1d31536a8/milli/benches/search.rs#L8

Hey @shekhirin,
Thank you for your issue, I just created an issue about the set of benchmarks that we plan to add to the repository. @irevoire will work on that for the next days/weeks.
Thank you very much for your help and curiosity about the project,
A first version of this engine will be out in not much time 😺

Now that #207 have been merged we can close this issue. Feel free to reopen if I missed something 😄


The deployed jar misses common resources when building with Windows

Hi , when building with yarn yarn build-keycloak-theme, the jar is missing some files , the issue comes from the Templates:
        "styles": [
            `${url.resourcesCommonPath}/node_modules/patternfly/dist/css/patternfly.min.css`,
            `${url.resourcesCommonPath}/node_modules/patternfly/dist/css/patternfly-additions.min.css`,
            `${url.resourcesCommonPath}/lib/zocial/zocial.css`,
            `${url.resourcesPath}/css/login.css`
        ],

All the files in url.resourcesCommonPath are not in the jar neither in .\build_keycloak\src\main\resources\theme\keycloakify-starter
getting 404 Not Found error on the files like this :
/resources/6cjib/login/keycloakify-starter/resources_common/node_modules/patternfly/dist/css/patternfly-additions.min.css
I tested this in the main branch.

Hello @samorganist,
I'm pretty sure this has been fixed.
Make sure you are using the latest version of Keycloakify, try deleting your node_modules and public/keycloak-resources directory.
The latest version of Keycloakify starter is deployed here: https://starter.keycloakify.dev/
You can check when clicking login, the Keycloak assets are included.

Hi @garronej ,
I think i'm not building like you, i'm using this command:
yarn install && yarn build-keycloak-theme is that correct?
i deleted  node_modules and public/keycloak-resources as you mentioned  on keycloakify-start 4.7.3 using keycloakify 8.1.3, but still having a jar that don't contains assets.

What os are you using? What node version? What yarn version? Have you changed anything in the starter?

i'm using node v16.17.1 and yarn 1.22.19, i didn't change anything in the starter.

What OS are you using? Window, Linux, OSX?

Here is the JAR I just build with:

yarn v1.22.19
node v16.20.2

I just cloned the starter and yarn && yarn build-keycloak-theme
https://filedn.com/lYPEPucNMheV19aDu23lK0Q/misc/keycloakify-starter-keycloak-theme-4.7.3.jar
Let me know if it work.

I was using windows without Cgwin, Just tested this on ubuntu with node  v16.17.1 it works fine , the problem i think it comes from the OS, on windows common resources are not bundled.
I have tried also with Cgwin it dosent work with the same versions.

Ok, that what I though.
I'll fix the build on window, in the meantime you can use WSL

Thank you, that's what i'm using , any way my build machine is on linux so the deployment will be good.
Nice job for the library by the way 👍 , saves a lot of time for keycloak customization.

@samorganist, thanks a lot for the kind word and sorry for the bad experience on Windows.
We try to make Keycloakify be platform agnostic but as I only work with POSIX machines I sometime forget that / isn't the path separator on Windows.

Build on windows are fixed in v8.2.1. Thanks for reporting


Expose colors as options

On Windows, I'm getting unsightly blue-on-black text, which is really hard to read. If the colors were exposed as options, however, I could fix this quite easily!

I'm also breaking my head trying to change jshint-stylish colors. Using a dark background with a little bit of opacity, the text is unreadable.

By the way, I actually changed my bash colors, it doesn't really change the color jshint-stylish.


Subgraph search & replace (graph surgery)

TensorFlow version (you are using): 2.4

Are you willing to contribute it (Yes/No): No

Describe the feature and the current behavior/state.
I would like to be able to do subgraph search & replace of models, basically to replace some block of operators by others automatically.
Currently there is no way to iterate over the graph with a standard graph traversal, making it hard/impossible to perform automatic subgraph search & replace.
Will this change the current api? How?
Not necessarily, Pytorch is developping torch.fx for doing something similar (in 1.8 alpha)
Who will benefit with this feature?
Businesses wanting to write custom framework on top of tensorflow for automatic model modifications taylored to their needs.
Any Other info.

I think Grappler already does this.

It does replace blocks, but I can't use it to replace what blocks I want.
By blocks, I mean a block ranges from a single operator to a full feature extractor.
Grappler seems to be a tool to do optimization for you, not exactly what I am looking for.

I think it is better to make a RFC at https://github.com/tensorflow/community/

The API owners are moving to a rotation based system and assigning several owners to follow along and comment.

Closing in light of request for RFC: https://github.com/tensorflow/tensorflow/issues/46930#issuecomment-776104414


Error reporting in to the BaseArrayHelper::getValue()

What steps will reproduce the problem?

error_reporting
strrpos(): Passing null to parameter #1 ($haystack) of type string is deprecated

line
209

code
8192

file
/var/www/vendor/yiisoft/yii2/helpers/BaseArrayHelper.php

Additional info

Q
A

Yii version
2.0.46

PHP version
8.1

Operating system
Linux

In what scenario you're getting such error? getValue() does not accept null as $key.

and who forbids doing this?
It may be worth throwing out the default value right away, so as not to provoke a similar problem in the keyExists() method
    public static function getValue($array, $key, $default = null)
    {
        if (empty($key)) {
            return $default;
        }
    }

and who forbids doing this?

It does not matter. Yii cannot use types in method signature due to supported PHP versions range, but it does not mean we should add guards for every possible misuse of any method in framework. If phpdoc does not allow to pass null as $key, then it is on you if you decide to ignore it and pass null anyway.

In this case I think a safeguard would not hurt.

In this case I think a safeguard would not hurt.

It may hide potential errors. That is the point why PHP started to emit deprecation for such cases. By adding bling guards Yii negates progress made by PHP. And if we're fine with that and decide that null is valid key, it should be reflected by phpdoc and probably fixed in keyExists() too.


Metrics are off

The created metrics are using a gauge which never gets lowered for field or scrapping error count.

fixed bye accident by #6