added stringRotation.md

Hey, @PeadarODonnell 👋 Thanks for opening this PR.
It does look interesting but what would be the use case of this snippet?
At this stage, we are trying to add quality content to 30-seconds with real-life use cases. This one doesn't seem that useful to me 😕 Could you provide some real-life use cases? Thanks!

Thanks for contributing, but I'm also pretty certain this has no real-life applications for the most part. Closing due to that.

That's fair enough, it had a really specific use case, ie. if you were looking for a string rotation between two strings of same length but yeah, you's are right when I look at it, not a lot of people will actually be searching for a string rotation in real life :disappointed_relieved:
But thank you so much for looking at it and giving advice, I definitely want to add only quality content to 30-seconds in the future! :smile:

:3


 I half expected this to happen but the lights became unstuck in a few places. I decided to remove it, clean the glue away and secure it with screw cable clips. I have a sit-stand and it is important to me that I can't see the light strip or fitting when the desk is at it's lowest height. The LEDs on the Hue strip are approx 5 1/2cm - 6cm apart.

https://www.amazon.co.uk/gp/product/B07TZGP9DB


Emmet ignore css.intUnit setting when provide value with fraction

VSCode Version: 1.25.0
OS Version: macOS 10.13.5

Steps to Reproduce:

I have in settings:

"emmet.preferences": {
    "css.intUnit": "rem"
}

In scss file I write:

.test {
    m5
}

and hide tab after m5
I expected to get: margin: 5rem;
I get: margin: 5rem;
This is OK.

I write in scss file:

.test {
    m1.5
}

and hide tab after m1.5
I expected to get: margin: 1.5rem;
I get: margin: 1.5em;
This is NOT OK. I got em instead of rem
Does this issue occur when all extensions are disabled?: Yes

Add "css.floatUnit": "rem" under your emmet preferences in the settings.

It works, thanks @ramya-rao-a


Support auth_password_format=scram

Hey,
thanks the awesome docker config. This small patch adds a auth_password_format entry the template config file. I defaulted it to SCRAM since it's a terrible idea to store any passwords in plaintext.
However, the ejabberd documentation says this will not work with foreign SIP/TURN authentication methods. Since there is nothing about SIP/TURN in the config template this shouldn't be a problem. However, I'm not completely sure about LDAP.
Best, Thomas

Great! LDAP always try to auth the user against the ldap server. Thank you for your contribution!


add nrepls support for toggle recording

Adding nrepl support for toggling the recording. Se complementary PR for cider-storm.

Thanks @skallinen !


Connection.remoteAddr missing

I used to use the Connection.remoteAddr to determine if the ice transport was on the same LAN or not. This seems to have been removed.
What is the recommended way to find the connected pair(s)?

I had simply removed remoteAddr without thinking too much about it because it wasn't used in this repository
I'll put it back in later.


Fishing rod cast event

Is there an event that fires when a player casts a fishing rod and when a rod dobber hits the water? if not could those be added? And for the dobber hit water event could a location be added?

And when you switch item slots when having cast a fishing rod the dobber does not disappear and stays even when not holding a fishing rod.

Casting a fishing rod would be something like ProjectileShootEvent (I don’t remember the precise name).
Fishing in water is not supported by MinestomPvP (water physics in general aren’t yet) and so there is no event to detect the bobber hitting water.

And when you switch item slots when having cast a fishing rod the dobber does not disappear and stays even when not holding a fishing rod.

Is this issue still present? It does not happen for me. If so, can you provide a minimal code example?


nix profile from flake

Summary
Copied from #1588
How was it tested?

Current dependencies on/for this PR:

main

PR #1692   👈

This stack of pull requests is managed by Graphite.

fails with:
--- FAIL: TestScripts (0.05s)
    --- FAIL: TestScripts/php.test (319.64s)
        testscript.go:534: > exec devbox run php index.php
            [stderr]
            Ensuring packages are installed.
            Error: error running script "php" in Devbox: Command: /nix/var/nix/profiles/default/bin/nix print-dev-env $WORK/.devbox/gen/flake --extra-experimental-features ca-derivations --option experimental-features nix-command flakes fetch-closure --json: exit status 1

            Error: There was an internal error. Run with DEVBOX_DEBUG=1 for a detailed error message, and consider reporting it at https://github.com/jetpack-io/devbox/issues
            program not built with -cover
            [exit status 1]
            FAIL: languages/php.test.txt:1: unexpected command failure

    --- FAIL: TestScripts/unfree.test (353.82s)
        testscript.go:534: # Test ensures that we can add and remove "unfree" nix packages (1.499s)
            # we could test with slack and/or vscode. Using slack since it is lighter. (352.309s)
            > exec devbox add slack
            [stdout]
            Running /nix/var/nix/profiles/default/bin/nix eval --json $WORK/.devbox/gen/flake#devShells.x86_64-darwin.default.buildInputs --extra-experimental-features ca-derivations --option experimental-features nix-command flakes fetch-closure
            [stderr]
            Ensuring nixpkgs registry is downloaded.
            Downloaded 'github:NixOS/nixpkgs/fd04bea4cbf76f86f244b9e2549fca066db8ddff' to '/nix/store/pfixw35k0jwhz6mrhd6jw0vlppjjkamg-source' (hash 'sha256-imn+/Rj+bqagOSm7GmRDbrqkxtc7QnjY3Cu85gv46BU=').
            Ensuring nixpkgs registry is downloaded: Success
            Info: Adding package "slack@latest" to devbox.json
            program not built with -cover
            > stderr 'Installing package: slack.'
            FAIL: packages/unfree.test.txt:7: no match for `Installing package: slack.` found in stderr

FAIL
coverage: [no statements]
FAIL	go.jetpack.io/devbox/testscripts	438.322s
FAIL
Error: error running script "test" in Devbox: exit status 1

Made some progress.
The unfree testscript needed a update for which output to look for. So fixed.
The php-testscript was failing due to nix profile install adding multiple buildInputs for the same package (in this case, composer is added by both the php plugin and as a devbox package). Made a change to reuse our current approach of setting --priority in the nix profile install.
So, this is very much usable. However, I feel there are some UX fixes to be made:

We'll need to prefetch nixpkgs for when we are going to download them. This allows us to show a nicer message than when the flake.nix downloads them as a side-effect of being evaluated.
devbox rm <pkg> needs UX improvement to print some nice messages. The current messages have gotten dropped.
Adding a package to the nix profile currently displays the /nix/store path as in:

[1/1] /nix/store/c9mw21jbrpprfd8vh735zvangxmh7j5a-cowsay-3.7.0
[1/1] /nix/store/c9mw21jbrpprfd8vh735zvangxmh7j5a-cowsay-3.7.0: Success

We should parse the package name and version from this path, and display just that.
But this seems pretty doable and should simplify our logic quite a bit.

Currently, running into this CICD error:
       2024/01/03 01:37:52 running command: /nix/var/nix/profiles/default/bin/nix profile install --profile $WORK/.devbox/nix/profile/default --impure --priority 8 /nix/store/cyqwmgbir56zsn600z0sgnvdribnfgpj-process-compose-0.40.2 --extra-experimental-features ca-derivations --option experimental-features nix-command flakes fetch-closure
        don't know how to build these paths:
          /nix/store/cyqwmgbir56zsn600z0sgnvdribnfgpj-process-compose-0.40.2
        error: path '/nix/store/cyqwmgbir56zsn600z0sgnvdribnfgpj-process-compose-0.40.2' is required, but there is no substituter that can build it

converting to Draft while I fix the perf issues with package validation.

I lean yes on this, but just want to flag the risk on a potential performance regression on add/remove.
Imagine removing a package and if you are missing nixpkgs for something or if a package was evicted from the nix store, you have to wait for the full sync. Not what you were expecting.

@mikeland73 yeah, that is a trade off for sure. I tried to acknowledge that in the PR summary (see Behavior Change section)

Perf fixes:

For devbox add/rm outside devbox environment, we'll skip the computeEnv and syncNixProfile steps.
We'll augment validatePackagesToBeInstalled to actually do the install by doing nix build <package.installable> so that devbox add can successfully install the package.

@mikeland73 @gcurtis PTAL. I think i've addressed the perf concern.
For the scenario we were concerned about (devbox add/rm/update not in a devbox environment) I now skip computeEnv and syncNixProfile entirely, and install into nix store via nix build. We then do the rest of the operations and delete the local.lock file (simplest way to "mark it dirty"), so that the next time we do ensureStateIsUpToDate(mode=ensure) it will recompute the env and syncNixProfile.
This PR is getting rather large. Let me know if you'd like me to split it up.

re-written in #1724 and the PR stack below that.


linter: configuration file json schema

We need to produce a json schema.
https://docs.rs/schemars/latest/schemars
I think we should make it as strict as possible, and display all the rules.

Can also use schematic ;)
https://github.com/moonrepo/schematic


Is telescope truly optional?

The docs say that telescope is an optional dependency.
"telescope.nvim (if you want to browse bookmarks otherwise no need)"
However, if I run the setup method without telescope, I get the following error.
I am using ibhagwan/fzf-lua instead of telescope.
Error detected while processing /home/user/dotfiles/vim/init.lua:
E5113: Error while calling lua chunk: ...r/.local/share/nvim/lazy/browse.nvim/lua/browse/init.lua:1: module 'telescope.pickers' not found:
        no field package.preload['telescope.pickers']
cache_loader: module telescope.pickers not found
cache_loader_lib: module telescope.pickers not found
        no file './telescope/pickers.lua'
        no file '/__w/neovim/neovim/.deps/usr/share/luajit-2.1.0-beta3/telescope/pickers.lua'
        no file '/usr/local/share/lua/5.1/telescope/pickers.lua'
        no file '/usr/local/share/lua/5.1/telescope/pickers/init.lua'
        no file '/__w/neovim/neovim/.deps/usr/share/lua/5.1/telescope/pickers.lua'
        no file '/__w/neovim/neovim/.deps/usr/share/lua/5.1/telescope/pickers/init.lua'
        no file './telescope/pickers.so'
        no file '/usr/local/lib/lua/5.1/telescope/pickers.so'
        no file '/__w/neovim/neovim/.deps/usr/lib/lua/5.1/telescope/pickers.so'
        no file '/usr/local/lib/lua/5.1/loadall.so'
        no file './telescope.so'
        no file '/usr/local/lib/lua/5.1/telescope.so'
        no file '/__w/neovim/neovim/.deps/usr/lib/lua/5.1/telescope.so'
        no file '/usr/local/lib/lua/5.1/loadall.so'
stack traceback:
        [C]: in function 'require'
        ...r/.local/share/nvim/lazy/browse.nvim/lua/browse/init.lua:1: in main chunk
        [C]: in function 'require'
        /home/user/.config/nvim/lua/plugin_config.lua:227: in main chunk
        [C]: in function 'require'
        /home/user/dotfiles/vim/init.lua:8: in main chunk

Hmm, actually there have been a lot of changes that I recently did and those require telescope.nvim. It can be a good idea to integrate both fzf-lua and telescope.nvim.
I will not be able to work on it currently.

Closing this as we have made telescope required.


