Unable to get the display working on a Lilygo Display S3 device

Hi, I have a Lilygo Display S3, and I'm trying to run your esp32s3_usb_otg example in it, it runs fine, however, the display part is not working, (it compiles fine but nothing shows on the screen, it is all black) https://github.com/ivmarkov/rust-esp32-std-demo/blob/50ab64ed4bf51f02807864458e096c595b94cc1c/src/main.rs#L1045-L1071, I have tried to re-map the pins but no success, any idea of what I could be doing wrong?

Lower the frequency to 40Mhz or even less
Again check your SPI wiring. A common mistake is that MISO and MOSI so try to swap them
Make sure that your display is powered

By the way, these questions belong to the forum - you might want to join it.

Oh, I did not realize that your board has the LCD hard-wired, so you cannot confuse the wirings. Besides the frequency advise which is still valid, are you sure you are using the right SPI, and the right pins?

Im not sure if I wired the pin correctly, I don't really know which pin corresponds to sclk and sdo I think I can only say "confidently" that these are correct: BL, CS, DC and RES

For the other 2 I have tried a combination of various other pins but none seems to work, Only the backlight lights on...

This is what I have currently:
fn main() -> anyhow::Result<()> {
    esp_idf_sys::link_patches();

    let peripherals = Peripherals::take().unwrap();

    let backlight = peripherals.pins.gpio38;
    let dc = peripherals.pins.gpio7;
    let rst = peripherals.pins.gpio5;
    let cs = peripherals.pins.gpio6;
    let spi = peripherals.spi2;

    let sclk = peripherals.pins.gpio12; // these 2 pins doesn't seem to be marked on the pin diagram of my board :(
    let sdo = peripherals.pins.gpio13;

    let mut backlight = PinDriver::input_output_od(backlight)?;
    backlight.set_high()?;

    let di = SPIInterfaceNoCS::new(
        spi::SpiDeviceDriver::new_single(
            spi,
            sclk,
            sdo,
            Option::<gpio::AnyIOPin>::None,
            Some(cs),
            &spi::SpiDriverConfig::new().dma(spi::Dma::Disabled),
            &spi::SpiConfig::new().baudrate(40.MHz().into()),
        )?,
        gpio::PinDriver::output(dc)?,
    );

    let mut display = mipidsi::Builder::st7789(di)
        .init(&mut delay::Ets, Some(gpio::PinDriver::output(rst)?))
        .map_err(|e| anyhow::anyhow!("Display error: {:?}", e))?;

    display
        .clear(RgbColor::RED)
        .map_err(|e| anyhow::anyhow!("Display error: {:?}", e))?;

    loop {
    }
}

If you look at the picture, and what is written here, this board is not using SPI at all, but I8080 (parallel IO) instead.

Closing. Feel free to open an issue for support for I8080 in esp-idf-hal. Ot better yet - contribute a PR for it.

Ah okay, I see so the examples on this project are not applicable .. okay I will try to figure out what to do, first time touching microcontrollers so I'm not really familiar with any of the terms yet..

Hi thanks for the tip, I was able to figure it out after you mentioned that my board uses parallel io here was the solution:
fn main() -> anyhow::Result<()> {
    esp_idf_sys::link_patches();

    let peripherals = Peripherals::take().unwrap();

    let mut backlight = PinDriver::output(peripherals.pins.gpio38)?;
    let dc = PinDriver::output(peripherals.pins.gpio7)?;
    let mut cs = PinDriver::output(peripherals.pins.gpio6)?;
    let mut rst = PinDriver::output(peripherals.pins.gpio5)?;
    let wr = PinDriver::output(peripherals.pins.gpio8)?;
    let mut rd = PinDriver::output(peripherals.pins.gpio9)?;

    backlight.set_high()?;

    // set to low to enable display
    cs.set_low()?;

    // set to high when not in use
    rd.set_high()?;

    let mut d0 = PinDriver::output(peripherals.pins.gpio39)?;
    let mut d1 = PinDriver::output(peripherals.pins.gpio40)?;
    let mut d2 = PinDriver::output(peripherals.pins.gpio41)?;
    let mut d3 = PinDriver::output(peripherals.pins.gpio42)?;
    let mut d4 = PinDriver::output(peripherals.pins.gpio45)?;
    let mut d5 = PinDriver::output(peripherals.pins.gpio46)?;
    let mut d6 = PinDriver::output(peripherals.pins.gpio47)?;
    let mut d7 = PinDriver::output(peripherals.pins.gpio48)?;

    let bus = Generic8BitBus::new((d0, d1, d2, d3, d4, d5, d6, d7))
        .map_err(|e| anyhow::anyhow!("Display error: {:?}", e))?;

    let di = PGPIO8BitInterface::new(bus, dc, wr);

    let mut display = mipidsi::Builder::st7789(di)
        .with_display_size(170, 320)
        .with_invert_colors(ColorInversion::Inverted)
        .init(&mut delay::FreeRtos, Some(rst))
        .map_err(|e| anyhow::anyhow!("Display error: {:?}", e))?;

    display.clear(RgbColor::RED)
        .map_err(|e| anyhow::anyhow!("Display error: {:?}", e))?;

    loop {

    }
}

I joined the matrix chat!

Hi thanks for the tip, I was able to figure it out after you mentioned that my board uses parallel io here was the solution:
fn main() -> anyhow::Result<()> {
    esp_idf_sys::link_patches();

    let peripherals = Peripherals::take().unwrap();

    let mut backlight = PinDriver::output(peripherals.pins.gpio38)?;
    let dc = PinDriver::output(peripherals.pins.gpio7)?;
    let mut cs = PinDriver::output(peripherals.pins.gpio6)?;
    let mut rst = PinDriver::output(peripherals.pins.gpio5)?;
    let wr = PinDriver::output(peripherals.pins.gpio8)?;
    let mut rd = PinDriver::output(peripherals.pins.gpio9)?;

    backlight.set_high()?;

    // set to low to enable display
    cs.set_low()?;

    // set to high when not in use
    rd.set_high()?;

    let mut d0 = PinDriver::output(peripherals.pins.gpio39)?;
    let mut d1 = PinDriver::output(peripherals.pins.gpio40)?;
    let mut d2 = PinDriver::output(peripherals.pins.gpio41)?;
    let mut d3 = PinDriver::output(peripherals.pins.gpio42)?;
    let mut d4 = PinDriver::output(peripherals.pins.gpio45)?;
    let mut d5 = PinDriver::output(peripherals.pins.gpio46)?;
    let mut d6 = PinDriver::output(peripherals.pins.gpio47)?;
    let mut d7 = PinDriver::output(peripherals.pins.gpio48)?;

    let bus = Generic8BitBus::new((d0, d1, d2, d3, d4, d5, d6, d7))
        .map_err(|e| anyhow::anyhow!("Display error: {:?}", e))?;

    let di = PGPIO8BitInterface::new(bus, dc, wr);

    let mut display = mipidsi::Builder::st7789(di)
        .with_display_size(170, 320)
        .with_invert_colors(ColorInversion::Inverted)
        .init(&mut delay::FreeRtos, Some(rst))
        .map_err(|e| anyhow::anyhow!("Display error: {:?}", e))?;

    display.clear(RgbColor::RED)
        .map_err(|e| anyhow::anyhow!("Display error: {:?}", e))?;

    loop {

    }
}

