simple gene name search should recognize synonyms

At present it doesn't. This was annoying when I was reading a paper that referred to a gene (mto1) by TWO of its synonyms (mbo1 & mod20) but didn't mention its standard name.
Labeled "next" because it's required to go live (not just because the lack of it makes me crazy ;) )

It now searches synonyms but it's not perfect.  For example if you type a prefix that matches two synonyms of the same gene, the gene appears twice in the suggestions:

I love the way it works though, matching any substring without the need for wild cards and putting the most sensible suggestions first. Genius.

@mah11 Can you close this if you're happy with it?

That's fine - for the duplicate matches it's clear why a gene appears more than once. Thanks :)

the same gene can appear twice though, I think that's the outstanding issue.

How big a problem is that, though? And would putting multiple matching synonyms on one line really be better?

ah yeah its matching 2 different things, that's fine

OK, I'm glad you're happy with it as-is for now.  It will need to be revisited anyway when we expand the search to terms, product and the other stuff.


Wrapped VAST is not playing

I got this wrapped vast tag: http://projects.kaltura.com/ran/xml/vast_wrapper.xml
When running it with the player, I don't get the ad.
On the other hand, it works on JW test page: http://demo.jwplayer.com/ad-tester/
When I debug the player, it looks like the inner vast returns MediaFile of type video/x-mp4, and tech.canPlaySource(source) returns an empty string for this.
Is this a videojs issue?

Hi @yonida I tried to test that VAST. But when I use it in VAST/VPAID tag in the demo or using custom XML I get this error in IOS:

and in Chrome desktop:
XMLHttpRequest cannot load http://projects.kaltura.com/ran/xml/vast_wrapper.xml. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://mailonline.github.io' is therefore not allowed access.
Is only working in JW test page: http://demo.jwplayer.com/ad-tester/ is because the player is in flash (flash handles CORS differently).
For more details see this other issues:
https://github.com/MailOnline/videojs-vast-vpaid/issues?utf8=✓&q=is%3Aissue+CORS+
http://www.iab.com/wp-content/uploads/2015/06/VASTv3_0.pdf page 16
https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS


Linux: vscode can't be display correct

VSCode Version: Code 1.8.1 (ee428b0eead68bf0fb99ab5fdc4439be227b6281, 2016-12-19T14:41:20.664Z)
OS Version: Linux x64 4.8.0-39-generic
Extensions:

|Extension|Author|Version|
|none|---||

Steps to Reproduce:
1.install the vscode on ubuntu 16.4
2.open, but not a word can be display, it just black. and the vscode windows always on the top, can't be closed.
3. I also the latest version: code_1.9.1-1486597190_amd64.deb version,  but it just as the same.

Try running code --disable-gpu to workaround.

Since this issue is rather old, I am closing this and ask anyone to open a new issue if this is still happening.


Adding languages and countries

Respecting international abbreviations form https://www.iban.com/country-codes, I extended the enums

Solved issues:

Enumerate Languages And Dialect Regions #79
Language Handling #60

for language and region detection functions for Unix systems: Improved Language Detection #55

I recieved feedback from AldaronLau here : https://github.com/ardaku/whoami/pull/81


⚠ Bofrost.be has degraded performance

