Create a foxops client

A client: CRUD client with proper error handling and logging
Optionally: more high-level client that can do some "terraform-like" ensuring of incarnations

https://github.com/Roche/foxops-client-python


inventory: Add vagrant bare metal test machine

Ref: https://github.com/AdoptOpenJDK/openjdk-infrastructure/issues/910
Signed-off-by: Stewart Addison<EMAIL_ADDRESS>

Have added a comment. @karianna if you can approve the requested change that would be appreciated


Android 11 - It is not redirecting on browser and Lyft app

I am checking Lyft button but I found that it is not redirecting on browser Lyft app. It require to upgrade code for intent and deeplinking.

were you able to resolve this issue?

Additional note on issue observed:
Taping on Lyft Button is not redirecting on Android 11(API 30) and Android 12(API 31) when targetSdk is set to 30

Yeah, deep linking doesn't work when you have targetSDK set to 30 and above. https://www.reddit.com/r/androiddev/comments/ni33zr/anyone_else_experience_completely_broken_deep/

I was also having issues getting deep links to work when android targetSDK is set to 30 and above.
Still fairly new at android development. Not sure what the best practice is in this case. After some reading.
We manage to fix it within our own app by adding a <queries> element in the Android manifest.
I created a branch with updates to the lyft sample project(https://github.com/mikaaali/lyft-android-sdk/tree/defect/package-visibility-in-android#readme). Hopefully, you guys find this helpful.

@mikaaali hmm interesting, just checked your sample project and it looks like only the Pixel devices are impacted ? I tested on my Samsung device and the deeplinking worked just fine, but however, the drop off location data was not retrieved by the Lyft native app. When you login in to the Lyft native app, were you able to see the drop off location data ?

@makkhay yeah it's interesting. I think both Pixel and Samsung are impacted when targetSDK is set to 30 and above.
Like you said Samsung seems to works halfway, it does launch deep link but without the drop-off location data.
So far I haven't observed any error once I updated the app by following this guide: https://developer.android.com/training/package-visibility

@mikaaali  One quick question,  you said you were able to fix the issue by adding a  , I am guessing you added Lyft SDK as a lib instead from the gradle ? Because as far as I know, when you import from gradle, you wouldn't be able to make changes to the SDK code. Thanks

@makkhay the Lyft SDK is added as a dependency in the build.gradle file. No code change is needed for Lyft SDK to solve the deep link issue.

@mikaaali  oh thanks, got it working.


Polling alarm state ?

Hi,
Is it possible to get some kind of polling for the alarm state. Right now, when i change the alarm state in the "foscam app", i only get a notification when i open the "home app".
It would be nice to get a notification without opening the app.
At this moment i change the alarm state via http command and geofence so i dont have to confirm each action on my phone. This works perfect but now i dont get notified when the state changes.

I may be able to look into this when I have time. However, constant polling will create more traffic in your network and use more resources on your system.
By the way, what kind of geofence service do you use? I am also searching for that, too. The HomeKit built-in ones are too annoying since I have to confirm that every single time.

I also use the Homekit built-in ones. But I also use a "command switch" to set the arm state. This will set the state anyway, even when i don't confirm it.
Below is a part of my json config to explain more,
}, {
	"platform": "FoscamCamera",
	"cameras": [{
		"username": "username",
		"password": "Password",
		"host": "my ip",
		"port": "4828",
		"stay": "128",
		"away": "142",
		"night": "143"
		   }]
}, {
	"platform": "cmdSwitch2",
	"name": "RaspBerry Command",
	"switches": [{
		"name": "Motion Detection",
		"on_cmd": "sudo curl 'http://<IP_ADDRESS>:4828/cgi-bin/CGIProxy.fcgi?cmd=setMotionDetectConfig&isEnable=1&linkage=142&snapInterval=1&sensitivity=3&triggerInterval=0&isMovAlarmEnable=1&isPirAlarmEnable=0&schedule0=281474976710655&schedule1=281474976710655&schedule2=281474976710655&schedule3=281474976710655&schedule4=281474976710655&schedule5=281474976710655&schedule6=281474976710655&area0=136&area1=159&area2=415&area3=391&area4=255&area5=255&area6=255&area7=255&area8=511&area9=511&usr=Username&pwd=Password'",
		"off_cmd": "sudo curl 'http://<IP_ADDRESS>:4828/cgi-bin/CGIProxy.fcgi?cmd=setMotionDetectConfig&isEnable=0&linkage=142&snapInterval=1&sensitivity=3&triggerInterval=0&isMovAlarmEnable=1&isPirAlarmEnable=0&schedule0=281474976710655&schedule1=281474976710655&schedule2=281474976710655&schedule3=281474976710655&schedule4=281474976710655&schedule5=281474976710655&schedule6=281474976710655&area0=136&area1=159&area2=415&area3=391&area4=255&area5=255&area6=255&area7=255&area8=511&area9=511&usr=Username&pwd=Password'",
		"state_cmd": "sudo curl -s 'http://<IP_ADDRESS>:4828/cgi-bin/CGIProxy.fcgi?cmd=getMotionDetectConfig&usr=Username&pwd=Password' | grep 'isEnable>1'"
	}, {

Whit this it sets the arm state anyway but i only get a push notification when i open the Homekit App and the status gets refreshed.
About the traffic.... i dont think a constand polling is not needed.... maybe once every minute or so.
In the "cmdswitch2" its possible to set the interval rate
Hope this makes it clearer...

Just curious, if you use HomeKit geofencing to automate a normal switch, will your phone still ask for confirmation every time you enter/level the geofence area?
For the polling, the only thing I can do is to check the arm state together with the motion sensor polling. Currently, the motion sensor polling won't be activated when the camera is "disarmed". If I decided to go that route, the polling has to stay active all the time with the interval of 1 second or else the motion sensor state will not be accurately reflected in HomeKit.

The geofence on the"command switch" does not ask for confimation, it just execute the command to the foscam camera. But i dont get notified at all so (at the moment) i have to open the homekit app to check if the geofence worked..... sometimes geofence doesn't work for me in homekit....
That is why a push notification from the status change (arm state) would be nice.

Are you telling that the motion sensor would also be active in the disarmed state ?

@luisiam I noticed the apple's home app requires confirmation when the foscam motion tracker accessory is changed. When changing other accessories (e.g. switches) it does work without confimation. I'm setting foscam's state when the people switches changed or at certain times (home/away/night). Perhaps you can add dummy switches to change foscam's state instantly?

@rooi That seems to do the trick.... i will try tomorrow if this also works when i leave or enter a geofence area.


Loop Through Table

The problem
I want to loop through table using Selenide where i need to click second row and third column.
Details
I want to loop through table using Selenide where i need to click second row and third column.

Tell us about your environment

Selenide Version: 6.9.0
Chrome\Firefox\IE Version: 106
Browser Driver Version:
Selenium Version: 4
OS Version: Win 10

Code To Reproduce Issue [ Good To Have ]
No code yet, Looking for solutions.

Can you please share source HTML code, screenshot is not sufficient.

Creation DateMSISDNFinancial Transaction IDRequested AmountDeposited AmountCurrencyStatusCountryMNOReason19.10.2022   08:40:442557683386816645f39fb-9b93-4186-923a-7fd78478ae2d15.5615.56TZSCompletedTZAVODACOM TANZANIA19.10.2022   08:40:44255768338681688212442-f97d-4311-be6c-a27d4943988915.5615.56TZSCompletedTZAVODACOM TANZANIA19.10.2022   07:31:362557684130808a7200550-1d2d-4b9b-98aa-ac98a958454515.5615.56TZSCompletedTZAVODACOM TANZANIA19.10.2022   07:31:362557684130808bcb85254-bff0-4212-bdec-851fd712afb915.5615.56TZSCompletedTZAVODACOM TANZANIA19.10.2022   06:48:512547394927368f4020d8-8fff-4917-ad9e-44083e84a08915.5415.54KESCompletedKENMPESA KENYA19.10.2022   06:48:0625473963366615.540.00KESFailedKENMPESA KENYADeposit Automated Test19.10.2022   06:48:0125473963366615.540.00KESFailedKENMPESA KENYADeposit Automated Test19.10.2022   06:48:0125473963366615.540.00KESFailedKENMPESA KENYADeposit Automated Test19.10.2022   06:47:5425473963366615.540.00KESFailedKENMPESA KENYADeposit Automated Test19.10.2022   06:47:5425473963366615.540.00KESFailedKENMPESA KENYADeposit Automated Test19.10.2022   06:47:5425473963366615.540.00KESFailedKENMPESA KENYADeposit Automated Test19.10.2022   06:47:5425473963366615.540.00KESFailedKENMPESA KENYADeposit Automated Test19.10.2022   06:47:5425473963366615.540.00KESFailedKENMPESA KENYADeposit Automated Test19.10.2022   06:47:5425473963366615.540.00KESFailedKENMPESA KENYADeposit Automated Test19.10.2022   06:47:5425473963366615.540.00KESFailedKENMPESA KENYADeposit Automated Test19.10.2022   06:47:5425473963366615.540.00KESFailedKENMPESA KENYADeposit Automated Test19.10.2022   06:47:5425473963366615.540.00KESFailedKENMPESA KENYADeposit Automated Test19.10.2022   06:47:5425473963366615.540.00KESFailedKENMPESA KENYADeposit Automated Test19.10.2022   06:47:5425473963366615.540.00KESFailedKENMPESA KENYADeposit Automated Test19.10.2022   06:47:5425473963366615.540.00KESFailedKENMPESA KENYADeposit Automated Test19.10.2022   06:47:5425473963366615.540.00KESFailedKENMPESA KENYADeposit Automated Test19.10.2022   06:47:5425473963366615.540.00KESFailedKENMPESA KENYADeposit Automated Test19.10.2022   06:47:5425473963366615.540.00KESFailedKENMPESA KENYADeposit Automated Test19.10.2022   06:47:5425473963366615.540.00KESFailedKENMPESA KENYADeposit Automated Test19.10.2022   06:47:5425473963366615.540.00KESFailedKENMPESA KENYADeposit Automated Test19.10.2022   06:47:54254739633666OLH6NKNEQU15.5415.54KESCompletedKENMPESA KENYADeposit Automated Test19.10.2022   06:47:5425473963366615.540.00KESFailedKENMPESA KENYADeposit Automated Test19.10.2022   06:47:5425473963366615.540.00KESFailedKENMPESA KENYADeposit Automated Test19.10.2022   06:47:5425473963366615.540.00KESFailedKENMPESA KENYADeposit Automated Test19.10.2022   06:47:5425473963366615.540.00KESFailedKENMPESA KENYADeposit Automated Test

Below is the HTML Source Code:
Div_Table.txt

Here you go

Hi @soydivision Why send me a skeleton of selenide project. I need the solution on how to iteratve table using selenide approach.

Hi @soydivision Why send me a skeleton of selenide project. I need the solution on how to iterate table using selenide approach.

Its in the project. Lol. Someone is giving ready-baked solution and you are complaining. Lol.

@peterwkc85 I don't see how this question is related to Selenide. It's just a matter of selectors. Find out a proper selector to get the right element.

I usually don't recommend to use iteration over web elements: it may be slow if you have multiple elements.
If you know exact index, you can use method $(selector, index):    $("#data-table-deposits tr", 2).find("td", 3).
Or probably the most performant option is to write a proper xpath. It may look ugly, but it finds the element quickly.


XD-2574 - support multiple locators for gemfire modules

This allows the host and port properties to accept comma-delimited strings. The rule is that one or the other may be single valued or they must both contain lists of the same length. For example to specify multiple ports on the same host, you can do:
 --host=myhost.my.com  --port=10334,10335

Likewise you can do:
 --host=myhost1.my.com,myhost2.my.com --port=10334

And of course:
 --host=myhost1.my.com,myhost2.my.com --port=10334,10335

which will apply corresponding host-port pairs in list order

Note the same semantics also apply if to direct server connections if --useLocator is not set.

LGTM Starting Acceptance Test Pass.

LGTM Cleanup and Merge


Get rid of Chain as the building block for other combinators and remo…

…ve some unsafe code
This is just the first step in a potential refactor that could remove a lot of safe and unsafe code, and I wanted to test the waters before going all out. As you can see the amount of code that can be deleted this way is high!
The basic ideas are:

Switch from pin-utils to pin-project as it has a safe API and supports enums.
Remove Chain as it is unnecessarily complicated. We can instead build up from primitive combinators like Flatten and Map.

There are a couple of open questions:

Is it OK to use raw type aliases as I have done with Then? Strictly speaking, it's a breaking change, however, it's exceptionally unlikely that it will actually cause any problems. If we don't want to do this, the fallback would be to have a macro to define a load of newtype wrappers that automatically implement the relevant traits.

Is it OK to get rid of the unused type parameter on  Then? This is a breaking change, although you wouldn't typically name this parameter during normal usage. If we don't want to get rid of it, then we'll need a newtype wrapper for at least Then and any other combinators with unused generic parameters.

Oh, and this also fixes #2118 :)

The test select_on_non_unpin_size is failing because I reduced the size of the future combinator, but I have no idea what it's actually trying to test by asserting on that size? Am I safe to just update the size?

The test select_on_non_unpin_size is failing because I reduced the size of the future combinator, but I have no idea what it's actually trying to test by asserting on that size? Am I safe to just update the size?

That is failing because of changes to the generator transform in rustc, I've opened https://github.com/rust-lang/futures-rs/pull/2119 to fix it.

Superceded by #2128


Fixes typo.

Added a missing word. It could be 'you' or 'we', I went with 'we' to make us all feel a little less alone in this world.

Thanks, @cldershem.


Update HCL scripts for Terraform v0.13.x

The HCL scripts located in /terraform authored against v0.12.x. The latest version v0.13 has explicitly new HCL provider code block that must be used.

Update the documentation to explicitly say what version terraform to use.
Update the main.tf or add verison.tf to /terraform.

Workaround:
$ terraform 0.13upgrade .

⚠  Don't forget the "." in the command above.

main.tf updated.


fix mem overlap and hang

We conducted pressure testing using a testing tool and occasionally observed the system hanging.
Meanwhile, upon analyzing the current logic, we believe that there may be issues with reusing previously existing bar1 mem. Under heavy request loads during pressure testing, due to the asynchronous nature of sync, confusion in the usage of bar1 mem might occur. Therefore, while one connection is performing sync, we should reorganize the mem map.
After the changes were made, the previous issues have not occurred for the time being.

thank you for your PR.
BTW, can you share your pressure testing tool?
However,I was thinking: in the vllm decoding phase,
if we want to have a interleaved computation and kvcache read.  the sequence will  be

cache read hidden_status
cache read  KV of 1st layer
cache sync
4. Compute 1st layer
cache sync
cache read KV of 2nd layer
7.  Compute 2nd layer

in this case:
so we have to re-register MR each time.

thank you for your PR. BTW, can you share your pressure testing tool?
However,I was thinking: in the vllm decoding phase, if we want to have a interleaved computation and kvcache read. the sequence will be

cache read hidden_status
cache read  KV of 1st layer
cache sync
4. Compute 1st layer
cache sync
cache read KV of 2nd layer
7.  Compute 2nd layer

in this case: so we have to re-register MR each time.

hello, i use nsys to profile infinistore used in vllm, and i found some delay or cost which i don't understand, do you have wechat? We can talk more more timely

can you join our slack? https://vllm-dev.slack.com/archives/C07VCUQLE1F
and you are right, the implementation in https://github.com/vllm-project/vllm/pull/9079/files is Inefficient。because calling cuda.synchronize in each layer will not only block cpu but also stop sending new command to GPU.  the vllm should be programed such as this:
https://github.com/bd-iaas-us/infiniStore/blob/sync_cuda/infinistore/example/new.py
we should use cuda event to synchronize with GPU and start new thread to upload kvcache, this shows that GPU computation could overlap with network activity  perfectly.

and what's you nsys result? can you shared that?

and what's you nsys result? can you shared that?

@thesues I have added slack and left message there.thx


Can we make an Azure Static Web App using Blazor?

As static web apps allows to make web apps with so many javascript libraries, does it support Blazor under the hood or it's not supported as of yet?

We are working on this support! Today you can use client-side Blazor support as it compiles into static assets.

Here's an article on how to do it today by modifying the Actions: https://www.timheuer.com/blog/hosting-blazor-in-azure-static-web-apps/

Thanks for sharing the article Aaron.

Not sure if this was possible when you originally asked this question, but Today you can also do this without modifying the Actions.
Not sure if officially supported, but it works out of the box, check out my how-to: https://swimburger.net/blog/dotnet/how-to-deploy-aspnet-blazor-webassembly-to-azure-static-web-apps

Announced at Ignite today: first class support for Blazor (and C# Functions) for Static Web Apps. Interesting links:

Blazor and C# APIs now supported in Azure Static Web Apps
Tutorial: Building a static web app with Blazor in Azure Static Web Apps


Remove schema validation

Description
Schema Validation is referenced by archived repositories and another nuget package Schemas
This package is identified as not being used by any active repositories.

Codecov Report

Merging #235 (de81d8a) into main (2c71b0e) will decrease coverage by 0.44%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##             main     #235      +/-   ##
==========================================
- Coverage   71.22%   70.79%   -0.44%
==========================================
  Files         199      201       +2
  Lines        3566     3588      +22
  Branches      441      442       +1
==========================================
  Hits         2540     2540
- Misses        881      903      +22
  Partials      145      145

Flag
Coverage Δ

jsonserialization
36.66% <ø> (ø)

messaging
51.42% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.
see 2 files with indirect coverage changes
:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more


ColumnResizer won't let go of focus with empty rows

Provide a general summary of the issue here
Once the column resizer gains focus it will not let go of that focus and you can't tab or use your arrow keys to escape.  This only happens when there are no rows passed to the table.
🤔 Expected Behavior?
It should let go of focus.
😯 Current Behavior
It steals focus.
💁 Possible Solution
No response
🔦 Context
No response
🖥 Steps to Reproduce
https://stackblitz.com/edit/vitejs-vite-c1a5kl?file=tailwind.config.js,src%2Findex.css,src%2FApp.tsx&terminal=dev
Version
latest stable react-aria-components
What browsers are you seeing the problem on?
Chrome
If other, please specify.
No response
What operating system are you using?
Mac
🧢 Your Company/Team
No response
🕷 Tracking Issue
No response

Thanks for the issue. I see it in our storybook too if I alter https://github.com/adobe/react-spectrum/blob/4a8b24028308831a06a2450e6975b8816406315f/packages/react-aria-components/stories/Table.stories.tsx#L103 to have an empty array.
I'm not sure why it's happening, will need some investigation


insights - disable global filter

A global filter was added for the whole ansible org in insights mode, but it's only for AAP - introduced as part of https://issues.redhat.com/browse/RHCLOUD-18330 & https://github.com/RedHatInsights/insights-chrome/pull/1827
Disabling, same as https://github.com/RedHatInsights/tower-analytics-frontend/pull/777 :)

TODO screenshot, ensure this doesn't just work the first time, or move to render
TODO ensure the css thing doesn't affect other non-AAH pages

We may not need this after all, sounds like the change will be updated to restrict the filter to aap before it goes in prod.
Keeping for now not to forget.
Also, https://issues.redhat.com/browse/AAP-3077

No longer present in stage or prod.


gradient stop animation

am i missing something or is these as it stands no way to add an animation to a gradient stop?

closed because i found the otherElem parameter of the Animate() class.

Glad you solved it.  Was the issue that you couldn't do something like this?
gradient = ...
stop = gradient.addStop(...)  # addStop doesn't return anything currently.
stop.appendAnim(...)

Can you share how you did it using the otherElem parameter?

What was exactly what i tried yea. The otherElem parameter sets the xlink:href attribute of the <animate> element, if you give the stop an id, by using the id parameter of the addStop() method, you can use that given id as the value for the otherElem parameter.
gradient = ...
gradient.addStop(id="stop", ...)
gradient.appendAnim(Animate(otherElem="#stop", ...))

alright, many thanks!


Style icon override for predicted hit

It would be nice if the respective style (magic, range, melee) icon still showed up with predicted hit on.

Added the option in https://github.com/runelite/plugin-hub/pull/3514


effector-react/compat should import effector/compat

effector-react has its compat version. In this version, it should import effector/compat, not just effector
Originally posted by @johneisenheim in https://github.com/zerobias/effector/issues/152#issuecomment-518618154

fixed in effector-react 20.2.2 / effector-vue 20.1.2
release notes
@johneisenheim


Arbitrary ReactComponent on map

Hi,
Is it possible to use arbitrary React components on a map? In your example I only see the use of the Marker class. Adding arbitrary react components can be done with the google-map-react library, but that one doesn't cover as much of the google api as yours. I'm trying to choose between libraries.
Thanks!

I'm having generally good luck using the OverlayView component to insert arbitrary React-based DOM into a map. (I'm using it for custom SVG markers.)
https://tomchentw.github.io/react-google-maps/#basics/overlay-view.

@medmunds interesting idea. How many items are you rendering at once? Any drawbacks to this approach?

And do you know how this approach compares to the google-map-react library?

@dcworldwide I haven't done extensive testing yet, but just playing around I've used >20 individual OverlayViews without noticing any obvious performance issues. I believe Google Maps uses some optimized compositing for its native markers, so you wouldn't be getting that.
The only other problem I've run into is there's no easy way to control zIndex on the OverlayViews. (I have a question open about that elsewhere in this project.)
@thunderkid I haven't used google-map-react personally, but glancing through their code, it looks like they also use a Google Maps OverlayView to hold the React components. One difference is they seem to use a single GMaps OverlayView to hold all the React components. They make that overlay as large as possible, and individually position the child components within it by lat/lng props.
I don't know if the single-overlay approach is more performant. (If so, it wouldn't be too hard to render all your components in a single react-google-maps OverlayView, by essentially duplicating the positioning code from google-map-react and listening for the map's onProjectionChange to update the positions.)
One slight advantage to multiple overlays with react-google-maps is that the getPixelPositionOffset callback gives you your React component's rendered width and height, making it really easy to position your component anywhere relative to the lat/lng (center, bottom-right, whatever).

I've found that using user-defined components works, but that you must manually pass down props used internally by this library. The internal google maps objects, such as the underlying map, are passed down with props and not context. I use a pattern like this:
const MyMapComponent({myProp1, myProp2, ...props}) {
  return <Marker position={something} {...props} />
}

Since we now have major adoption for<EMAIL_ADDRESS>we should be able to fix this.
We're also looking for maintainers. Involve in #266 to help strengthen our community!


[web] add additional html, js files to flutter web project

Flutter web project has one HTML file (index.html). I want to add another html page to enable user to upload files to the server.  How can i achieve that?

Merging into https://github.com/flutter/flutter/issues/32326


Build failure: turbo

Steps To Reproduce
Steps to reproduce the behavior:

build turbo

Build log
error: builder for '/nix/store/m8pmv8li0nshcyvrf6r11qrw1myh8mry-go-turbo-1.10.13.drv' failed with exit code 1;
       last 10 log lines:
       > building
       > make protoc
       > make[1]: Entering directory '/build/source/cli'
       > protoc --go_out=. --go_opt=paths=source_relative \
       >   --go-grpc_out=. --go-grpc_opt=paths=source_relative \
       >  internal/turbodprotocol/turbod.proto
       > make[1]: Leaving directory '/build/source/cli'
       > Building subPackage ./cmd/turbo
       > # github.com/vercel/turbo/cli/internal/ffi
       > internal/ffi/ffi.go:68:9: cannot define new methods on non-local type C.Buffer
       For full logs, run 'nix log /nix/store/m8pmv8li0nshcyvrf6r11qrw1myh8mry-go-turbo-1.10.13.drv'.
error: 1 dependencies of derivation '/nix/store/6vkapfqwhnisiws55mgh2jmi9rkib9i4-turbo-1.10.13.drv' failed to build

Additional context

Notify maintainers
@dlip
Metadata
using flakes only, with nixpkgs locked to:
      "locked": {
        "lastModified":<PHONE_NUMBER>,
        "narHash": "sha256-RvYt1hRWAbBIT/QApyztv/u0eoJuq59fSGtohZhktT0=",
        "owner": "nixos",
        "repo": "nixpkgs",
        "rev": "7a1f927eea31dcc5f224557641a70724d3908c06",
        "type": "github"
      },
      "original": {
        "owner": "nixos",
        "ref": "master",
        "repo": "nixpkgs",
        "type": "github"
      }

@KiaraGrouwstra the issue you experiencing was fixed in https://github.com/NixOS/nixpkgs/pull/267564


Purchase Call gets stuck in Pending

One user on Slack is reporting behavior that appears to be caused by the purchase call getting stuck in a pending state without timing out or failing.
They click the pay button in the client, and get a spinner that never ends.

I've managed to replicate this issue, but I haven't figured out what triggers it.
Once in this state, any purchase calls to the same vendor also go into a pending state indefinitely.
I didn't have a 2nd selling node handy to test if new purchase calls become stuck for all vendors, or just the original stuck vendor. I'll check that if this happens again.
I did notice that once the node is in this state, I was not able to use control-C to close the node. The terminal appeared to not accept any input at all.

I have reproduced this in the master branch of 2.3.1

I saw some errors in that node that seem unrelated, but might be relevant.
One:
15:21:50.990 [ERROR] [retriever/handleMessage] Error processing message /ipfs/QmdB8xfuz9fCZMb2JPX7rgNCSXEtCTgJYsevzfXr2QAMV9. Type ORDER_COMPLETION: exhausted maximum attempts for request
and a bunch of:
16:28:36.098 [INFO] [pool/executeRequest] error executing wallet client request: error broadcasting tx: status not ok: 400 Bad Request
and two:
16:28:36.098 [ERROR] [WalletService/func1] broadcasting unconfirmed utxo: exhausted maximum attempts for request

I haven't reproduced this since almost a year ago, I think it's safe to close it.


Create a new BatchDB class for atomic database operations.

What is wrong?
There are a few cases where we need to make multiple database updates and have them either all succeed or all fail.
How can it be fixed
Implement a new class BatchDB in a new module evm/db/batch.py
This class should serve as a wrapper in much the same way as the current JournalDB found in the module evm/db/journal.py.
This class should be usable as a context manager similar to the following:
with BatchDB(db) as batch_db:
    batch_db[b'a'] = b'arst'  # doesn't write the key to the database but rather to a local cache.
    assert batch_db[b'a'] == b'arst'  # intelligently returns the value from the cache
    batch_db[b'b'] = b'tsra'
# upon exiting the context, it writes all of the keys from the cache into the underlying database.

Or via an alternate API that requires manually committing the batch.
batch_db = BatchDB(db)
batch_db[b'a'] = b'arst'  # doesn't write the key to the database but rather to a local cache.
assert batch_db[b'a'] == b'arst'  # intelligently returns the value from the cache
batch_db[b'b'] = b'tsra'
batch_db.commit()

If an exception is raised before committing (or leaving the context when used as a context manager) none of the changes should be committed to the database.

See: https://github.com/pipermerriam/py-evm/issues/135 for indication where this new database wrapper should be used.

:+1: for the context manager API

one of #455 or #322 will closes this.  I still think this is a useful API but I'm holding off on merging either PR until we have a direct use case which I forecast will show up after the launch of trinity.


Can't Set HTTP Proxy

Steps to reproduce the problem:

Open in console mitmproxy to show options like : mitmproxy --options
There is an option upstream_bind_address
But when I try to set it up , I get error as :
mitmproxy: error: unrecognized arguments: --upstream_bind_address

In the screenshot below.

What I am trying to do
My college uses a proxy and so was trying to route my traffic through that,  I have a proxy authentication and was trying to set it up
Also Another Issue I think worth mentioning
When using help in terminal  mitmproxy --help I get this output :
(venv) root@Dell-PC:~/mitmproxy# mitmproxy --help
usage: mitmproxy [options] [filter]

positional arguments:
  filter_args           Filter view expression, used to only show flows that
                        match a certain filter. See help in mitmproxy for
                        filter expression syntax.

optional arguments:
  -h, --help            show this help message and exit
  --version
  --shortversion        show program's short version number and exit
  --options             Show all options and their default values
  --conf PATH           Read options from a configuration file
  --set option[=value]  Set an option. When the value is omitted, booleans are
                        set to true, strings and integers are set to None (if
                        permitted), and sequences are emptied.
  -q, --quiet           Quiet.
  -v, --verbose         Increase log verbosity.
  --mode MODE, -m MODE  Mode can be "regular", "transparent", "socks5",
                        "reverse:SPEC", or "upstream:SPEC". For reverse and
                        upstream proxy modes, SPEC is proxy specification in
                        the form of "http[s]://host[:port]".
  --no-anticache
  --anticache           Strip out request headers that might cause the server
                        to return 304-not-modified.
  --no-showhost
  --showhost            Use the Host header to construct URLs for display.
  --rfile PATH, -r PATH
                        Read flows from file.
  --scripts SCRIPT, -s SCRIPT
                        Execute a script. May be passed multiple times.
  --stickycookie FILTER
                        Set sticky cookie filter. Matched against requests.
  --stickyauth FILTER   Set sticky auth filter. Matched against requests.
  --streamfile PATH, -w PATH
                        Write flows to file. Prefix path with + to append.
  --no-anticomp
  --anticomp            Try to convince servers to send us un-compressed data.
  --flow-detail LEVEL   Flow detail display level.

Proxy Options:
  --listen-host HOST    Address to bind proxy to.
  --listen-port PORT, -p PORT
                        Proxy service port.
  --no-server, -n
  --server              Start a proxy server.
  --ignore-hosts HOST   Ignore host and forward all traffic without processing
                        it. In transparent mode, it is recommended to use an
                        IP address (range), not the hostname. In regular mode,
                        only SSL traffic is ignored and the hostname should be
                        used. The supplied value is interpreted as a regular
                        expression and matched on the ip or the hostname. May
                        be passed multiple times.
  --tcp-hosts HOST      Generic TCP SSL proxy mode for all hosts that match
                        the pattern. Similar to --ignore, but SSL connections
                        are intercepted. The communication contents are
                        printed to the log in verbose mode. May be passed
                        multiple times.
  --upstream-auth USER:PASS
                        Add HTTP Basic authentcation to upstream proxy and
                        reverse proxy requests. Format: username:password.
  --proxyauth SPEC      Require authentication before proxying requests. If
                        the value is "any", we prompt for authentication, but
                        permit any values. If it starts with an "@", it is
                        treated as a path to an Apache htpasswd file. If its
                        is of the form "username:password", it is treated as a
                        single-user credential.
  --no-rawtcp
  --rawtcp              Enable/disable experimental raw TCP support. Disabled
                        by default.

SSL:
  --certs SPEC          SSL certificates. SPEC is of the form "[domain=]path".
                        The domain may include a wildcard, and is equal to "*"
                        if not specified. The file at path is a certificate in
                        PEM format. If a private key is included in the PEM,
                        it is used, else the default key in the conf dir is
                        used. The PEM file should contain the full certificate
                        chain, with the leaf certificate as the first entry.
                        Can be passed multiple times. May be passed multiple
                        times.
  --no-ssl-insecure
  --ssl-insecure, -k    Do not verify upstream server SSL/TLS certificates.

Client Replay:
  --client-replay PATH, -C PATH
                        Replay client requests from a saved file. May be
                        passed multiple times.

Server Replay:
  --server-replay PATH, -S PATH
                        Replay server responses from a saved file. May be
                        passed multiple times.
  --no-replay-kill-extra
  --replay-kill-extra   Kill extra requests during replay.
  --no-server-replay-nopop
  --server-replay-nopop
                        Disable response pop from response flow. This makes it
                        possible to replay same response multiple times.

Replacements:
  --replacements PATTERN, -R PATTERN
                        Replacement patterns of the form
                        "/pattern/regex/replacement", where the separator can
                        be any character. May be passed multiple times.

Set Headers:
  --setheaders PATTERN, -H PATTERN
                        Header set pattern of the form
                        "/pattern/header/value", where the separator can be
                        any character. May be passed multiple times.
(venv) root@Dell-PC:~/mitmproxy#

There is an option of --upstream-auth but no upstream_proxy_address , which made me wonder and find out the first issue.
System information
Mitmproxy version: 3.0.0 (2.0.0dev0201-0x253fa950)
Python version: 3.5.3
Platform: Linux-4.6.0-kali1-amd64-x86_64-with-Kali-kali-rolling-kali-rolling
SSL version: OpenSSL 1.1.0e  16 Feb 2017
Linux distro: Kali kali-rolling kali-rolling

Hi @LuD1161,
Recently there had been major changes with how options are set. The method you trying would indeed work in order versions. But now the options that are not there in --help are supposed to be set using --set. Try doing this:
$ mitmproxy --set upstream_bind_address=<IP_ADDRESS>

^ what @krsoninikhil said. Option handling on master is changing by a lot right now, and we haven't updated the documentation yet.

@krsoninikhil @mhils
Tried all these:

mitmproxy upstream-auth user:pass -U http://<IP_ADDRESS>:8080
mitmproxy --upstream-auth user:pass --set upstream_bind_address=<IP_ADDRESS>:8080

Still unable to make the tool running :(

My bad, did you try:
$ mitmproxy --upstream-auth user:pass --set upstream_bind_address=http://<IP_ADDRESS>:8080

This should work.

@krsoninikhil
Yes that too didn't work.
My mitmproxy --version output
(venv) root@Dell-PC:~/mitmproxy# mitmproxy --version
Mitmproxy version: 3.0.0 (2.0.0dev0203-0xc0882496)
Python version: 3.5.3
Platform: Linux-4.6.0-kali1-amd64-x86_64-with-Kali-kali-rolling-kali-rolling
SSL version: OpenSSL 1.1.0e  16 Feb 2017
Linux distro: Kali kali-rolling kali-rolling

@krsoninikhil
Finally got it working
Using this :
mitmproxy --set mode=upstream:http://<IP_ADDRESS>:8080 upstream_auth=user:pass --set ssl_insecure=True (edited)


feat(chore): allow chained storages

Closes #344

This is a breaking change released in a minor version. For instance, it
breaks caddyserver/cache-handler:
./configuration.go:160:9: cannot use c.DefaultCache (variable of type *DefaultCache) as configurationtypes.DefaultCacheInterface value in return statement: *DefaultCache does not implement configurationtypes.DefaultCacheInterface (missing method GetStorers)
./httpcache.go:240:35: s.SouinBaseHandler.Storer undefined (type *middleware.SouinBaseHandler has no field or method Storer)
./httpcache.go:264:25: s.SouinBaseHandler.Storer undefined (type *middleware.SouinBaseHandler has no field or method Storer)
./httpcache.go:274:35: s.SouinBaseHandler.Storer undefined (type *middleware.SouinBaseHandler has no field or method Storer)

Is there at least a migration guide?

Hello @wchargin That's an internal behavior that doesn't affect end users, previous configurations are totally compatible with this change.

I don't follow.
My understanding is that DefaultCacheInterface is a public type
exported by the github.com/darkweak/souin/configurationtypes package.
For instance, it's listed on pkg.go.dev. And this pull request
adds a new method to that interface.
Doesn't that constitute a breaking API change for end users of the
github.com/darkweak/souin Go module who have defined custom types that
were intended to implement this interface but no longer do? If it were
backward-compatible, I'd expect to be able to update from previous
releases of souin to this one without error, but, as you can see, that
is not what happens.


Delete DNS Api Failed

Describe the bug
The acme_challenge records do not get removed once validated.
To Reproduce
Unknown... I have both wildcard and root domains on 1 line with extra -d options????
Expected behavior
The porkbun api doesn't seem to be cleanly handling the delete dns records... unsure why
Certbot command
Docker Compose File
services:
  porkbun-root:
   image: infinityofspace/certbot_dns_porkbun
   platform: linux/arm64/v8
   hostname: cerbot-porkbun-root
   restart: unless-stopped
   volumes:
     - "/storage/docker/certbot/etc/letsencrypt:/etc/letsencrypt"
     - "/storage/docker/certbot/var/lib/letsencrypt:/var/lib/letsencrypt"
     - "/storage/docker/temp-root:/var/log"
     - "/storage/docker/certbot/porkbun/credentials.json:/tmp/credentials.json"
   command: certonly -v --non-interactive --agree-tos --email<EMAIL_ADDRESS>--preferred-challenges dns --authenticator dns-porkbun  --dns-porkbun-credentials /tmp/credentials.json --dns-porkbun-propagation-seconds 600 -d root.xyz -d root.ca -d root.dev -d root.download -d "*.root.xyz"  -d "*.root.ca" -d "*.root.dev" -d "*.root.download"

Versions (please complete the following version information):

certbot: 2.4.0
certbot_dns_porkbun: docker: infinityofspace/certbot_dns_porkbun:latest	Platform linux/arm64/v8 ``(sha256:9a65965e4a72d37cf2c99740291e46a579f4b91f1b31188b93f2e94354883a2c)

Error message
2024-03-30 21:59:56,369:DEBUG:certbot._internal.error_handler:Encountered signals: [15]
2024-03-30 21:59:56,370:DEBUG:certbot._internal.error_handler:Calling registered functions
2024-03-30 21:59:56,370:INFO:certbot._internal.auth_handler:Cleaning up challenges
2024-03-30 21:59:56,976:ERROR:certbot._internal.error_handler:Encountered exception during recovery: certbot.errors.PluginError: ERROR: DNS delete api call was not successfully
2024-03-30 21:59:56,977:DEBUG:certbot._internal.error_handler:Calling signal 15
2024-03-30 21:59:56,977:DEBUG:certbot._internal.log:Exiting abnormally:
2024-03-30 21:59:56,981:ERROR:certbot._internal.log:An unexpected error occurred while handling the authorizations.

Additional context
I have 8 domains using the san feature, 4 of which are the root domains, and 4 are wildcards for the subdomains

I've encountered the same error using the plugin on different machines, similarly with multiple domains and wildcards. I've installed this plugin from source in one case, through the Arch User Repository build script in another and none of the components are containerized.
This isn't a critical error if it happens a couple of times but the renewal process can fail if there are too many TXT records that haven't been cleaned up as no more can be created after a point.
Nor sure where the problem is exactly as making API deletion calls using curl directly or pkb-client directly works as expected.

I have this exact same issue. Attempting to debug it now.


Add support for recurrence rule parsing

Add support for recurrence rule parsing, with the most relevant parts of the spec (recurring monthly, weekly, daily).

Codecov Report

Merging #42 (1ecdc83) into main (a979776) will decrease coverage by 0.07%.
The diff coverage is 94.20%.

@@            Coverage Diff             @@
##             main      #42      +/-   ##
==========================================
- Coverage   95.42%   95.35%   -0.08%
==========================================
  Files           8        8
  Lines         765      818      +53
==========================================
+ Hits          730      780      +50
- Misses         35       38       +3

Impacted Files
Coverage Δ

ical/types.py
93.76% <93.44%> (+0.01%)
:arrow_up:

ical/contentlines.py
97.18% <100.00%> (ø)

ical/event.py
94.11% <100.00%> (+0.15%)
:arrow_up:

:mega: Codecov can now indicate which changes are the most critical in Pull Requests. Learn more


Handle package empty error in deploy controller

This PR contains handling emptyPackage error issue.

Don't change the spacing, it will be hard to review, it would be better if you keep the code formatting intact and fix the warnings in the code too.
Thanks


Add top margin to Markdown header anchors

When linking to a header anchor (e.g. #sending-email),
the target anchor would be scrolled to the top of the page and
be hidden behind the navbar. This PR adds margin to the top
of these anchors, so they are now scrolled to just below the
navbar.
Description of the change: Add margin to headers with anchors to show below site navbar
Reason for the change:
When sending links to page sections, the page section is hidden behind the navbar, which is confusing for people who may not know to scroll the page.
Link to original source: An example: https://sendgrid.com/docs/ui/sending-email/how-to-send-email-with-marketing-campaigns/#add-contacts
The approach to the solution is here: https://css-tricks.com/hash-tag-links-padding/
To maintain the type of header layout when text wraps that was there with display: flex, I removed the negative margin from the headers, which are now display: block. I then targeted the anchor SVG and added the margin to it to achieve the same visual layout. I hope it helps. Let me know if it needs work.
I tested on:

Windows 10 current version of Edge and Firefox
MacOS 10.14 Mojave current Firefox, Safari, Chrome
iOS 12 current Safari.

Closes #

LGTM @astuteape - I'll let you merge at your leisure.

Hello @astuteape,Thanks again for the PR! We appreciate your contribution and look forward to                                              continued collaboration. Thanks!                                             Team SendGrid DX


Fix cell items

This pull request corrects misplaced items
chm.filecmdfilecomfile -> chm.file\n cmdfile\n comfile

@tounan : Thanks for your contribution! The author(s) have been notified to review your proposed change.


Better windows and python2 support

Adds support and enables CI testing for the command line tool on windows.
Adds a concurrent python 2 implementation using multiprocessing Pool.

Thanks Wilko - should have addressed those comments. I'll give rebasing a crack once the CI's think everything is okay

Closing in favor of https://github.com/n1analytics/clkhash/pull/64 (rebased and squashed)


Slack Plugin bug fixes

Fixed the slack webhooks regex to support longer urls which didn't match the existing one.
Also, added 'no_text' as a valid response.text. Without it some valid urls hasn't been marked as verified and didn't appear in the baseline at all

Example of a webhook url (which I disabled immediately after creating) : https://hooks.slack.com/services/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
The original regex failed because the second secret part of the URL (starting with B) has 10 characters after the B, and not 8.
The regex is specific enough as is to use the + sign and not limit to specific repetition count


Intro the performance_analysis module to gather perf stats by categories

This modules provides simple stats (avg, min, max, count) on the execution time of categories. I use this module in my games to detect performance bottlenecks.
If anyone has an idea for a better name, I'm open to suggestions.

Rerolled with @privat comments.

+1

:shipit:


HELM-432: Updated wording for Converter Dashboard instructions

Some updated wording for the converter instructions.
External References

JIRA (Issue Tracker): https://opennms.atlassian.net/browse/HELM-432
Continuous Integration: CircleCI

A few updates. Where does this content appear?

It shows up in Grafana, on a new dashboard to assist users in converting Helm v8 dashboards to Plugin v9. The markdown there doesn't appear to support nested numbered lists. (at least not when I tried)

Thanks!

I pushed an update that also cleans up some behind-the-scenes items that were tied to Perf DS instances that don't exist and aren't needed on this dashboard.
Screenshot of how it looks:


GDScript: Add unsafe_assignment warning

This PR adds a new unsafe_assignment warning, which optionally can be enabled to warn the user if they are implicitly assigning a value of unknown type to a variable without casting it.
NOTE: This warning conflicts with the existing unsafe_cast warning, and this PR should include discussion on whether we prefer warning for unsafe casting or for unsafe assignment.
Examples of both warnings:
var dict: Dictionary = {
    "value": "foo"
}

var unsafe_cast: String = dict.value as String # unsafe_cast warning
var unsafe_assignment: String = dict.value # unsafe_assignment warning

CC @dalexeev since we were talking about a separate discussion of pattern matching and the topic of unsafe casting was brought up and whether unsafe assignment should be a warning.

Currently, the CI tests fail because of the GDScript test suite. If the PR gets accepted, we can modify the GDScript tests to accomodate this warning.

In fact, as I wrote in Rocket Chat, I have an outdated branch with a more comprehensive solution. This affects not only resolve_assignable(), but also reduce_assignment(), and the fact that assignment can be combined with another operation (for example +=). Also, this builds on #76020 to avoid making many changes to the tests and allow this warning to be ignored en masse. The main issue I've encountered and put off this PR is the need to refactor DataType to solve the problem with weak inferred types on hard Variants.


Remove workaround & fix fetch$1 is not a function

Remove workaround for https://github.com/rollup/plugins/issues/491
because it's fixed in 15.0
https://github.com/rollup/plugins/blob/master/packages/commonjs/CHANGELOG.md#v1500.
Also fix fetch$1 is not a function error
https://github.com/rust-analyzer/rust-analyzer/issues/6757.

Thanks for looking into this!
bors r+

Happy to contribute.

I'm now getting this issue again, on nightly, after the workaround has been removed:


vim: unpin from old lua 5.1

This pin was added in 2014 during a lua upgrade, but it appears vim today builds
fine with lua 5.2, so we can have it just depend on the lua package.
Motivation for this change
Noticed while building that lua 5.1 is broken (https://github.com/NixOS/nixpkgs/pull/40748) so I tried just using lua.  Seems to work fine.
Things done
I'm not sure why callPackage wasn't sufficeint to pass this a lua, but with the inherit it's clearly picking up the unpinned lua package as intended
...
configure flags: --prefix=/nix/store/xpafpgylq737q5rrz16zsycq1k3r71r1-vim_configurable-8.0.1655 --with-lua-prefix=/nix/store/8v6cpmd211q4z0maxna8fqykfxpfaar5-lua-5.2.3 --enable-luainterp ...

[X] Tested using sandboxing (nix.useSandbox on NixOS, or option build-use-sandbox in nix.conf on non-NixOS)
Built on platform(s)

[X] NixOS
[ ] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nox --run "nox-review wip"
[X] Tested execution of all binary files (usually in ./result/bin/)
[X] Fits CONTRIBUTING.md.

Success on aarch64-linux (full log)
Attempted: vim
Partial log (click to expand)
these paths will be fetched (6.16 MiB download, 29.63 MiB unpacked):
  /nix/store/c6v5p3ids1jxpnm8lv4k5w259ikrrz0q-vim-8.0.1655
copying path '/nix/store/c6v5p3ids1jxpnm8lv4k5w259ikrrz0q-vim-8.0.1655' from 'https://cache.nixos.org'...
/nix/store/c6v5p3ids1jxpnm8lv4k5w259ikrrz0q-vim-8.0.1655

Success on x86_64-linux (full log)
Attempted: vim
Partial log (click to expand)
/nix/store/0160rh26xg2fl2vc8af5shq198a2gkgc-vim-8.0.1655

Success on x86_64-linux (full log)
Attempted: vim_configurable
Partial log (click to expand)
/nix/store/xpafpgylq737q5rrz16zsycq1k3r71r1-vim_configurable-8.0.1655/share/vim/vim80/tools/demoserver.py: interpreter directive changed from "/usr/bin/python" to "/nix/store/l9j2jsc9flrbmpf799nw9wdq59gpwms8-python-2.7.14/bin/python"
basename: invalid option -- 'w'
Try 'basename --help' for more information.
/nix/store/xpafpgylq737q5rrz16zsycq1k3r71r1-vim_configurable-8.0.1655/share/vim/vim80/tools/ref: interpreter directive changed from "/bin/sh" to "/nix/store/xn5gv3lpfy91yvfy9b0i7klfcxh9xskz-bash-4.4-p19/bin/sh"
/nix/store/xpafpgylq737q5rrz16zsycq1k3r71r1-vim_configurable-8.0.1655/share/vim/vim80/tools/vimm: interpreter directive changed from "/bin/sh" to "/nix/store/xn5gv3lpfy91yvfy9b0i7klfcxh9xskz-bash-4.4-p19/bin/sh"
/nix/store/xpafpgylq737q5rrz16zsycq1k3r71r1-vim_configurable-8.0.1655/share/vim/vim80/tools/vimspell.sh: interpreter directive changed from "/bin/sh" to "/nix/store/xn5gv3lpfy91yvfy9b0i7klfcxh9xskz-bash-4.4-p19/bin/sh"
/nix/store/xpafpgylq737q5rrz16zsycq1k3r71r1-vim_configurable-8.0.1655/bin/vimtutor: interpreter directive changed from " /bin/sh" to "/nix/store/xn5gv3lpfy91yvfy9b0i7klfcxh9xskz-bash-4.4-p19/bin/sh"
/nix/store/xpafpgylq737q5rrz16zsycq1k3r71r1-vim_configurable-8.0.1655/bin/gvimtutor: interpreter directive changed from "/bin/sh" to "/nix/store/xn5gv3lpfy91yvfy9b0i7klfcxh9xskz-bash-4.4-p19/bin/sh"
checking for references to /build in /nix/store/xpafpgylq737q5rrz16zsycq1k3r71r1-vim_configurable-8.0.1655...
/nix/store/xpafpgylq737q5rrz16zsycq1k3r71r1-vim_configurable-8.0.1655

Success on aarch64-linux (full log)
Attempted: vim_configurable
Partial log (click to expand)
/nix/store/j5lbb5d2vs8za9xc9vck3phak0vp6yvg-vim_configurable-8.0.1655/bin/vimtutor: interpreter directive changed from " /bin/sh" to "/nix/store/l4w7xwjy2nmk31fl5kgyy7gg8z7l9n8z-bash-4.4-p19/bin/sh"
/nix/store/j5lbb5d2vs8za9xc9vck3phak0vp6yvg-vim_configurable-8.0.1655/share/vim/vim80/tools/vimspell.sh: interpreter directive changed from "/bin/sh" to "/nix/store/l4w7xwjy2nmk31fl5kgyy7gg8z7l9n8z-bash-4.4-p19/bin/sh"
/nix/store/j5lbb5d2vs8za9xc9vck3phak0vp6yvg-vim_configurable-8.0.1655/share/vim/vim80/tools/vimm: interpreter directive changed from "/bin/sh" to "/nix/store/l4w7xwjy2nmk31fl5kgyy7gg8z7l9n8z-bash-4.4-p19/bin/sh"
/nix/store/j5lbb5d2vs8za9xc9vck3phak0vp6yvg-vim_configurable-8.0.1655/share/vim/vim80/tools/ref: interpreter directive changed from "/bin/sh" to "/nix/store/l4w7xwjy2nmk31fl5kgyy7gg8z7l9n8z-bash-4.4-p19/bin/sh"
basename: invalid option -- 'w'
Try 'basename --help' for more information.
/nix/store/j5lbb5d2vs8za9xc9vck3phak0vp6yvg-vim_configurable-8.0.1655/share/vim/vim80/tools/demoserver.py: interpreter directive changed from "/usr/bin/python" to "/nix/store/vhz9s1dzzbndz032dysnixj8mxyfl30s-python-2.7.14/bin/python"
/nix/store/j5lbb5d2vs8za9xc9vck3phak0vp6yvg-vim_configurable-8.0.1655/share/vim/vim80/macros/less.sh: interpreter directive changed from "/bin/sh" to "/nix/store/l4w7xwjy2nmk31fl5kgyy7gg8z7l9n8z-bash-4.4-p19/bin/sh"
checking for references to /build in /nix/store/j5lbb5d2vs8za9xc9vck3phak0vp6yvg-vim_configurable-8.0.1655...
/nix/store/j5lbb5d2vs8za9xc9vck3phak0vp6yvg-vim_configurable-8.0.1655

let's check the Darwin build
@GrahamcOfBorg build vim_configurable

Success on x86_64-darwin (full log)
Attempted: vim_configurable
Partial log (click to expand)
patching script interpreter paths in /nix/store/qyxnvzj369jjg52si560qpr1la65j27s-vim_configurable-8.1.0001
/nix/store/qyxnvzj369jjg52si560qpr1la65j27s-vim_configurable-8.1.0001/bin/vimtutor: interpreter directive changed from " /bin/sh" to "/nix/store/r8bx3qf1bpncb14i9gzma4vr089pc3pv-bash-4.4-p19/bin/sh"
/nix/store/qyxnvzj369jjg52si560qpr1la65j27s-vim_configurable-8.1.0001/share/vim/vim81/tools/ref: interpreter directive changed from "/bin/sh" to "/nix/store/r8bx3qf1bpncb14i9gzma4vr089pc3pv-bash-4.4-p19/bin/sh"
basename: invalid option -- 'w'
Try 'basename --help' for more information.
/nix/store/qyxnvzj369jjg52si560qpr1la65j27s-vim_configurable-8.1.0001/share/vim/vim81/tools/vimm: interpreter directive changed from "/bin/sh" to "/nix/store/r8bx3qf1bpncb14i9gzma4vr089pc3pv-bash-4.4-p19/bin/sh"
/nix/store/qyxnvzj369jjg52si560qpr1la65j27s-vim_configurable-8.1.0001/share/vim/vim81/tools/demoserver.py: interpreter directive changed from "/usr/bin/python" to "/nix/store/10f4qxb00wk9j6cicd9h1qzwqgnc36ji-python-2.7.14/bin/python"
/nix/store/qyxnvzj369jjg52si560qpr1la65j27s-vim_configurable-8.1.0001/share/vim/vim81/tools/vimspell.sh: interpreter directive changed from "/bin/sh" to "/nix/store/r8bx3qf1bpncb14i9gzma4vr089pc3pv-bash-4.4-p19/bin/sh"
/nix/store/qyxnvzj369jjg52si560qpr1la65j27s-vim_configurable-8.1.0001/share/vim/vim81/macros/less.sh: interpreter directive changed from "/bin/sh" to "/nix/store/r8bx3qf1bpncb14i9gzma4vr089pc3pv-bash-4.4-p19/bin/sh"
/nix/store/qyxnvzj369jjg52si560qpr1la65j27s-vim_configurable-8.1.0001

Success on x86_64-linux (full log)
Attempted: vim_configurable
Partial log (click to expand)
/nix/store/fvp39r3dk1b0574b2kxfzglxrp9yvdjn-vim_configurable-8.1.0001/share/vim/vim81/tools/demoserver.py: interpreter directive changed from "/usr/bin/python" to "/nix/store/l9j2jsc9flrbmpf799nw9wdq59gpwms8-python-2.7.14/bin/python"
basename: invalid option -- 'w'
Try 'basename --help' for more information.
/nix/store/fvp39r3dk1b0574b2kxfzglxrp9yvdjn-vim_configurable-8.1.0001/share/vim/vim81/tools/ref: interpreter directive changed from "/bin/sh" to "/nix/store/xn5gv3lpfy91yvfy9b0i7klfcxh9xskz-bash-4.4-p19/bin/sh"
/nix/store/fvp39r3dk1b0574b2kxfzglxrp9yvdjn-vim_configurable-8.1.0001/share/vim/vim81/tools/vimm: interpreter directive changed from "/bin/sh" to "/nix/store/xn5gv3lpfy91yvfy9b0i7klfcxh9xskz-bash-4.4-p19/bin/sh"
/nix/store/fvp39r3dk1b0574b2kxfzglxrp9yvdjn-vim_configurable-8.1.0001/share/vim/vim81/tools/vimspell.sh: interpreter directive changed from "/bin/sh" to "/nix/store/xn5gv3lpfy91yvfy9b0i7klfcxh9xskz-bash-4.4-p19/bin/sh"
/nix/store/fvp39r3dk1b0574b2kxfzglxrp9yvdjn-vim_configurable-8.1.0001/bin/vimtutor: interpreter directive changed from " /bin/sh" to "/nix/store/xn5gv3lpfy91yvfy9b0i7klfcxh9xskz-bash-4.4-p19/bin/sh"
/nix/store/fvp39r3dk1b0574b2kxfzglxrp9yvdjn-vim_configurable-8.1.0001/bin/gvimtutor: interpreter directive changed from "/bin/sh" to "/nix/store/xn5gv3lpfy91yvfy9b0i7klfcxh9xskz-bash-4.4-p19/bin/sh"
checking for references to /build in /nix/store/fvp39r3dk1b0574b2kxfzglxrp9yvdjn-vim_configurable-8.1.0001...
/nix/store/fvp39r3dk1b0574b2kxfzglxrp9yvdjn-vim_configurable-8.1.0001

Success on aarch64-linux (full log)
Attempted: vim_configurable
Partial log (click to expand)
/nix/store/grrjf4m0vimccj1sxk4x7y3rld8psy8k-vim_configurable-8.1.0001/bin/vimtutor: interpreter directive changed from " /bin/sh" to "/nix/store/l4w7xwjy2nmk31fl5kgyy7gg8z7l9n8z-bash-4.4-p19/bin/sh"
/nix/store/grrjf4m0vimccj1sxk4x7y3rld8psy8k-vim_configurable-8.1.0001/share/vim/vim81/tools/vimspell.sh: interpreter directive changed from "/bin/sh" to "/nix/store/l4w7xwjy2nmk31fl5kgyy7gg8z7l9n8z-bash-4.4-p19/bin/sh"
/nix/store/grrjf4m0vimccj1sxk4x7y3rld8psy8k-vim_configurable-8.1.0001/share/vim/vim81/tools/vimm: interpreter directive changed from "/bin/sh" to "/nix/store/l4w7xwjy2nmk31fl5kgyy7gg8z7l9n8z-bash-4.4-p19/bin/sh"
/nix/store/grrjf4m0vimccj1sxk4x7y3rld8psy8k-vim_configurable-8.1.0001/share/vim/vim81/tools/ref: interpreter directive changed from "/bin/sh" to "/nix/store/l4w7xwjy2nmk31fl5kgyy7gg8z7l9n8z-bash-4.4-p19/bin/sh"
basename: invalid option -- 'w'
Try 'basename --help' for more information.
/nix/store/grrjf4m0vimccj1sxk4x7y3rld8psy8k-vim_configurable-8.1.0001/share/vim/vim81/tools/demoserver.py: interpreter directive changed from "/usr/bin/python" to "/nix/store/vhz9s1dzzbndz032dysnixj8mxyfl30s-python-2.7.14/bin/python"
/nix/store/grrjf4m0vimccj1sxk4x7y3rld8psy8k-vim_configurable-8.1.0001/share/vim/vim81/macros/less.sh: interpreter directive changed from "/bin/sh" to "/nix/store/l4w7xwjy2nmk31fl5kgyy7gg8z7l9n8z-bash-4.4-p19/bin/sh"
checking for references to /build in /nix/store/grrjf4m0vimccj1sxk4x7y3rld8psy8k-vim_configurable-8.1.0001...
/nix/store/grrjf4m0vimccj1sxk4x7y3rld8psy8k-vim_configurable-8.1.0001

This broke vimNox: https://hydra.nixos.org/build/74478042

Thanks @orivej for catching this. The cause seems to be that vimNox is built from a patched source tree for vim 7.3 from 2012 which was never updated and seems to require lua 5.1.
(the resulting package's name is  vim_configurable-8.1.0001 but it actually contains vim 7.3.315).
Unfortuately there's no newer version for the source at the listed URL.
I'll pin vimNox to old lua for now but we should either update it or drop  from nixpkgs. And apparently no one has been interested in this package enough to update it since 2012...

pinned vimNox to lua5_1 in d9bdd77eb59079f1ebefb522325cf117ae575982.


aws-c-io: 0.9.1 -> 0.10.5

Automatic update generated by nixpkgs-update tools. This update was made based on information from https://repology.org/metapackage/aws-c-io/versions.
meta.description for aws-c-io is: "AWS SDK for C module for IO and TLS"
meta.homepage for aws-c-io is: "https://github.com/awslabs/aws-c-io"
meta.changelog for aws-c-io is: ""
Updates performed

Version update

To inspect upstream changes

Release on GitHub

Compare changes on GitHub

Impact

Checks done (click to expand)

built on NixOS

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

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

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

found 0.10.5 with grep in /nix/store/02zgpk6m1zl650h8yqcmn4mwck8f4x7s-aws-c-io-0.10.5

found 0.10.5 in filename of file in /nix/store/02zgpk6m1zl650h8yqcmn4mwck8f4x7s-aws-c-io-0.10.5

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

1 total rebuild path(s)

1 package rebuild(s)

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

First fifty rebuilds by attrpath
aws-c-io

Instructions to test this update (click to expand)

Build yourself:
nix-build -A aws-c-io https://github.com/Kranzes/nixpkgs/archive/c41b5482804746f789df81ea5b9afed531803c14.tar.gz

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/02zgpk6m1zl650h8yqcmn4mwck8f4x7s-aws-c-io-0.10.5
ls -la /nix/store/02zgpk6m1zl650h8yqcmn4mwck8f4x7s-aws-c-io-0.10.5/bin

Pre-merge build results
We have automatically built all packages that will get rebuilt due to
this change.
This gives evidence on whether the upgrade will break dependent packages.
Note sometimes packages show up as failed to build independent of the
change, simply because they are already broken on the target branch.
nixpkgs-review took longer than 45m and timed out

Maintainer pings
cc @orivej for testing.

Result of nixpkgs-review pr 133861 at c41b5482 run on aarch64-linux 1

2 packages marked as broken and skipped:

nixui
ovftool

2 packages failed to build:

aws-c-event-stream
aws-c-io

57 packages skipped due to time constraints:

aws-sdk-cpp
bundix
cabal2nix
cachix
crate2nix
dep2nix
dydisnix
fusionInventory
go2nix
haskellPackages.cabal2nix-unstable
...

Note that build failures may predate this PR, and could be nondeterministic or hardware dependent.
Please exercise your independent judgement. Does something look off? Please file an issue or reach out on IRC.


Search

Using Fuse for fuzzy search. External library but provides weighted and tokenized searching with automatic sorting by match value. Pretty slick. Also debounced in search component.

Current coverage is 14.81% (diff: 0.00%)

Merging #19 into master will decrease coverage by 0.27%

@@             master        #19   diff @@
==========================================
  Files            18         18
  Lines           159        162     +3
  Methods          62         63     +1
  Messages          0          0
  Branches         47         47
==========================================
  Hits             24         24
- Misses          135        138     +3
  Partials          0          0

Powered by Codecov. Last update 91b482a...e02818b


UploadedFileInput Error when modifying or deleting model

When using the UploadedFileInput.On creation, uploaded image is stored successfully, however when modifying the model but not changing the image, or when deleting the model, the following validation error is shown: No file was submitted. Check the encoding type on the form.
The form
class SubjectForm(forms.ModelForm):
    """
    Form to create and edit lesson subjects.
    """

    name = fields.CharField(max_length=100, required=True)
    image = fields.ImageField(
        label="Image",
        widget=UploadedFileInput(attrs={
            'max-size': 1024 * 1024,
        }),
        help_text="Files larger than 1MB are not supported.",
        required=False,
    )

    class Meta:
        model = models.Subject
        fields = ['name', 'image']

The model
class Subject(models.Model):
    """
    A subject being taught.
    """
    name = models.CharField(max_length=100)
    image = models.ImageField(upload_to='subjects/images/', blank=True, null=True)

    def __str__(self):
      return self.name

    class Meta:
      db_table = 'lessons_subject'
      ordering = ('name',)

When debugging, the FormViews form_valid method is not reached.

When modifying the model and changing the image, the error does not occur. This appears to be an issue when editing the model but not adding or changing the image.

Here is an example implementing this: https://django-formset.fly.dev/bootstrap/person (it's contained in the supplied demos of this project).
Maybe I didn't understand your question.

The test app includes the create workflow for creating a Person with an image. The issue occurs on the update and delete workflows. update only works if you reattach the image, submitting with the existing image raises the No file was submitted. Check the encoding type on the form error. delete also does the same.

After a lot of debugging.
To stop this from occurring, if you are loading and updating an Image field, you must use the FileField field from formset.fields. This has an overridden clean method. If you use the default field for models.FileField or models.ImageField then the field is incorrectly marked as changed in the form, which causes the error.
Example
class SubjectForm(forms.ModelForm):
    image = FileField()

    class Meta:
        model = models.Subject
        fields = ['name', 'image']

Note, you don't have to specify the widget as this is specified in FileField.
This may require an update to the documentation to make it clearer.

Now I see what might be the problem. Does your SubjectForm also inherit from formset.utils.FormMixin. This mixin is required to patch some methods. Especially the Django FileField must be handled in a different way, check here for details: https://github.com/jrief/django-formset/blob/e72e58ce8446b1299fb3987879463e573bd66400/formset/utils.py#L168


Table item width putting single characters on new line

There are many places where the last letter/character of text in a table icon is put on a new line.

Is there a way to fix this that I'm not aware of because overtime this small issues becomes very frustrating?

Yes, good point. So far, open theme settings and by going to theme extensions, add the following to CSS extension:
.row.icons-row .icons-container a {
    word-break: normal;
    overflow: hidden;
}

On the next minor bug fixes release, I will add it to the distro.

It will be fixed in version 14.01.


keep github actions up to date with dependabot

is this for the external github actions steps that we use/re-use? awesome!

Yes indeed that is the idea. Was recommended in the docs of the chocolaty one


Loosen dependency on tensorflow-probability

I tracked down https://github.com/maxmahlke/classy/issues/2 to this version requirement. With this package's requirements, the latest 2.x version of tensorflow is installed, but tensorflow-probability is pinned to 0.16.x. tensorflow-probability 0.16 is incompatible with tensorflow 2.12+, but tensorflow-probability 0.20 works fine with a newer tensorflow.

Great, thanks!

Thanks! Could you release a new version of mcfa with the latest changes?

Done!


distance support?

Hi Guys,
I was searching for google maps API and found this. really like Flask_GoogleMaps. Is there any support for Distance Matrix?
Thanks

Not yet, can you give more details, examples etc.. so someone maybe can send us a Pull Request.


Lifting the "Plaquette.shape should all be the same" assumption

The tqec Python package currently works under the assumption that all the Plaquette instances provided when calling the generate_circuit function are of the same shape.
The shape of a  Plaquette instance is currently defined as the coordinates of the lower-right-most qubit, each increased by one, which assumes that qubits are the closest possible to the origin (0, 0). This definition (and how we compute the shape, if we still need to compute it) have to change.
Lifting this assumption will likely require non-trivial changes, I am open to any suggestion.

Provided a plaquette has a nominated qubit that serves as its corner and
this corner can be pinned to a template, it is not clear to me why each
plaquette needs to be the same shape. Fundamentally, a plaquette is just a
human visualization of an underlying quantum circuit, which is the real
thing that is being loaded into the template. In principle, the underlying
quantum circuit could be rather random in structure reaching into qubits
outside any typical square, but provided these quantum gates are compatible
in the sense they are all applied in different non-overlapping time steps,
this shouldn't be an issue.
Thoughts?
On Tue, Jan 9, 2024 at 11:28 PM Adrien Suau @.***>
wrote:

The tqec Python package currently works under the assumption that all the
Plaquette
https://github.com/QCHackers/tqec/blob/f6f29323ebf2544ae576c6866167026adbfa6359/tqec/plaquette/plaquette.py#L10
instances provided when calling the generate_circuit
https://github.com/QCHackers/tqec/blob/f6f29323ebf2544ae576c6866167026adbfa6359/tqec/generation/circuit.py#L11
function are of the same shape.
The shape
https://github.com/QCHackers/tqec/blob/f6f29323ebf2544ae576c6866167026adbfa6359/tqec/plaquette/plaquette.py#L31
of a Plaquette
https://github.com/QCHackers/tqec/blob/f6f29323ebf2544ae576c6866167026adbfa6359/tqec/plaquette/plaquette.py#L10
instance is currently defined as the coordinates of the lower-right-most
qubit, each increased by one, which assumes that qubits are the closest
possible to the origin (0, 0). This definition (and how we compute the
shape, if we still need to compute it) have to change.
Lifting this assumption will likely require non-trivial changes, I am open
to any suggestion.
—
Reply to this email directly, view it on GitHub
https://github.com/QCHackers/tqec/issues/34, or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAKAXTENCIIGY4F6P4FTIKLYNY7I5AVCNFSM6AAAAABBUJYRJOVHI2DSMVQWIX3LMV43ASLTON2WKOZSGA3TGNZWGE3TGNI
.
You are receiving this because you are subscribed to this thread.Message
ID: @.***>

This is an assumption I made when initially writing the code because it seemed simpler to me and allowed me to make some simplifications. The idea was to remove this assumption at one point, when the code was mature enough, and the time as come.
Initially, I made this assumption because it helped in computing the global position of the local coordinate system origin of each plaquette. The computation will likely be a little bit more involved now, but as long as we are able to get the global coordinate of each plaquette "origin", everything should work as expected.
Now, computing this global position in the most general case would require us to re-think the way plaquettes are organised within a template, and how this organisation is encoded. To be as generic as possible, we might have to think about theoretical results on tiling, and how to compute the position of each tile (plaquettes here). This is not something I was feeling confident thinking and taking a decision on alone.
So let's use this issue to think about the way(s) we could store plaquettes in a template, knowing that as soon as we are able, for each plaquette within a template, to compute the global coordinates of at least one of its qubit, the rest should follow quite easily.

Hi Adrien,
One proposal that I think would be fine is for a template to have a central
location on which one of the qubits in a plaquette will be placed. For
example for a standard surface code, there is a natural notion of the
central qubit in each plaquette in a template. The first chosen qubit in
the quantum circuit associated with each plaquette could be coded to go on
this central qubit. You would then only need to check that various quantum
circuits in the plaquettes do indeed fit together.
Does that make sense? Does that seem workable?
Regards,
Austin.
On Wed, Jan 10, 2024 at 2:48 PM Adrien Suau @.***>
wrote:

This is an assumption I made when initially writing the code because it
seemed simpler to me and allowed me to make some simplifications. The idea
was to remove this assumption at one point, when the code was mature
enough, and the time as come.
Initially, I made this assumption because it helped in computing the
global position of the local coordinate system origin of each plaquette.
The computation will likely be a little bit more involved now, but as long
as we are able to get the global coordinate of each plaquette "origin",
everything should work as expected.
Now, computing this global position in the most general case would require
us to re-think the way plaquettes are organised within a template, and how
this organisation is encoded. To be as generic as possible, we might have
to think about theoretical results on tiling, and how to compute the
position of each tile (plaquettes here). This is not something I was
feeling confident thinking and taking a decision on alone.
So let's use this issue to think about the way(s) we could store
plaquettes in a template, knowing that as soon as we are able, for each
plaquette within a template, to compute the global coordinates of at least
one of its qubit, the rest should follow quite easily.
—
Reply to this email directly, view it on GitHub
https://github.com/QCHackers/tqec/issues/34#issuecomment-1885868430, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/AAKAXTDKQN2YKCNE7WC5GLTYN4LEVAVCNFSM6AAAAABBUJYRJOVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTQOBVHA3DQNBTGA
.
You are receiving this because you commented.Message ID:
@.***>

First, a quick summary of the current state of the code.
The Plaquette class does not assume anything about the qubits it is provided with at construction, except that their number should match the requirements of the provided quantum circuit.

[!NOTE]
I just realized that this assumption is not checked at the instance construction. It would make sense to check it directly when constructing the Plaquette instance to provide an early and clear diagnostic of the issue with a nice error message. I will do that soon.

I created a few sub-classes of Plaquette, namely SquarePlaquette and RoundedPlaquette, that do assume some specific qubit placement, but this is done intentionally to provide expressive ways for the user to create some plaquettes that are very common.
Basically, these classes help creating Plaquette instances with less boilerplate, and are only used for this purpose. Any place in the code that performs "computation" on plaquette uses the generic Plaquette class (that does not assume anything on the shape of the plaquette).
Now, there are only 2 places in the code that use the shape information.
First,
https://github.com/QCHackers/tqec/blob/f6f29323ebf2544ae576c6866167026adbfa6359/tqec/generation/circuit.py#L26-L29
that enforce the "all plaquettes should have the same shape" assumption.
Second,
https://github.com/QCHackers/tqec/blob/f6f29323ebf2544ae576c6866167026adbfa6359/tqec/generation/circuit.py#L52-L53
that computes the position of the upper-left corner (that is, by definition, considered as the origin of the local Plaquette coordinate system) of a given Plaquette from:

its shape,
its x and y coordinates on the numpy.ndarray we compute from the scalable template instantiation.

Basically, the assumption was initially made to be able to compute the global position of a Plaquette origin with the trivial function
https://github.com/QCHackers/tqec/blob/f6f29323ebf2544ae576c6866167026adbfa6359/tqec/generation/topology.py#L25-L39
This means that lifting the assumption will likely be easier than what I initially thought.
Now, about your comment.
We basically have several ways of defining what will be considered the origin of the local Plaquette coordinate system:

the first qubit of the Plaquette instance,
the "central" qubit of the Plaquette instance (when "central" is well defined),
a user-defined qubit of the Plaquette instance.

At the time being, the origin of a Plaquette instance is implicitly defined by the coordinates of the qubits provided at the Plaquette instance creation. Basically, the provided qubit coordinates are not changed in any way and are stored as they are provided, assuming that the user placed the qubit as he/she wanted them to appear.
I think any of the 4 solutions (the 3 listed above and the current way of defining the origin) are rather equivalent in terms of usability, so any of the 4 is fine for me.
How to tackle this issue
For anyone wanting to contribute, solving this issue amounts to picking one of the 4 definitions of "origin" for the local Plaquette coordinate system and change
https://github.com/QCHackers/tqec/blob/f6f29323ebf2544ae576c6866167026adbfa6359/tqec/generation/topology.py#L25-L39
along with maybe the place where it is called
https://github.com/QCHackers/tqec/blob/f6f29323ebf2544ae576c6866167026adbfa6359/tqec/generation/circuit.py#L52-L53
Also, as a check you can try to remove all the shape-related methods/properties from the code and see if anything breaks. Below is a list of the places where the shape is defined:
https://github.com/QCHackers/tqec/blob/f6f29323ebf2544ae576c6866167026adbfa6359/tqec/plaquette/plaquette.py#L31-L34
https://github.com/QCHackers/tqec/blob/f6f29323ebf2544ae576c6866167026adbfa6359/tqec/plaquette/library/xxxx.py#L13-L15
https://github.com/QCHackers/tqec/blob/f6f29323ebf2544ae576c6866167026adbfa6359/tqec/plaquette/library/xx.py#L16-L18
https://github.com/QCHackers/tqec/blob/f6f29323ebf2544ae576c6866167026adbfa6359/tqec/plaquette/library/zz.py#L16-L18
https://github.com/QCHackers/tqec/blob/f6f29323ebf2544ae576c6866167026adbfa6359/tqec/plaquette/library/zzzz.py#L15-L17
I might have forgotten a few places, but according to my IDE and my memory, this is it.

As a concrete proposal, a template could be associated with a scale
variable. Under normal circumstances, that scale variable would be
2, meaning that the centers of different neighboring entries in a template
are separated by 2 units of coordinates in both the X and Y directions. If
you then also have a definition of a preferred qubit within a plaquette,
these preferred qubits can go on the central locations of each plaquette
and can then be tested to see whether they form a valid quantum
circuit. Every other qubit in the plaquette would have relative coordinates.
Regards,
Austin.
On Thu, Jan 11, 2024 at 12:47 PM Adrien Suau @.***>
wrote:

First, a quick summary of the current state of the code.
The Plaquette
https://github.com/QCHackers/tqec/blob/f6f29323ebf2544ae576c6866167026adbfa6359/tqec/plaquette/plaquette.py#L10
class does not assume anything about the qubits it is provided with at
construction, except that their number should match the requirements of the
provided quantum circuit.
Note
I just realized that this assumption is not checked at the instance
construction. It would make sense to check it directly when constructing
the Plaquette
https://github.com/QCHackers/tqec/blob/f6f29323ebf2544ae576c6866167026adbfa6359/tqec/plaquette/plaquette.py#L10
instance to provide an early and clear diagnostic of the issue with a nice
error message. I will do that soon.
I created a few sub-classes of Plaquette
https://github.com/QCHackers/tqec/blob/f6f29323ebf2544ae576c6866167026adbfa6359/tqec/plaquette/plaquette.py#L10,
namely SquarePlaquette
https://github.com/QCHackers/tqec/blob/f6f29323ebf2544ae576c6866167026adbfa6359/tqec/plaquette/plaquette.py#L45C7-L45C22
and RoundedPlaquette
https://github.com/QCHackers/tqec/blob/f6f29323ebf2544ae576c6866167026adbfa6359/tqec/plaquette/plaquette.py#L74C7-L74C23,
that do assume some specific qubit placement, but this is done
intentionally to provide expressive ways for the user to create some
plaquettes that are very common.
Basically, these classes help creating Plaquette
https://github.com/QCHackers/tqec/blob/f6f29323ebf2544ae576c6866167026adbfa6359/tqec/plaquette/plaquette.py#L10
instances with less boilerplate, and are only used for this purpose. Any
place in the code that performs "computation" on plaquette uses the generic
Plaquette
https://github.com/QCHackers/tqec/blob/f6f29323ebf2544ae576c6866167026adbfa6359/tqec/plaquette/plaquette.py#L10
class (that does not assume anything on the shape of the plaquette).
Now, there are only 2 places in the code that use the shape information.
First,
https://github.com/QCHackers/tqec/blob/f6f29323ebf2544ae576c6866167026adbfa6359/tqec/generation/circuit.py#L26-L29
that enforce the "all plaquettes should have the same shape" assumption.
Second,
https://github.com/QCHackers/tqec/blob/f6f29323ebf2544ae576c6866167026adbfa6359/tqec/generation/circuit.py#L52-L53
that computes the position of the upper-left corner (that is, by
definition, considered as the origin of the local Plaquette
https://github.com/QCHackers/tqec/blob/f6f29323ebf2544ae576c6866167026adbfa6359/tqec/plaquette/plaquette.py#L10
coordinate system) of a given Plaquette
https://github.com/QCHackers/tqec/blob/f6f29323ebf2544ae576c6866167026adbfa6359/tqec/plaquette/plaquette.py#L10
from:

its shape,
its x and y coordinates on the numpy.ndarray we compute from the
scalable template instantiation.

Basically, the assumption was initially made to be able to compute the
global position of a Plaquette
https://github.com/QCHackers/tqec/blob/f6f29323ebf2544ae576c6866167026adbfa6359/tqec/plaquette/plaquette.py#L10
origin with the trivial function
https://github.com/QCHackers/tqec/blob/f6f29323ebf2544ae576c6866167026adbfa6359/tqec/generation/topology.py#L25-L39
This means that lifting the assumption will likely be easier than what I
initially thought.
Now, about your comment.
We basically have several ways of defining what will be considered the
origin of the local Plaquette
https://github.com/QCHackers/tqec/blob/f6f29323ebf2544ae576c6866167026adbfa6359/tqec/plaquette/plaquette.py#L10
coordinate system:

the first qubit of the Plaquette
https://github.com/QCHackers/tqec/blob/f6f29323ebf2544ae576c6866167026adbfa6359/tqec/plaquette/plaquette.py#L10
instance,
the "central" qubit of the Plaquette
https://github.com/QCHackers/tqec/blob/f6f29323ebf2544ae576c6866167026adbfa6359/tqec/plaquette/plaquette.py#L10
instance (when "central" is well defined),
a user-defined qubit of the Plaquette
https://github.com/QCHackers/tqec/blob/f6f29323ebf2544ae576c6866167026adbfa6359/tqec/plaquette/plaquette.py#L10
instance.

At the time being, the origin of a Plaquette
https://github.com/QCHackers/tqec/blob/f6f29323ebf2544ae576c6866167026adbfa6359/tqec/plaquette/plaquette.py#L10
instance is implicitly defined by the coordinates of the qubits provided at
the Plaquette
https://github.com/QCHackers/tqec/blob/f6f29323ebf2544ae576c6866167026adbfa6359/tqec/plaquette/plaquette.py#L10
instance creation. Basically, the provided qubit coordinates are not
changed in any way and are stored as they are provided, assuming that the
user placed the qubit as he/she wanted them to appear.
I think any of the 4 solutions (the 3 listed above and the current way of
defining the origin) are rather equivalent in terms of usability, so any of
the 4 is fine for me.
How to tackle this issue
For anyone wanting to contribute, solving this issue amounts to picking
one of the 4 definitions of "origin" for the local Plaquette
https://github.com/QCHackers/tqec/blob/f6f29323ebf2544ae576c6866167026adbfa6359/tqec/plaquette/plaquette.py#L10
coordinate system and change
https://github.com/QCHackers/tqec/blob/f6f29323ebf2544ae576c6866167026adbfa6359/tqec/generation/topology.py#L25-L39
along with maybe the place where it is called
https://github.com/QCHackers/tqec/blob/f6f29323ebf2544ae576c6866167026adbfa6359/tqec/generation/circuit.py#L52-L53
Also, as a check you can try to remove all the shape-related
methods/properties from the code and see if anything breaks. Below is a
list of the places where the shape is defined:
https://github.com/QCHackers/tqec/blob/f6f29323ebf2544ae576c6866167026adbfa6359/tqec/plaquette/plaquette.py#L31-L34
https://github.com/QCHackers/tqec/blob/f6f29323ebf2544ae576c6866167026adbfa6359/tqec/plaquette/library/xxxx.py#L13-L15
https://github.com/QCHackers/tqec/blob/f6f29323ebf2544ae576c6866167026adbfa6359/tqec/plaquette/library/xx.py#L16-L18
https://github.com/QCHackers/tqec/blob/f6f29323ebf2544ae576c6866167026adbfa6359/tqec/plaquette/library/zz.py#L16-L18
https://github.com/QCHackers/tqec/blob/f6f29323ebf2544ae576c6866167026adbfa6359/tqec/plaquette/library/zzzz.py#L15-L17
I might have forgotten a few places, but according to my IDE and my
memory, this is it.
—
Reply to this email directly, view it on GitHub
https://github.com/QCHackers/tqec/issues/34#issuecomment-1887937598, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/AAKAXTHCLKIQDLBPZRIGASTYOBFXJAVCNFSM6AAAAABBUJYRJOVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTQOBXHEZTONJZHA
.
You are receiving this because you commented.Message ID:
@.***>

I could have a look at this. From @afowler 's last comment, I'm a little confused, though. As far as I understand, the template doesn't need the information of the plaquette. @nelimee can you confirm? I think Austins comment would then be separate issue?

+1 to Adrien's explanation.
On Wed, Jan 24, 2024 at 9:32 AM Adrien Suau @.***>
wrote:

@Gistbatch https://github.com/Gistbatch I will be able to make a more
detailed answer tomorrow if needed.
The template does not need any information on the plaquette, and the
plaquette does not need any information on the template either. But at one
point, we need both information to compute the qubits we should apply the
plaquette's circuit to.
I think we will have to compute, once all the information is available,
the global position of the upper-left corner of each plaquette (like what
is currently done for templates on the orchestrator, but for each plaquette
this time).
The plaquette basically need to store whatever information is sufficient
to perform the above computation.
—
Reply to this email directly, view it on GitHub
https://github.com/QCHackers/tqec/issues/34#issuecomment-1908607179, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/AAKAXTCLJTBH7VJD245JB6DYQFAR3AVCNFSM6AAAAABBUJYRJOVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTSMBYGYYDOMJXHE
.
You are receiving this because you were mentioned.Message ID:
@.***>

I think we can restrict ourselves to rectangular plaquettes.
More complex tiling would need to also be reflected in the Template and TemplateOrchestrator classes, and we would need to represent scaled templates with something more complex than a 2-dimensional array of numbers. For the moment, I think implementing that kind of thing is a "high cost, low reward" situation as it would require to refactor most of the code and we do not need such generality for the moment.
The 0 plaquette issue seems challenging. In my opinion, we should try to solve it with cross-template information sharing. Let's take the following example to illustrate what I mean by that.

In the above image, we want the 0 plaquette that is on the same Template as the 1 plaquette to have:

the x dimension of the 3 plaquette,
the y dimension of the 1 plaquette.

Getting the y dimension is simple in this case, but the x dimension requires to be able to query the neighbouring plaquette. I think this can be done quite easily by adding a few query methods (get_neighbour(direction: Direction) -> int for example) to the TemplateOrchestrator and using them for 0 plaquettes.
Another solution is to look at the problem the other way around: instead of trying to compute the shape of 0 plaquettes, we try to position non-0 plaquettes using their neighbours. In the image above, this would translate in "trying to position 1 by using the already computed position of 4".
I prefer this solution as not all 0 plaquettes have a non-zero neighbour (the top-right corner of the above image is filled with 0 plaquettes).
Nevertheless, both solutions impose some restrictions on the dimension of neighbouring plaquettes, and we do not want that in the case we try to implement.

Thinking about it and the options we have, I think the solution given by @afowler in penultimate message is the way to go. Basically, we add 2 parameters to tqec.generation.circuit.generate_circuit:

x_increment that is an integer and that represent the number of units in the x direction between each plaquette local origin and,
y_increment that is an integer and that represent the number of units in the y direction between each plaquette local origin.

def generate_circuit(
    template: TemplateOrchestrator,
    plaquettes: list[Plaquette],
    x_increment: int = 2,
    y_increment: int = 2,
) -> cirq.Circuit:

With that information, locating the plaquette becomes trivial.
We might have to ensure that all the plaquette qubits have positive coordinates in the plaquette local coordinate system to avoid negative coordinates at the edges of the QEC, but with that condition everything should be quite easy to compute.

Hi Adrien,
In your example I see templates that are neither 2kx2k nor 1x2k. There are
some 1x2 and 2x2 templates. Can these all be made 1x1? What is their
purpose. Also, shouldn't all plaquettes, 0 or otherwise, have the same
dimensions?
Best,
Austin.
On Thu, Jan 25, 2024 at 8:24 AM Adrien Suau @.***>
wrote:

I think we can restrict ourselves to rectangular plaquettes.
More complex tiling would need to also be reflected in the Template and
TemplateOrchestrator classes, and we would need to represent scaled
templates with something more complex than a 2-dimensional array of
numbers. For the moment, I think implementing that kind of thing is a "high
cost, low reward" situation as it would require to refactor most of the
code and we do not need such generality for the moment.
The 0 plaquette issue seems challenging. In my opinion, we should try to
solve it with cross-template information sharing. Let's take the following
example to illustrate what I mean by that.
image.png (view on web)
https://github.com/QCHackers/tqec/assets/12374487/662fb5f2-b0c2-466d-aaa5-2dce4ea5efbf
In the above image, we want the 0 plaquette that is on the same Template
as the 1 plaquette to have:

the x dimension of the 3 plaquette,
the y dimension of the 1 plaquette.

Getting the y dimension is simple in this case, but the x dimension
requires to be able to query the neighbouring plaquette. I think this can
be done quite easily by adding a few query methods (get_neighbour(direction:
Direction) -> int for example) to the TemplateOrchestrator and using them
for 0 plaquettes.
Another solution is to look at the problem the other way around: instead
of trying to compute the shape of 0 plaquettes, we try to position non-0
plaquettes using their neighbours. In the image above, this would translate
in "trying to position 1 by using the already computed position of 4".
I prefer this solution as not all 0 plaquettes have a non-zero neighbour
(the top-right corner of the above image is filled with 0 plaquettes).
Nevertheless, both solutions impose some restrictions on the dimension of
neighbouring plaquettes, and we do not want that in the case we try to
implement.
—
Reply to this email directly, view it on GitHub
https://github.com/QCHackers/tqec/issues/34#issuecomment-1910547737, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/AAKAXTATFUWVDMK24GVXU53YQKBKJAVCNFSM6AAAAABBUJYRJOVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTSMJQGU2DONZTG4
.
You are receiving this because you were mentioned.Message ID:
@.***>

Hi,
Yes these are relicates from before the corner pinning method to organise templates and that I never tried to change because the implementation was working as expected and produced correct results.
They can be changed to 1x1 without any issue. I will do that on Monday.


Error - zero dimension

Hello,
I get the following error after following the manual for a single-cell dataset I'm working with.
data_obj = featureConstruct(normalized,method = "SelfProjection")
Error in cor(fpkm_for_clust0, method = "pearson") :
'x' has a zero dimension
Why does it happen and how can I solve this?
Thanks, A

Also I get this error:
Error in cor(fpkm_temp, method = "pearson") :
Missing values present in input variable 'x'. Consider using use = 'pairwise.complete.obs'.
Any idea?
Thank you.

Dear Asmagen,
Have you followed the gene name requirement as stated in the manual?
#########################################################################
Input data:
A data frame of expression values (FPKM, TPM, UMI counts ...), with rows representing genes and columns representing cells. Note the current version of RCA only accepts gene names in the following format: "GenomeLocation_HGNCGeneName_EnsembleID", from which the "HGNCGeneName" is extracted for RCA analysis. For input data with only HGNC names, the users need to attach two strings to the HGNC names to make them into the "XXXX_HGNCGeneNames_YYYY" format"
#########################################################################

So for gene symbol ‘BRCA1’ I need to use ‘XXXX_BRCA1_YYYY’?

On Apr 18, 2017, at 11:37 PM, GIS-SP-Group<EMAIL_ADDRESS>wrote:
XXXX_HGNCGeneNames_YYYY

Correct. Sorry for the inconvenience and we will improve this in the next version.
Huipeng

The same issue still occurs. It doesn't have to do anything with the gene names. What can be done about it?

Asmagen,
Wonder if you followed the procedure in Vignettes.
Please paste your script here.
Huipeng

library(RCA)
construct data object
rownames(dataset$counts) = sapply(rownames(dataset$counts),function(v) paste('XXXX',v,'YYYY',sep='_'))
data_obj = dataConstruct(dataset$counts);
filt out lowly expressed genes
data_obj = geneFilt(obj_in = data_obj);
normalize gene expression data
data_obj = cellNormalize(data_obj,method='scQ');
log transform the data
normalized = dataTransform(data_obj,"log10");
project the expression data into Reference Component space
data_obj = featureConstruct(normalized,method = "SelfProjection")
generate cell clusters
data_obj = cellClust(data_obj,method="hclust",deepSplit_wgcna=environment$cluster.param2,min_group_Size_wgcna=2)
cluster.association = data_obj$group_labels_color$groupLabel

Hi, Asmagen,
Could you provide the table of "normalized$fpkm_transformed" via email? It seems that the "featureConstruct" failed to select any features.
Huipeng

It’s unpublished data so I can’t. It doesn’t make much sense that the issue is specific to my dataset also.

On Apr 23, 2017, at 7:25 PM, GIS-SP-Group<EMAIL_ADDRESS>wrote:
Hi, Asmagen,
Could you provide the table of "normalized$fpkm_transformed" via email? It seems that the "featureConstruct" failed to select any features.
Huipeng
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub https://github.com/GIS-SP-Group/RCA/issues/2#issuecomment-296510307, or mute the thread https://github.com/notifications/unsubscribe-auth/AKxq8FgS0IzPG-WkjeEP9lWuQdLXoo3Hks5rzAgWgaJpZM4NAlE6.

Ok, since your script works well on our data set, this issue is likely specific to your data set.
Let me know if you are ok with sharing the following information, which might help us to figure out what's going on.
dim(normalized$fpkm_raw)
dim(normalized$fpkm)
sum(normalized$geneFilter)
dim(normalized$fpkm_transformed)
max(normalized$fpkm_transformed)
min(normalized$fpkm_transformed)

Sure.

dim(normalized$fpkm_raw)
[1] 14919  1441
dim(normalized$fpkm)
[1] 13389  1441
sum(normalized$geneFilter)
[1] 13389
dim(normalized$fpkm_transformed)
[1] 7724 1441
max(normalized$fpkm_transformed)
[1] 2.045323
min(normalized$fpkm_transformed)
[1] 0

On Apr 23, 2017, at 8:00 PM, GIS-SP-Group<EMAIL_ADDRESS>wrote:
Ok, since your script works well on our data set, this issue is likely specific to your data set.
Let me know if you are ok with sharing the following information, which might help us to figure out what's going on.
dim(normalized$fpkm_raw)
dim(normalized$fpkm)
sum(normalized$geneFilter)
dim(normalized$fpkm_transformed)
max(normalized$fpkm_transformed)
min(normalized$fpkm_transformed)
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub https://github.com/GIS-SP-Group/RCA/issues/2#issuecomment-296513823, or mute the thread https://github.com/notifications/unsubscribe-auth/AKxq8DpI_GuTIVe5__9I7x_99QpkAV5Eks5rzBAygaJpZM4NAlE6.

Any news?

Dear Asmegen,
My guess is that the size of your matrix is not compatible with some hard-coded parameters in the package. We need to explore more for a solid answer though.
You could try to run the package with a randomly chosen subset (~500 cells) and see if the problem still exists.
H

Hello,
It works when I select random 500 cells, which is a very small number in comparison to the recent ScRNA-Seq technologies. The code has hard coded parameters that relate to the matrix size? How can it be resolved asap?
Thanks, A

Hi, Asmagen,
We have tested our package on many data sets available on our side and it seems to work fine. We are indeed optimize the package and will release the next version in the next couple of months.
But to have a quick solution for you, we really need something to mimic the difficulty you encountered. We don't need to see your full raw data set. But if you could generate a fake set that could be representative of the original one, that would be great.
Let me know how you think.
H

Hi, Asmagen,
We have tested our package on many data sets available on our side and it seems to work fine. We are indeed optimize the package and will release the next version in the next couple of months.
But to have a quick solution for you, we really need something to mimic the difficulty you encountered. We don't need to see your full raw data set. But if you could generate a fake set that could be representative of the original one, that would be great.
Let me know how you think.
H

Attached a subset of the 3k pbmcs published as an example of the Seurat package. The RCA method didn't work for this public dataset as well. Please let me know what's the status when you have news.
example.data.RData.zip

Hello,
What's the status?
Thanks, A

Hi, two guys.
Dose the problem have been solved ?
I also get the same error,and my data produced from 10X genomics single cell cellranger pipeline. The data frame of expression values is  UMI counts, with rows representing genes and columns representing cells. And gene names is changed to the following format: "GenomeLocation_HGNCGeneName_EnsembleID" .The error info :
data_obj = featureConstruct(normalized,method = "SelfProjection")
Error in cor(fpkm_for_clust0, method = "pearson") :
'x' has a zero dimension
Thank you very much!
Frank

Dear all,
We have been testing the performance of RCA on multiple datasets on our side. For data sets from dropseq protocol, since they are usually under shallow sequencing, some of the cells might have very few expressed genes (FPKM or UMI count >0). This will cause some problem of RCA.
So when running RCA for large data sets, please do a preliminary QC to filter out bad quality cells (with sum(FPKM>0) <=1000 or sum(FPKM>0)<=500, the same of UMI count data).
Please let me know if more stringent QC would solve the problem.
best
Huipeng


Loss = nan when training

When I  trained on the coco dataset, I met this problem, and I don't  know how to solve this. I have tried to reduce the learning rate but this problem also happened, could you please give me some advice on it?

Hello!
We noted this problem, but this should not give any error since the batch is discarded when the loss is NaN.
If you found issues in training, please let me know.
Best.
Fabio