Fatal error: Index out of range

I face a problem on my debug console , anyone can figure out what is going on..??
When i am going to pick a date , i take an error Index out of range

This problem i found it  on this page

I just downloaded the example code and it works.
What are the steps to reproduce the error you are seeing?

when i am pick  a date, then unselect the specific date and after pick a previous date, then the app its crash

iOS 13 - Xcode 11

when i am pick a date, then unselect the specific date and after pick a previous date, then the app its crash

iOS 13 - Xcode 11

I am using version 8.0.
I was having the same issue today when trying to deselect the date that is already selected like you're showing. I was trying out different things and the only thing I could think of to somewhat remedy this was to add "|| !twoDatesAlreadySelected && cellState.selectionType != .programatic " to the shouldDeselectDate function:
func calendar(_ calendar: JTACMonthView, shouldDeselectDate date: Date, cell: JTACDayCell?, cellState: CellState, indexPath: IndexPath) -> Bool {         if twoDatesAlreadySelected && cellState.selectionType != .programatic || !twoDatesAlreadySelected && cellState.selectionType != .programatic {             firstDate = nil             calendarView.deselectAllDates()             return false         }         return true     }
This however, has issues when selecting inDates/outDates so I have to remove user interaction on in/outDates. In the meantime this is the solution that I will be using in order for my app to not crash, hope it helps (:

i did a different way
func calendar(_ calendar: JTAppleCalendarView, shouldSelectDate date: Date, cell: JTAppleCell?, cellState: CellState) -> Bool {
if !self.calendarView.selectedDates.isEmpty {
if twoDatesAlreadySelected && cellState.selectionType != .programatic || firstDate != nil && date < calendarView.selectedDates[0] {
firstDate = nil
let retval = !calendarView.selectedDates.contains(date)
calendarView.deselectAllDates()
return retval
}
}
return true
}

the fixes here are wrong - here is the correct fix.

  func calendar(_ calendar: JTACMonthView, shouldSelectDate date: Date, cell: JTACDayCell?, cellState: CellState, indexPath: IndexPath) -> Bool {

        if calendar.selectedDates.isEmpty {
            firstDate = nil
            return true
        }

        if twoDatesAlreadySelected && cellState.selectionType != .programatic || firstDate != nil && date < self.selectedDates[0] {
            firstDate = nil
            let retval = !self.selectedDates.contains(date)
            self.deselectAllDates()
            return retval
        }

        return true
    }

The problem with this is that its not a bug in the library.
It is a bug in my example app.
I will close this issue.

״The problem with this is that its not a bug in the library.
It is a bug in my example app.
I will close this issue.״
how about fixing the example? it will help others.

I am sorry, but I do not have the time to do that.
The examples are not meant to be production code. It is to give developers an idea on how to solve.
This bug in particular, is because I didnt check for nil.
It almost like using force unwrap in production.
if i fixed all the non-production errors in all my examples this will take me too much time.
So i would say this ->
Because this is a open source project, others can do the fix for me and push a fix. I will merge it.
I need all the help i can get, because I do not have much time anymore.

"This bug in particular, is because I didnt check for nil.
It almost like using force unwrap in production." - if you just check for nil, in some cases it will just hide the crash, the bug will still be there. (and will be harder to trace)
I am now using this grate lib in my project - if I shell find some useful fixes, production or not, I will push my code for review.
p.s*
thanks for the grate lib.

@alexvaiman
thank you. I appreciate it.


docs(architecture): delete the current validator folder

Description
As a person interested in leraning about Cactus I want to have documentation that is not out of date so that I'm not wasting my time reading materials that will not actually help me get ahead.
Currently the ./docs/architecture/validator/ folder only contains another folder (./docs/architecture/validator/leader-election) which has outdated information since we no longer have leader elections (as part of our push to have stateless API servers for horizontal scalability).
Also in general the readthedocs page of ours should be better organized which this will help with.
Acceptance Criteria

Delete the ./docs/architecture/validator folder.

cc: @jonathan-m-hamilton @takeutak @sfuji822

Can I work on this?

Can I work on this?

Absolutely! Thank you for the PR @sheetalsingala ! (And sorry for not responding here earlier, I was processing notifications backwards so your PR came first)


Restart extension will not update settings

Does this issue occur when all extensions are disabled?: No

VS Code Version: 1.92.2
OS Version: Windows 11

Steps to Reproduce:

Install this extension
This extension contains a simple js that sends a notification containing a test setting value.
In this 0.0.1 version, the setting is not added, so as expected, it shows undefined.
Now install 0.0.2
In this version, I set a default value 1 to test setting. The code prompts to restart extension, so restart. However, after the restart, the message still shows undefined.
Restart vscode, now the notification shows the correct default value 1

Thanks for creating this issue! It looks like you may be using an old version of VS Code, the latest stable release is 1.93.0. Please try upgrading to the latest version and checking whether this issue remains.
Happy Coding!

I can reproduce in the lastest version

Assigning to September for investigation

I have the same problem

Unfortunately, I am not able to access above linked extensions. Can you please attach them here directly by renaming VSIXs with .zip extension?

vscode-extension-is-setting-valid-0.0.1.zip
vscode-extension-is-setting-valid-0.0.2.zip

Unfortunately, I am not able to access above linked extensions. Can you please attach them here directly by renaming VSIXs with .zip extension?


Typing Examples Please

While taking on some "good first issues" the typing issues always seem to popup.  Wthout a good prior knowledge of Python types and custom Circuit Python types such as i2c: busio.I2C it's actually much harder than expected.  A place that lists most if not all the different types that can be used and examples of their syntax usage would be greatly appreciated.  Having that live inside the typing repo as an example or multiple examples seems the most logical place.
Tekktrik suggested making this an issue and volunteered as tribute to do it.

You can use the words type and class interchangeably. As such, a list of all of them would not be trivial to gather and keep up to date. And, in my opinion, would not be useful (too many stuff, no good way of finding relevant bits)
As per the syntax, typing in CircuitPython is (at least broadly) the same as doing it in any other Python implementation, every resource in the web about the topic should help getting a grasp of it.
Also, I expect most of the libraries to be using foo: class, foo: Optional[class] and perhaps some foo: Union[class_a, class_b] variables... If my assumption holds true, i'd recommend striking any library you want and learn as you go, as it wouldn't be too hard of a task.


When and can we expect react-quill to update to quill version 2.0 ?

Hello, the question here is dead simple.
If and when we can expect react-quill to update to quill version 2.0 ?
Because forks start to show up and confusion hits in, whether to use react-quill or https://www.npmjs.com/package/react-quill-new
This also makes some turmoil in projects using it.
Thanks for any answer!
Best!

Hello, the last commit here was 2 years ago,
I would recommend to just use quill 2.0, with react here:
https://quilljs.com/playground/react


[Merge Conflict Fix] port '[Merge Conflict Fix] port 'Master nightly CI fix ' to compatible' to develop

This is autogenerated Pull Request for porting #15772 to develop

!ci-build-me


Is there any way to change the size of the popover?

When I change the size in css, it looks like the generated base 64 data is not changing??

Hey there,
unfortunately I don't know a way on how to resize the popover.
the author of the jQuery plugin suggested the following:
https://github.com/claviska/jquery-minicolors/issues/160
I'm going to close the issue since it's not related to the angular-wrapper.
Thank you


feat: playground

1. Description

1.1. Checklist

[ ] The title of my PR starts with a Conventional Commit prefix (fix:, feat:, docs: etc).
[ ] I have read the Contributor Guide and followed the process outlined for submitting PRs.
[ ] I have updated/added tests for ALL new/updated/fixed functionality.
[ ] I have updated/added relevant documentation in docs and added dartdoc comments with ///.
[ ] I have updated/added relevant examples in examples.

1.2. Breaking Change

[ ] Yes, this is a breaking change.
[ ] No, this is not a breaking change.

1.3. Related Issues

Codecov Report

Merging #533 (32fb131) into main (6a7ffcd) will increase coverage by 6.23%.
The diff coverage is n/a.

:exclamation: Your organization is not using the GitHub App Integration. As a result you may experience degraded service beginning May 15th. Please install the Github App Integration for your organization. Read more.
@@            Coverage Diff             @@
##             main     #533      +/-   ##
==========================================
+ Coverage   68.52%   74.75%   +6.23%
==========================================
  Files         204       24     -180
  Lines        1903      408    -1495
==========================================
- Hits         1304      305     -999
+ Misses        599      103     -496

see 180 files with indirect coverage changes
:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more


feat(nav): Change active style

I changed the color to be consistent with the navigation theme that seems to center around using that blue for breadcrumbs:
Before

After

Let me know what you think @ttomsu

approved by ttomsu in person


[Bug]: Spacing between info icon and bug icon is different in release and multi env.

Is there an existing issue for this?

[X] I have searched the existing issues

Description
Spacing between info icon and bug icon is different in release and multi env. Spacing is more in multi env.

Steps To Reproduce
Refer to the screenshot
Public Sample App
No response
Issue video log
No response
Version
1.9.8

Seems fine now. Slight difference exists, but negligible


[BUG] Family name of type face is empty in AWS Elastic beanstalk.

Description
Family name of type face is empty in AWS Elastic beanstalk.
Code
SKFontStyleWeight sKFontStyleWeight = SKFontStyleWeight.Normal;
SKFontStyleSlant sKFontStyleSlant = SKFontStyleSlant.Upright;
SKFontStyleWidth sKFontStyleWidth = SKFontStyleWidth.Normal;
SKPaint paint = new SKPaint();
paint.TextSize = 11f;
paint.Color = new SKColor(Convert.ToByte(0), Convert.ToByte(0), Convert.ToByte(0));
paint.Typeface = SKTypeface.FromFamilyName("Times New Roman", sKFontStyleWeight, sKFontStyleWidth, sKFontStyleSlant);
Expected Behavior
Family name of the typeface is valid font name
Actual Behavior
Family name of the typeface  is empty
Basic Information

NuGet: SkiaSharp.NativeAssets.Linux.NoDependencies
Version with issue:  2.88.2
IDE:  Visual Studio 2022
Platform Target Frameworks: ASP.NET Core application with .NET 5.0 framework
Environment : AWS Elastic beanstalk

Note

This code works properly in windows.
If we used SkiaSharp.NativeAssets.Linux (2.88.2 ) NuGet instead of SkiaSharp.NativeAssets.Linux.NoDependencies (2.88.2 ) NuGet ,we faced following exception in AWS Elastic beanstalk

System.TypeInitializationException: The type initializer for 'SkiaSharp.SKImageInfo' threw an exception. ---> System.DllNotFoundException: Unable to load shared library 'libSkiaSharp' or one of its dependencies.

Hi SkiaSharp Team,
Any update on this?
Regards,
Anto Nihil S

You are using SkiaSharp in a limited environment that does not have any font-matching capabilities. Just load your typeface from a file stream or via some embedded resource.


Make 'Tick' serializable

The 'Tick' object is very central to the whole process, but it is not serializable. This means that it could not, for example, be natively serialized and sent over a message bus, such as Rabbit MQ.
I solved this problem myself by extending Tick and making it JSON-marshallable, using Jackson, but do you think it is reasonable for Tick object itself, in Ta4j to also be serializable?
I'm happy to do a PR (with tests) if you think this is worthwhile.
Regards,
James

Thank you for your interest (and for the PR (with tests) proposal) and sorry for the delay.
I think it's not worthwhile: you found an acceptable way to do what you were looking for and I don't want to enrich ta4j with non-strictly-business-related stuff. Tails (ta4j's father) became unmaintainable because it was full of features that were too far from the original problem (reporting, logging, charting, serialization, and more, and more...) and needed to be tested.
Anyway I really appreciate any idea and PR offer. Again thank you for that.
Marc

Hi Marc, that's no problem, I understand. Thanks for taking the time to explain and thanks for this great library!
James


support isolated declarations

Changes are visible to end-users: yes

Searched for relevant documentation and updated as needed: no
Breaking change (forces users to change their own code or config): yes
Suggested release notes appear below: no

Test plan

Manual testing; please provide instructions so we can reproduce: Used in the Airtable monorepo. Projects using isolated declarations pass isolated_declarations=True to ts_project. bazel build --build_tag_filters=typing --output_groups=types,typecheck <target>

Rebased on the TS upgrade, so this example should be functional now. I'd still like to verify all the actions have expected inputs and outputs, and maybe add an analysis test showing that.

Perhaps out of scope of this PR, but it would be interesting to consider an API similar to https://docs.aspect.build/rulesets/aspect_rules_ts/docs/rules#transpiler to allow specifying a non-tsc decleration emit tool (such as swc)

TypeScript doesn't ship a release yet that calls the new transpileDeclaration API, and I don't know of another tool that does. Maybe we'll have to cut scope here to just support the part of the feature which verifies your code is ready for isolatedDeclarations semantics but doesn't actually give the speed improvement yet.

Merged a PR on rules_swc to mirror the newest release that has the declaration emit feature, I'll give it a try...

Completed in https://github.com/aspect-build/rules_ts/pull/679


Ruby syntax error - unexpected end-of-input

For a while now, my slim files are riddled with errors like unexpected end-of-input sometimes with the added expecting keyword_then or ';' or '\n' and also assigned but unused variable even if it is actually used like no_items below. Mostly taken from the slim-lang.com example:

Any idea how to solve this? I tried many things but to no avail. I have Sublime Text 3.1.1 Build 3176.

Hey @gemp are you using a Sublime plugin to interpret Ruby? Like an analyzer? Does this affect your compilation to HTML?

Does SublimeLinter-ruby count as an analyzer @tshedor? If so, I have it. Deactivating it removes the errors in Slim but also in Ruby where syntax error isn't performed, which isn't cool.
The Slim compilation to HTML is handled by the slim-rails gem, I have nothing in Sublime to do that.

Ahh. That's out of the scope for this repo because your Ruby is valid and highlighted correctly. Sublime syntax highlights this line as Ruby which is probably where SublimeLinter-ruby is called.
So while I can't resolve this error in this repo (but feel free to open an issue with that package), perhaps you can selectively disable Slim files in the linter settings?
(This is untested)
...
"linters": {
  // The name of the linter you installed
  "ruby": {
    // Disables the linter. The default here is 'not set'
    "excludes": ["*.slim"],
  }
}
...


As a user, I want to be able to chat with other players while waiting in the lobby and during the game.

Acceptance criteria

[x] sopra-fs23-group-13/meme-it-server#37
[x] sopra-fs23-group-13/meme-it-server#82
[x] sopra-fs23-group-13/meme-it-client#28

Tests

[ ] A player in a lobby can not chat with players from a different one.
[ ] Chats should only be displayed in game lobbies and never on the main page.

closed by #118

https://github.com/sopra-fs23-group-13/meme-it-client/pull/65


app: Add async support for callback

python-ndn is writen by coroutine, but app doesn't support async function register, which means if a user-registered callback function is a timing consuming operation, it will still block everything. under this situation, async callback register is extreamily useful.

See #16
This design is on purpose: the producer must respond to the Interest first before it performs any operation that takes time.

Should we ensure whether interest is not expired or not like this way: we just sleep a certain time, and cancel the task when it is still run.
with async function, we can tell user their callback takes too long rather than let user debug and find this problem by themself.

You can use create_task to do whatever you want. There is no need to modify the library.
An async callback delays not only this packet but also blocks all future packets.

That's remind me. Thank you very much.


Add 'disabled' attribute as a shorthand

Add 'disabled' attribute as a shorthand, on par with src and readonly.

In general https://viewmodel.meteor.com/docs/bindings#enable already covers it.
I plan to remove the default attr shorthands and let you define which ones you want instead. Something like ViewModel.addAttributeBinding(['src','href','readonly','placeholder', 'disabled']).

Ok, then we'll wait)

Pick up 4.0.0 and see https://viewmodel.meteor.com/docs/bindings#attr

Getting better every day))