In 5f92230, Bofrost.be (https://www.bofrost.be) experienced degraded performance:

HTTP code: 200
Response time: 1547 ms

Resolved: Bofrost.be performance has improved in 0ec7cc3 after 6 minutes.


How to retrieve the information of just only one specific filled order for a specific owner?

How can we the information of just only one specific filled order instead of loading all of them?
And also only the orders that were placed by a specific owner?
For example, we have this documentation here:
https://github.com/project-serum/serum-ts/tree/master/packages/serum
But we only have an example to be retrieving the info for filled orders, so if we are working with several markets this would be very time-consuming.
Maybe we could have something like:
await market.loadFills({ connection: connection, owner: owner.publicKey, clientId: clientId, exchangeId: exchangeId })

bump

I haven't used it yet,
but they recommended me to use
vybenetwork
for retrieving filled orders.
Please let me know if you have success with it.


Typing newline then space in InputEditor Component Crashes Chrome

Description
The  component in use in the CustomColumn editor + the ACL editor crashes Chrome when typing a new line followed by typing a leading space on that line.
This was discovered in Enterprise (see DH-15438), but we suspect the fix will need to be made to Community.
Steps to reproduce
In an  instance (currently in CustomColumns + Table ACL filter editro), type:
ab

then
a
b

then
a
 b

Expected results
The editor should add a leading space to the 2nd line

New page to load
-->

Actual results
Chrome crashes with an "Aw Snap" message
Versions
Version 1.20230512.060beta ()
Web Client (ef239cea)
Java Eclipse Adoptium 17.0.7

This appears to be a bug in Monaco itself. Upgrading to latest (0.41.0) fixes the issue.
That said, there is another task that intentionally downgraded Monaco in DH, so will need to determine if upgrading introduces other problems, or if all has been resolved since the downgrade almost a year ago.
https://github.com/deephaven/web-client-ui/pull/785
I also found some older bugs in the Monaco repo that have since been closed, but they sound similar to the issue in the current version we are using (0.41.0)
https://github.com/microsoft/vscode/issues/95686
https://github.com/microsoft/monaco-editor/issues/2014


copy paste mistake

The maximum size of a record should be 50,000 characters as measured by String.Length. If you need to break up your data before sending it to the sentiment analyzer, you may use the Text Split skill.

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 1bc617fb-5d08-4942-10fe-cd6fd0f397b0
Version Independent ID: 2dfc170d-d529-90bd-ea67-73a35721e3a4
Content: Language detection cognitive search skill - Azure Search
Content Source: articles/search/cognitive-search-skill-language-detection.md
Service: search
GitHub Login: @LuisCabrer
Microsoft Alias: luisca

@allenwux  Thanks for your feedback! We will investigate and update as appropriate.

@allenwux, As mentioned in the document 'Azure subscription and service limits, quotas, and constraints' - The maximum records returned for non-aggregated data is 5,000 and The maximum records for aggregated data is 500,000. Thanks for the feedback, it's much appreciated. Your feedback has been shared with the content owner (@LuisCabrer) for further review. In the interim, kindly do let us know if you have any additional feedback or clarification needed.

The limit described in the document 'Azure subscription and service limits, quotas, and constraints' refer to Azure Search query limits, while the limits described at  Language detection cognitive search skill - Azure Search refer to the input limits of the skill... so there is no real issue here.
At any rate, in pull 84291, I made a small clarification so this is not confusing.

@allenwux, We will close this out, but if you feel you need more information please just let us know. Thank you @LuisCabrer for the comments.


Azurite vscode extension settings do not respect relative paths

Which service(blob, file, queue, table) does this issue concern?
Blob
Which version of the Azurite was used?
3.12.0
Where do you get Azurite? (npm, DockerHub, NuGet, Visual Studio Code Extension)
Visual Studio Code Extension
What's the Node.js version?
14.16.0
What problem was encountered?
Azurite errors when setting the cert and key settings to point at files in the current directory. For example if your settings were:

for local development, with certs created using mkcert as the docs suggest, then Azurite will fail to start with a ENOENT: no such file or directory, open '.\<IP_ADDRESS>.pem' error. This is the same with setting the path to .\<IP_ADDRESS>.pem, as it is with ./<IP_ADDRESS>.pem, and ${workspaceFolder}/<IP_ADDRESS>.pem.
Steps to reproduce the issue?

Create new certs in a directory with mkcert <IP_ADDRESS>
Set Azurite to point at <IP_ADDRESS>.pem for the cert and <IP_ADDRESS>-key.pem for the key
Enable debug logging
Try to start Azurite
Open debug log to see below stack trace

Azurite Blob Service starts failed with error: ENOENT: no such file or directory, open '.\<IP_ADDRESS>.pem' Error: ENOENT: no such file or directory, open '.\<IP_ADDRESS>.pem'
	at Object.openSync (fs.js:476:3)
	at Object.func [as openSync] (electron/js2c/asar_bundle.js:5:1846)
	at Object.readFileSync (fs.js:377:35)
	at Object.e.readFileSync (electron/js2c/asar_bundle.js:5:8643)
	at BlobConfiguration.getCert (c:\Users\jcfie\.vscode\extensions\azurite.azurite-3.12.0\dist\src\common\ConfigurationBase.js:41:30)
	at new BlobServer (c:\Users\jcfie\.vscode\extensions\azurite.azurite-3.12.0\dist\src\blob\BlobServer.js:51:63)
	at VSCServerManagerBlob.createImpl (c:\Users\jcfie\.vscode\extensions\azurite.azurite-3.12.0\dist\src\common\VSCServerManagerBlob.js:35:23)
	at async VSCServerManagerClosedState.start (c:\Users\jcfie\.vscode\extensions\azurite.azurite-3.12.0\dist\src\common\VSCServerManagerClosedState.js:6:9)
	at async VSCServerManagerBlob.start (c:\Users\jcfie\.vscode\extensions\azurite.azurite-3.12.0\dist\src\common\VSCServerManagerBase.js:38:26)

Have you found a mitigation/solution?
Absolute paths work, but make it more difficult to distribute settings! Appreciate this might not really be fixable, just wanted to raise an issue incase it was something that could be sorted.

Thanks for reporting! It's an unsupported feature. Will track here for further triage. In the same time, contributions are welcome!

I ran in to this issue when I was setting up my first Azure Functions project that would be shared with my team. I was really hoping to add the cert and key to the repository and then configure the extension with Workspace scope settings pointed at the files in the repo with a relative path so that there wasn't any manual config required per user.
Supporting relative paths in azurite.cert and azurite.key would be a huge value-add for me and my team!

@mattmichal
We are working on some other storage features and fixes, so this might won't be our priority in the recent future.
In the same time, contributions are welcome!
It would be great is you could raise a PR to add the support! (It would be better to raise a design doc and pass review with us to have a smooth PR review.)

I seem to have been able to fix this by updating VSCEnvironment.ts with the following:
  public cert(): string | undefined {
    const path = this.workspaceConfiguration.get<string>("cert");
    if (path == null || isAbsolute(path)) {
      return path;
    }
    else {
      return resolve(workspace.workspaceFolders![0].uri.fsPath, path);
    }
  }

  public key(): string | undefined {
    const path = this.workspaceConfiguration.get<string>("key");
    if (path == null || isAbsolute(path)) {
      return path;
    }
    else {
      return resolve(workspace.workspaceFolders![0].uri.fsPath, path);
    }
  }

I don't have any extension development experience though and I'm not too sure how this would work with multiple workspace folders, but all existing tests appear to pass.


Modals different behaviour on iOS in v0.76

Description
Before RN v0.76, on iOS, to see a Modal in top of another Modal you had to put the modal inside the first modal.
Now this behavior has changed and it's possible to see the Modal on top of the first Modal even if it's not inside the Modal. It's difficult to explain, but I prepared a clear example.
Enabling or diasbling new architecture doesn't change.
It seems like a bugfix and not a bug, because the new behavior it's pretty better, but I think it should be reported as a breaking change. The effect is that after upgrading to RN 0.76, I started to see double modals appearing since they are repeated inside modal to works on RN < 0.76.
I don't know if this is the same on Android because on Android I don't use modals this way.
Steps to reproduce

Open the example with v0.76 and test the Modals: open Modal 2 and then open Modal 1 with the buttons, you will correctly see Modal 1.
See the difference changing to v0.75: Modal 2 will not open when using the button from inside Modal 1. The only way it's to duplicate the <Modal ...> inside the Modal 2 body.

React Native Version
0.76.1
Affected Platforms
Runtime - iOS
Output of npx react-native info
System:
  OS: macOS 15.0.1
  CPU: (11) arm64 Apple M3 Pro
  Memory: 172.33 MB / 18.00 GB
  Shell:
    version: "5.9"
    path: /bin/zsh
Binaries:
  Node:
    version: 20.18.0
    path: ~/.nvm/versions/node/v20.18.0/bin/node
  Yarn:
    version: 1.22.22
    path: ~/.nvm/versions/node/v20.18.0/bin/yarn
  npm:
    version: 10.8.2
    path: ~/.nvm/versions/node/v20.18.0/bin/npm
  Watchman:
    version: 2<IP_ADDRESS>
    path: /opt/homebrew/bin/watchman
Managers:
  CocoaPods:
    version: 1.14.3
    path: /Users/angelicarosa/.rbenv/shims/pod
SDKs:
  iOS SDK:
    Platforms:
      - DriverKit 24.1
      - iOS 18.1
      - macOS 15.1
      - tvOS 18.1
      - visionOS 2.1
      - watchOS 11.1
  Android SDK: Not Found
IDEs:
  Android Studio: 2023.1 AI-231.9392.1.2311.11330709
  Xcode:
    version: 16.1/16B40
    path: /usr/bin/xcodebuild
Languages:
  Java:
    version: 17.0.9
    path: /usr/bin/javac
  Ruby:
    version: 2.7.4
    path: /Users/angelicarosa/.rbenv/shims/ruby
npmPackages:
  "@react-native-community/cli": Not Found
  react: Not Found
  react-native: Not Found
  react-native-macos: Not Found
npmGlobalPackages:
  "*react-native*": Not Found
Android:
  hermesEnabled: true
  newArchEnabled: true
iOS:
  hermesEnabled: true
  newArchEnabled: true

Stacktrace or Logs
It's not a crash.

Reproducer
https://github.com/angelica-snowit/rn76-modal-example
Screenshots and Videos
No response

I have the same issue. Before 0.76, it worked fine. For example
    setShowEmailModal(false);
    setShowPhoneModal(true);

Would work, the email modal would go away and the phone modal would show up. Now, the phone modal can only show up if I do this
    //setShowEmailModal(false);
    setShowPhoneModal(true);

Showing it on top of another, which isn't ideal

I have a band-aid solution. It seems that, currently, only one modal can be shown at a time. When you quickly switch from modal1 to modal2, the render breaks. This appears to happen because the animation for modal1 hasn’t completed before modal2 is triggered.
To resolve this, you need to add a timeout. The duration (in milliseconds) depends on the animationType of the modal. For example, with animationType set to "none," 10ms works, but if you use the "slide" animation, 500ms is needed.
This solution isn't optimal because I’m not sure if the animation speed is consistent across different devices or how the timing might be affected. Unfortunately, there doesn’t seem to be a reliable way to wait for the animation to complete. Hoping a permanent solution is implemented soon!
setModal1(false);
setTimeout(() => setModal2(true), 10);

I have a band-aid solution. It seems that, currently, only one modal can be shown at a time. When you quickly switch from modal1 to modal2, the render breaks. This appears to happen because the animation for modal1 hasn’t completed before modal2 is triggered.
To resolve this, you need to add a timeout. The duration (in milliseconds) depends on the animationType of the modal. For example, with animationType set to "none," 10ms works, but if you use the "slide" animation, 500ms is needed.
This solution isn't optimal because I’m not sure if the animation speed is consistent across different devices or how the timing might be affected. Unfortunately, there doesn’t seem to be a reliable way to wait for the animation to complete. Hoping a permanent solution is implemented soon!
setModal1(false); setTimeout(() => setModal2(true), 10);

This is not a problem that required a workaround. The behaviour has simply changed, i haven't experienced layout problems or render breaks. The main thing is that the change is a breaking one (not only for me, but for many react native libraries like stripe), and it's not addressed in the changelog even as a minor.

i have similar issues,before RN 0.76 in one page i used  2 modals, edit and add modals.now when i tried to open any modal, first previous modal opening and closing after that if i press buton again modal is opening.its not about being different modal.Example i opened add modal after that i closed.When i want to open add modal its opening and closing for 1 second.

Imo this is a pretty big undocumented change/issue

Could https://github.com/facebook/react-native/issues/48030 be related?

Could #48030 be related?

Honestly, I'm finding really strange that bug opened three days ago are fixed and instead this post didn't even received an answer. I've only wasted time creating a repo to reproduce something that apparently didn't interest anyone.

@cortinico, question for you since I see your activity on recent posts: why are you guys answering to fresh opened bugs and not to posts of weeks ago with 16 comments? Should I reopen this every day in the hope to get someone to have a look on it?

Because our team is really small and we don't have the capacity to answer to everyone. We offer support as "best effort" meaning that there could be period where we're slower to respond due to team capacity.
Currently our team is hyperfocused on fixing New Architecture only bugs, which this one is not the case so that's why it got lower priority.

Honestly, I'm finding really strange that bug opened three days ago are fixed and instead this post didn't even received an answer. I've only wasted time creating a repo to reproduce something that apparently didn't interest anyone.

That specific issue was addressed by a member of the community, which sent a PR, which also fixed the issue. We're more than welcome to receive PRs that close issues like this one, as that's practically the fastest way to get those bugs sorted out.

@cortinico, question for you since I see your activity on recent posts: why are you guys answering to fresh opened bugs and not to posts of weeks ago with 16 comments? Should I reopen this every day in the hope to get someone to have a look on it?

Because our team is really small and we don't have the capacity to answer to everyone. We offer support as "best effort" meaning that there could be period where we're slower to respond due to team capacity.
Currently our team is hyperfocused on fixing New Architecture only bugs, which this one is not the case so that's why it got lower priority.

Honestly, I'm finding really strange that bug opened three days ago are fixed and instead this post didn't even received an answer. I've only wasted time creating a repo to reproduce something that apparently didn't interest anyone.

That specific issue was addressed by a member of the community, which sent a PR, which also fixed the issue. We're more than welcome to receive PRs that close issues like this one, as that's practically the fastest way to get those bugs sorted out.

Every react native app that use, to say one, Stripe library, can't update to RN 0.76 because of this.
The fact that bugs on the New Architecture, that is optional, are more important than the ones on both old and new architecture, still seems absurd to me.

Every react native app that use, to say one, Stripe library, can't update to RN 0.76 because of this.
The fact that bugs on the New Architecture, that is optional, are more important than the ones on both old and new architecture, still seems absurd to me.

Please note that we also use the GitHub reaction feature (the '👍') to asses how many community users got affected by a bug, and this one had none.
Unfortunately with so many open bugs daily, is extremely complicated to distinguish between noise and real bugs

So, 4 answers saying "the same", with 4 thumbs up, worths nothing if no one add a thumb up to the first post.
Got it!

So, 4 answers saying "the same", with 4 thumbs up, worths nothing if no one add a thumb up to the first post.

Sadly answer "the same" does nothing other than creating unnecessary noise. We have 500+ issues and we don't look at every single comments. Top level reactions instead can be used to filter with the GitHub issue filter feature.

Yeah, got it. Again.

https://github.com/facebook/react-native/issues/48065
No logs, no repo, no way to reproduce, no thumbs up: answered in less than an hour.
Honestly, just answer "oh, we missed this" would have sounded better.

As you wish.
Good work.

This issue might caused by this PR:
https://github.com/facebook/react-native/commit/dea5a6ca60cebf92554debe2dcdcbc40ad3fbe5a#diff-99db04a88673cd58c6b483a6b9a8ae2e39f85a31307bb6b23547ede14ed067b5R136

I’m not familiar with iOS development, but I guess that when trying to present the second modal, the _topMostViewControllerFrom method retrieves the first modal that is in the process of being dismissed.
Below is the relevant error screenshot:

I have tested without this change, everything is fine.

This issue might caused by this PR:

Unlikely because the linked PR was included in 0.75 also and @angelica-snowit mentioned that this is a regression 0.75 -> 0.76

0.76.4 should contain the fix which solves the root cause of this issue

I have the same issue. Before 0.76, it worked fine. For example
    setShowEmailModal(false);
    setShowPhoneModal(true);

Would work, the email modal would go away and the phone modal would show up. Now, the phone modal can only show up if I do this
    //setShowEmailModal(false);
    setShowPhoneModal(true);

Showing it on top of another, which isn't ideal

Upgraded from 0.76.2 to 0.76.4 and I still have this issue

Hi, If anyone can provide a repo, I can have a look :)

Hi, If anyone can provide a repo, I can have a look :)

There’s a repo under repo

Hi, If anyone can provide a repo, I can have a look :)

There’s a repo under repo

seems repo already deleted by the issue reporter.

@cortinico I've reproduced this error.
0.76.5 fixed it for the new architecture, but kept broken if you opt out.
You can use reproduction repo from another issue I've created: https://github.com/facebook/react-native/issues/48245
Just do RCT_NEW_ARCH_ENABLED=0 bundle exec pod install and you won't see the second Modal at all.

This issue is still present in 0.76.5 in new architecture

@fukuli053 can you open my reproduction repo and confirm that you don't see a second modal with new architecture?
https://github.com/vsheyanov/react-76-4-modal-bug/tree/main


fix: skip argv config option on projects if JSON config

Summary
I have a command line util to find all packages in a monorepo of a certain type to run their tests with jest. Because it is only a subset of packages, we inline a jest config rather than listing packages in a jest.config.js at the root of my monorepo.
But when using jest --config '{"projects":"<rootDir>/packages/A","<rootDir>/packages/B"}' the config of each package is ignored. Note that when using a root jest.config.js listing projects path (instead of inlining the config in args), it works as expected (each config file is read).
Looking at the code, I've noticed that skipArgvConfigOption was only taken into account when the config is not an object.