Nothing wrong with this solution per se, but have in mind that it uses (if I'm not mistaken) bit-banging to send the data to the screen. In other words, it'll keep your CPU busy while the data is being transferred. Which might or might not be a problem for you. Maybe not - initially - and for "playing with stuff".
The C drivers I was pointing you at are wrapping the native ESP32-S3 LED/CAM peripheral, which can utilize DMA for pushing the pixels to the screen. During that time your CPU is free to do something else more useful. This is specific for the S3 MCU though. And hence why hardware folks started bundling I8080-based LED screens with this MCU. Your pure-Rust solution is generic though and would work on any MCU that has a bunch of output pins available.

I joined the matrix chat!

Welcome!

Btw I'm surprised that this works at all:
.init(&mut delay::FreeRtos, Some(rst))

The FreeRtos "delayer" is only useful for delays >= 10ms as that's its minimal resolution. I was expecting the I8080 bitbanging to use much smaller delays (for which you should use Ets instead). Oh well.
The difference between FreeRtos and Ets is that with FreeRtos your thread will properlysleep during the delay, so the CPU can be scheduled to do something else. Ets will do a busyloop, but is more precise.

Uhm I tried to switch it to delay:Ets but I don't see any difference, however, I do have an issue, the example software that came flashed into the board had a nice smooth intro animation, which I guess is done by drawing a sequence of images frame by frame... I'm trying to do the same but each frame takes so long to render, I can see each frame being drawn line by line ...
I'm now trying to figure out the DMA thing you mentioned to see if that solves this issue, thanks again!

Hi there .. I try to make the same "Hello World" but even in this simple code I have a problem.
it works fine with ttgo-display with SPI, but with ttgo S3 - it return display.clear(RgbColor::RED)     |             ^^^^^ method not found inDisplay<PGPIO8BitInterface<Generic8BitBus<`
so backlight works, logig works but I can do anythinc with display ((
any advice ?

upd: adding use embedded_graphics::draw_target::DrawTarget;. resolve this issue but this is strange..

Nothing strange, this is how Rust works. Display<PGPIO8BitInterface<Generic8BitBus<... does implement embedded_graphics::draw_target::DrawTarget (and the clear method is a method on the DrawTarget trait), HOWEVER, to use methods from a trait, you DO need to import ("use") that trait. It is not enough to have just the implementing struct in scope.

To improve the performance by a lot you need to start the code with 'cargo espflash flash --monitor --release', or add
[profile.dev]
opt-level = 1 #  a number in the range of 1-3

to your Cargo.toml file.
The optimization level makes a huge difference in the execution performance.


When the package ID is put as 15 character it should auto convert it to 18 character

Is your feature request related to a problem? Please describe.
If package id is used in 15 character format, package: dependencies: install is unable  to detect whether the same package is already installed in the org.
Describe the solution you'd like
Auto convert it to 18 character based on this logic.
https://help.salesforce.com/articleView?id=000319308&type=1&mode=1

https://www.gammone.com/programmazione/come-convertire-id-salesforce-da-15-a-18-caratteri this might be better to check its logic.

@qswh I have applied the fix in v.2.8.2 can you try it using sfdx plugins:install<EMAIL_ADDRESS>let us know if works for you.


Fixes #29623 -- Use proper gettext variable formatting in DurationField validators

If we backport to 2.1, how do we handle the change in the translated string?

We need to inform the translation maintainers to update that string. I don't see another way, unfortunately.

Okay, let's just make sure @claudep signs off on this. If so, a release note should also be added.


approve or reject leaving entries behind

Moin Moin @Tpt @wastl ,
I don't really now, how to discribe the "failure". In the following article:

https://www.wikidata.org/wiki/Q351055
https://www.wikidata.org/wiki/Q367634
https://www.wikidata.org/wiki/Q152453

I approved or rejected entries, but when I'm finished, there were still the entries I allready approved or rejected.

If you approve this entries, you'll get duplications. If you try to reject the entries, they'll become back and back and back again.
This behavior I have since yesterday evening. For more informations let me now. Note: I noticed it in this article, but I beleave there are more.
Regards

Could be related to a change in caching I rolled out, I'll check what goes wrong.

Weird, is this happening right now? I deployed another version this morning.

An explanation to what changed: previously, when updating a statement the entity would be completely removed from the cache and a subsequent request reloads it from the (updated) database. This is very inefficient, as the frontend issues a reload after every update. So yesterday's change instead of completely deleting the entry from the cache updates it insead (by removing the statement that was approved).
I tried this on my local setup and it worked. Wondering what is special in your case.

Moin @wastl ,
yes, it is going on in this moments. I tried it in https://www.wikidata.org/wiki/Q192410#revision=324985665 with the same problem.
How could I help you?

Weird, because if I request the endpoint using curl it seems correct. Maybe the frontend sends the get request to fast?

@wastl : Maybe. But you see in the screenshot, the entry is allready saved. So it seems that the code didn't notice, that the entry was allready saved. And what is really strange is that there is no rule where it appears.

I deployed a workaround, maybe it helps.

Moin @wastl , I checked it for the three examples and could say, no, it doesn't work.

I'll try something else tonight, maybe it's a concurrency issue (different threads having different state)

@wastl , Difference in the browser:
IE 11:

Opera 36 (default browser):

Perhaps it would help. This screenshots I'd taken after I deleted cache, tmp and make a reload.

Does this happen only when clicking on "approve claim" or also for "approve reference"? For me it seems to work for "approve reference", but not for "approve claim". In the "claim" case, the frontend never sends a POST request to notify the backend that statements have been approved (only to the Wikidata API).

So my current theory is as follows:

this only happens on "approve claim" and never on "approve reference"
it also only happens when the claim is already present but you are still trying to approve it
in this case the UI should not even show "approve claim" because the claim is already present" - but for whatever reason the frontend does not realise

This might actually be related to #90

@wastl

for the "reject claim" too
in theory yes, but if I see it is still there, I try a reject.
ok

Probably due to this issue:
https://www.wikidata.org/wiki/Q21536207#revision=333165966
https://imgur.com/L2Kezva
The claim was approved, but it is still suggested.
@wastl, any thoughts on this?

@tomayac can you have a look? I think this is an issue in the UI, but I have trouble finding it.

I checked both problems. It seems the writes from the front-end somehow do not make it to the back-end. I opened a random item Q632229 and approved and rejected claims. The approval went through just fine.
(i) However, I could reproduce the duplicate claims being shown, the reason is that the uniqueness comparison does not take references into account, a known @ToDo up for grabs.
(ii) I could also in some cases reproduce the non-rejectable claims issue. I repeated disapproved statement 868483, but if you query the back-end for incoming Freebase statements for Q632229, it keeps coming back as "unapproved" (search for "868483").
For (i), if someone wants to tackle this, happy to merge their Pull Request. For (ii), @wastl, do you have a suspicion why this could be the case?

FWIW, 868483 still comes back as unapproved, so not a caching issue at least.

In order to ease us (the Wikidata dev team) to track the issues of the primary sources tool, we have created a Phabricator ticket for this issue: https://phabricator.wikimedia.org/T148166
Moving forward, please drop your comments onto that Phabricator ticket.


Need to have the link of the java SDK for the recently introduced Azure Event Hubs Premium

Query/Question
Need to have the link of the java SDK for recently introduced Azure Event Hubs Premium https://techcommunity.microsoft.com/t5/messaging-on-azure/announcing-azure-event-hubs-premium-public-preview/ba-p/2382082
Why is this not a Bug or a feature Request?
This is not a bug, it's a query
Setup (please complete the following information if applicable):

OS: [e.g. iOS] Kubernates
IDE: [e.g. IntelliJ] IntelliJ
Library/Libraries: [e.g. com.azure:azure-core:1.16.0 (groupId:artifactId:version)]

Information Checklist
Kindly make sure that you have added all the following information above and checkoff the required fields otherwise we will treat the issuer as an incomplete report

[ ] Query Added
[ ] Setup information Added

@ramya-rao-a Do you know if we need to have a link in this blog?

Thanks for reporting @koustavnaharoy-ayla
If we are to add a link to SDKs from a blog, then I would expect links to SDKs in all languages are included and not just Java. Or links to the quickstarts we have for all languages.
Assigning this issue to the blog author @kasun04 for follow up

Updated blog post to include quick start guide that points to examples which are written using all the languages that we support.

Updated blog post to include quick start guide that points to examples which are written using all the languages that we support.


chore: refactor containers

Try out Leather build 9a240c7 — Extension build, Test report, Storybook, Chromatic

This PR alters the code we use for generic page containers to address concerns in this discussion
Key concepts that are introduced are:

the replacement of variant config with individual page layout wrappers

pages are grouped by type based on their layout -  onboarding, home, page, popup
routes are then categorised accordingly and wrapped by their relevant layout

opt in Context is used where more dynamic updates are needed e.g. page titles

page's can update their own title and props on an opt in basis
this allows for specific use cases to be specified on a page rather than a global level

@kyranjamie @fbwoolf @alter-eggo : Can you please help review the general approach I am taking here?
I worked on splitting up the container I had used to make it more composable. I have more refactoring to do to clean it up and optimise but I wanted to make sure the approach I am taking makes sense. I am also unsure where to place some code so have a failing dependancy cruiser.
I'm using a context to help dynamically update the page header as sometimes it needs to vary based on the page. That is working well generally apart from on the Send flow when adding the title causes a re-render. I can try and fix that but I wonder if context is the best approach here see

We spoke about this on the engineering sync and I will refactor further to not use context and push the Header further down the tree so components can opt in and load it on demand.
That will mean more code but likely better performance and scalability


Add an advanced option to skip any Gemfile updates

Motivation
Our standard dockerfile-rails update flow is to bump the gem, run rails generate dockerfile, have it overwrite everything, use the git diff to undo anything we don't want. This is getting really close to not requiring undoing anything, with the Gemfile being a notable exception. For us, we know exactly what we do and don't want in our Gemfile, but we don't have the same level of confidence with the docker interactions, which is what we use this gem for.
Generally, I would argue that interacting with the Gemfile at all is beyond the scope of what dockerfile-rails should do, possibly with the exception of checking lock platforms, but I suspect that is likely an uphill battle.
Proposed solution
Add an option to skip modifying the Gemfile. I added the option description to the Readme under the advanced section because it's skipping a significant number of touch points.
I went looking for a place to add tests, but it doesn't appear there are currently tests for any of the Gemfile interactions.

That indeed is annoying, and should be fixed.  Preferably by scanning Gemfiles and/or config files rather than requiring an option.
Care to take a pass at fixing that?  I've invited you to the repository... all I ask is that you maintain the current tests and add new ones when you feel it is appropriate.

I have added an issue to track it (#96), but I don't have the spare time to tackle it immediately. I have an inclination that it should be somewhat straight forward to read the ActionCable config, but I've been doing open source long enough to know there are often hidden dragons.


More framework icons

Here are some common frameworks that don't seem to have icons yet, with links to icons I've found:

[ ] Arangodb
[ ] Cassandra
[ ] Elasticsearch
[ ] HDFS
[ ] Kafka

Duplicate of #6, closing


Added Golden Stone Round E Java solution

Have you read the Contribution Guidelines? If not, check CONTRIBUTING.md file first.
Yes
Description
Added Java solution and successful submission screenshots.
Checklist

[x] I've read the contribution guidelines.
[x] I've checked the issue list before deciding what to submit.

Related Issues
Fixes Issue # (write number here)
1

@sleepyboyskm were you assigned? #4

@lostgirljourney I had commented about assigning it to me. Also as it is unsolved please assign me.

Merged 🚀


Fix two typos

This fixes two typos in the documentation of the UseItemStackEvent event.

Well, apparently it's not ok to submit pull requests that are so small.

You could tackle cleaning up the OCD issues existing in the API, usually one of the core devs will perform such a task, but since the API hasn't been in heavy development as of late, I'd permit a contribution of that kind.


Fixed zoom event which is not working when changing mouse hover from video to image #4283

BUGS:
Link: https://github.com/bagisto/bagisto/issues/4283#issuecomment-734189503

@devansh-webkul
zoom is now working but when moving to video it's changed position as shown below.

Resolve conflicts

Confliction resolved.

@vaishaliwebkul,
In mine, it was working fine.


modify wastPath and abiPath of cleos set contract to be relative to contract dir

Based on the comment on github issue #2032, the documentation of cleos set contract expects wastPath and abiPath to be relative to contract directory. However, this is not the case and cause misunderstanding to developers who read the instruction. This PR makes wastPath and abiPath relative to contract directory.

PR Updated to update the integration tests.
If we support both
cleos set contract contracts/eosio.token contracts/eosio.token.wast contracts/eosio.token.abi
cleos set contract contracts/eosio.token eosio.token.wast eosio.token.abi

I think the above command will be confusing because it can be interpreted as two things. In my opinion, it's better to either change the implementation (which this PR is doing) or change the cleos help documentation (close this PR and make another PR to update the cleos help documentation).


Implement in-memory logger

Summary
Adds an implementation of Logger that stores every log in-memory, useful for testing without having to mock things or to create higher level loggers such as loggers to remote servers, queues and batching.
Checklist

[x] My code follows the style guidelines of this project
[x] I have performed a self-review of my own code
[x] I have commented my code, particularly in hard-to-understand areas
[x] I have made corresponding changes to the documentation
[x] My changes generate no new warnings
[x] I have added tests that prove my fix is effective or that my feature works
[x] New and existing unit tests pass locally with my changes
[x] Any dependent changes have been merged and published in downstream modules
[x] I have checked my code and corrected any misspellings

@marcospassos updated with the new typing :)


Zero shot

Is this architecture compatible with zero shot translation?
If yes: Are there plans to implement it?

Are you referring to the work at https://arxiv.org/abs/1611.04558? It should be possible to do this since it requires a change in data pre-processing only, i.e. you'd have to build the BPE codes over multiple languages and, after encoding your training data, prefix each sentence with a target language marker. fairseq preprocess will pick up all of this afterwards.
Maybe it's worth checking out makedict.lua and binarize.lua for simple code that calls the dictionary building and text binarization functions in isolation. This might allow for simpler experimentation.


Widget is detached before executing the command

#24 broke context menu for me. @mletenay already has investigated this issue.
@mletenay said:

When I mouseclick on the menu item, the standard Vaadin's (7.6.4) VMenuBar#itemClick is invoked:
hideParents(true);
menuVisible = false;
Scheduler.get().scheduleDeferred(item.getCommand());
The menu is hidden / detached and when the scheduled command is invoked it is ignored.
Am I doing something wrong or is this a bug ? What's actually meaning of that isAttached() check ?

That seems to be a really weird implementation in the VMenuBar. I probably don't get the whole picture, but to me it should first do the item action (send info to the server) and then close the menu. The sanity check in #24 would then be ok, but now it breaks (unless there is this CSS transition, which is super fragile "solution").

So does the context menu add-on work for anybody right now? I cannot get 0.7.3 to work while 0.7.2 works fine. Maybe you should revert #24.

Still have this issue with 0.7.4.

Have you tried 0.7.4 and 7.7-SNAPSHOT?

Just tried it, now the context menu is displayed, but clicking on context menu items has no effect beyond closing the context menu. 7.7-SNAPSHOT with 0.7.2 works correctly. Is there anything I can do to debug this?

I can't see any problems with the demo in this project when using 0.7.4 + 7.7-SNAPSHOT, so:
Step 1. Create a test case so you and others can test and debug it
Step 2. Run the project in Super Dev Mode and try to figure out what goes wrong when clicking in the menu
Step 3. Create a fix and a PR
Feel free to do as many or as few of the steps you like but without step 1 it's unlikely that anybody else will look into this

I just saw that the last 7.7-SNAPSHOT is from 2016-07-15.  It does not contain this fix:
https://dev.vaadin.com/changeset/7a6f250d89474849648ed2ee96a6bfb78c3b9ca8/vaadin
which seems to be important in this context. Could you upload a current snapshot?

Never mind, I compiled it myself. With the current state of the 7.7 branch it works correctly, so the fix
https://dev.vaadin.com/changeset/7a6f250d89474849648ed2ee96a6bfb78c3b9ca8/vaadin
indeed solves my problem.
The difference to a vanilla project is that I have
$v-animations-enabled: false;

in my Valo theme. The absence of the transition prevented the command from being executed before your fix.

Right, it seems I had a custom built snapshot locally. There was a configuration error in the snapshot build so they were not automatically produced. Now there should be a new 7.7-SNAPSHOT online however, and this is what will become 7.7.1 in a while

Closing this issue then as the problem is solved


Other Smith chart "characterization" views?

The return loss, etc., are perhaps not the right, complete set that folks might want.

Gamma_PWR (see https://youtu.be/ImNRca5ecF0?t=276)

SWR db (see https://youtu.be/ImNRca5ecF0?t=307)


Image editor shortcuts, eyedropper and shift line drawing

closes https://github.com/Microsoft/pxt-arcade/issues/951
Matching the shortcuts listed in the issue:

Tool
Piskel

Paint Bucket
B

Pencil
P

Draw Rectangle
R

Draw Line
L

Eraser
E

Draw Circle
C

Colors accessible with 0 - 9, and shift + 1-6 for the rest
holding alt (option on mac) gives eyedropper tool to select colors while drawing
fix keyboard shortcuts for undo / redo (on mac, need to test on a windows machine too)
shift click with line tool to easily draw shapes

eyedropper and a few more shortcuts

tooltips with shortcut hints

(I think this needs a bit of cleanup but checking for initial comments)

And here's the new eyedropper cursor @riknoll sent me:

(and partly me testing out the hot spot for the cursor to make sure it grabs the right spot)

Let's do a cleanup of classlist in a sep PR.

Can you use one of the helpers in svgUtil?

re: cleaning it up separately, is there a single preferred util file anywhere to put general helpers like that?

Not really. Some live in sim and lib.

Put it in BrowserUtils maybe?


Update osculator to v2.13.3-12-g5f24bc9

I removed the appcast - it's still given in the app, but hasn't been updated since 2010

Thank you for the contribution. It was merged directly as 13a0fa26638a6dadff30c22b83b41b2c17e80683 to keep commit history cleaner. Your contribution is still credited to you.


args parser cannot accept option arguments starting with a hyphen

This issue was originally filed by @hoylen

What steps will reproduce the problem?

Run the program below with arguments "-t -32"

dart bin/test-args-hyphen.dart -t -32
What is the expected output? What do you see instead?
Expected: Temperature is: -32
Got: FormatException: Missing argument for "temperature".
It treats the option argument as another option instead of the argument to the "-t" option.
What version of the product are you using?
1.8.3
On what operating system?
linux_x64
Please provide any additional information below.
// Test program
import 'package:args/args.dart';
void main(List<String> arguments) {
  var parser = new ArgParser(allowTrailingOptions: true);
  parser.addOption('temperature', abbr: 't', help: 'degrees');
  var results = parser.parse(arguments);
  print("Temperature is: ${results['temperature']}");;
}
//EOF

This issue has been moved to dart-lang/args#36.


Question

I am unable to see errors in vimscript. Do I have to have something installed? I was also wondering is Neomake a replacement for syntastic or do they work side by side?

Neomake and syntastic can work side by side if you want, but it is intended to be a replacement. I haven't added a linter for vimscript yet because I have yet to find one that I can get working.

I got vint working which seems to be adequate but a little noisy :)


Double consonants & Windows IME

When using the Windows IME (Win7 Pro, x64), double consonants (っ and ッ) are not properly supported. For example, in order to enter 待って (まって), one would normally type 'matte'. Doing this without an IME or using Google's IME works fine. However, under Windows 7's IME, this ends up as まっtえ.

Are there plans to address this issue? It is still happening with the Windows IME on Windows 10.

I'd love to tackle this - but I don't have access to a windows environment to take a shot at debugging it. There's a possibility it can't be addressed anyway, depending on how the Microsoft IME handles cursor position.
Any PRs or explicit information on how the input field value changes are welcome.

While I'm not a JS developer myself, it seems there are IME APIs available in JS (well, they're events, actually).
This StackOverflow question might help get you started.

I've added a flag to ignore any input events between compositionstart and compositionend.
This should actually improve performance minutely since we can exit much earlier before checking what the input is and whether it needs conversion (which of course kana IME input would not need). However input still fires once at the end of composition, so any romaji entered via an IME would still be converted :champagne:
I can't foresee any issues with this since we still have that final input capture after IME ends.
Anyone can give it a test by loading up gh-pages/index.html in https://github.com/WaniKani/WanaKana/tree/fix/microsoft-ime
@vietqhoang @mimshwright Thoughts before merging?

@DJTB Is there any way to test this without pulling down the repo and building it? If so, I'd be willing to try it out.

Available for a limited time only: http://a734dbbf.ngrok.io/
Let me know when done.

Seems I was wrong about that final input event!
Only affects users entering latin chars via an IME.
It'll convert if they then input a space/anything afterwards.
I can probably tack on a conversion to compositionend if we want to have that functionality.
I'll try that now.

@DJTB I'm done testing. Looks like it fixes the bug. I also spot checked other IME and non-IME input data and everything seemed to work fine.

@seanblue
Could you do the same tests again, including one situation where you enter latin characters with the IME?
I updated it to do a conversion after composition, to convert any latin characters, should they be entered via IME for whatever reason.

@DJTB I had already tested that case in the old version (since I saw your previous comment about it). It seems to work exactly the same in the new version.
However, I think there is one difference between the old and new versions, when using the hiragana input mode of the IME.
Typing 「わかｔｔ」in the IME and stopping before typing the last a by pressing Enter.
The previous version you had deployed kept 「わかｔｔ」(if I remember correctly).
The new version, when pressing Enter converts it to 「わかっt」.
That change might be useful if you stop early by switching out of the IME or into romaji mode of the IME, since then typing the last a would convert it to 「わかった」. If you had just pressed Enter and stayed in hiragana mode, you don't really get anything from this since typing a would result in 「わかっtあ」.

I think trying to support early exit from IME isn't something we can/should do.
Realistically you would input your kana [わか], press Enter then turn off IME or switch to romaji mode for [romaji], Enter, then back on again/kana mode. If you're using an IME, you shouldn't do half kana conversion then a few letters, then expect to complete those letters to kana with the input field auto conversion. I understand what you're saying about it being potentially useful, but it's an odd/abnormal use of the IME really. As opposed to a user entering [romaji] and nothing happening.
The previous deploy wouldn't convert [romaji] after pressing Enter (at least with the Google IME) without further/following input. I feel that if you press Enter then you've committed that text to the input field, and it should convert it if it is romaji.
Thanks for the testing!

Yeah, I wasn't trying to say that half-typed IME (kana) text should be converted. Since I couldn't reproduce the issue you described, I thought that's what you were trying to handle for some reason. Now it's clear that that wasn't you intention, so I guess that was just a side effect.
Perhaps the issue you described doesn't happen in the Microsoft IME, but either way everything seems to work as expected using it.

So it appears that mobile keyboards are also firing compositionstart & compositionend - mainly because they are composing to provide autocomplete suggestions. However they will only fire compositionend after user chooses an autosuggest option, enters a space, or taps enter key (bottom right of keyboard usually). So with the Microsoft fix, these keyboards won't convert anything during composition. :sob:
Though I believe I found a better fix by only using compositionupdate rather than compositionstart and compositionend.
Only the Microsoft IME appears to hold onto double consonants until it receives a final vowel and converts all 3 chars at once.
tt... tta -> った
kk ... kko -> っこ
Whereas Google IME and Wanakana script opts for early conversion of the 2 chars at double syllable (excluding 'n')
tt -> っt
っta -> った
kk -> っｋ
っｋo -> っこ
I've done some more testing, and if compositionupdate data (which fires before input event) ends in a double consonant we can do a one-off ignore of the following input event. Which will then convert once the third character is entered (like the Microsoft IME).
With Microsoft IME input, we would now skip on かtt and wait until we receive the next input which will actually be 'かった`, and then we don't have to convert anyway since it's all kana.
On mobile the input field will act the same, it'll wait at かtt until it receives かtta -> がった. Minor change, but only visually: tt vs previous style っt, the result is still the same.
With Google IME input, this won't occur since we never receive the double consonants (it converts them early).
So far so good, I'll flesh out tests and then ask you @seanblue for another check~

Sure, just let me know. I'll run through some tests on my computer and iPhone.

@DJTB Maybe I'm misunderstanding the mobile issue you mentioned, but it looks like it's working fine on wanakana.com using my iPhone's IME. What mobile device were you seeing this issue on? And can you give specific steps to reproduce the issue so I know what to look for?

Android / Nexus, stock Google keyboard (GBoard).
I've had a few user reports and tested myself.

Ok @seanblue can you give iPhone/Microsoft IME a shot at http://821d54e5.ngrok.io/
Want to confirm (alongside normal conversion) cases with double consonants like:
matta -> まった
gasshou -> がっしょう
kekkon -> けっこん
donnna -> どんな (should not have っ)
I'll check Android.

Yeah, it looks like the iPhone's IME works the same as how you described the Google IME, converting the double consonant early.

I'm pretty sure my new solution works for the affected mobile keyboards and Microsoft IME.
Can you do your worst at http://5b30042e.ngrok.io/gh-pages for me?

Seems to work fine using the Microsoft IME and the iPhone IME.

Confirmed mobile input with affected users.


dexie cloud db entries with image blob disapear

Hy there I have been using some db entries containing small image blobs.
It works fine with dexie js.
But with dexie cloud, these db entries that contain image blobs, disapear somehow.
Just after saving it to de db i can still get the entrie, but then it is gone.
Probably after syncing to the dexie cloud.
Im also getting the following "rejection" in the sync response:
Sync response  Object { changes: (2) […], rejections: (1) […], dbId: "z9c1xige1", realms: (2) […], inviteRealms: [], serverRevision: "1:325", schema: {…} }  changes: Array [ {…}, {…} ]  dbId: "z9c1xige1"  inviteRealms: Array []  realms: Array [ "rlm-public"<EMAIL_ADDRESS>]  rejections: Array [ {…} ]  0: Object { name: "ReferenceError", message: "XMLHttpRequest is not defined", txid: "w0ytm4SqlruwS/yfXGD/qA==" }  length: 1  <prototype>: Array []  schema: Object { notes: {…}, roles: {…}, images: {…}, … }  serverRevision: "1:325"

Thanks 🙏 I'll try to reproduce

I'm encountering a similar issue. I'm able to save the blob to IndexDB, but when I login with another client, the data that is synced has an empty object instead of the blob.
After upload:

When synced to another client:

In case it helps: Ran into the same issue as well:

My react component:
export function PhotoUpload(): ReactElement {
    const upload = asyncFunction(async (event: ChangeEvent<HTMLInputElement>): Promise<void> => {
        for (const file of event.target.files ?? []) {
            await database.photos.add({
                file,
                createdAt: Date.now().toString(),
            });
        }
    });

    return <div>
        <input type="file" accept="image/x-png,image/jpeg,image/gif"
               onChange={event => upload(event)}/>
    </div>;
}

And my db code:
const databaseUrl = import.meta.env.VITE_DEXIE_CLOUD_URL;
if (typeof databaseUrl !== "string") {
    throw new Error(`Missing VITE_DEXIE_CLOUD_URL environment variable.`);
}

export const database = new Dexie('ClarionCall', {addons: [dexieCloud]}) as Dexie & {
    photos: EntityTable<Photo, 'id'>
};

database.version(1).stores({
    photos: '@id, createdAt, file'
});

database.cloud.configure({
    databaseUrl,
});


Workspace expanded/collapsed folder state does not survive restart when folders are Git repos

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

VS Code Version: 1.61.2
OS Version: Windows_NT x64 10.0.19042

Steps to Reproduce:

Create a new folder, run git init inside of it, duplicate the folder a few times
In VSCode, click on "New Window"
Reveal Explorer and click on "Open Folder", select all the empty Git repos you've created
Collapse each folder (the arrow should point right)

Now restart VSCode. Notice how all folders are expanded again.

Now imagine you are working with 30 repositories. Each one has, as it is customary today, 30 config files at root and a dozen subfolders. So every time you start VSCode you are presented with 1K+ entry list and have to click 29 times to collapse unused repositories before you can begin work on that one repo you are trying to get to.
This does not happen if instead of selecting individual folders in step 2, you select just the parent directory. In that case, the expanded/collapsed state survives restarts.
This is a solid ten on a 0 to 10 annoyance scale.

Interesting. With all these restarts, the update for 1.62.0 was not proposed. This was fixed in 1.62.0 released 3 days ago.


Add support for actions/checkout v3.2.0 or later

It seems that when dependabot suggests to bump the actions/checkout action to v3.2.0 or later, the build-commits workflow fails with:
llc -march=bpf -mattr=dwarfris -mcpu=v2 -filetype=obj -o bpf_sockops.o bpf_sockops.ll
/bin/bash: line 1: llc: command not found

https://github.com/cilium/cilium/pull/22708#pullrequestreview-1215903722
This issue tracks progress on resolving this so that we can bump this dependency.

@brlbil @nbusseneau can you take a look at this one?


Using breakpoint functions that return Signal (smaller, greater, etc.) causes error NG0602

I have a scenario where the breakpoint is dynamic and I pass it as an input to my component. Therefore, I cannot call the breakpoint functions at the root level – I have to call them within another computed signal or within effect.
private breakpoints = observeBreakpoints(breakpointsTailwind);
private worksFine = this.breakpoints.smallerOrEqual("md");

// The problem 👇
private doesNotWork = computed<boolean>(() => {
    const signal = this.breakpoints.smallerOrEqual(this.inputBreakpoint());
    return signal();
  });
public inputBreakpoint = input<"sm" | "md" | "lg" | "xl" | "2xl">("sm");

However, this causes this error

REPRO
Try to run the app, and check the console
I suppose the only way to solve this issue is to pass the injection context to either the breakpoint function or to the observeBreakpoints
P.S. Many thanks for this library, the usage is elegant and straightforward. I am more than happy to contribute.

Hi!! Thank you for using this lib!!
I've prepared a PR to deal with this issue. The change would allow to pass signals to the breakpoint functions.
I'm think of other improvements before realeasing like adding some more breakpoint presets and more configuration. I'll let you know when it's available!

Hi! I just released version 2.0.0, you can try it now !
Regarding your issue, now you can pass a signal to the breakpoint functions
public inputBreakpoint = input<keyof typeof breakpointsTailwind>("sm");

// Remember to pass the signal without calling it!
protected shouldDisplay = this.breakpoints.smallerOrEqual(this.inputBreakpoint);

I hope this works for you, if you have any problem, let me know!

Thanks a lot @tutkli for your prompt reply. I will try it out today, but it seems that everything should work as expected!

I think one tiny thing makes the usage a little odd (at least in my case).
Usually, the signal that one gets when calling this.breakpoints.smallerOrEqual is something private/protected to the component. One wouldn't want to expose this information to other components, because it's irrelevant and should be encapsulated in the component using it.
On the other hand, a component's signal input will always be public. This means that one should declare a public field (input) before a private/protected field (breakpoints.smallerOrEqual), because the input would be used before initialization. This is quite uncommon and there are even linting rules that some users would have to ignore to make this work.
Again, I think that's a small, yet quite inconvenient thing.

That's true, another way you can do it currently is like this:
// use a callback function with the signal, now calling it
protected shouldDisplay = this.breakpoints.smallerOrEqual(() => this.inputBreakpoint());

public inputBreakpoint = input<keyof typeof breakpointsTailwind>("sm");

That's true, another way you can do it currently is like this:

Yes, I figure it out. This will be my go-to for scenarios like these. It feels a bit more natural because it's similar to the usage of computed. But I see only the advantages of keeping the option of passing a signal.
Once again, thank you for the changes :)