Btw, Alan Brito is an old kids joke.
Q: What's the name of the shortest wire in Spain?
A: Alan Brito
(it sounds like "alambrito" which means short wire in Spanish)
On Mar 8, 2016 11:42 AM, "Artem Saffron"<EMAIL_ADDRESS>wrote:

Getting better every day))
—
Reply to this email directly or view it on GitHub
https://github.com/ManuelDeLeon/viewmodel/issues/201#issuecomment-193908988
.


Add support for caching

Is your feature request related to a problem? Please describe.
I would like to be able to easily setup http caching in Unirest.
Describe the solution you'd like
Unirest.config().cacheConfig()
Describe alternatives you've considered
Manual setup which did not seem to work as there is no way to set cache context on Unirest call.
HttpCacheContext context = HttpCacheContext.create();
HttpGet httpget = new HttpGet("http://www.mydomain.com/content/");
CloseableHttpResponse response = cachingClient.execute(httpget, context);

 final CacheConfig cacheConfig = CacheConfig.custom()
                .setMaxCacheEntries(1000)
                .setMaxObjectSize(8192)
                .build();
        final RequestConfig requestConfig = RequestConfig.custom()
                .setConnectTimeout(30000)
                .setSocketTimeout(30000)
                .build();
        final CloseableHttpClient cachingClient = CachingHttpClients.custom()
                .setCacheConfig(cacheConfig)
                .setDefaultRequestConfig(requestConfig)
                .build();
        Unirest.config()
                .httpClient(ApacheClient.builder(cachingClient));

Now that I (and everyone else) is stuck at home for a while I figure I would get moving on this.
I don't want to just use Apache's cache because one of the goals of this project is to get off of Apache as a dependency. So I'm going to do my own caching layer. I'll try and split it up and do something simple and then add some more options. Here is what I was thinking:
MVP Features:

Cache will essentially just be a LinkedHashMap
Keys based on request verb, path, & headers
Ability to set

Max depth of cache (number of entries)
TTL of entries

Ability to clear cache

Advanced Features:

Ability to provide a custom function for calculating keys
Ability to set

Max individual value size
Max total cache size

Ability to provide a backing cache implementation so of someone wants to use ehcache, memcache, or redis they can with minimal work.

Any other thoughts are appreciated.

Complete in 3.8.00 see http://kong.github.io/unirest-java/#caching


Add example codes for documentation

📚 Documentation
I have observed that Example codes are missing from Documentation for the below mentioned Classes from torchaudio, Can I Raise PR for it
Group A

[x] Spectrogram  PR:https://github.com/pytorch/audio/pull/1566
[x] GriffinLim  PR:https://github.com/pytorch/audio/pull/1671/
[ ] AmplitudeToDB
[ ] MelScale
[ ] InverseMelScale
[ ] MFCC
[x] MuLawEncoding  PR:https://github.com/pytorch/audio/pull/1586
[x] MuLawDecoding  PR:https://github.com/pytorch/audio/pull/1684
[ ] SpectralCentroid

Group B

[x] Resample PR:https://github.com/pytorch/audio/pull/1644
[x] ComplexNorm PR:https://github.com/pytorch/audio/pull/1658
[ ] ComputeDeltas
[ ] TimeStretch
[x] Fade

Group C

[ ] FrequencyMasking
[ ] TimeMasking
[ ] Vol
[ ] SlidingWindowCmn
[ ] Vad

Hi @harishsdev
Yes, this will be a great addition. Feel free to add PRs. However, please split PRs for each class, (make one PR per class) so that it is easier to review.
Also, some of them are covered in tutorial, so please have a look it as well.
https://pytorch.org/tutorials/beginner/audio_preprocessing_tutorial.html#feature-extractions

I will make this issue open for contribution.

I am working on Group A

@mthrok please help to review

After following the instructions given in contributing.md for development and installation, when I am trying to build docs locally I am getting this error after running make html
Running Sphinx v2.4.4
checking for /home/vivek_kumar/OpenSource/audio/docs/source/refs.bib in bibtex cache... not found
parsing bibtex file /home/vivek_kumar/OpenSource/audio/docs/source/refs.bib... parsed 10 entries
loading intersphinx inventory from https://docs.python.org/objects.inv...
loading intersphinx inventory from https://docs.scipy.org/doc/numpy/objects.inv...
loading intersphinx inventory from https://pytorch.org/docs/stable/objects.inv...
intersphinx inventory has moved: https://docs.python.org/objects.inv -> https://docs.python.org/3/objects.inv
intersphinx inventory has moved: https://docs.scipy.org/doc/numpy/objects.inv -> https://numpy.org/doc/stable/objects.inv
building [mo]: targets for 0 po files that are out of date
building [html]: targets for 12 source files that are out of date
updating environment: [new config] 12 added, 0 changed, 0 removed
reading sources... [  8%] backend
reading sources... [ 16%] compliance.kaldi
reading sources... [ 25%] datasets
reading sources... [ 33%] functional
reading sources... [ 41%] index
reading sources... [ 50%] kaldi_io
reading sources... [ 58%] models
reading sources... [ 66%] rnnt_loss
reading sources... [ 75%] sox_effects
reading sources... [ 83%] torchaudio
reading sources... [ 91%] transforms
reading sources... [100%] utils

Warning, treated as error:
autodoc: failed to import class 'backend.common.AudioMetaData' from module 'torchaudio'; the following exception was raised:
No module named 'torchaudio'
Makefile:27: recipe for target 'html' failed
make: *** [html] Error 2

@mthrok please help me out to overcome this error!

Can I start working on Group B?

Hi @radioactive11! Sure, feel free to create a PR for each class in Group B.