Codecov Report

Merging #9096 into master will not change coverage.
The diff coverage is 0%.

@@           Coverage Diff           @@
##           master    #9096   +/-   ##
=======================================
  Coverage   64.71%   64.71%
=======================================
  Files         277      277
  Lines       11702    11702
  Branches     2872     2872
=======================================
  Hits         7573     7573
  Misses       3514     3514
  Partials      615      615

Impacted Files
Coverage Δ

packages/jest-config/src/index.ts
11.94% <0%> (ø)
:arrow_up:

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 164e209...622c0aa. Read the comment docs.

Thanks! Would you be able to to add an test for this change?

@SimenB I have added tests. They pass locally, but not on the CI. Any guidance you could give me on this?

Hmm, weird it passed on circle, but not travis... Could you rebase - the result from azure is missing, maybe that has some more details

@SimenB good news, it fails locally as well. So I'm now able to fix it and will update the PR.

@troch ping 🙂

@troch ping 😀


add health check endpoint for app service instance

Submitted #35 to expose healthcheck endpoint in the sample application


Make Godot types class instead of struct

I see that all internal Godot nodes are made types which poses problems and requires this GodotScript wrapper class, but might it be possible to make them their own classes?

Maybe, current structure is direct successor of godot-d design.
I haven't touched that part because of avoiding doing breaking changes. But since original project seems to be completely abandoned maybe it is time to move on.

In extension_api.json class declarations have field "inheritance", would need to look it up and set as child. Plus import it and instantiate with "new" if it comes up

Since D scripts are all classes it seems nothing stops from making generator emit regular D classes instead of this binding tables, but...
There is one little issue, there is no way to avoid using CRTP/helper template or mixin altogether to register all this stuff automatically.
So it will either be
// here GodotScript will take care of registration and all
class MyCoolScript : GodotScript!Node
{
  // code
}

OR
class MyCoolScript : Node
{
   // so now we have to write this stupid mixin in every class, how is that an improvement?
   mixin registerScript;

   // code
}

I don't see any registeting code in GodotScript
Register itself happens here
https://github.com/godot-dlang/godot-dlang/blob/25c00a60832585fe766ef1f269754450a2bc0d9b/src/godot/api/register.d#L71
Which u need to supply class name, so there's no need for any mixins

Yeah ok maybe, it was in old godot-d then, basically it was loading function pointers and maybe something else.
If that is gone then it should be possible to drop GodotScript template and just use regular D classes, this however will make it completely unusable with betterC if not yet.
Binding struct should be made static to be able to use outside of classes and class methods should simply forward all calls to that struct.
There is one problem however... godot loads virtual functions only once and I have no idea how hard it would be to correctly implement virtual calls across D/godot especially in nested hierarchies.

@Superbelko tried solving this issue but got kind of very stuck
https://github.com/al1-ce/godot-dlang/tree/testclasses
Git complains about stuff not having opCall when casting to variant
Honestly I have a feeling that we'd have to rewrite everything to make it work with classes

I suggest we drop that idea.
As you might noticed this is not just a matter of replacing "struct" with "class" everywhere in source files.
There is gigantic semantic gap between the two, without some dramatic rewriting this won't work.
What's more to it is that I don't see any real benefit of doing this, but we will lose the ability to go betterC if needed and this for example might be necessary for platforms such as WebAsm.
Additionally if all this is just to be able to write class MyNode : Node3d instead of class MyNode : GodotScript!Node3d then we need a better reason.
Btw interface would be a better option because there is no data for godot classes on D side at all, except the GodotObject itself which must have at least one field.

I mean.. Yea, this has to be full rewrite. Also a point for having classes is lsp autocompletion. Right now you basically writing blindly which is not as comfortable as it could be
I guess this will be on a back burner until current solution will break so much that it'd be better to rewrite everything from scratch
Also interface ain't really gonna cut it since be have to do calls to godot's methods or idk. Current codebase is confusing and I have a huge itch to just figure out how cpp bindings work anf just translate them

https://lsferreira.net/posts/zet-1-classes-betterc-d/
Just gonna drop it here for myself for later

PR #158 is in, closing this as completed.
This PR brings initial support for classes:

added -c (--classes) flag for binding generator
added classes dub config, see test demo project on how to add it in your projects
internally it uses new version USE_CLASSES in case if you need to version branch your code

For demo project there is added configuration matching the primary dub configuration named classes, in order to use it one need to regenerate bindings by running generator with -c flag and then build demo:

dub run :generator -- -j path/to/extension_api.json -o -c
dub build :test -c classes

Classes version is not 100% compatible with regular one, for example there is difference in null checks (is operator vs ==), inheriting godot scripts now requires override keyword for overriding methods (including _ready), and don't forgot to call base class methods if you are going to extend parent class behavior.


More syntax fixes

Fixes highlighting of numbers in many cases
Allows Doc syntax in bulleted lists inside Docs
Highlights links in docs
Adds highlighting for single-backtick syntax in docs
Fixes double-backtick highlighting in many cases
Adds highlighting for bullets in Doc lists
Removes highlighting of and and or which are not keywords

Amazing, thank you!

Thanks Rúnar!

Deployed in extension v1.2.0 (will be published after Microsoft rubber-stamps it)


Changing default docProps in default template

Changes:
<>
    <dc:creator>@microsoft/connected-workbooks</dc:creator>
    <cp:lastModifiedBy>@microsoft/connected-workbooks</cp:lastModifiedBy>
    <dcterms:created xsi:type="dcterms:W3CDTF">2021-11-23T12:03:21.315Z</dcterms:created>
    <dcterms:modified xsi:type="dcterms:W3CDTF">2021-11-23T12:03:21.315Z</dcterms:modified>
    <dc:title>@microsoft/connected-workbooks workbook</dc:title>
</>

Late comment - can you please check what is the PQ version specified in the template? we should probably generate the workbook with an old Excel version to avoid current compatibility warning. We can discuss offline on what that means.

Signing off assuming we've done sanity tests as with previous template.


Fix native anchor dependency problem

Note: currently it freezes for some reason when switching to devnet. but... somehow that isn't related to any of the changes because when i comment out the anchor data fetching it still freezes. understanding whats broken TODO

I don't really understand how this code works even in a regular browser.
export const isBrowser =
  process.env.BROWSER ||
  (typeof window !== "undefined" && !window.process?.hasOwnProperty("type"));

If I just pop that in my console and try it, I get the same error about process not being defined. Is there some magic when Anchor bundles up the package?

So -- thinking about it some more -- probably there is some way that process.env gets transformed into something palatable for browsers by the Anchor module's build? Otherwise it would not run in the browser, and that is clearly something people do. Perhaps it is https://webpack.js.org/plugins/environment-plugin/ ?
If so, do we need something like https://github.com/ElMassimo/vite-plugin-environment ? Or am I totally off base here?

Oh goodness, it's looking like https://github.com/ElMassimo/vite-plugin-environment might well have done the trick ...

Am I ... am I learning about JS build pipelines? I'm scared

Gonna close this as I don't think it's quite right, but thanks for jamming on it with me @Bluskript !


Show errors throughout the system when things fail

e.g. when firebase fails to return anything

Similar treatment to the snackbar.
A user friendly message, a warn or error (persist until dismissed or auto-dismiss) and then also a console-logged deep error


Isolate the Concentric CSS rules

I notice that you import stylelint-config-standard and then add your Concentric CSS rules to it. Perhaps that's the goal of your project.

Configuration rules based on stylelint-config-standard adding a concentric property sort order.

But, I'm wondering if it would be more flexible to isolate the Concentric CSS rules so that you can extend any stylelint config with Concentric CSS rules without pulling in the whole stylelint-config-standard ruleset.

Sure, just submit a PR :-)

Fixed with https://github.com/danilobuerger/stylelint-config-concentric/commit/aab3ff8e6e66bec5b7186f3b1186a38c68365d15


[HOW-TO] Have two cameras with different tunning files

Given an RPI that has two cameras (RGB and IR Camera), how can both of these be loaded with different tunning file settings?
Describe what it is that you want to accomplish
I have a real time application and needs both of these cameras running simultaneously, the RGB camera and the IR camera. However, I need to apply different exposure ranges for these cameras auto-exposure run.
Currently, whichever camera I initialize first, it sticks with the tunning file of this camera for both cameras.
From the initialization of the Picamera, I see this:

This means we only have one tunning file environment variable being exported for libcamera, which is probably the reason why we cannot have two tunning files.
Additional context
A sample to reproduce is here:
import logging
import time
from enum import Enum
from typing import Optional

from picamera2 import Picamera2
from picamera2.outputs import FileOutput
from picamera2.encoders import H264Encoder

logging.root.setLevel(logging.NOTSET)

class CameraType(Enum):
    RGB = "rgb"
    IR = "ir"

libcamera_base_path = "/usr/share/libcamera/ipa/rpi/vc4/"

def initialize_picamera2(camera_type: CameraType) -> Optional[Picamera2]:
    camera_index = 0 if camera_type == CameraType.IR else 1
    logging.info(f"Initializing the {camera_type} camera on index {camera_index}")

    camera_model_prefix = "imx708_wide"
    if camera_type == CameraType.RGB:
        actual_camera_model = f"{camera_model_prefix}.json"
        exposure_range = [2500, 3000, 3500, 4000, 4500]
        gain_range = [2.5, 3.0, 4.0, 5.0, 6.0]

    else:
        actual_camera_model = f"{camera_model_prefix}_noir.json"
        exposure_range = [500, 1000, 1500]
        gain_range = [2.5, 3.0, 4.0]

    try:
        tuning = Picamera2.load_tuning_file(f"{libcamera_base_path}{actual_camera_model}").copy()
        logging.info(f"Loading from full camera path: {libcamera_base_path}{actual_camera_model}")

        ae_settings = Picamera2.find_tuning_algo(tuning, "rpi.agc").copy()

        ae_settings["exposure_modes"]["normal"] = {"shutter": exposure_range, "gain": gain_range}
        logging.info(f"Set the exposure ranges to: {exposure_range}")
        logging.info(f"Set the gain ranges to: {gain_range}")

        camera = Picamera2(camera_index, tuning=tuning)

        camera.set_logging(level=logging.INFO)
        if camera_type == CameraType.RGB:
            video_config = camera.create_video_configuration(
                main={"size": (2304, 1296), "format": "RGB888"},
                lores={"size": (128, 72)},
                encode="lores",
                buffer_count=6,
                queue=False,
                controls={
                    "Brightness": 0,
                    "Contrast": 1.4,
                    "Saturation": 1,
                    "AeConstraintMode": 0,
                    "AeEnable": True,
                    "ExposureTime": 3000,
                    "AnalogueGain": 3,
                    "AeExposureMode": 0,
                    "ExposureValue": 0,
                    "AeMeteringMode": 1,
                    "AwbEnable": False,
                    "AwbMode": 0,
                    "ColourGains": (2.0, 1.5),
                    "AfMetering": 1,
                    "AfMode": 1,
                    "AfRange": 1,
                    "AfSpeed": 1,
                    "FrameRate": 80,
                    "LensPosition": 13,
                }
            )
            camera.configure(video_config)
        else:
            video_ir_config = camera.create_video_configuration(
                main={"size": (2304, 1296), "format": "RGB888"},
                lores={"size": (128, 72)},
                encode="lores",
                buffer_count=6,
                queue=False,
                controls={
                    "Brightness": 0,
                    "Contrast": 2,
                    "Saturation": 1,
                    "AeConstraintMode": 0,
                    "AeEnable": True,
                    "ExposureTime": 3500,
                    "AnalogueGain": 3.0,
                    "AeExposureMode": 0,
                    "ExposureValue": 0,
                    "AeMeteringMode": 1,
                    "AwbEnable": False,
                    "AwbMode": 0,
                    "ColourGains": (1, 1),
                    "AfMetering": 0,
                    "AfMode": 0,
                    "AfRange": 1,
                    "AfSpeed": 1,
                    "LensPosition": 15,
                    "FrameRate": 80,
                },
            )
            camera.configure(video_ir_config)
        camera.stop()
        return camera
    except Exception:
        logging.exception(f"Failed to initialize pi2camera on index {camera_index}", exc_info=True)
        return None