[PKG-6012] 2.8.1 ❄

fpdf2 2.8.1 ❄
Destination channel: Snowflake
Links

PKG-6012
Upstream repository

Explanation of changes:

Added upstream tests

Swapped to Github source for tests.
text_shaping tests require uharfbuzz
test_table_extraction.py requires camelot

Linter check found the following problems:
ERROR conda.cli.main_run:execute(125): `conda run conda-lint /tmp/abs_56sma_pqjx/clone` failed. (See above for error)
The following problems have been found:
===== ERRORS =====

clone/recipe/meta.yaml:63: missing_license_family: The recipe is missing the about/license_family key.
===== Final Report: =====
1 Error and 0 Warnings were found


Memory management

Need to keep track of all the foreign objects (from OpenGL, OpenAL, ODE, etc) and release them in the most unobtrusive way possible.

See dispose et al.


24601280 - Tributary to Zymoetz River

in QGIS and past versions of Phase 1 file but currently missing from PSCIS submission forms.  This is both a phase 1 and phase 2 site (ie. has assessment info but also detailed habitat data and fish sampling data in FDS template)

This site it is in pscis_phase1.xlsm but after reading your comment it sounds like it should be in pscis_phase2.xlsm. Shall I move it over?

nice - no - all good. didn't see it there. thats great.
It will actually be in both the spreadsheets but will get the pscis Id in the phase 2 sheet once it gets assigned (see https://www2.gov.bc.ca/assets/gov/environment/natural-resource-stewardship/land-based-investment/forests-for-tomorrow/pscis-user-guide-v2.pdf ).
Changing all these spreadsheets right now so no thanks on the edits!

Confirming that the site is in both pscis phase 1 and phase 2 spreadsheets (under PSCIS ID in phase 2). Will close.


Adding parallel support for coveralls

For parallel support, coveralls have to be marked as finished explicitly as given in https://github.com/shogo82148/actions-goveralls#parallel-job-example

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

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

Files with Coverage Reduction
New Missed Lines
%

pkg/controller.v1/mpi/mpijob_controller.go
2
81.05%

Totals

Change from base Build<PHONE_NUMBER>:
-0.02%

Covered Lines:
3753

Relevant Lines:
8754

💛  - Coveralls


Origins 1.6.1 100% crashes on entering a world with this mod

Origins 1.6.1 100% crashes on entering a world with this mod but only on reentry if i do create world I can get in but going back to the world select screen and entering causes a crash.
https://mega.nz/file/9LxAWBAB#z92IzcatyCcwpnnIVejQjjtUq2CKUrL1UITi-B-I57o Mod
crash-2022-06-17_19.56.57-client.txt
2022-06-17-5.log

The crash is caused by setting all of the origins in a layer to unchoosable
setting one to choosable then replacing that layer fixes it.


Demo Website / Use WOT polaris web or build alternate

The WOT polaris web (built from https://github.com/WebOfTrust/polaris-web) works with the KERI Auth extension, as shown in the attached, but hasn't been updated by the KERI community for 3 months. We will be using a later website project that is actively being developed. See github https://github.com/GLEIF-IT/reg-pilot-webapp as currently deployed here: https://reg-pilot-webapp-dev.rootsid.cloud/ .

We are now using  https://github.com/GLEIF-IT/reg-pilot-webapp,  which is currently hosted here: https://reg-pilot-webapp-test.rootsid.cloud/ and the context for this configuration is documented here: https://github.com/GLEIF-IT/reg-pilot


Enabling Institutional Signin

Hi,
We are using a DMPTool fork version 4.0.9. At this time we need enable a institutional signin like image below,

Have an some flag in database that enable this?
tks...

Hi @rwvaldivia
That page gets the list of organizations from this scope which looks at the orgs.managed field in the database.
The checkmark that indicates that the organization is setup for SSO is determined by this code. Basically it is looking for a shibboleth identifier for the organization.


Tabs navigation with  instead of

I noticed in bootstrap 3 and 4 that <a> tags are used for the top navigation.
http://v4-alpha.getbootstrap.com/components/navs/#javascript-behavior
On the  WAI-ARIA Authoring Practices they don't mention that you need to use the <button>, but in the one example they list, it does use the <button>.
https://www.w3.org/TR/wai-aria-practices/#tabpanel
https://www.w3.org/TR/wai-aria-practices/examples/tabs/tabs.html
Any reason why you use <a> instead of the <button> ?

as they're given a role="tab" which overrides their link-/button-like nature, it's functionally irrelevant which elements are used. you could even use <span> elements, as long as they had the correct role and behavior...


perf(cli/lint) poor print performance above several hundred diagnostics threshold

Problem
Printing lint errors slows down exponentially.
Slowness is significant once the threshold of a few hundred diagnostics is crossed.
Repro

Download babylon.max.js (arbitrary example)
Build release
Run ./oxc_cli.exe lint --max-warnings 1 babylon.max.js - very fast E2E time (to give an idea of parsing time)
Run ./oxc_cli.exe lint --max-warnings 10 babylon.max.js - E2E time barely increased.
Run ./oxc_cli.exe lint --max-warnings 100 babylon.max.js - E2E time increased much more in relative terms. On my machine, it's ~60x, where the number of printed messages only grew 10x (90 vs 9).
Run ./oxc_cli.exe lint --max-warnings 500 babylon.max.js - time 20x,
You get the point..

Initial findings
I thought it would be related to writing to stdout, but that seems to be done correctly already:
 let mut buf_writer = BufWriter::new(std::io::stdout());
        let mut number_of_warnings = 0;
        let mut number_of_diagnostics = 0;

        while let Ok(diagnostic) = rx_error.recv() {
            number_of_diagnostics += 1;

            if diagnostic.severity() == Some(Severity::Warning) {
                number_of_warnings += 1;
                // The --quiet flag follows ESLint's --quiet behavior as documented here: https://eslint.org/docs/latest/use/command-line-interface#--quiet
                // Note that it does not disable ALL diagnostics, only Warning diagnostics
                if self.cli_options.quiet {
                    continue;
                }

                if let Some(max_warnings) = self.cli_options.max_warnings {
                    if number_of_warnings > max_warnings {
                        continue;
                    }
                }
            }

            buf_writer
                .write_all(format!("{diagnostic:?}").as_bytes())
                .expect("Failed to write diagnostic.");
        }

One thing we can improve is take the lock on stdout. However, that doesn't solve the issue.
Profiling shows all of the time spent in miette:

The culprit isn't immediately obvious.
I haven't dug into miette code yet. It seems unlikely that it would have such a big performance issue, with no smoke (I couldn't find any issues in the repo related to performance).
The exponential nature of the slowness hints towards some vector or other struct's memory not being cleared/reused efficiently.

I think I know why ... it's reallocating the 10MB file for every label, which blows the the memory allocator. The Arc is a lie ... I thought miette should be is zero-copy, or at least just allocate a small part.
We should be able to fix this by grouping the diagnostics into this related field. https://docs.rs/miette/latest/miette/index.html#-multiple-related-errors

Wrong, it's not about memory, it's about scanning the whole file for every label
https://github.com/zkat/miette/blob/c857595e1ae689028c5c5b66148e81b175eaa509/src/source_impls.rs#L28

To fix this, I think we need to implement our own SourceCode with caching.

Ok, I hope I'm not missing anything. (Feeling a little dizzy).
My understanding is as follows:
The issue is indeed the miette has to iterate through the whole source code every time.
If we don't (and won't ever) require having before/after context lines, I think fixing this shouldn't be too big of a deal. We'll have our own SourceCode implementation (read_span()) where we always make the offset start at 0, and provide a str slice that starts at that offset. (e.g. instead of giving a file's full source code and offset (1000, 1010) we'd give &source[1000..] and offset (0, 10)).
However, once there's even a single rule that needs before/after context lines, it'll be a problem.
We can also just ignore this issue. It only surfaces for ridiculously large files.
It's reasonable to assume/expect source files don't go over 1-2MB. Even that's obscene.. do you know of a project that has such a thing? the largest single source file I'm aware of is (non-JS/TS) .NET's gc.cpp.