@nateanl Thank you for letting me work on this issue. I am new to the repo. Should I add an example like this one?

@nateanl Thank you for letting me work on this issue. I am new to the repo. Should I add an example like this one?

Yes, exactly. You can see @harishsdev's #1566 as an example.

Hey
Can I work on this issue?

Hi @chiragoel
Sure go ahead.

Hi there - it looks like Group C is still open, so I thought I'd work on that.
Also note that FrequencyMasking and TimeMasking from Group C already have examples, but are still unchecked in the original post of this PR.

I believe Group C transforms should all have examples now, with the last two pending review.
@harishsdev Just checking if you were still planning on finishing up examples for Group A. If not, I'd be happy to work on those to help nudge this issue closer to being closed. :) I will give it a week for your response before working on Group A, in case you do plan to work on them.
If my tally is correct, the following transformations still need examples for Group A:

AmplitudeToDB
MelScale
InverseMelScale
MFCC

It seems that SpectralCentroid from Group A is currently unchecked in the first post of this issue, but I see that an example has already been added.
Thanks!

Per my last post here, I am starting work on the remaining examples for Group A, beginning with AmplitudeToDB.

Hi! It would be great to get feedback on the below:
We are getting close to completing all of the examples Harish originally proposed in this issue. However, there are some torchaudio transforms in the source code which are not in the original list here (perhaps some were added later). Some of these transforms also do not have examples yet, for instance: LFCC and SoudenMVDR.
Would it make sense to add a new group for these transforms that is not already listed in this issue, or create a new issue, or something else? Has a full tally of examples been done already or would this be a helpful addition?

Hi @ravimakhija, thanks for working on group A. I think adding a new group for the rest of transforms modules is a good idea.

Sounds good - I don't think I have permissions to edit the original post, so I will plan to add a new group as a new comment.

Hi All-
After tallying the remaining transform examples using the main branch source code, I have the following three updates:

All of the examples in group A, group B, and group C except for one (ComputeDeltas) are now included in the main branch. Hence, they can be checked off in Harish's original post (by anyone who has the permissions to do so).
The ComputeDeltas transform is checked off in Harish's original post, but it has not been merged yet (please see PR #2197).
There are six transforms that still need examples added, for which I am adding group D below. I plan to start working on adding these from the top down (e.g. starting with LFCC).

Group D:

[ ] LFCC
[ ] Loudness
[ ] MVDR
[ ] SoudenMVDR
[ ] RTFMVDR
[ ] PSD


Mistake, please ignore

Occurences of twitter.com -> x.com and when part of a URL replace occurrences of twitter -> x.
As of May 16th 2023, X has changed the domain name all thoroughout the website including to internal API calls.
Some functionality remains broken as it has been since the public API was turned off, but what I needed from this extension is once again functional.

Mistake, please ignore.

hey there @ara303 , hope you are doing well. do you have any other methods of contact? i'd like to have a quick chat regarding this extension.


add PR template

What's this PR do?

Adds a PR template

Where should the reviewer start?

They should read the template

How should this be manually tested?

You can't test it until after this PR is reviewed and accepted.

Any background context you want to provide?

In order to use the Git Pull Request Chrome Extension we need the template to be publicly available. This repo and pull request provides that.

What are the relevant tickets?
N/A
Screenshots (if appropriate)
What gif best describes this PR or how it makes you feel?

Definition of Done:

[x] Is there appropriate test coverage?
[x] Does this PR require a regression test? All fixes require a regression test.
[x] Does this PR require a blog post? If so, ensure marketing has signed off on content.
[ ] Does the wiki need to be updated?
[x] Does this add new dependencies? If so, do PIP requirements need to be updated?
[x] Will this feature require a new piece of infrastructure be implemented?
[x] Does this PR require GA events?
[x] Is there appropriate logging included?

+1! Good gif choice, as well. Can we add that to our PR template?


adding an AJ_Assert command

We have been using the Unit Testing Component for over a month now and we find it very useful. However, we have some old unit-tests that were written using the ASSERT command. We found out that it's so much easier to have an equivalent AJ_Assert to replace one ASSERT with 1 AJ_ASSERT. So that we can quickly convert our old methods.
ASSERT($success=True;"Expected true for success") // Old way
AJ_ASSERT($test;$success;True;$given;"Expected true for success") // New Way

We find it much easier to convert our old unit-tests to the new AJAR compliant one using this helper method.
The code for AJ_ASSERT is something simple like this:
$test:=$1
$test.expected:=$2
$test.actual:=$3
$test.given:=$4
$test.should:=$5
$test.assert()

Feedback: The listbox display view is convenient for quickly scrolling through the tests. However, It would be great to be able to see the failed rows in a different background color.

Feedback: The listbox display view is convenient for quickly scrolling through the tests. However, It would be great to be able to see the failed rows in a different background color.

Hi Tiran,
Thanks for the proposition.
I'm not sure if I want to integrate such wrapper method directly in the component.
Why?
Because I don't want to have too much dependencies and calls to any component method. This will make the builded application dependent on the Unit Test component. We don't want to deploy application with the Unit Test component to the final client.
That is why I prefer that you create this wrapper method by yourself in your database that will not have any dependency on the component itself. As you said it is very simple code to write.
As I remember you do not compile the application for you client, so you may not see the issue with that. People who build the application will have to create the wrapper manually anyway.
I prefer to give suck method as a "good practice to replace existing ASSERT method" rather than exposing an internal component one.
For the other proposition, I will implement it and build a new version of the component. I must come in few minutes :)

Hi Tiran,
Thanks for the proposition.
I'm not sure if I want to integrate such wrapper method directly in the component.
Why?
Because I don't want to have too much dependencies and calls to any component method. This will make the builded application dependent on the Unit Test component. We don't want to deploy application with the Unit Test component to the final client.
That is why I prefer that you create this wrapper method by yourself in your database that will not have any dependency on the component itself. As you said it is very simple code to write.
As I remember you do not compile the application for you client, so you may not see the issue with that. People who build the application will have to create the wrapper manually anyway.
I prefer to give suck method as a "good practice to replace existing ASSERT method" rather than exposing an internal component one.
For the other proposition, I will implement it and build a new version of the component. I must come in few minutes :)

The latest release contain this change. Let me know if this work on your side

Implement a visual feedback for the results listbox.
The text is red and bold for failing tests and green for passing tests.
https://github.com/AJARProject/AJ_Tools_UnitTest/releases/latest

The latest release contain this change. Let me know if this work on your side

Implement a visual feedback for the results listbox.
The text is red and bold for failing tests and green for passing tests.
https://github.com/AJARProject/AJ_Tools_UnitTest/releases/latest

Hi Gabriel,
Thank you! It makes sense. Thank you for the update.
We still cannot open the ‘method source code’ as it gives an error (see screenshot please)
Regards,
Tiran

On Jan 29, 2021, at 1:44 PM, Gabriel Inzirillo<EMAIL_ADDRESS>wrote:
Hi Tiran,
Thanks for the proposition.
I'm not sure if I want to integrate such wrapper method directly in the component.
Why?
Because I don't want to have too much dependencies and calls to any component method. This will make the builded application dependent on the Unit Test component. We don't want to deploy application with the Unit Test component to the final client.
That is why I prefer that you create this wrapper method by yourself in your database that will not have any dependency on the component itself. As you said it is very simple code to write.
As I remember you do not compile the application for you client, so you may not see the issue with that. People who build the application will have to create the wrapper manually anyway.
I prefer to give suck method as a "good practice to replace existing ASSERT method" rather than exposing an internal component one.
For the other proposition, I will implement it and build a new version of the component. I must come in few minutes :)
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub https://github.com/AJARProject/AJ_Tools_UnitTest/issues/1#issuecomment-770066716, or unsubscribe https://github.com/notifications/unsubscribe-auth/AF4222ZFJGI7LD23E75SBRTS4MT4DANCNFSM4WFTSCKA.

Hi Gabriel,
Thank you! It makes sense. Thank you for the update.
We still cannot open the ‘method source code’ as it gives an error (see screenshot please)
Regards,
Tiran

On Jan 29, 2021, at 1:44 PM, Gabriel Inzirillo<EMAIL_ADDRESS>wrote:
Hi Tiran,
Thanks for the proposition.
I'm not sure if I want to integrate such wrapper method directly in the component.
Why?
Because I don't want to have too much dependencies and calls to any component method. This will make the builded application dependent on the Unit Test component. We don't want to deploy application with the Unit Test component to the final client.
That is why I prefer that you create this wrapper method by yourself in your database that will not have any dependency on the component itself. As you said it is very simple code to write.
As I remember you do not compile the application for you client, so you may not see the issue with that. People who build the application will have to create the wrapper manually anyway.
I prefer to give suck method as a "good practice to replace existing ASSERT method" rather than exposing an internal component one.
For the other proposition, I will implement it and build a new version of the component. I must come in few minutes :)
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub https://github.com/AJARProject/AJ_Tools_UnitTest/issues/1#issuecomment-770066716, or unsubscribe https://github.com/notifications/unsubscribe-auth/AF4222ZFJGI7LD23E75SBRTS4MT4DANCNFSM4WFTSCKA.


Exclude sample content from dependabot

We should confirm that snyk also excludes the sample content (and that that is appropriate) otherwise we'll get (semi) spurious security alerts with snyk too

Dependabot does not have a feature to exclude directories from updates.


[SUPPORT] First written data disappears when I append second data for schema evolution in example code.

Describe the problem you faced
I could check only the last appended data, not the first writen data when I execute hudi schema evolution example code in this URL.
To Reproduce
Steps to reproduce the behavior:

Run hudi schema evolution example using spark-shell or sbt test command or something.
Check result data.

Expected behavior
Row count of result table should be 5.(not 3) All saved data should remain well.
Environment Description

Hudi version : 0.8.0, 0.9.0

Spark version : 3.0.1

Hive version : -

Hadoop version : 2.7.4

Storage (HDFS/S3/GCS..) : local storage

Running on Docker? (yes/no) : no

Local Environment: macOS Big Sur 11.6.1

Additional context
This problem does not happen when I executed in HDFS. When I execute using IntelliJ test case, it`s OK, but when I execute using spark-shell or sbt test to save local storage, it happens.
Execution Log
Welcome to
      ____              __
     / __/__  ___ _____/ /__
    _\ \/ _ \/ _ `/ __/  '_/
   /___/ .__/\_,_/_/ /_/\_\   version 3.2.0
      /_/

Using Scala version 2.12.15 (OpenJDK 64-Bit Server VM, Java 11.0.12)
Type in expressions to have them evaluated.
Type :help for more information.

scala> import org.apache.hudi.QuickstartUtils._
import org.apache.hudi.QuickstartUtils._