# initialization
IR_CAMERA = initialize_picamera2(camera_type=CameraType.IR)
NORMAL_CAMERA = initialize_picamera2(camera_type=CameraType.RGB)

print("Both cameras are initialized.")

encoder = H264Encoder()
output = FileOutput()
NORMAL_CAMERA.start_recording(encoder, output)
NORMAL_CAMERA.set_controls({"AeEnable": True, "AfMode": 1})

# Now when it's time to start recording the output, including the previous 5 seconds:
output.fileoutput = "file.h264"
output.start()

print("Normal camera started.")

for i in range(5):
    request = NORMAL_CAMERA.capture_request()
    image = request.make_array("main")
    metadata = request.get_metadata()
    request.release()

    exposure_time = metadata['ExposureTime']
    analogue_gain = round(metadata['AnalogueGain'], 3)

    print(f"[RGB Capture][Capture {i}] Exposure: {exposure_time}, Gain: {analogue_gain}")
    time.sleep(0.2)

NORMAL_CAMERA.stop_recording()
output.stop()

IR_CAMERA.start_recording(encoder, output)
output.start()
print("IR camera started.")

for i in range(5):
    request = IR_CAMERA.capture_request()
    image = request.make_array("main")
    metadata = request.get_metadata()
    exposure_time = metadata['ExposureTime']
    analogue_gain = round(metadata['AnalogueGain'], 3)

    print(f"[IR Capture][Capture {i}] Exposure: {exposure_time}, Gain: {analogue_gain}")
    time.sleep(0.1)

IR_CAMERA.stop_recording()
output.stop()

If I use this order of initialization:
IR_CAMERA = initialize_picamera2(camera_type=CameraType.IR)
NORMAL_CAMERA = initialize_picamera2(camera_type=CameraType.RGB)

# output
Normal camera started.
[RGB Capture][Capture 0] Exposure: 1496, Gain: 4.0
[RGB Capture][Capture 1] Exposure: 1496, Gain: 4.0
[RGB Capture][Capture 2] Exposure: 1496, Gain: 4.0
[RGB Capture][Capture 3] Exposure: 1496, Gain: 4.0
[RGB Capture][Capture 4] Exposure: 1496, Gain: 4.0
picamera2.picamera2 INFO: Camera stopped
INFO:picamera2.picamera2:Camera stopped
picamera2.picamera2 INFO: Camera started
INFO:picamera2.picamera2:Camera started
IR camera started.

[RGB Capture][Capture 0] Exposure: 4489, Gain: 5.988
[RGB Capture][Capture 1] Exposure: 4489, Gain: 5.988
[RGB Capture][Capture 2] Exposure: 4489, Gain: 5.988
[RGB Capture][Capture 3] Exposure: 4489, Gain: 5.988
[RGB Capture][Capture 4] Exposure: 4489, Gain: 5.988
picamera2.picamera2 INFO: Camera stopped
INFO:picamera2.picamera2:Camera stopped
picamera2.picamera2 INFO: Camera started
INFO:picamera2.picamera2:Camera started
IR camera started.
[IR Capture][Capture 0] Exposure: 4489, Gain: 5.988
[IR Capture][Capture 1] Exposure: 4489, Gain: 5.988
[IR Capture][Capture 2] Exposure: 4489, Gain: 5.988
[IR Capture][Capture 3] Exposure: 4489, Gain: 5.988
[IR Capture][Capture 4] Exposure: 4489, Gain: 5.988
picamera2.picamera2 INFO: Camera stopped
INFO:picamera2.picamera2:Camera stopped

So the exposure range is not being respected in these.

Yes, I'm afraid you can only have one tuning file per type of camera. In fact, it's a limitation down in the libcamera API and is something we've long wanted to remove. You may have more luck if you run the cameras in separate processes - might be an option for you?

I run the cameras through a Flask API which gets invoked at specific endpoints. Not sure if multiprocessing (created from within the app) would be something that could help us here - need to check how the synchronization between the two cameras would work, since they more or less need to capture at the same time and there are some information exchanged (e.g. we want to use the same Lens position on both cameras, and this lens depends on the user specifications on the request).

@davidplowman, from your Yes, I'm afraid you can only have one tuning file per type of camera response. What does type of camera actually mean here? These two are different in hardware and also have different tunning files - but maybe you're referring to something else

@davidplowman any updates on the above maybe?

Sorry, I thought I'd replied but obviously not. As long as your cameras load different tuning files by default, then you can in principle overwrite them and have your own tuning file for those cameras. In this context, anything with a different sensor counts as different, for example "imx219", "imx477" and so on. I think "imx296" and "imx296 mono" count as different because the camera module is programmed to know which it is. Ditto "imx708" and "imx708 wide", again because I believe it's programmed into the module.
What cameras are you wanting to use? Can you say anything about what you want to tune differently?

Thanks for the reply @davidplowman.
I use imx708_wide and imx708_wide_noir cameras. The only setting that I want to tune differently are the exposure ones (the exposure and gain ranges, together with the autoexposure tunning parameters).

I'm not sure that "noir" counts as different. But your life may be much easier if you just define two exposure modes which are the ones you want. One is still called "normal" and the other "short", but the name doesn't matter. Simply use set_controls to set one camera to "normal", and the other to "short". Could that work?

Potentially yes, that is a very good idea. Let me try that and will get back to you

@davidplowman, that worked, thank you very much.
This, however, doesn't let me choose different AutoExposure algorithm parameters per camera type. This is what I have now:
        ae_settings = Picamera2.find_tuning_algo(tuning, "rpi.agc")

        ae_settings["exposure_modes"]["normal"] = {
            "shutter": [2500, 3000, 3500, 4000, 4500],
            "gain": [2.5, 3.0, 4.0, 5.0, 6.0]
        }
        ae_settings["exposure_modes"]["short"] = {
            "shutter": [2000, 2500, 3000, 3500, 3700],
            "gain": [2.0, 2.5, 3.0, 3.5, 3.7]
        }

        ae_settings["startup_frames"] = 2
        ae_settings["convergence_frames"] = 3
        ae_settings["desaturate"] = 0
        ae_settings["base_ev"] = 1.5
        ae_settings["speed"] = 1

Any ideas?

Hi again, I'm not even sure I'd try to fiddle with the tuning file at all. I'd be tempted to try
from picamera2 import Picamera2
from libcamera import controls
# ...
cam0 = Picamera2(0)
cam1 = Picamera2(1)
# ...
cam0.set_controls({'AeExposureMode': controls.AeExposureModeEnum.Normal})
cam1.set_controls({'AeExposureMode': controls.AeExposureModeEnum.Custom})

where you can simply edit all the tuning files to have the "normal" and "custom" modes that you want.

This suggestion helped actually: https://github.com/raspberrypi/picamera2/issues/1094#issuecomment-2291461591
So closing this issue for me.


Various Fixes / Cleanup / Add NUMERIC type support