We can also just ignore this issue

I vote for ignore 😁

You can probably fix this by having a SourceCode implementation that uses .seek()!


Deprecation warning for FDL

Fix #12995

Going to merge here. We can address any subsequent comments in a follow-up PR.


Get status bank account

Hi,
I can not find how to recover the status 'Active' of a bank account.
Here is how i get the list of bank accounts :
$mangoPayApi->Users->GetBankAccounts
https://docs.mangopay.com/endpoints/v2.01/bank-accounts#e2_view-a-bank-account
Thanks for your help.

Hello @aksld ,
I'm affraid I do not understand your question.
Do you want to know how to:

get the value of Active property (which is a boolean) for a bankaccount?
filter this list to get only active bankaccounts?
make a bankaccount being active after being set as an inactive one?

Mickaël

Hi,
Thanks for your help.
Just the first point is good for me. With that, I can made the second point.
I just need to read the Active property.

Hello,
If you look to this snippet of code (from SDK tests), you can see

how to get a particular Bankaccount through a list result: https://github.com/Mangopay/mangopay2-php-sdk/blob/master/tests/cases/users.php#L295
how to get this Active property: https://github.com/Mangopay/mangopay2-php-sdk/blob/master/tests/cases/users.php#L250

But it seems filtering is missing for some endpoints, as I can see here: https://github.com/Mangopay/mangopay2-php-sdk/blob/master/MangoPay/ApiUsers.php#L139
We're currently supporting filtering on our API, but it seems it's lacking on this SDK.
I'll put it on our roadmap to be done very soon.
Mickaël