scala> import scala.collection.JavaConversions._
import scala.collection.JavaConversions._

scala> import org.apache.spark.sql.SaveMode._
import org.apache.spark.sql.SaveMode._

scala> import org.apache.hudi.DataSourceReadOptions._
import org.apache.hudi.DataSourceReadOptions._

scala> import org.apache.hudi.DataSourceWriteOptions._
import org.apache.hudi.DataSourceWriteOptions._

scala> import org.apache.hudi.config.HoodieWriteConfig._
import org.apache.hudi.config.HoodieWriteConfig._

scala> import org.apache.spark.sql.types._
import org.apache.spark.sql.types._

scala> import org.apache.spark.sql.Row
import org.apache.spark.sql.Row

scala> val tableName = "hudi_trips_mor"
tableName: String = hudi_trips_mor

scala>     val basePath = "file:///tmp/hudi_trips_mor"
basePath: String = file:///tmp/hudi_trips_mor

scala>     val schema = StructType( Array(
     |       StructField("rowId", StringType,true),
     |       StructField("partitionId", StringType,true),
     |       StructField("preComb", LongType,true),
     |       StructField("name", StringType,true),
     |       StructField("versionId", StringType,true),
     |       StructField("intToLong", IntegerType,true)
     |     ))
schema: org.apache.spark.sql.types.StructType = StructType(StructField(rowId,StringType,true), StructField(partitionId,StringType,true), StructField(preComb,LongType,true), StructField(name,StringType,true), StructField(versionId,StringType,true), StructField(intToLong,IntegerType,true))

scala>     val data1 = Seq(Row("row_1", "part_0", 0L, "bob", "v_0", 0),
     |       Row("row_2", "part_0", 0L, "john", "v_0", 0),
     |       Row("row_3", "part_0", 0L, "tom", "v_0", 0))
data1: Seq[org.apache.spark.sql.Row] = List([row_1,part_0,0,bob,v_0,0], [row_2,part_0,0,john,v_0,0], [row_3,part_0,0,tom,v_0,0])

scala>     var dfFromData1 = spark.createDataFrame(data1, schema)
warning: one deprecation (since 2.12.0); for details, enable `:setting -deprecation' or `:replay -deprecation'
dfFromData1: org.apache.spark.sql.DataFrame = [rowId: string, partitionId: string ... 4 more fields]

scala>     dfFromData1.write.format("hudi").
     |       options(getQuickstartWriteConfigs).
     |       option(PRECOMBINE_FIELD.key(), "preComb").
     |       option(RECORDKEY_FIELD.key(), "rowId").
     |       option(PARTITIONPATH_FIELD.key(), "partitionId").
     |       option("hoodie.index.type","SIMPLE").
     |       option(TBL_NAME.key(), tableName).
     |       option(TABLE_TYPE.key(), "MERGE_ON_READ").
     |       mode(Overwrite).
     |       save(basePath)
21/11/30 16:38:23 WARN HoodieSparkSqlWriter$: hoodie table at file:/tmp/hudi_trips_mor already exists. Deleting existing data & overwriting with new data.

scala>     var tripsSnapshotDF1 = spark.read.format("hudi").load(basePath + "/*/*")
tripsSnapshotDF1: org.apache.spark.sql.DataFrame = [_hoodie_commit_time: string, _hoodie_commit_seqno: string ... 9 more fields]

scala>     tripsSnapshotDF1.show(false)
+-------------------+--------------------+------------------+----------------------+----------------------------------------------------------------------+-----+-----------+-------+----+---------+---------+
|_hoodie_commit_time|_hoodie_commit_seqno|_hoodie_record_key|_hoodie_partition_path|_hoodie_file_name                                                     |rowId|partitionId|preComb|name|versionId|intToLong|
+-------------------+--------------------+------------------+----------------------+----------------------------------------------------------------------+-----+-----------+-------+----+---------+---------+
|20211130163823     |20211130163823_0_1  |row_3             |part_0                |341703d8-672f-4651-8e96-59f4d98247ee-0_0-14-211_20211130163823.parquet|row_3|part_0     |0      |tom |v_0      |0        |
|20211130163823     |20211130163823_0_2  |row_2             |part_0                |341703d8-672f-4651-8e96-59f4d98247ee-0_0-14-211_20211130163823.parquet|row_2|part_0     |0      |john|v_0      |0        |
|20211130163823     |20211130163823_0_3  |row_1             |part_0                |341703d8-672f-4651-8e96-59f4d98247ee-0_0-14-211_20211130163823.parquet|row_1|part_0     |0      |bob |v_0      |0        |
+-------------------+--------------------+------------------+----------------------+----------------------------------------------------------------------+-----+-----------+-------+----+---------+---------+

scala>  val newSchema = StructType( Array(
     |       StructField("rowId", StringType,true),
     |       StructField("partitionId", StringType,true),
     |       StructField("preComb", LongType,true),
     |       StructField("name", StringType,true),
     |       StructField("versionId", StringType,true),
     |       StructField("intToLong", LongType,true),
     |       StructField("newField", StringType,true)
     |     ))
newSchema: org.apache.spark.sql.types.StructType = StructType(StructField(rowId,StringType,true), StructField(partitionId,StringType,true), StructField(preComb,LongType,true), StructField(name,StringType,true), StructField(versionId,StringType,true), StructField(intToLong,LongType,true), StructField(newField,StringType,true))

scala>     val data2 = Seq(Row("row_2", "part_0", 5L, "john", "v_3", 3L, "newField_1"),
     |       Row("row_5", "part_0", 5L, "maroon", "v_2", 2L, "newField_1"),
     |       Row("row_9", "part_0", 5L, "michael", "v_2", 2L, "newField_1"))
data2: Seq[org.apache.spark.sql.Row] = List([row_2,part_0,5,john,v_3,3,newField_1], [row_5,part_0,5,maroon,v_2,2,newField_1], [row_9,part_0,5,michael,v_2,2,newField_1])

scala>     var dfFromData2 = spark.createDataFrame(data2, newSchema)
warning: one deprecation (since 2.12.0); for details, enable `:setting -deprecation' or `:replay -deprecation'
dfFromData2: org.apache.spark.sql.DataFrame = [rowId: string, partitionId: string ... 5 more fields]

scala>     dfFromData2.write.format("hudi").
     |       options(getQuickstartWriteConfigs).
     |       option(PRECOMBINE_FIELD.key(), "preComb").
     |       option(RECORDKEY_FIELD.key(), "rowId").
     |       option(PARTITIONPATH_FIELD.key(), "partitionId").
     |       option("hoodie.index.type","SIMPLE").
     |       option(TBL_NAME.key(), tableName).
     |       option(TABLE_TYPE.key(), "MERGE_ON_READ").
     |       mode(Append).
     |       save(basePath)

scala>     var tripsSnapshotDF2 = spark.read.format("hudi").load(basePath + "/*/*")
tripsSnapshotDF2: org.apache.spark.sql.DataFrame = [_hoodie_commit_time: string, _hoodie_commit_seqno: string ... 10 more fields]

scala>     tripsSnapshotDF2.show(false)
+-------------------+--------------------+------------------+----------------------+----------------------------------------------------------------------+-----+-----------+-------+-------+---------+---------+----------+
|_hoodie_commit_time|_hoodie_commit_seqno|_hoodie_record_key|_hoodie_partition_path|_hoodie_file_name                                                     |rowId|partitionId|preComb|name   |versionId|intToLong|newField  |
+-------------------+--------------------+------------------+----------------------+----------------------------------------------------------------------+-----+-----------+-------+-------+---------+---------+----------+
|20211130163841     |20211130163841_0_4  |row_2             |part_0                |341703d8-672f-4651-8e96-59f4d98247ee-0_0-37-427_20211130163841.parquet|row_2|part_0     |5      |john   |v_3      |3        |newField_1|
|20211130163841     |20211130163841_0_5  |row_5             |part_0                |341703d8-672f-4651-8e96-59f4d98247ee-0_0-37-427_20211130163841.parquet|row_5|part_0     |5      |maroon |v_2      |2        |newField_1|
|20211130163841     |20211130163841_0_6  |row_9             |part_0                |341703d8-672f-4651-8e96-59f4d98247ee-0_0-37-427_20211130163841.parquet|row_9|part_0     |5      |michael|v_2      |2        |newField_1|
+-------------------+--------------------+------------------+----------------------+----------------------------------------------------------------------+-----+-----------+-------+-------+---------+---------+----------+

scala> tripsSnapshotDF2.count()
res4: Long = 3

@yyar the spark shell environment shows it's spark 3.2, probably causing different behavior from your intellij environment where spark 3.0.x was used. in 0.9 and 0.8, spark 3.2 wasn't supported. can you try fixing the spark shell version and see if it  persists?

@xushiyan You're right. When I ran spark-shell in 3.0.1, this behavior doesn't appear and it happens in 3.2.0. One strange point is when I ran using sbt. I will check running in sbt and reply again. Thanks.

@xushiyan
I found a cause of this problem when I'm using sbt. The embedded-kafka library for testing kafka streaming had been caused this problem. I removed this line in my test dependency and my test had been changed to be ok.
  "io.github.embeddedkafka" %% "embedded-kafka" % "2.4.1" % "test",

I think dependency libraries in embedded-kafka can cause this problem and same library may been used in spark 3.2. Can you please explain this problem occurs when using spark 3.2 at code level?

@xushiyan : with 0.10.0, we have made default compile version for spark3 as 3.2.0 right? is this going to cause any serious issue then?

@xushiyan : with 0.10.0, we have made default compile version for spark3 as 3.2.0 right? is this going to cause any serious issue then?

in 0.10.0 it's built against spark 3.1.2, not 3.2. Don't think this would cause any serious issue. People can still build with maven profile spark3.0.x for earlier version they use, whenever they decide to upgrade the jar. The release notes are clear about this.

@xushiyan I found a cause of this problem when I'm using sbt. The embedded-kafka library for testing kafka streaming had been caused this problem. I removed this line in my test dependency and my test had been changed to be ok.
  "io.github.embeddedkafka" %% "embedded-kafka" % "2.4.1" % "test",

I think dependency libraries in embedded-kafka can cause this problem and same library may been used in spark 3.2. Can you please explain this problem occurs when using spark 3.2 at code level?
(added) After excluding avro library in embedded-kafka, my unit test had been ok which contains embedded-kafka library. Could a specific version of avro library cause this problem?

@yyar actually i don't quite understand your scenario. Are you saying you have a sbt project with hudi dependency and there is dependency conflict? you can always exclude transitive dependency. you can also activate spark-shade-unbundle-avro maven profile to build a hudi jar without spark-avro. is this the avro library you're talking about?

gotcha, my bad. mistook 3.1.2 for 3.2. thanks.