Depending on the type, I sometime can't fetch the data. Works fine with other drivers but this one is more practical, so here is a first step in debugging: cleaning up the code.
The return error type is actually very important to avoid fake non-nil errors. (interface type is ODBCError and value is nil, but err != nil returns true because the interface itself is not nil.
Also fix the driver for database/sql mode

Found where it breaks. In Statement.GetField, the Type of the field is SQL_NOSCAN (2). This result into using the default case of the switch, which works for some fields but not all.
It works for a field type NUMERIC(39,0), but not for the fields type NUMERIC(29,0) (Vertica types)

After further investigation, the type 2 is actually not SQL_NOSCAN but SQL_NUMERIC which can overflow any Go types so I use a byte array and let the caller deal with the raw data.
FYI, here is my helper from the caller:
func convertNumeric(src []byte) ([]byte, error) {
        if len(src) < 4 {
                return nil, fmt.Errorf("Source too short. Can't convert to ID")
        }
        // First reverse the buffer
        v := make([]byte, len(src))
        for i, e := range src {
                v[len(src)-(i+1)] = e
        }
        // Then Discard any empty bit in from the left side
        i := 0
        for ; i < len(v) && v[i] == 0; i++ {
        }
        // Discard the 3 bits for decimals
        return v[i : len(v)-3], nil
}

:+1:


data address: add null checks and adapt unit tests

Closes #452
Check for unacceptable null keys/values in data addresses. Update unit tests to account for this.
Brendan Cronin<EMAIL_ADDRESS>Daimler TSS GmbH, legal info/Impressum

@paullatzelsperger can you take a look at this?


Added code to check for AsyncWS before creating fallback (#659)

Cherry-picked #659 / resp. commit https://github.com/CppMicroServices/CppMicroServices/commit/1983c524e874486352ff376351d51c5ad119163a and adapted to be C++14 compliant.
I extended the commit comment of the original commit

Codecov Report

Merging #734 (f6fea37) into c++14-compliant (bb75a3f) will decrease coverage by 0.18%.
The diff coverage is 100.00%.

Additional details and impacted files

@@                 Coverage Diff                 @@
##           c++14-compliant     #734      +/-   ##
===================================================
- Coverage            90.58%   90.40%   -0.19%
===================================================
  Files                  250      243       -7
  Lines                13432    13209     -223
===================================================
- Hits                 12168    11942     -226
- Misses                1264     1267       +3

Impacted Files
Coverage Δ

...dium/ConfigurationAdmin/src/CMAsyncWorkService.cpp
81.72% <100.00%> (+1.72%)
:arrow_up:

...um/DeclarativeServices/src/SCRAsyncWorkService.cpp
81.72% <100.00%> (+1.72%)
:arrow_up:

compendium/LogService/src/LogService.cpp
0.00% <0.00%> (-100.00%)
:arrow_down:

...ecomponent/runtime/dto/ComponentDescriptionDTO.hpp
0.00% <0.00%> (-100.00%)
:arrow_down:

...src/manager/states/CCUnsatisfiedReferenceState.hpp
70.58% <0.00%> (-17.65%)
:arrow_down:

...tiveServices/src/manager/states/CMEnabledState.hpp
87.50% <0.00%> (-12.50%)
:arrow_down:

...iveServices/src/manager/states/CMDisabledState.hpp
87.50% <0.00%> (-12.50%)
:arrow_down:

...ativeServices/src/manager/ReferenceManagerImpl.hpp
94.44% <0.00%> (-5.56%)
:arrow_down:

...ativeServices/src/manager/ComponentManagerImpl.hpp
88.46% <0.00%> (-3.85%)
:arrow_down:

...anager/BundleOrPrototypeComponentConfiguration.cpp
80.14% <0.00%> (-2.14%)
:arrow_down:

... and 60 more


Serve .zip files with Access-Control-Allow-Origin: * header

I wrote some code to fetch the latest Canary version, unzip and write the folder to the local file system from the browser. The hinderance is .zip are not served with Access-Control-Allow-Origin: *  header.
Access to fetch at 'https://edgedl.me.gvt1.com/edgedl/chrome/chrome-for-testing/120.0.6081.0/linux64/chrome-linux64.zip' from origin 'https://www.example.com' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

This is a little more challenging than I initially suspected. I am able to get the .zip file using window.open(), extract the files and folders using JSZip() and writing the extracted folders and files to a directory using File System Access API, however, the executable permissions are not preserved.

I believe the approach of downloading the ZIP files via the browser would hit issues on macOS as well: https://github.com/GoogleChromeLabs/chrome-for-testing#macos-says-the-app-is-damaged-what-now

I tested on Firefox Nightly 120 as well. Same non-executable files. I seriously suspect this has something to do with Google Safe Browsing, even though I deliberately turn that "feature" off on Chromium, Chrome-For-Testing, and Nightly. Fetching, extracting and reassembling works https://gist.github.com/guest271314/09733eaa2de16bd79f01d41de41ce843.

@mathiasbynens There's no c or r option for the xattr I just installed on Linux.

It would be uselful to test this using fetch() instead of open().


(MAINT) Update skytap templates to 6.2 VMs

Update the skytap templates to use the template and VM IDs
of the newly-uploaded 6.2 master and training VMs in Skytap.
Reviewer should validate changes against
https://cloud.skytap.com/templates

Is this something that needs done right away? I don't actually know how to review it.

@binford2k I don't know which classes would need these templates. From previous conversations, it sounded like there wasn't anything upcoming that would rely on Skytap, but that it could be worth having set up prior to PuppetConf in case we wanted to have it available as an alternative.


[Testerina] Mismatch in Jacoco line coverage and the Test coverage report generated

Description:
For the observability feature improvement i carried out BIR level instrumentation, while testing the feature it was observed that there is a mismatch in the line coverage data produced with Jacoco coverage report and the Testerina coverage report generated.
Build fail error
testerina-intg-test-suite > testerina-intg-tests > org.ballerinalang.testerina.test.TestReportTest > testWithCoverage FAILED
    java.lang.AssertionError: expected [[]] but found [[22,23,24,26,29,30,36,37]]
        at org.testng.Assert.fail(Assert.java:96)
        at org.testng.Assert.failNotEquals(Assert.java:776)
        at org.testng.Assert.assertEqualsImpl(Assert.java:137)
        at org.testng.Assert.assertEquals(Assert.java:118)
        at org.testng.Assert.assertEquals(Assert.java:442)
        at org.ballerinalang.testerina.test.TestReportTest.validateCoverage(TestReportTest.java:212)
        at org.ballerinalang.testerina.test.TestReportTest.testWithCoverage(TestReportTest.java:69)

Jacoco coverage report

Steps to reproduce:
Affected Versions:
slp7
OS, DB, other environment details and versions:
Related Issues (optional):
I have temporally disabled the testWithCoverage test in the #27356 PR
Suggested Labels (optional):
Component/Testerina, Team/TestFramework
Suggested Assignees (optional):
@azinneera

PR (#27779) with disabled testWithCoverage test was merged to master

PR (#27779) with disabled testWithCoverage test was merged to master


Add notes for Radicle P2P on hypercore

This adds a document that provides a rough overview of how Radicle P2P can work on top of hypercore. (hypercore is a library that is part of the Dat stack.)
Preview
Todo

[ ] Addressing of entries in a multi-writer scenario
[ ] Properties of simple multi-writer consensus algorithm
[ ] Add details on replication and offline use
[ ] Explain how we would implement this

General question: how "deep" would we need to integrate? Ie. do we need to use JS APIs to do anything useful, or could we also just shell out to some Dat executable?

General question: how "deep" would we need to integrate? Ie. do we need to use JS APIs to do anything useful, or could we also just shell out to some Dat executable?

I added an “Implementation” section addressing this. TL;DR we need to build a JavaScript node.

Some notes regarding the multi-writer chains:

We implement a multi-writer chain by using set of feeds owned by different users.

How is this set defined/determined? What's stopping another feed claiming membership to this set and linking to previous entries?

To derive a Radicle chain from a set of feeds we need an algorithm that takes the heads of all the feeds of a multi-writer chain and outputs either a chain of Radicle expressions or signals that the chain is invalid.

Since the entries form a DAG, any topological sorting might be considered valid.

How is this set defined/determined? What's stopping another feed claiming membership to this set and linking to previous entries?

One thing we talked about is the first entry in a feed stating what all the (initial) writers are. That would also help with discovery.

Every entry in a feed now determines a linked list of Radicle expression (assuming the feed entries and links are well formed and valid) and thus a Radicle chain.

While it's true that every entry determines a chain (by going back up to the root), the general structure is a tree. How do we avoid branches?

How is this set defined/determined? What's stopping another feed claiming membership to this set and linking to previous entries?

One thing we talked about is the first entry in a feed stating what all the (initial) writers are. That would also help with discovery.

Don't we ultimately want multiwriter permissions to be modifiable via radicle eval updates in order to generalize the chain permissions example given in the radicle whitepaper?

Don't we ultimately want multiwriter permissions to be modifiable via radicle eval updates in order to generalize the chain permissions example given in the radicle whitepaper?

Yes, we want that. But this is impossible unless the storage system is able to understand radicle because it needs to authenticate it. I think the only chance we have to make this work is a block chain with validators evaluating radicle.

Yes, we want that. But this is impossible unless the storage system is able to understand radicle because it needs to authenticate it. I think the only chance we have to make this work is a block chain with validators evaluating radicle.

Can you explain this a bit? I'd have thought that if we have the original expressions list the initial writers, it'd simply be a matter of any of those writers changing that original set, no? (Whether authentication happens at the storage layer or at the radicle layer.)

Yes, we want that. But this is impossible unless the storage system is able to understand radicle because it needs to authenticate it. I think the only chance we have to make this work is a block chain with validators evaluating radicle.

Can you explain this a bit? I'd have thought that if we have the original expressions list the initial writers, it'd simply be a matter of any of those writers changing that original set, no? (Whether authentication happens at the storage layer or at the radicle layer.)

What you are suggesting unfortunately does not work. If the storage system does not know about Radicle it cannot decide whether to accept a Radicle expression based on the current state of the chain. Conversely consumers will be unable to verify that a user has permission to write to a chain without evaluating the Radicle expressions on the chain.

By "blockchain" you don't mean a BFT system, just that everyone is running their own node to check if the signatures are valid before adding to the chain, correct?

Yes.

If a new chain is instantiated with an authorized set of writers, it seems like any of those writers should be able to change the key set. There are some interesting design choices around when original writers are removed, or whether we eventually want to allow forward encryption of messages, but I think we could standardize how those cases are handled, no?

This is an excellent point and we should definitely discuss. At the moment I don’t think we have enough about this, though. So we should postpone this discussion until an actual need arises.

What you are suggesting unfortunately does not work. If the storage system does not know about Radicle it cannot decide whether to accept a Radicle expression based on the current state of the chain. Conversely consumers will be unable to verify that a user has permission to write to a chain without evaluating the Radicle expressions on the chain.

Hm, my mental model was precisely that: the storage system doesn't know what to accept - only people consuming a chain do (by running the chain). Isn't that kind of a) unavoidable, and b) completely fine?

Since we decided to use IPFS after all I have added a paragraph that marks this document as purely informational. I would nevertheless like to merge it so we don’t loose it. Could somebody mark this as reviewed?
We can continue the open discussions within the scope of the IPFS proposal.


standardized headings and syntax for SNP distance vignette

Do you want to include in this renaming the vignette so it better complies with our suggested naming convention?

Do you want to include in this renaming the vignette so it better complies with our suggested naming convention?

Yes, but again, this vignette requires @smanel's approval.

Since this is only minor changes bringing the vignette closer to compliance with your own guidelines, I'll take the liberty to merge prior to review by @smanel.


[proposal] Split fields from models section?

What do you think about splitting fields from the models section?
Maybe a model subsection could be a good solution.
If you agree I can submit a PR.

That sounds like an excellent idea.

Will do, will do ... :)

Not sure why the bot closed this as completed but they still seem together.

Semi-fixed for real. We might have be off a field or two.


Add GraphQL file association

Adds the file association for GraphQL files to allow users to double-click to open a file.
Tested on macOS High Sierra
Closes #50

 Thank you for your submission, we really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.

There should be an option in the setup as well if you're doing file associations. I want to open .graphql files in my editor, not in the playground by default.

@kbrandwijk Thanks for the suggestion! 👍 Isn't that part of the operating system? On macOS I can define the default application for opening a specific file type. As far as I know the file association just gives you the opportunity to open the file in the application, but doesn't require it if you set a different application as the default app.

@slashmo Yes, you can define the default operation in the OS. But it's kind of a best practice (at least on Windows) to not overwrite a user's default application without asking (usually during setup, or initial startup for apps without a setup).

@kbrandwijk That's exactly my point: Does it really overwrite your exciting default? Or does it just give you the option to overwrite it if you want to? But I agree that it would be nice if you could switch the default while setting up the app in case you want to use GraphQL Playground as the default app.

On Windows, it would overwrite the existing default.

Ah, okay. Didn't know that. Thanks for the heads up! 👍 I'll look into that.

That's a good point @kbrandwijk. We should test how this affects Windows users. I'm merging this for now, so @slashmo can continue from there with the missing file opening logic (we still need to inject the context). But before we release this, we have to test it on Windows.

@timsuchanek I thought that was the whole idea of branching...


added two options to manage partition field names and types during th…

What is the purpose of the pull request
This is a PoC to demonstrate a possible way of defining a partition field name during the hudi table read operation. This is in response to https://issues.apache.org/jira/browse/HUDI-4430
Brief change log
Added two options:

Force struct string type for the partition field
User custom partition field names for the partition fields.

Verify this pull request
This pull request is a trivial rework / code cleanup without any test coverage.
Committer checklist

[ ] Has a corresponding JIRA in PR title & commit

[ ] Commit message is descriptive of the change

[ ] CI is green

[ ] Necessary doc changes done or have another open PR

[ ] For large changes, please consider breaking it into sub-tasks under an umbrella JIRA.

I am not an expert in scala guys, so that code may need to be cleaned up or completely changed to be ok.

HUDI-7902 solves the problem with table config changes in a general way, see #11638 and #11710.


Another feature request

Hi Enzo
First of all, I would like to point out that your integration works flawlessly.
I was wondering if you could extend the integration to support more devices (TVs, lights...) as far as you can control more devices in the Tuya app
Thanks in advance
Alejandro from Spain

Hi, thank you for your feedback.
Unfortunately, this integration is not intended to be extended to other devices... also because, as the name itself says, this integration only concerns air conditioning and it would not be correct to integrate other devices.
Bye


Support for hashed Backbone pages?

This URL configuration ../releases/0.0.9/#account-opening/ is producing no images. Any ideas?

Hmm no not really.
Is the site live somewhere so that I can have a look?


v1.2.6

Bug Fixes

Remove double quotes in sitename
Remove a blank row in manual table

Such things will never happen again... I promise.


[Not a Bug] URLs serialization in vcard 3.0 only serialize the first URL

Describe the bug
URLs serialization only serialize the first URL, other URLs are ignored
To Reproduce
Please check this fiddle:
https://dotnetfiddle.net/56fnoa
Expected behavior
All URLs should be serialized. As in the example, a line group1.URL:http://facebook.com should be in the result
Desktop (please complete the following information):

OS: Windows 10
.NET Version: NET 6.0

Additional context
Any reasons why in vcard 4.0 serialization code, you are using BuildPropertyCollection for the URLs (that serialize to the correct result), but in 3.0 and 2.1 you are using BuildPrefProperty that only serialize the first URL it found ?

Thanks for posting the issue. vCard 3.0 supports the most properties by default as singletons. The "Formal Grammar" of RFC 2426,  page 34 says that in the URL property no parameters are allowed. A vCard client that that supports only a single URL couldn't choose which one to pick.
The library picks the one with the highest preference (http://google.com in your example) and writes it to the VCF file.
The best workaround would be to use vCard 4.0. Alternatively VCard.InstantMessengerHandles might be your friend: It writes the instant messenger URLs by default as IMPP properties to the vCard 3.0. With setting the option VcfOptions.WriteNonStandardProperties you could also use VCard.NonStandardProperties in order to write additional X-URL properties to the vCard.
Multiple URL properties in vCard 3.0 doesn't seem to be widely supported by established E-Mail clients. Hope the tipps could help you and would close this issue by now. Should I be wrong feel free to open another one.


MS MARCO Passage Retrieval - Subset Replication

Re-Ranking with monoBERT
I've got the same results
precision@1 0.27619
recall@3    0.42698
recall@50   0.81746
recall@1000 0.84762
mrr         0.4109
mrr@10      0.40268

Re-Ranking with monoT5
I've got approximately the same results
precision@1 0.27619
recall@3    0.4746
recall@50   0.80635
recall@1000 0.84762
mrr         0.39734
mrr@10      0.38983

Issues
The current commands in the doc give the following error (caused by #127):
  File "pygaggle/pygaggle/run/evaluate_passage_ranker.py", line 208, in <module>
    main()
  File "pygaggle/pygaggle/run/evaluate_passage_ranker.py", line 178, in main
    options = PassageRankingEvaluationOptions(**vars(args))
  File ".../.../pydantic/main.py", line 338, in __init__
    raise validation_error
pydantic.error_wrappers.ValidationError: 1 validation error for PassageRankingEvaluationOptions
duo_model
  none is not an allowed value (type=type_error.none.not_allowed)

I worked around this by specifying the duo_model as empty string

Can you check if the error pops up now without the duo_model specified?

Can you check if the error pops up now without the duo_model specified?

It's all fixed now.

It's all fixed now.

Awesome, merging!

Awesome, merging!


Human-in-the-loop planning for orchestrator, and after-action analysis.

What feature would you like to be added?
Suggestion:

on project/task executions... make Orcehstrator plans moderated/editable in interface by human in the loop.
On completion... Have the orchestator perform an afteraction analysis, looking to improve the 2a) prompt, 2b) the plan and 2c) product,
convert this summarize where possible, abstract into a recipe/blueprint with configurable elements.