Hello,
With this code :
 $john = $this->getJohn(); $account = $this->getJohnsAccount();
You set the active value to true.
But can I read the active value ?

Hi @aksld!
Sorry about the delay.
That should be exactly right! Could you please confirm that calling $account->Active on a valid account object does not allow you to read the value of the Active property? I just tried it out and it behaves as expected.
Please let us know!


[component] How to obtain a prperly-ordered 'file_list.f' for executing Verdi?

Description
Hi All,
I'd like to use Verdi to navigate the schematics in a hierarchical way, but it seems a bit
challenging to generate a 'file_list.f' listing the required files in a proper order.
Does anyone have idea how this can be done in an efficient way? Thanks.
--vincent

If you use dvsim to run pretty much anything, it will collect up the source files and lay them out in a scratch folder.
For an example (pretty much arbitrary, but using a block that I know is checked with VCS by default):
util/dvsim/dvsim.py hw/ip/aon_timer/dv/aon_timer_sim_cfg.hjson -i aon_timer_smoke --fixed-seed=1

If you look in your scratch directory, you'll find a file list. For the example I just ran, it was at
scratch/<my_branch_name>/aon_timer-sim-vcs/default/sim-vcs/lowrisc_dv_aon_timer_sim_0.1.scr


Create markdown documentation for wallet cli

Document basic usage of raptoreum-cli

Hi there,
This bounty isn't actually meant for github but the bounty-submissions channel on discord as it goes on the docs site.


support for unknown file and content-type tuning

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

37 of 40 (92.5%)  changed or added relevant lines in 2 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+0.4%) to 77.99%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

src/lib/serve-files.ts
36
39
92.31%

Totals

Change from base Build<PHONE_NUMBER>:
0.4%

Covered Lines:
306

Relevant Lines:
369

💛  - Coveralls

Pull Request Test Coverage Report for Build<PHONE_NUMBER>
Warning: This coverage report may be inaccurate.
This pull request's base commit is no longer the HEAD commit of its target branch. This means it includes changes from outside the original pull request, including, potentially, unrelated coverage changes.

For more information on this, see Tracking coverage changes with pull request builds.
To avoid this issue with future PRs, see these Recommended CI Configurations.
For a quick fix, rebase this PR at GitHub. Your next report should be accurate.

Details

37 of 40 (92.5%)  changed or added relevant lines in 2 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+0.4%) to 77.99%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

src/lib/serve-files.ts
36
39
92.31%

Totals

Change from base Build<PHONE_NUMBER>:
0.4%

Covered Lines:
306

Relevant Lines:
369

💛  - Coveralls


allow subclassing of request

Make sure it's possible to subclass a finatra.Request and pass it through the Router.

Hello,
I made an attempt and it somehow worked but if another filter do the same the handler will end up with a request proxying a request proxying a request etc and I am not sure how to retrieve the right level containing my data.
Here's my sample in memory session filter. The filter creates a RequestWithSession and pass it to the service.
An implicit is used to retrieve the RequestWithSession from the Request (I had to climb two levels in my test but may be it could end with request.request.request if another filter is involved, I am not sure?).
package com.twitter.finatra_example

import com.twitter.finagle.{ Service, SimpleFilter }
import com.twitter.finagle.http.{Request=>FinagleRequest, Response=>FinagleResponse}
import com.twitter.finatra._
import com.twitter.finagle.http.Cookie

case class Session(
  val id:String
){
  var userId:String = null
}

object Session {
  @inline implicit def autoCast(request:Request) : RequestWithSession = {
    // that's request.request but not sure what would happen if another filter adds a level
    request.request.asInstanceOf[RequestWithSession]
  }
}

class RequestWithSession(request:FinagleRequest, val session:Session) extends Request(request)

class InMemorySessionFilter extends SimpleFilter[FinagleRequest, FinagleResponse]{
  val sessions = collection.mutable.Map[String, Session]()

  def getOrCreateSession(id:String) : Session = {
    sessions.get(id) match {
      case Some(session:Session) => session
      case None =>
        val session = new Session(id)
        sessions.put(id, session)
        session
    }
  }

  def apply(request:FinagleRequest, service:Service[FinagleRequest, FinagleResponse]) = {
    val cookie =  request.cookies.get("_sid_") match {
      case None => new Cookie("_sid_", java.util.UUID.randomUUID().toString)
      case Some(v) => new Cookie("_sid_", v.value)
    }
    val session = getOrCreateSession(cookie.value)
    val requestWithSession = new RequestWithSession(request, session)
    service(requestWithSession) map { response =>
      response.addCookie(cookie)
      response
    }
  }
}

The usage is:
package com.twitter.finatra_example

import com.twitter.finatra._
import com.twitter.finatra.ContentType._
import java.util.concurrent.Executors
import com.twitter.util.FuturePool

// import the implicit Request => RequestWithSession
import Session._

object App extends FinatraServer {

      get("/") { request =>
        println(request.session) // autocasted to RequestWithSession which has a session field
        render.static("index.html")
      }

     ...
}

Trying to cast to RequestWithSession and climbing up the hierarchy until it work may be a workaround but it feels wrong :)
I know it's not recommended by Finagle but since a user cannot easily modify the whole framework signature, maybe a request context could do the trick ?
// context as a mutable.HashMap[String, Any]
request.context += ("SessionAttachmentKey" -> session)
...
//
request.context("SessionAttachmentKey").asInstanceOf[Session]

I am quite new to finagle and finatra and still a beginner with scala so there must be a nicer way of doing this, any info is very much appreciated :)
Best regards
Laurent

Subclassing Request is now discouraged in favor of using Request.ctx


Fe: Avatar model left behind after switching

Switching from asset 519 did not properly clean up the old asset.

Definitely a thing while I work on the editor. The entire possession system is changing.


Strong name version?

Any chance of getting a strong name version of this?

Have you read https://www.pedrolamas.com/2016/03/01/still-strong-naming-your-assemblies-you-do-know-its-2016-right/ and https://stackoverflow.com/a/396159/73025
I understand that there are many arguments for strong naming, for and against.
The main concerns are that you need to share/store the private key somewhere as otherwise you prevent others taking the code and building it themselves.