@xushiyan
I initially posted a question that both the spark version and sbt happen. Looking at my sbt problem, I assume that avro version (probably upper than 1.8.2) will have a problem in hudi. Last time I asked code level question, I wanted to know why this happens when I reference that avro library.
If it is not appropriate to ask a question here, you may close this issue.

It's fine. Good to get it clarified. will close out the issue since you get past the original issue.


Modify: Mozilla.Firefox.ESR version 115.6.0

Created by 🥟 Dumplings.
Microsoft Reviewers: Open in CodeFlow

Automatic Validation ended with:

Error information:
Http Response: OK
Http Reason Phrase: OK
Error occurred while downloading installer from https://download-installer.cdn.mozilla.net/pub/firefox/releases/115.6.0esr/win64/ta/Firefox Setup 115.6.0esr.exe. The process cannot access the file 'C:\local\Temp\WinGetSvc-Validation-385-153632-20240516-1\8fbb52df-cdb0-4c53-b702-e679f9ca869c' because it is being used by another process..
Error information:
Http Response: OK
Error information:
Http Response: OK
Http Reason Phrase: OK
Error occurred while downloading installer from https://download-installer.cdn.mozilla.net/pub/firefox/releases/115.6.0esr/win32/pt-BR/Firefox Setup 115.6.0esr.exe. The process cannot access the file 'C:\local\Temp\WinGetSvc-Validation-385-153632-20240516-1\9ea76f44-f432-4cd0-814f-6df606c34ea7' because it is being used by another process..
Error information:
Http Response: OK
Error information:
Http Response: OK
Http Reason Phrase: OK
Error occurred while downloading installer from https://download-installer.cdn.mozilla.net/pub/firefox/releases/115.6.0esr/win32/es-MX/Firefox Setup 115.6.0esr.exe. The process cannot access the file 'C:\local\Temp\WinGetSvc-Validation-385-153632-20240516-1\cc0fdfdc-2fdc-4af2-8f33-1d9106c729fb' because it is being used by another process..
Error information:
Http Response: OK
Error information:
Http Response: OK
Http Reason Phrase: OK
Error occurred while downloading installer from https://download-installer.cdn.mozilla.net/pub/firefox/releases/115.6.0esr/win32/en-CA/Firefox Setup 115.6.0esr.exe. The process cannot access the file 'C:\local\Temp\WinGetSvc-Validation-385-153632-20240516-1\e13af13b-c891-4e20-8388-289c4c21dbab' because it is being used by another process..
Error information:
Http Response: OK
Error information:
Http Response: OK
Http Reason Phrase: OK

5/16/2024 12:26:39 AM
(Automated response - build 881.)

URL: https://download-installer.cdn.mozilla.net/pub/firefox/releases/115.6.0esr/win32/en-US/Firefox Setup 115.6.0esr.exe
Status Code: 200
(Automated message - build 881)

Hi @SpecterShell,
This manifest adds Apps and Features entries that aren't present in previous PR versions. These entries should be added to the previous versions, or removed from this version.
(Automated response - build 881.)


Fix panic in etwtracer stop hook

What does this PR do?

Add initialization checks to etwtracer component stop fx lifecycle hook.
Motivation

https://datadoghq.atlassian.net/browse/WINA-841
The start hook can exit early but doesn't return an error so as to not block agent startup. This leaves some struct fields uninitialized. In these cases once its stop hook is called it panics.
Additional Notes

easiest way to reproduce this is by running the agent twice. the etwtracer component start hook will fail because the named pipe is already in use.
I believe this has been present since the component was added in Agent 7.51.
Possible Drawbacks / Trade-offs

Describe how to test/QA your changes

e2e test added to cover expected behavior when agent is run twice

/merge


[Bug]: Unable to configure authentication through Authentication/Commit Author Options

Describe the bug
According to the Getting Started documentation, I should be able to configure my GitHub username and password (personal access token) in the "Authentication/Commit Author" section of Options. I see a "Commit Author" section but no options to configure authentication.
Relevant errors (if available) from notifications or console (CTRL+SHIFT+I)
No response
Steps to reproduce

Open up Options for the Git community plugin
Confirm that there does not exist an option to configure authentication

Expected Behavior
The Options for this plugin should contain a section for "Authentication/Commit Author".
Addition context
Obsidian v1.7.7
I was able to work around this by manually configuring remote, authentication, commit author, and first commit/push:

Cloning my existing remote repository (I happened to do with with the Git plugin command)
git remote remove origin
git remote add origin https://<personal access<EMAIL_ADDRESS>git config user.name and git config user.email
git add .gitignore, commit, and git push --set-upstream origin main

Opening Obsidian at the path of this Git repository is now authenticated and properly commit-and-syncs with the plugin.
Operating system
macOS
Installation Method
None
Plugin version
2.30.1

The documentation you are referring to is for mobile devices and not for desktop Obsidian. Please refer to this documentation instead: https://publish.obsidian.md/git-doc/Authentication

Thanks for the clarification!


[JMS] temporary destinations cannot be destroyed

Description:
If I'm doing request-reply on JMS, I have to create temporary destinations for the reply message within the JMS session.
Now, those destinations pile up, since there is no function to actually destroy those destinations.
The only solution I found so far is to regularly restart the whole ballerina process to terminate the session and therefore clear all temporary destinations.
Steps to reproduce:
Create a temporary destination though a JMS session.
Affected Versions:
all
OS, DB, other environment details and versions:
Suggested Labels (optional):
Component/JMS
Suggested Assignees (optional):

I am closing this issue. Since we moved JMS module to https://github.com/wso2-ballerina/module-jms repository.
Please refer wso2-ballerina/module-jms#19 to get latest updates of this issue


Radom jit for customized jacrev

import jax.numpy as jnp
from jax import custom_vjp
from jax import jit
from jax import jacrev
import time

@custom_vjp
@jit
def f(x):
  print("called f!")
  return jnp.sin(x)

@jit
def f_fwd(x):
  print("called f_fwd!")
  return f(x), jnp.cos(x)

@jit
def f_bwd(cos_x, y_bar):
  print("called f_bwd!")
  return (cos_x * y_bar,)

f.defvjp(f_fwd, f_bwd)

for i in range(5):
  start = time.time()
  print(jacrev(f)(3.0))
  print("duration", time.time()-start)
  print("============")

If you run the previous codes many times (for example 10),  you will different results for the same code. And different results imply random compiling customized jacrev function.

On my mac， called f_bwd! will show up 2 times.

However, sometimes the result will be like

"called f_bwd!" implies jit recompiling with longer duration.
The behavior under Linux is also different with called f_bwd! once for most of the time. However, randomness still exists.