Why is this needed?

assists with pair programming/research/planning/and guidance

sets up for editable assets, perhaps with versioning
product outputs can later become assets

iteration enhancement,

roll up of a plan or workflow into a package/step, with in built process improvement

and repeatability enhancements, save of recipes- shareable

catalog/search

@sean-josiah7 thanks for the issue. They are both great suggestions. Could you break the Issue into two since they are separate issues?
Would you like to join our office hours: https://aka.ms/autogen-officehour and our discord: https:/aka.ms/autogen-discord for more discussion? Would like to learn about your scenarios.


[enhance] Allow multiple StorageClass creation

Allow multiple storage classes to be created from a single template by
specifying them in a variable list. Also makes it so you can override the
default storage class name.

Need to fix some static stuff in the trigger that actually loads the StorageClasses into memory.


Remove hogan lib to remove unsafe eval error

See https://github.com/algolia/docsearch/pull/773

Is this PR breaking for the users?

It isn't! I tried all previous ways of doing things + all templates suggestions

bors merge


Add allowMissing kwarg to loadOperator

Description
Adds kwarg to loadOperator to support more easily loading databases that have parameters not defined within the current ARMI version.  This is helpful for backward compatibility when post-processing a database that had a param that was removed from ARMI .

Checklist

[ ] Tests have been added/updated to verify that the new or changed code works.
[x] Docstrings were included and updated as necessary
[x] The code is understandable and maintainable to people beyond the author
[x] There is no commented out code in this PR.

If user exposed functionality was added/changed:

[ ] Documentation added/updated in the doc folder.
[ ] New or updated dependencies have been added to setup.py.

I'll wait for the unit tests to finish running before approving.
But this looks like a very reasonable change.
It might be nice to have a unit test that flexes this for allowMissing" = TrueandFalse.  There is already one unit test that uses loadOperator()`:
https://github.com/terrapower/armi/blob/b1c18bd2ccfc4898634c5bc771ccc9233fa4ecfc/armi/tests/test_lwrInputs.py#L91-L95

@john-science, Yes, the main reason i didn't add a test is that to trully test the feature I would need a database that had params that don't exist in the framework. I dont really want to commit another database to the framework, and dont want to write a test that doesn't actually test the feature. Open to feedback though.

@onufer Is it true that we need a whole need database to test this?
Couldn't we just create a new test YAML file that lists the parameters we need, to exclude on of the parameters in the default test database?
Sorry, maybe I'm missing something.

@john-science, you can test the method signature but not the feature.


func init fails

When running through the Azure functions quick start guide, running the func init ProjectName command fails with the following error:
➜ func init SuzebotPoints
events.js:187
      throw er; // Unhandled 'error' event
      ^

Error: spawn /Users/krubenok/.nvm/versions/node/v12.11.1/lib/node_modules/azure
-functions-core-tools/bin/func EACCES
    at Process.ChildProcess._handle.onexit (internal/child_process.js:264:19)
    at onErrorNT (internal/child_process.js:456:16)
    at processTicksAndRejections (internal/process/task_queues.js:80:21)
Emitted 'error' event on ChildProcess instance at:
    at Process.ChildProcess._handle.onexit (internal/child_process.js:270:12)
    at onErrorNT (internal/child_process.js:456:16)
    at processTicksAndRejections (internal/process/task_queues.js:80:21) {
  errno: 'EACCES',
  code: 'EACCES',
  syscall: 'spawn /Users/krubenok/.nvm/versions/node/v12.11.1/lib/node_modules/
azure-functions-core-tools/bin/func',
  path: '/Users/krubenok/.nvm/versions/node/v12.11.1/lib/node_modules/azure-fun
ctions-core-tools/bin/func',
  spawnargs: [ 'init', 'SuzebotPoints' ]
}

However, @jimbobbennett suggested creating the project via the VS Code extension which did work as expected. System is running macOS 10.15 with Python 3.6.9. Happy to provide more details as needed.
cc: @jimbobbennett

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 4a509bdc-f8b8-8488-7ab4-2c03cae6bfb5
Version Independent ID: 3174a893-394c-c622-6c96-0b89955edfb5
Content: Create an HTTP triggered function in Azure
Content Source: articles/azure-functions/functions-create-first-function-python.md
Service: azure-functions
GitHub Login: @ggailey777
Microsoft Alias: glenga

Update. There was an incomplete installation of the npm package that was taking precedence over the version that I brew installed for some reason. Running npm uninstall fixed the issue.

For anyone else googling this issue. I was having a very similar error with a fresh install and solved it. Solution Below. This was the error just trying to run func in the terminal on MacOS. (node 12)
func
events.js:291
      throw er; // Unhandled 'error' event
      ^

Error: spawn /Users/matt/.nvm/versions/node/v12.19.0/lib/node_modules/azure-functions-core-tools/bin/func EACCES
    at Process.ChildProcess._handle.onexit (internal/child_process.js:267:19)
    at onErrorNT (internal/child_process.js:469:16)
    at processTicksAndRejections (internal/process/task_queues.js:84:21)
Emitted 'error' event on ChildProcess instance at:
    at Process.ChildProcess._handle.onexit (internal/child_process.js:273:12)
    at onErrorNT (internal/child_process.js:469:16)
    at processTicksAndRejections (internal/process/task_queues.js:84:21) {
  errno: 'EACCES',
  code: 'EACCES',
  syscall: 'spawn /Users/matt/.nvm/versions/node/v12.19.0/lib/node_modules/azure-functions-core-tools/bin/func',
  path: '/Users/matt/.nvm/versions/node/v12.19.0/lib/node_modules/azure-functions-core-tools/bin/func',
  spawnargs: []
}

