CodeCache growth and lookup performance

I don't know much about what conditions cause new jmethodIDs to be generated, and existing ones to be invalidated, but I'm seeing some possibly dangerous behaviour in the CodeCache in my particular application as it grows and the lookups start to take a 'significant' amount of time. By significant, I mean my application's performance started to degrade to the point where there was always one thread with this stack:
CodeCache::find(void const*)
Profiler::getAddressType(unsigned char*) Profiler::getJavaTraceAsync(void*, ASGCT_CallFrame*, int)
Profiler::recordSample(void*, unsigned long long, int, _jmethodID*, ThreadState)
WallClock::signalHandler(int, siginfo_t*, void*)

so I guess the lookup started to take as much as the 100ms sampling interval.
The jmethodID lookup appears to use a linear scan over the cached entries, so the lookup cost is proportional to the number of entries. When my application was behaving badly as above I attached gdb and I (hopefully correctly...) inspected the loop termination condition to infer a cache size of around 30 million, after 3 days of uptime. I recently added a log statement to monitor the cache size to confirm, so far it's steadily grown to a few hundred thousand entries within an hour or so but I'll see how it progresses.
Quirks of my usage: I'm running async-profiler in a semi-continous fashion, a la #71, for hours or days at a time in 5-minute 'chunks' (start, wait 5 minutes, stop, repeat). Not sure if this is at all a 'supported' use case. I'm running async-profiler 1.8.3 on OpenJDK 8u282, in wall mode with 100ms interval.
Since I don't know enough about the internals, I have no idea if this is likely a generic issue or if there's something specific to my application (overflow in the JVM code cache causing repeated compilation, perhaps?).
So basically I'd just like to share these observations from my usage in case there's anything useful for async-profiler to handle here.

Thank you for the report. I guess the described behavior may be observed when the JVM's Code Cache is almost full, and the JVM continuously evict and recompile methods.
When async-profiler expands its own CodeCache, it removes stale entries, however, the capacity increases indefinitely anyway. I'll fix this.

Thanks!
If the JVM is repeatedly evicting and recompiling methods, what would that look like from the perspective of async-profiler's cache? Would the evicted entries be considered stale on the next cleanup? In my case it's the count which seems to be ever-growing, not just the capacity.
I'll try to check my JVM code cache behaviour too to see if that's really my issue.

I was able to reproduce the problem, and fixed that.
Please check if the fix helps in your case.