If you need strong naming, you might take a look at https://github.com/dsplaisted/strongnamer, which can be used to add a strong name today.


Issue with glob in thumbnail tutorial

After I finished the thumbnail tutorial, I tried to test it and got this error
Error: No files match pattern `rust_memes/*`

After seeing that, I progressively commented out more code to get a minimal reproduction, and I was able to find that this block of code doesn't match anything
use quicli::prelude::*;

fn main() -> CliResult {
    let files = glob("src/*")?;
    println!("{:?}", files);
    Ok(())
}

~/dev/rust/thumbify master
❯ cargo run --
   Compiling thumbify v0.1.0 (/home/chris.pickard/dev/rust/thumbify)
    Finished dev [unoptimized + debuginfo] target(s) in 1.11s
     Running `target/debug/thumbify`
Error: No files match pattern `src/*`

Even though I clearly have matching files in my src/ directory
~/dev/rust/thumbify master
❯ ls src
main.rs

I'm sorry, I feel like I'm quite a thorn in your side at the moment

Hey, no worries, I'm very glad you open these issues! 0.4 contained an updated glob function, and I think there might be some issues with that. I'll try to investigate!
If you want to get this working without using quicli's glob, you can try to a use the glob crate directly (or another one that does the same), or play around with using std::fs::read_dir :)

Hi,
It looks as if it's because of glob's max_depth(1) call.  Removing allows the following (previously non-working) patterns with subdirectories ("dir/file", "*/file" and "**/file").  It does find files in subdirectories with simple patterns ("*.png") though, which it did not before.
It would be possible to add the max_depth call only when a '/' is in the pattern.  What do you think?


Profiling the execution time of each OP

Thanks very much for the great project! I'm trying to use MXNet for my research and is there any way to profile the running time of different operations like that in Theano? This functionality will be really helpful for debugging the implementation of new networks/OPs.

This was not yet possible, but is an interesting feature to add to.
I think what can be done is add timing function to

https://github.com/dmlc/mxnet/blob/master/src/symbol/graph_executor.cc#L235
And record time info into op_node here https://github.com/dmlc/mxnet/blob/master/src/symbol/graph_executor.cc#L218

It would really be great if you like to take a look and add this :)

Thanks @tqchen, I'll try that.

Cool Thanks!

@sxjscience did you manage to get anywhere with this?

@Piyush3dB No, I'm working on other stuffs and need to investigate this later.


Revive auto generation of the compiler option table

the compiler options table used to be imported from compiler-options-table.rst, which looks like this and is automatically generated from code. Now it is hardcoded which is much less desirable and can easily go out of date (and it already did).

https://github.com/IntersectMBO/plutus/pull/6373


Showing textContent even when pdf is not searchable

Attach (recommended) or Link to PDF file here:
statement.pdf
Configuration:
Web browser and its version: Chrome
Operating system and its version: Ubuntu
PDF.js version: 3.4.120
Is a browser extension: using in html/js
Steps to reproduce the problem:

Pls run this code in codesandbox

What is the expected behavior? (add screenshot)
If you download this pdf, you will see that it is not searchable. So, on doing getTextContent I should have gotten an empty array.
What went wrong? (add screenshot)
PDF.js is returning texts from this non searchable pdf. Also, all the text lines are not being returned. Only partial text data is being returned.
Is there anyway i can ensure that if the pdf is non searchable the getTextContent should return null
Link to a viewer (if hosted on a site other than mozilla.github.io/pdf.js or as Firefox/Chrome extension):

If you download this pdf, you will see that it is not searchable. So, on doing getTextContent I should have gotten an empty array.

Adobe Reader, i.e. the PDF reference implementation, searches that document (mostly) fine. As does the PDF.js default viewer, hence this issue is unfortunately INVALID.

Also, all the text lines are not being returned. Only partial text data is being returned.

Given that the document looks like is was scanned and then had OCR run on it, that's somewhat expected since that kind of work-flow will never give perfect results.


Remove use of release event in CI jobs

A slew of CI jobs launched in apparent response to the publication of the 1.16 release notes, which overwrote the correct latest deployed version on the edge and soon trains with incorrect versions. I suspect is caused by our use of release: null in our CI job configuration. We should remove release: null to prevent this from happening in the future.

The GitHub Actions release documentation is sparse, but I tested the following workflow in a private repository and confirmed that it spawned three CI jobs in response to creating a release and an additional CI job in response to updating a release.


⚠ Bofrost.at has degraded performance