I edited your code to use a for loop for clarity - hope that's OK.
I'm not entirely sure why you're seeing indeterminate behavior, but one thing to note is that in the way you've set this up, f_fwd and f_rev will always be called with tracer objects, and tracer objects are not yet supported by JAX's default JIT cache mechanism (see https://github.com/tensorflow/tensorflow/blob/596967c699fd6b742cd11926b9d0ea2fbedc599c/tensorflow/compiler/xla/python/jax_jit.cc#L800-L801)
So my baseline expectation (if you're using the most recent jaxlib version) is that these functions would be re-compiled each time they are called.
As for why they are not recompiled in some runs, I'm not sure.

One way you can fix the issue entirely is to wrap the outer function in jit:
f_jacrev = jit(jacrev(f))

for i in range(5):
  start = time.time()
  print(f_jacrev(3.0))
  print("duration", time.time()-start)
  print("============")

then the whole thing will only be compiled once.

As the customized jacrev base function is a part of outer none-jit but differentiable function, and differential part is automatic, it is hard to jit jacrev in each diff chain. Moreover, the compiling time is very long for my real case.

I'm assigning to @zhangqiaorjc, because he might know more about this TODO.

Hi @Wedthree
Looks like this issue has been resolved. I executed the mentioned code on colab with JAX version 0.4.23. All the three functions have been called only once.
import jax.numpy as jnp
from jax import custom_vjp
from jax import jit
from jax import jacrev
import time

@custom_vjp
@jit
def f(x):
  print("called f!")
  return jnp.sin(x)

@jit
def f_fwd(x):
  print("called f_fwd!")
  return f(x), jnp.cos(x)

@jit
def f_bwd(cos_x, y_bar):
  print("called f_bwd!")
  return (cos_x * y_bar,)

f.defvjp(f_fwd, f_bwd)

for i in range(5):
  start = time.time()
  print(jacrev(f)(3.0))
  print("duration", time.time()-start)
  print("============")

Output:
called f_fwd!
called f!
called f_bwd!
-0.9899925
duration 0.31082868576049805
============
-0.9899925
duration 0.006571531295776367
============
-0.9899925
duration 0.00391077995300293
============
-0.9899925
duration 0.004708528518676758
============
-0.9899925
duration 0.004668712615966797
============

Attaching the colab gist for reference.
Also verified this behavior on mac and it results the same. Please find the screenshot for reference.

Could you please verify and confirm.
Thank you

Thanks for the followup @rajasekharporeddy – it looks like this can be closed!


feign-reactor-java11: make "transfer-encoding: chunked" optional

When using feign-reactor-java11, the generated HTTP requests contain the header "transfer-encoding: chunked". Since this is a problem for some servers, I suggest adding an option to disable chunked encoding. Or maybe disabling it by default.
The relevant line in feign-reactor-java11is this. There, fromPublisher is called without a contentLength argument. If contentLength would be set, the "transfer-encoding" header would not be inserted.
Btw, thanks for your work on this great library. :)

It's tricky to calculate contentLength in general for reactive approach.
From my perspective it's issue of your servers.
Reopen issue please if you would like to introduce PR.


Fixed --keep_invisible defaults, closes #3514

Description
Set the flag --keep_invisible to default to 1 for lossless processing, and 0 for lossy.
Pull Request Checklist

[x] CLA Signed: Have you signed the Contributor License Agreement (individual or corporate, as appropriate)? Only contributions from signed contributors can be accepted.
[x] Authors: Have you considered adding your name to the AUTHORS file?
 You can use ./ci.sh lint for automatic code formatting.

Please review the full contributing guidelines for more details.

@jonsneyers: I talked with @mo271 and were discussing how to actually verify that it solves the problem.
I have so far been unable to actually repro the reported error, I suspect my example PNG doesn't look like it should.
I'll  bring this up in the issue thread.


using multiple instances of an custom element with template parts does not work properly

While trying out Template Parts, following the example in the Aurelia documentation, I encountered an inconsistent behavior. Using the custom-element below as an example (copied from Aurelia documentation)
example.js
export class Example {
  constructor(){
    this.items = [1,2,3,4,5];
  }

  bind(context){
    this.$parent = context;
  }
}

example.html
<template>

      <template replaceable part="item-template">
        Original: ${item}
      </template>

</template>

I placed two instances of the above custom-element on the welcome page of the skeleton-navigation as shown below
<template>
  <require from="example"></require>

      --------------

Original

      <example></template>

Replace-Part

      <example>
        <template replace-part="item-template">
          Replacement: ${item} ${$parent.$parent.fullName}
            <button click.delegate="$parent.$parent.welcome()">Test</button>
        </template>
      </example>

</template>

only the first instance renders, but if I switch them as shown below
<template>
  <require from="example"></require>

      --------------

Replace-Part

      <example>
        <template replace-part="item-template">
          Replacement: ${item} ${$parent.$parent.fullName}
            <button click.delegate="$parent.$parent.welcome()">Test</button>
        </template>
      </example>

Original

      <example></template>

</template>

both instances renders correctly. Is this the intended behavior or a bug?

This is a strange bug. I will look into it. I have confirmed it is reproducible using the above code.

I'm happy to tell you that this is easy to fix :) You have a typo in your html which results in html parser issues in the browser. Your second example has the incorrect closing tag. It should be </example> but you have </template> instead.

@EisenbergEffect thank you for the catch.

i am experiencing this as well. it seems like i can only use the custom element once. which is weird


Sometimes, mp3 files are left with a *.mp3-320 file extension

Basically, title.
Steps to reproduce - download a large collection, a number of tracks usually are bound to have the wrong file extension.
Fine the files with:
find  /your/directory/path -name '*.mp3-320'

Workaround: rename the files with:
find /your/directory/path -type f -name '*mp3-320' -exec sh -c 'mv "$1" "${1%-320}"' _ {} \;

This was because single file downloads had to use the bandcamp supplied format as the file extension and this sometimes included the bitrate along with the format. The above commit should fix this and I'll bundle it into a release later. Thanks for the issue.


Make all tests clean up after themselves

Currently, if you run tests there are some actions that stay in the database, you are able to see them in the Admin Logs. We want to make sure that if there is a test making any changes to the database we reset those changes after that test finishes running so that it doesn't impact our other tests. Go through and find the tests that are leaving things they shouldn't be and clean them up and make sure all the tests still work.

 Make all tests clean up after themselves #724


Enqueue videos

When enqueuing a video probably adds it twice in the queue list.
Edit: Not probably. It does.

 :(


Uncaught Error: Class 'Zend\InputFiler\InputFilterAbstractServiceFactory' not found

After update the tag 1.3.0 was added a call to a namespace with some ortographic mistake.

Duplicated. Fixed in #71

Resolved in release 1.3.1. It can be closed.


Clean-up and update README

Help new users getting started with this repo by putting and concise information in the README and pointing to other places with centralised information like dbt docs, our contributing guide etc.

Contribution docs update is here


The Fortran lexer should recognise .F and .F90 files as well

(Original issue 661 created by pefarrell on 2011-04-24T16:27:59.106884+00:00)
Hi,
In the Fortran community, the standard convention is that .f/.f90 files should not be preprocessed by the C preprocessor, but .F/.F90 files should be; it's very common for codes written in Fortran to suffix their filenames with .F90 so that they can use the C preprocessor. However, the FortranLexer only recognises .f/.f90 files, and doesn't recognise .F/.F90 files. Would it be possible to change that?
I've attached a proposed diff to change this.
Thanks!

(Original issue 661 last updated on 2011-05-11T12:58:53.435134+00:00)
(Issue automaticaly closed due to status in Bitbucket: resolved)

(Original comment by birkenfeld on 2011-04-29T12:04:27.138658+00:00)
Fixed in <>.


Encrypted Password - "Failed to fetch"

I am receiving a "Failed to fetch" error when attempting to my account in the Otter Roam Depot interface.
I have tried from my desktop Mac (with latest OS updates) & iOS using two different Roam Research accounts.
(As this is my first ever reporting of an "issue" anywhere on GitHub, I hope I am doing it correctly)

Could you email a video to<EMAIL_ADDRESS>depicting the issue? We expect this to be working again


exec: fix hang if control path is deleted

if the control path file is deleted, libpod hangs waiting for a reader
to open it.  Attempt to open it as non blocking until it returns an
error different than EINTR or EAGAIN.
Signed-off-by: Giuseppe Scrivano<EMAIL_ADDRESS>

LGTM
@mheon @vrothberg @baude @jwhonce @QiWang19 @TomSweeneyRedHat PTAL

/lgtm
/hold

/lgtm

rebased, need a new lgtm

/lgtm

/hold cancel


Please reconsider the strategy in RandomState for getting a hashing key

In order for aHash to achieve DOS resistance, the key used for the hash must be a secret not known to the attacker.
However, a problem (not only for rust but for all low-level programming that needs randomness) is that there are not usually completely portable APIs for getting randomness. In rust stdlib the APIs for randomness are in std and not core.
This is a big pain for hashmaps and AFAIK it is the only reason that the stdlib hashmap is not in alloc crate like all the other collections. That is very annoying for people trying to port their code that uses hashmaps to an environment with no operating system. Portability is super important for rust and not enough libraries in the ecosystem pay attention to this. So I appreciate your focus on this and the efforts you went to try to make something that will work.
Here's the strategy that I see based on review of the current code. (https://github.com/tkaitchuck/aHash/blob/master/src/random_state.rs)
(1) The const-random feature gets randomness at compile time and bakes it into the binary as a constant.
(2) The RandomState default implementation also mixes in the addresses of some stack and global variables, with a code comment explaining that ASLR will randomize these addresses, so this is like a source of randomness.
However, there are a few big problems with this:
(1) Turning on const-random feature basically means that I am baking my secret keys into the binary. It is NOT normally okay to assume that the attacker does not have the binary. People make releases on github of their binaries all the time. Even if their project is not open source, all kinds of engineers and contractors are likely to have access to a build that runs on the servers. If anyone who has the binary can extract the key and then DOS the server, that is terrible and way outside the threat model for most projects. This basically runs up against Kerckhoff's law: https://en.wikipedia.org/wiki/Kerckhoffs's_principle
It is not enough for the key to be chosen randomly "at some point in time", and rolling the random dice in the build.rs doesn't really fix anything. The point of choosing the key randomly at all is to make it a secret from the attacker, who is assumed not to have access to the specific machine where the process is running.
(2) Turning on the const-random feature throws repeatable builds out the window. Most of the time when people move security-critical code around, they will do things like take hashes of the binaries to confirm a correct download or a correct build. No one expects that a process is going to intentionally bake random bytes into the binary. In some cases, like SGX, not having a repeatable build destroys the guarantees of SGX -- the point is that someone else could build your software from scratch and get the same hash as the remote SGX hardware is telling them. A year ago, I had to spend several days tracking down why our SGX enclave build is not repeatable, by diffing the intermediate build artifacts repeatedly until I could isolate the problem, and the problem was aHash const-random feature. I now basically have to screen every third party lib we add to the project to check if there is an aHash somewhere in the tree without const-random feature disabled. This is a major footgun that will have to be disabled in serious projects, so I would argue that it should just be removed.
(3) If const-random is off, then the only source of entropy in our keys is ASLR. Here's the thing: ASLR is an OS feature. If you don't have an OS, you probably don't have ASLR either. You generally don't have ASLR in embedded devices, and you don't have ASLR in SGX enclaves. In fact, in any case where ASLR would be present, I expect that you can simply ask the OS for randomness instead of using pointer tricks based on ASLR assumption. The advantage of using a standard API for getting randomness from the OS, instead of trying to extract randomness indirectly via ASLR, is that ASLR is not actually an interface for getting randomness, and may not actually give you a secret random value like you would get from a normal interface. ASLR is a defense-in-depth technique to try to defend against ROP. But the address offsets can leak depending on the structure of the rest of your program. If you simply ask the OS for randomness instead of trying to rely on ASLR, then the OS will give you a value that can't be leaked or inferred in this way.
If there is no ASLR present on the system, then the secret key derivation in aHash likely fails in a manner similar to the debian Random Number Generator Bug from some years ago. Assuming that const-random is off, or that the adversary has a copy of the binary, there isn't really any other entropy present, so, game over, no DOS resistance.
So unfortunately, although we did all this work to try to make the library more portable and help the people working on no_std environments, embedded devices and such, we likely just created bigger problems for them, because we didn't use a standard API for obtaining randomness for secret keys.

I want to suggest an alternate approach: In the last year or so, the getrandom crate has matured and offers no_std support. This now appears to me to be the best and most portable way to obtain randomness. It is also the basis of OsRng now in the  rand crate.
What I would suggest is:
(1) RandomState should get entropy from the getrandom crate, which becomes an optional dependency of AHash.
(2) When getrandom crate is not available, don't offer a default-initialized RandomState -- force the user to use the with_keys API and provide secret keys on their own, or tell them to patch the getrandom crate so that it will work for their target. (And ideally submit that patch upstream)
(3) All the const-random and ASLR-based key derivation should just go away.
This way, in an environment where ASLR is not actually present, instead of silently building insecure stuff, we fail at build time.
By using standard APIs and investing our maintenance energies in them, we can avoid one-off tricks and strengthen the ecosystem as a whole.

hashbrown uses AHash as its default hash function not because it is DoS resistant but because it is a pretty fast hash function that is on par with FxHash but avoids FxHash's poor bit mixing. hashbrown makes no guarantees on DoS resistance with its default hasher so we would be OK with just using with_keys(0, 0) or some other method of obtaining default keys without relying on OS randomness.

Sure -- hashbrown should configure aHash in whatever way will meet the goals of hashbrown default config.
But ahash main page says this

AHash is the fastest DOS resistant hash for use in HashMaps available in the Rust language. Failing in any of these criteria will be treated as a bug.

And other projects are using it, like this one:
https://github.com/xacrimon/dashmap
This one uses ahash not via hashbrown, and without default-features=false, so they all get the const-random build breakage stuff.
This one uses it, presumably for portability:
https://docs.rs/lasso/0.3.1/src/lasso/lib.rs.html#359
mod hasher {
    compile! {
        if #[feature = "ahasher"] {
            pub use ahash::RandomState;
        } else {
            pub use std::collections::hash_map::RandomState;
        }
    }
}

They are probably unaware that the ahash::RandomState does all this terrible const random stuff, otherwise I assume they would turn it off.
They are probably aware that ahash works even when there is no standard library, but they probably are not aware that if there is actually no OS (and hence no ASLR) then it is probably broken and provides none of the DOS resistance. The documentation says nothing about this. So if DOS resistance is the goal of ahash, then this is arguably a bug in ahash.

I agree doing getrandom() every time is much more secure. Unfortunately it is also MUCH more expensive.
In the standard library this is avoided by getting a random value once per thread and then simply incrementing it by one each time.
I don't consider incrementing by one to be very secure, because it means that any (even partial) information learned about the key can be used over and over and perhaps accumulated over time, by looking at the way different maps hash things. I would consider the current approach of scrambling using the memory address strictly superior to this. It is strictly less predictable than a fixed constant, and has the same cost.
In that light the real question is should getrandom() + lazystatic or threadlocal replace const-random. This is reasonable. It's trading some runtime cost for not having to be concerned about an attacker having access to the binary.
In terms of implementation, I think the most efficient route might be a static atomic, check if it is 0 and if so add getrandom() otherwise increment by locally available information.
The real problem with randomness from my point of view is atomics. I consider this more serious than the above concerns about const-random. Right now it's working with usize because this is one of the few atomics that are expected to be available cross platform. However a usize just isn't very large. We could assume it's small and have 4 of them, but then we have to do 4 atomic reads per hashmap creation which would depending on architecture, be a significant overhead.
Do either of you have thoughts on ways around this?
The obvious solution if to use thread-locals. However this isn't a great option in embedded and in my benchmarks on X86, it is quite slow.
We don't actually need deterministic behaviour, but I can't just use unsafe to read/write concurrently because that would be UB. If there was a way to do the equivalent of a read/write to the same memory location that lead to non-deterministic behavior but not undefined behavior (Similar to what exists in the Java memory model) I would take it, but I am not aware of a way to do this. Another approach might be to do conditional compilation based on architecture to select the largest size atomic available, but I don't know a good way to do this. At the very least we would need a table of which architecture supports which sizes.

Ok - I think I understand what you are saying about getrandom being slow. And some applications might be creating a lot of hashmaps, so you don't want to actually read from /dev/random or whatever every time that happens. and if you want to be portable and use stable rust, then there's no thread-local sadly.
Here's what I would suggest if we want to make a nicer interface than getrandom for this:

Start with a lazy static key of like 16 or 32 bytes, that gets initialized once from getrandom, so it's actually pure entropy
Also, have an atomic counter that counts how many times someone has pulled from the interface, they would use like fetch_add to get the value
Put these two values into a cryptographic PRF. It's going to have a fixed size output. Use this to implement the RngCore interface.

Ideally, we end up with something very similar to std::ThreadRng, but without any thread-local state and with no dependency on std. We could put this in a new crate and call it ThreadRngCore or something.
I'm not sure what exactly the PRF should be, but it's possible it could just be like Aes128 block cipher. You would use the pure entropy value as the key to Aes, and the counter value would be the nonce. Then you encrypt an all-zeroes buffer to get the output of the PRF.
DJB says stuff like this about AES for example in page 8 of this paper about ed25519 signatures: http://ed25519.cr.yp.to/ed25519-20110926.pdf

It would of course also be safe to generate r with a cipher such as AES, combined with standard PRF-stretching mechanisms to support a long input; but we prefer to reuse H to save area in hardware implementations.

In a machine with AESNI instructions that's probably super fast. In another machine you could probably use some other block cipher.
I want to make sure I understand what perf expectations are here:

We could assume it's small and have 4 of them, but then we have to do 4 atomic reads per hashmap creation which would depending on architecture, be a significant overhead.

If they are all in the same cacheline in memory then what I would expect is that 4 atomic reads is not much worse than 1 atomic read, maybe a few cycles extra. When you create a hashmap, you are also going to have to call malloc, right? So that should be way more costly than whatever we will do here, like 100 cycles should be very conservative.
IDK, it would be researchy, and I would want some rust crypto person to take a look at it
But like fundamentally, that's what I would say should happen here - it should not really be in-scope for AHash crate to contain what is essentially a home-brew entropy pool, using the const-random and ASLR pointers as entropy source. You should really only want to have the hasher implementation here, and put the thing that gets seeds (which takes no seed itself) in a different crate, because that is a pretty complex problem.

Having lazy_static use getrandom() initialize 32 bytes of entropy once per process, is sufficiently cheap and only involves one atomic operation per hashmap creation. That works well. I would like to avoid a second and third, which should be possible.
I don't think we need to maintain a global counter. That would add two more atomic calls per map. The only point is to make different maps use slightly different keys. This, I think is where address can be used. It's not a good source of randomness, but neither is incrementing by a fixed constant. If we combine this with the high-quality random seed in a way that cannot be reversed, we should get good keys.
The final step of generating keys from the seeds + unique value, I think can be done using the hashing algorithm itself. (After all it is intended to be non-reversible) We can just do some refactoring to allow the code to be invoked explicitly with keys and a value. (This has the advantage of using the best hardware instructions without extra effort). With this approach, the overhead of creating a new map is no worse that the cost of hashing 4 fixed size keys plus one atomic load. (Which is probably acceptably low)
The only complication, is that we need a way to have some compile time switch to allow platforms which getrandom does not support to compile if they explicitly pass keys.

Note that lazy_static requires std so you might as well just use thread_local! under a std feature flag which can be disabled for people (i.e. hashbrown) who need no_std support and will provide keys manually.

Having lazy_static use getrandom() initialize 32 bytes of entropy once per process, is sufficiently cheap and only involves one atomic operation per hashmap creation. That works well. I would like to avoid a second and third, which should be possible.

+1 fwiw

I don't think we need to maintain a global counter. That would add two more atomic calls per map. The only point is to make different maps use slightly different keys. This, I think is where address can be used. It's not a good source of randomness, but neither is incrementing by a fixed constant. If we combine this with the high-quality random seed in a way that cannot be reversed, we should get good keys.

Yeah I agree -- as long as there is some actual high quality entropy entering the system, then if the hash function is actually resistant, then it should even be fine if every hashmap in the program uses the same keys. Making them use different keys is a defense-in-depth that would make a larger system harder to attack. So there I agree that using the pointer to this or whatever as the personalization for the hasher function is reasonable and not much different from a counter.

The final step of generating keys from the seeds + unique value, I think can be done using the hashing algorithm itself.

+1, if you assume the hash algo is good then this makes sense

The final step of generating keys from the seeds + unique value, I think can be done using the hashing algorithm itself.

Yeah I'd suggest just making the Default implementation gated on #![cfg(feature = "getrandom")] or something like this, but it's up to you

Note that lazy_static requires std so you might as well just use thread_local! under a std feature flag which can be disabled for people (i.e. hashbrown) who need no_std support and will provide keys manually.

We've been using the spin_no_std feature on lazy_static to make it no_std compatible, but I don't have a good sense of how acceptable that is in widely used portable libraries. I could imagine that in a short-lived program that is supposed to run and complete its task very fast, spinning for lazy_static wouldn't be okay.
One nice thing about lazy_static is that the end consumer can flip on the spin_no_std and get no_std support via cargo feature unification, without you the library having to create a configuration path for that

If you know a better way than spin locks to do lazy statics in no_std rust right now I would love to know, but in my understanding if you don't have some sort of thread::yield() function in core then spinning is your only option

What if we did something like:
const UNINITIALIZED: (u128, u128) = (0, 0);
static VALUE: AtomicPtr<(u128, u128)> = AtomicPtr::new(&UNINITIALIZED as *const (u128, u128) as *mut (u128, u128));

Then we can reduce the call to a load, and compare the pointer with &UNINITIALIZED and if it is the same, generating a random value and doing compare_and_swap.
This avoids any dependencies (aside from what is needed for the random) and is no_std. My only concern is the statement:

Note: This method is only available on platforms that support atomic operations on pointers.

I am not sure what platforms those are, or what to do about them.

I would recommend keeping things simple and just:

Require no_std users to provide keys themselves.
Use std when randomness is required so that thread_local is available.

Part of the motivation for the way things are now, is that users with no_std would have a hard time generating unique values every time without a performance hit, but there is no reason that the values actually need to be totally unique. So I think there are actually three options that make sense:

Have user supplied keys in the form of two u128s.
User supplies nothing. (Available only with std)
User supplies two &'static u128s and we use the pointer/scrambling to make each map different.

With this 3rd approach, we can point to const_random as a way to supply such values, but it eliminates the direct dependency from aHash, and would be a default or likely anyone's first choice.

Part of the motivation for the way things are now, is that users with no_std would have a hard time generating unique values every time without a performance hit, but there is no reason that the values actually need to be totally unique.
With this 3rd approach, we can point to const_random as a way to supply such values, but it eliminates the direct dependency from aHash. So it would not be a default or likely anyone's first choice.

I would argue the following: the const_random stuff doesn't help you get a "unique value", the value it gives you is the same each time you run the code. It only changes when you rebuild. So from point of view of consumer of your software, you are choosing a random value that changes only each time you make a release of your software.
That doesn't meet a lot of people's requirements. But if it meets someone's requirements, then a simpler solution is, go to random.org and paste some random bytes into the source code, and use that where you were going to use const_random. And as part of your release process, you can paste new random bytes if you feel like it. You could make a script that just regenerates the file that declares the constants, so that you can commit the new version. This accomplishes everything that const_random does, and has the advantage that it preserves build determinism, which is important for a lot of reasons. So, that's what I would recommend to anyone who is thinking about using const_random.

@garbageslam Yes, you are right. When I started implementing it, I realized this. So here is where I ended up:
https://github.com/tkaitchuck/aHash/commit/980159d060f932531583c27f407c21020124a76c
Basically now there are three alternitives:

Running with std in which case you getrandom is used via lazy_static to generate strong random values once, which is combined with address/counter to get the specific keys.
Running without std and with const_random which is now off by default. This will use const random values and combine with the address/counter in the same way. This is clearly not as good, but you have to explicitly opt-into it, and if BOTH std and const_random are enabled then const_random does nothing and you still get deterministic builds.
If std is off and const_random is not enabled, then new() does not exist, and keys must be manually provided. Also the Default trait is not implemented for RandomState so constructing a hashmap is necessarily more manual.

The reason I left const_random in at all, was for transitive dependencies. If an app which is no-std depends on a library which uses HashBrown in the generic way, not manually providing keys, that library can still be no-std with no special modifications. However if it happens to end up in a std app, then the dependency can be added directly or indirectly and cargo will resolve this by enabling the feature, in which case it ends up with the std code (and deterministic builds) without having to do anything.
@garbageslam @Amanieu Could you please take a look at that CL, before I push it out and make sure you like how it looks?

LGTM

These changes have been encorperated into the 0.5 release.

thank you!


Rainbow road v2

added the layout php file for rainbow road that I had missed in the last pull.  Showing all the previously added imgs, I am unsure why there was some strangeness when I pulled from main but those are all the same as prior other than the memes.php page where I made sure to remove the _kun from the name and codes

Merged and will go live soon, but you'll need to add styles for the new inbox


Add nonuniform tile sizes, device distributions, and grid orders to even more testers (depends on #143)

This PR continues the work of #143 to add support for nonuniform tile sizes, device distributions, and grid orders to more testers.  I also made a couple of related warning messages more consistent.  However, I didn't change the defaults of run-tests.py to test the added configurations.
The change is largely realized by refactoring the matrix creation logic into a helper function.  This helps reduce the amount of duplicate code, which actually reduces the line count and the executable size a little bit.
Other improvements

Fixed a bug in henorm and synorm when tiles are nonuniform
Removed test/scalapack_support_routines.hh since it's no longer used
The meaning of the values of the dev-dist param was flipped to match slate/func.hh
The norm testers were adjusted to be more consistent between them.

This PR ended up longer than intended.  I'd probably suggest starting with test/test_util.hh, test/matrix_util.hh, and test/matrix_util.cc.  Also, the norm testers have some big indent changes, so I'd suggest reviewing that diff with "ignore whitespace" enabled.
Diff w/ #143

Since #143 is merged, can I drop the Draft label?
Locally I rebased this to include the changes that I added to #143. I need to double-check that code before I push it.

Yes, the draft status was just waiting for #143.

I rebased this on top of the current master with the merged-in #143. There were some merge conflicts, which hopefully I managed correctly. (I did them twice and compared to make sure.)


Footer text going into the main body

This happens everywhere where the main body exceeds a certain height

confirmed in Firefox Quantum

Also seems to happen in Edge (version 41.16299.248.0):

Thanks guys :)


direct link to another tab

how to direct link to another tab?

You can treat these like you can a regular <a> tag. e.g.
<SocialIcon className="h-12 w-12" url={person.instagram} target="_blank" rel="noreferrer"/>
source: https://github.com/jaketrent/react-social-icons/blob/master/src/social-icon.js#L28


MacOS compatibility issue

https://github.com/castframework/keyset-maker/blob/ce0886edf5629976a73a47d1e044a962f9870b58/src/cli.js#L1
../.bin/keyset-maker: /bin/env: bad interpreter: No such file or directory

when env is located in /usr/bin/env like on MacOS 12.2
have to overwrite the package line with #!/usr/bin/env node for the command make start to work properly.

Hi man it's fixed !


Vs Code not working in MacOS BigSur

I install Bigsur
And I need Vscode in bigsur for my office work but when i install vscode and start its not working fine not Complete Ui laggy and so on
Also BigSur Run but laggy

Please help me how to resolve this Tanks

@Harismehmoodulhaq try passing through your gpu or just using https://vscode.dev

can you please guide me how to pass through my gpu in ubuntu

or use 'code --disable-gpu'


💡 [FEAT] Ability to yank and paste entire todo's

Is your feature request related to a problem? 😢 Please describe.
I would like the ability to copy and paste entire todo's between topics, and have the ability to copy multiple todo's.
Describe the solution you'd like   🤔
I would like to have a solution that does the following:

Y to yank entire todo's
Y if triggered on a parent todo, should copy all child todo's to the clipboard
p or P to paste a todo that has been copied
Ideally, If a child node has been copied, it can be made a parent or child todo depending on where it is pasted
A parent node can only be pasted as a parent todo

Describe alternatives you've considered  🧐
An extension of this idea would be to use D to delete and copy the selected todo, and of course I am open to alternative default bindings.
Additional context 📝
I don't know how hard this is to implement as I have only recently started using the app and am loving it so far.
When I have some available time I will take a look at the code and if this is something you would like to include, I would be happy to help.

Hi @atidyshirt! Thanks for the feature idea!
I was actually wondering how to make such a feature to move the todos within the app! This sounds good and can be a great implementation!

I don't know how hard this is to implement as I have only recently started using the app and am loving it so far.

Thanks, bud! I really appreciate it :smile:

When I have some available time I will take a look at the code and if this is something you would like to include, I would be happy to help.

Of course, I am also willing to help if you need any :smile:
I saw that you forked the project a couple of hours ago. Just wanted you to know that you should ignore the main branch and have a look at the redesign branch as the implementation is kinda totally different :sweat_smile:
That'll make it easier to implement stuff :smiley:

Hi @kraanzu, Oh I have been working on this using the main branch, thanks for letting me know :)
I will switch branches and take a look at how to bring my implementation across. (I have never used rich or TUI interfaces in python before, but starting to understand the code now).
Hopefully I will be back with a PR soon