Thank you. I'll try to test it when I get time. However I'm not sure it will tackle my specific case because my logging indicates that I don't have many entries being evicted.
void CodeCache::add(const void* start, int length, jmethodID method, bool update_bounds) {
    if (_count >= _capacity) {
        printf("Doubling CodeCache size, current capacity = %d\n", _capacity);
        expand();
        printf("After doubling CodeCache size, count = %d, capacity = %d\n", _count, _capacity);
    }

Doubling CodeCache size, current capacity = 256000
After doubling CodeCache size, count = 255674, capacity = 512000
Doubling CodeCache size, current capacity = 512000
After doubling CodeCache size, count = 511716, capacity = 1024000
Doubling CodeCache size, current capacity = 1024000
After doubling CodeCache size, count = 1023373, capacity = 2048000

I also checked my JVM code cache stats and it's stable at around 25% capacity.
I appreciate there's not much to go on so feel free to close this if you want, hopefully I'll get a chance to do some more debugging and find out what the new entries actually are.

Interesting. If count also increases, this is not the bug I was thinking of.
Can you please check

whether these are Java compiled methods or runtime stubs (a simple way to check is to add debug printout in Profiler::addJavaMethod and Profiler::addRuntimeStub);
JIT compiler stats: jcmd <pid> PerfCounter.print | grep sun.ci
are there other agents loaded into JVM besides libasyncProfiler?

I added debug logs, and the vast majority are from Profiler::addJavaMethod.
The application is also using the AspectJ weaver agent.
With the CodeCache entry count around 2,000,000, PerfCounter.print gives:
sun.ci.nmethodCodeSize=58576416
sun.ci.nmethodSize=111859392
sun.ci.osrBytes=192586
sun.ci.osrCompiles=303
sun.ci.osrTime=4402988334
sun.ci.standardBytes=6142847
sun.ci.standardCompiles=23527
sun.ci.standardTime=134576408967
sun.ci.threads=12
sun.ci.totalBailouts=12
sun.ci.totalCompiles=23830
sun.ci.totalInvalidates=0

I added logs to check exactly which methods were added from cache entry count of 128,000 to 256,000. This time period is considerably after the application seems to be basically stable with regards to compilation, so I figured it would be a good representation of the 'leaky' data.
I couldn't see any pattern in the newly added methods; they come from all parts of my application including my code, library code, JDK. Some analysis on the number of different methods and how often they were added to the CodeCache during this time shows there are a lot of different methods being added, and most of them are added multiple times.

Number of times added to CodeCache
Count of methods
Total contribution to cache entry count

1
33
33

2
31
62

3
69
207

4
44
176

5
70
350

6
75
450

7
66
462

8
7086
56688

9
4869
43821

10
142
1420

11
42
462

12
13
156

13
3
39

14
5
70

15
6
90

16
400
6400

17
267
4539

18
244
4392

>18
193
7596

TOTAL
13658
127413

Looking at the logs for a few random individual methods, I see a lot of them look like this:
Profiler::addJavaMethod(address=0x7f6d0295ae40, length=64, frameName=Ljava/lang/Long;compare)
Profiler::addJavaMethod(address=0x7f6d0295ae40, length=64, frameName=Ljava/lang/Long;compare)
Profiler::addJavaMethod(address=0x7f6d0295ae40, length=64, frameName=Ljava/lang/Long;compare)
Profiler::addJavaMethod(address=0x7f6d0295ae40, length=64, frameName=Ljava/lang/Long;compare)
Profiler::addJavaMethod(address=0x7f6d0295ae40, length=64, frameName=Ljava/lang/Long;compare)
Profiler::addJavaMethod(address=0x7f6d0295ae40, length=64, frameName=Ljava/lang/Long;compare)
Profiler::addJavaMethod(address=0x7f6d0295ae40, length=64, frameName=Ljava/lang/Long;compare)
Profiler::addJavaMethod(address=0x7f6d0295ae40, length=64, frameName=Ljava/lang/Long;compare)
Profiler::addJavaMethod(address=0x7f6d0295ae40, length=64, frameName=Ljava/lang/Long;compare)

Where they are repeatedly added with the same address and length, so it seems my cache is actually filling up with duplicates.
Since there's such a spike around frequency 8 and 9, I wonder if there's some global trigger re-emitting all of the compiled methods. I can look into what the AspectJ agent is up to, too.

Since there are only 23K compilations, I guess the only possibility for so many CompiledMethodLoad events is a repeated call to JVMTI GenerateEvents function.
Async-profiler calls GenerateEvents only once, so there must be some other agent calling this function.
There is a JDK bug JDK-8222072 that results in the undesired interference between agents: when one agent calls GenerateEvents, the other one receives the events, too. The bug has been fixed in JDK 13+ and in recent JDK 11 update, but not in JDK 8.
Try adding -XX:TraceJVMTI=CompiledMethodLoad+ts,GenerateEvents+ieo JVM option. If my hypothesis is correct, the output will look like
JVMTI [Attach Listener] GenerateEvents {  event_type=68:CompiledMethodLoad
JVMTI [Attach Listener] method compile load event triggered
JVMTI [Attach Listener] class compile method load event sent java/lang/String.equals
... many compile method load event messages ...
JVMTI [Attach Listener] GenerateEvents }

with a similar GenerateEvents { block repeated again and again.
Can it be the case you invoke async-profiler each time with a new .so library? E.g. unpack the profiler into a temporary folder, invoke it, cleanup the files, and so on? Check /proc/<pid>/maps to make sure the profiler is loaded just once.

Ah!
Thanks a lot for those details. I added the JVMTI logs and GenerateEvents was invoked at regular intervals. Then I remembered that I'm also running https://github.com/jvm-profiling-tools/perf-map-agent in a loop, which is the 'other agent' you suspected. Specifically: https://github.com/jvm-profiling-tools/perf-map-agent/blob/master/src/c/perf-map-agent.c#L364 is the culprit.
Sorry it turned out to be not async-profiler's 'fault'. I guess the current CodeCache implementation works well in practice since entry count is generally low, but a couple of considerations which might be a useful safety net depending on the tradeoff:

Don't store duplicate entries
Improve lookup performance when count is large

Thanks for your help. Feel free to close if you don't want to make any other related changes.

I've committed the fix that

Warns if another agent calls GenerateEvents() on JDK 8;
Resets CodeCache before GenerateEvents() to prevent infinite growth of the method list.

I think there is no need to improve linear lookup, since it occurs only in rare cases when AsyncGetCallTrace fails.


✨ Add SNAC

What does this PR do?

Add SNAC

Before submitting

[x] Did you read the contributor guideline?
[x] Did you make sure your PR does only one thing, instead of bundling different changes together?
[x] Did you make sure to update the documentation with your changes? (if necessary)
[x] Did you write any new necessary tests? (not for typos and docs)
[x] Did you verify new and existing tests pass locally with your changes?
[x] Did you list all the breaking changes introduced by this pull request?
[x] Does your code adhere to project-specific code style and conventions?

PR review

Reviewer checklist

[ ] Is this pull request ready for review? (if not, please submit in draft mode)
[ ] Check that all items from Before submitting are resolved
[ ] Make sure the title is self-explanatory and the description concisely explains the PR
[ ] Add labels and milestones (and optionally projects) to the PR so it can be classified
[ ] Confirm that the changes adhere to compatibility requirements (e.g., Python version, platform)
[ ] Review the self-review checklist to ensure the code is ready for review

thank you @julien-blanchon, it looks like tests are failing. Could you please take a look at it?

Hey, just show your commit. Sorry I missed this message. Is it okay ?

I'm running some test. I will keep up updated @julien-blanchon!

thanks @julien-blanchon for this PR... since this model is using huggingface transformer, it should be moved to huggingface_transformer folder similar to Encodec.

@julien-blanchon Thanks for this PR. I have reviewed it, and everything works fine. I only made minor modifications, such as moving the model to the huggingface_transformer folder.
We recently released a benchmark for discrete audio and speech (DASB). You can find detailed information in this paper. The code is available in this repository. Since you have already added a new tokenizer to SpeechBrain, it would be a great contribution if you could also participate in the benchmark and evaluate this tokenizer across various tasks defined in DASB. I would be more than happy to help you through the process.

Hey @poonehmousavi that a super good idea, I'm in. See you there

Hummm, I'm quite unfamiliar with this codebase, I will need to read your paper before. I've open a Draft for us to discuss: https://github.com/speechbrain/benchmarks/pull/40


Add Copy to Clipboard Feature for Plate Reader

This update adds a new feature allowing users to copy license plate text directly to the clipboard from the plate reader. The feature includes buttons for copying the front and rear plates, making it easier to capture plate information quickly. Notifications confirm when the plate has been successfully copied.

New Feature: Copy to Clipboard buttons for both front and rear plates in the plate reader.
UI Update: Notification shows when plate text is copied.
Compatibility: Adjustments made to CSS and images for a better fit with the new feature.

This makes it easier for officers to copy plates with more ease and less steps.

I would suggest the images be redone. I couldn't get them perfect.


 Every edge has a ttl. If it has expired, it will be removed from the detect table.
With this PR, the timer to remove expired entry can be removed and when waiters timeout, there is no need to send clean-up-wait-for requests to the deadlock detector.
What are the type of the changes? (mandatory)

Improvement (change which is an improvement to an existing feature)

How has this PR been tested? (mandatory)
Unit tests.
Does this PR affect documentation (docs) or release note? (mandatory)
No
Does this PR affect tidb-ansible update? (mandatory)
No
Refer to a related PR or issue link (optional)
Benchmark result if necessary (optional)
I have benched it comparing to the original implementation. There is no obvious influence.

@coocood @MyonKeminta @AndreMouche PTAL

LGTM

@MyonKeminta @AndreMouche PTAL

LGTM

@AndreMouche PTAL again

Please add more tests to cover your last modification.

@ngaut
The latest modification doesn't affect correctness, just improves the performance.
@youjiali1995
Can we add a micro-benchmark for the detector then post the result here?

@coocood Do you mean just call detect with random requests? Don't go through the network.

@youjiali1995
Yes
run with cargo bench

ok

@AndreMouche @MyonKeminta PTAL

/run-integration-common-test

@AndreMouche

Please do not use picture, use "PTAL" instead. Thanks @youjiali1995

/run-cherry-picker


map for dynamic parameters doesn't work

System:
Ubuntu 22.04
ROS Humble
generate-parameter-library 0.2.8
I can't get the dynamic parameters I setted, only get the default value.
Then I ckecked the header file generated by this lib, found the veriable used to point to the value of dynamic parameters map is not using a reference.
For example, Part of the generated code for setting dynamic params as follows
  1    // declare and set all dynamic parameters
  2   for (const auto & value : updated_params.name_array){
  3        auto entry = updated_params.test.name_array_map[value];
  4        auto param_name = fmt::format("{}{}.{}.{}", prefix_, "test", value, "test_1");
  5       if (!parameters_interface_->has_parameter(param_name)) {
  6            rcl_interfaces::msg::ParameterDescriptor descriptor;
  7            descriptor.description = "";
  8            descriptor.read_only = false;
  9            auto parameter = rclcpp::ParameterValue(entry.test_1);
  10          parameters_interface_->declare_parameter(param_name, parameter, descriptor);
  11     }
  12    param = parameters_interface_->get_parameter(param_name);
  13    entry.test_1 = param.as_bool();}

Replace line 3 as below and use the modified header as source code to build, it works.
`auto & entry = updated_params.test.name_array_map[value];`

But I don't know how to modify this library to make the generated header correct.
Is it only me having this problem? Or maybe I'm misunderstanding something?

That line is generated from here: https://github.com/PickNikRobotics/generate_parameter_library/blob/ba273649b09f4bf00b55e42a84376037548f19aa/generate_parameter_library_py/generate_parameter_library_py/jinja_templates/declare_runtime_parameter#L3
As you can see it now is auto& entry = .... In the latest version released into Humble (apt update should fix this for you) 0.3.0 this bug is fixed.
apt info ros-humble-generate-parameter-library
Version: 0.3.0-1jammy.20221202.034649

Okay got it, thanks!
But when I try to update, the latest version available to upgrade for humble is 0.2.8, is there something I should or I can do to get the new version? or just wait a few days until it's available.

I believe it is available now, you may need to run rosdep update and apt update then apt upgrade. If that doesn't work you can build it from source. If you do that you'll also need the library rsl in your workspace: https://github.com/pickNikRobotics/RSL

I see, thanks a lot :+1:


[iOS] NTMBVectorTileDecoder crashes with NTCompiledStyleSet

I am trying to to use  NTMBVectorTileDecoder.alloc().initWithCompiledStyleSet(styleSet) but it crashes whatever the style i am using.
Can't really find why exactly. Can't also find any example of this in the CartoDB repos.
Could you confirm that it works on your side?
Also could you write a very short summary on how to setup a live dev env for iOS? I think that's what you are using, right?
Thanks

Did a quick test, seems to work for me, when the style asset we have internally built-in.
Regarding the dev env, iOS is the easiest. Just the latest XCode, CMake and the custom Swig wrapper generator should do it.

@mtehver ok need to try here.
About your dev env. Could you explain how you run it? I dont see any demo app in the mobile-sdk repo. Do you use https://github.com/CartoDB/mobile-ios-samples ? How do you make it use the sources directly? How are the swig wrapper updated upon change?
This could get very useful to anyone wanting to create PRs.
Thanks

For final iOS tests, we use mostly mobile-ios-samples and few non-public projects. The simplest way to test is to compile SDK first, then checkout mobile-ios-samples project, run 'pod update' on its subprojects and then replace the official SDK build under Pods/CartoMobileSDK with your compiled version (under dist/ios after you have successfully compiled the SDK).

@mtehver ok though you had a project with live compile, something like:

modify src
click run in xcode

Will try to see if i can do this.
Thanks

@farfromrefug We do not have/use that for full SDK. We use it for submodules, like those in libs-carto. One important bit I forgot: use --configuration=Debug flag when running build-ios.py script. Otherwise you really can not step into SDK when debugging.

@farfromrefug Any update on the crash? Could you test/report with 4.2.0RC2?

@mtehver sure will try today or tomorrow. Was trying to create a fulll iOS realtime dev env but did not manage yet.

@mtehver i tested this this morning. still crashing with 4.2.0.rc2.
I compiled my own version of the framework in debug.
This is where it crashes

Any idea?

@farfromrefug Pretty sure that your MBVectorTileDecoder instance is a null pointer. If you debug you code, perhaps you can check if swigCPtr member of the managed proxy object is 0 or not.

@mtehver thanks a lot! ACtually created that issue by modifying my code.
Also now thanks to the debug version i saw the real error. Carto was throwing because my zip was not correctly structured.
So it is fixed (need to be able to catch that error from my framework side).
Thanks a lot (again!)


liveChatCallForQuestionsRenderer

liveChatCallForQuestionsRenderer didn't have header

Hello, may you please pull https://github.com/ytdl-org/youtube-dl/pull/28053 to yt-dlp? I tested it out and it works totally fine!


Fixed typo in test method name

Found a typo in the test method name while going through docs. Fixed it.

Hi @gregturn ! Didn't have access to add any reviewer. Please assign to the correct reviewer.


codis-dashboard uses 100% cpu doing nothing.

Which PikiwiDB functionalities are relevant/related to the feature request?
No response
Description
100.0   0.1   1246:49 /usr/local/src/pika/codis/admin/../bin/codis-dashboard
Proposed solution
surely this can be reduced by a lot? sitting there doing nothing requires 1 core is not really acceptable.
Alternatives considered
i want to fix it but maybe it's better u guys do it.
thx anyway

@AlexStocks will do so after installing wechat... have issues with my phone for the moment. will do so end of week.


Upgrade the tellor bindings

Signed-off-by: Krasi Georgiev<EMAIL_ADDRESS>

Pull Request Test Coverage Report for Build 718808668

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+0.1%) to 52.086%

Totals

Change from base Build 698466358:
0.1%

Covered Lines:
1448

Relevant Lines:
2780

💛  - Coveralls


[DCOS-14929] Make resize step non-optional

https://jira.mesosphere.com/browse/DCOS-14929
Please see the JIRA issue for the motivation behind this change.
Design decisions
My understanding is that there are multiple options for this fix:

Resize the disk as part of the Vagrant setup, using the vagrant-disksize plugin.
Somehow change the base box to have a disk larger than 10GB.
Remove the text which says that 10GB should be enough and a resize is optional.

The plugin resizes the disk, but it doesn't modify the filesystem. I am happy to try and get this working this if a reviewer deems it worthwhile.
I'm not sure how to modify the base box and I didn't want to look into it before a reviewer said that this is the best option.
Testing
Manual
This change has been manually tested.
I ran the steps documented in the JIRA issue.
I am not sure what, if anything, is the problem with having a disk which is too large, and therefore I went with 100GB.
Automated
Ideally, this would come with a CI change which tests the Vagrant box with a script that replicates the documentation. If a reviewer would like this, I'm happy to work on that but I believe that it would be a significant chunk of work. Also, in my experience testing the Vagrant setup of https://github.com/ClusterHQ/flocker, I learned that Vagrant is not particularly friendly with CI systems.
My personal preference is that we trust that issues will be found manually, at least until that bites us.

cc @mhrabovcin (hit the same issue) and @tamarrow (recently merged PRs on this repo) for review. Please let me know if you'd rather I ping someone else.

@adamtheturtle I added @mhrabovcin and @tamarrow as reviewers for you. I'm adding @klueska since as far as I know #foundations owns this.

@klueska I find dcos-docker extremely useful for local development. I'll walk through the docs on fedora.

This may be a silly question (I've never actually used dcos-docker), but why do we have a dependence on vagrant if we are running DC/OS in docker?

Vagrant is for mac users because the scripts only work on Linux.


datadog-agent: unpin go1.18

Description of changes

Things done

Built on platform(s)

[ ] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
23.11 Release Notes (or backporting 23.05 Release notes)

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

[ ] Fits CONTRIBUTING.md.

This pull request has been mentioned on NixOS Discourse. There might be relevant details there:
https://discourse.nixos.org/t/prs-ready-for-review/3032/2590

@aaronjheng This is the second time you've broken the datadog-agent package binaries without running them. Could you please stop doing this without verifying that they work?

Really sorry. I did not realize that.
Maybe we could do a version bump(7.48.1, built with go1.20), since go1.18 has been dropped. Additionally, we could do the following things:

Add comments for the go version used
Add a version test


Add experimental support for S3/CEPH and test on Jacob's files

@jpfeil can you point to output from one of the samples that you have run by hand that I can use to verify that treeshop S3/CEPH is working?

@rcurrie Here is the tertiary output for a set of blood samples. You can use the rsem_genes.results file to validate the new run. I have used the cell line names here, but I can send you a mapping to the ids.
/scratch/jpfeil/ccle/ccle-blood-cancers/CCLE-blood-CDK4-2017-10-20

G26223.697.2.btfv9.R1.fastq.gz
G27288.ALL-SIL.1.btfv9.R1.fastq.gz
G27213.AMO-1.1.btfv9.R1.fastq.gz
G41707.BDCM.5.btfv9.R1.fastq.gz
G27374.BL-41.1.btfv9.R1.fastq.gz
G27318.DEL.1.btfv9.R1.fastq.gz
G41717.EB1.5.btfv9.R1.fastq.gz
G27324.EM-2.1.btfv9.R1.fastq.gz
G26244.F-36P.2.btfv9.R1.fastq.gz
G27335.GRANTA-519.1.btfv9.R1.fastq.gz
G28867.HH.3.btfv9.R1.fastq.gz
G28080.JURKAT.1.btfv9.R1.fastq.gz
G28068.JVM-3.1.btfv9.R1.fastq.gz
G30567.KARPAS-620.1.btfv9.R1.fastq.gz
G41723.KE-97.5.btfv9.R1.fastq.gz
G28090.KHM-1B.1.btfv9.R1.fastq.gz
G20462.KMS-11.2.btfv9.R1.fastq.gz
G26249.KMS-26.2.btfv9.R1.fastq.gz
G26253.KMS-34.2.btfv9.R1.fastq.gz
G26221.L-363.2.btfv9.R1.fastq.gz
G26193.LP-1.2.btfv9.R1.fastq.gz
G28581.Mino.1.btfv9.R1.fastq.gz
G28560.MOLP-8.1.btfv9.R1.fastq.gz
G28565.MOLT-16.1.btfv9.R1.fastq.gz
G28577.NCO2.1.btfv9.R1.fastq.gz
G26238.OCI-AML2.2.btfv9.R1.fastq.gz
G28600.P12-ICHIKAWA.1.btfv9.R1.fastq.gz
G27474.RPMI-8402.2.btfv9.R1.fastq.gz
G27458.SIG-M5.2.btfv9.R1.fastq.gz
G27201.SK-MM-2.1.btfv9.R1.fastq.gz
G30609.SU-DHL-4.1.btfv9.R1.fastq.gz
G30556.SU-DHL-8.1.btfv9.R1.fastq.gz
G30555.Toledo.1.btfv9.R1.fastq.gz
G41727.U-937.5.btfv9.R1.fastq.gz

@rcurrie, if you run a subset of the above files, I can check the concordance for the run I did. I do not have the secondary output of these samples anymore. I just have the tertiary. I still have the secondary output of the following samples:
G26182.KMS-12-BM.2.btfv9.R1.fastq.gz
G26187.MONO-MAC-1.2.btfv9.R1.fastq.gz
G26243.HT-1197.2.btfv9.R1.fastq.gz
G27263.OPM-2.1.btfv9.R1.fastq.gz
G27519.Raji.2.btfv9.R1.fastq.gz
G28013.KARPAS-422.1.btfv9.R1.fastq.gz
G28028.KG-1.1.btfv9.R1.fastq.gz
G28058.MC116.1.btfv9.R1.fastq.gz
G28825.HT-144.3.btfv9.R1.fastq.gz
G28835.HT.3.btfv9.R1.fastq.gz
G28863.HT-1080.3.btfv9.R1.fastq.gz
G28881.HT-1376.3.btfv9.R1.fastq.gz
G30561.SUP-T1.1.btfv9.R1.fastq.gz
G30573.SU-DHL-6.1.btfv9.R1.fastq.gz
G30579.JM1.1.btfv9.R1.fastq.gz
G41670.HT-29.5.btfv9.R1.fastq.gz
G41728.MEG-01.5.btfv9.R1.fastq.gz

G26182 completed, take a look:
/pod/pstore/groups/treehouse/treeshop/jpfeil/downstream/G26182/secondary
Passed QC!
@jpfeil I've added a basic methods (not in this run) mostly so we can get an idea of how long they take for projections. Let me know if this looks ok and if so I"m going to crank up the next two in parallel to account for any race condition (can't imagine how it would happen though) and then we'll have a projection towards cranking up a ton and running through them all.

@jpfeil G26243 is out of the oven and it passed UMEND, seems like this is working. Another is running in parallel and I'll report when that is done.


Update library in the background instead of using a popup window

The 'Keep Library in Sync' tick box can make using playnite a little cumbersome, since a popup will lock you out of interacting with the rest of the window for a bit while it works. It usually doesn't take more than a second but it is consistently delayed after closing/launching a game on my end, and can end up taking longer depending on network conditions. It can catch someone off guard if they're trying to switch games and become a major annoyance after a while. Hopefully it's not too much trouble to find some way to work around this :)

Currently, Playnite doesn't support any non-blocking way of showing upload progress (planned for P11), but I can add a checkbox to hide progress completely.


how to run?

hello
i'm new to coding and using things like this and i understand that this is likely a dumb question, but how exactly do i use this? It says i need to compile it from the source code, but i am unsure of how to do this. Do i need a Kotlin compiler?
Thanks in advance
Tim

the project comes included with a bat file that installes gradle, then go to the directory of the project in cmd and type gradle build
you're probably going to need to do a little bit extra stuff though, google is your friend.
if you figure out how to use this tool after compiling, please to tell me!


[Doc Issue][SBS AAD SSO for tabs and messaging extensions]

Docs Build status updates of commit 873802d:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

msteams-platform/sbs-tabs-and-messaging-extensions-with-sso.yml
:white_check_mark:Succeeded
View

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel

Docs Build status updates of commit c3e6230:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

msteams-platform/sbs-tabs-and-messaging-extensions-with-sso.yml
:white_check_mark:Succeeded
View

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel

Docs Build status updates of commit 4b131eb:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

msteams-platform/sbs-tabs-and-messaging-extensions-with-sso.yml
:white_check_mark:Succeeded
View

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel

Docs Build status updates of commit 8ca2dda:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

msteams-platform/sbs-tabs-and-messaging-extensions-with-sso.yml
:white_check_mark:Succeeded
View

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel

Docs Build status updates of commit bc58cf8:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

msteams-platform/sbs-tabs-and-messaging-extensions-with-sso.yml
:white_check_mark:Succeeded
View

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel

Docs Build status updates of commit e07de41:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

msteams-platform/sbs-tabs-and-messaging-extensions-with-sso.yml
:white_check_mark:Succeeded
View

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel

Docs Build status updates of commit 542a3dc:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

msteams-platform/sbs-tabs-and-messaging-extensions-with-sso.yml
:white_check_mark:Succeeded
View

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel

Acrolinx Scorecards
We currently enforce a minimum score of 80.
Click the scorecard links for each article to review the Acrolinx feedback on grammar, spelling, punctuation, writing style, and terminology:

Article
Score
Issues
Scorecard
Processed

msteams-platform/sbs-tabs-and-messaging-extensions-with-sso.yml
85
40
link
:white_check_mark:

More info about Acrolinx
Use the Acrolinx extension, or sidebar, in Visual Studio Code to check spelling, grammar, style, tone, clarity, and key terminology when you're creating or updating content. For more information, see Use the Visual Studio Code extension to run Acrolinx locally.

Docs Build status updates of commit 60edd4f:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

msteams-platform/sbs-tabs-and-messaging-extensions-with-sso.yml
:white_check_mark:Succeeded
View

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel

Acrolinx Scorecards
We currently enforce a minimum score of 80.
Click the scorecard links for each article to review the Acrolinx feedback on grammar, spelling, punctuation, writing style, and terminology:

Article
Score
Issues
Scorecard
Processed

msteams-platform/sbs-tabs-and-messaging-extensions-with-sso.yml
84
43
link
:white_check_mark:

More info about Acrolinx
Use the Acrolinx extension, or sidebar, in Visual Studio Code to check spelling, grammar, style, tone, clarity, and key terminology when you're creating or updating content. For more information, see Use the Visual Studio Code extension to run Acrolinx locally.

Docs Build status updates of commit fec32bc:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

msteams-platform/sbs-tabs-and-messaging-extensions-with-sso.yml
:white_check_mark:Succeeded
View

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel

Acrolinx Scorecards
We currently enforce a minimum score of 80.
Click the scorecard links for each article to review the Acrolinx feedback on grammar, spelling, punctuation, writing style, and terminology:

Article
Score
Issues
Scorecard
Processed

msteams-platform/sbs-tabs-and-messaging-extensions-with-sso.yml
85
40
link
:white_check_mark:

More info about Acrolinx
Use the Acrolinx extension, or sidebar, in Visual Studio Code to check spelling, grammar, style, tone, clarity, and key terminology when you're creating or updating content. For more information, see Use the Visual Studio Code extension to run Acrolinx locally.

Docs Build status updates of commit 2023d95:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

msteams-platform/sbs-tabs-and-messaging-extensions-with-sso.yml
:white_check_mark:Succeeded
View

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel

Acrolinx Scorecards
We currently enforce a minimum score of 80.
Click the scorecard links for each article to review the Acrolinx feedback on grammar, spelling, punctuation, writing style, and terminology:

Article
Score
Issues
Scorecard
Processed

msteams-platform/sbs-tabs-and-messaging-extensions-with-sso.yml
85
39
link
:white_check_mark:

More info about Acrolinx
Use the Acrolinx extension, or sidebar, in Visual Studio Code to check spelling, grammar, style, tone, clarity, and key terminology when you're creating or updating content. For more information, see Use the Visual Studio Code extension to run Acrolinx locally.

Docs Build status updates of commit aa4d1a2:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

msteams-platform/sbs-tabs-and-messaging-extensions-with-sso.yml
:white_check_mark:Succeeded
View

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel

Acrolinx Scorecards
We currently enforce a minimum score of 80.
Click the scorecard links for each article to review the Acrolinx feedback on grammar, spelling, punctuation, writing style, and terminology:

Article
Score
Issues
Scorecard
Processed

msteams-platform/sbs-tabs-and-messaging-extensions-with-sso.yml
85
39
link
:white_check_mark:

More info about Acrolinx
Use the Acrolinx extension, or sidebar, in Visual Studio Code to check spelling, grammar, style, tone, clarity, and key terminology when you're creating or updating content. For more information, see Use the Visual Studio Code extension to run Acrolinx locally.

Docs Build status updates of commit f9b56dd:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

msteams-platform/sbs-tabs-and-messaging-extensions-with-sso.yml
:white_check_mark:Succeeded
View

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel

Approved by Mithilesh as well.


Modify header structure

rust edition from "2018" to "2021", The Rust 2021 Edition contains several changes that bring new capabilities and more consistency
abstraction of hash
modify the header structure

@kwanCCC Looks good to me now. I'll merge it as soon as you give me a thumbs up.


Add java 23 (Zulu)

Thanks for taking the time to contribute to the project. Unfortunately, I cannot accept it because I am no longer working on or using game panels and do not have the interest or time to maintain this repo.


Bump to NukeV12

Thoughts on bumping the dependency on nuke to v12?

check latest release

🙌 thx. It looks like libwebp's latest version is also 1.3.2 (fixed some security issues). After updating that on my fork I was still able to build and the functionality I use still works as expected.


swego: 0.9 -> 0.91

Automatic update generated by nixpkgs-update tools. This update was made based on information from https://github.com/nodauf/Swego/releases.
meta.description for swego is: "Simple Webserver in Golang"
meta.homepage for swego is: "https://github.com/nodauf/Swego"
meta.changelog for swego is: ""
Updates performed

Golang update

To inspect upstream changes

Release on GitHub

Compare changes on GitHub

Impact

Checks done (click to expand)

built on NixOS

The tests defined in passthru.tests, if any, passed

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

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

found 0.91 with grep in /nix/store/wi2hm20ayf08ksjp1f4ldhid97pkwll3-swego-0.91

directory tree listing: https://gist.github.com/22e391c651bc65cd6d2fbd68c0df2cc4

du listing: https://gist.github.com/f8654401204c39f454449d5fbe8788e3

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

4 total rebuild path(s)

1 package rebuild(s)

1 x86_64-linux rebuild(s)
1 i686-linux rebuild(s)
1 x86_64-darwin rebuild(s)
1 aarch64-linux rebuild(s)

First fifty rebuilds by attrpath
swego

Instructions to test this update (click to expand)

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

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

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/wi2hm20ayf08ksjp1f4ldhid97pkwll3-swego-0.91
ls -la /nix/store/wi2hm20ayf08ksjp1f4ldhid97pkwll3-swego-0.91/bin

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

1 package built:

swego

Maintainer pings
cc @fabaff @kalbasit for testing.

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

1 package built:

swego


Rework sign-in page to handle SSB URIs with JS

We learned how to handle SSB URI links better with JS when working on alias and invites, now we should revisit the sign-in page to avoid the _target="blank" (originally meant to support Firefox Desktop neatly) because it's annoying that it opens an extra tab.

I'm working on this and realized that the issue with Firefox is different on this page compared to the other pages, because here we use SSE. The issue with Firefox is that SSE gets closed as soon as we do window.location.replace(ssbUri). Seems to be a behavior only in Firefox. I'm not sure what to do about it, I have tried a couple things but I can't workaround the SSE getting closed.

fixed in #191


Sort types is broken

Sorting types only by name is broken if multiple types have the same name.
We should consider the package too.
https://github.com/kubernetes-sigs/reference-docs/blob/aed673f90d888570c463cb9bff99e1c7d0fd66da/genref/types.go#L406

cc @tengqm

I opened https://github.com/kubernetes-sigs/reference-docs/pull/351


Pass a C++ mjData to python with pybind11, MuJoCo as a C++ and python library

Hi,
I am a student trying to use MuJoCo for collision detection and trajectory planning for a real robot, and for reinforcement learning experiments on the same simulated robot.
I need the flexibility to implement performance critical code in C/C++ (e.g. IK & trajectory planning), while being able to easily experiment with python (e.g. for reinforcement learning).
I compile both the C dynamic library and the bindings with scikit-build-core and link my own code against the same dynamic library than the MuJoCo python bindings.
I write python bindings for my code using pybind11 as well.
I would like to interact with the simulation from python and C++. In this context, I am trying to return, from C++ to python, a pointer to a mjData struct.
Directly returning a reference to the shared pointer does not work.
py::class_<SimState>(pymodule, "SimState")
.def_readonly("collision", &SimState::collision)
...
.def_readonly("physics_state", &SimState::mjdata); // <- What should I return here?

Python complains that it does not know about the mjData_
I have tried including structs.h returning a MjDataWrapper, but I get an unknown symbol error, even after adding PYBIND11_EXPORT to the wrapper, the base wrapper class and the raw mjData object.
In this issue, @saran-t seems to suggest that the MjDataWrapper is not necessary and I should simply return opaque pointers, which I tried with PYBIND11_MAKE_OPAQUE, but python still complains about an unknown type mjData_
I am now out of ideas and grateful for any help.

The easiest thing in your case is to instantiate the MjData object in Python and grab the underlying pointer as a void*, pass it as a long int to pybind11 and cast it back to mjData* in C++. That way you never need to deal with MuJoCo types across the Python/C++ boundary.
Alternatively, if you are interested in doing some fairly advanced pybind11 work, you can help us figure out how to register custom casters so that pybind11 understands that mjData should be casted via MjDataWrapper.

@pkrack did you successfully link the python binding MjWrapper classes to your pybind library. It seems like yes based on:

I compile both the C dynamic library and the bindings with scikit-build-core and link my own code against the same dynamic library than the MuJoCo python bindings.

Would it be possible to share this code if you have it. My strategy was to return the MjModelWrapper from my binding method for getting a readonly property similar to the following method:
mujoco::python::_impl::MjModelWrapper FrankaMJROS::get_model()
{
  return *mujoco::python::_impl::MjModelWrapper::FromRawPointer(this->m);
}

I think this should work right?

The easiest thing in your case is to instantiate the MjData object in Python and grab the underlying pointer as a void*, pass it as a long int to pybind11 and cast it back to mjData* in C++. That way you never need to deal with MuJoCo types across the Python/C++ boundary.

This might actually make more sense in my use case, going to try it out.


[[FIX]] Correctly recognize asi after directives

Fixes gh-2714

Squashed and merged to master at commit 039ee2e7f26b5d4b6f503d21b66664387185d940.
The extensions to isEndOfExpr implemented in gh-2977 make this patch's logic concerning the prefix increment/decrement operators a little duplicative. I'm experimenting with the best way to re-use the new code; I'll let you know when/if I come up with something worth looking at.
In any event, thanks for the fix!


feat: add NextjsOverrides

Fixes #168, #104.
This PR implements NextjsOverrides discussed in https://github.com/jetbridge/cdk-nextjs/discussions/132. This feature enables deep levels of customization over this construct. An incomplete example below. See source code for all options.
new Nextjs(this, 'Nextjs', {
  nextjsPath: './web', // relative path from your project root to NextJS
  overrides: {
    nextjsBucketDeployment: { functionProps: { ... }, ... },
    nextjsDistribution: {
      cloudFrontFunctionProps: { ... },
      distributionProps: { ... },
      edgeFunctionProps: { ... },
      imageBehaviorOptions: { ... },
      imageCachePolicyProps: { ... },
      imageHttpOriginProps: { ... },
      ...
    },
    nextjsDomain: { ... },
    nextjsImage: { ... },
    nextjsInvalidation: { ... },
    nextjsRevalidation: { ... },
    nextjsServer: { ... },
    nextjsStaticAssets: { ... },
  }
});

In the spirit of DRY, I've removed NextjsDefaults favoring NextjsOverrides for reasons stated above. Additionally, NextjsOverrides gives better type support because we're creating optional interfaces based off AWS CDK interfaces that have required properties with @mrgrain/jsii-struct-builder. This prevents having to use any.

@kevin-mitchell, @onhate, would appreciate your review.

This looks great, and I love the improvement re: types (and the remove of so many | any!).
Only thing I can really think to add (but am not sure how this would be done) is if there could be something added to the readme / contributions guide about the pattern you established for the optional parameters? Honestly ti's probably not needed, I wasn't familiar with the syntax / tooling you added but quickly looked through .projenrc.ts and was able to figure it out.

I like it better than it is now :)