Listing block stores block id in its data

Volto 16.20.7
Steps to reproduce:

create a new page. Add a listing block, don't configure anything, save it.

    "a126360e-9408-4036-b6df-1b79a877f783": {
      "@type": "listing",
      "block": "a126360e-9408-4036-b6df-1b79a877f783",
      "headlineTag": "h2",
      "query": [],
      "variation": "default"
    },

@tiberiuichim This was already fixed in volto 17 (I think in https://github.com/plone/volto/pull/4239), but not backported to volto 16 -- I assume because it's a backwards incompatible change in the block data format.

@davisagli Thanks! I guess I need to catch up with 3 months of Volto development :-(


Properly Handle Default Edition

Summary
Currently, the configuration allows to set the default Enso engine version (for example using enso default launcher command). However since the introduction of the edition system, it is the edition, not engine version, that is important for setting up the project - as there could be multiple editions tied to a single engine version.
We need to replace this system with the new one - enso default should set the default edition and this default edition should be respected when creating new projects or opening projects with no edition specified.
Currently, a temporary default edition is the default edition tied to the current engine version, but the goal is to make it configurable and default to the latest installed engine version instead.
Value

Project configuration is consistent.

Specification

[ ] Modify the global configuration to specify a default edition instead of engine version.
[ ] Modify the enso default command.
[ ] Modify the Runner to properly handle the default edition.
[ ] Modify the ProjectCreationService and ProjectService to properly handle the default edition.

Acceptance Criteria & Test Cases

The above specification has been completed.
[ ] The changes have been sufficiently tested.

#1930 is possibly related.


Fix encoding of supplementary characters

Fixes #2.
This PR adds test for supplementary characters (using the first supplementary character, U+10000, as an example) for escapeHtmlAttr, escapeCss, and escapeJs. The tests all fail on the current master branch and pass with the included changes.

@padraic could you please review this change?

ping @padraic

ping @padraic

ping @weierophinney @Ocramius  - can you provide this a review

For me as far as I know this fix looks fine. All current tests passed as well as the new ones which matches the result for the given test code point U+10000 listed here http://www.fileformat.info/info/unicode/char/10000/index.htm

Apologies for the delays all. Looks good here.

merge, then?

Any possibility of a merge before this celebrates its first birthday?

Thanks, @zerocrates - released with 2.5.2.


RR-439 - Correctly set the last updated by/at fields on the Work & Interest tab

This PR correctly sets the last updated by/at fields on the Work & Interest tab, based on whether the main 'top level' induction, or the future Work Interests were the last thing to be updated.
This is a draft PR at the moment. I want to make sure we are happy with this approach in respect of the logic being readable/understandable at some point in the future.
This only introduces this logic for the long question set journey. If we are happy with the approach, naming of variables etc, then I need to do a similar thing for the short question set journey. I plan to do it in this PR, but for ease of this initial review and to get the approach right I have opted to not introduce it yet.
I guess the fundamental question is, if you stumbled upon the logic I've introduced in the mapper at some point in the future, would you follow it? Would you understand that the last modified for this section of the screen is based on which part of the induction was updated last? Do the tests help you understand that logic?

This approach makes sense to me 👍🏻

I also think this approach is perfectly reasonable.
A related question...what happens if say the workAndInterests are updated, but the main induction isn't? Is the modifiedDateTime of the main induction updated?

A related question...what happens if say the workInterests are updated, but the main induction isn't? Is the modifiedDateTime of the main induction updated?

You'd probably be closer to me than this as thats a (CIAG) API question! 😁
But my understanding is that if you updated workInterests, then the CIAG API updated by/at fields for the workInterests object are updated, but the main induction ones (top level) are not.
That's certainly the basis of my logic to be fair, and is what I've experienced from the (limited) testing I've done

You'd probably be closer to me than this as thats a (CIAG) API question! 😁 But my understanding is that if you updated workInterests, then the CIAG API updated by/at fields for the workInterests object are updated, but the main induction ones (top level) are not. That's certainly the basis of my logic to be fair, and is what I've experienced from the (limited) testing I've done

I might be closer to the API, but we both know that the API behaviour here is driven by the UI! 😂

I might be closer to the API, but we both know that the API behaviour here is driven by the UI! 😂

Sad but true! 🤷♂


Input always formats as USA?

Expected Behavior
Like on the demo page, the phone number input should not be formatted as it is typed (since the format property is false). If the format property is true, it should format the phone number to match the selected country.
Current Behavior
Even with the format property set as FALSE, a phone number typed into the input is formatted as<PHONE_NUMBER>.

Steps to Reproduce
Input is initialized
Code:

<IntlTelInput
  containerClassName="intl-tel-input"
  inputClassName="form-control"
  fieldName="user[phone_number]"
/>

Resulting properties of the component when rendered:
allowDropdown: true
autoComplete: "off"
autoFocus: false
autoHideDialCode: true
autoPlaceholder: true
containerClassName: "intl-tel-input"
countriesData: null
customPlaceholder: null
defaultCountry: ""
defaultValue: ""
disabled: false
excludeCountries: []
fieldId: ""
fieldName: "user[phone_number]"
format: false
formatOnInit: true
geoIpLookup: null
inputClassName: "form-control"
nationalMode: true
noCountryDataHandler: null
numberType: "MOBILE"
onFlagClick: null
onPhoneNumberBlur: null
onPhoneNumberChange: null
onPhoneNumberFocus: null
onSelectFlag: null
onlyCountries: []
preferredCountries: ["us", "gb"]
separateDialCode: false
telInputProps: {}
useMobileFullscreenDropdown: true

Environment

Version:
v8.2.0
Browser:
Chrome 98.0

I think this has to do with setting fieldName. Likely an issue on my end.


Are absolute and relative tolerances equivaltent in multi-language benchmarks?

I was discussing Julia ODE solvers performance compared with solvers available in MATLAB and other languages and the someone raised a following question: are the absolute and relative tolerances defined in an equivalent way for the benchamarked solvers? Will the same abstol and reltol give the same precision in Julia, MATLAB and Sundials?

We are using work-precision diagrams. When you look at the diagram, it shows the true error, i.e. the error of the computed solution against a reference or analytical solution, vs time. This allows for even methods which implement adaptivity differently (and thus interpret the tolerances slightly differently) to be compared just by taking a vertical line, because that is then directly "how accurate vs how fast"

Well, that compensates for difference interpretations of the tolerance set by the user, but it does not explain what you should set it to in order to get approximately the same answer. I.e. a generalization such as "1e-4 in DASSL corresponds to 1e-5 in CVODE".

That's a completely different question but unrelated to the benchmarks. It's pretty much impossible to ever know a true mapping to global error in general since for every problem the translation can be different. Sometimes you have RK methods with a PI adaptivity that completely changes the equation, so it may track global error more accurately than say a P-adaptive method, and then you have predictive controllers, etc. But that does not effect the benchmarks because the benchmarks just compute the global error you get from a wide range of tolerances, and so if you look at the benchmarks you see that they are run with many (abstol,reltol) pairings and then the true error is what's actually calculated and plotted there. From diving around the benchmarks you will see for example that CVODE is not very good at tracking the global error, it tends to give a bit more error for the same tolerances as other methods, but using a work-precision plot it's compensated for because you just take a vertical line.


fix(mysql): fix dependency for jdbc-mysql

Spotted by @mohamedhafez

@enebo or @headius, would you guys mind taking a look at this? It seems like jdbc-mysql has been unintentionally locked to versions 5.1.*, causing https://github.com/jruby/activerecord-jdbc-adapter/issues/1082. If that's indeed unintentional it would be really nice to get that fixed up!

@enebo or @headius, would you mind please merging this PR, since it will really help out our JRuby production deployment? We have MySQL 8 in production and JRuby is still stuck on the MySQL 5.7 drivers, even though the new v8 drivers are available in the latest jdbc-mysql.

I will spind new releases this week.  Sorry I missed this one.  Thanks to @dr-itz again!

This has been updated for 52.x, 60.x, and 61.x.  Our build system is all for one and one for all so you will notice all gems were released in this project when only mysql gemspec was changed....Weird but the time to fix it is not time I want to take right now.

Thank you @enebo, appreciate your help, the MySQL 8 JDBC drivers are working very well in production. :tada:


Extension list issue

Steps to reproduce

go to extension section

Expected behavior

all extensions should be showed

Actual behavior

failed to get extension

Crash logs
No response
Aniyomi version
aniyomi r4517
Android version
12
Device
Samsung m21
Other details
No response
Acknowledgements

[X] I have searched the existing issues and this is a new ticket, NOT a duplicate or related to another open or closed issue.
[X] I have written a short but informative title.
[X] If this is an issue with an extension, I should be opening an issue in the extensions repository.
[X] I have tried the troubleshooting guide.
[X] I have updated the app to version <IP_ADDRESS>.
[X] I have updated all installed extensions.
[X] I will fill out all of the requested information in this form.

I am getting the same issue in the manga section hope they fix it soon

Same issue ... anime works for me but not manga ... it just refuses to load ...

Having Same issue on device huawei LTS update.

I too have an extension update failure.

Facing same issue after I updated to <IP_ADDRESS>
Reverting back to <IP_ADDRESS>, issue didn't reproduce.
Device Vivo Iqoo 7

@anujtl8 your step doesn't work for me.

I installed tachiyomi. and updated the extensions from their. So problem with manga is solved. but anime extensions are not getting loaded still

I have updated the manga extensions on tachiyomi as well, but the list still does not load in aniyomi. Only anime extensions are loading now.

every single manga extension vanished from aniyomi.

Apparently this issue is fixed in tachoyomi version 0.14.4 and mentioned in the changelog under “bug fixes”. It seems to be an issue on devices that use the MIUI interface (Xiaomi, Huawei, Honor etc.).
“Fix installing extensions on MIUI (@stevenyomi)”
We need this bug fix applied to Aniyomi ASAP.
PS. Do not update the manga extensions if you’re planning to use aniyomi as they won’t be showing as sources anymore till this bug is resolved.

Manga extensions are disappearing because Tachiyomi recently updated the extensions-lib version to 1.4, which Aniyomi doesn't support yet. (The extensions now have version 1.4.x)
@JSPSolvent The MIUI issue is totally another one. That issue is when people fail to install extensions (getting failed to parse package error) after downloading them.

Until when is going to resolve this problem ?  I also can't download any
other manga extension, It doesn't showing at all
On Tue, Feb 14, 2023, 10:27 PM stevenyomi @.***> wrote:

Manga extensions are disappearing because Tachiyomi recently updated the
extensions-lib version to 1.4, which Aniyomi doesn't support yet. (The
extensions now have version 1.4.x)
@JSPSolvent https://github.com/JSPSolvent The MIUI issue is totally
another one. That issue is when people fail to install extensions (getting
failed to parse package error) after downloading them.
—
Reply to this email directly, view it on GitHub
https://github.com/jmir1/aniyomi/issues/888#issuecomment-1430071874, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/AZOH2JPXAKQUGZTDDK5I66LWXO2PZANCNFSM6AAAAAAU2PG56Q
.
You are receiving this because you are subscribed to this thread.Message
ID: @.***>

Bro, if possible can you please fix the problem?@stevenyomi

Bro, if possible can you please fix the problem?

No, I'm not interested in this.

I have updated all my current manga extension. therefore i can't find any in aniyomi. is there any way i can get them back? @stevenyomi

I have updated all my current manga extension. therefore i can't find any in aniyomi. is there any way i can get them back?

Find them in https://github.com/tachiyomiorg/tachiyomi-extensions/tree/5ff924127cbeff435efd1604fbb39ebfb67c3882/apk, then uninstall and reinstall the old version.

Use beta version at http://github.com/jmir1/aniyomi-mpv-beta/releases/latest

thanks bro

@Samfun75 bro can i use the latest updated extension in this version u  mentioned?

Yes, I have all my manga extensions on 1.4 and they work fine. Join the aniyomi discord if you need help.

👍

Duplicate of #844


multiple databases

Hi. Are there any way to use multiple databases with FastApi like flask-sqlalchemy?
I have founded SO question about it, but this question is without any comments. Of course I can create several dependencies, but it doesn't seem like correct way. So what shall I do? Thanks.

Creating multiple dependencies seems like a perfectly reasonable method to achieve using multiple databases in your application. I've done this in a few different applications. I wouldn't do what's being attempted in the SO question you link to, just use your dependencies explicitly where you need them.

Creating multiple dependencies seems like a perfectly reasonable method to achieve using multiple databases in your application. I've done this in a few different applications. I wouldn't do what's being attempted in the SO question you link to, just use your dependencies explicitly where you need them.

@n8sty firstly, thanks for your answer.
Secondly, how do you use multiple databases in your project? I prefer to use with middleware and it seems it's impossible to do it in this case.
from fastapi import FastAPI

from fastapi_sqlalchemy import DBSessionMiddleware

app = FastAPI()
app.add_middleware(middleware_class=DBSessionMiddleware, db_url=...)

@n8sty firstly, thanks for your answer.
Secondly, how do you use multiple databases in your project? I prefer to use with middleware and it seems it's impossible to do it in this case.
from fastapi import FastAPI

from fastapi_sqlalchemy import DBSessionMiddleware

app = FastAPI()
app.add_middleware(middleware_class=DBSessionMiddleware, db_url=...)

DBSessionMiddleware makes the session available through a global db object. If that was not the case, it would have been possible.
If you want to stick with this solution, you can think of creating your own middleware, a "FactoryDBSessionMiddleware" :kissing:

DBSessionMiddleware makes the session available through a global db object. If that was not the case, it would have been possible.
If you want to stick with this solution, you can think of creating your own middleware, a "FactoryDBSessionMiddleware" :kissing:

It's project specific, but one example is the case where you want to write to a "writer" database endpoint but read from a "reader". In that case, I'll create two dependencies, db_writer and db_reader and build up more complicated dependencies from there. I push a lot of logic into dependencies, so if I had a /posts route, I'd then have a create_posts dependency, that itself depends on db_writer, and something similar for the GET` route. This is a bit verbose, but it's quite explicit.
I've tried using middleware and I opted for the above approach because it removes having to push logic into the middleware that effectively chooses what database to use. If you're only ever using two instances of the same database, let's say two Postgres databases in the reader/writer setup I mentioned, then middleware is quite slick. But, if you want to use different source types, the middleware can get bloated. Obviously, all just my opinion.

It's project specific, but one example is the case where you want to write to a "writer" database endpoint but read from a "reader". In that case, I'll create two dependencies, db_writer and db_reader and build up more complicated dependencies from there. I push a lot of logic into dependencies, so if I had a /posts route, I'd then have a create_posts dependency, that itself depends on db_writer, and something similar for the GET` route. This is a bit verbose, but it's quite explicit.
I've tried using middleware and I opted for the above approach because it removes having to push logic into the middleware that effectively chooses what database to use. If you're only ever using two instances of the same database, let's say two Postgres databases in the reader/writer setup I mentioned, then middleware is quite slick. But, if you want to use different source types, the middleware can get bloated. Obviously, all just my opinion.

Thanks

Thanks

Any examples?

@Giovanni-94 smth like
from sqlalchemy.ext.declarative import as_declarative

@as_declarative()
class ModelDB1:
    pass

@as_declarative()
class ModelDB2:
    pass

###

from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker

engine1 = create_engine('postgresql://dev@postgres:5432/db1')
engine2 = create_engine('postgresql://dev@postgres:5432/db2')

DBSession = sessionmaker(...)
DBSession.configure(binds={ModelDB1: engine1, ModelDB2: engine2})

def get_session():
    db = DBSession()
    try:
        yield db
    finally:
        db.close()

###

from fastapi import APIRouter, Depends
from sqlalchemy.orm import Session

router = APIRouter()

@router.get('/')
def get(self, session: Session = Depends(get_session)):
    pass

thanks @elsimqoz for the reply, any example with tortoise orm?

thanks @elsimqoz for the reply, any example with tortoise orm?

Me too i need it!!

hello, with this implementation, I'm get this error:
sqlalchemy.exc.UnboundExecutionError: Could not locate a bind configured on SQL expression or this Session.
Could you help me, please

hello, with this implementation, I'm get this error: sqlalchemy.exc.UnboundExecutionError: Could not locate a bind configured on SQL expression or this Session. Could you help me, please

I'm not sure what your specific issue is, however, it seems more an SQLAlchemy issue than Fastapi.
Here is the section on the sessionmaker factory in the SQLAlchemy documentation.
Generally, you want to make sure you call the configure method above before you instantiate and use your session object (e.g. DBSession above).

I use tortoise to configure read-write separation, but in the actual use process, there is a problem and I need help
from typing import Type

from tortoise import Model

class Router:
    @staticmethod
    def db_for_read(model: Type[Model]):
        return "slave"

    @staticmethod
    def db_for_write(model: Type[Model]):
        return "master"

TORTOISE_ORM = {
    'connections': {
        'master': {
            # 'engine': 'tortoise.backends.asyncpg',
            'engine': 'tortoise.backends.mysql',
            # 'engine': 'tortoise.backends.aiomysql',
            'credentials': {
                'host': '<IP_ADDRESS>',
                'port': '3306',
                'user': 'root',
                'password': 'password',
                'database': 'base',
                'minsize': 1,
                'maxsize': 5,
                'charset': 'utf8mb4',
                'echo': True
            }
        },
        'slave': {
            'engine': 'tortoise.backends.mysql',
            'credentials': {
                'host': '<IP_ADDRESS>',
                'port': '3306',
                'user': 'root',
                'password': 'password',
                'database': 'base',
                'minsize': 1,
                'maxsize': 5,
                'charset': 'utf8mb4',
                'echo': True
            }
        },
    },
    'apps': {
        'models': {
            'models': ['apps.users.models', "aerich.models"],
            # 'models': {"models": ["app.models.model"]},
            'default_connection': 'master',
        }
    },
    'routers': [Router]
}

>>> admin = AdminModel.get_or_none(name='admin')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Users\fatpuffer\AppData\Local\pypoetry\Cache\virtualenvs\baseapi-FOv_RZhh-py3.7\lib\site-packages\tortoise\models.py", line 1343, in get_or_none
    db = using_db or cls._choose_db()
  File "C:\Users\fatpuffer\AppData\Local\pypoetry\Cache\virtualenvs\baseapi-FOv_RZhh-py3.7\lib\site-packages\tortoise\models.py", line 1031, in _choose_db
    db = router.db_for_read(cls)
  File "C:\Users\fatpuffer\AppData\Local\pypoetry\Cache\virtualenvs\baseapi-FOv_RZhh-py3.7\lib\site-packages\tortoise\router.py", line 36, in db_for_read
    return self._db_route(model, "db_for_read")
  File "C:\Users\fatpuffer\AppData\Local\pypoetry\Cache\virtualenvs\baseapi-FOv_RZhh-py3.7\lib\site-packages\tortoise\router.py", line 31, in _db_route
    return connections.get(self._router_func(model, action))
  File "C:\Users\fatpuffer\AppData\Local\pypoetry\Cache\virtualenvs\baseapi-FOv_RZhh-py3.7\lib\site-packages\tortoise\router.py", line 18, in _router_func
    for r in self._routers:
TypeError: 'NoneType' object is not iterable
>>>

does

@Giovanni-94 smth like
from sqlalchemy.ext.declarative import as_declarative

@as_declarative()
class ModelDB1:
    pass

@as_declarative()
class ModelDB2:
    pass

###

from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker

engine1 = create_engine('postgresql://dev@postgres:5432/db1')
engine2 = create_engine('postgresql://dev@postgres:5432/db2')

DBSession = sessionmaker(...)
DBSession.configure(binds={ModelDB1: engine1, ModelDB2: engine2})

def get_session():
    db = DBSession()
    try:
        yield db
    finally:
        db.close()

###

from fastapi import APIRouter, Depends
from sqlalchemy.orm import Session

router = APIRouter()

@router.get('/')
def get(self, session: Session = Depends(get_session)):
    pass

does it support read from one database and writer to another database ?

Thanks for the help here everyone! 👏  🙇
Thanks for reporting back and closing the issue 👍

Sorry for the long delay! 🙈  I wanted to personally address each issue/PR and they piled up through time, but now I'm checking each one in order.

I am getting that same issue, did you manage to solve it?
The approach above it works for me when running standard queries directly to the Table object such as:
response = db.query(MYTABLE).all()
but, when running a SQL RAW query it fails:
query = text("SELECT * FROM MYTABLE LIMIT 2")
response = db.execute(query).fetchall()

then I got:
Could not locate a bind configured on SQL expression or this Session.
any ideas?


I can't specify standard codes for countries

countries is an list of string ISO 3166-1 alpha-2 which is a
List of countries in ISO 3166-1 alpha-2 format covered by this coverage configuration.

Example:
["DE","FR","US"]
Today in Fern, the most specific I can get is string.
Context: OpenAPI supports this and renders it in Stoplight docs. (Example https://developers.gigs.com/docs/api/bc5c988e713ed-list-all-plans#response-body )

i think its totally fine to just have it in docs and if someone wants to be more specific then i think its worth just creating the enum

Closing because we think docs is enough to communicate the relevant information.


[Feature Request] Export/import options (file specifications)

Above is our current export/import options and when you click the buttons you j get the file and thats it.
I feel like there should be more options as that allows for more free use of our applications. Some examples are below.

By allowing an option to export which file they want and what quality it makes it easier for the user to share there planner with other students or even course advisors.
Another example below allows the user to be notified what files are acceptable and prompts them to select a file from their machine.

Steps to Implement
Product

Come up with file types for import and export
Finalize location of feature on application

Design

Create design for this component

Engineering

Create API routes for each file import & export

Should we support being able to import or export multiple plans at once?


401 (Unauthorized) when installing Microsoft.AspNetCore.Blazor.Templates::3.0.0-preview5-19227-01

Describe the bug
I am working on the Get Started with Blazor guide. Step 2 says to run the following command:

dotnet new -i Microsoft.AspNetCore.Blazor.Templates::3.0.0-preview5-19227-01

This should just install the templates, but I get the following message.
 Retrying 'FindPackagesByIdAsyncCore' for source 'https://microsoft.pkgs.visualstudio.com/DefaultCollection/_packaging/Universal.Store/nuget/v2/FindPackagesById()?id='Microsoft.AspNetCore.Blazor.Templates'&semVerLevel=2.0.0'.   Response status code does not indicate success: 401 (Unauthorized).   Retrying 'FindPackagesByIdAsyncCore' for source 'https://microsoft.pkgs.visualstudio.com/DefaultCollection/_packaging/Universal.Store/nuget/v2/FindPackagesById()?id='Microsoft.AspNetCore.Blazor.Templates'&semVerLevel=2.0.0'.   Response status code does not indicate success: 401 (Unauthorized).   Restore completed in 801.87 ms for C:\Users\v-brwoo\.templateengine\dotnetcli\v3.0.100-preview5-011568\scratch\restore.csproj.
No matter how many times I ran the command I got this exact message. Why am/was I seeing this?
Experiment

I checked what previews I had installed and uninstalled them all including 3.0Preview5

I downloaded new bits from the ASP.NET Core distro page

I checked my version in the console to verify that it was3.0.100-preview5-011568

I ran the command and got the following
Retrying 'FindPackagesByIdAsyncCore' for source 'https://microsoft.pkgs.visualstudio.com/DefaultCollection/_packaging/Universal.Store/nuget/v2/FindPackagesById()?id='Microsoft.AspNetCore.Blazor.Templates'&semVerLevel=2.0.0'. Response status code does not indicate success: 401 (Unauthorized). Restore completed in 534.38 ms for C:\Users\v-brwoo\.templateengine\dotnetcli\v3.0.100-preview5-011568\scratch\restore.csproj.

I ran the command again and got the following
Restore completed in 457.27 ms for C:\Users\v-brwoo\.templateengine\dotnetcli\v3.0.100-preview5-011568\scratch\restore.csproj.

While I am now where I expected to be, the issue I encountered is odd.
To Reproduce
Steps to reproduce the behavior:

Using this version of ASP.NET Core '3.0.100-preview5-011568'
Run this code dotnet new -i Microsoft.AspNetCore.Blazor.Templates::3.0.0-preview5-19227-01 in a Console
See error

Expected behavior
The project templates are installed and the command exits successfully
Additional context
Reported Documentation Issue Get Started with Blazor

Do you have a VSTS feed configured globally? You could use https://docs.microsoft.com/en-us/nuget/tools/package-manager-ui#package-sources to figure out if you have one set up.

I have not configured any specific NuGet Package Feeds for the system I am running this on. I am using VS 2019 Preview.

This is the preset NuGet Package Feeds that I have currently in my configuration. As I have never seen the second one in this list, I would assume this is related to one of the Preview products (vs, core, etc).

Additionally, here is my current VS 2019 preview install. I have not done any "individual" settings, only the defaults for these that are displayed.

Thanks for contacting us, @itanex.
The failure you're getting is from NuGet feed authentication.
Please address the authentication issue and things should just work.


[api] allow CSL receiver to gather parent CSL capabilities

This commit extends the Thread API to allow a CSL Receiver application
to adjust its CSL parameters depending on the parent capabilities.
Specifically, it might decide to switch to polling operation instead of
CSL syncrhonization when the attached parent does not support CSL Transmitter
role (Thread Version 2) or it advertises poor CSL accuracy or uncertainty.

I implemented this change as an extension of otThreadGetParentInfo. But maybe it's cleaner to have a separated API for this? In any case I believe it's interesting to allow the application to know the parent's Thread version.

Thanks @abtink, I addressed your comments. I decided to always show the parent Thread version since it might be useful for other applications.


More detailed results that can be shared?

Congratulations on the nice results! I have been playing around with Tacotron2 for a bit, and found that in the original implementation, lower losses do not at all imply better alignment.
Wondering if the authors have a bit more results that can be shared. Specifically:

In the paper, it was mentioned that "regularized version better stabilizes the training procedure when weighted appropriately, λ ∈ {10−3, 10−4, 10−5}". What do the loss curves look like for different values of λ?
Do you have a series of alignment plots (similar to Figure 2) that demonstrates how alignment improves over time, for different values of λ (including λ = 0, i.e. original Tacotron2)?

@kmn1024

First of all we do not imply that lower loss necessarily means better alignments in general. Loss may degrade due to other reasons too. However, in the context of our work where we experiment with a fixed dataset and training recipe and the only difference is the extra loss term it is safe to conclude that the lower loss is due to the loss addition which in turn assists the alignment of the architecture.
The different lambdas look like Fig.1 from the published paper. We refer you to the zoomed version which is easier to distinguish Tacotron2 vs Regotron
No we do not have an exhaustive illustration across timesteps. The point of Fig.2 is to illustrate that Regotron for epoch ~200 has better alignment than Tacotron2. The other two lambda values you refer to behave in a similar manner for the LJSpeech dataset.


feat(performance): added ttl checks

waiting for #102  to merge before that one

:tada: This PR is included in version 1.27.0 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


ReferenceError: d3 is not defined

node_modules/react-stockcharts/lib/tooltip/OHLCTooltip.js:200:16

react-stockcharts version - ^0.3.0
d3 npm is installed.

Thanks for the issue. Fixed and released 0.3.1. Added a few more lint rules to prevent this from happening again.


Paused jobs from replay using WMCore agent 1.5.2 with error SetupCMSSWPset

Impact of the bug
Tier0 agent using 1.5.2
Describe the bug
While testing WMCore agent 1.5.2, with the CMSSW 12_0_0, the replay shows paused jobs with an error within SetupCMSSWPset.py when trying to execute cmssw_wm_create_process.py.
How to reproduce it
Replay using T0 release 3.0.0 based on 1.5.2 agent. Also logs, tarballs and sandbox to run an interactive job for the following CMSSW releases can be found as follows:

CMSSW 12_0_0  /afs/cern.ch/user/c/cmst0/public/PausedJobs/12_X_X/job_808

Expected behavior
No errors from cmssw_wm_create_process.py
Additional context and error message
Please take into account that Tier0 was able to deploy the replay using the 1.5.2 agent including the following PR #10801

This is the log that is produced when trying to run a T0 job with CMSSW_12_0_0. This error was produced using Pytho3 T0 Agent (WMCore 1.5.2):
2021-09-09 15:20:49,128:INFO:SetupCMSSWPset:Executing SetupCMSSWPSet...
2021-09-09 15:20:49,129:INFO:SetupCMSSWPset:Creating Scram environment with scram arch: slc7_amd64_gcc900 and CMSSW version: CMSSW_12_0_0
2021-09-09 15:20:52,154:INFO:SetupCMSSWPset:Setting up job scenario/process
2021-09-09 15:20:52,157:INFO:SetupCMSSWPset:ScramRun command args: cmssw_wm_create_process.py --output_pkl /srv/job/WMTaskSpace/cmsR
un1/PSet.pkl --funcname promptReco --funcargs /srv/job/WMTaskSpace/cmsRun1/process_funcArgs.json
2021-09-09 15:20:52,157:INFO:Scram:Creating a subprocess to run the PSet setup.
2021-09-09 15:20:52,157:INFO:Scram:Also recording SCRAM command-line related output.
2021-09-09 15:20:52,160:INFO:Scram:    Invoking command: cmssw_wm_create_process.py --output_pkl /srv/job/WMTaskSpace/cmsRun1/PSet.pkl --func
name promptReco --funcargs /srv/job/WMTaskSpace/cmsRun1/process_funcArgs.json
2021-09-09 15:20:53,237:INFO:Scram:Subprocess stdout was:
b\'Failed to load process from Scenario ppEra_Run2_2018 (<Configu
ration.DataProcessing.Impl.ppEra_Run2_2018.ppEra_Run2_2018 object at 0x2b98327a4790>).\
Traceback (most recent call last):\
  File "/cvmfs/cms.cern.ch/share/overrides/bin/cmssw_wm_create_process.py", l
ine 144, in <module>\
    main()\
  File "/cvmfs/cms.cern.ch/share/overrides/bin/cmssw_wm_create_process.py", line 135, in main\
    process=create_process(args, func_args)\
  File "/cvmfs/cms.cern.c
h/share/overrides/bin/cmssw_wm_create_process.py", line 97, in create_process\
    raise ex\
  File "/cvmfs/cms.cern.ch/share/overrides/bin/cmssw_wm_create_process.py", line 86, in create_process\

 arg_names=my_func.func_code.co_varnames[1:1+my_func.func_code.co_argcount]\
AttributeError: \\\'function\\\' object has no attribute \\\'func_code\\\'\
\'
2021-09-09 15:20:53,237:INFO:Scram:Subproces
s stderr was:
None
2021-09-09 15:20:53,237:ERROR:SetupCMSSWPset:Error running scram process. Error code: 5
2021-09-09 15:20:53,237:ERROR:SetupCMSSWPset:Error creating process for Config/DataProcessing
:
Traceback (most recent call last):
  File "/srv/job/WMCore.zip/WMCore/WMRuntime/Scripts/SetupCMSSWPset.py", line 695, in __call__
    self.createProcess(scenario, funcName, funcArgs)
  File "/srv/j
ob/WMCore.zip/WMCore/WMRuntime/Scripts/SetupCMSSWPset.py", line 156, in createProcess
    self.scramRun(cmd)
  File "/srv/job/WMCore.zip/WMCore/WMRuntime/Scripts/SetupCMSSWPset.py", line 119, in scramR
un
    raise RuntimeError(msg)
RuntimeError: Error running scram process. Error code: 5
'
 b'Traceback (most recent call last):
  File "/srv/job/WMCore.zip/WMCore/WMRuntime/ScriptInvoke.py", line 110, in <module>
  File "/srv/job/WMCore.zip/WMCore/WMRuntime/ScriptInvoke.py", line 81, in inv
oke
  File "/srv/job/WMCore.zip/WMCore/WMRuntime/Scripts/SetupCMSSWPset.py", line 698, in __call__
  File "/srv/job/WMCore.zip/WMCore/WMRuntime/Scripts/SetupCMSSWPset.py", line 695, in __call__
  File
 "/srv/job/WMCore.zip/WMCore/WMRuntime/Scripts/SetupCMSSWPset.py", line 156, in createProcess
  File "/srv/job/WMCore.zip/WMCore/WMRuntime/Scripts/SetupCMSSWPset.py", line 119, in scramRun
RuntimeError
: Error running scram process. Error code: 5

This is an issue with the external script: cmssw_wm_create_process.py
Link to the external fix:
https://github.com/cms-sw/cmssw-wm-tools/commit/eb4568b379b688eaae5283140ed48b94252a9f6f

@khurtado @germanfgv if I'm not wrong, it was said over slack that this issue has now been fixed with the commit Kenyi points out above. If so, shall we close it? Thanks

Yes, this can be closed (doing it now).


A command to view user details of user's from CurseForge

Like project's and it's downloads

I know you are working on this :stuck_out_tongue:

mostly for mods but users as well yes


build back openjpeg workarounds

Since the memory leak has been fixed, we can re-add openjp2 to Goobi and go back to the old behaviour without workarounds

@opaetzel I've added this to the project board and it's at the top of To Do, but reprioritise if you need to.

old behaviour has been restored, and version of openjpg updated


Response from RAML Spec

Ideally we should make it configurable what to return from request. Either the example json or the schema implementing faker.js

@alleypa, new preference added: prioritizeBy, which could be set to 'example' or 'schema'.
In the future I might add another option 'order' - which will depend on the order in the RAML file, but apparently this is not that easy to do.

thanks @dmitrisweb the sample json is returned as expected


Book train simlified example

Based on ticket https://github.com/huggingface/candle/issues/637
PS
Unfortanly I cant check how will be look like "#include ../simplified.rs:book_training_simplified1" blocks in book :(

Thanks @evgenyigumnov Looks really good.
you should be able to check out the book using mdbook serve no ?

I was check by mdbook serve
And fix small mistake
At that moment all looks fine


Asp.net pages are not showing on showslow

its only capturing details for php pages, not dotnet or java pages, does it only work for php pages?

Doesn't seem to be a valid question.


Weird behaviour with Alloy language

I need to include a model written in Alloy (an horrible language that somewhat allows for first-order-logic constructs, don't learn it, trust me, I used it only this once because I was forced to and I regret it) into my latex document, ffcode worked really well untill I started using some more elaborate logical expressions, mainly the second sets of curly brackes that follows each "sig", after that it stops treating the text as code halfway through.
I suppose the unconventional syntax causes some kind of issue.
This is only part of the code, but its enough to demonstrate the undesirable behaviour:
\begin{ffcode}
   sig Date {
	unixTime: one Int
    } {
    	unixTime >= 0
    }
    //Radomly chosen by Alloy
    one sig Now extends Date {}

    sig Location {}
    sig Email {}
    sig UserName {}
    sig Password {}
    sig CompanyName {}
    sig PaymentMethod {}

    abstract sig Bool {}
    one sig True extends Bool {}
    one sig False extends Bool {}

    sig User {
    	userName: one UserName,
    	email: one Email,
    	password: one Password,
    	paymentMethod: one PaymentMethod,
    	bookings: set Booking
    } {
    	//No user can have two overlapping bookings
    	all b1, b2: Booking | (b1 in bookings and b2 in bookings)
    	implies
    	(b1 = b2 or (b1.startDate.unixTime < b2.startDate.unixTime and b1.endDate.unixTime <= b2.startDate.unixTime) or
    	(b2.startDate.unixTime < b1.startDate.unixTime and b2.endDate.unixTime <= b1.startDate.unixTime))
    }

    //Force that a booking of a eMSP is made by a user registered in that eMSP, even tho the eMSP is only one...
    sig Booking {
    	startDate: one Date,
    	endDate: one Date,
    	isActive: one Bool,
    	socket: one Socket
    } {
    	startDate.unixTime < endDate.unixTime
    	and (isActive = True implies startDate.unixTime <= Now.unixTime and Now.unixTime <= endDate.unixTime)
    	and (isActive = True implies socket.connectedVehicle != none)
    }

    fact noBookingsWithoutUsers {
    	all b: Booking | (one u: User | b in u.bookings)
    }

    fact noExpiredBookings {
    	all b: Booking | b.endDate.unixTime >= Now.unixTime
    }

    fact noOverlappingSocketBookings {
    	/*
    	or ((b1.startDate.unixTime < b2.startDate.unixTime implies b1.endDate.unixTime <= b2.startDate.unixTime) and (b1.startDate.unixTime > b2.startDate.unixTime implies b2.endDate.unixTime <= b1.startDate.unixTime))
    	*/
    	all b1, b2: Booking | (b1 = b2 or b1.socket != b2.socket or (b1.startDate.unixTime < b2.startDate.unixTime and b1.endDate.unixTime <= b2.startDate.unixTime)
    	or (b2.startDate.unixTime < b1.startDate.unixTime and b2.endDate.unixTime <= b1.startDate.unixTime))
    }

    run {} for 12 but 6 Int, exactly 3 User, exactly 3 CS, exactly 2 CPMS, exactly 3 Booking
\end{ffcode}

Here is a picture of the unexpected behaviour:

@EMJzero this looks like a very weird problem indeed. It belongs to the minted package, I think. We only use it, with some pre-configuration. I suggest you wait a bit until we do this: https://github.com/yegor256/ffcode/issues/21 Otherwise, just try to break the code into two parts, maybe it will help.

Thank you, after a bit of experimenting I found that ending and beginning again the ffcode at the right place indeed fixes the issue for now! I will surely give it a try once more when them move to fancyvrb is complete!
As an example, the above code is fixed with:
...
    sig User {
    	userName: one UserName,
    	email: one Email,
    	password: one Password,
    	paymentMethod: one PaymentMethod,
    	bookings: set Booking
    } {
    	//No user can have two overlapping bookings
    	all b1, b2: Booking | (b1 in bookings and b2 in bookings)
    	implies
    	(b1 = b2 or (b1.startDate.unixTime < b2.startDate.unixTime and b1.endDate.unixTime <= b2.startDate.unixTime) or
    	(b2.startDate.unixTime < b1.startDate.unixTime and b2.endDate.unixTime <= b1.startDate.unixTime))
    }
\end{ffcode}
\begin{ffcode}

    //Force that a booking of a eMSP is made by a user registered in that eMSP, even tho the eMSP is only one...
    sig Booking {
    	startDate: one Date,
    	endDate: one Date,
    	isActive: one Bool,
    	socket: one Socket
    }
...


Not set default required error message always

Skip if a previous one was set
Partial fix for #28.
This does not allow to translate automatically with multiple localizations.

Closing in favor of #61.


With bigger tenant stores, deleting should be an asyncron task...

... but if the removing is in progress, the data access should be already denied.
Maybe it's helpful to have a list of tenants can will be deleted. So recreation of an already delete tenant (but with an ongoing deletion process) should be denied, too.

implemented


Add a styles-mixin for sharing css sheets.

This sorta piqued my interest today, so I wanted to see what it might look like to try and follow the guidelines put out in https://wicg.github.io/construct-stylesheets/.
This PR raises some interesting questions:

Can we / should we attempt to make these styles non-modifiable? There's a glaring issue here in that you cache mutable objects... I couldn't figure out how to prevent modification.
Should the interface be simple strings? I like the simplicity here and non-forkiness of it.

Going to close this as a way to incorporate adopted stylesheets will be included as part of #58.


MetalLB operator enablement in CI

Create a new playbook for MetalLB operator installation, validation and run e2e tests

@Shilpa-Gokul  is there a reason why you need to have e2e tests in this repo? There are several tests present
for metallb operator in https://github.com/metallb/metallb-operator/tree/main/test/e2e or https://github.com/openshift/openshift-tests-private/blob/master/test/extended/networking/metallb.go. Can these be re-used?

Do we need a way to combine this with #49? Seems like duplicated efforts to me.

Closed PR #49  due to duplication.

@Shilpa-Gokul is there a reason why you need to have e2e tests in this repo? There are several tests present for metallb operator in https://github.com/metallb/metallb-operator/tree/main/test/e2e or https://github.com/openshift/openshift-tests-private/blob/master/test/extended/networking/metallb.go. Can these be re-used?

@pravin-dsilva Tests from both repos are re-used and testcases that are mentioned in polarion is also covered in this

/remove-label do-not-merge/contains-merge-commits

/remove-label do-not-merge/contains-merge-commits

/lgtm

/lgtm

/approve


sol-conffile: Remove quotes from strings.

When an options is a string, the quotes should be removed from it.

uhmm... please take a look on #596

Closing it since we agreed to move with #596


searchString parameter not changed in code block

In the section that discusses changing the search string parameter to use ID, the following should be highlighted as it changed
if (!String.IsNullOrEmpty(id))

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

ID: f9b9859c-b83c-5fc3-41d5-15531232185f
Version Independent ID: 5438de31-8562-3747-d1a5-2a4622252fc1
Content: Add search to an ASP.NET Core MVC app
Content Source: aspnetcore/tutorials/first-mvc-app/search.md
Product: aspnet-core
GitHub Login: @Rick-Anderson
Microsoft Alias: riande

I’ve fixed this here: https://github.com/aspnet/Docs/pull/11004
Wasn’t aware of this issue.

@dogafincan thanks for letting me know.


Issue-README

Automated Review Comments
Issues in README.md:

(1, 'Line exceeds 80 characters')
(1, 'Hardcoded string found')
(2, 'Hardcoded string found')
(10, 'Line exceeds 80 characters')

I got it.


Tokenize Hebrew words as global constants v2.0

@elazarg @idosavion let me know what you think

@idosavion so how do you see this? How should we replace all Hebrew words with constants? I thought about having just a dict, but then all the IN/THE etc will require extra key-value pairs, which make no sense..

I think that in order to be evaluated, the PR should be augmented with its "client" use, using at least 10 examples from different parts of the source code.
Also, for purposes of i18n, it's better if entire phrases are extracted, possibly with format strings. In principle, I don't like the idea of constructing phrases mechanically; it does not generalize well.
This PR is strictly better than the previous one, but I'd still vote for doing things "the standard way".

As the new guy here, I think I'll let you guys think of what is the best way to make this happen rather than deciding myself. I get the feeling I don't see the whole picture, and that makes total sense.. I'll jump back in once there's a clear decision :)


show files afterwards

@rultor release, tag is 0.0.12

@rultor release, tag is 0.0.12

@yegor256 OK, I will release it now. Please check the progress here

@rultor release, tag is 0.0.12

@yegor256 Done! FYI, the full log is here (took me 6min)


⚠ 한경주요지수-코스피200 has degraded performance

In e03c537, 한경주요지수-코스피200 (https://markets.hankyung.com/indices/kospi200) experienced degraded performance:

HTTP code: 200
Response time: 19699 ms

Resolved: 한경주요지수-코스피 performance has improved in 2bc73ce.


Rewrite blackbox in Go (golang)

This is the issue to track the development of a Go version.
CC: @hpoul @mnewswanger @MaxHorstmann @captncraig

The "golang" branch has made a lot of progress this weekend:

Reworked the subcommands and flags. More consistent.  Easier to understand.  Rather than one subcommand for each legacy bash script, there is often a subcommand with various flags.

Plug-ins for VCS: I've written Git and "None".  Adding Mercurial, Subversion, etc. should be a breeze.

Plug-ins for GPG implementation: I've written one that calls out to /usr/bin/gpg.  It will be easy to add support for go-openpgp, Windows gpg.exe, and others.

The code is A LOT more simple now.  This is the 3rd (?) iteration of trying to simplify the code.  It is a lot better than my earlier iterations.  The interfaces are much better structured now.  I think anyone should be able to hack on this very easily.  In fact, it is so much cleaner that it requires less test code.
If you want to see the code so far, it is in this branch:
https://github.com/StackExchange/blackbox/tree/golang
CC: @farseeker

Beta implementation is in https://github.com/StackExchange/blackbox/pull/250

No Go tests yet, right?

I had to dig through some notes.
The go tests are:
Unit tests:
go test ./...

Integration tests:
cd integrationTest && rm -rf /tmp/bbhome-* && go test -long --nocleanup

Tom
On Wed, Nov 11, 2020 at 4:53 PM Max Horstmann<EMAIL_ADDRESS>wrote:

No Go tests yet, right?
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/StackExchange/blackbox/issues/310#issuecomment-725682089,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ABQATHJHU37ETUYYNRDUHEDSPMBXJANCNFSM4NXWVQCA
.


Routes and node aren't selectable under Safari

When I clic on a node or a route on the map, the map is centered to this object.
(In practice, every clic on the map center it 😞).
Under Firefox, the clic display the node or route page as expected 😄.

Safari 16.5.2 (176<IP_ADDRESS>.1, 17615)
updated yesterday !
macOS 12.6.7 (21G651)

This was a mouse issue !
I unplug an replug it : solved ! 😂


Allow different pv naming convensions as input options

In https://github.com/DiamondLightSource/FastCS/issues/42
All attribute names were converted to pascal case. We should add a new options enum to pass into the ioc specifying what conversion to do, and specifying the epics seperator.

I am happy with what you have on your branch so far, but would like either

sub controller node and leaf naming conventions to specified separately (e.g. caps for nodes and pascal for leaf)
don't convert node names at all and just use the string passed to register_sub_controller - we only need to convert the attribute names really as they have to defined as python attribute names


Is the first target token ignored? (translation task w/ bart.base arch)

Hi,
Task: kind of 2 variables classification x -> y0, y1
I've been experimenting with BART models, and as preliminary experiments wanted to train a model to produce, from a text source (from CNN/DM dataset), two kinds of tokens, having 10 values each.
For simplicity, the first tokens takes values from A to J and second token from a to j and typically represents features of the sources that as been calculated during preprocessing.
My target typically looks like:
E f
I d
B d
C a
[...]

I run BPE preprocessing, binarization and training exactly like: https://github.com/pytorch/fairseq/blob/master/examples/bart/README.summarization.md the only difference is the model size (bart.base with following change: 6 heads, 3 layers, for both encoder and decoder).
NOTE: I'm not finetuning here, I'm training from scratch (I tried finetuning but went back to the simplest task to debug)
Problem: inference only output one token (instead of two)
In this task token prediction isn't trivial. However, there's not much variance in the target:

always 2 tokens
first token always in [A, J]
second token always in [a, j]

when running inference (w/ beam in [1, 4], min_len=1), the model only predicts the second token, i.e. the lowercase one. I don't understand why.
I've been checking manually the dataset, examples are like: tensor([717, 856,   2]), there is 2 tokens + EOS which make sense to me, I even checked token ids, all is correct, but still, even after multiple epochs, only 1 token is predicted.
Using min_len=3 to force 2 token (+EOS) only makes the model repeat the predicted token, not generate the other one.
Am I missing something (I guess I do..)?

Hi, I am not completely sure about this, but seems relevant to #1517 to me. Basically at fine-tuning there is no  token prepended to the target sequence but the BART decoding assumes there is one and forces the first predicted token to be always :
https://github.com/pytorch/fairseq/blob/d37529ed234ea9173ed35f6797a51a85378ecfca/fairseq/models/bart/hub_interface.py#L123
There is no prefix_tokens for a normal translation task.

Hi,
Task: kind of 2 variables classification x -> y0, y1
I've been experimenting with BART models, and as preliminary experiments wanted to train a model to produce, from a text source (from CNN/DM dataset), two kinds of tokens, having 10 values each.
For simplicity, the first tokens takes values from A to J and second token from a to j and typically represents features of the sources that as been calculated during preprocessing.
My target typically looks like:
E f
I d
B d
C a
[...]

I run BPE preprocessing, binarization and training exactly like: https://github.com/pytorch/fairseq/blob/master/examples/bart/README.summarization.md the only difference is the model size (bart.base with following change: 6 heads, 3 layers, for both encoder and decoder).
NOTE: I'm not finetuning here, I'm training from scratch (I tried finetuning but went back to the simplest task to debug)
Problem: inference only output one token (instead of two)
In this task token prediction isn't trivial. However, there's not much variance in the target:

always 2 tokens
first token always in [A, J]
second token always in [a, j]

when running inference (w/ beam in [1, 4], min_len=1), the model only predicts the second token, i.e. the lowercase one. I don't understand why. I've been checking manually the dataset, examples are like: tensor([717, 856, 2]), there is 2 tokens + EOS which make sense to me, I even checked token ids, all is correct, but still, even after multiple epochs, only 1 token is predicted.
Using min_len=3 to force 2 token (+EOS) only makes the model repeat the predicted token, not generate the other one.
Am I missing something (I guess I do..)?

Hi, I encounter the same problem, and the BART output seems also ignore my first token. Did you solve this problem? Thank you!

Hi, I think I got a solution for my problem that missing the first token in BART inference output. You can set the prefix_tokens=None to tell the model don't take the first output token as BOS .
https://github.com/facebookresearch/fairseq/blob/d37529ed234ea9173ed35f6797a51a85378ecfca/fairseq/models/bart/hub_interface.py#L123


broken es-2015/native-js imports

hey,
between versions 1.2.0 and 1.2.1 you’ve changed the import behaviour for native javascript modules.
import cookie from "cookie_js";

the statement above imports cookie.js in the files execution context. in version 1.2.0 cookie is now an object with the interface described in the readme. in version 1.2.1 it’s an object with a single property called cookie. this is probably a sideeffect of this commit 4203e0090bcaf31ee202264f38616c222998551f.
this problem  just sneaked into my codebase and broke one of my modules when i called npm update, because 1.2.1 was a patch release ;).

this problem just sneaked into my codebase and broke one of my modules when i called npm update, because 1.2.1 was a patch release ;).

Damn, this shouldn't have happend, sorry. I merged this pull request that fixes the import for AMD loaders. Do you know if there's a good way to support both import approaches?
I guess the quick fix on your side would be import { cookie } from "cookie_js", right?

i’ve never used amd loaders so i won’t be of help, but rollup generates the following code when i choose the umd format, which i use for my projects:
(function (global, factory) {
    typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
    typeof define === 'function' && define.amd ? define(factory) :
    (global.LIBRARY_NAME = factory());
}(this, (function () {
    return LIBRARY_INTERFACE;
})));

maybe this is working for you as well.

@florian Sorry to bother you.
#47 can solve this problem and Can you have a look at that?
I switched to forked version ("cookie_js": "git+https://github.com/banyan/cookie.js#rollup") and it works fine.

This should now be fixed in v1.3.0 as of #47, thanks to @banyan.


simplify db-test-suite setup

Now, each test suite sets up a new migration context and populates the
database with common values.
Also, the SetupTest() now automatically sets up a clean function that is
executed at TearDownTest(). No custom suite implementation needs to do
this manually now. For this to work, if you override SetupTest() you
need to call the embedded function manually.

@kwk snapshot fabric8-wit image is available for testing.  docker pull docker.io/fabric8/fabric8-wit:SNAPSHOT-PR-1645-1

@kwk snapshot fabric8-wit image is available for testing.  docker pull docker.io/fabric8/fabric8-wit:SNAPSHOT-PR-1645-2

@kwk snapshot fabric8-wit image is available for testing.  docker pull docker.io/fabric8/fabric8-wit:SNAPSHOT-PR-1645-3

[test]

+276 −755 -> good work :)


