Fix for service backend entry leak in cilium_lb4_backends_v2

Backends are meant to be reused across services. When service backends are updated, existence of every backend is looked up by it's hash. Currently, the check is made only against the current service's backends but not against global backends.
This can result in duplicate backend entries. Without this commit whether duplicate is created or not depends on a race between releasing old backend ID during deletion and updating ref. count during creation. Currently on agent startup when service restoration process finds a duplicate entry, restoration stops and the rest of the entries are leaked. Over time with enough restarts, we could max out the backend bpf map.
This commit makes the lookup global and entries in backendByHash map are deleted only after data from lbmap is deleted. This should prevent duplicate entries in backend map.
Fixes #23551
Signed-off-by: Hemanth Malla<EMAIL_ADDRESS>

/test

@hemanthmalla Nice catch!

This can result in duplicate backend entries

I am bit struggling to understand how this can lead to duplicate backend entries. Let's assume that a backend exists within another service, while a given service doesn't have it. The if s.backendRefCount.Add(hash) evaluates to false, so the backend won't be added to newBackend. Do I miss something?

@brb That's correct. I missed factoring for this behavior in backendRefCount.Add() :(
Back to drawing board again to understand where the leaks are coming from.

@brb Spent some more time looking into this. The race is between removal of a backend in terminating state and deletion of the entire service.
When a backend is in terminating state, there’s an optimization in place to not send new traffic to this backend. This is implemented by skipping addition of entries in the frontend map while the backend entry is still in place.
UpsertService()
	-> updateBackendsCacheLocked
	       - > upsertServiceIntoLBMaps ()
	                  -> Check and exclude terminating backends
	                         -> lbmap.UpsertService()
	                                    -> updateServiceEndpoint()