@kevin-mitchell, I have added docs on jsii struct builder. great suggestion.
@onhate, awesome. thank you for reviewing!

@revmischa, approved on Discord. Merging 🚀


Suggestion: Remove all "running test $TEST" statements

the discord.py library gives us sane rate handling, blessed be to Danny. So this means that if a bot is spamming the library holds onto its messages so it doesn't get denied by discord. Therefore every message we send that isn't a test during a --run all reduces test throughput.
the "running test.." messages cut our test throughput in half, doubling the amount of time it takes to run a full suite.
I propose we hotfix this in, it would take the removal of only a couple lines.

I opened a pr #14 that pushes this to master branch. But you can just use that as a blueprint and remove those four lines in whatever branch you think is appropriate.

That sounds great, I hadn't thought of that. I'll take a look!

I'm gonna just go ahead integrate this change in feature/refactor_modules and it will get added in when we push to master, as I imagine we aren't far from the next release.


feat: Adds default issue templates

Would help with organising & providing extra content around issues
Would resolve issue https://github.com/AztecProtocol/aztec-packages/issues/3353

I'm sort of neutral on this one. If someone else reviews this and feels it's good to get in, it can get in

I think more input is needed from the engineering team, here. The main benefit of issue templates is to help the engineering team to triage, reproduce bugs, and understand feature requests. I'm not sure this proposed template satisfies.
Tagging @rahul-kothari