Solution
I had to run npm i -g azure-functions-core-tools@3 --unsafe-perm true AFTER brew install azure-functions-core-tools@3 and brew install azure-cli.
I had initially run the npm i command first. All I had to do was run it again after the homebrew commends, and it started working fine.

In hindsight (one year later and now having much more experience), this issue was because I my installation was incomplete/broken. Uninstalling and reinstalling from brew was sufficient to fix this.


Rapid memory leak in vips_text() - if autofit and not cached

Details
If text() is called with height and width params (i.e. box autofit), and the text is different for each call (i.e. the image is not cached) — it very rapidly leaks memory on every loop, until a crash.
This is likely not specific to Lua, but I only have access to it atm.
Reproduction
-- Shortest working example:
local vips = require('vips')
for i = 1, 1000 do -- unique text
    vips.Image.text(tostring(i) .. 'see mem usage', { width = 100, height = 100 })
end

or
local vips = require('vips')
vips.cache_set_max(0) -- emulate unique
for i = 1, 1000 do
    vips.Image.text('see mem usage', { width = 100, height = 100 })
end

Location
text.c → vips_text_autofit() → likely vips_text_get_extents() → likely pango_layout_get_pixel_extents() unreffing. Can't tell more due to being on a toaster :(
P.S.
As a new libvips adept I can't thank @jcupitt enough for the bindings, guides, examples and overall support <3.

Hi @keiviv,
Thanks for the report. I tried this:
local vips = require('vips')
vips.cache_set_max(0)
for i = 1, 1000 do
    vips.Image.text(tostring(i) .. 'see mem usage', { width = 100, height = 100 })
end

And I see a fairly steady ~60mb of memory used by luajit. It bumps up and down a bit with GC, but it doesn't go over about 80mb.
Without the cache_set_max, you're right, you'll see high memory use. libvips will cache the calls to text, and each call is generating a bitmap, so it'll cache the bitmaps too. If you turn the cache down to 10 (for example) you should see sane memory use but still have the advantages of the operation cache.
Some old versions of libvips did have a leak in autofit, I think, so it might be worth checking which library version you are using.

(for mem use I watched RES in top).

This is weird — this exact code you've don't go over 80Mb goes to ~350Mb on my platform until it crashes every time.
Platform: W10x64 LTSB, LuaJIT 2.1 Resty fork, Vips 8.8 mozjpeg.
Any chance this might be platform-specific? There is a comment in text.c:

This does not unref cleanly on many platforms, so we will leak horribly
unless we reuse it. Sadly this means vips_text() needs to use a lock
internally to single-thread text rendering.

Wondering if this might have something to do with it, or I'm just cursed specifically, for my many sins.

Could you try libvips v8.9.2? Perhaps commit https://github.com/libvips/libvips/commit/c84a43f27765066b78c9c383489fb68e10d67d96 fixes this.

Yup, just installed everything latest and vanilla, and the no leaks after multiple tests. So it's likely an older version issue, even though I can't see anything related in the patch notes between 8.8 and 8.9.2.
Guess the issue is closed, and the moral is — update first, and only then trouble John with reports.