Awesoome! Good luck :)
Here's the documention for textual if you need any help:
https://textual.textualize.io/

Haha...thought so! But I there aren't many now :(
Ummm... If you can maybe wait for one more day? I guess I'll finish it up ( there will be bugs surely but I'll try to solve most of them by sunday? )
this is the test file I use which should run the app:
from dooit.__init__ import main
main()

Can I ask what Kind of issues are you facing? Have you upgraded textual's version?

I think I may have introduced one, not sure. I have experienced occasional freezing and sometimes TODO's get removed if we do things too quickly (I think some async issue).
Do not feel pressured at all, that was not my intention 😄 ,  just curios if there was any known issues.
Might also be note worthy that I am currently on a ARM Macbook

Thats all I have in me tonight! Couple of notes on this:
If you can think of a better method to handle the clipboard management then the implemented method, I am all ears (i.e the following):
@dataclass
class S_Storage:
    instance = None
    def __init__(self):
        S_Storage.instance = self
        self._clipboard = None

class Storage:
    clipboard = S_Storage.instance._clipboard if S_Storage.instance else S_Storage()._clipboard

There is still a couple of things to fix in here, will submit a PR when this is ready

Awesome! This looks good. Thanks for the PR

There is still a couple of things to fix in here, will submit a PR when this is ready