Given issues are still majorly filed by internal engineers, creating templates adds to friction, adds extra processes, and engineers would need to spend longer filing issues. Freeform is best for now :)


Add stacks correctly

This pr made a change that make StatusManager correctly update status.stacks instead of add it by 1.
When the request is made by StatusTuple, it add 'newstatus.stacks' onto the old ones (it add only 1 before the fix).
And also it will overwrite the stacks when the request is made by DataString (it dont update stacks and keep the old data before the fix).

This was made by @CordeliaMist so I want her to sign off on this as well. But it looks good to me, the old code is indeed wrong in that regard.

the intended behavior is to keep the current stacks if applied by a data string with stackOnReapply, and to add 1 to it if it is performed by a status tuple.
If you were to allow the stacks to be increased or prevent it from keeping current stack count with stackOnReapply active, mare will force moodles to apply any "stackOnReapply" actions twice for every modification made.
Im unsure how this is a bug in the first place, or what this fix is even doing? To me it looks like all it will do is re-introduce the previous problem

From a glance this looks like if you were to reapply something from 2 stacks to 3 on moodles, mare would try to update it and send 3, which is fine. if a plugin like GSpeak reapplied the status, it would apply the affect once, bumping it from 2 to 3, then mare would recieve the update seeing it as 3, and add 3 to it making it 6?