Ah could be. I was testing on Ubuntu.
Text rendering is really complex and interacts with a revolting mix of cross-platform and platform libraries. The problem could be any any one of about 10 packages that libvips pulls in for text :(

... and you should try with current stable, as Kleis says.

I did, and closed the issue. Thank you, Kleis and everyone for such a wonderful library, and the fixes.

I'll try to update https://github.com/libvips/build-win64-mxe/issues/8 to the latest libvips version (v8.9.2). Note that I do not officially support and test this, it's done on a best effort basis.

I've updated the 64-bit libvips Windows binaries built with MozJPEG within that issue. @keiviv Let me know if that works for you.
Note that these binaries were built against the drop-vista-xp which could contain incompatibilities due to a major MinGW-w64 and GCC update (it will need some further testing/benchmarking before this is included in master). As the branch name says, Windows XP and Vista is also not supported anymore (I doubt if this has worked in the past, since I only test these binaries on Windows 10).
As an aside,
Hopefully when libjpeg-turbo supports the jpeg_c_int_param_supported and jpeg_c_bool_param_supported functions (i.e. what is ifdef'd with HAVE_JPEG_EXT_PARAMS) one should just able to replace the libjpeg-62.dll with the MozJPEG provided DLL. https://libjpeg-turbo.org/About/Mozjpeg is also relevant here.

Many thanks, @kleisauke — it all works without any issues on W10 (like you, I only cant test it on that). I did a rather big test (50k unique images with processing and writes in a single loop), both Vips and MozJPEG worked without a hiccup.
It's very kind of you to build and share the MozJPEG builds — due to my circumstances it would take me ages to build one, even via docker, and I'm sure I'm not the only one. Have you ever thought of incorporating it into the main build cycle — as a variant of the web version of the distribution? MozJPEG is the most used jpeg optimizer, so it would make sense for a web-related build.
As to the original issue itself — as you've guessed right away it was caused by that Pango unref bug, and after more testing — can confirm that only by that, and nothing else — so my report was a 100% duplicate. I thought it was unique because the fix was not mentioned in the changelog — I did a Ctrl-F for "text" before reporting, and there was no mention of it after v.8.8  (earliest was a v.8.7.2 fix). At least I've guessed the bug location within text.c close enough, and code was narrow enough for a smart person to guess the cause quickly. Thanks again for that.

The changelog for minor releases only lists substantial changes -- it'd be huge if we had everything in there.
The git log has it:
$ git log --grep text
commit 664796acab0d3e08e41be16e37c6161fb387d823
Author: John Cupitt<EMAIL_ADDRESS>Date:   Thu Dec 26 14:11:15 2019 +0000

    relax text test render threshold

    so we pass on win as well, see https://github.com/libvips/libvips/commit/981ffe752b3d043d3b1eef48bb6b250da99f958c#r36581177

commit c84a43f27765066b78c9c383489fb68e10d67d96
Author: John Cupitt<EMAIL_ADDRESS>Date:   Sat Dec 21 12:56:09 2019 +0000

    fix memleak in vips_text()

    We were not unreffing PangoLayout. Thank you uint128!

    See https://github.com/libvips/libvips/issues/1508

...

Yep, I've found it after the fact, and not blaming anyone for not mentioning it, of course.
Not sure if it was minor or not — it quite literally made autofit unusable — so it's major. But text() is just one of many Vips functions — so it's... not major. In any case — thank you for being Holmes anyway, took you just a minute to solve this crime.
Btw — it was a crime, and a horrible one. It was crashing with the most unhelpful and unrelated message — complaining that Pango cannot load Verdana.ttf from Windows/Fonts. Took me hours to stop wondering why it was trying to load it (my font param was different), why it cannot load it if it so bloody wants it (I have it there), if there is something wrong in numerous lines of code I wrote before testing it on a big set (it didn't crash on short test-as-you-code loops), if there is God (an is it a DJ), and only after that — what's in text.c actually.
I respect Vips so much it was absolutely the last one to blame, and after hours of staring at own code I could only Ctrl+F the changelog, hence the duplicate.
Thank you again <3

I wasn't being defensive, just saying that the changelog doesn't have everything. I'm glad your code is now working!

Have you ever thought of incorporating it into the main build cycle — as a variant of the web version of the distribution? MozJPEG is the most used jpeg optimizer, so it would make sense for a web-related build.

I'm not considering including it in the main build cycle, as MozJPEG is at the expense of performance. It may be useful in some situations, but in most cases libjpeg-turbo fits better to users' needs.
Users are always free to build their own binaries with MozJPEG included, it should be straightforward.

For general use, Turbo beats Moz, but specifically for web nothing out there beats Moz — despite what the Turbo devs said in their statement about merging with Moz.
Moz is a de-facto standard for the web — everyone (except Google, who has its own (slower) lib called Guetzli) uses it.
I myself tried to switch to something better (I deal with tens on thousands of images, so every millisecond is precious) — but each time after most thorough testing (every possible option combination, even own quantization tables, etc) I get back to Moz. There is a reason Mozilla is not just using Turbo — and it's, despite what Turbo said — a very valid reason — the size/time/quality ratio — that nothing else beats.
I not expecting to change your mind, of course, just sharing the perspective. I think it would make sense to have both the current 'web' distro, and maybe a 'web-optimized' one if it could be automated — but your perspective is, of course, more important.
I'm grateful for your Moz binaries, huge thanks for sharing, even though you don't have to do it.


Change Lustre boot disk size

Change Lustre boot disk size to 20 GB following CentOS base image size change

Code has been rebased on master and pull request updated accordingly

Thanks Maxime!


Android Application

I'm thinking about simple Android application.
We can pack armv6-compatible ELF binary and just run it inside for PoC.
Your thoughts?

Not much progress, but I started to work on Android app, because friends asked about it: https://github.com/FPavlovskiy/FreedomTool

I would run it on my phones too, but imo it would be easier to see the releases here than to follow another repo. Also for every release of the app there should ideally be a release of an android app, right? so, it would be logical too

But imo it would be easier to see the releases here than to follow another repo. Also for every release of the app there should ideally be a release of an android app, right? so, it would be logical too.

I think that it makes sense to download arm binary in the Android app and check for updates as well, so in that case you don't need to updated an Android app frequently.

The way I see it: you download android app once (or at least less frequently) and maintainer of that app regularly check for compatibility between the app and latest version of db1000n and just updates some centralized manifest if everything works well making the android app fetch the new "attacking binary"

@FPavlovskiy maybe this discussion could help https://github.com/Arriven/db1000n/discussions/465

Not much progress, but I started to work on Android app, because friends asked about it: https://github.com/FPavlovskiy/Dzida

I use termux and arm version of db1000n on android devices

I'm intending to look into making an android app, but one which even a grandma could use - using termux is imo too complicated for non technically astute folks.
I would prefer to make a simple wrapper which would run dn100n and just show an emulated console with messages. Guys in the referenced discussion had some success with fyne, but I would prefer minimal external components, like maybe go mobile instead.

@roman-kruglov , I managed to build fyne app and contacted code owner. Probably it is quickest solution and we will be able to merge it to upstream. @arriven what do you think? It shouldn't affect CI pipeline and codebase a lot.

@roman-kruglov , I managed to build fyne app from https://github.com/Arriven/db1000n/discussions/465 and contacted code owner. Probably it is quickest solution and we will be able to merge it to upstream. @arriven what do you think? It shouldn't affect CI pipeline and codebase a lot.

I think it's better to have it as a different repo and I can leave a reference to it in the main repo. The benefits of this approach are that you wouldn't have to pass all the maintenance via myself and also you could have different release timeline from the main repo (similar to how db1000nX100 author has an option to auto update to latest compatible version that he manages)

Ok, in this case it makes sense to use db1000n as submodule, but not as a monorepo to simplify patching

I was just working on it for several days. Had to use fyne too, no support for even a minimal GUI in gomobile. But my findings are - I can't embed a terminal emulator written in fyne into db100n code outside - it has to be called from the code. Good news is that I managed to add only one file and just capture / redirect all std streams to the terminal emulator without any modifications of any other code.
I probably waited for too long to publish this, I guess I'll create a draft pr - at least to share the approach and discuss stuff there.

here it goes https://github.com/arriven/db1000n/pull/547

@roman-kruglov it was my plan as well.

Fork an OSS terminal emulator
Add code to download armv7 or armv8 db1000n binary
Run elf binary on the app start

But then I started to investigate fyne solution because it looks like a ready one.


Change tutorial images to count from 1

Changed tutorial image counter to start with 1 to align with alt text we are adding

closing as we don't see this as important anymore since the figure alt text would not match with this numbering due to shared images and eventual image naming.


good job

works well, great job

Thank you !

Now it's dedicated to public domain, feel free to update license
This repo might get updated again in the future


Missing required-to-read book folder for java Developer

HI @dubesar
As  I am also JAVA developer and I  learned it from various wherewithal, like from YouTube, Blogs, Java Documentation  and so on.
But in the way , fortunately I got books which helped me in my software development journey in following ways:-
1.   Writing clean code
2.   Effective usage of  OOPS concept
3.   Making easy-to-understand documentation for the projects.
So,  I want to contribute  some books to your open source project to add feathers to it and making it more interesting and resourceful.
**I request you to assign this issue to me.**

I want to work on this issue.
Please assign me.

Assigned.


Add CLA Manager on project EasyCLA page

Summary
Any user associated with a company will be taken to this page after they switch to member console, select project from left navigation and EasyCLA from top navigation.
Here is the link to wireframe for the project page for EasyCLA.

Step 3.1 in PRD
https://confluence.linuxfoundation.org/display/PROD/Project+Dashboard+for+EasyCLA
User enters the First Name, Last Name and Email Address of the person whom user wants to add as a CLA Manager
All the backend operations will be encapsulated in EasyCLA API call. See PRD for more details.
Acceptance Criteria

[ ] Design Changes Required ?--> Not Applicable (N/A)
[ ] Unit Testing Complete

[ ] Unit Testing complete for backend API
[ ] Unit Testing complete for UI

[ ] Functional Testing Complete

[ ] Functional Testing complete for backend API
[ ] Functional Testing complete for UI

[ ] Integration Testing Complete

[ ] Integration Testing complete for backend API and UI
[ ] Integration Testing complete end to end dev deployment

[ ] Documentation Updated
[ ] Any Open Sev. 1 bug(s)

@wanyaland
Tried below scenarios and always 403/401 is displayed
Could you please let me know what values(sfid's or id's from CLA DB) needs to be provided for projectid and companyid. Also could you please share the acs details for the endpoints

SL.No
Test Data
Response

1
Tried using sfid's for project and company 1. User(nirupamav) has project-manager role and has access to the project a0941000002wBz4AAE 2. User has lf-operations role 3. Company from<PHONE_NUMBER>Te1DWAAZ has signed for CLA group Cello_CNCF in a0941000002wBz4AAE https://api-gw.dev.platform.linuxfoundation.org/cla-service/v4/company/0014100000Te1DWAAZ/project/a0941000002wBz4AAE/cla-manager
401 unauthenticated for invalid credentials

2
Tried using id's from CLA DB for project and company 1. User(nirupamav) has project-manager role and has access to the project 67e9b2e1-44fc-4b67-9712-6610e80f507a 2. User has lf-operations role 3. Company from 4d9c760b-f5b3-4fe6-89b8-f7d9bd4d965c has signed for CLA group Cello_CNCF in 67e9b2e1-44fc-4b67-9712-6610e80f507a https://api-gw.dev.platform.linuxfoundation.org/cla-service/v4/company/4d9c760b-f5b3-4fe6-89b8-f7d9bd4d965c/project/67e9b2e1-44fc-4b67-9712-6610e80f507a/cla-manager
401 unauthenticated for invalid credentials

3
Tried using sfid's for project and company 1. User(clamanager) has user role 2. User has created company<PHONE_NUMBER>Te1DWAAZ and signed CLA for project  a0941000002wBz4AAE https://api-gw.dev.platform.linuxfoundation.org/cla-service/v4/company/0014100000Te1DWAAZ/project/a0941000002wBz4AAE/cla-manager
403

4
Tried using id's from CLA DB for project and company 1. User(clamanager) has user role 2. User has created company 4d9c760b-f5b3-4fe6-89b8-f7d9bd4d965c  and signed CLA for project  67e9b2e1-44fc-4b67-9712-6610e80f507a https://api-gw.dev.platform.linuxfoundation.org/cla-service/v4/company/4d9c760b-f5b3-4fe6-89b8-f7d9bd4d965c/project/67e9b2e1-44fc-4b67-9712-6610e80f507a/cla-manager
403

Tested and observed below issues
Add CLA Manager Issues

Able to Add CLA Manager with firstName and lastName having only spaces

Appropriate error message is not returned when trying to add duplicate CLA Manager record or when trying to add CLA Manager with same emailid and different firstName and lastName

name is not returned in response after adding CLA Manager. Is name=firstName+lastName? if not are are we storing the firstName and lastName and using these values instead of the firstName and lastName from user service

As per PRD when user does not exist, backend will send email to user to created lfid, but endpoint returns 400 saying user does not exist. Also email is not sent to user, asking the user to create lfid. Should this be handled at API level or is it handled from frontend

Appropriate error message is not returned when firstName and lastName fields are missing in the payload

Appropriate error message is not returned when data is not provided for firstName and lastName fields

500 internal server is returned when trying to add CLA Manager for a different projectsfid and clagroupd combination. clagroupid provided belongs other projectsfid
https://api-gw.dev.platform.linuxfoundation.org/cla-service/v4/company/0014100000Te1DWAAZ/project/a0941000002wBz4AAE/claGroup/3564e0ad-5da9-4164-a158-1234a9845f75/cla-manager
500 internal server is returned when trying to add CLA Manager for CLA group of projectsfid for which there is no CCLA
https://api-gw.dev.platform.linuxfoundation.org/cla-service/v4/company/0014100000Te1DWAAZ/project/a0941000002wBz4AAE/claGroup/f8022c61-7782-4954-a50f-c957b457cd30/cla-manager
500 internal server error is returned when trying to add CLA Manager with invalid cla group id
https://api-gw.dev.platform.linuxfoundation.org/cla-service/v4/company/0014100000Te1DWAAZ/project/a0941000002wBz4AAE/claGroup/f8022c61-7782-4954-a50f-c957b4/cla-manager

Delete CLA Manager Issues
Delete CLA Manager is not working. 403 is returned for CLA Manager role with appropriate roles scope.
Observed below issues in ACS policies. Not sure if 403 is returned due to this issue
Path in ACS policies
/v4/company//project//claGroup//cla-manager/
Path in API docs
companySF/{companySFID}/projectSF/{projectSFID}/claGroup/{projectID}/cla-manager/{userLFID}

@wanyaland
I am still able to reproduce the issues that I reported above. Delete is also not working at all.

Delete is working now but other issues still exist. I have updated few other issues in the above issue list.

Tested and observed below issues

Observed that for few users even if user exists in user service and as well as cla_dev_users, still 400 is returned and email to create user lfid is sent
https://api-gw.dev.platform.linuxfoundation.org/cla-service/v4/company/0014100000Te1DWAAZ/project/a092M00001IV4PgQAL/claGroup/3564e0ad-5da9-4164-a158-1234a9845f75/cla-manager?

Appropriate error message is not returned when trying to add duplicate CLA Manager record or when trying to add CLA Manager with same emailid and different firstName and lastName

When firstname and lastname is different from user service, then 400 is returned with message as user not found, and email is sent to create lfid, eventhough user already exists with that emailid

When space is given at the end of the fields 400 below error message is displayed. Not sure if sapce trim has to be handled at API level or UI level. Adding the issue here for tracking purpose

Closed by mistake reopening the ticket

Retested and observed below issues
1. Able to add a user who is not associated with any company (just user role) as CLA Manager to the project
User with onlu user role

Add CLA Manager post successful from API

User with only user role is assigned with CLA Manager role for the project

2. Observed that name provided in the API is not fetched in the API. Not sure about the significance of firstname and lastname provided in the API payload
Example1

Example2

3. The link to create LFID is still pointing to https://identity.linuxfoundation.org/ instead of myprofile link. Issue is tracked in Bug #1304

4. Email of the CLA Manager is not displayed in the email sent o create LFID

5. Only one CLA Manager info is displayed in the email sent to create LFID even if there are multiple CLA Managers

@nirupamav clarification on 2 issues:-
Issue 2. Significance of firstname and lastname comes in when a user has no LFID and the details are used in sending an email .
Issue 5. The CLA Manager info that is used is the manager that was adding the new CLA Manager and its alerting prospective manager to alert him when creation of an LFID is done.
Shall work on the other issues

Verified and observed that Issue1, Issue3 and Issue5 are fixed. However observed below issues
1. When clicked on the Accept Invite link in the email, user is redirected to 404 page and immediately LFX login page is displayed

2. Invite Email format is different from other emails. Also Accept Invite link should be inside the email body and not after Thanks note

Previous email format

3. Appropriate error message is not displayed when invalid email format is provided
Example1

Example2

All the above mentioned are still reproducible
1. Observed that this time User is redirected to page to to click on Accept the Invitation. However before the user can click that button, user is redirected to Login page

**2. Invite Email format is different from other emails. Also Accept Invite link should be inside the email body and not after Thanks note. **
3. Email format is invalid but error message in the response says that user does not have LFID

Invite Flow ticket in IAM
https://jira.linuxfoundation.org/browse/IAM-933

@nirumpav > Can we close this and reopen one for invite flow ?

Not able to validate Issue3 and invite flow due to bugs #1564 and #1560. Once they are fixed will validate the flows and if reproducible will log another bug
Except for these issues all other issues are fixed and hence moving the ticket to QA Done


Introduce Poetry as the build & dependency management tool

Description
Replaces the existing pip setup with Poetry for building and dependency management for nv-ingest. This closes #57
Checklist

[x] I am familiar with the Contributing Guidelines.
[x] New or existing tests cover these changes.
[ ] The documentation is up to date with these changes.

@sosahi do we even still want to carry on with this PR?

This PR has been superseded by several other PRs and is no longer needed. We have also decided to use Conda instead of Poetry since certain dependencies require Conda anyway.