how to annotate the custom dataset

May I know how to annotate a custom dataset ?
Someone introduce the www.scalabel.ai, how should I prepare the annotation labels, then I could get a jason file like your det_annotations jason file. Then I could generate the lane mask png and drivable area mask png file by this jason file.
Thank you very much for any reference.

Hi John,
now i am struggling to generate my own dataset in YOLOP style. I would like also to get .json file like det_annotations. Did you find the solution? Thanks very much.


Issue #9

Linked Issue
Closes: #9 Make food category section responsive
Describe the changes you've made
In mobile view, the food category section shows in single column, the picture of food first and then the description
Type of change
overwritten css properties of that section
How Has This Been Tested?
site rendered on mobile browser
Screenshots
Desktop          | Mobile
:

: |:

:

Congrats @susobhandas07 your PR is merged.


Add some OPLS atomtypes

Looking good! Just a few minor suggestions to make the SMARTS strings a bit cleaner.


feat: Expose Metrics for Websockets

Done Criteria
Export metrics leveraging the work done in https://github.com/libp2p/js-libp2p/issues/1458
Motivation
Better observability for performance and benchmarking. See: https://github.com/libp2p/js-libp2p/issues/1458#issuecomment-1323833476
Originally https://github.com/libp2p/js-libp2p-websockets/issues/197