Yep Yep. I'll work on it too and hopefully remove some bugs along the way :)

Cannot quit using ctrl + q
Done!

Cannot use escape to exit the help menu
Fixed!

Freezing (seems to be when doing things quickly)
I've implemented lazy load. Can you check if it's still freezing for ya?

I will retest tomorrow and see if what problems are present, pasting todos is now functional, 'P' go paste as child, 'p' to paste as sibling, and todo's are copied using the 'remove' method ('x') (removed and copied node to the clipboard).
I have a couple of questions about copying todo's, I have noticed that we cannot have two todos with the same description at the same level? So as far as implementing copy, I guess we want to achieve the following implementation:

Copy a Todo to clipboard
Extend pasting method to do as follows
** Pasting will only paste node if List[TreeNode] does not contain the existing node

Is this the expected bahaviour? Or any other ideas?

I have noticed that we cannot have two todos with the same description at the same level?

Yes, that is correct! That makes some implementation stuff easier (when the todos are changed in some other instance or changed through some plugins)
The only case I see where you need the same todo description is to do some recurring tasks such as:

Solve a problem every day
Get a haircut every 6 weeks

For that, I've implemented recurring tasks which when marked as completed just shift their date accordingly

Possibly implemented with 'y' for copying the node and only description with 'Y' would be my personal preference

I suppose we can include some of the special keybindings in the configuration file to tweak as per the user's preference
I was also thinking to implement multi-key presses as we have in vim (if you are familiar) such as <space>p and dd but that would require some good implementation. We can do that tho!


panic: Any { .. } when including deps files on a Makefile

Not sure how to help with this issue but running fzf-make causes a panic:
nix run github:kyu08/fzf-make
panic: Any { .. }

@Sigmanificient
Thank you for your report!
I have some questions.

This occurs every time you launch fzf-make or only sometimes?
What is the version you use?
Does fzf-make --version work fine?

Hi, here is some details that might help you:
Asking for version & help works fine
fzf-make --version
v0.11.0

Running on a directory without Makefile opens an empty GUI

and quitting it causes panic: Any { .. }
Running with RUST_BACKTRACE=1 does not provide further information.
Running on a directory with a Makefile causes instant crash.
It seems to work when using this dummy Makefile:
a:
     echo "test"
.PHONY: a

Although still panicking on exit.
Here is my project Makefile:
https://gist.github.com/Sigmanificient/a7e54f6152ece75430a8f8846b06d9d6

It seems that removing the 2 last lines make it works again
-include $(DEP)
-include $(DEP_DEBUG)

Ahh! I see!
Now, fzf-make can not interpret include file path that includes variable like -include $(DEP).
I will fix this problem. Thank you for your input and take time for this!

Ahh! I see! Now, fzf-make can not interpret include file path that includes variable like -include $(DEP).
I will fix this problem. Thank you for your input and take time for this!

Those files might not exist before the run by the user, as for the - before the include keyword.
In the previous scenario, they existed but beware to consider this too.

As a short time measure, I'll fix this to ignore a makefile that can not be found and include-directive with variable.
After that, I will think what is better solution.

If you want to challenge yourself, feel free to check out the Makefile featured in this project.
It imports a list of sub-makefiles from a variable with make preprocessor and eval along a global helper makefile,
but use a condition to exclude the global helper makefile to import in sub-makefiles

0.11.0 -> 0.12.0

Thanks!


Tribute page: Difference between project’s stated requirements in own page and in widget on codepen

Affected page
https://www.freecodecamp.org/learn/responsive-web-design/responsive-web-design-projects/build-a-tribute-page
Your code

Expected behavior
On the tribute page project’s page, it states:
"User Story #3: I should see a div element with a corresponding id="img-div"“, while in the tests widget on the codepen of the tribute page, it states: I should see either a <figure> or <div> element with corresponding id=“img-div”.”
So a figure element is accepted through the widget, but not officially on the project page. Surely this must be a mistake.
Screenshots

System

I don't believe my giving info on my system is necessary for this.

Device: [e.g. iPhone6, Laptop]
OS: [e.g. iOS 14, Windows 10, Ubuntu 20.4]
Browser: [e.g. chrome, safari]
Version: [e.g. 22]

Additional context

Hello there,
Thank you, for taking the time to open this.
Here is more context: https://github.com/freeCodeCamp/testable-projects-fcc/pull/781
@lasjorg This is a stretch, but do you remember why the /learn user-stories remained the same?

@ShaunSHamilton I don't remember, but I don't think there was a reason for it. It's likely just an oversight.

Thanks for opening this issue.
This looks something that can be fixed by "first time" code contributors to this repository. Here are the file that you should be looking at to work on a fix:
https://github.com/freeCodeCamp/freeCodeCamp/blob/main/curriculum/challenges/english/01-responsive-web-design/responsive-web-design-projects/build-a-tribute-page.md
Please make sure you read our guidelines for contributing, we prioritize contributors following the instructions in our guides. Join us in our chat room or the forum if you need help contributing, our moderators will guide you through this.
Sometimes we may get more than one pull requests. We typically accept the most quality contribution followed by the one that is made first.
Happy contributing.

Hi @ieahleen  Thanks for the clear instructions. I'm a first time contributor and I've submitted a pull request #44076 Please let me know if there's anything else that I need to do in order to solve this issue. :)


Support - (dash) as change line prefix

How about adding support to - as the change line prefix?

👍