In 9a82bc3, Bofrost.at (https://www.bofrost.at) experienced degraded performance:

HTTP code: 200
Response time: 2221 ms

Resolved: Bofrost.at performance has improved in 76f5883 after 6 minutes.


LDM needs to be upgraded to version 6.13.16

For Linux users, the version of LDM that comes with the software is 6.13.11. This contains a number of bugs, a few which hamper the LDM. Notably, amongst others, if you request the same feed from two different sites, and one goes down, the ingest of that data feed will crash. This was fixed in version 6.13.13, and since then, other significant bugs are fixed, including substantial difficulties in compiling on one flavor of Unix.
Furthermore, this version restores capability to easily update the GEMPAK tables that define the products being ingested. I request that, in the next release, LDM version 6.13.16 be installed with the package.

The 18.2.1-3 release addresses and fully fixes this issue. I consider this resolved.


Update Microsoft.Network /NetworkInterface Tag property fails

Bug Report

import "github.com/Azure/azure-sdk-for-go/services/resources/mgmt/2018-05-01/resources"
SDK version master
go version  go1.10.3 darwin/amd64

I am trying to update the resource (Microsoft.Network/networkInterfaces) Tags and getting the following error:
resources.Client#UpdateByID: Failure sending request: StatusCode=0 -- Original Error: autorest/azure: Service returned an error. Status=400 Code="OnlyTagsSupportedForPatch" Message="PATCH request content includes properties property. Only tags property is currently supported." Details=[]
Here are more detail about the API version:    "Microsoft.Network":    "2018-07-01"
       resourceID := "/subscriptions/xxxx-xxxx-xxxx-xxxx-xxxx/resourceGroups/rg-demo-resourcegroup/providers/Microsoft.Network/networkInterfaces/vmint01"

        genericResource := resources.GenericResource{
		Tags:  <TAGS>,
	}

_, err := resourcesClient.UpdateByID(context.Background(), resourceID, genericResource)

This looks to be a codegen bug, working on a fix.

This has been fixed in https://github.com/Azure/azure-sdk-for-go/releases/tag/v22.1.1.


[WIP] feat: Implement image verification proxy plugin type

This PR implements a plugin system for verifying image pulls (https://github.com/containerd/containerd/issues/6691).
This supersedes https://github.com/containerd/containerd/pull/6994 to implement the plugin using a gRPC proxy plugin called from the Transfer Service rather than a ttrpc plugin to the CRI.
See https://github.com/DataDog/containerd/blob/img-verifier-proxy-plugin/verifier/example/README.md to test an example plugin.

From March 23 community meeting: should use binary shim model instead of proxy plugin.


Indentation bug?

https://github.com/yjxiong/action-detection/blob/c27d52e558690b156a6184e19846d63a87693985/ops/sequence_funcs.py#L120-L125
https://github.com/yjxiong/action-detection/blob/c27d52e558690b156a6184e19846d63a87693985/ops/sequence_funcs.py#L129-L134
should be:
for y in range(x + 1, len(up)):
    if y < len(down) and signal[up[y]] > s:
        boxes.append((up[x], down[y-1]+1, cls, sum(frm_scores[up[x]:down[y-1]+1])))
        break
    else:
        boxes.append((up[x], down[-1] + 1, cls, sum(frm_scores[up[x]:down[-1] + 1])))

This is not a bug. else after for loop is a grammar sugar in Python allowing to do something when the loop successfully completes.
http://book.pythontips.com/en/latest/for_-_else.html


dotnet 3.1 and newer support?

Is it only for .net framework? How to use it with dotnet 3.1 and newer dlls?

This project heavily depends on Harmony lib. For now, It's only working with .NET Framework. I'll try to make a version for .NET Core too.


Performance - table adding more than 1000 watches to application.

when i am adding table to application. it highly reduce the performance.

The number of watchers really depends on a lot of different aspects. Can you reproduce a scenario in a pen that shows this terrible performance?


Slippi Stats

Description
Gives your updated stats from Smash Bros Melee. Includes games played, winrate and total time played
Puts the icon of the character that you play most in there too
See your stats in chartslp.com.  Use your connect code to make it your own

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

recheck


'initial' is an invalid keyword argument for accumulate()

import torch
from s3prl.hub import mos_wav2vec2
mos_predictor = mos_wav2vec2().cuda()
wavs = [torch.zeros(160000, dtype=torch.float).to(device) for _ in
range(16)]  # list of unpadded wavs [wav1, wav2, ...], each wav is in torch.FloatTensor
with torch.no_grad():
print(mos_predictor(wavs))
Traceback (most recent call last):
File "/home/lee/s3prl/eval.py", line 44, in
print(mos_predictor(wavs))
File "/home/lee/s3prl/s3prl-master/s3prl/upstream/interfaces.py", line 103, in call
result = super().call(wavs, *args, **kwargs) or {}
File "/opt/conda/envs/python3.7/lib/python3.7/site-packages/torch/nn/modules/module.py", line 1102, in _call_impl
return forward_call(*input, **kwargs)
File "/home/lee/s3prl/s3prl-master/s3prl/upstream/mos_prediction/expert.py", line 59, in forward
prefix_sums = list(accumulate(wav_segments_lengths, initial=0))
TypeError: 'initial' is an invalid keyword argument for accumulate()

s3prl-master\s3prl\upstream\mos_prediction\expert.py
第59
prefix_sums = list(accumulate(wav_segments_lengths))
prefix_sums =list(accumulate(wav_segments_lengths, initial=0))

Hey @RayTzeng!
I believe someone is trying to use your MOS model, are you available to help?

Hi,
Thanks for reporting this issue.
The "accumulate" function we used here requires Python>=3.8.
I'll modify the README file to include the description of this requirement ASAP.


Saving filter set in Collection

Discussed in https://github.com/deckerst/aves/discussions/1106

Originally posted by artisak2 August  1, 2024
Is there a way to save a filtered collection you are currently viewing with all filters applied?
I know that i can "add a shortcut" to the launcher of the collection I am viewing with the filters applied, but I do not see away to save and access this in the app.
For example:
DirA
|
|__DirB
|
|__DirC
|
|__DirD
I would like to find a way to quickly view everthing in DirA but filter out DirC and anything with TAG: "xyz" etc.. etc..
I ask because there are some cases where i find myself repeating, and would find this useful.
Thanks!
edit: Formatting
In fact, if there is a way to have a page with all saved filter sets as "Home" when app opens, that would be even better

From what I see there's a "set as home" option in collections which will save currently applied filters but when you go somewhere else (like to albums view) the filters are lost and you need to either reopen the app or set them up again. Also there seems to be no way to filter by parent directory which I think would be handy.
I think it would be cool to have an option to setup custom collections which will appear on the side menu. In my case it would be enough to setup a collection based on parent directory or multiple directories, for example /sdcard/DCIM for photos or /sdcard/Android/<etc. etc.>/WhatsApp/Media for whatsapp media.

filter by parent directory

Maybe you mean the kind of filters you get via the Explorer page, which filter by path and get all the images recursively.

Yes exactly! I didn't realize you can press currently selected folder at the bottom. Now if only I could set this up as a custom collection so I can quickly switch to it and it doesn't display the currently applied filter below "collection"... which pretty much is what this issue is about.
Actually that's a good point: do you think collection filters should be hidden or visible while entering the custom collection?

I think filters should always be visible, mostly to inform, but also to allow removing them one by one. In my opinion, a "custom collection" (as you call it) is a filter group with a label.
Now, it's already possible to save a filter group as a shortcut, or set a filter group as home. What's missing is the labelling, so that it can be used in the navigation drawer or from the search page.


Do not import settings.scss in the main.scss file

Thats great there are scss files avaiable in the src directory, and that's great that all the scss variables are defined with !default statement. But sadly main.scss file imports settings.scss file, so if we include main.scss file directly from node_modules or bower_components there's no way to re-define these variables. In order to do it we have to copy source files manually into our projects' source directory, so we loose all the benefits of using package managers like npm or bower.
If settings.scss file were not imported in the main.scss file we could define $mfp- variables first and then include the magnific popups' main.scss file.

Sorry, I had an old version of the plugin installed. In the current version it's OK.


Upload Endpoint

Client applications wanting to submit a file message should be able to submit a file to the server for centralized caching/hosting. The server needs to add an HTTP endpoint to allow file uploads.

This is a requirement for the client as defined in https://github.com/uni-im/client/issues/40


Broken Link in README in Palette Section

There is a broken link in the README in regards to how to use the pallette. I am having trouble with code blocks but im positive im doing something wrong but im just trying to learn
my project: https://github.com/alvaromon/BitbyBitBlog.git Sprint1 branch
Im running into an issue that my site Theme is overwriting the text color for fenced code blocks
example using CodeBlockTheme.DarkVioletBase16 where text is supposed to be light pink.

Thanks for submitting the issue.
The fact is that these styles were not meant for hljs in the first place - I have fixed it. I have updated the broken link as well.
Unfortunately, I have checked all pages in your repo (branch Sprint1) and haven't found a page where MudMarkdown is used, so I was not able to test the solution with your page, sorry :(
Nevertheless, I have removed styling from hljs, so I think that it should solve your issue. I have released a new NuGet 0.0.10 - could you please test whether it works now or not?


Add shields

Procrastinating :smile:

Mind if I rebase master to get rid of the merge commit?

Try out the rebase and merge option 😉

I honestly didn't believe you 😆 , GitHub must be doing some magic to get rid of the merge commit. Thanks for the tip.

Not a problem! Also, I sent you an invite for managing these crates on crates.io. Feel free to accept and publish these changes whenever you'd like.


[DX11] ID3D11DeviceContext->RSSetScissorRects() Incorrect mapping

ID3D11DeviceContext::RSSetScissorRects() expects rectangles to be structured as left, top, right, bottom integers, but SILK.NET expects Silk.NET.Maths.Rectangle<int> to be passed in, which has a structure of left, top, width, height via two vector fields Origin and Size.
The workaround for now is to set the Size to be the right and bottom position values, or to cast the correct data to Rectangle<int>* to allow it to be passed in to the above method.
This could be fixed by changing the method to accept D3D11_RECT, which I believe is currently mapped as Silk.NET.Direct3D11.CD3D11Rect.

This has been fixed


[release-1.11] Update istioctl completion file targets

This is an automated cherry-pick of #34091

@googlebot I consent.


dataloader error in run_ytb.sh

I run into a NoneType error with run_ytb.sh
Traceback (most recent call last):
  File "train_ytv.py", line 337, in <module>
    main()
  File "train_ytv.py", line 185, in main
    for i_iter, batch in enumerate(trainloader):
  File "/home/futian.zp/env/anaconda3/envs/torch0.4.0/lib/python3.6/site-packages/torch/utils/data/dataloader.py", line 286, in __next__
    return self._process_next_batch(batch)
  File "/home/futian.zp/env/anaconda3/envs/torch0.4.0/lib/python3.6/site-packages/torch/utils/data/dataloader.py", line 307, in _process_next_batch
    raise batch.exc_type(batch.exc_msg)
TypeError: Traceback (most recent call last):
  File "/home/futian.zp/env/anaconda3/envs/torch0.4.0/lib/python3.6/site-packages/torch/utils/data/dataloader.py", line 57, in _worker_loop
    samples = collate_fn([dataset[i] for i in batch_indices])
  File "/home/futian.zp/env/anaconda3/envs/torch0.4.0/lib/python3.6/site-packages/torch/utils/data/dataloader.py", line 57, in <listcomp>
    samples = collate_fn([dataset[i] for i in batch_indices])
  File "/home/futian.zp/cnns/AGSS-VOS/dataset/vos.py", line 172, in __getitem__
    label_cat.append(labels[i][np.newaxis,:])
TypeError: 'NoneType' object is not subscriptable

@suruoxi
Do you download the 'Split_Annotatoins' directory and put it in the correct path, as mentioned in https://github.com/HuaijiaLin/AGSS-VOS#data-preparation?


Catalog and track how many states are done

+1 on a simple overview of the states that are completed. Heck, even a simple HTML table showing status would be great, perhaps with links to the state-specific docs pages we've been using to track state status in docs/.
Also, fwiw, there's a lot of workflow-related info in those state-specific doc pages (e.g. call logs with agency contacts) that really belong elsewhere such as a private GDoc or some other locale. Not sure if that deserves a separate ticket, but cleaning up those pages has been an unwritten ToDo for a while...


uavcan: add xacti gimbal messages

This are DroneCAN/UAVCAN messages for the Xacti gimbal that is a WIP

seems to me like it should be merged once randy thinks its not WIP any more ?

@davidbuzz,
Thanks for the reminder, this is still a WIP I'm afraid.  The manufacturer is adding more messages to allow controlling the camera as well.

This is merge-able now I think..


README.md in several exercises points to dead link

In many of the exercise README.md, the line "Make sure you have read D Page" points the user to http://exercism.io/languages/dlang, which is the 404 page for exercism. These links should instead point to http://exercism.io/languages/d. I believe this is caused by the fact that docs/EXERCISE_README_INSERT.md also has the issue.
A list of effected exercises are:

[ ] bob
[ ] circular-buffer
[ ] crypto-square
[ ] difference-of-squares
[ ] etl
[ ] gigasecond
[ ] hamming
[ ] hello-world
[ ] leap
[ ] nucleotide-count
[ ] pangram
[ ] raindrops
[ ] react
[ ] rna-transcription
[ ] robot-name
[ ] roman-numerals
[ ] series
[ ] triangle

I see that you got this one fixed. Thanks so much for tackling that!


payload generate:types and payload generate:schema fail

When running payload generate:types or payload generate:schema, the following error occurs:
TypeError: computeBlurhash is not a function
    at src/payload.config.ts:30:9
 ELIFECYCLE  Command failed with exit code 1.

npm dev and npm build seem to work fine. The TypeScript LSP doesn't complain either.
Further investigation is needed into what the generate:types and generate:schema commands do to identify the root cause.

Turns out the issue is that Payload 3.x is ESM and this plugin was CommonJS. This has been addressed in 3.0.1.
cc @linobino1


pydantic.mypy rejects use of covariant type variable for frozen models

Initial Checks

[X] I confirm that I'm using Pydantic V2

Description
Use of the pydantic.mypy plugin to mypy makes mypy complain about generic models with a field of a covariant type variable type. The error I get for the example code is:
test.py: error: Cannot use a covariant type variable as a parameter  [misc]
test.py:8: error: Cannot use a covariant type variable as a parameter  [misc]
Found 2 errors in 1 file (checked 1 source file)

Even if the error on the field declaration (for example the contents field on the Box model in the example) is ignored with # type: ignore then mypy gives an error on derived classes (for example Derived in the example)  which pass on a covariant type variable to the parent.
test.py: error: Cannot use a covariant type variable as a parameter  [misc]
Found 1 error in 1 file (checked 1 source file)

Without the use of the pydantic.mypy plugin the code in the example is accepted both with frozen and non-frozen models.
I expect the use of a covariant type variable as a field type to be invalid if the model is not frozen but valid for a frozen model.
Example Code
from pydantic import BaseModel
from typing import TypeVar, Generic

T_co = TypeVar("T_co", covariant=True)

class Box(BaseModel, Generic[T_co], frozen=True):
    contents: T_co

T2_co = TypeVar("T2_co", covariant=True)

class Derived(Box[T2_co], Generic[T2_co], frozen=True):
    ...

Python, Pydantic & OS Version
pydantic version: 2.5.3
        pydantic-core version: 2.14.6
          pydantic-core build: profile=release pgo=false
                 install path: C:\Code\apps\micromamba\envs\pydantic-test\Lib\site-packages\pydantic
               python version: 3.11.7 | packaged by conda-forge | (main, Dec 23 2023, 14:27:59) [MSC v.1937 64 bit (AMD64)]
                     platform: Windows-10-10.0.19045-SP0
             related packages: mypy-1.8.0 typing_extensions-4.9.0

@adament,
Thanks for reporting this. @dmontagu is taking a closer look at this issue, and we'll get back to you with regards to a fix!

Ah thank you that makes sense, it seems that python/mypy#6178 is exactly what is happening here, unfortunately it does not seem like it has any satisfying resolution.

Thank you for the details. Thinking about it, I think mypy is right that model_construct is not valid for covariant types, since it uses cls which will have T_co bound to the value of the type variable for that instance if called on an instance. In the example of a Box container this will allow creating a Box[Derived] instance containing a Base instance, see the example below:
from typing import TypeVar, Generic
from pydantic import BaseModel

T_co = TypeVar('T_co', covariant=True)
T = TypeVar('T')

class Box(BaseModel, Generic[T_co], frozen=True):
    value: T_co

class Base(BaseModel, frozen=True):
    pass

class Derived(Base, frozen=True):
    pass

def replace(old: Box[Base], value: Base) -> Box[Base]:
    return old.model_construct(value=value)
b = Box[Derived](value=Derived())
print(repr(b))
# Box[B](value=B())
a = replace(b, Base())
print(repr(a))
# Box[B](value=A())

This is exactly the same issue why a mutable container cannot be covariant.

Thinking a bit more, the same issue crops up for __init__ and type[..] types. This again allows us to put a base value inside a container for derived instances.
class Box(Generic[T_co]):
    def __init__(self, value: T_co) -> None:
        self._value = value

    @property
    def value(self) -> T_co:
        return self._value

class A:
    pass

class B(A):
    pass

class FancyBox(Box[B]):
    def __init__(self, value: B) -> None:
        super().__init__(value=value)

def construct(cls: type[Box[A]], value: A) -> Box[A]:
    return cls(value=value)

val = construct(FancyBox, A())

I still expect it to be valid to define immutable containers with covariant generic types. However I do see that the presence of alternative constructors on subtypes makes this unsound. But as my latter example shows, this is not only caused by model_construct since init exhibits similar behavior. For my usecase I would rather give up model_construct for the more natural modelling of our business logic that covariant containers allow. However I guess that means this turns out to be more of a feature request than a bug in the plugin as I initially thought.
As for @dmontagu's guess that mypy special cases init this is confirmed by python/mypy#2850 where they just exclude init and new from the no covariant type variables as function arguments check.
So I would prefer being able to disable the presence of model_construct for some model hierarchies. What do you think @dmontagu?


[Bug] Create workflow + invite issues: Post signup paywall despite workspace upgraded

When create a workspace + inviting + bump the workspace plan your still asked to subscribe through the flow
see https://groups.google.com/a/dust.tt/g/product-archive/c/O89zxFs9rN0
Important because this is the flow we use for our enterprise users

Started investigation. Timeline

on Dec 1, spolu creates the workspace, bumps it to Friends and family, and invites him
On dec 2, he creates a workspace at 1:07pm, and is at the same time a member of it, with NO_PLAN (workspace now marked "legacy")
2mns later, at 1:09, he joins the workspace created by spolu

Here's the query with the right creation times for memberships / workspaces
I anticipate the issue just originates in him creating his own workspace in parallel of the existing one created by spolu
Will continue investigation to confirm

Sitrep
TLDR:

confirmed there's a confusing situation with sign-up invitation screen appearing twice (on click on invitation link, then on clic on verification link)
Issue there seems restricted to the choice of password auth (otherwise no verification link)
Issue is that both screen appear the same, which is confusing. The second one should be directly the form with first/last name & i'm a pro stuff.
AFAICT the flow is otherwise correct; on the second 'sign up' clic, enter details and then get in your workspace as admin on a friend/family plan.

Tested:

creating a workspace, inviting a fresh user (random gmail adress) as admin and bumping the workspace
invitation link recieved, on click: signup proposition screen. On click on sign up, login screen.
on login screen, if password auth chosen => get a verification link
on clic on link, gets same signup proposition screen as above
clicking signup then filling up => works smoothly afterwards

Remaining:

testing with reloading when seeing the signup proposition the second time
testing with changing name on signup as he did;
and trying to understand in what situation he got to change his name; unclear from his email, it would mean he got 2 signup proposition screens which doesn't seem to be the case, unless he clicked multiple times on verification/invitation links

It seems clear he created a workspace for himself; a hypothesis is that at some point he had started with password, then switched to using gmail and created a workspace, then came back to the initial auth

After further investigation, damien had

created himself a workspace, with an adress<EMAIL_ADDRESS>on Nov 19, via google auth
had one created by spolu on Dec 1 on adress<EMAIL_ADDRESS>via user+password login
created one for himself on Dec 2 on adresss<EMAIL_ADDRESS>via google auth

As such he had:

2 entries in our auth0 (gmail + amblea) with the gmail one being dual (don't know how that's handle) since both google login and user/password
3 workspaces, 2 no-plans and 1 friends-family (the one created by spolu)

Furthermore, it's confirmed that when going through a regular invite, a user that did not have a pre-existing auth0 entry -- which will always happen if choosing to create a password -- will get to the invitation screen twice:

when clicking on the email invitation link: at that time, goes direct to invitation screen, no user is created on dust nor on auth0
after successfully logging in via auth0: at that time, auth0 redirects to dust.tt home, which sees a user with no dust account, creates it, and redirects to invitation screen

While not exactly the issues described, it's at the root of confusion / reloadings, so part of the cause of the 3 issues, and should be fixed

created one for himself on Dec 2 on adresss<EMAIL_ADDRESS>via user+password login
To be confirmed if that creation was him trying to login our our app mistakenly creating one for himself in addition to the existing one

Sitrep for this issue
While using the invitation link from spolu, a new workspace was created for damien in addition to the spolu one. Follow-up is to:

understand if in the flow he made he might have accidentally created it, or if in our code paths there is an accidental creation;
check why after he entered details, the authentication first directed him to the workspace he created, then to the workspace he joined (spolu one)


add .nanpa folders

the instructions require you to add a file to the .nanpa/ folder but these folders don't exist so requires you to first make it and then add the file.
should we just check in the folders with a .gitkeep to make this easier? i don't feel strongly but thought maybe its better @nbsp

.nanpa directory at root is enough. you can have changesets for all in the root package using package="livekit-ffi".

oh that makes sense but wasn't clear from the comment it leaves


WIP: HOFF-369: Replace request api with axios (Do not merge this branch to master)

Hi @SavantDhindsaHO please can you

follow our PR template to create a PR https://www.pullrequest.com/blog/writing-a-great-pull-request-description/
resolve conflicts
update your last commit to follow our commit format https://chris.beams.io/posts/git-commit/

This is really great, can you fix all the linting issues, as it makes it hard to review with all the git actions in the way

I'll review it once the above items are sorted


Copy text information about errors from dynamic libraries

When an error happens, and either error code or function name are loaded from an engine, if ERR_print_errors() is invoked after the ENGINE_free for this engine, we see only codes, not the text messages.
It may make sense to duplicate the error code/error message in such cases to print more detailed information about the particular error.

This needs further investigation.  I thought strings got copied, at least for reason strings, but I'm less sure about additional error data.  Is it the latter that you were talking about here, @beldmit?

If I remember correctly, no data - only codes - is available. I can't reproduce it immediately :(

Hmm. I recall that it happens when an engine delegates some operations to another engine, and the 2nd one is unloaded.

@levitte, I've caught it in our commercial library:
openssl cms -decrypt -debug_decrypt -in ../standalone-test/tc26_cms/encrypted_keytrans_a241.pem -inform PEM -inkey ../standalone-test/tc26_cms/recipient512_key.pem
The output is
Error decrypting CMS using private key
140006792324160:error:800C1068:lib(128):my_func2:bad mac:ce_keyexpimp.c:162:
140006792324160:error:8009907E:lib(128):my_func1:cannot unpack ephemeral key:ce_pmeth.c:955:
140006792324160:error:2E08C068:CMS routines:cms_RecipientInfo_ktri_decrypt:cms lib:crypto/cms/cms_env.c:457:
140006792324160:error:2E0B6084:CMS routines:CMS_decrypt_set1_pkey_and_peer:no matching recipient:crypto/cms/cms_smime.c:676:

@beldmit is this still an issue in need of addressing on 3.3?

It's still issue for 3.1 and I think also for 3.3.


comunication across unity and react

Hi,
Is there a way to pass data from the ui generated by react and unity game?
i.e. changing the move speed of a gameobject when clicking a button.

Right now the easiest way is to use NamedAssets. Added an example here:
https://github.com/KurtGokhan/react-unity-full-sample/blob/master/react/src/interop/index.tsx
You can see this example in action by going to Scenes/Interop

Added wiki page with same info.


String block optimisations

This stack of commits is a batch of brand-new optimisations on String, especially regarding the manipulation of UTF-8 characters.
As a baseline, last Tuesday @privat tried the JSON parser on a 30MiB json file, the execution took approximately 10 seconds for ~38 GIr with Valgrind, now and with his Nitcc upgrades, the total runtime is less than 2 seconds for ~11 GIr with Valgrind.

I'm a little worried about the 4bytesfetchning and the native things.

Yup, before merging in master it could be nice to see whether it breaks stuff in android with their 32 bits long values (minus tagging, hence 30)
This, and maybe some more safety could be added later, though at the moment it does not seem to cause any trouble

you should rebase this one on master since #1882 is merged

Well, as predicted, it looks like the pre-fetching has some issues on certain platforms:

On Android, right now it seems more of an import bug than anything else, ntohl cannot be found although I added the import to <sys/endian.h> in a ifdef, maybe @xymus has an idea on how to fix this ?
On PNaCl too, the import error is here, but more than this, an overflow error prevents me from compiling and this one is a bit trickier since it involves compiling Int representations in a specific manner to have it work, I don't really have a solution right now for it to work and I suspect Android will start spitting out the same kind of error when we're done with the import error

So here it is, if you guys have any ideas as to how to fix both issues without resorting to have the old implementation as fallback whenever it cannot compile with the perf one, I'd gladly take your suggestions into account

@R4PaSs on Android you can use be32toh and the likes instead of ntohl. But there is still naming differences so take a look at the defines at the beginning of lib/binary/binary.nit.

Actually, to be clear, it's betoh32 on Android and be32toh on GNU/Linux. That's why I define be32toh when it is not available.

Reroll: should fix the import issues on Android, could not include fixes from #1898 due to bootstrap issues

OK, tests should pass !

please resolve conflicts with #1896
−6,45 according to valgrind (nice!)  http://gresil.org/jenkins/job/nit_bootstrap/PerfPublisher/
some tests failed with the interpreter http://gresil.org/jenkins/job/nit_tests/1106/testReport/

Reroll: Fixed conflict and added some hardwiring to improve the speed of utf8_length in interpreter

OSX, OSX never changes.
http://gresil.org/jenkins/view/Intégration/job/CI Github OSX/196/testReport/
Google is inconsistent on the issue. Some propose <machine/endian.h>, it exists but does not define be32toh nor betoh32 . Some use <Endian.h>, but does not exists on the macminit. I found https://gist.github.com/panzi/6856583 that might work?

OK, I've included the trick from the Gist you mentioned, let's see if it does work

jenkins: test osx please

Well, no errors remaining it seems ! http://gresil.org/jenkins/job/CI Github OSX/197/


Client options to back up wallet

Hope i'm following protocol here - it's the first time i've used Github :D
Another idea i suggested was in-client options to allow the user to back up their wallet - save them having to search through directories for a specific file (Assuming they know what file in the first place!) which isn't exactly what i call user friendly for Average Joe.
It would just be another step in the right direction for the average joe to use NEM if this were implemented.

same as this:
https://github.com/NewEconomyMovement/NemCommunityClient/issues/123


App Rating

The Issue
As a user, I would like to be prompted to leave a rating in the google play store.
If I want to leave a negative review, I should be given an opportunity to submit it directly to LBRY
Internal Use
Acceptance Criteria

Get prompted to a leave a review after x number of hours of use
Leave a positive review at Google play
Leave a negative review at LBRY

Definition of Done

[ ]  Tested against acceptance criteria
[ ] Tested against the assumptions of the user story
[ ] The project builds without errors
[ ] Unit tests are written and passing
[ ] Tests on devices/browsers listed in the issue have passed
[ ] QA performed & issues resolved
[ ] Refactoring completed
[ ] Any configuration or build changes documented
[ ] Documentation updated
[ ] Peer Code Review performed

Done.