Would this be a more efficient approach? We wouldnt need to run the checks for the commonProcessor this way if its a data string and not have to worry about count missmatches.
// check to see if the status is already present.
for (var i = 0; i < Statuses.Count; i++)
{
    if(Statuses[i].GUID == newStatus.GUID)
    {
        // use newStatus to check, in case we changed the setting between applications. Performs stack count updating.
        if (newStatus.StackOnReapply)
        {
            if (source is UpdateSource.StatusTuple)
            {
                // grab the current stack count.
                var newStackCount = Statuses[i].Stacks;
                // fetch what the max stack count for the icon is.
                if (P.CommonProcessor.IconStackCounts.TryGetValue((uint)newStatus.IconID, out var max))
                {
                    // if the stack count is less than the max, increase it by 1, and remove it from addTextShown to display the new stack.
                    if (Statuses[i].Stacks + 1 <= max)
                    {
                        newStackCount++;
                        newStatus.Stacks = newStackCount;
                        AddTextShown.Remove(newStatus.GUID);
                    }
                }
            }
            // Handle sources that are from status manager sets.
            else if (source is UpdateSource.DataString)
            {
                // if the source is the data string, we simply apply the data string.
                // HOWEVER, if and only if the stack count is different, we need to remove it from addTextShown to display the new stack.
                if (Statuses[i].Stacks != newStatus.Stacks)
                    AddTextShown.Remove(newStatus.GUID);
            }
        }
        // then update the status with the new status.
        Statuses[i] = newStatus;
        // fire trigger if needed and then early return.
        if(triggerEvent) NeedFireEvent = true;
        return;
    }
}
// if it was new, fire event if needed and add it.
if (triggerEvent) NeedFireEvent = true;
Statuses.Add(newStatus);

An example for the pr:
Let's say we have a moodles status: { Title: blabla, AddStackOnReapply: true, stacks: 2, Duration: 5mins (whatever), ...}
And a player "A Player" who already have 4 stacks of this status.
If someone add this status to "A Player" again, this will happen:
Before this fix: He get messaged through Gagspeak or some other sync plugins. -> This is an "StatusTruple" event so the stacks will be added by 1 (as a result: 5 stacks). -> Mare catched this edit and fired an update event to his mare pairs. -> His partner's Moodles received this update event (which should be an "DataString" event with 5 stacks). -> His partner's Moodles update the status shows on their side (duration or whatever) but leave the stacks not edited (4 stacks).
This will result a different. And I think it should add 2 stacks instead of 1 since the status have 2 stacks. That is why I think it is a bug whatever.
What will happen after this pr:
"A player"'s Moodles received the update message. -> Moodles received this event (StatusTuple). -> Add stacks by 2 (so it will be 6). -> Mare fires an update event.  -> His partner received the update message (DataString, 6 stacks). -> His partner's Moodles updates the status and overwrite the stacks with the new one. -> Stacks changed to 6.
So we will have the result that both sides have 6 stacks.
This is why I made this pr, if anything was incorrect please let me know. Thanks.

Ah i see the confusion you have. The stacks is not how many stacks at once should be applied per reapplication, its the initial stack to set.
Hince the modification i made in accordance to your formula with slight adjustments. I've tested it on both my and and another persons and both sides of the coin seem to work in compatibility with mare

the code block above is the same thing that you suggested, it just puts the dictionary lookup to only happen in the tuple condition, and ensure it only reapplies the appearance when the stack changes are different, and not do it even if they are the same during an update. The way you had it before it would re-display the stacked application even if the change came from another moodle in the manager

just to clarify, the reason why its not a bug that its only going up by one, and not up by the stack count, is that the stack count is nessisary to transmit what the current stack count of the moodle is between pairs, without affecting the MyStatus item in moodles directly.
If it were used like that, it would need to be a different variable in the MyStatus entirely, or else the first stack would go up by 2, then the next by 4, then the next by 8 ext.

just to clarify, the reason why its not a bug that its only going up by one, and not up by the stack count, is that the stack count is nessisary to transmit what the current stack count of the moodle is between pairs, without affecting the MyStatus item in moodles directly.
If it were used like that, it would need to be a different variable in the MyStatus entirely, or else the first stack would go up by 2, then the next by 4, then the next by 8 ext.

I understood what you mean. Then I think we should have 2 variables like "initial stacks" and "stacks added on reapply".
But I think even if we don't changed it, if the stacks is 2. It will not be 2, 4, 8 but 2, 4, 6.

I agree with the 2 variable approach. 1 for initial and 1 for future applications seems good.

I can put something together and update all of the other information ill need my plugin to be compatible with that in that case later this evening... It will need to have more appended beyond just a change to the statuses or else it will cause issues with mare's handling.

What a pain. This is your fault @kawaii life was fun before moodles became ""mine""

I think Mare will be ok but gagspeak needs some update since the status data is transferred directly. Maybe an api update is needed?

I think Mare will be ok but gagspeak needs some update since the status data is transferred directly. Maybe an api update is needed?

Correct, ive gone ahead and made all nessisary changes moodles would need to make over here while aligning with the tuple requirements StatusTuple users need to make 👍
https://github.com/kawaii/Moodles/pull/59#issue-2739039280


abnormal amyloid beta 40 isoform level

If this is a request for a new term, please provide us with the following information.

Preferred term label (e.g., asplenia)

abnormal amyloid beta 40 isoform level

Synonyms (e.g., absent spleen)

abnormal beta amyloid 40 level, abnormal Abeta 40 level

Textual definition (the definition should be understandable even for non-specialists. Include a PubMed ID or URL(s) to refer to any relevant article(s) that provides information about the suggested term).

any anomaly in the amount of the amyloid beta isoform that is 40 amino acids in length

Any additional notes to clarify the meaning or use of the term. Please provide a PubMed ID or URL(s) for the source of this information.

PMID: 29420472

Suggested parent term (Please look in the hierarchy of the MP using the MP Browser or other browsers such as OLS and find the place in the MP where the new term best fits)

abnormal amyloid beta protein level

If you would like a nanoattribution, please indicate your ORCID id or provide a label such as MGI:sbello (organization, first initial-last name)

https://orcid.org/0000-0003-2307-1226

MP:0021027


Donate button on view archive pages

Donate in upper right hand of view archive pages currently shows a few different amounts. Instead, this section should show a single button that says "Donate", and it will lead to a dedicated "Donate" page that allows an anonymous or logged in user to donate.

proposed

Added ⚡

I like how Damus has styled their donation window:

Looks even better in darkmode

Great!


CVAT SDK does not return XML format

Actions before raising this issue

[X] I searched the existing issues and did not find anything similar.
[X] I read/searched the docs