https://github.com/cilium/cilium/blob/85615c16eea57e2004e0593d42cf5e39bfd107d1/pkg/service/service.go#L801-L807
We start seeing issues when this service with a terminating backend gets deleted :
delK8sSVCs()
	-> DeleteService()
		-> deleteServiceLocked()
			-> deleteBackendsFromCacheLocked() [decrements ref cnt and release backendID]
				-> lbmap.DeleteService() [ Attempts to del all entries based on #backends ]
				    * Cmd to del the terminating entry fails and the method bails immediately
				    * Obsolete backends entries are left behind
				    * lock released

Now the ref count for the orphan backend’s hash is 0 and the backend ID is released. If this backend is now added to any service , we’ll see a duplicate entry.
UpsertService()
      -> updateBackendsCacheLocked ()
           * if b, found := svc.backendByHash[hash] returns false because it's checked against local service.
           * if s.backendRefCount.Add(hash) returns true because previously count was reset
	             -> AcquireBackendID(backend.L3n4Addr) returns new ID since lookup on alloc.entities fails
                      -> upsertServiceIntoLBMaps()
                           -> s.lbmap.AddBackend()

And we have a duplicate backend entry.

@hemanthmalla Good catch! You might be onto something here! Thanks for the debugging notes.
There is a difference in the logic around how we treat terminating backends in v1.11 (terminating backends are removed from the BPF maps) v/s v1.12 (terminating backends are moved to the end of a service entry in the BPF maps). What version are you running (based on the linked code above, it looks like v1.11)? Was there cilium upgrade/restart involved?

I was also able to reproduce this with the following :

Create a deployment which traps TERM  and does nothing for 90 secs trap 'sleep 90' TERM && sleep infinity
Create a cluster IP service
Delete one of the pods with enough grace period kubectl delete pod <> --grace-period 60
Delete the service.

level=warning msg="Error deleting service by frontend" error="Unable to delete service entry REDACTED_IP:36895: unable to delete element REDACTED_IP:8080 from map cilium_lb4_services_v2: no such file or directory" k8sNamespace=hemanth-test k8sSvcName=leak-repro-service obj="REDACTED_IP:8080" subsys=k8s-watcher

After creation :
root@ip-10-128-102-12:/home/cilium# ./cilium bpf lb list --frontends | grep REDACTED_IP -A4
REDACTED_IP:8080       516 0 (90) [0x0 0x0]
                       513 0 (90) [0x0 0x0]
                       515 0 (90) [0x0 0x0]
                       0 3 (90) [0x0 0x0]

While one of the pods in terminating state (513 goes away)
root@ip-10-128-102-12:/home/cilium# ./cilium bpf lb list --frontends | grep REDACTED_IP -A4
REDACTED_IP:8080       515 0 (90) [0x0 0x0]
                       516 0 (90) [0x0 0x0]
                       518 0 (90) [0x0 0x0]
                       0 3 (90) [0x0 0x0]

All 4 backends leaked after service delete.
root@ip-10-128-102-12:/home/cilium# ./cilium bpf lb list --backends | grep -E '(513|515|516|518)'
518   any://IP1:8080
513   any://IP2:8080
515   any://IP3:8080
516   any://IP4:8080

@aditighag we're observing this in 1.11. We did upgrade from 1.10, but I don't think this has anything to do with the upgrade. I did notice the skip adding to frontend bits change in 1.12 and master, but I'm yet to take a closer look.

@hemanthmalla Thanks! I have a fix + unit test in progress for v1.11 changes. I'll need to take a closer look for >= v1.12 to see if the problem exists.

@hemanthmalla Can you give this fix a shot - https://github.com/cilium/cilium/pull/23858?

@aditighag thank you for the fix and unit test. I think we need the commit from this PR as well to avoid duplicates from other failure reasons in future. I tested #23858 and this commit against the reproducer.

I'm not sure I follow: As Martynas pointed out above, the existing code (s.backendRefCount.Add(hash)) already guards against having duplicate backend entries, right? Or were you talking about some other changes that are not yet pushed to this PR?

Fix works as expected and entries are cleaned up.

Thanks for testing the fix. The PR explains why we could have duplicate backend entries in some cases.

I need to understand why integration tests are failing here though. Do you think any of these could be flakes ?

The travis failure is related. As for the Jenkins failures, here are the documented steps - https://docs.cilium.io/en/v1.13/contributing/testing/ci/. Anyway you may not need this PR?

@aditighag in a scenario where a backend belongs only to one service, when the k8s service is deleted and cleanup fails halfway through, s.backendRefCount would be zero ( hash deleted from map). At this stage clean up only went through for ref count and backend ID but nothing else.
delK8sSVCs()
	-> DeleteService()
		-> deleteServiceLocked()
			-> deleteBackendsFromCacheLocked() [decrements ref cnt and release backendID].  <--- Zeroed here
				-> lbmap.DeleteService() [ Attempts to del all entries based on #backends ]
				    * Cmd to del the terminating entry fails and the method bails immediately
				    * Obsolete backends entries are left behind
				    * lock released

During the next UpsertService call for a service that uses this backend, s.backendRefCount.Add(hash) will not guard against duplicate entry right ?

Hello, I find something maybe useful after reading your comments.  I think I should write somethig although I am not sure about my solution since I am not familiar with the code very much.
In func deleteServiceLocked，some key functions are invoked

deleteBackendsFromCacheLocked  -> obsoleteBackendIDs
s.lbmap.DeleteService
s.lbmap.DeleteBackendByID   <- obsoleteBackendIDs
DeleteID

and if s.lbmap.DeleteService return error, this function return directly without any further process, and the s.lbmap.DeleteBackendByID will not be executed so the backend will not be recycled, which results in leaks.
We get the same error information as this, which is the error reported by s.lbmap.DeleteService
level=warning msg="Error deleting service by frontend" error="Unable to delete service entry REDACTED_IP:36895: unable to delete element REDACTED_IP:8080 from map cilium_lb4_services_v2: no such file or directory" k8sNamespace=hemanth-test k8sSvcName=leak-repro-service obj="REDACTED_IP:8080" subsys=k8s-watcher

Besides, in func updateBackendsCacheLocked, there is another variable named obsoleteBackendIDs as well, which seems to recycle the unused backends not used by a service anymore. However, this obsoleteBackendIDs only come from one part of the svc.backendByHash, which cannot solve the leak problem, although it may be able to reuse the exists leaked backend.

So actually we have two problem: backend entry leaks caused by service lbmap fails, and failed to reuse the exists backends, am I right?

@aditighag in a scenario where a backend belongs only to one service, when the k8s service is deleted and cleanup fails halfway through, s.backendRefCount would be zero ( hash deleted from map). At this stage clean up only went through for ref count and backend ID but nothing else.
delK8sSVCs()
	-> DeleteService()
		-> deleteServiceLocked()
			-> deleteBackendsFromCacheLocked() [decrements ref cnt and release backendID].  <--- Zeroed here
				-> lbmap.DeleteService() [ Attempts to del all entries based on #backends ]
				    * Cmd to del the terminating entry fails and the method bails immediately
				    * Obsolete backends entries are left behind
				    * lock released

During the next UpsertService call for a service that uses this backend, s.backendRefCount.Add(hash) will not guard against duplicate entry right ?

After deleteBackendsFromCacheLocked returns, backends have already been removed from the in-memory state in the Service instance (provided that these backends were only associated with that sole service). However, the agent and datapath are now out of sync, because the backends weren't deleted from BPF maps. So in order to remove duplicate backends from the BPF maps, you would have to scan the the backends map during the restore operation (see restoreBackendsLocked). Have you tried checking for duplicates here - https://github.com/cilium/cilium/blob/master/pkg/service/service.go#L1371-L1371?

@aditighag I've been OOO for the last one week. If not sooner, I'll check and get back on the 8th. Sorry for the delay.

If not sooner, I'll check and get back on the 8th.

@hemanthmalla Any update on the PR? We can turn it into a draft in the meantime.

@aditighag apologize for the delay.

you'll skip adding the backend to subsequent services. And when the first service is deleted, you would end up deleting the backend

Thanks for catching this. What if we moved adding the backend to svc part svc.backendByHash[hash] = backends[i] out of the backendByHash lookup block ?

So in order to remove duplicate backends from the BPF maps..

I intended this PR only to avoid the leak in the first place. If we also plan on handling leaked / duplicate entries, can we do that on a different PR ?

I intended this PR only to avoid the leak in the first place.

The leak was fixed in this PR. We have a PR to not to skip backend restore for failures, and Jared also backported it. So I'm not sure what this PR is trying to address?
@jaredladvina/ @hemanthmalla : Can you comment on to what extend you are seeing the original bug implications?

Primarily I wanted to address the issue that if we don't lookup backends in the global in-memory map there might be a possibility of hitting the same bug again in future. Especially because ref count being zero for a backend doesn't mean that the entry was deleted from the bpf map.

I realize the current logic is flawed as well since the ref. count doesn't get updated. Pushing an update again to fix that.


Support rename and move command

Solve the problem that the active expire index becomes invalid after the rename and move commands.

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


Finished Text, Binary, and JSON for UnixTime

In support of Azure/azure-sdk-for-go#587, I've implemented UnixTime for marshaling and unmarshaling Swaggers that include Unix Timestamps. Next will be updating the generator to recognize this as a well-known type.

Related https://github.com/Azure/autorest/issues/1130
There are UNIX time tests in autorest too. I think we haven't added those.


iCUE conflict

I use Corsair iCUE with my Corsair keyboard.  I have dedicated profiles for different applications, including PoE.  Since the latest update to PoE-Overlay (0.6.12) corsair iCUE no longer detects that PoE is the application with focus.
Prior to the 0.6.12 update, this would occur after opening the settings, and would require that I relaunch PoE-overlay for iCUE to detect PoE ad the application with focus.  Since the update, this does not work as a workaround.
If I relaunch PoE-Overlay, and go back into the game everything functions properly until I click outside of the game.  After which point iCUE will no longer register PoE as the window with focus.
Corsair iCUE is used to alter what keys on my keyboard do, so without it none of my custom keys on my keyboard function.
🌍  Your Environment

OS: Win 10 x64 1903
Version: 0.6.12
PoE: Standalone

This is what I was talking about in issue #455

Without PoE Overlay Running:

App: PoE, Profile: PoE
Alt Tab
App: Desktop, Profile: Desktop
Click/Alt Tab/Refocus PoE
App: PoE, Profile: PoE

With PoE Overlay Running:

App: PoE, Profile: PoE
Alt Tab
App: Desktop, Profile: Desktop
Click/Alt Tab/Refocus PoE
App: PoE, Profile: Desktop

System does not recognize that PoE is the currently focused application
The same thing happens if I open any of the overlay windows, basically any operation that causes PoE to lose focus

Can confirm the same issues on build 1909 as well.
🌍 Your Environment
OS: Win 10 x64 1909
Version: 0.6.12
PoE: Standalone

Same issue with Logitech software. Application detection kinda broken.

Hi, thanks for creating an issue. The new update 0.6.11 introduced keyboard support. In order to be able to support this i had to change my main window to be focusable.
I'll provide a way of disabling this in the next version. Please keep in mind that this will also disable the keyboard support. There is no way to handle keyboard input without the (external) application having focus and therefore removing the focus of PoE. This is only possible if my application is injected into PoE - which is a planned feature but will take time to develop and get approved by GGG.
In the meantime i hope i can develop a way of only losing the focus once the dialog is open but this will also take some time because some refactoring is required.
Thanks again for giving me this important input!
Best regards

Please get the option for this ASAP, as it stands PoE-overlay is unusable for me.

0.6.13 (2020-03-25)

add keyboard support toggle as tray menu entry (#460)
update disable keyboard support by defaut (#460)


Create GitHub Actions CI workflow based on travis job.

Also removes defunct travis.yml config.

@allenh1 this PR adds GitHub Actions based CI for Superflore and may be useful in testing the 0.3.3 release.

@tfoote can you please remove the travis-ci requirement?

@tfoote can you please remove the travis-ci requirement?

I can do that.

can you please remove the travis-ci requirement?

I can do that.

Done. @allenh1 do you want to make any of the GitHub Actions checks required for merge?

Done. @allenh1 do you want to make any of the GitHub Actions checks required for merge?

Yes please!

Yes please!

I didn't make each individual check required but I did make several os/python-version combinations required and we can update those as platforms evolve.


Tags: spacing on mobile is off

Bug with tags style
The Related Reports links on
https://www.consumerfinance.gov/data-research/research-reports/no-fear-act-annual-report-fiscal-year-2015/
look like this under 600px width:

The spacing between a list of tags on mobile is off.
This work should be done as a part of a larger effort to bring the tag pattern into the Design System (which also includes making the color teal instead of orange.)
Original notes from @anselmbradford
The top border on the second link is being removed by https://github.com/cfpb/capital-framework/blob/master/packages/cf-typography/src/molecules/list.less#L54
This adjustment makes sense for m-list__links, but not with the modifications m-related-metadata_topics is adding.
This pattern should be included in CF (see https://github.com/cfpb/capital-framework/issues/947), released and updated here.
It should either be a modifier on m-list, or m-related-metadata_topics should be a parent container around the m-list (if this were added to CF that name likely would be generalized to something else).

Related: #2001


Copying from the About dialog actually copies from open view

Makes it dificult to copy build ids...
BN Version: 2.2.2557-dev
Repro steps:

Open any file
Highlight some text in linear view
Open the about page
Highlight the binja version text
Copy

Expected behavior: Binja version is copied
Actual behavior: Lines from linear view are copied

I cannot reproduce this. But it does remind me of a similar issue: https://github.com/Vector35/binaryninja-api/issues/2075

I cannot reproduce this. But it does remind me of a similar issue: https://github.com/Vector35/binaryninja-api/issues/2075

Right-click copy works. CMD/CTRL-C does not.

This has been resolved and a duplicate ticket filed accidentally.


Make pull request for SciF odm_workflow

Task to do
Make pull request for odm_workflow after previous PR is completed
Reason
Merge changes into tree
Result
Code base is up to date
Waiting on PR to complete: https://github.com/AgPipeline/drone-makeflow/pull/3
Changes to merge: https://github.com/Chris-Schnaufer/drone-makeflow/tree/scif_odm

https://github.com/AgPipeline/drone-makeflow/pull/4/


Error introduced with 39ecad5

I'm getting this error on startup ever since 39ecad5
packer.nvim: Error running config for colorful-winsep.nvim: ...rt/colorful-winsep.nvim/lua/colorful-winsep/comments.lua:19: bad argument #1 to 'pairs' (table expected, got nil)

#24


miner validation with owner wallet sign

Is your feature request related to a problem? Please describe.
User need to add the wallet sign before verified.
Describe the solution you'd like
A clear and concise description of what you want to happen.
Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.
Additional context
Add any other context or screenshots about the feature request here.

Owner address
f3se6kadxocrqbbf3uwb3k4lz5kutsauny4idqdk6uos5567tetvyeix42bojh46naeqc5455dwxpmv7b2sxqq
Message
Signature for filfox
f073525
2021-02-23T22:04:43.140Z
Sign code
lotus wallet sign f3se6kadxocrqbbf3uwb3k4lz5kutsauny4idqdk6uos5567tetvyeix42bojh46naeqc5455dw
• lotus wallet sign  : signs  with the wallet's default account
• lotus wallet sign --from   signs with:
• lotus waller verify    prints "Valid" if is a valid signature of


.idea folder not removed

You might want to do something like git rm -r --cached .idea

Fixed, thank you.


Filtering has become inconsistent

To repro:

Open a new private browsing window
Open https://browser-issue-tracker-search.appspot.com/
Uncheck all but "Mozilla"
Type "ikea"

You get a lot of results for both Chrome and Firefox. Further checking and unchecking does not reset things.

Weird. I'll taking a look.
Thanks for reporting!

Ah, one thing to notice is that the official https://developers.google.com/web/feedback/browser-bug-searcher url is working as expected.
I can look into making the appspot.com version work again, but we're trying to get folks using the official /web one.

Oh, I didn't know that that was even a thing, OK! I'm happy to switch all my bookmarks to the new one. Maybe just add a redirect?

Hmm, no, I can still reproduce using that URL and the above steps.

Hmm ok.
For me, if I selected just Mozilla, I only get FF results:

But when I deselect all vendors, it shows results for all browsers:

^ is a bug. It should really show "0 results"

Very strange. Did you try in a private browsing window? And did you do the selections before typing the words? Those are my only guesses...

Got it. I searched then filtered. If I filter first, then search... it repros for me.


extend set functions for objects

union, intersection
implement them in terms of unite and intersect (opposed to array sets, where it is done the other way around)
use [first, ...rest] as function arguments
make intersect and unite take ...rest args

done for union

open: intersection


Document our voting requirements

https://groups.google.com/forum/#!topic/microprofile/tTEaf2uBnt4
In this topic, our rules around votes for evolution changes are discussed.  Whatever the outcome, this ticket is to document those rules within the evolution process itself.

closing as out of date with process changes


Use ENV to identify Python

While installing no OS X I was having issues with EmPyre recognizing my Python version. I updated "empyre" and "setup/setup_database.py" files so that Python is called using: #!/usr/bin/env python
Not sure if there are other files to modify (yet) or if this could cause other issues. But it might be helpful for others.
cutaway

@cutaway hey thanks for bringing this up. Currently we have yet to setup server side on OS X, but we can look into running it on this platform of course. I also have no idea what issues you could have in the future.

Ah, I see, no problem. This update should work the same for Linux-distros, so shouldn't have a negative impact. Since I already have it installed I'll see what happens and post any useful findings here. It I have a bunch of issue I'll just switch to a Linux-Bistro.
Thank you for your work on this project. I think this is closed but I'll let you do it if you want to track that update.
cutaway

cutaway,
I just got it working by running "sudo easy_install pip" then run "sudo ./install". Give that a shot first and let me know if it works.

As there's been no response for nearly a month, I'm going to close this one out. If it's still an issue, feel free to reopen.


[Enhancement] Plugin Tracking Skill and Attribute Points

Is your feature request related to a problem? Please describe.
If you put points into a skill and/or an attribute and then that skill gets removed or replaced by
something else, you lose the points invested into that skill/attribute
Describe the solution you'd like
It would be very nice of the plugin could track How many points you should have.
Either refunding the points when a skill is removed or plugin tracking and comparing
how many points you have and how many are spent. Not sure how points are affected
when you increase points gained by level to a person who already has some levels but if
it doesn't give them those extra points it would be nice give them those too. Should also
work for reverse? It was talked about before what happens if you would give someone
negative skill points if they already spent them on skills and how it should track the order
of which the skills/attributes were leveled up and just undo them.
This is useful later on if/when you need to rebalance point gain, maybe redoing skill trees
and so on without having to mess up so much and having to do those manually.

copy of #319


Use palette crate for color handeling (color spaces and conversions)

What problem does this solve or what need does it fill?
Most libraries which do some kind of rendering (which bevy surely does) are in need of having different color types, color spaces and color conversions to their disposal. Instead of implementing all of these again for bevy, I'd suggest using an already existing crate exactly made for this purpose.
I'm talking about palette. I'm not the maintainer or a contributor (so far) to this project, but I have been using palette before and enjoyed it's API. The Amethyst game engine also uses palette for handling colors.
Palette provides the following
The color types / spaces Srgb, LinSrgb, Hsv, Hsl, Lab, Lch and conversions between them and manipulation of the colors (saturate, darken, blend etc.). Palette provides a lot more but since I don't understand anything else, I don't dare to mention or describe it here.
Describe the solution would you like?
Drag in palette as a dependency of bevy_render and create some pub use re-exportes and integrate in tightly into bevy_render.  Maybe create some PRs in palette to fullfille additional needs of bevy or just write some helpers in bevy_render.
Describe the alternative(s) you've considered?
Use some other library.
Write own color handling in bevy_render.

Definitely worth discussing! Theres some relevant discussion in #585

There was some concern in the issue you mentioned about pulling in a new dependency with +10k lines.
Would it help to introduce more cargo features to palette to ensure that bevy only enables those which are really needed? I'm not quite sure what's the most concering about having anohter dependency, but I thought that having more features would at least solve the problem of compiing unnecessary code. There are other disadvantages, like having to download this crate for compiling bevy, but this might solve at least some problems.

colorgrad looks like another serious option to consider.

There has been a lot of discussion around color handling

https://github.com/bevyengine/bevy/pull/1870
https://github.com/bevyengine/bevy/discussions/1849
https://github.com/bevyengine/bevy/discussions/4648

To me, #4648 means the answer is "won't use an external crate". And in fact, since then, bevy pretty much relies on an internal color representation. Should this be closed?


i18n [nfc]: add all known languages to the translation database

There are a number of currently-unselectable languages in our
translations directory. We don't want to hook them all up
automatically, as several of them are incomplete; but we should have
the language names themselves available for translation in advance of
doing so.
This is work towards #3895.
The new list of languages was generated by the following script:
  curl https://pkgstore.datahub.io/core/language-codes/language-codes_json/data/97607046542b532c395cf83df5185246/language-codes_json.json > langcodes.json;
  (
    CODES=$(
      ls static/translations/messages_* |
      # strip sublocales
      perl -ne '/messages_(..)/ or die; print "$1\n"'
    );
    for code in $CODES; do
      jq "(.[] | select(.alpha2==\"$code\")).English | sub(\"[;,].*\"; \"\")" langcodes.json;
    done |
      # reinject sublocales (a)
      sed 's/Chinese/Chinese (Simplified)/' |
      sed 's/English/English (U.S.)/' ;

    # reinject sublocales (b)
    echo '"English (U.K.)"'
    echo '"Chinese (Traditional)"'

    # in use until en-GB is hooked up; reserved thereafter
    echo '"English"'
  ) | sort | uniq | perl -pe 'chomp; $_="  $_: $_,\n"'

Thanks @ray-kraesig ! Merged.


PDF: Approval group encoding

Follow-on from https://github.com/metanorma/metanorma-iso/issues/683
There is now a bibdata/ext/editorialgroup/approvalgroup element, which by default contains the ID of the technical committee, but can contain a user-specified value. This value must be used to populate the "Committee identification" field on the cover page for DIS and FDIS drafts of ISO, instead of the current approach.

To do: render digits from approvalgroup in bold.

This was wrong assumption. The SMART and TS also should be in bold:
ISO/SG SMART/SG TS/AG 1
Another example with two SDOs:
ISO/IEC SG SMART/SG TS/AG 1
So, the algorithm is:

split string by /.
reverse resulted array of substrings,
split each value by space and bold last value,
reverse array again.

Updated:

split string by /.
except first item, split each value by space
bold last value.

Done.


Windows: Remove erroneous comment only (no code change)

Signed-off-by: John Howard<EMAIL_ADDRESS>Removes a comment which is no longer true in the Windows execdriver. No actual code changes.

LGTM

LGTM


Filtering HasManyThrough

Hello @mohammad-fouladgar ,
Thank you for the fantastic job done so far. I ran into an issue this afternoon trying to filter a has many through relationship.
So I have a project that has applications through another table (roles) and I am trying to filter the applications based on some fields.
Originally I can just do $applications = $project->find(1)->applications()->paginate(10) to fetch the paginated result of all the applications that belongs to that project.
But I want to apply some filtering like by dates, status, etc. I thought I could do
`
$applications =  $project->applications()->with(['profile']);
$result  = EloquentBuilder::to($applications, request()->all('filters'))->paginate(10);
`
The above code produces an error. See attached screenshot. Maybe I am doing something wrong.

Hi @joefazee ,
thank you for kind words.
Try the following code:
$applications = $project->applications()->getQuery();

$result = EloquentBuilder::to(
                $applications,
                request()->all('filters')
)->paginate(10);

Can you submit a PR full tested for resolve this issue?

Thank @mohammad-fouladgar

Hello @mohammad-fouladgar, Sorry I had to reopen the issue which I think has nothing to do with this library but from your example, the ->getQuery(); nullified all the relationships.
For example, I can not do
$applications = $project->applications()->with(['media', 'user.profile'])->getQuery();
Do you have any idea why ->getQuery() does not allow fetching of relationships? I have googled already but no good response.
I will close this issue shorty.
Thank you.

Hi @joefazee ,
I'm sorry for the delay, I was very busy in this week.
Please try this way temporarily:
$res = $this->eloquentBuilder
            ->to($project->applications()->select('applications.*')->getQuery())
            ->with(['media'])
            ->get();

Feel free for submit a PR for resolve this issue.

Thank you for responding. I have to use the classic approach, for now, maybe later I can refactor.


Clear roadmap

Would like to suggest a clear roadmap of the current status of the project (what you are working) and what is intended for stitches (what you plan to work). This would avoid duplicate feature requests, allow the users to understand what is happening and what to expect from stitches.

For example, I would like to know if there is any plan to support styled component like themes, something entirely controlled by javascript. I know that you are proposing a different approach, but I would love to see this here (is the only thing that I don't like in a sea of things I love)

Sorry, we can't do that right now. Stitches as of now is the final product. New features need to be created as RFC discussions, and then they can go under consideration.
You're more than welcome to create as many discussions as you'd like, about ideas, features, and we can chat further!


trakt_list watched/shows

Plugin do not produce entries from
trakt_list:
  account: '{? trakt.account ?}'
  list: watched
  type: shows

A more detailed bug report would help a lot! Please use bug report template This plugin is working ok for me, use it a lot! Is this still a relevant issue? If not can be closed


Add missing TenantInserted metrics

@omarghader nice catch, we still need to remove the unnecessary variable on the top of each file

done


refactor: Update to the EBS CSI Driver IAM Policy for AWS 2025 changes

Description

https://github.com/kubernetes-sigs/aws-ebs-csi-driver/issues/2190

In January of 2025, AWS will change the handling of IAM polices authorizing the CreateVolume action. Previously, only the created volume was authorized when using CreateVolume to restore a snapshot. After the change, the snapshot being restored will also be authorized. Because of this change, the policy being used for the EBS CSI Driver must grant explicit access to the snapshot being restored.
If no action is taken before the change takes place, the EBS CSI Driver will be unable to restore snapshots when creating a volume.

Type of change

[ ] A bug fix (PR prefix fix)
[ ] A new feature (PR prefix feat)
[x] A code change that neither fixes a bug nor adds a feature (PR prefix refactor)
[ ] Adding missing tests or correcting existing tests (PR prefix test)
[ ] Changes that do not affect the meaning of the code like white-spaces, formatting, missing semi-colons, etc. (PR prefix style)
[ ] Changes to our CI configuration files and scripts (PR prefix ci)
[ ] Documentation only changes (PR prefix docs)

How Has This Been Tested?

@lostsnow Thank you for the contribution!


Name of repo and sockets.carp do not match

The name of the repository and the name of the library file do not match which means Carp can't import it using (load).

Ah, damn, that’s true!

I renamed the repo, because I think that the plural is more appropriate. This should be fixed now?

Nice, thanks.


Can we add a feature to be able to label these linked boxes?

Hi, can you show an example?

| LABEL |       the box     |  -> ...
|______ |____________ |
Something like this? I think it would be nice to have one label to attach to the box. This is similar to tags but different, prefer to keep the simplicity and just use one label for each box.
And perhaps I can filter the boxes by the label, select one or more labels then either show/no-show or grey out other boxes in the same canvas.  Just to think of a real-world example, the box usually has a label attached to it.
My use case is, I want to draw the main functionalities of a big and complicated API. Depending on the callers and requests, they may go through the same or different branches.

So, if I understand it correctly you want the ability to add non-visual tags to specific elements and later filter or select shapes by those tags?

Sounds good. At a high level, I just want to be able to group the boxes.


chore: remove path virtualization from FileManager

Description

Problem*

Resolves
Summary*
I'm not sure what the purpose of wrapping PathBufs in VirtualPath was but its main effect is requiring us to reattach the noir file extension in a load of locations after it's stripped off in virtualisation.
This PR removes this layer of abstraction and we now maintain the .nr extension on our paths. This should help prevent broken paths from forgetting to re-add the extension in future.
Documentation

[ ] This PR requires documentation updates when merged.

[ ] I will submit a noir-lang/docs PR.

[ ] I will request for and support Dev Rel's help in documenting this PR.

Additional Context

PR Checklist*

[x] I have tested the changes locally.
[x] I have formatted the changes with Prettier and/or cargo fmt on default settings.

I think the rationale was so that you could:

Abstract away any filepath differences with windows and linux
If you wanted to, you could support files which are not in the filesystem by using the VirtualPath as an unique opaque identifier.

This code has changed significantly since then, so perhaps its fine to just remove it. Either way, if we need the above features, it would be better to re-implement VirtualPath again in the future with more intention.

Yeah, I think that we can reintroduce it later if necessary. It's entirely internal to the fm package anyway.


Complexities created with the introduction of new mocking strategies.

During the last developments, we listened to feedback and introduced a couple of 'mocking strategies' which facilitate the mocking of tables. However, it added underlying complexities and a steeper learning curve to using the framework.
Also, we lost one of our original goals of the framework:

No dependencies on the underlying database (apart from the ability to run the SQL).

We solved adding another mocking strategy which is the 'pure'.
The added complexities also turned the macros code into a state that needs to be revisited (tech-dept, I mean).
After a few conversations with @psousa50, we've decided to stop new developments on the framework (then the PRs are stable for a while), and we are revisiting the framework's purpose.
Our agreement is:

Remove the Mocking Strategies: Bring the original idea back (No dependencies ...) as the default behaviour of the framework, so you need to mock all the required fields for every mock to run.
Add an option to the mock functions (mock_ref and mock_source) which is include_extra_columns.

{% call dbt_unit_testing.mock_ref ('model_a', {"include_extra_columns": true}) %}

which will inspect the dependency graph,  it will get the column information from dependent models, and when/if reach the sources it will inspect the database schema. There won't be any schema/source file inspection to grab the columns, it will be all based on the graph, and the DB source definition.
We think with this solution we have a simpler and more robust framework, and we are giving the option to enrich your mocks with the price depending on the underlying source tables on the database.
We, mostly Pedro, is working on it at branch remove-mocking-strategy. This will introduce breaking changes, and then we'll release it under 0.2.1
We're having holidays and busy times, although we'll try to ship this next month.
If you have any feedback we're eager to consider it.

We would like to go back to the basis, as Claudio said, while still being able to tackle these two issues:

Too complex queries
Too many database roundtrips

So, by default the framework will keep the queries complexity and the database roundtrips to a minimum as long as the tests obey these two conditions:

mock all models and sources used by the model being tested
specify all columns on the mock SQL

This is equivalent to our ‘pure’ strategy, the database will only be used to run the final test query, and this query will be as simple as your model and mocks are.
Now, if you don’t want to mock all the models or don’t want to specify all the columns when mocking, the framework can help you there if you don’t care about some extra calls to the database and a perhaps more complicated final test query.
By the way, the include_extra_columns option will be false by default, so you won’t need to specify it in all your models.
We will soon release a new version with this in mind, and it would help a lot if you could test this release in your project and provide some feedback.
Thank you!


Update 10.mdx

fix typo in question

The docs for this PR live here. All of your documentation changes will be reflected on that endpoint. The docs are available until 30 days after the last update.


fix: remove broken links, fix some links

Remove some broken links, like Pogo, and Soap2Day.
Fix some links that were half-written, like Pika Style, Code Beautify, and 100L5.
Other links are alright.

https://pogolinks.art/   - Pogolink
https://ww.soap2dayfree.net/home/  - soap today

you can add these links to pogolinks and soap2day

@suzy-g38 thank you for your contribution


Fix: Moved the Google Omniauth key id_info from root into extra

The Google Omniauth "id_info" hash should not be in the auth root, but under "extra", I moved it to where it rightfully belongs.
Here are the details from the omniauth-google-oauth2 docs about the hash structure https://github.com/zquestz/omniauth-google-oauth2#auth-hash
Tests updated to account for this change.

Awesome 💯

@vbrazo that's been rebased now, and some rubocop violations corrected. (although they pre-dated my recent commits)


[FEATURE] OpenAiStreamingChatModel ResponseFormat

Hello, is there any reason not to support the structured responseFormat in OpenAiStreamingChatModel (StreamingChatLanguageModel)? Currently, we can only provide a String and not the ResponseFormat object :/ The OpenAI API supports structured mode in Stream mode.
I noticed that in the PR https://github.com/langchain4j/langchain4j/pull/1590, a method was added to the ChatLanguageModel interface to allow providing a ResponseFormat object.
 default ChatResponse chat(ChatRequest request) {         throw new UnsupportedOperationException();     }
Thank you for your opinion

Hi @thodev1, this was not implemented yet, hopefully will be available in the next release


Fixing a few spelling errors

Correcting SharePoint and OneDrive spellings - only minor changes done

Hi @chrfox! Lots of files updated in this pull request. They might not all be yours, but at least some are. Please review, and if you're comfortable merging, please do that. Thank you!

@JohanFreelancer9 - kindly do the copy editor review for this PR. Thanks

@modery Please review the suggested changes and update the PR. Thanks.

@yogkumgit  all good, PR updated

@chrfox Please merge this PR. Thanks

@tiburd Please merge this PR. Thanks


Use WidgetSpan crash on iOS device - 1.7.8

I use the image in WidgetSpan, but it crash on iOS devices.
#environment:
Flutter doctor:
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, v1.7.8+hotfix.3, on Mac OS X 10.14.5 18F132, locale zh-Hans-CN)

[!] Android toolchain - develop for Android devices (Android SDK version 28.0.3)
    ! Some Android licenses not accepted.  To resolve this, run: flutter doctor --android-licenses
[!] Xcode - develop for iOS and macOS (Xcode 10.2.1)
    ! CocoaPods out of date (1.6.0 is recommended).
        CocoaPods is used to retrieve the iOS and macOS platform side's plugin code that responds to your
        plugin usage on the Dart side.
        Without CocoaPods, plugins will not work on iOS or macOS.
        For more info, see https://flutter.dev/platform-plugins
      To upgrade:
        brew upgrade cocoapods
        pod setup
[✓] iOS tools - develop for iOS devices
[!] Android Studio (version 3.4)
    ✗ Flutter plugin not installed; this adds Flutter specific functionality.
    ✗ Dart plugin not installed; this adds Dart specific functionality.
[✓] IntelliJ IDEA Ultimate Edition (version 2019.1.3)
[✓] VS Code (version 1.36.0)
[✓] Connected device (3 available)

! Doctor found issues in 3 categories.

iOS devices
iphone6s(9.3) simulator
crash demo
demo
crash gif

Is anyone here?

@justinmc @zoechi

I tried your demo code on the iOS simulator and didn't get a crash.  I just wrapped it directly in a MaterialApp and I could see the paperclip image and scroll around without a problem.  I also tried it on an Android device and got the same result.
Any idea what I'm doing wrong?

The paperclip icon not displayed may be the url address problem, I changed the url address, please pull origin.
Crash does not necessarily occur. If there is no crash, you can quickly scroll up and down the demo list page, or advance or rewind the page. Please make sure you have tried at least 3 minutes

I can easily reproduce this crash on my simulator(iphone 6s 9.3/ iphone XR 12.2).

Possible duplicate of https://github.com/flutter/flutter/issues/31844#issuecomment-513487403 ?

Maybe not the same, I can not product the crash on my android device. only iOS device can product the crash

i tryed the demo, click the ios_crash button, crash also
o.flutter.1.ui (8): EXC_BAD_ACCESS (code=1, address=0x4160000000000000)

I got the same problem, and in my situation , when I use WidgetSpan with TextSpan , and the content  display in textSpan contains '\r\n' will cause app crash !!
When I split the content text by \r\n, and wrap them use multi TextSpan, it looks like ok !

/cc @GaryQian

It may have to do with the \n character, I think I may have encountered this also a few days ago independently. I'll take a look at fixing it!

Interesting to note, the crash only happens on initial app startup. Subsequent hot restarts (when starting with a non-crash version, reloading to crash version) works fine without crashes.

Having same Problem on Android. Adding a Widgetspan will Crash the app.

@tb2761 Do you think you could post your Flutter doctor and a reproduction? That would be very helpful!

I have tracked the bug down to an undefined write to unallocated memory. The fix patch is here: https://github.com/flutter/engine/pull/10295


Do UCS2/UTF-8 conversion on JSON stringified objects, not just strings

Without this fix, passing objects to be signed that contain Unicode keys or values get mangled and cannot be unmarshalled properly later.

Would you like me to do an npm release with this fix?

Would you like me to do an npm release with this fix?

It would be helpful, otherwise my colleagues are going to need to hand-patch in order to build the code base. Thank you for your attention.

Published as v0.1.5.


[DRAFT] Try to bring in some subset of web assembly supportfrom snapchat-djinni

I felt quite inspired by @eakoli 's latest contribution. I'm not sure there's the appetite for this, but at least on my projects, if I'm using djinni in the future it's hard to imagine not wanting the possibility of a web assembly (and flutter?) target. This is quite a naive attempt to steal that from the snapchat djinni, and without the lib-side work (which I haven't done yet), I'm not sure it even works. Anyway, the way these things go I may have time to work on it some more and I may not, so I thought I'd make the (draft) PR now and then worry about the rest later.

Wow, that's a pretty fantastic development!
Just a question: After looking back at the Python addition, I see that it is now 80% to 90% done but then slowed down.
Is there a danger we will end up in a similar situation (which might also be OK, because better 80% than nothing)
Or can we have a sample Hello World app utilizing this WASM generator once it is no longer in draft state?

Yes, I think we need some kind of definitive sample for this to be moved out of draft status. I haven't checked what there is in the snapchat repository, yet. I understand your  concerns about abandoned platforms, but (at least for me) web assembly is pretty essential. I think that, given the state of the support on the snapchat fork, it should be possible to get the web assembly support here quite usable without too much pain. Fingers crossed. Next up the support lib, I guess.

One of my general concerns with this PR is how many changes seem be outside of the new generator code, as in theory, adding a new generator should change little of the existing code other than extending the places to enable the new output.
E.g. Ive started working on a swift and kotlin generator and so far haven't had to make any changes to existing code other than adding the options and extra bools to enable them during testing

I agree, we need to check that all changes are related to the WASM part and not sneak in via any other Snapchat additions that might change behavior.
On the other hand, if the expected files from the tests are unchanged, nothing should have changed (or our tests are incomplete). So we should have some safety net in place,

One of my general concerns with this PR is how many changes seem be outside of the new generator code, as in theory, adding a new generator should change little of the existing code other than extending the places to enable the new output.
E.g. Ive started working on a swift and kotlin generator and so far haven't had to make any changes to existing code other than adding the options and extra bools to enable them during testing

I've been trying to reduce these changes. I think all that remains is the isOptional change/fix, which I think/hope is tolerable given that it has not forced any changes in existing expected generated c++ code.

I am sorry, but looking at my calendar, it is very likely my review must wait until the Christmas holidays.
I want to prioritize these tasks, and I will try to do it, but it is difficult.
Thank you for your understanding and patience.

After thinking about this PR for one year, I tend to not use it.
We had multiple language extensions dropped into djinni, C, C#, and Python, which are no longer supported by the original authors but are creating a huge maintenance burden.
This is why I am hesitant about new language extensions,
In hindsight, it would have been beneficial to keep the original two language bindings, Objective-C and Java/JNI, and focus only on those. And add anything else in a djinni2, based on different ideas and technologies.
That is probably what should happen for this project.


Restructure OpHasImplicitCall/OpCallsValueOf

Replace the distinction between OpHasImplicitCall and OpCallsValueOf with a distinction between OpHasImplicitCall (for opcodes that may trigger implicit calls regardless of operand attributes) and OpOpndHasImplicitCall (for opcodes that trigger implicit calls only as part of evaluating/reading/writing their operands). This allows us to fix some cases of missing implicit call bailout points without further complicating the logic and to be less conservative in our placement of bailout points in other cases.

@LouisLaf @curtisman @rajatd

I didn't dive deep into the attributes in the opcodes.h.
Otherwise, LGTM


Allow manual creation of not-null associations when creating

This fixes #2.

[ ] Add minimum definition for Sequelize associations.
[ ] Merge prepareRequiredAssociations into prepareAssociations.
[ ] Fix bug when saving HasMany associations introduced with prior commit.

Bleh, sorry, I shouldn't have squashed until we were ready to commit. Anyways, I made the requested changes.

Merging this but FYI I'm going to make a few changes to master (just adjusting other places that weren't updated). In particular, the code needs to figure out whether a early association's identifier wasn't set and fallback to the old behavior (of using the early association's target) as we use that functionality at our company. Thanks for the fix!


Using CSS files for component styles

Currently -and commonly- Lit component styles are defined in TS code with css literal function. We consider to use regular CSS files instead. Using CSS files will be more familiar for developers and easier to lint/check. For achieving this there seems 2 options:
lit-css
lit-css is a package to convert CSS files to TS codes in bundling time. This looks like a simple solution but needs to be checked together with Storybook.
es-module-shims
There is an API proposal (and chrome already supports it) for importing CSS files dynamically for web component in runtime like:
import sheet from 'https://site.com/sheet.css' assert { type: 'css' };

es-module-shims is a pollyfill that makes this possible in every browser. This can be a more future-proof solution.
In this issue, we'll try to implement best solution for us.

This issue solved with lit-css approach in #109


Support: add admincraft

regardless of whether admincraft should be added to awesome-minecraft, this pr lacks in a proper description of what admincraft is

Admincraft is a minecraft help community, like syscraft i believe
Message ID: @.***>


Support / as an entry key delimiter

A BibLaTeX entry key, of the form name1/name2 currently fails:
@online{baez/online,
  author       = {Baez, John C. and Lauda, Aaron D.},
  title        = {Higher-Dimensional Algebra {V}: 2-Groups},
  date         = {2004-10-27},
  version      = 3,
  langid       = {english},
  langidopts   = {variant=american},
  eprinttype   = {arxiv},
  eprint       = {math/0307200v3},
}

Reference: biblatex-examples.bib

The / character here is not a delimiter. Actually it has no special meaning.
The entry key in the original BibTeX only forbids ,, }, and whitespaces in a brace-style entry, or , plus whitespaces in a parenthesis style entry (see aclements/biblib). The following are valid entry keys for BibTeX. Although some characters (e.g., # and \) are not allowed in a LaTeX \cite command, the entries can still be crossrefed or listed out with \nocite{*}.
@misc{!"#$%&'()*+-./123:;<=>?@ABC[\]^_`abc{|~,
  author = {John Doe},
}

@misc(!"#$%&')(*+-./123:;<=>?@ABC[\]^_`abc{|}~,
  author = {John Doe},
)

Biber, which uses btparse as the underlying parser, only allows letters, digits, and the following characters in entry key: ! $ & * + - . / : ; < > ? [ ] ^ _ ` | (see Text-BibTeX/btparse).

Thank you!


Change behavior of merging arrays inside objects

Please advise on what's the best way to test this in the app... I assume just playing around with it and making sure things work properly?
Also, there's 2 other lodashMerge calls in the Onyx file, but I am not sure if those need to change or not.
Details
Context https://expensify.slack.com/archives/C03TQ48KC/p1662572468181579
Related Issues

https://github.com/Expensify/Expensify/issues/211560
Automated Tests
I've added 2 new tests for this behavior
Linked PRs

I have read the CLA Document and I hereby sign the CLA

Default keys:

Yep, this is one of the ones I mentioned in the description.

Unsure about what the behavior is in mergeCollection():

It works as expected, I added a test for it.

Storage.multiMerge() - does it overwrite array values or not? And is it the same on all platforms? 🤔

hmmmm, not sure, but if I am re-reading the values and they are correct, I think the answer is yes? Or it could be different since the data might be coming from the cache?

And then the cache is updated with the entire collection:
But will cache.merge() have the previous behavior...?

hmmmm good question, but same as above, the test should be covering this? Or do the tests I modified don't use the cache?

Merging the withOnyx state here seems like it would have the previous behavior when applying a new collection to one that is already in state:

hmmm I think you are right, will add a test for withOnyx

I am not sure how deeply we want to look into these so if the current changes solve the issues then I am 👍 (but wanted to note the possibility that the weird array merging behavior could still happen in other places - but might not apply).

These are good comments and exactly what I wanted from the review, so will take a look at them, since we don't want weird behavior in this low level, as it can be hard to track the bug (if there is one).

hmmmm, not sure, but if I am re-reading the values and they are correct, I think the answer is yes? Or it could be different since the data might be coming from the cache?

Not sure what's going on in the other tests, but added a test for storage and it is failing and I don't see an easy way to update its behavior 😢

Default keys:

This one I don't know if we need to update or not.

Merging the withOnyx state here seems like it would have the previous behavior when applying a new collection to one that is already in state:

I added tests and they are passing, not sure how/why that is not needed there.. maybe my tests are no good?
Additionally, I am struggling to make the cache work in the same way for top level arrays and I am thinking of just removing that feature from Onyx altogether.
I would have to refactor places we rely on that like ACTIVE_CLIENTS and not sure if some other place (I looked at betas and I think that's fine as it is, since we always send all betas).

ok, changed the behavior for merging arrays. Still missing these 2 doubts:

Do I need to update the merge in Default keys?
I am not sure if this needs to be changed, all seems to work without changing it and I can't seem to write a test that does not work as expected

Do I need to update the merge in Default keys?

I think in theory it would be nice if it worked this way. But in practice it doesn't make any difference for us as we have no array values anywhere in any of this data...
https://github.com/Expensify/App/blob/68c50096675e02882e639107215e0920cdcbb77e/src/setup/index.js#L27-L37

I am not sure if this needs to be changed, all seems to work without changing it and I can't seem to write a test that does not work as expected

Try this:
    it('mergeCollection() will replace array values on objects', () => {
        const mockCallback = jest.fn();
        const originalCollection = {
            test_policy_1: {arrayValues: [{test_a: 'a'}, {test_b: 'b'}]},
        };
        const modifiedCollection = {
            test_policy_1: {arrayValues: [{test_c: 'c'}, {test_d: 'd'}]},
        };

        connectionID = Onyx.connect({
            key: ONYX_KEYS.COLLECTION.TEST_POLICY,
            waitForCollectionCallback: true,
            callback: mockCallback,
        });

        return waitForPromisesToResolve()
            .then(() => {
                // WHEN mergeCollection is called with an updated collection
                Onyx.mergeCollection(ONYX_KEYS.COLLECTION.TEST_POLICY, originalCollection);
                return waitForPromisesToResolve();
            })
            .then(() => {
                Onyx.mergeCollection(ONYX_KEYS.COLLECTION.TEST_POLICY, modifiedCollection);
                return waitForPromisesToResolve();
            })
            .then(() => {
                // THEN we expect the callback to have called three times, once for the initial connect call + once for the collection update
                expect(mockCallback.mock.calls.length).toBe(3);

                // AND the value for the first call should not match anything since the collection was not initialized at that point
                expect(mockCallback.mock.calls[0][0]).not.toBe(originalCollection);

                // AND the value for the second call should be originalCollection since the collection was updated
                expect(mockCallback.mock.calls[1][0]).toEqual(originalCollection);

                // AND the value for the third call should be modifiedCollection since the collection was updated and it should not be
                // some weird frankenstein merge that nobody wants
                expect(mockCallback.mock.calls[2][0]).toEqual(modifiedCollection);
            });
    });

I think in theory it would be nice if it worked this way. But in practice it doesn't make any difference for us as we have no array values anywhere in any of this data...

Changed this, because I agree it's nice it works in the same way.

Try this:

I've added the test you suggest here (not committed) and it is passing, though for some reason I still don't understand it is making another test fail:
 FAIL  tests/unit/onyxTest.js (7.414 s)
  ● Onyx › should return all collection keys as a single object when updating a collection key with waitForCollectionCallback = true

    expect(received).toBe(expected) // Object.is equality

    Expected: null
    Received: {"test_policy_1": null}

      610 |
      611 |                 // AND the value for the first call should be null since the collection was not initialized at that point
    > 612 |                 expect(mockCallback.mock.calls[0][0]).toBe(null);
          |                                                       ^
      613 |
      614 |                 // AND the value for the second call should be collectionUpdate since the collection was updated
      615 |                 expect(mockCallback.mock.calls[1][0]).toEqual(collectionUpdate);

      at fn (tests/unit/onyxTest.js:612:55)
      at tryCallOne (node_modules/promise/lib/core.js:37:12)
      at call (node_modules/promise/lib/core.js:123:15)
      at flush (node_modules/asap/raw.js:50:29)
      at node_modules/@jest/fake-timers/build/legacyFakeTimers.js:505:18

If this test works (looks like it) then I am 👍 on not updating the setState call in keysChanged()

Ah, missed this. So this should be ready to merge? Do I need to publish a version or increment a number?

Do I need to publish a version or increment a number?

Nope. We have magic for that now.

That debate is settled afaict. So I think you shouldn't add comments with words in all caps, and since you're editing this file, you should update all comments with words in all caps to use normal capitalization


FIDC initialiser: Update IDM intent definitions

Description
Update the current IDM managed objects data structure from Here following the below structure:
IDM object JSON-based data structure example
{
  "_id": "uuid",
  "apiClient": "_link relationship",
  "user": "_link relationship",
  "accounts": ["account1", "account2"]
  "OBVersion": "v3.1.8",
  "OBIntentObjectType": "OBReadConsentResponse1",
  "OBIntentObject": {
    "Data": {
      "ConsentId": "uuid"
    },
    "Risk": {},
    "Links": {},
    "Meta": {}
  }
}

For Payments, there is a custom AccountId field within the DebtorAccount OB object. This field has been moved to the top level intent definition, as it is not part of the OB spec.
See https://github.com/SecureBankingAccessToolkit/SecureBankingAccessToolkit/issues/541 for full analysis


Small improvements to make setup process easier for OS contributors

For reasoning on each change please see the commit messages.

Should I remove or update scripts/uninstall.sh? Right now it only works for installation from package managers and the most common way to install is Docker, so maybe we don't want to have scripts nobody is using to not make people confused (like I was).

Does anyone have a hint where this is coming from on each test?
$ mix phx.server
usage: route [-dnqtv] command [[modifiers] args] # <-------
[debug] .....

Wow — thanks for the contribution! Traveling today but should have some time to review later. I know we are using a few files from the .devcontainer

Should I remove or update scripts/uninstall.sh? Right now it only works for installation from package managers and the most common way to install is Docker, so maybe we don't want to have scripts nobody is using to not make people confused (like I was).

It may be better to rename the script scripts/omnibus_uninstall.sh (and update docs at https://docs.firezone.dev/administer/uninstall/ ) as we still have a large number of Omnibus instances in the wild.

Pull Request Test Coverage Report for Build 0fd006a66b7a6e8ef586e4117436893a5a480bec-PR-1171

0 of 0   changed or added relevant lines in 0 files are covered.
2 unchanged lines in 1 file lost coverage.
Overall coverage decreased (-0.1%) to 66.391%

Files with Coverage Reduction
New Missed Lines
%

apps/fz_common/lib/fz_kernel_version.ex
2
0%

Totals

Change from base Build f4cc03454eff68aa000f44b2101d779ed06c37dd:
-0.1%

Covered Lines:
1203

Relevant Lines:
1812

💛  - Coveralls

❤


feat(auth): "authenticating" state flag added

@michalvlcek @jvaclavik @danielrys final

is this PR still atual?


[Release] sdk/resourcemanager/sql/armsql/2.0.0-beta.4

https://github.com/Azure/sdk-release-request/issues/4778

Wait until this spec PR is merged.
https://github.com/Azure/azure-rest-api-specs/pull/27080

Wait until this spec PR is merged. Azure/azure-rest-api-specs#27080

@Alancere the above PR has been merged, please regenerate the code.

Wait until this spec PR is merged. Azure/azure-rest-api-specs#27080

@Alancere the above PR has been merged, please regenerate the code.

regenerated

The breaking change is introduced by this PR


Table name is rewrite by lowercase when Create Table

For English only, other languages we will close it directly.
Please answer these questions before submitting your issue. Thanks!
Which version of Sharding-Sphere do you using?
3.0.0.M1
Expected behavior
Do not rewrite table name
Actual behavior
rewrite table name by lowercase
Reason analyze
table token may be store by lowercase
Steps to reproduce the behavior
2018-08-01 16:22:04.632  INFO 9902 --- [           main] Sharding-Sphere-SQL                      : Logic SQL: CREATE TABLE IF NOT EXISTS REPLYNOTICE_INFO (id varchar(32) COMMENT '' , PRIMARY KEY (id))  COMMENT=''
2018-08-01 16:22:04.632  INFO 9902 --- [           main] Sharding-Sphere-SQL                      : SQLStatement: DDLStatement(super=AbstractSQLStatement(type=DDL, tables=Tables(tables=[Table(name=REPLYNOTICE_INFO, alias=Optional.absent())]), conditions=Conditions(orCondition=OrCondition(andConditions=[])), sqlTokens=[TableToken(beginPosition=27, skippedSchemaNameLength=0, originalLiterals=REPLYNOTICE_INFO)], parametersIndex=0))
2018-08-01 16:22:04.632  INFO 9902 --- [           main] Sharding-Sphere-SQL                      : Actual SQL: default ::: CREATE TABLE IF NOT EXISTS replynotice_info (id varchar(32) COMMENT '' , PRIMARY KEY (id))  COMMENT=''
For bug report, please MUST provide the reproduce example codes (such as a github link).
https://github.com/jingshouyan/shardingtest
io.jing.sharding.test.Test::createTable

sorry,I forget to set TableRuleConfiguration


Use new properties in augur-node getUserTradingPositions

new shape for positions that include percentage, current value, total value.
These new properties will replace calculations done in positions container and positions-summary selector and market selector.
see property details https://github.com/AugurProject/augur/issues/1187

values are wired up. closing this specific issues will be created.


Maintenance

Hey @josa42 I don't want to maintain an Atom version of this package, but I am interested in porting it to Visual Studio Code, as there is nothing similar there and I found this plugin very useful when I did use Atom.
Is that OK with you?

@ChrisChinchilla Of cause I m OK with that. (I don't know why you would need my permission for that, anyway)

@josa42 Just to be friendly and communicative :)


LVMCluster CRD changes

The LVMCluster.Spec has been updated to add a "storage" field which will contain storage related configuration.

/cherry-pick release-4.10


Add follow_batch argument to nn.DataParallel

🚀 Feature
In torch_geometric.nn.data_parallel there is no way to pass follow batch to the Batch.from_data_list method.
Add an argument to data_parallel such that the follow_batch keyword can be used.
Motivation
For certain architectures, this could be very helpful (i.e. pre-computing multiple scales).
As now, in parallel operation, there is no way to access the batch mapping for tensors that have a different num_nodes to the main (x/pos) tensors.

That's correct! It's indeed a missing feature :) I will try to add it in.

Implemented in master via DataParallel(model, follow_batch=[...]).

Thanks very much!


Increase authnstatement validity

This issue is imported from pivotal - Originaly created at Nov 30, 2020 by Okke Harsta
Ensure the authnstatement is valid for +30 days.

It appears that this validation is no longer performed with the default configuration. See https://github.com/spring-projects/spring-security/blob/master/saml2/saml2-service-provider/src/main/java/org/springframework/security/saml2/provider/service/authentication/OpenSamlAuthenticationProvider.java#L866 (Okke Harsta - Dec 1, 2020)

Nice!  (Bart Geesink - Dec 3, 2020)


Remove union membership proofs

With the merging of #130, It is possible to prove 25 key-value pairs for 430-530k gas. This is much more efficient than using union membership proofs, to the point that we can consider removing union ics23.

In order to add more data to this discussion I ran some simulations in solidity-ibc-eureka for recv packet, since this is where it would be used. This should make product decisions easier to make

It seems that the only use case for the union-ics23 would be when there are 3 packets or less?

Yes, with some caveats. The union-ics23 membership proofs can sometimes be 20k - 30k cheaper than on this graph (not sure why, but there should be some error bars). More importantly, union-ics23 doesn't include update client costs since union-ics23 assumes that someone else has already updated the client.
If no-one else has updated the client, it is not even useful when less than 3 packets. (Whereas groth16 and plonk include update costs as well). If we assume the user has to update the light client (with groth16) and union-ics23 happens to be 25k cheaper, then we can also have a reasonable graph that looks like this instead:

Under these assumptions, it is only useful when there is exactly 1 packet (and not by much)

Ok got it, would be nice to have a direct like for like comparison, but your point still makes sense, and in that case I would be in favour of removing because batching seems essential for a cost competitive price


5.3.1 has breaking change

index.min.js:1 Uncaught ReferenceError: process is not defined
    at index.min.js:1
    at i (index.min.js:1)
    at index.min.js:1
    at index.min.js:1
    at index.min.js:1

I am using CDN version<EMAIL_ADDRESS>5.2.8 version is fine.

that's weird, the actual piece of code that fails comes from react itself... it seems like react is not being applied properly as an external by rollup

ok, false alarm (kind of), it comes from react-is, which is a dependency of hoist-non-react-statics
@mweststrate should mobx react do something like
if (typeof "process" === "undefined") {   process = { env: {} } }
on index.js before all imports?

Released as 5.3.2


FreePromptEditing project and code is missing

sorry for your waiting. the codes will be released in a few days, very soon.
hangzeli @.***> 于2024年3月8日周五 15:41写道：

—
Reply to this email directly, view it on GitHub
https://github.com/alibaba/EasyNLP/issues/351, or unsubscribe
https://github.com/notifications/unsubscribe-auth/ACD34JYC2D4EHC3FGTSGOLDYXFTTFAVCNFSM6AAAAABEMLQULGVHI2DSMVQWIX3LMV43ASLTON2WKOZSGE3TKNBWHA2TIMI
.
You are receiving this because you are subscribed to this thread.Message
ID: @.***>


Updating the similarity module functions in the Apps layer

Description of the Change:
This PR redesigns the similarity module such that :

feature vector functions based on direct sampling are now provided for both orbits and events

one function is used for all other methods of obtaining feature vectors; Monte Carlo and exact calculation. The number of MC samples is used as the keyword argument for this purpose. This function also comes in both orbits and events "flavor".

smaller functions used in the functions mentioned above are turned into internal functions.

All functions have unit tests

corresponding landing page for the module is updated

corresponding tutorial on graph similarity is updated

Benefits:

flexibility of using a wider range of methods when making feature vectors

flexibility of using different constituent units (events or orbits) when making feature vectors

compact functions instead of many different smaller functions

Possible Drawbacks:
NA
Related GitHub Issues:
NA

I have added some non-trivial tests to all classes. Thanks Juan Miguel for the suggestion.

Thank you @trbromley for the in-depth review. I incorporated the changes :)

@ixfoduap I added some more tests as you suggested :)

:fireworks:


support string compare operator like > >= < <=

we hope siddhi can supported string compare for > >= < <= operator, because in java, string implement the comparable interface.
i have add some source code, and i hope you can merge it into siddhi source code.
GreaterThanCompareConditionExpressionExecutorStringString.java
`package org.wso2.siddhi.core.executor.condition.compare.greater_than;
import org.wso2.siddhi.core.executor.ExpressionExecutor;
public class GreaterThanCompareConditionExpressionExecutorStringString
extends GreaterThanCompareConditionExpressionExecutor {
public GreaterThanCompareConditionExpressionExecutorStringString(ExpressionExecutor leftExpressionExecutor,
ExpressionExecutor rightExpressionExecutor) {
super(leftExpressionExecutor, rightExpressionExecutor);
}
@Override
protected Boolean execute(Object left, Object right) {
return ((String) left).compareTo((String) right) >= 0;

}

@Override
public ExpressionExecutor cloneExecutor(String key) {
return new GreaterThanCompareConditionExpressionExecutorStringString(leftExpressionExecutor.cloneExecutor(key),
	rightExpressionExecutor.cloneExecutor(key));
}

}
`
GreaterThanEqualCompareConditionExpressionExecutorStringString.java:
`package org.wso2.siddhi.core.executor.condition.compare.greater_than_equal;
import org.wso2.siddhi.core.executor.ExpressionExecutor;
import org.wso2.siddhi.core.executor.condition.compare.greater_than.GreaterThanCompareConditionExpressionExecutor;
public class GreaterThanEqualCompareConditionExpressionExecutorStringString
extends GreaterThanCompareConditionExpressionExecutor {
public GreaterThanEqualCompareConditionExpressionExecutorStringString(ExpressionExecutor leftExpressionExecutor,
    ExpressionExecutor rightExpressionExecutor) {
super(leftExpressionExecutor, rightExpressionExecutor);
}

@Override
protected Boolean execute(Object left, Object right) {
return ((String) left).compareTo((String) right) > 0;

}

@Override
public ExpressionExecutor cloneExecutor(String key) {
return new GreaterThanEqualCompareConditionExpressionExecutorStringString(
	leftExpressionExecutor.cloneExecutor(key), rightExpressionExecutor.cloneExecutor(key));
}

}
`
LessThanCompareConditionExpressionExecutorStringString.java:
`package org.wso2.siddhi.core.executor.condition.compare.less_than;
import org.wso2.siddhi.core.executor.ExpressionExecutor;
import org.wso2.siddhi.core.executor.condition.compare.greater_than.GreaterThanCompareConditionExpressionExecutor;
public class LessThanCompareConditionExpressionExecutorStringString
extends GreaterThanCompareConditionExpressionExecutor {
public LessThanCompareConditionExpressionExecutorStringString(ExpressionExecutor leftExpressionExecutor,
    ExpressionExecutor rightExpressionExecutor) {
super(leftExpressionExecutor, rightExpressionExecutor);
}

@Override
protected Boolean execute(Object left, Object right) {
return ((String) left).compareTo((String) right) < 0;

}

@Override
public ExpressionExecutor cloneExecutor(String key) {
return new LessThanCompareConditionExpressionExecutorStringString(leftExpressionExecutor.cloneExecutor(key),
	rightExpressionExecutor.cloneExecutor(key));
}

}
LessThanEqualCompareConditionExpressionExecutorStringString.java:package org.wso2.siddhi.core.executor.condition.compare.less_than_equal;
import org.wso2.siddhi.core.executor.ExpressionExecutor;
import org.wso2.siddhi.core.executor.condition.compare.greater_than.GreaterThanCompareConditionExpressionExecutor;
public class LessThanEqualCompareConditionExpressionExecutorStringString
extends GreaterThanCompareConditionExpressionExecutor {
public LessThanEqualCompareConditionExpressionExecutorStringString(ExpressionExecutor leftExpressionExecutor,
    ExpressionExecutor rightExpressionExecutor) {
super(leftExpressionExecutor, rightExpressionExecutor);
}

@Override
protected Boolean execute(Object left, Object right) {
return ((String) left).compareTo((String) right) <= 0;

}

@Override
public ExpressionExecutor cloneExecutor(String key) {
return new LessThanEqualCompareConditionExpressionExecutorStringString(
	leftExpressionExecutor.cloneExecutor(key), rightExpressionExecutor.cloneExecutor(key));
}

}
`

@lalicw what is the advantage using this over using provided siddhi string functions ? i see 1 which is cleanliness, any other ? can u please share any use-case?
ps; btw, i am not committer

yes, in our project, we need use this to compare two datetime string like this:
2017-09-07 10:00:00 2017-09-07 09:00:00

i guess i will try to generate pull request to add this feature recently. It's not a easy way to cross the GFW.

@lalicw
What you are going to develop is a String comparator for Siddhi which can compare string based on a custom criteria(date-time) which is not generic enough to directly add into Siddhi core as this will affect the default string comparison in Siddhi core.
However Siddhi offers a time extension. This is the perfect  place for you to add the contribution if you are willing to and this is a feature We would love to have. You can create a new Function Extension there (Ex: CompareDateFunctionExtension). Just refer existing date substract extension.. using java you can compare the dates in most performance optimal way and return boolean response. However there is no comprehensive documentation available at the moment for creating extension for the latest Siddhi version(4.0.0 milestone releases) as we are still in the Milestone stages. Sorry about that.
If you are already using a used Siddhi version presumably 3.x.x, Then you can follow this documentation. And also you will have to use relevant Siddhi tag for that particular release to do the changes under siddhi-extensions module. Ex: https://github.com/wso2/siddhi/releases/tag/v3.0.5 . You will of course have to do the changes locally and patch your existing Siddhi. If you like to contribute that back you are more than welcome to port the changes to current time extension too which I pointed out earlier.
Please get back if you need any clarification


publish envbuilder binary

It could be helpful on VMs without Docker installed.

cc: @bpmct

Related #25

We won't be able to safely do this without migrating away from kaniko as a container building backend. I don't believe this is planned in the short to medium term.


node selector is missing  while installing by helm

I am using 6 Nodes RKE2 and installing Rancher UI by the helm and need to install it on just 3 nodes. But I could not find nodeSelector variable. How can I do it?
Thanks

This is a general question for installing Rancher Manager, transferring over to rancher/rancher.


[build] Configure Google Error Prone static code analysis tool for Pulsar maven build

Motivation
Google's Error Prone static code analysis tool can detect typical programming mistakes (for more info see https://errorprone.info/). This PR adds configuration to Pulsar maven build so that Error Prone static code analysis
can be run for the Pulsar code base. This additional configuration is not active by default and requires activating errorprone and errorprone-jdk8 or errorprone-jdk11 maven profiles in addition to main or core-modules profile for running the analysis.
Modifications

add a separate maven profile for running errorprone analysis
it is not active by default

Add top-level lombok.config file for configuring Lombok.
This file doesn't contain any other settings that
marks it as the top most config file with config.stopBubbling = true
(see https://projectlombok.org/features/configuration for reference)

Before running the Error Prone analysis, it's necessary to
manually configure Lombok to add @javax.annotation.Generated("lombok")
annotation on all fields, methods, and types that are generated.
This makes Error Prone skip the analysis for Lombok generated code.

this setting cannot be enabled by default since JDK9+ doesn't include
the javax.annotation.Generated annotation by default and adding the
required dependency will change the classpath dependency resolution results.
There is an open issue to support lombok.Generated annotion in
ErrorProne, https://github.com/google/error-prone/issues/1863

example usage:
Configure Lombok to add Generated annotations
echo "lombok.addJavaxGeneratedAnnotation = true" >> lombok.config
then,
on JDK8
mvn -Perrorprone,errorprone-jdk8,core-modules compile
on JDK11+
mvn -Perrorprone,errorprone-jdk11,core-modules compile

usability is better when used together with IntelliJ
since one can click on the error message to navigate
to the code location

also add configuration for Error Prone SLF4J plugin
https://github.com/KengoTODA/errorprone-slf4j
which helps detect misusage of SLF4J API

/pulsarbot run-failure-checks

I'll revisit the changes since adding the annotations jar to provided scope will change the dependency resolution. I'll try to find another solution for JDK9+.

/pulsarbot run-failure-checks

Interesting. I gave it a go after updating to the latest version as the above-mentioned annotation bug was fixed, and it failed compilation without any statement as to why. Weird.


Cargo new allows to create crate with invalid name for example "web-server"

Problem
Right now cargo allows to create crate with "-" in the name
$ cargo new web-server
Created binary (application) web-server package
$ cat Cargo.toml
[package]
name = "web-server"
version = "0.1.0"
This seems wrong because crate name cannot contain "-". You cannot bring crate with malformed name into scope.
Possible Solution(s)
Expected behaviour would be a warning regarding naming convention instead of crate creation.
Notes
Output of cargo version:
$ cargo version
cargo 1.32.0 (8610973aa 2019-01-02)

seems like this is expected behaviour and validated in https://github.com/rust-lang/cargo/blob/dc83ead224d8622f748f507574e1448a28d8dcc7/src/cargo/util/mod.rs#L77


Issue with pip install apscale-blast

Issue with pip install apscale-blast
Hey Till,
When I attempted to run the installation commands for apscale-blast 1.0.1, I encountered an issue with the pip install apscale-blast command.

After checking the installation directory, I noticed that the package was installed under the name apscale_blast (with an underscore, not a hyphen).
The correct installation command for me was:
pip install apscale_blast

or
pip3 install apscale_blast

and also starting command for was:
apscale_blast blastn

Can you try the latest version? I updated to 1.0.2 this morning. For me I can install apscale blast both with an underscore and a hyphen. I don't know why PyPi keeps showing the "old" install command with a hyphen though.

Hi again,
When I attempt to upgrade apscale-blast using possible methods, I encounter following errors that prevent the update from completing (e.g., pip, pip3, etc.), but nothing seems to work.
Btw, the current version works fine, but when I try to build a custom database from a reference .fasta file, the resulting database file is created as 0 KB. However, when I use the files that you’ve shared in server, it works perfectly.
After creating the subsets, I encountered the openpyxl error once again and had to manually merge the subsets. Following this, I removed any OTU duplicates and manually verified the final .xlsx file, ensuring that the number of OTUs matched the OTU count in the read table, to successfully create taXon table for TTT.
To be honest, I'm having difficulty understanding the difference between the apscale_gui > local BLAST module and the apscale-blast  program you developed. From what I can tell, they seem to serve the same purpose. Could you clarify the distinction between the two and provide guidance on how to set up a database from a reference FASTA file?
onurdogan@Onurs-iMac ~ % pip install --upgrade apscale-blast
zsh: /usr/local/bin/pip: bad interpreter: /System/Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python: no such file or directory
ERROR: Ignored the following versions that require a different python version: 0.1 Requires-Python >=3.10; 0.1.1 Requires-Python >=3.10; 0.1.2 Requires-Python >=3.10; 0.1.3 Requires-Python >=3.10; 0.1.4 Requires-Python >=3.10; 0.1.5 Requires-Python >=3.10; 1.0.0 Requires-Python >=3.10; 1.0.1 Requires-Python >=3.10; 1.0.2 Requires-Python >=3.10
ERROR: Could not find a version that satisfies the requirement apscale-blast (from versions: none)
ERROR: No matching distribution found for apscale-blast

onurdogan@Onurs-iMac ~ % pip install --upgrade apscale_blast
zsh: /usr/local/bin/pip: bad interpreter: /System/Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python: no such file or directory
ERROR: Ignored the following versions that require a different python version: 0.1 Requires-Python >=3.10; 0.1.1 Requires-Python >=3.10; 0.1.2 Requires-Python >=3.10; 0.1.3 Requires-Python >=3.10; 0.1.4 Requires-Python >=3.10; 0.1.5 Requires-Python >=3.10; 1.0.0 Requires-Python >=3.10; 1.0.1 Requires-Python >=3.10; 1.0.2 Requires-Python >=3.10
ERROR: Could not find a version that satisfies the requirement apscale_blast (from versions: none)
ERROR: No matching distribution found for apscale_blast

onurdogan@Onurs-iMac ~ % pip3 install --upgrade apscale_blast
ERROR: Ignored the following versions that require a different python version: 0.1 Requires-Python >=3.10; 0.1.1 Requires-Python >=3.10; 0.1.2 Requires-Python >=3.10; 0.1.3 Requires-Python >=3.10; 0.1.4 Requires-Python >=3.10; 0.1.5 Requires-Python >=3.10; 1.0.0 Requires-Python >=3.10; 1.0.1 Requires-Python >=3.10; 1.0.2 Requires-Python >=3.10
ERROR: Could not find a version that satisfies the requirement apscale_blast (from versions: none)
ERROR: No matching distribution found for apscale_blast

onurdogan@Onurs-iMac ~ % pip install openpyxl --upgrade
zsh: /usr/local/bin/pip: bad interpreter: /System/Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python: no such file or directory
Requirement already satisfied: openpyxl in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (3.0.10)
Collecting openpyxl
  Downloading openpyxl-3.1.5-py2.py3-none-any.whl.metadata (2.5 kB)
Requirement already satisfied: et-xmlfile in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from openpyxl) (1.1.0)
Downloading openpyxl-3.1.5-py2.py3-none-any.whl (250 kB)
Installing collected packages: openpyxl
  Attempting uninstall: openpyxl
    Found existing installation: openpyxl 3.0.10
    Uninstalling openpyxl-3.0.10:
      Successfully uninstalled openpyxl-3.0.10
Successfully installed openpyxl-3.1.5
onurdogan@Onurs-iMac ~ % apscale_blast filter

    APSCALE blast command line tool - v1.0.1 - 06/09/2024
    Usage examples:
    $ apscale_blast blastn -h
    $ apscale_blast blastn -database ./MIDORI2_UNIQ_NUC_GB259_srRNA_BLAST -query_fasta ./12S_apscale_ESVs.fasta
    $ apscale_blast filter -h
    $ apscale_blast filter -database ./MIDORI2_UNIQ_NUC_GB259_srRNA_BLAST -blastn_folder ./12S_apscale_ESVs_blastn

Please enter PATH to database: /Users/onurdogan/0_APSCALE_projects/APSCALE_databases/pr2
Please enter PATH to blastn folder: /Users/onurdogan/0_APSCALE_projects/Plankton_18S_time_series_apscale/9_lulu_filtering/otu_clustering/Plankton_18S_time_series_apscale_OTUs_filtered
20:56:11: Starting to filter blast results for '/Users/onurdogan/0_APSCALE_projects/Plankton_18S_time_series_apscale/9_lulu_filtering/otu_clustering/Plankton_18S_time_series_apscale_OTUs_filtered'
20:56:11: Your database: pr2
20:56:16: Finished filtering for subset 4/18.
20:56:16: Finished filtering for subset 11/18.
20:56:16: Finished filtering for subset 7/18.
20:56:16: Finished filtering for subset 10/18.
20:56:16: Finished filtering for subset 1/18.
20:56:16: Finished filtering for subset 9/18.
20:56:16: Finished filtering for subset 5/18.
20:56:16: Finished filtering for subset 6/18.
20:56:16: Finished filtering for subset 3/18.
20:56:16: Finished filtering for subset 8/18.
20:56:16: Finished filtering for subset 2/18.
20:56:19: Finished filtering for subset 13/18.
20:56:19: Finished filtering for subset 12/18.
20:56:19: Finished filtering for subset 16/18.
20:56:19: Finished filtering for subset 18/18.
20:56:19: Finished filtering for subset 14/18.
20:56:19: Finished filtering for subset 15/18.
20:56:19: Finished filtering for subset 17/18.
Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/pandas/compat/_optional.py", line 135, in import_optional_dependency
    module = importlib.import_module(name)
  File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1050, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1027, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1004, in _find_and_load_unlocked
ModuleNotFoundError: No module named 'openpyxl'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/bin/apscale_blast", line 8, in <module>
    sys.exit(main())
  File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/apscale_blast/__main__.py", line 641, in main
    blastn_filter(args.blastn_folder, args.database, thresholds, args.n_cores)
  File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/apscale_blast/__main__.py", line 518, in blastn_filter
    df = pd.read_excel(file).fillna('')
  File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/pandas/io/excel/_base.py", line 495, in read_excel
    io = ExcelFile(
  File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/pandas/io/excel/_base.py", line 1567, in __init__
    self._reader = self._engines[engine](
  File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/pandas/io/excel/_openpyxl.py", line 552, in __init__
    import_optional_dependency("openpyxl")
  File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/pandas/compat/_optional.py", line 138, in import_optional_dependency
    raise ImportError(msg)
ImportError: Missing optional dependency 'openpyxl'.  Use pip or conda to install openpyxl.

and
onurdogan@Onurs-iMac ~ % pip3 install openpyxl==3.1.5
Collecting openpyxl==3.1.5
  Using cached openpyxl-3.1.5-py2.py3-none-any.whl.metadata (2.5 kB)
Requirement already satisfied: et-xmlfile in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from openpyxl==3.1.5) (1.1.0)
Using cached openpyxl-3.1.5-py2.py3-none-any.whl (250 kB)
Installing collected packages: openpyxl
  Attempting uninstall: openpyxl
    Found existing installation: openpyxl 3.1.0
    Uninstalling openpyxl-3.1.0:
      Successfully uninstalled openpyxl-3.1.0
Successfully installed openpyxl-3.1.5
onurdogan@Onurs-iMac ~ % apscale_blast blastn

    APSCALE blast command line tool - v1.0.1 - 06/09/2024
    Usage examples:
    $ apscale_blast blastn -h
    $ apscale_blast blastn -database ./MIDORI2_UNIQ_NUC_GB259_srRNA_BLAST -query_fasta ./12S_apscale_ESVs.fasta
    $ apscale_blast filter -h
    $ apscale_blast filter -database ./MIDORI2_UNIQ_NUC_GB259_srRNA_BLAST -blastn_folder ./12S_apscale_ESVs_blastn

Please enter PATH to database: /Users/onurdogan/0_APSCALE_projects/APSCALE_databases/Reference_library_COI_AllFish_Dez2023
Please enter PATH to query fasta: /Users/onurdogan/0_APSCALE_projects/eDNA_data_analysis_challange_apscale/9_lulu_filtering/otu_clustering/eDNA_data_analysis_challange_apscale_OTUs_filtered.fasta
/Users/onurdogan/0_APSCALE_projects/eDNA_data_analysis_challange_apscale/9_lulu_filtering/otu_clustering/eDNA_data_analysis_challange_apscale_OTUs_filtered.fasta
09:32:02 : Creating subset(s) from fasta file.
09:32:02 : Created 8 subset(s) from fasta file.
09:32:02: Starting blastn for 'eDNA_data_analysis_challange_apscale_OTUs_filtered'
09:32:02: Your database: Reference_library_COI_AllFish_Dez2023
BLAST Database error: No alias or index file found for nucleotide database [/Users/onurdogan/0_APSCALE_projects/APSCALE_databases/Reference_library_COI_AllFish_Dez2023/db] in search path [/Users/onurdogan::]
BLAST Database error: No alias or index file found for nucleotide database [/Users/onurdogan/0_APSCALE_projects/APSCALE_databases/Reference_library_COI_AllFish_Dez2023/db] in search path [/Users/onurdogan::]
BLAST Database error: No alias or index file found for nucleotide database [/Users/onurdogan/0_APSCALE_projects/APSCALE_databases/Reference_library_COI_AllFish_Dez2023/db] in search path [/Users/onurdogan::]
BLAST Database error: No alias or index file found for nucleotide database [/Users/onurdogan/0_APSCALE_projects/APSCALE_databases/Reference_library_COI_AllFish_Dez2023/db] in search path [/Users/onurdogan::]
BLAST Database error: No alias or index file found for nucleotide database [/Users/onurdogan/0_APSCALE_projects/APSCALE_databases/Reference_library_COI_AllFish_Dez2023/db] in search path [/Users/onurdogan::]
BLAST Database error: No alias or index file found for nucleotide database [/Users/onurdogan/0_APSCALE_projects/APSCALE_databases/Reference_library_COI_AllFish_Dez2023/db] in search path [/Users/onurdogan::]
BLAST Database error: No alias or index file found for nucleotide database [/Users/onurdogan/0_APSCALE_projects/APSCALE_databases/Reference_library_COI_AllFish_Dez2023/db] in search path [/Users/onurdogan::]
BLAST Database error: No alias or index file found for nucleotide database [/Users/onurdogan/0_APSCALE_projects/APSCALE_databases/Reference_library_COI_AllFish_Dez2023/db] in search path [/Users/onurdogan::]
09:32:04: Finished blastn for subset 8/8.
09:32:04: Finished blastn for subset 4/8.
09:32:04: Finished blastn for subset 3/8.
09:32:04: Finished blastn for subset 6/8.
09:32:04: Finished blastn for subset 1/8.
09:32:04: Finished blastn for subset 2/8.
09:32:04: Finished blastn for subset 7/8.
09:32:04: Finished blastn for subset 5/8.
09:32:04: Finished blastn for 'eDNA_data_analysis_challange_apscale_OTUs_filtered'

Apscale-blast is basically an upgrade of the old "local blast" function from the GUI-version. But since PySimpleGUI is now not freely available anymore, I had to write a version without GUI (for now). Also, I made some updates so that the algorithm is much faster (through parallelisation) and also more stable.
Did you use the scripts that I uploaded here? The old databases do not work anymore. The taxonomy is now written in a more sophisticated format, which was not implemented in the  "local blast" function. So please create new databases using these scripts. If you have troubles with the creation of custom databases, let me know. For now I will only sustain the official databases, but we can always work out individual databases :)
Apscale-blast is currently only supported for python 3.10 or higher. I see that you use 3.9, which causes some errors, probably also related to openpyxl.

Thank you for the clarification and the great work! I realized that I should have opened this issue on the apscale-blast GitHub page. I’ll go ahead and create the issue there with the same title and share the link here once it's posted.
I successfully tested the PR2 database you shared with apscale-blast, and it worked well. I also installed Python 3.10 but am encountering some issues switching between Python versions. After downloading apscale-blast in Python 3.9, I moved (copied and pasted) it to the Python 3.10 folder, which resolved the issue for that module.
Additionally, I'm having trouble figuring out how to activate the correct Python version I'm currently using, and I often struggle with this. I attempted to modify my .zshrc profile file as follows, but I couldn't apply the same solution for openpyxl. Maybe there is a point I missed that I can't see.
nano $HOME/.zshrc

# Setting PATH for Python 3.9
# The original version is saved in .zprofile.pysave
PATH="/Library/Frameworks/Python.framework/Versions/3.9/bin:${PATH}"
export PATH

# Setting PATH for Python 3.10
# The original version is saved in .zprofile.pysave
PATH="/Library/Frameworks/Python.framework/Versions/3.10/bin:${PATH}"
export PATH

# Setting PATH for Python 3.11
# The original version is saved in .zprofile.pysave
PATH="/Library/Frameworks/Python.framework/Versions/3.11/bin:${PATH}"
export PATH

#PATH for TTT
export PATH="/usr/local/bin:$PATH"
export PATH

Then, I ran the following commands:
source $HOME/.zshrc
source .zshrc

Any professional advice on resolving issues with switching between Python versions or managing the correct versions of cutadapt, pandas, and openpyxl etc. would be greatly appreciated. I typically copy and paste the downloaded package into the directory of the other Python version. At the end of the day, I somehow make it work but most of the time it happens without my understanding how.


anti gravity bubble keeps terminating after restart.

Description (Required)

Same as #183, the AB keeps terminating itself after booting up, but works perfectly when initially placed.  I thought updating to the latest version (v197) will fix that, but unfortunately...nope. It still happens.
Steps to reproduce the Issue (Required)

Place the Anti gravity bubble.
Restart the server
When the server booted up, DynaTech throws the error and terminate them.

Expected behavior (Required)

Antigravity Bubble don't all get terminated by Slimefun after restart, no errors
Server Log / Error Report

https://mclo.gs/GY0lx0a
Environment (Required)

Java Environment:
Operating System: Linux
Java Version: <IP_ADDRESS>
Server Software: Purpur
Build: git-Purpur-2035 (MC: 1.20.1)
Minecraft v1.20.1-R0.1-SNAPSHOT
Slimefun Environment:
Slimefun vDEV - 1094 (git 7da1af03)
Caused by: DynaTech vDEV - 197 (git 8fced6ee)

Fixed by 28e063


error

okay so im tryna use the code to make my discord bot (coded w/ discord.js) send randomly generated words in a sentence
(eg: hi test word sky blue tree fall computer)
this is my line of code which uses the random words generator;
.addFields({ name: "Code:", value: randomWords()})
and this is the error:
error [InteractionAlreadyReplied]: The reply to this interaction has already been sent or deferred.
at ChatInputCommandInteraction.reply (C:\Users\no\Downloads\Slash_Command_Package_v14\node_modules\discord.js\src\structures\interfaces\InteractionResponses.js:102:46)
at Object.execute (C:\Users\no\Downloads\Slash_Command_Package_v14\src\events\interactionCreate.js:18:31)
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
Emitted 'error' event on Client instance at:
at emitUnhandledRejectionOrErr (node:events:394:10)
at process.processTicksAndRejections (node:internal/process/task_queues:84:21) {
code: 'InteractionAlreadyReplied'

There is a problem in the way you interact with the discord API. This is not is problem caused by this library.


Make NoOutputPin generic

This library doesn't seem to work OK with stm32f4xx-hal in its current incarnation. The problem seems to be the fact that NoOutputPin implements OutputPin<Error=()>, while stm32f4xx-hal expects <Error=Infallible>.
The solution I've found was to make NoOutputPin generic, through a PinE type argument.
I haven't found a way to avoid this Builder::<()>::new() nonsense. I would expect the compiler to infer that, but apparently that's not the case.
Anyway, I hope this PR is useful. I'll be happy to make changes if it's at least partially usable.

Hi, thanks for the PR! I'll do a quick review and see if I can fix the ::<()> when I have some free time.

Cool! Thanks a lot. It would indeed be nice to get rid of that.

I've come up with a solution to the turbofish issue. It's a bit long to put as review comments so I've added it to this gist. The main change being the CS type param is moved to the connect_spi() function. This now requires connect_spi() to always take a CS pin, but that can be placeholdered with NoOutputPin. Another option is to have another function like connect_spi_cs() for end users that want to use a CS pin.
I would've liked to be able to use .with_cs() on the SPI interface struct itself, but I couldn't get the generics working with NoOutputPin as a default.
Let me know what you think.

Cool! LGTM :+1:

Mint. Can you leave a comment or request me for review when you've made the changes? That way I get an email notification.

Sorry, I had forgotten about this. So, you'd like me to commit the code anyway? I'm perfectly OK with you committing your own modified version, as much as I'd appreciate the credit 😃

Hah me too. Feel free to take the solution in the gist I linked above and add it to this PR. I'll re-review it when you're done and we can get this merged :slightly_smiling_face: