fix private note code paste issue

Details

Fixed Issues

$ https://github.com/Expensify/App/issues/29806
PROPOSAL: https://github.com/Expensify/App/issues/29806#issuecomment-1766975028
Tests

Open the app
Open any user report
Send 3 backtick code block eg: Hii
Hover and click copy to clipboard
Click on header to open user details
Click on privates notes-> my notes
Paste and verify that code block is pasted (Hii) not without the style ('Hii')

[x] Verify that no errors appear in the JS console

Offline tests

QA Steps

[x] Verify that no errors appear in the JS console

PR Author Checklist

[x] I linked the correct issue in the ### Fixed Issues section above
[x] I wrote clear testing steps that cover the changes made in this PR

[x] I added steps for local testing in the Tests section
[x] I added steps for the expected offline behavior in the Offline steps section
[x] I added steps for Staging and/or Production testing in the QA steps section
[x] I added steps to cover failure scenarios (i.e. verify an input displays the correct error message if the entered data is not correct)
[x] I turned off my network connection and tested it while offline to ensure it matches the expected behavior (i.e. verify the default avatar icon is displayed if app is offline)
[x] I tested this PR with a High Traffic account against the staging or production API to ensure there are no regressions (e.g. long loading states that impact usability).

[x] I included screenshots or videos for tests on all platforms
[x] I ran the tests on all platforms & verified they passed on:

[x] Android: Native
[x] Android: mWeb Chrome
[x] iOS: Native
[x] iOS: mWeb Safari
[x] MacOS: Chrome / Safari
[x] MacOS: Desktop