Context
Hi,
continuing from the previous issue which was resolved #8174.
When I try to get the annotations in CVAT format using the code:
from pprint import pprint
from cvat_sdk.api_client import Configuration, ApiClient, exceptions

# Set up an API client
# Read Configuration class docs for more info about parameters and authentication methods
configuration = Configuration(
    host = 'https://testing.com/',
    username = 'test',
    password = 'test1234!'
)

# Login
with ApiClient(configuration) as api_client:
    cvat_id = 585

    cvat_format = 'CVAT for images 1.1'
    try:
        (data, response) = api_client.tasks_api.retrieve_annotations(cvat_id, format=cvat_format)
        pprint(data)
    except exceptions.ApiException as e:
        print("Exception when calling TasksApi.retrieve_annotations(): %s\n" % e)

the following error is received:
raise ApiValueError(
cvat_sdk.api_client.exceptions.ApiValueError: Invalid inputs given to generate an instance of AnnotationsRead. Multiple oneOf schemas matched the inputs, but a max of one is allowed.

Data is received and the error does not occur when no format is parsed. I have tried it with few other formats (KITTI 1.0 and COCO 1.0) but it seems like parsing format keyword does not work.
Thanks in advance
Environment
CVAT SDK Version: 2.14.3
Python Version: 3.11.8
Operating System: Windows 11

Hi, this endpoint supposes a special protocol of use, which is described in the endpoint documentation (and in the function documentation in SDK).
Additional notes for low-level API are provided here.
I'd recommend using high-level API instead, which encapsulates all this logic.

from pprint import pprint
from cvat_sdk.api_client import Configuration, ApiClient, exceptions
from io import BytesIO
import zipfile
from time import sleep
from http import HTTPStatus

# Set up an API client
configuration = Configuration(
    host = 'https://cvat-server.com/',
    username = 'PROVIDE_USER',
    password = 'PROVIDE_PASSWORD',
)

with ApiClient(configuration) as api_client:
    cvat_id = 585
    format = 'CVAT for images 1.1'

    while True:
        (_, response) = api_client.tasks_api.retrieve_dataset(
            id=cvat_id,
            format=format,
            _parse_response=False,
        )

        if response.status == HTTPStatus.CREATED:
            break

        sleep(1)
        print("Waiting for the dataset to be ready...")

    (_, response) = api_client.tasks_api.retrieve_dataset(
        id=cvat_id,
        format=format,
        action="download",
        _parse_response=False,
    )

    zip_buffer = BytesIO(response.data)
    with zipfile.ZipFile(zip_buffer, 'r') as zip_file:
        file_list = zip_file.namelist()
        extracted_data = zip_file.read(file_list[0])

    # Write the extracted data to a file
    with open('dataset.xml', 'wb') as f:
        f.write(extracted_data)

The above code works fine for me.


E            x: array([[-16384,   -256,  -4608],
E                  [  3072,   5632,   8192],
E                  [  3328,   5888,   8448],...
E            y: array([[192, 255, 238],
E                  [ 12,  22,  32],
E                  [ 13,  23,  33],...
/usr/lib64/python3.11/contextlib.py:81: AssertionError
=========================== short test summary info ============================
FAILED pyxdf/test/test_data.py::test_load_file[example-files/minimal.xdf] - A...
========================= 1 failed, 4 passed in 0.33s ==========================

Fortunately, it looks like this is the only place where the implementation accidentally assumes the host is little-endian.
Reference: https://numpy.org/doc/stable/reference/generated/numpy.frombuffer.html

This PR remains valid and necessary with 1.16.7.

@musicinmybrain sorry, I completely missed your PR! But I can cut a new release tomorrow, could you please add a change log entry?

@musicinmybrain sorry, I completely missed your PR! But I can cut a new release tomorrow, could you please add a change log entry?

Sure! Done. Thanks for looking at this PR.

I also reformatted the diff with ruff, which should satisfy the style check.

Thanks @musicinmybrain 🚀!


bootstrap's NavBar, Nav with Dropdown not work

In example in NavBar.php 'content' => new Dropdown... shows no submenu items, and without 'content' => new Dropdown, just with items massive like in Nav.php it began to give error
Calling unknown method: yii\bootstrap\Dropdown::register()

Greetings!!
I have just created a Small web app which contains 5 main menus. Like 'Contact us','About us','History','Forum' and 'My works'.
Problem:
These five menus are working in large screen, but mobile scree is not working. Bootstrap navigation bar is not working.
the below code i used.
use yii\helpers\Html;
use yii\bootstrap\Nav;
use yii\bootstrap\NavBar;
use yii\widgets\Breadcrumbs;
use frontend\assets\AppAsset;
use common\widgets\Alert;


Tutorial 1 - 2.2.2 Index into Single Neuron Spike plot not displaying.

snntorch version: 0.7.0
Python version: 3.10.12
Operating System: Windows 11

Description
I'm trying to follow the instructions in Tutorial 1 Section 2.2.2 on the second plot. The first plot does display correctly (shown below).

When I try to follow the instructions for the second plot, I get this:

What I Did
I have attempted modifying which index is used to specify a neuron. I have also attempted to using spike_data_sample2 instead of spike_data_sample. Both fail give the same result. I have also attempted to modify the s parameter passed. I still do not fully understand why the Time step is not 0 to 100 and is instead -0.04 to 0.04.
# 2.2.2 Raster Plots

# Reshape
spike_data_sample2 = spike_data_sample2.reshape((num_steps, -1))

# raster plot
fig = plt.figure(facecolor = "w", figsize = (10,5))
ax = fig.add_subplot(111)
splt.raster(spike_data_sample2, ax, s=1.5, c="black")

plt.title("Input Layer")
plt.xlabel("Time Step")
plt.ylabel("Neuron Number")
plt.show()

# Single Neuron Indexed

idx = 210  # index into 210th neuron

fig = plt.figure(facecolor="w", figsize=(8, 1))
ax = fig.add_subplot(111)

splt.raster(spike_data_sample.reshape(num_steps, -1)[:, idx].unsqueeze(1), ax, s=100, c="black", marker="|")

plt.title("Input Neuron")
plt.xlabel("Time step")
plt.yticks([])
plt.show()

Welp, not sure what happened but I cleared and reran my entire jupyter notebook and it worked this time. Not sure what I did, definitely my fault.


test installed code

Following the failure to install skfem.models #19, the discussion following the fix #20 concluded that

It would be convenient to have an automated way to test the installation workflow.

I think one way of doing this is exemplified by meshio/.circleci/config.yml.  I haven't read the documentation but the code is suggestive.
      - run: pip3 install .[all]
      - run: cd test/ && pytest --cov meshio

I'm sorry I have not done anything about this yet. I'm definitely going to bump this up on my todo list.

Oh, I thought that this had been done in fc2384653a77750e100cbac2630a60c0202b5aea.  When I launch a pull-request now, GitHub automatically runs Travis CI.
I think that because the tests are in ./tests, the package in ./skfem, and the latter only referred to from the former by absolute imports, it does effectively test the installed package, doesn't it?

I might remember incorrectly but I thought the problem was that some of the files were not included in the PyPI release.

Ah, O. K.  That would be a good idea too, yes, but that does go beyond what went wrong in #19 that led to this.  That was exemplified in #19 by a pip install but from GitHub rather than PyPI.  Similarly Travis CI clones from GitHub.   It's true that skfem.models wouldn't have been in the PyPI release, but it also wasn't installed even from a cloned repository.
Actually on inspection of the history, the bug in #19 shouldn't have happened as late as 25 July as Travis CI seems to have been set up earlier that month.  The initial diagnosis at the top of this issue and the name of the issue are quite off; I didn't realize that there was any continuous integration in place.  I guess the tests in place at that time just mustn't have covered skfem.models?
I've noticed in other packages that I don't manually upgrade (pip install -e, git remote add, git pull upstream master, etc.) that commits to master don't get installed with pip install -U if the version number isn't incremented.  I believe that that can be automated to various extents, e.g. with PyScaffold.
I suppose the Travis CI needs to test not the PyPI version but the local one, so testing the PyPI release would have to be done elsewhere.

Is this what's happened in #247?


使用sentry是出行了闪退

使用sentry是出行了闪退
(https://cloud.githubusercontent.com/assets/8309821/21491742/e577017c-cc39-11e6-9d70-30236634f3fe.png)

Please make sure you have the latest version 1.3.4 installed, we fixed a bug regarding your crash.

Please update to the latest version 1.4.0 .. the problem should be fixed there.


JSDoc are applied to wrong schema

Bug description
Checks that correspod to JSDoc are always applied to outer schema. They likely need to be applied to the most outer schema where they make sense, or several inner schemas if this makes sense. There's currently no difference between minimum and minLength but it's possible there should be.
Input
export interface A {
  /** @minimum 0 */
  a: number | null;
  /** @minLength 1 */
  b: string | null;
  /** @pattern ^c$ */
  c: string | null;
  /** @format email */
  d: string[];
  /** @min 1 */
  e: number[];
  /** @minLength 1 */
  f: string[];
}

Expected output
export const aSchema = z.object({
  a: z.union([z.number().min(0), z.null()]),
  b: z.union([z.string().min(1), z.null()]),
  c: z.union([z.string().regex(/^c$/), z.null()]),
  d: z.array(z.string().email()),
  e: z.array(z.number()).min(1),
  f: z.array(z.string()).min(1),
});

Actual output
export const aSchema = z.object({
  a: z.union([z.number(), z.null()]).min(0), // wrong
  b: z.union([z.string(), z.null()]).min(1), // wrong
  c: z.union([z.string(), z.null()]).regex(/^c$/), // wrong
  d: z.array(z.string()).email(), // wrong
  e: z.array(z.number()).min(1), // wrong
  f: z.array(z.string()).min(1), // ok
});

Versions

Typescript: v4.2.3
Zod: v1.6.0

Good catch, indeed some cases looks very broken 🙈
PS: Sorry for the late answer, this last month was a bit busy for me.
PS2: carreful, your version of zod looks out-of-date (the generator assume the v3.9.8 as minimal, so you could have some surprises

I did fix all the nullable cases (#57), but for the arrays, thinking a bit more about this, adding some jsdoc like those examples:
/** @minimum 1 */
e: number[];
/** @minLength 1 */
f: string[];

should always apply to the top level (and in this case, this will produce some broken result, since @min 1 can’t really be applied to an array.
For solving this, and removing any possible guess/confusions, I’m proposing this:
/**
 * @minimum 0
 */
type PositiveNumber = number;

interface A {
  myArray: PositiveNumber[];
}

Of course, I just tried and spot an other issue, the @minimum is not applied at the top level type…
Anyway, thanks again for the reporting! 👍

@bisubus This should be fixed in v1.7.0, all the nullable are correctly translated and you can define subtype with annotations for defining arrays with validations.
Thanks again for raising this issue 😀


Fix a typo in the bundler source code

This is a trivial PR. Please see the file changed.

While you're fixing typos, you can also add
[list]: https://typst.app/universe/search/

at the end of README.md, in order to fix a broken link.

Thanks!


Disable default behavior of open/close for menu

Menu has default behavior for open and close, is there a way to disable that and have out own open/close control?
I'm mainly looking to disable close when someone clicks on the screen (outside menu) and not sure how to achieve that.

You should be able to do this by capturing clicks and touchstart before it bubbles up to the document.
For example:
<div onClick={e => e.stopPropagation()} onTouchStart={e => e.stopPropagation()}>
 You should be able to click here withou the menu closing
</div>


passing the first argument with double quote

Could you put the plugin name at the start of this PR's name, so it's apparent what it applies to? E.g. "coffee: protect args with double-quote".

:+1: /cc @robbyrussell


Failed to build docker image on Jetson Orin Nano

https://github.com/atinfinity/l4t-ros2-docker/issues/1

:+1:


vscode with rust-analyzer cannot work for vmm/sandbox crate

Hi,
What happened?
As the subject, in my dev setup, rust-analyzer works well for crates (i mean subproject with individual Cargo.toml), except vmm/sandbox crate.
Does anyone see the same problem? My guess is that, it's related to the deeper directory struct of vmm/sandbox.
What did you expect to happen?
code in vmm/sandbox subdir can works for rust-analyzer as other crates.
How can we reproduce it (as minimally and precisely as possible)?
with vscode + rust-analyzer, try goto definition.
To make RA know all crates, add workspaces under root dir, ref to:
https://www.reddit.com/r/rust/comments/ikzbdj/vscode_multiple_project_roots_rustanalyzer_clippy/
Cargo.toml in root dir:
[workspace]

members = [
    "vmm/common",
    "vmm/sandbox",
    "vmm/task",
    "shim",
    "quark",
]

Anything else we need to know?
No response
Dev environment
No response

Have you added any default feature in vmm/sandbox Cargo.toml, include qemu/stratovirt/cloud_hypervisor yet. Just like
[features]
default = ["qemu", "stratovirt", "cloud_hypervisor"]    // add in this line, add them all or just choose one or two
qemu = ["qapi/qmp", "qapi/async-tokio-all", "unshare", "os_pipe"]
cloud_hypervisor = ["api_client"]
stratovirt = ["qapi/qmp", "qapi/async-tokio-all", "unshare", "os_pipe"]

But this maybe no longer needed after #54 is solved

yes, i also just figured out the same solution. thx!


ReactEventRe.Keyboard.charCode always return 0

Hi all
Trying to get the charCode, I always receive 0 instead a valid number:
type state = {value: string};

type action =
  | OnKeyUp(int);

let component = ReasonReact.reducerComponent("NumberInput");

let make = (_children) => {
  ...component,
  initialState: () => {value: ""},
  reducer: (action, _state: state) =>
    switch (action) {
    | OnKeyUp(_keyCode) =>
      ReasonReact.NoUpdate;
    },
  render: self =>
    <input
      type_="text"
      onKeyUp=((event) => {
        Js.log(ReactEventRe.Keyboard.keyCode(event));
        Js.log(ReactEventRe.Keyboard.charCode(event));
        self.send(OnKeyUp(ReactEventRe.Keyboard.charCode(event)));
      })
    />,
};

keyCode return proper value.
Thanks

This is a React thing and has been resolved on Disccord


Websockets not updating UI for cluster components.

What kind of request is this (question/bug/enhancement/feature request):
Bug (I think?), on a number of versions I've tried. 2.2.4, 2.2.5, 2.2.6 and the latest as of writing (2.2.7)
Steps to reproduce (least amount of steps as possible):

Create a Compute Instance

Machine Type: n1-standard-1
Image: ubuntu-os-cloud/ubuntu-1804-lts

Run the following bootstrap commands, this is part of my Terraform so I will just add them line by line.

sudo apt-get update
sudo apt-get install -yq apt-transport-https ca-certificates curl software-properties-common
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository 'deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable'
sudo apt-get update
sudo apt-cache policy docker-ce
sudo apt-get install docker-ce=5:18.09.3~3-0~ubuntu-bionic
sudo docker run -d --restart=unless-stopped -p 80:80 -p 443:443 -v /opt/rancher:/var/lib/rancher rancher/rancher --acme-domain <rancher.domain.com>

Create a cluster with your google credentials json, any cluster doesn't matter from my tests.
Deploy a workload nginxdemos/hello
Under workloads, twirl down the deployed workload and increment the worker count from 1 to 2. Voila! UI will not update. It will infinitely sit there until you refresh the page.

Result:
Upon creating the cluster, the websockets connection is flawless, you get provisioning status updates back as expected, however, as soon as the cluster is created and you attempt to scale a newly created workload, you will not see any live updates. This also applies to details of a workload (by clicking on the workload name and viewing the list of deployed pods, if you attempt to delete an instance from the pod list, it will not update until you refresh.
Maybe this screenshot will illustrate better what I'm attempting to articulate. Notice the current state of websockets in DevTools. The ironic part of this is the next screenshot.

sockId=1 & sockId=2 are the only two connections receiving any messages. The rest of the socket connections are just empty

Other details that may be helpful:
I have tried this with various different configurations, SSL, no SSL, Let's Encrypt, domain, no domain, same results either way. The issue to me just seems like a Websocket bug with the UI. I say this because sockId=1 and sockId=2 are receiving proper data, I can't recall which exactly is getting the cluster level data but one of them is, its just not bound properly to the UI.
Also, maybe worth noting, socket connections will infinitely be created, I've seen up to 30 active until the timed refresh hits.
OS Details
NAME="Ubuntu"
VERSION="18.04.2 LTS (Bionic Beaver)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 18.04.2 LTS"
VERSION_ID="18.04"
Kernel Details
4.15.0-1040-gcp
Docker Version
Client:
Version:           18.09.3
API version:       1.39
Go version:        go1.10.8
Git commit:        774a1f4
Built:             Thu Feb 28 06:53:11 2019
OS/Arch:           linux/amd64
Experimental:      false
Docker Info Command
https://gist.github.com/jhartzell/e12fdd05eb4298ab8bfea8359094ad23
Further Details
Standalone, Single node - rancher/rancher image
kubectl client - v1.13.7
kubectl server - v1.13.7-gke.19
Can provide further details but I figure this is long enough for now.

Also noticed some rancher container logs when sitting on the cluster page.

I'm closing this, after hour 7 and doing even further testing I've found that the issue was not rancher itself, it was a borked firewall rule.. I've confirmed this by hosting up an entirely new GCP account and retrying my steps above. It worked without fail, now to go find that rule :)


Add utcfromtimestamp() to DateTime bindings

utcfromtimestamp is a very common method.
I believe it should be part of the API.

I strongly disagree with this for a number of reasons, the foremost of which is that you should not be using utcfromtimestamp even in Python.
For one thing, it's not part of the C API - we have bindings for everything that's in the C API, and utcfromtimestamp is not part of that.
For another, the utcfromtimestamp and utcnow are both problematic in that they represent a specific time in a specific time zone using a naive datetime object, but many methods on datetime treat a naive datetime as being in your local time. Those methods are essentially broken because they are inconsistent with either model for datetime - the one where a bare datetime refers to an abstract datetime and the one where a bare datetime refers to the datetime in local time. If you want a datetime from a timestamp in UTC, you should use datetime.fromtimestamp(ts, datetime.timezone.utc).
I believe we have the FFI bindings for the datetime.timezone.utc singleton in Python 3.7+, but we still need safe Rust wrappers for it.


Fix Invalidate cache when enable auto refresh catalog.

Proposed changes
The default value of RefreshCatalogStmt.invalidCache is false now, but the RefreshManager.RefreshTask does not invoke RefreshCatalogStmt.analyze() so it will not invalidate the cache.

Further comments
If this is a relatively large or complex change, kick off the discussion at<EMAIL_ADDRESS>by explaining why you chose the solution you did and what alternatives you considered, etc...

run buildall

run buildall


Incomplete MSBuild Special Characters

List of MSBuild Special Characters is incomplete. From Microsoft.Build.Shared.EscapingUtilities class point of view, the list currently is missing (, ), and \.

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

ID: 665605c0-95ba-10a1-1d91-3c2b863630b1
Version Independent ID: 2b544ce8-21dc-74b9-4bc2-53d36a0add15
Content: MSBuild Special Characters - Visual Studio
Content Source: docs/msbuild/msbuild-special-characters.md
Product: visual-studio-windows
Technology: msbuild
GitHub Login: @ghogen
Microsoft Alias: ghogen

The backslash \ is not listed in s_charsToEscape and should not be added to the MSBuild Special Characters doc page. In the s_charsToEscape source code, the backslash only occurs as '\'' to escape the apostrophe character ', which is already listed on the page.

@KalleOlaviNiemitalo Yes, you are right!!


Fixed #34899 -- Added blank choice to callable choices lazily.

ticket-34899
So the challenge was that adding the blank choice was performed eagerly. The easiest solution is, therefore, to make the addition of the blank entry lazy. Unfortunately this also means that we need to extract the handling of flattening of choices into a helper function -- flatten_choices() (which is done in the first commit). From there, a BlankChoiceIterator falls out quite nicely...
...but then we have a handful of issues in testing. It seems that these can be overcome by implementing __eq__() and __getitem__() on BaseChoiceIterator. Alternatively we could use 7e35b749c5add17ba58bc2e40a0183d8b33e4b16 to only use BlankChoiceIterator where we encounter a BaseChoiceIterator subclass, but then we're duplicating logic which is not so nice... And it also means that comparisons against or subscript access for lazy choices will still fail.

I can confirm this fixes my test project.

Thanks for the initial review @adamchainz.
I've restructured a little bit and think this should be pretty much ready now.

I pushed a rebase onto main plus some extra tests for the __eq__ definition, using the proposed implementation to fix the test failures I was having. I also added tests for the IndexError case.
While tests run for these changes, I will work on adding some tests for the extracted flatten_choices helper.

Thanks for looking 😊

Do you have any time to work on the comments or shall I? Thanks again!

Sorry, but I won't be able to do anything until next week. Would you be able to take it over the finishing line for me?

Thanks for looking 😊

Do you have any time to work on the comments or shall I? Thanks again!

Sorry, but I won't be able to do anything until next week. Would you be able to take it over the finishing line for me?

Yes, absolutely! I have made one final commit with tests for flatten_choices and I will merge once the CI run is green. After that, beta release! :tada:
Thank you for the PR!


Legend options

Could you make it possible to have to remove the numerical part of the legend scale?
Another option that would be helpful would be to assign a gradient scale maximum. For example, I'm plotting the difference between two types of users and amount of rides done each day. The two calendars have different maximums and the gradient is misleading when comparing both calendars. I attached the two calendars produced using the package.

Could you share the code to generate the plots so helping you won't require reverse engineering what you have done? :wink:

Could you share the code to generate the plots so helping you won't require reverse engineering what you have done? 😉

Yes, of course!
calendR(start_date = "2021-10-01",         end_date   = "2022-09-30",         title = "Daily Cyclistic activity for casual riders",           title.size = 20,                           title.col = 1,                            subtitle = "Data used from 10/2021-09/2022",         subtitle.size = 10,         col = "white",                           lwd = 1,                                   lty = 1,                                   mbg.col = 4,                               months.col = "white",                      font.family = "mono",                                       font.style = "bold",                       weeknames.col = "black",                  days.col = 1,                              day.size = 3.5,                          bg.col = "white",         special.days = ride_times_casual$frequency,              gradient = TRUE,                           special.col = "purple",                      legend.pos = "right",                     legend.title = "Legend",                     orientation = "portrait")          calendR(start_date = "2021-10-01",         end_date   = "2022-09-30",         title = "Daily Cyclistic activity for annual members",           title.size = 20,                           title.col = 1,                             subtitle = "Data used from 10/2021-09/2022",         subtitle.size = 10,         col = "white",                           lwd = 1,                                   lty = 1,                                   mbg.col = 4,                              months.col = "white",                     font.family = "mono",                                      font.style = "bold",                       weeknames.col = "black",                   days.col = 1,                              day.size = 3.5,                            bg.col = "white",         special.days = ride_times_member$frequency,              gradient = TRUE,                           special.col = "purple",                      legend.pos = "right",                      legend.title = "Legend",                     orientation = "portrait")
Thank you!

Note that this still does not allow generating you plot since the data are not shared completely.
I ended up generating my own (fake) data to reconstruct your problem:
library(lubridate)

start <- "2021-10-01"
end <- "2022-09-30"

set.seed(42)

ride_times_casual <-
  data.frame(date = as.character(seq(ymd(start), ymd(end), by = "day")),
             frequency = rnorm(ymd(end) - ymd(start) + 1L, .5, .1))

range(ride_times_casual$frequency)

[1] 0.2006909917 0.7701891000

From what I understand from your problem, the issue is that those ranges are not comparable across your two calendars but determine the gradient limits by default:
library(calendR)

cal <-
  calendR(start_date = start,
          end_date = end,
          title = "Daily Cyclistic activity for casual riders",
          title.size = 20,
          title.col = 1,
          subtitle = "Data used from 10/2021-09/2022",
          subtitle.size = 10,
          col = "white",
          lwd = 1,
          lty = 1,
          mbg.col = 4,
          months.col = "white",
          font.family = "mono",
          font.style = "bold",
          weeknames.col = "black",
          days.col = 1,
          day.size = 3.5,
          bg.col = "white",
          special.days = ride_times_casual$frequency,
          gradient = TRUE,
          special.col = "purple",
          legend.pos = "right",
          legend.title = "Legend",
          orientation = "portrait")

cal

However, you can already use basic ggplot2 functionality to manually overwrite those limits to match them across calendars:
library(ggplot2)
cal + expand_limits(fill = 0:1)

I hope this solves your issue and you also learned a bit about how create a reprocible example for the next time you are asking for help. :wink:

I also found out scale_fill_gradientn also works for this issue:
cal + scale_fill_gradientn(colours=c("white","purple"),limits=c(0,0.125))


wip

Codecov Report
Attention: Patch coverage is 47.68212% with 79 lines in your changes missing coverage. Please review.

Project coverage is 41.19%. Comparing base (293453d) to head (cac0d88).

Files
Patch %
Lines

providers/backend/file/file.go
0.00%
32 Missing :warning:

cmd/cluster.go
0.00%
15 Missing :warning:

providers/infrastructure/mock/mock_types.go
0.00%
9 Missing :warning:

providers/controlplane/mock/mock_controlplane.go
0.00%
6 Missing :warning:

cloudinit/cloudinit.go
0.00%
5 Missing :warning:

providers/backend/s3/s3.go
0.00%
4 Missing :warning:

providers/backend/backend.go
0.00%
3 Missing :warning:

cmd/root.go
0.00%
2 Missing :warning:

cmd/delete.go
0.00%
1 Missing :warning:

cmd/version.go
0.00%
1 Missing :warning:

... and 1 more

Additional details and impacted files
@@            Coverage Diff             @@
##             main      #14      +/-   ##
==========================================
- Coverage   42.25%   41.19%   -1.06%
==========================================
  Files          22       22
  Lines         994     1034      +40
==========================================
+ Hits          420      426       +6
- Misses        556      590      +34
  Partials       18       18

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


acr_values defined as options but not passed

So I've had to pass acr_values to the OP and although these are defined as options OmniAuth::Strategies::OpenIDConnect class they are never passed to the final authorize URI. I've included them inside lib/omniauth/strategies/openid_connect.rb on line 127 like so:
      def authorize_uri
        client.redirect_uri = client_options.redirect_uri
        opts = {
            response_type: options.response_type,
            scope: options.scope,
            state: new_state,
            nonce: (new_nonce if options.send_nonce),
            hd: options.hd,
            acr_values: options.acr_values # here is the line
        }
        client.authorization_uri(opts.reject{|k,v| v.nil?})
      end

To my understanding this authorize URI should be flexible enough to include any option that could be passed in the authorize_uri not just the acr_values. Was there a reason this wasn't included in this version or am I missing something?

Do you want to specify claims, or did I misunderstand you? To be able to specify claims I've created a pull request (#52) some days ago.


Package review comments

I just did a quick review of the package (not code level, but packaging), and noticed a few things:

Unclear to me what this file is for: https://github.com/Anaconda-Server/nbpresent/blob/master/conda.recipe/package.json

Do we really want to have README.rst and README.md and README.html all checked in?

Unclear to me why this line is required: https://github.com/Anaconda-Server/nbpresent/blob/master/conda.recipe/build.sh#L6

If it is possible to fix this PIP entry in environment.yml that would be great: https://github.com/Anaconda-Server/nbpresent/blob/master/conda.recipe/build.sh#L6

Thanks for the feedback!

Unclear to me what this file is for: https://github.com/Anaconda-Server/nbpresent/blob/master/conda.recipe/package.json

it is used here: https://github.com/Anaconda-Server/nbpresent/blob/master/conda.recipe/run_test.sh#L3
To get the stars of phantomjs, casperjs, npm, conda and the notebook aligned, i basically need to run the notebook tests from inside npm. In the test environment, I don't need the whole build chain, just a few packages. this extra package.json  handles both of these.

Do we really want to have README.rst and README.md and README.html all checked in?

The html is an oversight, but the other two: maybe. They are both generated from notebooks/README.ipynb, but the rst is used exclusively at the time of a pypi release. since we've basically got that automated anyway, we can likely safely ignore it...

Unclear to me why this line is required: https://github.com/Anaconda-Server/nbpresent/blob/master/conda.recipe/build.sh#L6

I believe this was to appease sphinx... i'll have to revisit.

If it is possible to fix this PIP entry in environment.yml that would be great: https://github.com/Anaconda-Server/nbpresent/blob/master/conda.recipe/build.sh#L6

Not sure if this is the link you meant... how is the entry point breaking?

re: readme.ipynb: Looks like the ipynb->markdown isn't working properly either.

I think the discussion got stale by now... closing.


Add goleak check to packages with empty tests

Which problem is this PR solving?

Part of #5006

Description of the changes

Add goleak checks to all packages with empty_test.go as well as ./storage/... (which mostly contains APIs)

How was this change tested?

CI

cc @akagami-harsh