@achingbrain @maschad anyone working on this one? we will likely want to enable this so we can get visibility into websocket performance for https://github.com/libp2p/js-libp2p-amino-dht-bootstrapper

Not to my knowledge @SgtPooki , feel free to take it on!


bug(sort-header): sort icon should rotate

Bug, feature request, or proposal:
bug
What is the expected behavior?
According to the guidelines, the complete sort icon should rotate.

[...] reverse the sort order and rotate the sort icon.

https://material.io/guidelines/components/data-tables.html#data-tables-interaction
What is the current behavior?
The arrowhead has something like a 3D-Switch animation, which may be nice but doesn't follow the MD guidelines.

We interpret this bit in the spec to mean that the arrow should end up rotated, not that it has an actual spinning animation. In general Material Design prefers "morphing" animations like what we have.


Add functionality to render diagnostics with user provided Docs

I originally implemented it with the user supplying a function Annotation -> ann along with their Doc anns. This made it certain that Diagnose wasn't messing with the user's types, however the implementation was much more clunky so I went with the simpler solution of adding another case to Annotation.
Here are two examples of: colorful user portions of messages and newlines + indentation in one of the messages

Also included:

Some qol instances: Functor, Foldable, Traversable instances where appropriate, Eq and Ord for Note (https://github.com/Mesabloo/diagnose/pull/17)
making withUnicode and tabSize their own types to make the printDiagnostic interface slightly less difficult.
Major version bump because of that breaking change.

This issue was already brought up to my attention in #15, and at that time we didn't think there was a good solution for this.
I have yet to review your PR (which I can't right now), but right from the beginning, some things are making me tick:

however the implementation was much more clunky so I went with the simpler solution of adding another case to Annotation.

I think this is not a good solution as we lose the semantics of the annotation type: instead of just describing the style of the document, we now have to worry about things which aren't style (and user-defined Doc fall into this category).

making withUnicode and tabSize their own types to make the printDiagnostic interface slightly less difficult.

I think we could do the same for the colors switch too, but this is a very minor change as the colors are already separated from the rendering logic.
Now here are my thoughts: originally, in #15, we debated whether it would be a good thing to have functions converting message type into Docs:

One fix (which is very dirty and completely voids the purpose of the Pretty typeclass, which is flawed anyway) would be for diagnose to internally pass msg -> Doc ann functions to every rendering function. But this is very cumbersome and error-prone. And this also bloats the function interfaces.
(https://github.com/Mesabloo/diagnose/issues/15#issuecomment-1287827523)

This should work, and we could have two versions of printDiagnostic involved:

printDiagnostic would simply use printDiagnosticNoPretty pretty (where pretty comes from the Pretty typeclass);
printDiagnosticNoPretty f would require f :: msg -> Doc AnsiAnnotation (or some other type of annotation, in which case we would need to convert to the final type of annotation with another user-passed function). This allows us to use Docs inside reports pretty easily. Unfortunately, this solution does not quite get us to a clear semantics division, but this becomes the user's fault (kinda) instead of our fault.

Let's discuss this more thoroughly before merging this PR (I also don't like merging PR knowing that we have a very big change coming soon, see #14; there are still a few more things to change before publishing a new version unfortunately).

Thank you for taking the time to write up your thoughts.

I think this is not a good solution as we lose the semantics of the annotation type: instead of just describing the style of the document, we now have to worry about things which aren't style (and user-defined Doc fall into this category).

Specifically what semantics are these? Whatever they are can't they be retained by a clause saying "If the Annotation is OtherStyle then its provenance is the user code, and the user should be prepared to deal with whatever they put in"?

I think we could do the same for the colors switch too, but this is a very minor change as the colors are already separated from the rendering logic.

Indeed, however I think that being able to pass in unadordnedStyle (or whatever other colorless style) is a better solution here as we can remove this boolean for free.

One fix (which is very dirty and completely voids the purpose of the Pretty typeclass, which is flawed anyway) would be for diagnose to internally pass msg -> Doc ann functions to every rendering function. But this is very cumbersome and error-prone. And this also bloats the function interfaces.

It's true that we're only using pretty as a glorified fromString. However there's an additional (unenforced) requirement for input msgs we're relying on: which is that it doesn't insert any Nesting or Nest. One way or another, I think we'll have to either

Implement the "denesting" logic I've implemented here in replaceLinesWith
Disallow passing in Docs altogether (including smuggling them in via a Pretty instance or msg -> Doc ann)

(The specific issue with these constructions is that if one renders nest 10 foo then the pipes and other flourishes are also indented, oh no!)
(The absolute correct fix here would be to remove prettyprinter from the layouting, instead using it to layout individual messages and other ornamentation, and then proceeding to forward the rendered blocks to some compositing engine capable of overlaying blocks of text sensibly, although convenient for rendering the Doc that one gets back from diagnose is nonsense, as semantically related parts of text (for example multiple lines in the user message) have been interleaved with the diagnose's ornamentation)

Unfortunately, this solution does not quite get us to a clear semantics division, but this becomes the user's fault (kinda) instead of our fault.

(#15 (comment))

This should work, and we could have two versions of printDiagnostic involved:
* `printDiagnostic` would simply use `printDiagnosticNoPretty pretty` (where `pretty` comes from the `Pretty` typeclass);

* `printDiagnosticNoPretty f` would require `f :: msg -> Doc AnsiAnnotation` (or some other type of annotation, in which case we would need to convert to the final type of annotation with another user-passed function). This allows us to use `Doc`s inside reports pretty easily.

TBH I don't think such an interface should be exposed if it's not possible to correctly use it, in that case only allow passing in Text.

This seems to me a better solution to the problem than the one you propose, and also should involve less changes in the codebase (basically, we only have to pass the prettifying function everywhere, why not as an implicit parameter, and it should mostly be all the changes required).

I should probably split this one up into the miscellaneous tidyings, the actual relevant change is not big (just changing the type sigs throughout Internal and the change to replaceLinesWith

Specifically what semantics are these? Whatever they are can't they be retained by a clause saying "If the Annotation is OtherStyle then its provenance is the user code, and the user should be prepared to deal with whatever they put in"?

Alright, a took a better look at the code (more specifically how OtherStyle is being used) and this completely voids my complaint. In fact, it is way better than what I imagined/understood initially.

Indeed, however I think that being able to pass in unadordnedStyle (or whatever other colorless style) is a better solution here as we can remove this boolean for free.

That's something that I never considered, hence the simpler interface with booleans (which, in the case of colors, was only useful to remove all annotations, which is what a style can do).

It's true that we're only using pretty as a glorified fromString. However there's an additional (unenforced) requirement for input msgs we're relying on: which is that it doesn't insert any Nesting or Nest. One way or another, I think we'll have to either

Implement the "denesting" logic I've implemented here in replaceLinesWith
Disallow passing in Docs altogether (including smuggling them in via a Pretty instance or msg -> Doc ann)

Fortunately, we require msg to be Pretty in all the rendering spots. This means that (unless somebody is willing to write a very sub-optimal instance Pretty (Doc ann)) we cannot pass Docs currently, hence any msg cannot contain such constructs (Nesting and Nest).
The problem specifically manifests itself when Docs are embed within other docs.

(The absolute correct fix here would be to remove prettyprinter from the layouting, instead using it to layout individual messages and other ornamentation, and then proceeding to forward the rendered blocks to some compositing engine capable of overlaying blocks of text sensibly, although convenient for rendering the Doc that one gets back from diagnose is nonsense, as semantically related parts of text (for example multiple lines in the user message) have been interleaved with the diagnose's ornamentation)

I'm not sure that I entirely follow this, but from what I understand, having a two-layer rendering (rendering each individual block, e.g. the source code, the messages with the "arrows", the side rule, etc.) would be a lot better to create new layouts (which is the point of the issue/PR linked earlier, to allow for user-defined layouts), as one would simply need to write the logic for placing blocks and some default color style, and all blocks would be placed accordingly by the "compositing engine".

Alright, a took a better look at the code (more specifically how OtherStyle is being used) and this completely voids my complaint. In fact, it is way better than what I imagined/understood initially.

Great :)

It's true that we're only using pretty as a glorified fromString. However there's an additional (unenforced) requirement for input msgs we're relying on: which is that it doesn't insert any Nesting or Nest. One way or another, I think we'll have to either

Implement the "denesting" logic I've implemented here in replaceLinesWith
Disallow passing in Docs altogether (including smuggling them in via a Pretty instance or msg -> Doc ann)

Fortunately, we require msg to be Pretty in all the rendering spots. This means that (unless somebody is willing to write a very sub-optimal instance Pretty (Doc ann)) we cannot pass Docs currently, hence any msg cannot contain such constructs (Nesting and Nest). The problem specifically manifests itself when Docs are embed within other docs.

What I mean is that even the Pretty instance is too much. For example this breaks in the current version of Diagnose
{-# LANGUAGE OverloadedStrings #-}

module A where

import Error.Diagnose
import Prettyprinter

data MyMsg = MyMsg

instance Pretty MyMsg where
  pretty MyMsg = nest 2 (vsep ["foo", "bar", "baz"])

main :: IO ()
main =
  printDiagnostic stderr True True 2 defaultStyle $
    def `addReport` Err Nothing MyMsg [(Position (1, 3) (1, 8) "some_test.txt", This MyMsg)] [Note MyMsg]

If nothing else, then this patch fixes this bug.

Ah yeah, indeed. I never thought about this case.

Instead of continuing on a half broken base, perhaps we should investigate directly on the alternative of the compositing engine?
I think this is the way of continuing forward, and should fix all those problems (both newlines and nests and all other problems that were not found yet) because everything is pre-rendered in isolation, and put together afterwards. Not sure how one would create such engine though.
If you have any idea, let me know. :)

Honestly, I would rather see this merged as-is, as I think it's a clear improvement over the status-quo.
Having said that, the way I would implement such a compositing engine would be:

Determine widths for all sub-documents, this must be an easy task for this library width = totalWith - maximum (myOffset : offsetsOfMsgsAboveMe)
Render msgs to SimpleDocStream using those widths
Split on lines SimpleDocStream -> [SimpleDocStream] (Care must be taken to preserve annotations across line breaks!)
Render the ornamentation according to the heights of the earlier rendered msgs, and split to [SimpleDocStream]
Vertically pad with empty lines or whatever our msgs according to where they appear vertically
Zip lines together with appropriate horizontal padding (outerline <> replicate ' ' (horizontalMsgPos - length outerline) <> horizontalMsgLine) (No reason for a little more complication, one could support true overlapping here)

Hey, is there anything else that you'd be willing to include in the PR or can it be merged?
Overall it looks good to me.
I'll try and work on the compositing engine at some point in the future, to see what I can come up with and how easier it makes writing layouts.

I think it should be good to go. I've been using it for a bit without any obvious issues.

Thanks!


Added Github cards, Admonitions as directives

Original PRS:

https://github.com/saicaca/fuwari/pull/70
https://github.com/saicaca/fuwari/pull/68

Okay, I cant reproduce what the Vercel preview page shows. both the dev / build versions look like the should locally

Thank you very much for your contribution! I will make a few last tweaks.


[admin] merge to live

Docs Build status updates of commit 56f1b6c:
:warning: Validation status: warnings

File
Status
Preview URL
Details

docs/legacy-protocols/how-to-authenticate-an-imap-pop-smtp-application-by-using-oauth.md
:warning:Warning
View
Details

docs/web-service-reference/restriction.md
:bulb:Suggestion
View
Details

docs/exchange-web-services/tools-and-resources-for-troubleshooting-ews-applications-for-exchange.md
:white_check_mark:Succeeded
View

docs/transport-agents/reading-and-modifying-messages-in-the-exchange-2013-transport-pipeline.md
:white_check_mark:Succeeded
View

docs/legacy-protocols/how-to-authenticate-an-imap-pop-smtp-application-by-using-oauth.md

Line 20, Column 4: [Warning-bookmark-not-found] Cannot find bookmark '#configure-your-application' in 'legacy-protocols/how-to-authenticate-an-imap-pop-smtp-application-by-using-oauth.md'.

docs/web-service-reference/restriction.md

Line 71, Column 2: [Suggestion-column-header-missing] Column headers are required for tables. Add appropriate header text, or remove any extra table cells that cause an extra column.

For more details, please refer to the build report.
If you see build warnings/errors with permission issues, it might be due to single sign-on (SSO) enabled on Microsoft's GitHub organizations. Please follow instructions here to re-authorize your GitHub account to Docs Build.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
Note: Your PR may contain errors or warnings unrelated to the files you changed. This happens when external dependencies like GitHub alias, Microsoft alias, cross repo links are updated. Please use these instructions to resolve them.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel


Issue: Events are not accumulative?

I made a plugin to inject html code in html files.
The problem is that the plugin can not be added twice as you can see in the example:

https://github.com/gtrabanco/elysia-inject-html/blob/1678ef554502ff35d86c1d6270103cb7687bfb5e/src/example.ts

If I delete use(pluginTwo) it worked but if I keep it it is not working.
You can Download the repo and run the example with:
bun example

I tried with scoped: true but there are some issues with that too: #158

Close as unable to reproduce on the latest Elysia version.
We have a several patch to fix this issue, and no longer able to reproduce on the latest version.


[HUDI-2489]Tuning HoodieROTablePathFilter by caching hoodieTableFileSystemView, aiming to reduce unnecessary list/get requests

What is the purpose of the pull request
Tuning HoodieROTablePathFilter by caching hoodieTableFileSystemView, aiming to reduce unnecessary list/get requests.
Cache HoodieTableFileSystemView at baseDir level
The same as HoodieTableMetaClient
Here is the test result based on S3 hudi table
240 partitions and 2400 data files.

Condition
All Requests
Get Requests
List Requests
4xx errors

Disable metadata table
17280
14144
1322
1568

Disable metadata table + this patch tuning
11495
9839
796
620

Condition
All Requests
Get Requests
List Requests
4xx errors

Enable metadata table
21024
13980
3198
3438

Enable metadata table + this patch tuning
13399
10485
1093
1298

I also verify the query result, and it works fine.
Verify this pull request
(Please pick either of the following options)
This pull request is a trivial rework / code cleanup without any test coverage.
(or)
This pull request is already covered by existing tests, such as (please describe tests).
(or)
This change added tests and can be verified as follows:
(example:)

Added integration tests for end-to-end.
Added HoodieClientWriteTest to verify the change.
Manually verified the change by running a job locally.

Committer checklist

[ ] Has a corresponding JIRA in PR title & commit

[ ] Commit message is descriptive of the change

[ ] CI is green

[ ] Necessary doc changes done or have another open PR

[ ] For large changes, please consider breaking it into sub-tasks under an umbrella JIRA.

I am a little curious about why the requests in Enable metadata table is larger than Disable metadata table, and also what the query response time difference between enable/disable metadata table?

I am a little curious about why the requests in Enable metadata table is larger than Disable metadata table, and also what the query response time difference between enable/disable metadata table?

I think hudi query internal hudi MOR table to do file list instead of list the files in partitions so that can improve list performance. But as we know a query-hudi-table-action need more requests compared a single list action. Maybe this can explain why the requests in Enable metadata table is larger than Disable metadata table

As for performance improved because of hudi metadata table, I got the follow answers:

Condition
Processing Time

Disable metadata table
143s

Enable metadata table
120s

based on S3 hudi table 240 partitions and 2400 data files.

By the way, thanks for your attention @leesf :)

Hi @vinothchandar I noticed that you are the author of HoodieROTableFilter.java. Would you mind take a look at your convince?
Very appreciate it if you could give me a hand :)

@zhangyue19921010 : wrt your comment on perf difference (enabling and disabling metadata), was it a read query that you benchmarked? If yes, did you also enable metadata when you queried? CC @xushiyan

@nsivabalan Thanks a lot for your review. Yep, I use a query with meta-data enabled at query side to do the benchmark.

Actually, for legacy MapReduce. This patch is very important. Without this patch, HoodiROTablePathFilter will be thousands times slower.


Don't drop paths containts globs

This PR contains the following changes:

fixed the list comprehension in _expand_path to not drop glob paths (foo/bar/*)
fixed _expand_path when called with a glob path and recursive=True
fixed _glob_find when called with a glob path
added a test to map the current behavior of expand_path (recursive=True)
fix _put_file when called with a path that is a directory

Please let me know what you think about these changes.
I noticed that _glob_find and _find are not consistent when returning directory paths. _find returns trailing slashes while _glob_find does not. Is that intended?
Also in the current implementation _expand_path includes the root directory for non-glob paths, while _glob_find does not. What is the desired behavior here?
About tests:

test_url failed for me with a 403 before my changes - did not look into that
I don't know why the CI tests are failing - I guess this is a general issue?

Thanks for digging in here.
CI tests run against Azurite, which Microsoft updated 6 weeks ago.  I'll dig into this failure mode, then I'll circle back to the question of other topics.

@hayesgb did you find time to look into this?

Anything I can do to get this merged?

Any update or progress on this?


The 'Row key' in the Entity restriction doesn't take effect when attaching one table

Storage Explorer Version: 1.22.0-dev
Build Number: 20211123.1
Branch: main
Platform/OS: Windows 10/Linux Ubuntu 20.04/MacOS Monterey 12.0.1
Architecture: ia32/x64
How Found: Exploratory testing
Regression From: Not a regression
Steps to Reproduce

Expand one storage account -> Tables.
Create a table (as the below).

Right click the table -> Click 'Get Shared Access Signature...'.
Type '1' to the 'Starting partition key' field -> Type '4' to the 'Starting row key' field.
Create SAS -> Copy the SAS URL -> Attach the table using the SAS URL.
Observe the entities of the attached table -> Check whether the row key takes effect.

Expected Experience
The row key takes effect.
Actual Experience
The row key doesn't take effect.

Additional Context
You can get the table from table.csv.

@v-xianya Can you be more specific about the expected outcome?
Partition and row keys should not be considered as separate properties that you're filtering on in this case. It may be easier to think of them like 2D coordinates.
If we have a table like this:

Partition Key
Row Key

1
1

1
2

1
3

2
1

2
2

2
3

3
1

3
2

3
3

And we connect using a starting partition key of 2 and a starting row key of 2, you should see the following:

Partition Key
Row Key

2
2

2
3

3
1

3
2

3
3

@craxal Thank you for the sharing
For this issue, connect using a starting partition key of 2 and a starting row key of 4, the following would make sense.
I understand the starting point is (4,4)

Partition Key
Row Key

4
4

5
5

BTW, What is the staring point if we set  a starting partition key of 2 and a starting row key of 5 for the below table?

Partition Key
Row Key

1
2

2
3

3
4

4
5

5
6

6
7

7
8

@v-xianya I would expect the starting point would be (3, 4).


Use different firmware for each device

We are currently using same firmware on different devices. If their ID differs, it's obviously for a reason. Only driver code can be shared across different devices.
For each sensor supported by goodix-fp-dump, we should provide a new firmware.
Here are the rules to add a firmware:

Firmware should be provided only by a Wireshark capture recording the update process between the Windows driver and the device. We should not attempt to extract it from the driver code itself.
The capture should be posted on goodix-wireshark and referenced in the commit.
The firmware should be associated with a .CHECKSUM file containing the SHA256 sum of the firmware. We should be able to use this file with sha256sum command. That is to say, that the file should follow the FIPS-180-2 standard.
Any commit adding a new firmware should be signed by now.

Any suggestion is also accepted.

Firmware can also be extracted from the sensor itself, if the firmware provides a command to read the flash (cmd0: 0xf, cmd1: 0x1 for 53x5).

Firmware can also be extracted from the sensor itself, if the firmware provides a command to read the flash (cmd0: 0xf, cmd1: 0x1 for 53x5).

Indeed. But the process is a bit more complicated. This might create issues (offsets for example). And we have no option to check if it's valid.

We actually have the possibility to verify dumps. The IAP firmware verifies the APP firmware on each reset. It does so using a length field and a CRC32 field, which are both stored in flash memory and can thus be dumped. If the firmware dumped from the sensor passes that same check, then it has to be correct. Obviously, this assumes that the IAP firmware was also dumped and reversed.
I agree with you in saying that this process is more complicated, but there are sensors which have never received updates and thus no recording of the update can be obtained.

I agree with you in saying that this process is more complicated, but there are sensors which have never received updates and thus no recording of the update can be obtained.

Can't we force the driver to flash the firmware on those devices?

The check that triggers the flashing verifies the version reported by the microcontroller. One possibility would be to "wipe" the APP firmware and reset into the IAP firmware, but obviously, if something goes wrong, the device will become unusable. If the device has never been updated, the updating process may have not been tested.

Could a Windows - Windows dual boot do the trick? (VMs are fine too)

No, because dual booting would trigger the regeneration of the PSK, but it would not change the version string reported by the microcontroller.

So you mean that on 53x5 devices updating the PSK doesn't require to update the firmware?

No, it is not required. The "whitebox" encryption is obviously the same, but the PSK is flashed in a separate region. If the SHA256 of the PSK does not match the expected one, a new PSK is generated, sent whitebox encrypted and flashed on the microcontroller.


Support CS 16

With CS authentication removed need to move to supporting OTDS for CS 16,.

Not yet I don't, standard SOAP and REST auth calls still work (I assume they're pushing auth to OTDS under the hood)


Update TLS generation to create single CA and client certs

Currently, new CA, client and server certificates are generated for each machine.  This seems a bit much.  We should create a single CA and single client cert (for the current client) and then new server certs signed with the single CA for each machine.  This will also help integration with Swarm.

+1


bug: contract errors are treated as transactions rejected

if a contract call fails before the user signs the transaction it is recognized as a transaction rejected because the status flag that is initially UserConfirmation is never updated. Example:
let result = TransactionStatus.UserConfirmation;

try {
    tx = await contract.call(param, { ...overrides });
} catch (error) {
  // at this point result will always be user confirmation if contract.call threw an error
  if (result === ransactionStatus.UserConfirmation) {
   onRejection()
    ...
  }
}

:tada: This issue has been resolved in version 1.16.4 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:

:tada: This issue has been resolved in version 1.16.4 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Update nb2

closes #36

HI @amal-ghamdi, The notebook reads really well now. Great job! I also think the restructuring helped a lot.
I had some minor suggestions + one bigger change to the paragraph about conditional distributions, which simply did not make sense to me as it was. They are in #50. If that is merged into this branch I approve :)

Thank you @nabriis! your very helpful changes are merged now. I like your rewrite of the conditional distribution section intro.


Kore <-> JSON: Implement round-trip tests using textual kore and json

Using tests from tests/parser

add files with json format corresponding to the textual kore files (separate directory)
implement round trip testing between textual and json format

And some small changes to the JSON format

provide a shell script to generate tests (calling into the test data generator sampling)
change field names as discussed (@tothtamas28 to provide details)
change _ to - in identifier lexical checks/generator

Unfortunately all test data files in test/parser contain entire modules instead of simply patterns.
Will implement a way to extract all patterns from modules so we can still work with the files.


⚠ Tyre Pharmacy has degraded performance

In afaeaf9, Tyre Pharmacy (https://tyrepharm.ru/) experienced degraded performance:

HTTP code: 200
Response time: 8171 ms

Resolved: Tyre Pharmacy performance has improved in 62ec040 after 9 minutes.


feat: simplify async functionality to provider

This PR
Adds the ability for open feature providers to use async methods
Note: This version simplifies the implementation and doesn't change any of the hook implementation.
Related Issues
https://github.com/open-feature/python-sdk/issues/284
https://github.com/open-feature/python-sdk/pull/383
Notes
Just confirming the approach / POC for how this would work.

Hey @leohoare, thanks for the pr. I'm at KubeCon this week so reviews may be a bit delayed but I'll take a look as soon as possible.

No rush @beeme1mr, enjoy kubecon.

The current approach wasn't very compatible with mypy, I've updated settings to ignore overrides.
i.e.
    def get_boolean_value(
        ...
    ) -> bool:

Can be overwritten to
    async def get_boolean_value(
        ...
    ) -> bool:

Also given we're not forking the typing protocol FeatureProvider the following line isn't recognised as awaitable.
resolution = await get_details_callable(*args)

So I've ignored the error for that line. # type: ignore[misc]
I'm not a heavy mypy user, let me know if there's a better or cleaner approach you'd prefer here.