[x] I verified there are no console errors (if there's a console error not related to the PR, report it or open an issue for it to be fixed)
[x] I followed proper code patterns (see Reviewing the code)

[x] I verified that any callback methods that were added or modified are named for what the method does and never what callback they handle (i.e. toggleReport and not onIconClick)
[x] I verified that the left part of a conditional rendering a React component is a boolean and NOT a string, e.g. myBool && <MyComponent />.
[x] I verified that comments were added to code that is not self explanatory
[x] I verified that any new or modified comments were clear, correct English, and explained "why" the code was doing something instead of only explaining "what" the code was doing.
[x] I verified any copy / text shown in the product is localized by adding it to src/languages/* files and using the translation method

[x] If any non-english text was added/modified, I verified the translation was requested/reviewed in #expensify-open-source and it was approved by an internal Expensify engineer. Link to Slack message:

[x] I verified all numbers, amounts, dates and phone numbers shown in the product are using the localization methods
[x] I verified any copy / text that was added to the app is grammatically correct in English. It adheres to proper capitalization guidelines (note: only the first word of header/labels should be capitalized), and is approved by marketing by adding the Waiting for Copy label for a copy review on the original GH to get the correct copy.
[x] I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named "index.js". All platform-specific files are named for the platform the code supports as outlined in the README.
[x] I verified the JSDocs style guidelines (in STYLE.md) were followed

[x] If a new code pattern is added I verified it was agreed to be used by multiple Expensify engineers
[x] I followed the guidelines as stated in the Review Guidelines
[x] I tested other components that can be impacted by my changes (i.e. if the PR modifies a shared library or component like Avatar, I verified the components using Avatar are working as expected)
[x] I verified all code is DRY (the PR doesn't include any logic written more than once, with the exception of tests)
[x] I verified any variables that can be defined as constants (ie. in CONST.js or at the top of the file that uses the constant) are defined as such
[x] I verified that if a function's arguments changed that all usages have also been updated correctly
[x] If any new file was added I verified that:

[x] The file has a description of what it does and/or why is needed at the top of the file if the code is not self explanatory

[x] If a new CSS style is added I verified that:

[x] A similar style doesn't already exist
[x] The style can't be created with an existing StyleUtils function (i.e. StyleUtils.getBackgroundAndBorderStyle(themeColors.componentBG))

[x] If the PR modifies code that runs when editing or sending messages, I tested and verified there is no unexpected behavior for all supported markdown - URLs, single line code, code blocks, quotes, headings, bold, strikethrough, and italic.
[x] If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
[x] If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
[x] If the PR modifies a component or page that can be accessed by a direct deeplink, I verified that the code functions as expected when the deeplink is used - from a logged in and logged out account.
[x] If a new page is added, I verified it's using the ScrollView component to make it scrollable when more elements are added to the page.
[x] If the main branch was merged into this PR after a review, I tested again and verified the outcome was still expected according to the Test steps.

Screenshots/Videos

Android: Native
https://github.com/Expensify/App/assets/38649957/87a10ac8-010c-4099-b045-4bd50f110cf5

Android: mWeb Chrome
https://github.com/Expensify/App/assets/38649957/78c55885-3da0-4e02-942a-10f81f15c542

iOS: Native

https://github.com/Expensify/App/assets/38649957/ab5e1727-ff80-4946-aa58-a5842dd0f70c

iOS: mWeb Safari

https://github.com/Expensify/App/assets/38649957/becd4dde-2607-468d-8302-c3a4ef18c31e

MacOS: Chrome / Safari

https://github.com/Expensify/App/assets/38649957/010d720b-922a-45ff-99fc-457b85d0c1f5

MacOS: Desktop

https://github.com/Expensify/App/assets/38649957/3da311d9-f16f-41ff-9e04-a7c616e88325

@robertKozik PR ready 👍

@robertKozik bump

Conflict resolved

Conflicts again 😬

@FitseTLT Please resolve conflicts

@Santhosh-Sellavel U 're good to go 👍

Reviewer Checklist

[x] I have verified the author checklist is complete (all boxes are checked off).
[x] I verified the correct issue is linked in the ### Fixed Issues section above
[x] I verified testing steps are clear and they cover the changes made in this PR

[x] I verified the steps for local testing are in the Tests section
[x] I verified the steps for Staging and/or Production testing are in the QA steps section
[x] I verified the steps cover any possible failure scenarios (i.e. verify an input displays the correct error message if the entered data is not correct)
[x] I turned off my network connection and tested it while offline to ensure it matches the expected behavior (i.e. verify the default avatar icon is displayed if app is offline)

[x] I checked that screenshots or videos are included for tests on all platforms
[x] I included screenshots or videos for tests on all platforms
[ ] I verified tests pass on all platforms & I tested again on:

[ ] Android: Native
[ ] Android: mWeb Chrome
[ ] iOS: Native
[ ] iOS: mWeb Safari
[x] MacOS: Chrome / Safari
[ ] MacOS: Desktop

[x] If there are any errors in the console that are unrelated to this PR, I either fixed them (preferred) or linked to where I reported them in Slack
[ ] I verified proper code patterns were followed (see Reviewing the code)

[ ] I verified that any callback methods that were added or modified are named for what the method does and never what callback they handle (i.e. toggleReport and not onIconClick).
[ ] I verified that the left part of a conditional rendering a React component is a boolean and NOT a string, e.g. myBool && <MyComponent />.
[ ] I verified that comments were added to code that is not self explanatory
[ ] I verified that any new or modified comments were clear, correct English, and explained "why" the code was doing something instead of only explaining "what" the code was doing.
[ ] I verified any copy / text shown in the product is localized by adding it to src/languages/* files and using the translation method
[ ] I verified all numbers, amounts, dates and phone numbers shown in the product are using the localization methods
[ ] I verified any copy / text that was added to the app is grammatically correct in English. It adheres to proper capitalization guidelines (note: only the first word of header/labels should be capitalized), and is approved by marketing by adding the Waiting for Copy label for a copy review on the original GH to get the correct copy.
[ ] I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named "index.js". All platform-specific files are named for the platform the code supports as outlined in the README.
[ ] I verified the JSDocs style guidelines (in STYLE.md) were followed

[ ] If a new code pattern is added I verified it was agreed to be used by multiple Expensify engineers
[ ] I verified that this PR follows the guidelines as stated in the Review Guidelines
[ ] I verified other components that can be impacted by these changes have been tested, and I retested again (i.e. if the PR modifies a shared library or component like Avatar, I verified the components using Avatar have been tested & I retested again)
[ ] I verified all code is DRY (the PR doesn't include any logic written more than once, with the exception of tests)
[ ] I verified any variables that can be defined as constants (ie. in CONST.js or at the top of the file that uses the constant) are defined as such
[ ] If a new component is created I verified that:

[ ] A similar component doesn't exist in the codebase
[ ] All props are defined accurately and each prop has a /** comment above it */
[ ] The file is named correctly
[ ] The component has a clear name that is non-ambiguous and the purpose of the component can be inferred from the name alone
[ ] The only data being stored in the state is data necessary for rendering and nothing else
[ ] For Class Components, any internal methods passed to components event handlers are bound to this properly so there are no scoping issues (i.e. for onClick={this.submit} the method this.submit should be bound to this in the constructor)
[ ] Any internal methods bound to this are necessary to be bound (i.e. avoid this.submit = this.submit.bind(this); if this.submit is never passed to a component event handler like onClick)
[ ] All JSX used for rendering exists in the render method
[ ] The component has the minimum amount of code necessary for its purpose, and it is broken down into smaller components in order to separate concerns and functions

[ ] If any new file was added I verified that:

[ ] The file has a description of what it does and/or why is needed at the top of the file if the code is not self explanatory

[ ] If a new CSS style is added I verified that:

[ ] A similar style doesn't already exist
[ ] The style can't be created with an existing StyleUtils function (i.e. StyleUtils.getBackgroundAndBorderStyle(theme.componentBG)

[ ] If the PR modifies code that runs when editing or sending messages, I tested and verified there is no unexpected behavior for all supported markdown - URLs, single line code, code blocks, quotes, headings, bold, strikethrough, and italic.
[ ] If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
[ ] If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
[ ] If the PR modifies a component or page that can be accessed by a direct deeplink, I verified that the code functions as expected when the deeplink is used - from a logged in and logged out account.
[ ] If the PR modifies the form input styles:

[ ] I verified that all the inputs inside a form are aligned with each other.
[ ] I added Design label so the design team can review the changes.

[ ] If a new page is added, I verified it's using the ScrollView component to make it scrollable when more elements are added to the page.
[ ] If the main branch was merged into this PR after a review, I tested again and verified the outcome was still expected according to the Test steps.
[ ] I have checked off every checkbox in the PR reviewer checklist, including those that don't apply to this PR.

Screenshots/Videos

Android: Native

Android: mWeb Chrome

iOS: Native

iOS: mWeb Safari

MacOS: Chrome / Safari
https://github.com/Expensify/App/assets/85645967/5f93ca95-4827-4850-9a17-3e7eb91228b3

MacOS: Desktop

Seems to be testing, well I'll continue testing & try to complete the checklist within one or two days

@FitseTLT Test Step 7 is confusing
What's expected on paste for Composer & Private Notes?

@Santhosh-Sellavel Updated

Can you confirm whether this is working as expected or not?
https://github.com/Expensify/App/assets/85645967/51f20276-e812-4db7-94c3-1314edafad61

@FitseTLT bump

Yes exactly @Santhosh-Sellavel 👍

Thanks I'm AFK Now. Will complete checklist later tonight.

Conflicts 😬

@FitseTLT can you test some more like copy pasting everywhere in the app?

@FitseTLT can you test some more like copy pasting everywhere in the app?

This pr will only affect copy paste on Compose and Private notes and after resolving conflicts I have Checked both normal paste and paste as plain text tests well in both cases 👍

Thanks for the changes. Conflicts need to be fixed up here @FitseTLT

Have got one more thing to check will notfiy U when done @marcaaron

@marcaaron U can start reviewing now 👍

:hand: This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release.

🚀 Deployed to production by https://github.com/marcaaron in version: 1.4.36-5 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
failure ❌

🕸 web 🕸
success ✅


url is down

the URL https://cloudtesting.contosotraders.com/ is not working anymore. is there a new URL that we can use or is there a deployment issue that needs fixing? @mithunshanbhag any ideas?

@amalik99, @sumitmalik51: By any chance, is this related to the subscription move?

Hi @mithunshanbhag , @debs-obrien, Let me check on this and get it up and running.

Any updates?

@sumitmalik51 any new url or fix for this deployment ??

Will you work someday? Or do I need to use another site to test?

Hi Everyone , @debs-obrien , Sorry I was OOO, let me get this checked and fixed today

Hi, just wanted to check in, if there is an update?

Hi @debs-obrien , Seems the service principal that were getting used for github action is removed from Microsoft tenant, I have reached out to Anna Soracco to have it enabled so that we can proceed with resource creation.
I will share an update as soon as possible.

Any updates @sumitmalik51?

Hi Marcus, I have reached out to MS team for the Access as it has been revoked, and waiting for the same. Once the access is granted, will provison the infra again on MS tenant.

Because I don't see any progress, I replaced the sample with the webdriverIO shop.


Automated cherry pick of #3641: climc: fix k8s sa not register

Cherry pick of #3641 on release/2.12.
#3641: climc: fix k8s sa not register

Codecov Report

:exclamation: No coverage uploaded for pull request base (release/2.12@a10dbb8). Click here to learn what that means.
The diff coverage is n/a.

@@              Coverage Diff               @@
##             release/2.12   #3643   +/-   ##
==============================================
  Coverage                ?   6.96%
==============================================
  Files                   ?     500
  Lines                   ?   83794
  Branches                ?       0
==============================================
  Hits                    ?    5834
  Misses                  ?   77465
  Partials                ?     495

Flag
Coverage Δ

#aFlag
6.96% <ø> (?)

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 a10dbb8...0472ad2. Read the comment docs.


Investigate re-introducing experiment number from PP

Some history: In the past, the pp loader in Iris brought in a coordinate called experiment_id which was a textual coordinate populated from the PP header's lbexp element. At some point, this was removed as it was causing some headaches with merging. Since this time, @bjlittle has re-implemented the merge functionality.
I would like to investigate the impacts of importing an experiment_id coordinate back into iris.

Closing due to inactivity.


DNS flow refactors

I'd like to start a discussion about this file's TS declarations, because I'm quite certain it's wrong:
https://github.com/DevelopingSpace/starchart/blob/main/app/queues/dns/dns-flow.server.ts
First, we are trying to use JobRecord  for absolutely everything. Basically all the workers and exported flow initiator functions all use this, and we are trying to twist it to suite the specific use-case. This causes some very hard to follow code, and inappropriate use.
I.e.,  Line 17, name  refers to a subdomain only (which was a breaking change, but let's not get bogged down)
In Line 18, using name (subdomain) we create fullRecordName which is an FQDN
In line 24, we pass this FQDN down as name,
so in line 17 name was a subdomain, in line 24 name is FQDN and they are both using the same TS interface. This is wrong.
In my humble opinion:

Each worker should be it's own file and should export an interface, of what it exactly expects as input params (data)
dns-flow.server.ts should import those interfaces and use the correct interface for each data  attribute in the flow generators
There also should be a separate TS interface/type for each flow initiator. It can reuse the worker's interface, but should be specific.
We should start using subdomain  and fqdn  atribute and variable names to signify what we are storing in it, name is not specific enough (see above issue)
We need a way to pass down either FQDN or subdomain to the appropriate flow initiators, flow initiators should generate the fqdn if subdomain was provided. This is needed for the ACME integration (and probably other later code as well)
Input validation should be part of the flow initiator, not the worker. This way we can synchronously return an error to the caller, and it's not the subsequent async job that's going to fail

Each worker should be it's own file and should export an interface, of what it exactly expects as input params (data)

@dadolhay I can split dns-flow.server.ts into several files. But the current workers has a benefit by having it all in one file as it's designed to reduce similar code. This is one example.
try {
      switch (workType) {
        case 'create':
          return createRecord(username, type, name.toLowerCase(), value);

        case 'update':
          return upsertRecord(username, type, name.toLowerCase(), value);

        case 'delete':
          return deleteRecord(username, type, name.toLowerCase(), value);

        default:
          throw new UnrecoverableError(`Invalid work type: ${workType}`);
      }

I can define multiple interfaces here. Should we still have this code in separate files?

@Genne23v if it's not convenient to break the file up, don't bother.  I just suggested it because our other code does it (for consistency).  But it's not critical.  Do what's best for the code.

@Genne23v if it's not convenient to break the file up, don't bother. I just suggested it because our other code does it (for consistency). But it's not critical. Do what's best for the code.

Thanks for the feedback. I just wanted to make sure that I'm not missing something valuable. I will come up with what I think is the best.

@Genne23v
I meant to break up ./dns-record-worker.server. As far as I can see, the switch (workType) part is already repeated in the relevant workers, and I can't see too much reuse between them. IMO, this would help later in correctly structuring the code also. But as always, the decision is yours, I don't want to force my own coding style on anyone.

Just to share my thinking; I usually try to break out stuff that are loosely connected if the file size is > 100 lines. Not always possible but I found that to be a good practice anyways.

Thank you for the advice. I don't see much benefit to break the workers at the moment probably because I'm not able to foresee what should be coming. Before wring more code, I will think more about how it should be handled for better maintainability as well as minimizing the code.


[11.x] Fix Octane health up defined check

This PR fixes the missing quotes for the defined condition in health up (added for Octane).
Fixes https://github.com/laravel/octane/issues/836
Original PR: https://github.com/laravel/framework/pull/50012

Thanks!


Is it possible to draw copy number data by itself with oncoplot()?

My oncoplot is kind of messy with copy number included, but I do need it shown. I'd like to just separate them into two equally sized figures. It's easy enough to draw just the mutation data without copy number, but is there a way with maftools to draw the copy number data by itself without the mutation data?

Hi,
Unfortunately it is not possible to do so. For now there is a nasty workaround by setting the color code for all other variant classifications to the background gray color.
Here is an example:
#path to TCGA LAML MAF file
laml.maf = system.file('extdata', 'tcga_laml.maf.gz', package = 'maftools')

#GISTIC results LAML (for copy number)
all.lesions =
  system.file("extdata", "all_lesions.conf_99.txt", package = "maftools")
amp.genes =
  system.file("extdata", "amp_genes.conf_99.txt", package = "maftools")
del.genes =
  system.file("extdata", "del_genes.conf_99.txt", package = "maftools")
scores.gis =
  system.file("extdata", "scores.gistic", package = "maftools")

#Read GISTIC results along with MAF
laml.plus.gistic = read.maf(
  maf = laml.maf,
  gisticAllLesionsFile = all.lesions,
  gisticAmpGenesFile = amp.genes,
  gisticDelGenesFile = del.genes,
  gisticScoresFile = scores.gis,
  isTCGA = TRUE,
  verbose = FALSE,
)

# get all variant classifications and remove Amp and Del
vc_names = colnames(getGeneSummary(laml.plus.gistic))
vc_names = setdiff(vc_names, c("Hugo_Symbol", "total", "CNV_total", "MutatedSamples", "AlteredSamples", "Amp", "Del"))
# use gray as a color for all  variant classifications
vc_cols = rep(x = "gray70", length(vc_names))
names(vc_cols) = vc_names
# use red and green for amp/del
vc_cols = c(vc_cols, c("Amp" = "red", "Del" = "green", "Multi_Hit" = "gray70"))

vc_cols
Frame_Shift_Del   Frame_Shift_Ins      In_Frame_Del      In_Frame_Ins Missense_Mutation Nonsense_Mutation
         "gray70"          "gray70"          "gray70"          "gray70"          "gray70"          "gray70"
      Splice_Site               Amp               Del         Multi_Hit
         "gray70"             "red"           "green"          "gray70

oncoplot(maf = laml.plus.gistic, colors = vc_cols, bgCol = "gray70")

This should not have been this difficult. I will add this as a feature soon. Thanks for the issue.


Replace FromPyObject with std::convert::TryFrom

@messense objections?

That would be awesome. Utilize std traits should reduce learning curve.

It is not possible to implement TryFrom for Vec<T> where T: TryFrom<PyObjectRef>
So it is pretty useless.

add added TryFrom implementation, but we can not drop FromPyObject because of sequence conversion.


Implement API rate limiting season

Duck season

Failed Test
Failure Summary
Logs

Test_ServiceUnavailable
failure_message: Failedfailure_text: === RUN   Test_ServiceUnavailable    api_test.go:18: Service unavailable--- FAIL: Test_ServiceUnavailable...
Logs ↗

Test_ForbiddenAccess
failure_message: Failedfailure_text: === RUN   Test_ForbiddenAccess    api_test.go:46: Forbidden access to resource--- FAIL: Test_ForbiddenAcc...
Logs ↗

Flaky Test
Failure Summary
Logs

[chromium] should display error message for invalid login correctly.
The expected HTTP status code 401 was not received, instead a function was returned.
Logs ↗

[chromium] should show the FAQ page correctly.
The FAQ page was not loaded correctly, and the title and heading were not found.
Logs ↗

[chromium] should login with credentials correctly correctly.
The login request to the server failed with a 404 Not Found error.
Logs ↗

[chromium] should display user profile information correctly.
The test timed out waiting for the expected text "User Profile" in the page, but it received an empty array instead.
Logs ↗

... and 3 more

View Full Report ↗ ⋅ Docs


API documentation drops type hints.

Description of the issue
See for example API documentation for on_each in Gate

But the signature was
def on_each(self, *targets: Union[Qid, Iterable[Any]]) -> List['cirq.Operation']:

A quick glance at this makes me think it is the non-forward reference....ones that are labeled like 'cirq.Qid' seem to show up.

Actually it seems to be the varargs format. In https://quantumai.google/reference/python/cirq/circuits/CircuitOperations there are plenty of forward references that work, but with_qubits is broken even though annotated correctly.


Notice: Use of undefined constant DS - assumed 'DS' in ...

I've got notices about constant DS:
Notice: Use of undefined constant DS - assumed 'DS' in /Users/alexanderisaev/Sites/CiiMS/install.php on line 15
Notice: Use of undefined constant DS - assumed 'DS' in /Users/alexanderisaev/Sites/CiiMS/install.php on line 15
Notice: Use of undefined constant DS - assumed 'DS' in /Users/alexanderisaev/Sites/CiiMS/install.php on line 15
Notice: Use of undefined constant DS - assumed 'DS' in /Users/alexanderisaev/Sites/CiiMS/install.php on line 15
Notice: Use of undefined constant DS - assumed 'DS' in /Users/alexanderisaev/Sites/CiiMS/install.php on line 15
Notice: Use of undefined constant DS - assumed 'DS' in /Users/alexanderisaev/Sites/CiiMS/install.php on line 16
Notice: Use of undefined constant DS - assumed 'DS' in /Users/alexanderisaev/Sites/CiiMS/install.php on line 16
Warning: require_once(/Users/alexanderisaev/Sites/CiiMSDSvendorDSautoload.php): failed to open stream: No such file or directory in /Users/alexanderisaev/Sites/CiiMS/install.php on line 16
Fatal error: require_once(): Failed opening required '/Users/alexanderisaev/Sites/CiiMSDSvendorDSautoload.php' (include_path='.:/Applications/MAMP/bin/php/php5.4.30/lib/php') in /Users/alexanderisaev/Sites/CiiMS/install.php on line 16

@almix.
git pull the master branch and it should work


NuGet package

Any chance of a NuGet package? Would make life 10x easier!

Seconding this request! NuGet package would be absolutely perfect.

Would very much like to see an officially supported NuGet package for this code!

:+1:

@lidgren I'm for NuGet as well, would be so nice to have it auto-updated.

@lidgren we are still waiting <3

Indeed we are

+1

+1

Issues of referring projects like #51 would also be simpler to solve if there were a NuGet.

Uploaded as https://www.nuget.org/packages/Lidgren.Network/1.0.2 - I'm a nuget newbie, so feedback if there's some way you would like the package changed.

I used the NuGet package. And figure out that I can't start NetClient because method Start didn't work. For some time I can't understand why, so I decompiled the package and guess what, Start is empty!

You can automatically publish your library to NuGet - .
Please, add a nuspec for the lidgren and setup automatically builds. I can help you if you need any help with that.

@lidgren is that fixed yet? Is any of our suppport needed? I understand you carry this weight on your own without material support but may be we could donate or something?


New version: ProgressMeter v1.3.2

Registering package: ProgressMeter
Repository: https://github.com/timholy/ProgressMeter.jl
Created by: @ianshmean
Version: v1.3.2
Commit: 4752da3e6c1fe10faea12eeb365ca81d82db66a2
Reviewed by: @ianshmean
Reference: https://github.com/timholy/ProgressMeter.jl/commit/4752da3e6c1fe10faea12eeb365ca81d82db66a2#commitcomment-40535882

cc. @johnnychen94 (includes your reduce PR)
[noblock]


Improve performance and scalability of BERT FT training

I open a second pull request in relation to this one: https://github.com/huggingface/optimum-habana/pull/198
This patch relies on the repository branch rather than my fork (I was advised to do so to ease the process of testing).
I humbly apologize for that.
What does this PR do?
This patch adds support for --use_hpu_graphs to the Gaudi trainer. Setting this parameter greatly improves the performance and scalability of the training by:

Recording and then replaying the entire forward and backward passes into a single HPU graph.
Substituting DistributedDataParallel with much simplier, custom-made logic, which fuses all the gradients and invokes a single bfloat16 all-reduce.

This improves the unbiased throughput of 8-worker training by +43%, as well as the scaling factor up to 91%.
Thanks-To: @regisss
Fixes: N/A
Only rudimentary testing has been performed so far, however my QA friends will help in the matter.
Before submitting

[ ] This PR fixes a typo or improves the docs (you can dismiss the other checks if that's the case).
[ ] Did you make sure to update the documentation with your changes?
[ ] Did you write any new necessary tests?

The docs for this PR live here. All of your documentation changes will be reflected on that endpoint.

Thanks for an another turn of reviews. I updated the patch.

Thanks for an another turn of reviews. I updated the patch.

Thanks! As I told you I will run some regression tests before definitely approving this PR. I am currently updating the baselines of these regression tests so I may not be able to launch them on this PR before the beginning of next week. I'll keep you updated anyway.

@mlapinski-habana I added the arguments use_hpu_graphs_for_inference and use_hpu_graphs_for_training. Launching the regression tests now!

@mlapinski-habana I get the following error when using gradient checkpointing:
Traceback (most recent call last):
  File "/root/workspace/optimum-habana/examples/language-modeling/run_clm.py", line 646, in <module>
    main()
  File "/root/workspace/optimum-habana/examples/language-modeling/run_clm.py", line 599, in main
    train_result = trainer.train(resume_from_checkpoint=checkpoint)
  File "/usr/local/lib/python3.8/dist-packages/optimum/habana/transformers/trainer.py", line 475, in train
    return inner_training_loop(
  File "/usr/local/lib/python3.8/dist-packages/optimum/habana/transformers/trainer.py", line 824, in _inner_training_loop
    fwbwd_output = self.training_step(model, fwbwd_inputs)
  File "/usr/local/lib/python3.8/dist-packages/optimum/habana/transformers/trainer.py", line 544, in training_step
    loss.backward()
  File "/usr/local/lib/python3.8/dist-packages/torch/_tensor.py", line 499, in backward
    torch.autograd.backward(
  File "/usr/local/lib/python3.8/dist-packages/torch/autograd/__init__.py", line 197, in backward
    Variable._execution_engine.run_backward(  # Calls into the C++ engine to run the backward pass
  File "/usr/local/lib/python3.8/dist-packages/torch/autograd/function.py", line 267, in apply
    return user_fn(self, *args)
  File "/usr/local/lib/python3.8/dist-packages/optimum/habana/transformers/gradient_checkpointing.py", line 92, in backward
    htcore.mark_step()
  File "/usr/local/lib/python3.8/dist-packages/habana_frameworks/torch/core/step_closure.py", line 40, in mark_step
    htcore._mark_step(device_str)
RuntimeError: [04-28 08:32:19::982437][R000][902]FATAL ERROR :: MODULE:DEVICE GRAPH:: Capture must end on the same stream it began on.

You can run RUN_SLOW=1 pytest tests/test_examples.py -v -s -k "test_run_clm_gpt2_single_card" to reproduce it.
Do we expect HPU graphs to work in that case?

Regression tests are available here: https://github.com/huggingface/optimum-habana/actions/runs/4822372627

Thank you @regisss . First, I will reproduce the issue the determine why it happens. Possibly, it is something easy to fix.

Thank you @regisss . First, I will reproduce the issue the determine why it happens. Possibly, it is something easy to fix.

Thanks @mlapinski-habana! Let me know if you need any help to reproduce it :slightly_smiling_face:

@regisss Sorry for not responding. I'm not 100% onto this issue at the moment.
Basically I reproduced the issue, tried to overcome it, but still getting failures in tests:
RUN_SLOW=1 pytest -vs tests/test_examples.py::MultiCardQuestionAnsweringExampleTester::test_run_qa_albert-xxlarge-v1_multi_card
RUN_SLOW=1 pytest -vs tests/test_examples.py::MultiCardMaskedLanguageModelingExampleTester::test_run_mlm_roberta-base_multi_card
RUN_SLOW=1 pytest -vs tests/test_examples.py::MultiCardAudioClassificationExampleTester::test_run_audio_classification_wav2vec2-base_multi_card

Those test cases seem to fail without the patch:
RUN_SLOW=1 pytest -vs tests/test_examples.py::MultiCardTextClassificationExampleTester::test_run_glue_bert-base-uncased_multi_card
RUN_SLOW=1 pytest -vs tests/test_examples.py::MultiCardTextClassificationExampleTester::test_run_glue_bert-large-uncased-whole-word-masking_multi_card

I could not run this one at all:
RUN_SLOW=1 pytest -vs tests/test_examples.py::DeepspeedCausalLanguageModelingExampleTester::test_run_clm_gpt2-xl_deepspeed
I did not have much time to look into this, but the feature should ideally disable itself when detecting an unsupported case.
I hope I will get back to the issue soon.

@mlapinski-habana No worries, there is no pressure to merge this now :slightly_smiling_face:
Yes it's possible that the two BERT regression tests fail because the throughput may be slightly under the baseline. This is fine.
Regarding DeepSpeed, maybe we'll just disable HPU graphs when training with it.

I uploaded a new version of the patch:

Thanks to @libinta, I replaced raw HPU graph recording with habana_frameworks.torch.hpu.ModuleCacher, which covers much wider range of cases and solves issues with functional tests.
I took liberty of merging your patch @regisss into mine, instead of making a third one.
More testing in progress...

@mlapinski-habana Thanks for the update!
Don't hesitate to run the regression tests again or let me know if you want me to do it :slightly_smiling_face:

@mlapinski-habana Regression tests triggered in GitHub Actions seem to have some issues lately, not sure why the communication with the instance is lost almost each time. It may be easier for you to run them locally.

@regisss The patch works (by default, the existing logic is used). When HPU graphs and FastDDP is enabled, almost all tests work. Several cases show issues with model.forward/call function introspection (as the model is wrapped in a different entity ModuleCacher), as well as seq2seq gradient accumulation test case fails. Even though the feature could be enabled for majority of the testing suite without test alteration, I would strongly recommend leaving it as it in this patch. I humbly request for review.

Hi @regisss . Did you have an opportunity to take a look at the patch? Please tell me if you don't like it.

Hi @regisss . Did you have an opportunity to take a look at the patch? Please tell me if you don't like it.

Not yet, I will review it today :slightly_smiling_face:

Great. Thanks.

@mlapinski-habana Thanks for the information. I'll take a quick look to see if some of them are easily fixable.  I also applied the changes I suggested to the documentation.
However, I cannot run the command line of the question-answering README:
python run_qa.py \
  --model_name_or_path bert-large-uncased-whole-word-masking \
  --gaudi_config_name Habana/bert-large-uncased-whole-word-masking \
  --dataset_name squad \
  --do_train \
  --do_eval \
  --per_device_train_batch_size 24 \
  --per_device_eval_batch_size 8 \
  --learning_rate 3e-5 \
  --num_train_epochs 2 \
  --max_seq_length 384 \
  --doc_stride 128 \
  --output_dir /tmp/squad/ \
  --use_habana \
  --use_lazy_mode \
  --use_hpu_graphs_for_inference \
  --use_hpu_graphs_for_training \
  --throughput_warmup_steps 3

It fails with the following memory allocation error:
Traceback (most recent call last):
  File "run_qa.py", line 689, in <module>
    main()
  File "run_qa.py", line 635, in main
    train_result = trainer.train(resume_from_checkpoint=checkpoint)
  File "/usr/local/lib/python3.8/dist-packages/optimum/habana/transformers/trainer.py", line 502, in train
    return inner_training_loop(
  File "/usr/local/lib/python3.8/dist-packages/optimum/habana/transformers/trainer.py", line 845, in _inner_training_loop
    tr_loss_step = self.training_step(model, inputs)
  File "/usr/local/lib/python3.8/dist-packages/optimum/habana/transformers/trainer.py", line 553, in training_step
    loss = self.compute_loss(model, inputs)
  File "/usr/local/lib/python3.8/dist-packages/transformers/trainer.py", line 2731, in compute_loss
    outputs = model(**inputs)
  File "/usr/local/lib/python3.8/dist-packages/torch/nn/modules/module.py", line 1212, in _call_impl
    result = forward_call(*input, **kwargs)
  File "/usr/local/lib/python3.8/dist-packages/habana_frameworks/torch/hpu/graphs.py", line 568, in forward
    return self.cache_insert(input_id, *args, **kwargs)
  File "/usr/local/lib/python3.8/dist-packages/habana_frameworks/torch/hpu/graphs.py", line 548, in cache_insert
    ret = self.cache_replay(input_id, *args, **kwargs)
  File "/usr/local/lib/python3.8/dist-packages/habana_frameworks/torch/hpu/graphs.py", line 540, in cache_replay
    output = graph_model.graph_forward(*args, **kwargs)
  File "/usr/local/lib/python3.8/dist-packages/habana_frameworks/torch/hpu/graphs.py", line 466, in graph_forward
    out_tensors = self.hpu_graph(*tensor_args)
  File "/usr/local/lib/python3.8/dist-packages/torch/nn/modules/module.py", line 1212, in _call_impl
    result = forward_call(*input, **kwargs)
  File "/usr/local/lib/python3.8/dist-packages/habana_frameworks/torch/hpu/graphs.py", line 269, in new_fwd
    return graphed(*user_args)
  File "/usr/local/lib/python3.8/dist-packages/habana_frameworks/torch/hpu/graphs.py", line 247, in functionalized
    out = Graphed.apply(*(user_args + module_params))
  File "/usr/local/lib/python3.8/dist-packages/habana_frameworks/torch/hpu/graphs.py", line 226, in forward
    fwd_graph.replay(asynchronous)
  File "/usr/local/lib/python3.8/dist-packages/habana_frameworks/torch/hpu/graphs.py", line 40, in replay
    _hpu_C.replay(self.hpu_graph, asynchronous)
RuntimeError: [05-25 15:43:20::528850][R000][22579]FATAL ERROR :: MODULE:DEVMEM Allocation failed for size::9437184 (9)MB

This is on Gaudi1. But I see you updated the expected results so you managed to run it, any idea what's going wrong on my side?


Convert example is incorrect

The example at
https://www.elastic.co/guide/en/logstash/current/plugins-filters-csv.html#plugins-filters-csv-convert
does not work. The fields to convert are comma separated rather than on separate lines.

This is a duplicate of #28. While the source has been corrected the documentation on www.elastic.co lags behind.

This has been solved since v3.0.3. thanks all


msg.albumArtUrl showing Sonos-IP when using Spotify Playlist

Hi, I was just using some Spotify playlist and realized that the first entry does have the Sonos-Player-IP in the URL
msg.albumArtURL = http://<IP_ADDRESS>:1400https://i.scdn.co/image/ab67616d0000b273b0ae68e5a092871296a07cfb
and
msg.trackData.albumArtURL=
https://i.scdn.co/image/ab67616d0000b273b0ae68e5a092871296a07cfb
Is that on purpose or should they be the same ?

Just on the topic of consistency... Why is the entire content of msg.payload often redundant/duplicate to the rest of the msg ?
E.g.:
msg.payload.trackData  ==>  msg.trackData
msg.payload.mediaData ==> mediaData
{"_msgid":"79371d42.8f6754","topic":"","payload":{"trackData":{"id":null,"parentID":null,"title":"bigfm-sunsetlounge-128-aac?usid=0-0-H-A-A-02","artist":null,"album":null,"albumArtURI":null,"position":0,"duration":0,"albumArtURL":null,"uri":"aac://http://streams.bigfm.de/bigfm-sunsetlounge-128-aac?usid=0-0-H-A-A-02","queuePosition":1},"artist":"unknown","title":"bigfm-sunsetlounge-128-aac?usid=0-0-H-A-A-02","albumArtURL":"","mediaData":{"NrTracks":"5","MediaDuration":"NOT_IMPLEMENTED","CurrentURI":"x-sonosapi-stream:s299525?sid=254&flags=8224&sn=0","CurrentURIMetaData":"<DIDL-Lite xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:upnp=\"urn:schemas-upnp-org:metadata-1-0/upnp/\" xmlns:r=\"urn:schemas-rinconnetworks-com:metadata-1-0/\" xmlns=\"urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/\"><item id=\"-1\" parentID=\"-1\" restricted=\"true\"><dc:title>bigFM Sunset Lounge</dc:title><upnp:class>object.item.audioItem.audioBroadcast</upnp:class><desc id=\"cdudn\" nameSpace=\"urn:schemas-rinconnetworks-com:metadata-1-0/\">SA_RINCON65031_</desc></item></DIDL-Lite>","NextURI":"","NextURIMetaData":"","PlayMedium":"NETWORK","RecordMedium":"NOT_IMPLEMENTED","WriteStatus":"NOT_IMPLEMENTED"},"queueActivated":false,"radioId":"s299525","positionData":{"Track":1,"TrackDuration":"0:00:00","TrackMetaData":"<DIDL-Lite xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:upnp=\"urn:schemas-upnp-org:metadata-1-0/upnp/\" xmlns:r=\"urn:schemas-rinconnetworks-com:metadata-1-0/\" xmlns=\"urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/\"><item id=\"-1\" parentID=\"-1\" restricted=\"true\"><res protocolInfo=\"aac:*:application/octet-stream:*\">aac://http://streams.bigfm.de/bigfm-sunsetlounge-128-aac?usid=0-0-H-A-A-02</res><r:streamContent></r:streamContent><dc:title>bigfm-sunsetlounge-128-aac?usid=0-0-H-A-A-02</dc:title><upnp:class>object.item</upnp:class></item></DIDL-Lite>","TrackURI":"aac://http://streams.bigfm.de/bigfm-sunsetlounge-128-aac?usid=0-0-H-A-A-02","RelTime":"0:00:00","AbsTime":"NOT_IMPLEMENTED","RelCount":"2147483647","AbsCount":"2147483647"}},"trackData":{"id":null,"parentID":null,"title":"bigfm-sunsetlounge-128-aac?usid=0-0-H-A-A-02","artist":null,"album":null,"albumArtURI":null,"position":0,"duration":0,"albumArtURL":null,"uri":"aac://http://streams.bigfm.de/bigfm-sunsetlounge-128-aac?usid=0-0-H-A-A-02","queuePosition":1},"artist":"unknown","title":"bigfm-sunsetlounge-128-aac?usid=0-0-H-A-A-02","albumArtURL":"","mediaData":{"NrTracks":"5","MediaDuration":"NOT_IMPLEMENTED","CurrentURI":"x-sonosapi-stream:s299525?sid=254&flags=8224&sn=0","CurrentURIMetaData":"<DIDL-Lite xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:upnp=\"urn:schemas-upnp-org:metadata-1-0/upnp/\" xmlns:r=\"urn:schemas-rinconnetworks-com:metadata-1-0/\" xmlns=\"urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/\"><item id=\"-1\" parentID=\"-1\" restricted=\"true\"><dc:title>bigFM Sunset Lounge</dc:title><upnp:class>object.item.audioItem.audioBroadcast</upnp:class><desc id=\"cdudn\" nameSpace=\"urn:schemas-rinconnetworks-com:metadata-1-0/\">SA_RINCON65031_</desc></item></DIDL-Lite>","NextURI":"","NextURIMetaData":"","PlayMedium":"NETWORK","RecordMedium":"NOT_IMPLEMENTED","WriteStatus":"NOT_IMPLEMENTED"},"queueActivated":false,"radioId":"s299525","positionData":{"Track":1,"TrackDuration":"0:00:00","TrackMetaData":"<DIDL-Lite xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:upnp=\"urn:schemas-upnp-org:metadata-1-0/upnp/\" xmlns:r=\"urn:schemas-rinconnetworks-com:metadata-1-0/\" xmlns=\"urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/\"><item id=\"-1\" parentID=\"-1\" restricted=\"true\"><res protocolInfo=\"aac:*:application/octet-stream:*\">aac://http://streams.bigfm.de/bigfm-sunsetlounge-128-aac?usid=0-0-H-A-A-02</res><r:streamContent></r:streamContent><dc:title>bigfm-sunsetlounge-128-aac?usid=0-0-H-A-A-02</dc:title><upnp:class>object.item</upnp:class></item></DIDL-Lite>","TrackURI":"aac://http://streams.bigfm.de/bigfm-sunsetlounge-128-aac?usid=0-0-H-A-A-02","RelTime":"0:00:00","AbsTime":"NOT_IMPLEMENTED","RelCount":"2147483647","AbsCount":"2147483647"}}

Its just "historical". I strive to have all output no to msg.payload.
That is fixed in 4.0.0 - available next week.


Back to arch and 1.37

Switches back to an arch-based build as this uses 2to3 and notes this in the recipe. Bumps the build number to distinguish this from the broken noarch build.
xref: https://github.com/conda-forge/pygithub-feedstock/pull/21

Hi! This is the friendly automated conda-forge-linting service.
I just wanted to let you know that I linted all conda-recipes in your PR (recipe) and found it was in an excellent condition.

Thanks for checking. :)


Add the word "Lyric" when spotdl search title in youtube

[x] Using latest version as provided on the master branch
[ ] Searched for similar issues including closed ones

What is the purpose of your issue?

[ ] Bug
[ ] Feature Request
[x] Question
[ ] Other

Description

I would like to know how I can add the word "lyric" when looking for the title on YouTube to help in the search.
Log

I've been wondering this feature to perform custom searches would be nice (just like custom filenames).

I do not know why when it search this song on youtube:
https://open.spotify.com/track/4yb6Ytd72ZqjwR7Qrre73F?si=T2MG1dcERB-A3iSZK6u7uA
It select this:
https://www.youtube.com/watch?v=bWUN89pJDwc
They are totally different songs. If you search on YouTube "Artists + title + Lyric", the result is more real.

#261 adds ability to use custom search queries and sets the default search format to {artist} - {track_name} lyrics. You can set it to use other search formats in config.yml.


Add node tests to bot integration widget.

The Travis failures here are indicating you need to mock FormData with set_global.

@abhijeetkaur @showell what are the next steps on this PR?

@adnrs96 @lonerz Thank you for the review, I have tried to address all of your comments.
For @adnrs96 's last comment on asserting if the bot got subscribed or not, I am planning to write a separate function for testing subscribe_to_stream function as this function would get confusing and complicated.
We'll need to mock a few functions to create a stream (this is not part of the original widget file), add bots to people.js etc.
Creating a separate function to test this makes sense, right? What are your thoughts?

Okay! I have added a separate node test function for subscribe_to_stream. Please review!

Hello @abhijeetkaur, a Zulip maintainer reviewed this pull request over a week ago, but you haven't updated your pull request since. Please take a look at the requested changes and update your pull request accordingly.
Thank you for your valuable contributions to Zulip!

Closing as the widget this adds tests for was removed in 9d9342c2a51e1e01905b1f3f007b79542e18e835. Thanks @abhijeetkaur!


Rename shallow to shallowMount

As discussed with @eddyerburgh, I've had to explain to a lot of people that shallow does actually mount, it's just a shallow mount. 😄 This rename would make that clearer.

I prefer shallow because it's more terse, but I'm used to the enzyme API which has a shallow method.
It seems a lot of people are confused by shallow, so I'm in favor of renaming the method to shallowMount

Since VTU is about unit testing, and that more or less means one does not mount/test child components, what about mount defaulting to "shallow" and then allowing the user to setting it to true, like @lmiller1990's approach?
I understand that perhaps people would complain "hey, my components do not get properly mounted" if they don't see child components mounted as well and didn't read the docs about shallow/non-shallow.
Any way, that is another idea that may or may not work.

I think the shallow option could be OK, except it's such a big change in behavior that I'd worry it could get lost with other options.

My preference is to rename shallow to shallowMount

It's easy enough to set up an alias from for people who prefer shallow, so I'm okay with this.


Unstake issue

Package
Unstake
What wallet app are you using to connect?
Valora
Browser
Chrome
Describe the bug

The contract function "withdraw" reverted with the following signature: 0x0d438664 Unable to decode signature "0x0d438664" as it was not found on the provided ABI. Make sure you are using the correct ABI and that the error exists on it. You can look up the decoded signature here: https://openchain.xyz/signatures?query=0x0d438664. Contract Call: address: 0x0239b96D10a434a56CC9E09383077A0490cF9398 function: withdraw(uint256 stCeloAmount) args:<PHONE_NUMBER>8375249535) sender: 0x6a5D38bB57cdAafF8557224D9E5103CE03175fe7 Docs: https://viem.sh/docs/contract/decodeErrorResult.html Version<EMAIL_ADDRESS>

@Bimasolana Thanks for submitting this issue.
Yesterday we released this post that explains the issue and how to resolve it.
You will have to wait to vote on the next governance proposal, but this should fix your issue.
Closing this for now. Feel free to re-open if the issue persists


Apache Log4j Vulnerability issue - Black Duck

How can we help?
Our product is using build-info-extractor-gradle for publishing artifacts to JFrog artifactory repository.  Couple of months back our team introduced vulnerability scanning tools. One of them is Black Duck. We are getting multiple critical warnings from that tool due to the internal dependency with Apache Log4j . We upgraded the build-info-extractor-gradle to the latest 5.1. 4. But still we are getting the same warning. Now it became a compliance issue for our product. Could you please advise how to solve this?
Please find more details below :-
build.gradle -> -gradle -> org.jfrog.buildinfo:build-info-extractor-gradle:5.1.3 -> org.jfrog.buildinfo:build-info-extractor:2.41.4 -> commons-logging:commons-logging:1.2 -> log4j:log4j:1.2.17
https://mvnrepository.com/artifact/org.jfrog.buildinfo/build-info-extractor-gradle/5.1.4
Published on: 12/20/19
Updated on: 1/3/23
Base score: 9.8
Exploitability: 3.9
Description: Apache Log4j is vulnerable to remote code execution (RCE).  This allows a remote attacker to send a crafted serialized payload that, when processed by Log4j, will execute arbitrary code. This can occur if Log4j is deserializing untrusted network traffic.
https://nvd.nist.gov/vuln/detail/CVE-2019-17571
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-17571

Hey @josephreji,
Thanks for bringing up this problem!
We've rolled out v5.1.6 to address it.
Check it out here:

artifactory-gradle-plugin pull request
build-info pull request

Your feedback would be greatly valued.

@yahavi  That's awesome!. Thanks for fixing this issue so quickly.


deprecated hessian1 and move hessian-lite to dubbo group

As dubbo does not use hessian1, we need to delete it in hessian-lite.
But consider compatibility, it's recommended to deprecated it, and in next major release version, delete it.
In addition, hessian-lite is a single module, it's also recommended to move it to dubbo group from dubbo codebase.

We're considering move hessian-lite to dubbo eco-system in 2.7.x which is the next major version.

This issue has been done.


Support Nvidia NeMo Guardrails

Irrespective of whether LLMs can truly be aligned (as they may be running deceptive internal agents etc.), NeMo Guardrails looks like a good solution for everyday alignment.
Our current alternative is constructing case-specific Langchains and that is not sustainable in the long term.
Support for NeMo Guardrails would reduce the number of LLM requests and therefore computational and financial cost.  It would also provide a consistent language via its config to describe and maintain use case specific alignment without having to alter the Langchain structure for each instance.
A Langflow node with a setting to specify the Guardrails config file to load, plus input from an LLM output would be good.
More details at: https://github.com/NVIDIA/NeMo-Guardrails

The project looks amazing and I instantly saw its potential.
Technically you could use it by importing the flow into a LangChain object and then applying the rails.
We will keep an eye on it and once we finish the current priorities we will evaluate a way to implement it.
For now, how do you see it being implemented in LangFlow?


"In Graphics", including SVG image support

Still some work to do on this, all of which is technically optional:

[ ] More grammar entries, especially in steps--this is most important. Currently there's few enough some steps will repeat on the same image frequently.
[ ] In-console preview needs some way to see what svg image will be generated; right now non-headline-tags are just ignored (same with existing image upload)
[ ] Do we want to host the background image in the repo?
[ ] More background images that can be rotated
[ ] Prettify the background image so it doesn't look so bad with white-bordered cards
[ ] If someone is really ambitious, creating the background image from component parts in the SVG
[ ] Come up with some way to fix the ugly white dots in the corners of the cards
[ ] Handle two-lines in the title string better
[ ] Look into using Beleren for title string?
[ ] Double check all the real cards that they actually return an image from our image finder

I'm not on my best photoshop game tonight but I put together a few more backgrounds (which can wait, I just felt like making some)