Strategies for hydrating a store from SSR

Hi there, I'm experimenting with this package and have been pleasantly surprised so far. Good job!
I wonder if it would be worthwhile to add some documentation about possible solutions to deal with server-side rendering. A typical server-side rendered Redux setup looks like this:

On each request to the server, a fresh Redux store is created for that request.
When generating the response body, the Redux state for that request is serialized into the HTML.
When the client hydrates, a new global client-side Redux store is created and preloaded with the serialized state.

Maybe you can see the problem: on the server, some arbitrary set of dynamic Redux modules may have been loaded. On the client, we get the state those modules created, but we have a new store instance without any modules actually loaded. Besides inferring it from what state exists in the store, there's no indication of which modules need to be loaded to deal with that state. The set of loaded modules is effectively part of the Redux store's state, but one that hasn't been serialized from server to client.
You might think DynamicModuleLoader is a good enough solution for this, since it should result in the same modules being loaded on client and server if the same tree is rendered (like it should). The issue is that often, data needs to be fetched ahead of time (e.g. with Redux) before a component tree is even created/decided upon, since (until Suspense arrives) there is no way to "wait" for data during SSR. So, frameworks invent new lifecycle hooks to do this fetching, like getInitialProps in Next.js. In this hook, you'd need to use Redux, fire actions, etc., but any module you'd need would have to be added imperatively with addModules.
The set of loaded modules must be communicated in a serializable way, like an array of strings. This could be the module IDs (you'd need to keep a global mapping of ID → module in order to actually load them, which might defeat the purpose of splitting everything up in the first place), or perhaps the module path (so it can be dynamically imported).
That leaves the issue of initialActions: AFAIK, if the initial actions were already fired on the server, there's no way to tell the client-side store to skip those actions. Some actions, depending on their side effects, might be necessary to fire on both the client and server, while others you'd want to skip if the server already fired them. This could be handled with some bookkeeping in the module's own store state, like bootstrapped: true or something, or maybe you could dynamically modify the module to exclude initialActions when necessary on the client...
Anyway, I wonder if anyone else has thought about this, and what your approach is.

@exogen can you provide an example of how you be able to make it work with Next.js?

Hey folks, this is turning into a blocker for us as well.

Can you do following instead?

Have initialActions in the modules added via DynamicModuleLoader
The action can have payload that is read the json data sent from the server

The problem with this approach is that lazy loaded code in SSR is synchronously loaded, which means initial actions fire for the loaded modules. But since this action cannot read the initial JSON sent from the server (while it's running on the server itself), we would then have to make write the action in a way where its a no-op when running on the server, but load the state from the JSON on the client. This significantly increases boilerplate and indirection.
I'm not sure what is the best approach here, but if some sort of hydrator prop could be passed into the DynamicModuleLoader react component, it could then do the simple setting of the reducer's slice of state by calling some pre-defined fn.

That's why the diagram points out the desired solution: the module is added in getInitialProps (before the component is even constructed) and not removed until the component is unmounted.

I haven't had chance to actually test this yet, but it might be possible to remove the modules in componentWillUnmount using a pattern such as :
 ...
 getInitialProps(ctx) {
    //may be serverside or clientside
    const removeHandle=store.addModules(modules).remove
    if(typeof window !=='undefined') window.removeHandle=removeHandle
   ...
}
componentWillUnmount() {
    //only ever clientside
    window.removeHandle && window.removeHandle()
}

// or alternatively

getInitialProps(ctx) {
    //may be serverside or clientside
    const removeHandle=store.addModules(modules).remove
    ...
    return {...otherprops,removeHandle}
    //as functions cannot be JSON serialized then the handle will only be sent if this method is executed clientside
}
componentWillUnmount() {

    this.props.removeHandle && this. props.removeHandle()
}

This is merely a warning and doesn't technically break anything, but I'd prefer it not to happen. The issue is that the ModuleAdded action is being fired, and Redux is seeing some preloaded state (from SSR) that isn't associated with any current reducer

I'm not sure that this is necessarily 'just a warning' as if any of the reducers alter the state in response to the ModuleAdded action then the resulting state is formed only from the outputs of the current reducers. If however all the reducers return reducer(oldstate) ===oldstate then the combined reducer returns the original state object unchanged - ie with the preloaded but not yet used state retained. This means that if any of the dispatched actions (the ModuleAdded action or any initial actions) change the state in any way, the state for all the not-yet-installed modules will be discarded.
Possible ways to rehydrate the store from SSR then might include retrieving state on initial reducer seeding if it has been deleted:
function myReducer(oldState,action){
    if (oldState===undefined && typeof window !=='undefined' && window.__STATE_FROM_SERVER) return window.__STATE_FROM_SERVER.myReducer
    ...
    }

Alternatively code something like this into the core reducer implementation or the <DynamicModuleLoader/> component (as mentioned above) rather than require boilerplate at the top of every reducer
Happy to contribute a PR if wanted

Anyone got this to work properly with nextjs?

Hey. Take a look at my example of using NEXT with dynamic modules. https://github.com/fostyfost/next-with-redux-dynamic-modules

@fostyfost : This is a great example, Thanks for that.
There is problem though, your example seems to be working fine with next's getInitialProps but it doesn't work when we use getServerSideProps and getStaticProps
when i converted your users.tsx code
from
UsersPage.getInitialProps = context => {
  if (!isUsersLoaded(context.store.getState())) {
    context.store.dispatch(UsersPublicAction.loadUsers())
  }

  return { title: 'Users page' }
}

export default withDynamicModuleLoader(UsersPage, [getUsersModule()])

to
UsersPage.getServerSideProps = context => {
  if (!isUsersLoaded(context.store.getState())) {
    context.store.dispatch(UsersPublicAction.loadUsers())
  }

  return { title: 'Users page' }
}

export default withDynamicModuleLoader(UsersPage, [getUsersModule()])

it shows blank page now only

@hellokunji hi! Thank you for your feedback! Currently my example doesn't support modern Next.js GS(S)P-feature but I'm working on it. Also I want to distribute this feature as a standalone library.

@hellokunji hi! Thank you for your feedback! Currently my example doesn't support modern Next.js GS(S)P-feature but I'm working on it. Also I want to distribute this feature as a standalone library.

@fostyfost  No problem!, I will be following and waiting for the library updates. 👍

@fostyfost : This is a great example, Thanks for that.
There is problem though, your example seems to be working fine with next's getInitialProps but it doesn't work when we use getServerSideProps and getStaticProps

The object returned from getServerSideProps is different to the getInitialProps
Try:
UsersPage.getServerSideProps = context => {
if (!isUsersLoaded(context.store.getState())) {
context.store.dispatch(UsersPublicAction.loadUsers())
}
 return {props:{ title: 'Users page' }}
}

export default withDynamicModuleLoader(UsersPage, [getUsersModule()])

@fostyfost : This is a great example, Thanks for that.
There is problem though, your example seems to be working fine with next's getInitialProps but it doesn't work when we use getServerSideProps and getStaticProps

The object returned from getServerSideProps is different to the getInitialProps
Try:
UsersPage.getServerSideProps = context => {
if (!isUsersLoaded(context.store.getState())) {
context.store.dispatch(UsersPublicAction.loadUsers())
}
 return {props:{ title: 'Users page' }}
}

export default withDynamicModuleLoader(UsersPage, [getUsersModule()])

Thanks for the reply, it still doesn't work.

@hellokunji hi!
Please, try this library is your issue is still actual.
https://github.com/fostyfost/redux-eggs


Add a PurgeAsync overload that clears all incremental sync metadata

Currently, if you're using incremental sync, you need to purge incremental sync metadata by providing the query name. It would be helpful to have an overload that purges all queries for that table. (In fact, won't it result in bugs if it isn't purging the metadata, since there's no way to get the old records?)
We could either add an overload to the per-table version and/or add an overload to the sync context. The latter would be helpful if you need to clear the database on app logout.

This would be very important!
Consider the case where a record "fits in" two queries, each one with different query ids (let's say queries A and B). If I perform a purge on query A, the record is removed from the table, but query B's metadata  remains the same and therefore will not attempt to pull that record from server the next time it runs....

Hi there, please look at this section of the ReadMe that highlights the future of Azure Mobile Apps. At this time, we are not adding any new features in the SDK. Thanks!


Add SafeArea DartPad sample

Follow-up from #157228

Code looks good to me! Unfortunately, I've never added a sample to Flutter before so I'm not sure if there's any special considerations here - @Piinks do you know who could review this?


Stream output while transcoding

Hi,
Is it possible to read a video while it is transcoding please?
Thank you

Take a look https://trac.ffmpeg.org/wiki/StreamingGuide, basically you should make multiple outputs, in this case, one for transcoding and another one for streaming.


emulators/qemu-guest-agent: upstream port was replaced with FLAVOR=guestagent

Important notices
Before you add a new report, we ask you kindly to acknowledge the following:

[X] I have read the contributing guide lines at https://github.com/opnsense/plugins/blob/master/CONTRIBUTING.md
[X] I have searched the existing issues, open and closed, and I'm convinced that mine is new.
[X] The title contains the plugin to which this issue belongs

Describe the bug
The FreeBSD port of emulators/qemu-guest-agent was removed:
https://github.com/FreeBSD/freebsd-ports/commit/92dec795cd3fc00c5b9f62cd8be7b6540132f27e
It is now a FLAVOR of emulators/qemu:
https://github.com/FreeBSD/freebsd-ports/commit/564c4cb3d9bb0aa87d676103fa164ea9833b7897
However, the patches that made the original port work on FreeBSD were removed. I'll have to test whether or not the new qemu@guestagent port is working properly.
To Reproduce
n/a
Expected behavior
n/a
Screenshots
n/a
Relevant log files
n/a
Additional context
n/a
Environment
n/a

It looks like qemu-guest-agent 7.2.0 is working just fine:
$ sudo virsh qemu-agent-command opnsense.example.com '{"execute":"guest-get-osinfo"}'
{"return":{"kernel-release":"13.1-RELEASE-p5","kernel-version":"FreeBSD 13.1-RELEASE-p5 stable/23.1-n250372-c4ad069e50a SMP","machine":"amd64"}}

$ sudo virsh qemu-agent-command opnsense.example.com '{"execute":"guest-get-host-name"}'
{"return":{"host-name":"opnsense.example.com"}}

$ sudo virsh qemu-agent-command opnsense.example.com '{"execute":"guest-network-get-interfaces"}'
{"return":[{"name":"vtnet0","ip-addresses":[{"ip-address-type":"ipv4","ip-address":"<IP_ADDRESS>","prefix":24}, ...

Hey @fraenki & @fichtner
Thank you very much for the 7.2 port!
But is it possible to update the package to 8.0.3?
See here:
https://www.freshports.org/emulators/qemu/
The flavour is still "guestagent: qemu-guest-agent"
That would fix fsfreeze as far i understand and is the first official freebsd guest agent.
Also contains this 8 months old changes:
<EMAIL_ADDRESS>And as we have on proxmox 8, qemu 8.0, this would allow for version parity.
Thanks again!


Fix storing bootstrap data with empty token string

Signed-off-by: galal-hussein<EMAIL_ADDRESS>Fix saving bootstrap data with empty token
Proposed Changes
At saving the bootstrap data in storage:

It will first list all keys available in etcd
if empty token key exists then it will override that and create a new bootstrap key
if it finds a different key encrypted with different token it will exit with an error

At loading the bootstrap data from storage:

It will first list all keys available in etcd
if empty token key exists it will load the data from that key and re-add the key again with the right token key
if it finds a different key encrypted with different token it will exit with an error

Types of Changes
BugFix

It should also delete the old bootstrap key once the data has been re-encrypted, as leaving a copy around encrypted with the empty-token passphrase would make it easy for someone to just get the data from the old key if they had access to the datastore.

Why would it require a kine change? You should just be able to delete the etcd key and kine will eventually compact it just like any other.

Why would it require a kine change? You should just be able to delete the old key and kine will eventually compact it just like any other.
This issue affects both etcd and external sql, so it should be handled properly for both - including deleting the empty-token key.

storage client interface is based on kine, and surprisingly it doesnt contain a Delete implementation

This will need really prominent release notes for the changes


feat: Updated subtitle position to bottom

Description
This PR updates the placement of sub title text to the bottom of the form control. And this will not be applicable to

ARRAY_FIELD
WHERE_CLAUSE
QUERY_DYNAMIC_TEXT

Fixes #34321
Automation
/ok-to-test<EMAIL_ADDRESS>:mag: Cypress test results

[!CAUTION]
🔴 🔴 🔴 Some tests have failed.
Workflow run: https://github.com/appsmithorg/appsmith/actions/runs/10483699652
Commit: dd2b3cdfce50a24f7bf8494fde42b9e4706bf6c2
Cypress dashboard.
Tags: @tag.All
Spec:
The following are new failures, please fix them before merging the PR:
cypress/e2e/Regression/ClientSide/Widgets/Checkbox/CheckboxGroup2_spec.js
cypress/e2e/Regression/ServerSide/Postgres_DataTypes/Binary_Spec.ts
List of identified flaky tests.
Wed, 21 Aug 2024 07:26:28 UTC

Communication
Should the DevRel and Marketing teams inform users about this change?

[ ] Yes
[x] No

Summary by CodeRabbit

New Features

Introduced conditional rendering for subtitles in the form configuration, enhancing the organization of control types.

Style

Improved styling consistency for StyledFormInfo and FormSubtitleText components by refining display properties and margin logic.

/build-deploy-preview skip-test=true

/build-deploy-preview skip-test=true

/build-deploy-preview skip-test=true


Revert "[hive] Improve hive database is exists yet create/drop database (#2595)"

This reverts commit b3fd931e0c24202e605489cfcd085314a0b0c470, see https://github.com/apache/incubator-paimon/pull/2595#discussion_r1451752055

Purpose

Linked issue: close #xxx

Tests

API and Format

Documentation

Hi @Zouxxyy , can you explain more about why we need to revert this commit? test error? performance?

Hi @Zouxxyy , can you explain more about why we need to revert this commit? test error? performance?

Check alreadly in createDatabase, such as whether it is a system db or whether the db exists. CreateDatabaseImpl does not require additional verification.
    public void createDatabase(String name, boolean ignoreIfExists)
            throws DatabaseAlreadyExistException {
        if (isSystemDatabase(name)) {
            throw new ProcessSystemDatabaseException();
        }
        if (databaseExists(name)) {
            if (ignoreIfExists) {
                return;
            }
            throw new DatabaseAlreadyExistException(name);
        }

        createDatabaseImpl(name);
    }


Check for unpartitioned container

Packages impacted by this PR
@azure/cosmos
Issues associated with this PR
#24287
Describe the problem that is addressed by this PR
A warning is logged on console if partition key is not present in resource body for bulk operations. This fix checks for a non-partitioned container, and skips logging a warning for it.
What are the possible designs available to address the problem? If there are more than one possible design, why was the one in this PR chosen?
Are there test cases added in this PR? (If not, why?)
Provide a list of related PRs (if any)
Command used to generate this PR:**(Applicable only to SDK release request PRs)
Checklists

[ ] Added impacted package name to the issue description
[ ] Does this PR needs any fixes in the SDK Generator?** (If so, create an Issue in the Autorest/typescript repository and link it here)
[ ] Added a changelog (if necessary)

API change check
API changes are not detected in this pull request.


Ensure all logs from PANW are included in Sentinel dashboard

Required items, please complete
Change(s):

Updated Palo Alto work book

Reason for Change(s):

https://github.com/Azure/Azure-Sentinel/issues/9958

Version Updated:

Required only for Detections/Analytic Rule templates
See guidance below

Testing Completed:

Yes

Checked that the validations are passing and have addressed any issues that are present:

See guidance below

Guidance <- remove section before submitting

Before submitting this PR please ensure that you have read the following sections and filled out the changes, reason for change and testing complete sections:
Thank you for your contribution to the Microsoft Sentinel Github repo.

Details of the code changes in your submitted PR.  Providing descriptions for pull requests ensures there is context to changes being made and greatly enhances the code review process.  Providing associated Issues that this resolves also easily connects the reason.

Change(s):

Updated syntax for XYZ.yaml

Reason for Change(s):

New schema used for XYZ.yaml
Resolves ISSUE #1234

Version updated:

Yes
Detections/Analytic Rule templates are required to have the version updated

The code should have been tested in a Microsoft Sentinel environment that does not have any custom parsers, functions or tables, so that you validate no incorrect syntax and execution functions properly.  If your submission requires a custom parser or function, it must be submitted with the PR.

Testing Completed:

Yes/No/Need Help

Note: If updating a detection, you must update the version field.

Before the submission has been made, please look at running the KQL and Yaml Validation Checks locally.
https://github.com/Azure/Azure-Sentinel#run-kql-validation-locally

Checked that the validations are passing and have addressed any issues that are present:

Yes/No/Need Help

Note: Let us know if you have tried fixing the validation error and need help.

References:

Guidance for Detection checks
General contribution guidance
PR validation troubleshooting

/package


Add a unit test for S3Uploader

This PR is a follow-up of https://github.com/antrea-io/antrea/pull/4433. It adds a new test case to cover
the partial-success situation in a S3 upload process. It also
rewrites most of the tests by replacing fake implementation of
S3UploaderAPI by a mock.
Signed-off-by: heanlan<EMAIL_ADDRESS>

it's a bit hacky, even for a unit test. you have to add a buffer to bufferQueue manually. could you try generating an actual mock for the S3UploaderAPI interface and using that in the tests instead? Or do you think it's not a good idea?

Thanks, Antonin. Will do.
For anyone who is tracking on this PR: it is not target for 1.11 release. Let's target it for 1.12. Thanks.

/skip-all
only unit test code was changed


Fix typos

I have fixed some typos in README. Please check it up before merging, b/c I couldn't fully understand the context at some points. ;)

Thanks a lot!
This is really what I needed  :smile:

My pleasure. I have a plan to build a small toy project for my wife using reduxible. Let me see and contribute more if I can.

:+1:


Possible Extension: Idempotent POST

I have no clue how this would work yet, but I just want to throw out the idea, as having this use case on the table could affect our extension system's design. Making an idempotent POST isn't a new concept, but it can be quite useful in practice for recovering from network issues (see, e.g., stripe's use), and I think it'd make a good extension.
Here's a good background article on the topic: https://www.subbu.org/blog/2008/10/double-post-and-poe

What advantage does "idempotent POST" have over just using a PUT?

Basically, that the client doesn't know the URI to PUT to yet, because the resource (and its URI) that would result from the POST may not have been created yet. So, if a client want to add an "article" resource, it can't PUT to the URI for that article before it exists. So these POE ideas route around that, offering a POST and redirect alternative to  PATCH + client-generated id.

We'd like to move discussion of specific extensions over to http://discuss.jsonapi.org/
We're closing all extension proposals here, but tracking them over in #794 so none slip through the cracks. We'll be revisiting extension proposals after 1.1 once we land support, in accordance with our roadmap.


limit TEXT_REGULAR creates MEDIUMTEXT column

->addColumn('text', 'string', array('limit' => MysqlAdapter::TEXT_REGULAR))
creates column type MEDIUMTEXT instead of normal TEXT

Hi,
I was facing this issue too today, but found the solution with some source code reading.
For Text types use (eg. TEXT)
->addColumn('col_name', 'text', array('limit' => MysqlAdapter::TEXT_REGULAR))
For Varchar use (eg. length 200)
->addColumn('col_name', 'string', array('limit' => 200))
For Char use (eg. length 3)
->addColumn('col_name', 'char', array('limit' => 200))
The source files

https://github.com/robmorgan/phinx/blob/0.4.x-dev/src/Phinx/Db/Adapter/MysqlAdapter.php getSqlType(..) line 718
https://github.com/robmorgan/phinx/blob/0.4.x-dev/src/Phinx/Db/Adapter/AdapterInterface.php#45 constant definitions, line 45

:+1: @JarJarMP

Seems like the documentation could need some love here.
Are you able to provide a pull request with your suggested changes there?

Closing due to lack of activity or out of scope. If there is new interest, please open a PR.


Add support for macOS Terminal's Marks and Bookmarks features

On macOS, its built-in Terminal app provides a really handy way to navigate up and down through all the prompts and also user-defined locations in the terminal window's visible history, in the form of "Marks" and "Bookmarks", complete with their own keyboard shortcuts and various menu items.
This would be a very convenient feature to port over to and adapt in Windows Terminal as well.
For specifics on macOS Terminal's "Marks" and "Bookmarks" features, please see:

https://support.apple.com/en-ca/guide/terminal/trml135fbc26/mac
https://www.howtogeek.com/256548/how-to-use-marks-in-os-xs-terminal-for-easier-navigation/
https://scriptingosx.com/2017/03/terminal-the-marks-the-spot/

Thanks for the suggestion! We're already tracking this over in #1527, but I'm gonna move your comment there, since it seems like well sourced info.
/dup #1527


[RequirementMachine] Implement inference and minimization of same-shape requirements.

A "same-shape" requirement states that two type parameter packs have the same structure, including having the same length. Same-shape requirements cannot be written explicitly; they can only be inferred from same-type requirements between parameter packs and pack expansions that contain multiple parameter packs:
// '(T, U)...' implies a same-shape requirement between T and U.
func inferSameShape<@_typeSequence T, @_typeSequence U>(ts t: T..., us u: U...) where ((T, U)...): Any

Same-shape requirements between dependent member types are desugared to equate the root type parameter shapes:
protocol P {
  associatedtype A
}

// '(T.A, U.A)...' implies a same-shape requirement between T and U.
func inferSameShape<@_typeSequence T, @_typeSequence U>(ts t: T..., us u: U...) where ((T.A, U.A)...): Any

A same-shape requirement is a rewrite rule:
T.[shape] => U.[shape]

[shape] is a new symbol that can be appended to generic parameter terms. In the future, we can allow concrete shape requirements using a concrete shape property symbol, e.g.
T.[shape].[concreteShape: PackType(Int, U...)] => T.[shape]

@swift-ci please smoke test

@swift-ci please smoke test

@swift-ci please smoke test

Windows test failure is unrelated
Failed Tests (1):
  Swift(windows-x86_64) :: Interop/Cxx/class/mutability-annotations-typechecker.swift


test(almin): setup TypeScript testing env

Start of #144
This Pull Request setup TypeScript env for testing.
We can write test as TypeScript.
Welcome to pull request that convert test/ to TypeScript #144 :)

I've start to use Jest, but give up it.
Because, Jest is not run in real browser.
Jest + SauceLabs E2E Testing doesn't work.


sh make.sh errors under pytorch version '1.0'.

System information

Operating system: Ubuntu 18.04
CUDA version:  CUDA v10
cuDNN version: cuDNN v7.3
GPU models (for all devices if they are not all the same): ? V100
python version: ? 3.6
pytorch version: ? 1.0

Under pytorch '1.0',
sh make.sh

Compiling nms kernels by nvcc...
Traceback (most recent call last):
File "build.py", line 4, in
from torch.utils.ffi import create_extension
File "/usr/local/lib/python3.6/dist-packages/torch/utils/ffi/init.py", line 1, in
raise ImportError("torch.utils.ffi is deprecated. Please use cpp extensions instead.")
ImportError: torch.utils.ffi is deprecated. Please use cpp extensions instead.

This is because ffi was deprecated in Pytorch '1.0'.
Could anyone solve this problem?

I have the same problem. @roytseng-tw Do you have a plan to support pytorch 1.0?

I have the same problem .....

the same problem， I use “pip install torch==0.4” instead of ”pip install torch“”。
then， pip install cffi
and sh make.sh ，it seems worked well

I have the same problem when I use the pytorch 1.0.0.

upload instruction on building for pytorch1.0
view the file in Markdown Editor
https://drive.google.com/file/d/1aBGzUgMmCxb8OY0BQ0uCt7PCRvf7CS62/view?usp=sharing

There is a fork that seems to support PyTorch 1.0: https://github.com/adityaarun1/Detectron.pytorch
I have not yet tested it...


MII sample docs

MII sample doc preview. Do not merge.

This looks very good to me. It's quite hard though to compare the options (what we have vs. this change) in a diff tool.

True. It looks better in the Hugo UI.


improve OpenALMusic getPosition accuracy fix #4268

This is a first shot, maybe more tests would be necessary.
As @riqueaalves explained, renderedSeconds variable is reset too early when looping. My fix stores futur  renderedSeconds values for queued buffers. This should fix position value when last buffer is being loaded and not played yet.
Suggestions welcome!

Should be OK now.


Define accurate values for creep experience

Do research in original game to get a basic understanding. Need to know how creep experience changes based on wave level, creep size, etc.
Then look in jass code to find a formula.
Implement formula.

Already implemented by af27262246f54bbca28de36a06d82773e7cc5237


remove eval in init

MakieCore._create_plot[!] can be overridden instead...

... I think this may be the cause of this error in my package's Aqua tests. Disabled on my end for now.

Fixed by #245


Codegen basic destructuring of objects and tuples

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

Please upload report for BASE (main@7aee8ae). Learn more about missing BASE report.

Files
Patch %
Lines

src/Escalier.Codegen/Printer.fs
68.96%
9 Missing :warning:

src/Escalier.Codegen/Codegen.fs
88.23%
4 Missing :warning:

Additional details and impacted files
@@           Coverage Diff           @@
##             main     #300   +/-   ##
=======================================
  Coverage        ?   84.14%
=======================================
  Files           ?       23
  Lines           ?    11254
  Branches        ?     1571
=======================================
  Hits            ?     9470
  Misses          ?     1784
  Partials        ?        0

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


"Openstreetmap Côte d'Ivoire" Telegram chat is actually an announcement channel

It is mismatching other Telegram channels where you may chat, this one is broadcast only.
Maybe it would be better to describe it specially? Or maybe there is an actual chat channel?

You can add a description (info) to this file. For example, "description": "Announcements for activities of {community}. You can not send messages here.", (people will see this description in iD when saving their edits.)
More importantly, has it had any messages recently? (in past two/three years)
If you can't see messages, try sending a message to<EMAIL_ADDRESS>and/or their Facebook page,

Good point. Last activity was in 2019.

I would propose to simply remove it as a dead project.

Ok. Feel free to submit a pull request.


Allow pots without tmpfs-backed /tmp directory

Is your feature request related to a problem? Please describe.
Right now, /tmp is always backed by tmpfs (see https://github.com/pizzamig/pot/blob/d19f779484d0228a2304fad57b0e45bd66d703b7/share/pot/common.sh#L920).
This makes individual pots consume RAM and also creates a lot of additional mountpoints when running many small pots, especially when using nomad, where pots only run once and then get pruned.
Describe the feature you'd like to have
It would be nice to be able to disable the use of tmpfs - either per pot, or at least as a global switch, which should be easy to implement.
Describe potential alternatives or workaround you've considered (if any)
Nothing that isn't dirty comes to mind, but I could provide a patch for a global switch if @pizzamig is okay with it and if there are no assumptions made in pot about tmp being backed by memory.

I see your point.
I guess the best way to implement it is via an attribute, available for single dataset only, where the root file system is mounted rw.
Multi-dataset can mount / in read-only mode, making the implementation more complicated (even if still doable)


timespec build errors

Building master with GCC:
rgevent.c: In function ‘glk_select’:
rgevent.c:133:17: warning: implicit declaration of function ‘timespec_get’ [-Wimplicit-function-declaration]
  133 |                 timespec_get(&timing_start, TIME_UTC);
      |                 ^~~~~~~~~~~~
rgevent.c:133:45: error: ‘TIME_UTC’ undeclared (first use in this function)
  133 |                 timespec_get(&timing_start, TIME_UTC);
      |                                             ^~~~~~~~
rgevent.c:133:45: note: each undeclared identifier is reported only once for each function it appears in
rgevent.c: In function ‘glk_select_poll’:
rgevent.c:184:41: error: ‘TIME_UTC’ undeclared (first use in this function)
  184 |             timespec_get(&timing_start, TIME_UTC);
      |                                         ^~~~~~~~
rgevent.c: In function ‘glk_request_timer_events’:
rgevent.c:377:33: error: ‘TIME_UTC’ undeclared (first use in this function)
  377 |     timespec_get(&timing_start, TIME_UTC);
      |                                 ^~~~~~~~
rgevent.c: In function ‘gli_timer_request_since_start’:
rgevent.c:411:23: error: ‘TIME_UTC’ undeclared (first use in this function)
  411 |     timespec_get(&ts, TIME_UTC);
      |                       ^~~~~~~~
make: *** [<builtin>: rgevent.o] Error 1

I didn't see this error, but I tried adding #include <time.h>.

Yep that's fixed it.


Allow full model URL as argument to replicate.run()

An idea from @mattt on https://www.loom.com/share/a0f9287c0bfe4b80bf403f21e30cc2da

Thanks for translating this into an issue, @zeke 😄
Thinking more about the implementation, I want this to feel more like expanding shorthand than supporting multiple different formats. That is, rather than saying:

replicate.run takes one of the following argument formats..."

I want the explanation to be more like

replicate.run takes a model identifier. When you pass "salesforce/blip:2e1dddc" that's just shorthand for "[https://replicate.com/]salesforce/blip:2e1dddc8621f72155f24cf2e0adbde548458d3cab9f00c0139eea840d0ac4746".

To make that happen, we should make the new, canonical route for a model version on the site to be replicate.com/{owner}/{name}:{version}. I'll create a tracking issue for that and get to work.

it is a good idea. Please start it

@SangVoM we may not get to this immediately, but you're welcome to open a pull request if you want to add support for it!

@zeke Can I request one model?

@SangVoM what do you mean?

@zeke  I want you to support some checkpoints in Civitai Okay?

Closing as not currently planned.


TypeError: Couldn't reconstruct field content_type on mutant.FieldDefinition: init() got multiple values for keyword argument 'polymorphic_type'

I add a static model and do some change in my models.py
After I run

python manage.py migrate --fake-initial

the command

python manage.py makemigrations

does not work ,and  throws the exception:

TypeError: Couldn't reconstruct field content_type on mutant.FieldDefinition: init() got multiple values for keyword argument 'polymorphic_type'

how do I re-sync my database?

I think the problem is using Mysql. I had the same problem and fixed the after changing it to Postgres.

Thanks for the report @afshinm.

I am using postgres but it show the same error .


GoogleFit.checkIsAuthorized() is not working

For Authorization for the first time i am calling following function
const options = {
scopes: [
Scopes.FITNESS_ACTIVITY_READ,
Scopes.FITNESS_ACTIVITY_WRITE,
Scopes.FITNESS_BODY_READ,
Scopes.FITNESS_BODY_WRITE,
],
}
GoogleFit.authorize(options)
.then(authResult => {
if (authResult.success) {
dispatch("AUTH_SUCCESS");
} else {
dispatch("AUTH_DENIED", authResult.message);
}
})
.catch(() => {
dispatch("AUTH_ERROR");
})
==> After Successful authentication on second page for checking i am calling following function
GoogleFit.checkIsAuthorized().then(() => {
console.log(GoogleFit.isAuthorized) // Then you can simply refer to GoogleFit.isAuthorized boolean.
})
if app is running continuously after first authentication than this GoogleFit.checkIsAuthorized() funtion is giving GoogleFit.isAuthorized=true
But if i close my app and than again open the app than its not giving me GoogleFit.isAuthorized=true & all the step history is also disappears
Please Help me with this problem !

I believe you need to call the Auth API every time when you reopen your app.  But the process will be automate after your first login. So you will not see the authentication screen like the first time.
https://github.com/aboveyunhai/FitEtc/blob/851aa34e57705199997544f9f65cc99f55540f45/src/redux/actions/ActionCreator.tsx#L20
This is how I handle the auth process in my own test app. If you check all other functions related to Google Fit, I call the auth() in front of every individual Fit function.

@aboveyunhai I have a concern, with your flow, this means that you will have to cal authorize every time the app opens but what if I want to get the authorization status without calling. Lets say I have a button that does for the authorization at first, and after authorization this button is disabled since I have an authorized user. After that, i close and reopen the app, this button is technically "not disabled" since GoogleFit.isAuthorized will be false and in order to get it to true, I will have to follow your flow. But now, what if I'm a first user and I want to see the consent screen once I click on the button of authorize, on this case it will not work with your flow.
Is there a reason why GoogleFit.isAuthorized of GoogleFit.CheckIsAuthorized returns false after reopen the app?

@Abdulmalick-Dimnang  You can  just call auth inside the button without any further action, if you are logout or new, it will auto trig the consent screen. So there is not difference between new or old except the old one will do nothing visually  since you are already login.
To your second question: Implementation issue itself is a problem, that's why I try to migrate the deprecated Auth flow. So it will make those two functions more reliable at least. You can think of it as a Global Context value in redux/react context but currently lack of a reliable persistent storage. So after you reopen, it becomes to it's default value, which it's false;
Even they work correctly in the future, the reason why I emphasize you should never rely on them is because you never know what will happen outside of the app. For example, somehow your app access on Google Fitness banned or remove by users/devices/other reasons at some point even in the app but they are not aware of.
If you rely on that login status check. you can't really tell if it's true or no in many cases. So the auth guard we are talking about will ensure the consent screen re-appear.
Google Fit Api is smart enough to make the consent screen only appear once even if you recall the auth again until you are logout, or scope changing. It will auto check against the existing account instead of login twice based on my own understanding.


editor_description isn't saved

Godot version
d36b220
System information
W10
Issue description
When you set editor_description and reload scene, it will be cleared. Upon further inspection, seems like it's not saved in tscn file at all.
Steps to reproduce

Add node
Set its editor_description property
Save and reload scene

Minimal reproduction project
No response

For the reference, I had an old build lying around at 8b06d4275 (June 2) and the regression was already present there.


please add ignored file list for auto-save

in some case the order of import matters, it is rare but when it happens I have to switch off sort on save in all the IDE to let the single file work.
A simple solution would be to have a setting where I can put ignored file as a list of file names
Can you implement this?

We added this in our fork, and the comment is really a better option i think, vs a whitelist

This is now supported in v6 via comments // import-sort-ignore or /* import-sort-ignore */.


Use systemd as the unique init system

I think it would be easier to manage only systemd init linux distribs.
All the main linux distribs have made that choice, even ubuntu is switching to it.
@ant31 : what is your opinion ? is it possible to use a systemd OS with travis ?

as agreed during our last discussion with @ant31 , we're going to remove sysvinit support.

Is it that problematic to support both for the two or three services that need init system support?

I would prefer to support both.
As most  os runs systemd we deproritize it (lack of time). If we receive contrib or find init.d scripts I  will add them for sure :)

I will most likely need to support ubuntu14.04 for a while to come.  This will mean I need that support.

@galthaus Ok we'll try to keep its support for the time being, we'll think about removing it in a few months

@Smana - In some regards, I'm more interested in you not deleting support.  I'll try and support as needed.  I just don't want it ripped out of the tree yet.

Keeping support of sysvinit


[Feature request]: Multiple backends for visual picker

I notice that venv-selector only uses Telescope as its visual picker. It would be great if it migrate to something more general, like vim.ui.select, that way, users can choose between different pickers like nui.nvim or fzf-lua.

I agree and I'm actually using fzf-lua myself for most pickers, but couldn't find a good example how to populate a picker.
But I would welcome PR's or even links to good docs. Telescope was just the easiest to get started with.

Would using dressing.nvim solve your problem?

I dont think I will add support for a different viewer. It would not be so hard to do since in the new regexp version, the GUI code is very small and self-contained. But I dont know this area very well and I rather focus on the core plugin.
But if anyone wants to contribute a PR, feel free to do so!


Polymer & Webcomponents conflict

When imported in project where already included polymer and my own webcomponents dependencies its totally break everything. After remove the first two (import) line from iron-grid.html its working like charm, but its too difficult remove these lines at every build. Do you have any idea how to solve this?

Could you email me your current code? Are you using the latest version of polymer? I cant think of anything without seeing your code.

My email is<EMAIL_ADDRESS>

Should be fixed now, please re-download and try again!


fix  QueryRowsPartial  getTaggedFieldValueMap func

When using orm, a problem was found. When you use QueryRowsPartial to get a small number of query fields, the scanner scans the struct in the order it was passed in, causing an err
The following structure:

err：

@kevin0527 大佬看一下问题

Please check and fix UT.

@kevwan The bug has been fixed and tested

Thanks for your PR! Please add unit tests.

@kevwan  sorry for this.
test case is in core/stores/sqlx/orm_test.go,func TestAnonymousStructPr().
that case  has been tested in orm_test.go


Cannot use KMS GenerateDataKeyPair command with localstack

I am using localstack for mocking KMS locally to test my APIs and I need to generate data key pairs. When calling generateDataKeyPair(), I get the following exception. Is it not supported currently?
com.amazonaws.services.kms.model.AWSKMSException: null (Service: AWSKMS; Status Code: 501; Error Code: null; Request ID: null; Proxy: null)
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.handleErrorResponse(AmazonHttpClient.java:1811)
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.handleServiceErrorResponse(AmazonHttpClient.java:1395)
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeOneRequest(AmazonHttpClient.java:1371)
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeHelper(AmazonHttpClient.java:1145)
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.doExecute(AmazonHttpClient.java:802)
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeWithTimer(AmazonHttpClient.java:770)
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.execute(AmazonHttpClient.java:744)
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.access$500(AmazonHttpClient.java:704)
    at com.amazonaws.http.AmazonHttpClient$RequestExecutionBuilderImpl.execute(AmazonHttpClient.java:686)
    at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:550)
    at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:530)
    at com.amazonaws.services.kms.AWSKMSClient.doInvoke(AWSKMSClient.java:5863)
    at com.amazonaws.services.kms.AWSKMSClient.invoke(AWSKMSClient.java:5830)
    at com.amazonaws.services.kms.AWSKMSClient.invoke(AWSKMSClient.java:5819)
    at com.amazonaws.services.kms.AWSKMSClient.executeGenerateDataKeyPair(AWSKMSClient.java:3047)
    at com.amazonaws.services.kms.AWSKMSClient.generateDataKeyPair(AWSKMSClient.java:3018)

I'm afraid I'll have to bounce you over to the Localstack project. Testcontainers just uses the Docker image they provide, so if there's a limitation in what they support you'd need to ask them: https://github.com/localstack/localstack


HTTP server hard to use with any locks in handlers and it should be in the documentation

I want to bring back #287. I stumbled on it, and I think it has to be mentioned in the documentation and an example of writing HTTP server with state would be ideal.
I have next scenario:

I have an app mutex which protects the app data and list of web socket sessions.
The main thread waits for an event, obtains the mutex, store some data  and notify clients by web socket.
On event clients make HTTP query and get the data.
The handler for get data locks and send the data.

Because of the single thread server main thread holding the lock and trying to send which waits for result and the server thread trying to obtain the lock to get access to data.
I think it should work If I split the mutex in two, one for data and one for web socket sessions, and I also use a channel to handle web socket events.

I'm not sure what else I could add to the topic, besides pointing you to this explanation.
Also, I'm not really sure in the details of your implementation, as it is explained with a few words, rather than with code.
I can only speculate, but it seems you are deadlocking by the virtue of you utilizing a simple blocking mutex rather than a channel or something similar.
Perhaps an easy(er) solution would be to just send the data when you are no longer holding the lock?

I want to bring back https://github.com/esp-rs/esp-idf-svc/issues/287. I stumbled on it, and I think it has to be mentioned in the documentation and an example of writing HTTP server with state would be ideal.

Yes, that would be ideal. However, if somebody does not do it, it will be never done.
The thing is, the esp-idf-* crates are a community effort, so things to get moving we do need support (in the form of PRs) from the community. I neither work for Espressif, nor am I paid for any time I dedicate for the esp-idf-*crates.
In the meantime, I've moved away from the ESP IDF websockets client/server impls, as they are not really async, and have a lot of restrictions. I am personally actively working on and trying to use edge-http instead.

Hey, first of all sorry if my bug report offend you in any way, and thank for all work you done for the community.
I don't mind to make a PR with the documentation changes and another one with example when I manage to create one.

Sorry if I sound offended - not at all!
But we have to be transparent with the community as to what level of support they could expect in the esp-idf-* crates. Or else we might build wrong expectations.
We may even put some wording in the READMEs that this effort is not sponsored by Espressif soon.


missing tutorials

The linked page
https://evolutiongym.github.io/tutorials
Is empty: there is no tutorial.
I was unable to install on MacOS Monterey.

python3 setup.py install
running install
error: can't create or remove files in install directory

pip3 install -r requirements.txt
Collecting GPy==1.10.0
Using cached GPy-1.10.0-cp39-cp39-macosx_10_9_x86_64.whl (1.5 MB)
ERROR: Could not find a version that satisfies the requirement gpyopt (unavailable) (from versions: 0.1.1, 0.1.2, 0.1.3, 0.1.4, 1.0.2, 1.0.3, 1.2.0, 1.2.1, 1.2.5, 1.2.6)
ERROR: No matching distribution found for gpyopt (unavailable)

Hi, I think you can install the GpyOpt manully by downloading files from this link
https://github.com/yunshengtian/GPyOpt/tree/5fc1188ffdefea9a3bc7964a9414d4922603e904
then use python setup.py  install
I used to solve this problem by doing so.

Hi @nedelec, thank you for your interest in EvoGym.
I believe the issue with GPyOpt is that there is already a cached version on your device which is being used by pip. Try running:
pip install git+https://github.com/yunshengtian/GPyOpt@5fc1188ffdefea9a3bc7964a9414d4922603e904 --no-cache-dir
Or
pip install git+git://github.com/yunshengtian/GPyOpt@5fc1188ffdefea9a3bc7964a9414d4922603e904 --no-cache-dir
Regarding tutorials, you can access them in the navbar on the left of the site. I’ve also recently updated the website to make it easier for new users to navigate through, and fixed the broken tables of contents on a couple of pages.
Please let me know if you have any further questions!


Disable animation

Is there a way to easily disable to the popover animation?  I would like the popover to just appear without the fade/fly-in animation...

made a pullrequest for this: https://github.com/littlebits/react-popover/pull/84

+1 for this @jasonkuhrt

Thanks for the input everyone. This project is booting back up and I'm listening. No ETAs to share yet but I think something like this should be possible.

Duplicate of #73


Support sending control frames

See websockets/ws#308.

I've submitted PR #72 that adds slash commands for ping, pong, and close.


Timetable Feature: Add margin around Timetable Grid display

Overview
Need margin for Timetable Grid display because its no margin currently.

Goal
Trailing margin 16px
Bottom margin also below custom tabbar on 16px

🙋♂


Task/add cdf ga

Add CDF GA and analytics provider include

This looks like it's in addition to the one we already have? Do we need two or can we share the one we have?

Ping

We are trying to consolidate metrics across all CDF projects. So we have two options

Add CDF team members to your GA account, or
start using CDF CA sub account

Open to both scenarios

It looks like you can move a property from one Google account to another: https://support.google.com/analytics/answer/6370521?hl=en
Would it work to just move our current property under your account (which would also preserve old data), or are you trying to consolidate all CDF-owned websites under a single property?


Create a UI to show warning messages

A number of warning messages arise when the same test / subtest pair is run.

I would like to work on this one! :smile:
What kind of UI are we talking about? Also, could you point me to where these warning messages are generated?

So I'll first try to describe what we are dealing with here. If you look at this, we are adding an anomaly in the test file to a duplicates object. This basically means that there are two tests in the file with the same name, and we should perhaps notify the user as a warning.
The data is passed to the front and we see it here. There is a function responsible for generating this warning message. See this and this to get an idea of the data structure.
So now we need to improve the UI here. Have a look at Treeherder. On pressing "Add New Jobs" followed by clicking a yellow square, followed by pressing "Trigger New Jobs", we get this in case you're not logged in.

So I think we need to create a similar message which disappears soon. We then need to create a list of all warning tests (Try to console.log the object $scope.warnings) and say that they were duplicates. This must not occupy a large space in the UI. Perhaps, we could add an exclamation mark against the "Run Name". On hovering we should see the number of duplicates. On clicking we should get a list of duplicates in the panel or something.

@arpan98 isn't there a way to close the warning UI?

@martiansideofthemoon I wasn't able to understand how this might be done. So I need some help on this. Adjustable as in edges-draggable?


Remove OpenSSL/LibreSSL dependency

This PR switches to a public domain MD5 hash implementation, removing the need to link to libcrypto. OpenSSL is a pretty large dependency for something so simple, and also has licensing issues.
The implementation was obtained from https://openwall.info/wiki/people/solar/software/public-domain-source-code/md5 and modified to fix compiler warnings.
Note that this is the same MD5 implementation used internally by LLVM
https://github.com/llvm-mirror/llvm/blob/master/lib/Support/MD5.cpp

There is some clang-tidy and cppcheck errors on jenkins that needs to be fixed:
/var/jenkins/workspace/ftwarePlatform_MIOpen_PR-58-D2PLC5A4XJCS25IU7SYR7CMBOLZYRH7YRLE364QDRYMD7XYE3QRQ/src/md5.cpp:116: style: The scope of the variable 'saved_a' can be reduced. [variableScope]
/var/jenkins/workspace/ftwarePlatform_MIOpen_PR-58-D2PLC5A4XJCS25IU7SYR7CMBOLZYRH7YRLE364QDRYMD7XYE3QRQ/src/md5.cpp:116: style: The scope of the variable 'saved_b' can be reduced. [variableScope]
/var/jenkins/workspace/ftwarePlatform_MIOpen_PR-58-D2PLC5A4XJCS25IU7SYR7CMBOLZYRH7YRLE364QDRYMD7XYE3QRQ/src/md5.cpp:116: style: The scope of the variable 'saved_c' can be reduced. [variableScope]
/var/jenkins/workspace/ftwarePlatform_MIOpen_PR-58-D2PLC5A4XJCS25IU7SYR7CMBOLZYRH7YRLE364QDRYMD7XYE3QRQ/src/md5.cpp:116: style: The scope of the variable 'saved_d' can be reduced. [variableScope]
/var/jenkins/workspace/ftwarePlatform_MIOpen_PR-58-D2PLC5A4XJCS25IU7SYR7CMBOLZYRH7YRLE364QDRYMD7XYE3QRQ/src/md5.cpp:234: style: The scope of the variable 'available' can be reduced. [variableScope]
/var/jenkins/workspace/ftwarePlatform_MIOpen_PR-58-D2PLC5A4XJCS25IU7SYR7CMBOLZYRH7YRLE364QDRYMD7XYE3QRQ/src/md5.cpp:50:1: error: use 'using' instead of 'typedef' [modernize-use-using,-warnings-as-errors]
typedef uint32_t MD5_u32plus;
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
using MD5_u32plus = uint32_t
/var/jenkins/workspace/ftwarePlatform_MIOpen_PR-58-D2PLC5A4XJCS25IU7SYR7CMBOLZYRH7YRLE364QDRYMD7XYE3QRQ/src/md5.cpp:52:1: error: use 'using' instead of 'typedef' [modernize-use-using,-warnings-as-errors]
typedef struct
^
/var/jenkins/workspace/ftwarePlatform_MIOpen_PR-58-D2PLC5A4XJCS25IU7SYR7CMBOLZYRH7YRLE364QDRYMD7XYE3QRQ/src/md5.cpp:210:13: error: implicit conversion 'size_t' (aka 'unsigned long') -> bool [readability-implicit-bool-conversion,-warnings-as-errors]
    } while(size -= 64);
            ^         ~
                       != 0u
/var/jenkins/workspace/ftwarePlatform_MIOpen_PR-58-D2PLC5A4XJCS25IU7SYR7CMBOLZYRH7YRLE364QDRYMD7XYE3QRQ/src/md5.cpp:243:8: error: implicit conversion 'size_t' (aka 'unsigned long') -> bool [readability-implicit-bool-conversion,-warnings-as-errors]
    if(used)
       ^   ~
            != 0u

You should be able to run this locally by using make analyze.
If you dont want to modify the source code, you could consider putting this up on a github repo with a simple cmake build static lib and install, and we can add that github repo to the requirements.txt file.

Sorry, I only ran clang-format before. Should be fixed now.
Can squash these commits if you'd prefer that.

Sorry, I only ran clang-format before. Should be fixed now.

Thanks, I'll try to merge this into our internal repo.

/cc @jlgreathouse to check on the licensing concerns on md5.cpp

@dagamayank Legal gave the OK on bringing this in.

@pfultz2 can you please bring this change in and ensure this lands in v1.6.
/cc @daniellowell

@sclarkson this PR has been manually merged and will be released in the upcoming version.


http://user-agent-string.info/ has closed down

They issued an xml file dated 11/30 which does not contain any user agent strings.  So if you use any of the updating parsers, it cant detect any user agents.  As a work around, I used the non updating parser.

any updates on this? i'd like to second @Funzinator's suggestion of using the data provided by  http://browscap.org/

As it turns out, the old style database from udger.com is not 100% compatible. First of all the DTD changed, and second, I notice already one change in the XML.
E.g. browser (family) with id 394 is now Safari mobile and previously it was Mobile Safari. That means the mapping between the database and uadetector enums is broken. If we fix this, then we are no longer compatible with the old format.

So sad to see this library succumb to what seems closed-sourcing of the UA database. I've used this on several projects with great success. Is there any hope for the future? Is there any free alternative?


Make DLRM work on TPUs, both with fake and Criteo kaggle dataset.

The individual commits are dirty, I suggest reviewing this PR as a whole.
CHANGES

Added a tpu runner file.
nn.EmbeddingBag doesn't work on XLA atm, so I added an "XlaEmbeddingBag" class.
Adapted dlrm_s_pytorch.py so it runs w/ tpus.

Added simultaneous model + data parallelism.
xla's all_to_all is not very reliable atm, so I use all_gather + narrow to achieve the same result.

edited data so it samples across data-parallel groups

forces drop_last.
2 optimizers, 2 different all-reduces.

minor typo fixes, refactoring etc.

TESTED:
This is being tested nightly on TPUs, nightly and 1.6 version, both with fake data and criteo-kaggle.

It looks good to me. I would probably move dlrm_tpu_runner.py to ./bench directory, but this can be done in subsequent PR.

Not sure if the runner file belongs in bench/, since that's needed to run any job on tpu, it's not a benchmark script per se. I thought about merging it into dlrm_s_pytorch.py, I could do that if you prefer? something like
...

def main(...):
  # main function

if __name__ == "__main__":
  parse_args()
  if use_tpu:
    xmp.spawn(main)
  else:
    main()


Port per-tenant upload queue and startup changes from #2595

This is a part of https://github.com/neondatabase/neon/pull/2595. It takes switch to per tenant upload queue and changes to pageserver startup sequence because these two are highly interleaved with each other. I'm still not happy with the size of the diff, but splitting it even more will probably consume even more time. Ideally we should do it, but this patch isis already a step forward and should be easier to get this patch in yet still quite difficult. Mainly because of the a) size and b) fixes for existing concerns which will contribute to the diff size and make it even bigger
Unresolved discussions from the original PR apply there. I will link them when this will be ready to review.
TLDR aside from switching to upload queue from original PR I switched to spawn_load/spawn_attach from original PR with refactorings/changes to reconsile_with_remote so it downloads files inplace.
I debugged a few test failures locally. So next step is to make CI green.
Things left to do with this PR:

[ ] FIx remaining tests
[ ] Add more unit tests for storage_sync.rs to replace old ones (needs check)
[ ] Review openapi.yml to match actual impl
[ ] Port original discussions, address them
[ ] Address FIXME's in code (TODO create discussions)

Things to do on top:

[ ] measure remote op
[ ] support retries in upload queue
[ ] Rearrange stuff between files. Move storage sync to hypotetical timeline/ module inside tenant. Move tenant_* files inside this module. Split big tenant/timeline files. One candidate for separate module is initialization logic. Consider accumulating it in separate structures like TimelineBuilder, TimelineLoader etc. Split storage_sync.rs into upload_queue and remote_timeline_client
[ ] Properly retry errors when connection from compute when tenant is Loading. We shouldnt wait in get_tenant

Observations:

Matches around tenant current state are prone to race conditions and are bug prone given that we do certain things in tenant's .set_state. https://github.com/neondatabase/neon/pull/2736 should help to adress that. Was thinking about API that looks like tenant.transition(desired_state) -> Result<TransitionError>  Another point, all timeline state changes can go through tenant so we can avoid race conditions and tenant can react on state change for its timelinens and change state accordingly (to broken for example)
An idea for add more typesafety to upload queue: Uploads can be accumulated into one object. Avoid issuing separate operations. Use RemoteTransaction struct with add_deletion, add_upload, etc. It can be submitted to the queue at once and have a .build method that will check invariants, like removing files without changing remote index, etc.

Pushed minor fixes, and did a rebase to incorporate CI related changes from main

Some tests become racy because I ported get_tenant without waiting for tenant to become active, so if it is not active it returns immediately without waiting. I think this is right thing to do, clients should retry connections anyway.
Particular error from test_gc_cutoff:
ERROR query handler for 'pagestream 2a6b1f01a8529ad5243d3ba5a20b49d1 487c7cf10fa675d341e...7cf10fa675d341eac8097d1efae9' failed: Tenant 2a6b1f01a8529ad5243d3ba5a20b49d1 is not active. Current state: Loading

Sort of related to https://github.com/neondatabase/neon/issues/2819 but here we should retry pagestream request I think. Or fail entire connection on the client side so it can be retried. @hlinnaka thoughts?

I think we should make a quick fix here, and make get_active sleep if the tenant is in Loading state, until it becomes Active. With some reasonable timeout.

Opened https://github.com/neondatabase/neon/pull/2861 with that approach

I think we should make a quick fix here

I'm fine with that, adding permanent solution to the follow up list

I fixed a few straightforward test failures, and merged 'main' into this branch

Looking at remaining (flaky) test failures, I think a lot of them are caused by
wait_until( ... has_in_progress_downloads==False ...)

This PR for this branch fixes it: https://github.com/neondatabase/neon/pull/2872

Proposal: before squash+merging this, let's rename the storage_sync module to storage_sync2.
Why?
1. This PR is practically a rewrite of that module anyways, and by putting the code in a dir with a different name, git diff shows a clean "delete storage_sync and add storage_sync2" change, instead of "90% changed in storage_sync".

We can refer to this PR as "the storage_sync2 PR" in
2.1. the follow-up changes to be done post-merge (see above)
2.2. any incidents that may be caused by this change

Please :+1: if you agree.

Two test failures in latest CI run, both are cases of known flakiness:

"sender is dropped while join handle is still active"
race condition between timeline deletion and GC (No such file or directory)

Also, compute-node-v14 build failed because of a network failure
I'll rerun them..

I'm now going over the 'Things left to do in this PR' list from https://github.com/neondatabase/neon/pull/2785#issue-1442643601
I started implementing a basic regression test for upload queue retry handling yesterday.
Expect that to land today.
As per the FIXMEs and TODOs, I think the biggest one is probably to update the doc comment in storage_sync.rs. I can take a stab at fixing that up as well.
My earlier proposal to rename storage_sync to storage_sync2 seems well received. We'll do that last thing before squash & merge.

[ ] Address following TODO by @LizardWizzard// TODO: Currently, GC can run between upload retries, removing local layers scheduled for upload. Test this scenario.
// FIXME: used to have a test for this in upload.rs, `layer_upload_after_local_fs_update()`.
// I didn't understand how it tests that, though.

Note to self, so I don't forget

[ ] rename storage_sync  module to storage_sync2 before merge

As of now, there are no more open review conversations.
Remaining todo:

[ ] One more merge of origin/main into this branch
[ ]  Create a copy of this branch with all the individual commits that we have right now
In this branch

[ ] squash all commits
[ ] rename storage_sync to storage_sync2

Wait for Monday to squash & deploy to staging

Pre-squash state archived in branch https://github.com/neondatabase/neon/tree/archive/pr-2785-storage-sync2/pre-squash

New test failure in the error log:
2022-11-29T13:40:24.823061Z ERROR remote_upload{tenant=4a95f9afaca32e205265e233a09e0f76 timeline=b93c88f3d783a07cfe592980fa362a5d upload_task_id=4}: failed to perform remote task UploadLayer(/tmp/test_output/test_tenants_many[real_s3]/repo/tenants/4a95f9afaca32e205265e233a09e0f76/timelines/b93c88f3d783a07cfe592980fa362a5d/000000000000000000000000000000000000-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF__00000000016960E9-0000000001A68FB9, size=Some(5963776)), will retry (attempt 0): Failed to upload a layer from local path '/tmp/test_output/test_tenants_many[real_s3]/repo/tenants/4a95f9afaca32e205265e233a09e0f76/timelines/b93c88f3d783a07cfe592980fa362a5d/000000000000000000000000000000000000-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF__00000000016960E9-0000000001A68FB9'

Caused by:
    0: Error during dispatch: connection closed before message completed
    1: Error during dispatch: connection closed before message completed

Scrolling down, we see the successful retry:
2022-11-29T13:40:27.149976Z  INFO remote_upload{tenant=4a95f9afaca32e205265e233a09e0f76 timeline=b93c88f3d783a07cfe592980fa362a5d upload_task_id=4}: remote task UploadLayer(/tmp/test_output/test_tenants_many[real_s3]/repo/tenants/4a95f9afaca32e205265e233a09e0f76/timelines/b93c88f3d783a07cfe592980fa362a5d/000000000000000000000000000000000000-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF__00000000016960E9-0000000001A68FB9, size=Some(5963776)) completed successfully after 1 retries

Since it was real_s3, I'd say we just re-run the test.

New test failure in the error log:
2022-11-29T13:40:24.823061Z ERROR remote_upload{tenant=4a95f9afaca32e205265e233a09e0f76 timeline=b93c88f3d783a07cfe592980fa362a5d upload_task_id=4}: failed to perform remote task UploadLayer(/tmp/test_output/test_tenants_many[real_s3]/repo/tenants/4a95f9afaca32e205265e233a09e0f76/timelines/b93c88f3d783a07cfe592980fa362a5d/000000000000000000000000000000000000-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF__00000000016960E9-0000000001A68FB9, size=Some(5963776)), will retry (attempt 0): Failed to upload a layer from local path '/tmp/test_output/test_tenants_many[real_s3]/repo/tenants/4a95f9afaca32e205265e233a09e0f76/timelines/b93c88f3d783a07cfe592980fa362a5d/000000000000000000000000000000000000-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF__00000000016960E9-0000000001A68FB9'

Caused by:
    0: Error during dispatch: connection closed before message completed
    1: Error during dispatch: connection closed before message completed

Scrolling down, we see the successful retry:
2022-11-29T13:40:27.149976Z  INFO remote_upload{tenant=4a95f9afaca32e205265e233a09e0f76 timeline=b93c88f3d783a07cfe592980fa362a5d upload_task_id=4}: remote task UploadLayer(/tmp/test_output/test_tenants_many[real_s3]/repo/tenants/4a95f9afaca32e205265e233a09e0f76/timelines/b93c88f3d783a07cfe592980fa362a5d/000000000000000000000000000000000000-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF__00000000016960E9-0000000001A68FB9, size=Some(5963776)) completed successfully after 1 retries

Since it was real_s3, I'd say we just re-run the test.

Agreed, sporadic upload failures every now and then are expected. And perhaps add failed to perform remote task.*will retry (attempt [0-5]) to the global allow list, to allow for a few retries.

New test failure due to missing allowed_errors.
Probably a consequence of delete_timeline changes, i.e., that we drop the tenant.timelines.lock() during timeline deletion.
2022-11-29T14:47:59.325199Z ERROR query handler for 'pagestream db97688dc6fd1483dcae5c6e9c681112 2b10148ad28cb0f9acbeab70b935f70e' failed: Timeline db97688dc6fd1483dcae5c6e9c681112/2b10148ad28cb0f9acbeab70b935f70e was not found

Stack backtrace:
   0: pageserver::tenant::Tenant::get_timeline
             at /__w/neon/neon/pageserver/src/tenant.rs:1030:24
   1: pageserver::page_service::PageServerHandler::handle_pagerequests::{{closure}}::{{closure}}
             at /__w/neon/neon/pageserver/src/page_service.rs:295:24
   2: <core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll
             at /rustc/e092d0b6b43f2de967af0887873151bb1c0b18d3/library/core/src/future/mod.rs:91:19
      <tracing::instrument::Instrumented<T> as core::future::future::Future>::poll
             at /github/home/.cargo/registry/src/github.com-1ecc6299db9ec823/tracing-0.1.37/src/instrument.rs:272:9
   3: pageserver::page_service::PageServerHandler::handle_pagerequests::{{closure}}
             at /__w/neon/neon/pageserver/src/page_service.rs:271:5
      <core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll
             at /rustc/e092d0b6b43f2de967af0887873151bb1c0b18d3/library/core/src/future/mod.rs:91:19
      <pageserver::page_service::PageServerHandler as utils::postgres_backend_async::Handler>::process_query::{{closure}}
             at /__w/neon/neon/pageserver/src/page_service.rs:730:66
   4: <core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll
             at /rustc/e092d0b6b43f2de967af0887873151bb1c0b18d3/library/core/src/future/mod.rs:91:19
   5: <core::pin::Pin<P> as core::future::future::Future>::poll
             at /rustc/e092d0b6b43f2de967af0887873151bb1c0b18d3/library/core/src/future/future.rs:124:9
      utils::postgres_backend_async::PostgresBackend::process_message::{{closure}}
             at /__w/neon/neon/libs/utils/src/postgres_backend_async.rs:421:74
      <core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll
             at /rustc/e092d0b6b43f2de967af0887873151bb1c0b18d3/library/core/src/future/mod.rs:91:19
      utils::postgres_backend_async::PostgresBackend::run_message_loop::{{closure}}
             at /__w/neon/neon/libs/utils/src/postgres_backend_async.rs:268:79
   6: <core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll
             at /rustc/e092d0b6b43f2de967af0887873151bb1c0b18d3/library/core/src/future/mod.rs:91:19
      utils::postgres_backend_async::PostgresBackend::run::{{closure}}
             at /__w/neon/neon/libs/utils/src/postgres_backend_async.rs:203:67
      <core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll
             at /rustc/e092d0b6b43f2de967af0887873151bb1c0b18d3/library/core/src/future/mod.rs:91:19
      pageserver::page_service::page_service_conn_main::{{closure}}
             at /__w/neon/neon/pageserver/src/page_service.rs:195:60
      <core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll
             at /rustc/e092d0b6b43f2de967af0887873151bb1c0b18d3/library/core/src/future/mod.rs:91:19
   7: <core::panic::unwind_safe::AssertUnwindSafe<F> as core::future::future::Future>::poll
             at /rustc/e092d0b6b43f2de967af0887873151bb1c0b18d3/library/core/src/panic/unwind_safe.rs:296:9
      <futures_util::future::future::catch_unwind::CatchUnwind<Fut> as core::future::future::Future>::poll::{{closure}}
             at /github/home/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-util-0.3.24/src/future/future/catch_unwind.rs:36:42
      <core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once
             at /rustc/e092d0b6b43f2de967af0887873151bb1c0b18d3/library/core/src/panic/unwind_safe.rs:271:9
      std::panicking::try::do_call
             at /rustc/e092d0b6b43f2de967af0887873151bb1c0b18d3/library/std/src/panicking.rs:492:40
      std::panicking::try
             at /rustc/e092d0b6b43f2de967af0887873151bb1c0b18d3/library/std/src/panicking.rs:456:19
      std::panic::catch_unwind
             at /rustc/e092d0b6b43f2de967af0887873151bb1c0b18d3/library/std/src/panic.rs:137:14
      <futures_util::future::future::catch_unwind::CatchUnwind<Fut> as core::future::future::Future>::poll
             at /github/home/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-util-0.3.24/src/future/future/catch_unwind.rs:36:9
      <tokio::task::task_local::TaskLocalFuture<T,F> as core::future::future::Future>::poll::{{closure}}
             at /github/home/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.21.1/src/task/task_local.rs:348:35
      tokio::task::task_local::LocalKey<T>::scope_inner
             at /github/home/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.21.1/src/task/task_local.rs:233:19
      <tokio::task::task_local::TaskLocalFuture<T,F> as core::future::future::Future>::poll
             at /github/home/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.21.1/src/task/task_local.rs:345:13
      <tokio::task::task_local::TaskLocalFuture<T,F> as core::future::future::Future>::poll::{{closure}}
             at /github/home/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.21.1/src/task/task_local.rs:348:35
      tokio::task::task_local::LocalKey<T>::scope_inner
             at /github/home/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.21.1/src/task/task_local.rs:233:19
      <tokio::task::task_local::TaskLocalFuture<T,F> as core::future::future::Future>::poll
             at /github/home/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.21.1/src/task/task_local.rs:345:13
      pageserver::task_mgr::task_wrapper::{{closure}}
             at /__w/neon/neon/pageserver/src/task_mgr.rs:308:10
      <core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll
             at /rustc/e092d0b6b43f2de967af0887873151bb1c0b18d3/library/core/src/future/mod.rs:91:19
   8: tokio::runtime::task::core::CoreStage<T>::poll::{{closure}}
             at /github/home/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.21.1/src/runtime/task/core.rs:184:17
      tokio::loom::std::unsafe_cell::UnsafeCell<T>::with_mut
             at /github/home/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.21.1/src/loom/std/unsafe_cell.rs:14:9
      tokio::runtime::task::core::CoreStage<T>::poll
             at /github/home/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.21.1/src/runtime/task/core.rs:174:13
      tokio::runtime::task::harness::poll_future::{{closure}}
             at /github/home/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.21.1/src/runtime/task/harness.rs:480:19
      <core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once
             at /rustc/e092d0b6b43f2de967af0887873151bb1c0b18d3/library/core/src/panic/unwind_safe.rs:271:9
      std::panicking::try::do_call
             at /rustc/e092d0b6b43f2de967af0887873151bb1c0b18d3/library/std/src/panicking.rs:492:40
      std::panicking::try
             at /rustc/e092d0b6b43f2de967af0887873151bb1c0b18d3/library/std/src/panicking.rs:456:19
      std::panic::catch_unwind
             at /rustc/e092d0b6b43f2de967af0887873151bb1c0b18d3/library/std/src/panic.rs:137:14
      tokio::runtime::task::harness::poll_future
             at /github/home/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.21.1/src/runtime/task/harness.rs:468:18
      tokio::runtime::task::harness::Harness<T,S>::poll_inner
             at /github/home/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.21.1/src/runtime/task/harness.rs:104:27
      tokio::runtime::task::harness::Harness<T,S>::poll
             at /github/home/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.21.1/src/runtime/task/harness.rs:57:15
   9: std::thread::local::LocalKey<T>::with
  10: tokio::runtime::scheduler::multi_thread::worker::Context::run_task
  11: tokio::runtime::scheduler::multi_thread::worker::Context::run
  12: tokio::macros::scoped_tls::ScopedKey<T>::set
  13: tokio::runtime::scheduler::multi_thread::worker::run
  14: <tokio::runtime::blocking::task::BlockingTask<T> as core::future::future::Future>::poll
  15: tokio::runtime::task::harness::Harness<T,S>::poll
  16: tokio::runtime::blocking::pool::Inner::run
  17: std::sys_common::backtrace::__rust_begin_short_backtrace
  18: core::ops::function::FnOnce::call_once{{vtable.shim}}
  19: <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once
             at /rustc/e092d0b6b43f2de967af0887873151bb1c0b18d3/library/alloc/src/boxed.rs:1872:9
      <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once
             at /rustc/e092d0b6b43f2de967af0887873151bb1c0b18d3/library/alloc/src/boxed.rs:1872:9
      std::sys::unix::thread::Thread::new::thread_start
             at /rustc/e092d0b6b43f2de967af0887873151bb1c0b18d3/library/std/src/sys/unix/thread.rs:108:17
  20: start_thread
  21: clone

Last test failure is spurious and unrelated to this PR.
Force-pushed the squashed change.


IQP as circuit library function (and in Rust)

Summary
Part of #13046. Moves IQP (instantaneous quantum polytime) circuits to be a function, and ports the internals to Rust.
Details and comments

This also adds the feature of creating random IQP circuits by just setting the number of qubits, without explicitly requiring the interactions matrix.
The speedup from porting to Rust is more noticeable for large circuits (100+ qubits), where it is ~55x faster. See the table below for more numbers 🙂

IQP timings
-- n = 10, speedup 4.48x
main: 0.001 +- 0.000
this: 0.000 +- 0.000

-- n = 20, speedup 12.59x
main: 0.002 +- 0.000
this: 0.000 +- 0.000

-- n = 50, speedup 45.07x
main: 0.009 +- 0.000
this: 0.000 +- 0.000

-- n = 100, speedup 58.98x
main: 0.034 +- 0.002
this: 0.001 +- 0.000

-- n = 200, speedup 58.45x
main: 0.133 +- 0.004
this: 0.002 +- 0.001

-- n = 500, speedup 51.41x
main: 0.862 +- 0.037
this: 0.017 +- 0.010

Pull Request Test Coverage Report for Build<PHONE_NUMBER>0
Details

119 of 122 (97.54%)  changed or added relevant lines in 5 files are covered.
24 unchanged lines in 4 files lost coverage.
Overall coverage decreased (-0.008%) to 88.859%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

crates/accelerate/src/circuit_library/iqp.rs
96
97
98.97%

qiskit/circuit/library/iqp.py
20
22
90.91%

Files with Coverage Reduction
New Missed Lines
%

qiskit/transpiler/passes/synthesis/unitary_synthesis.py
2
88.26%

crates/qasm2/src/lex.rs
4
91.98%

qiskit/synthesis/two_qubit/xx_decompose/decomposer.py
6
90.91%

crates/qasm2/src/parse.rs
12
96.23%

Totals

Change from base Build<PHONE_NUMBER>7:
-0.008%

Covered Lines:
74207

Relevant Lines:
83511

💛  - Coveralls

As discussed offline I split the iqp function into iqp and random_iqp to have a separate function for the random generation of IQP circuits 🙂


added nodes not shown until changing selected node

test this, it happened several times recently
probably an issue with map update
akcija se ne desi dok ne pomerimo se (kreiranje, brisanje, ...)

@sinisarudan happened to me, didn't figure out how and why, but it is a bit embarrassing i think :)


A SuccessURL response to a PayPal payment is handled incorrectly: «The request is invalid because the required parameter «Result/MerchantTxnID» is absent»

[AlphaCommerceHub] A SuccessURL response to a PayPal payment
developer.alphacommercehub.com.au/docs/paypal-october-2017

I need to fix the following issues first:

#48 (PayPal: implement the PaymentStatus transaction)
#52 (The PayPal's PaymentStatus transaction is undocumented)

See also #55 (POLi Payments: «The request is invalid because the required parameter Result/PaymentID is absent»).

#52 (The PayPal's PaymentStatus transaction is undocumented) is solved!
So I am starting #48 (PayPal: implement the PaymentStatus transaction).

Is has been fixed in 0.5.6 with #49 (PayPal: implement the CapturePayment transactio).


My-contribution

i have done some changes in README.md please review it and merge it.

Hello, I'll need to close this one because I don't think this adds much value to the project.


import multiple private keys

Using the current method, a single private key can be imported.  Add a function that allows the user to paste in a list (delimited or just return-separated) to import multiple private keys in one operation.

This issue should be addressed in commit b935614 and included in the next freewallet release.


exception str() failed in UnexpectedCharacters because of 'PatternRE' has no attribute 'raw'

Describe the bug
Lark v1.1.2
The standalone parser generated with python -m lark.tools.standalone appears to have an issue with the PatternRE/PatternStr subclasses because when I get an UnexpectedCharacters error, it's exception formatting fails because of
kraken.lang._generated_parser.UnexpectedCharactersTraceback (most recent call last):
  File ".venvs/3.9/lib/python3.9/site-packages/kraken/lang/_generated_parser.py", line 206, in __str__
    message += self._format_expected(self.allowed)
  File ".venvs/3.9/lib/python3.9/site-packages/kraken/lang/_generated_parser.py", line 143, in _format_expected
    expected = [d[t_name].user_repr() if t_name in d else t_name for t_name in expected]
  File ".venvs/3.9/lib/python3.9/site-packages/kraken/lang/_generated_parser.py", line 143, in <listcomp>
    expected = [d[t_name].user_repr() if t_name in d else t_name for t_name in expected]
  File ".venvs/3.9/lib/python3.9/site-packages/kraken/lang/_generated_parser.py", line 1187, in user_repr
    return self.pattern.raw or self.name
AttributeError: 'PatternRE' object has no attribute 'raw'

To Reproduce

Take some Lark grammar
Generate a standalone parser
Feed it some input that results in an UnexpectedCharacters error

If it helps, I attached the standalone parser that was generated on my side:
_generated_parser.py.zip

i'm having the same issue with a cached grammar.
lark.exceptions.UnexpectedCharacters: <unprintable UnexpectedCharacters object>
this only happens after the grammar is cached.

@ornariece Can you please include a minimal script that reproduces this behavior?


chore: Adapt reference for /health to the latest refactoring

Follow up of the newly introduced response json object of /health endpoint.

Will merge when 0.28.0 is out, that will contain the change officially.


Small fixed suggested by Scrutinizer CI

This PR aims to fix a few small issues that Scrutinizer pointed out.
Does not break BC.

Merging in for 1.0.0. We can continuing discussing the changes recommended by Scrutinizer, but overall, these don't change functionality.


[WIP] (GH-619) Added GitLink Support with Tests

Relates to #619

@GeertvanHorrik when you have a minute, can you have a review of this PR? Thanks!

@GeertvanHorrik I have just updated this PR based on your feedback.  Can you have another look?
@devlead @patriksvensson I can squash this commit, once everyone is happy.

Looks good!

@gep13 Tests are failing on Mono. If this is a Windows tool only, there's a WindowsFact and WindowsTheory you can use to make sure that the OS specific tests (paths) do not run on Linux.

@GeertvanHorrik Am I right in saying that GitLink only runs on Windows?  If so, I will get the tests updated as per @patriksvensson suggestion.  Thanks!

@gep13 If GitLink runs on *nux as well, change the path to be platform agnostic, i.e. something like /Working/Stuff, which is a valid Windows path as well (default drive or working directory is normally appended in the file system).

Yes, GitLink only runs on Windows (because internally it uses pdbstr.exe, which is a windows tool). But it might change in the future because the pdb format is going open source (from what I understood). For now, Windows only unfortunately.

@GeertvanHorrik ok, that is great.  I will update this PR on that basis, and as/when GitLink moves to working xplat, we can update the support in Cake as well.

@patriksvensson @devlead this one is ready for final review/merging.


new build 1, removed skip

Hi! This is the friendly automated conda-forge-linting service.
I just wanted to let you know that I linted all conda-recipes in your PR (recipe) and found it was in an excellent condition.


Create bjxy

@Awake-G lib/domains/cn/edu/bjxy: this request has an incorrect file path format, please ensure that you are familiar with     this repository rules located at the bottom of this page and change     your request accordingly. If you don't know how to change request, close it and open a new one.     If you are not able to make the pull request according the instructions, please send us an email to<EMAIL_ADDRESS>Please mention this request URL in the message.

@Awake-G I have to close this request without merging, because you requested to add a non-existent domain to this repository: Host bjxy.edu.cn not found: 3(NXDOMAIN) Please ensure that you are familiar with this repository rules located at the bottom of this page and submit a new request with the correct information. Thank you for your understanding!


fix(strm-2089): broken tests (+ updated subscription type for test ac…

…count)

Already included in #130


Fix: Prevent article page from calling bookmarks for unauthenticated users (#1138)

✨ Codu Pull Request 💻
Fixes #1138

Pull Request details

Prevents the article page from calling bookmarks when the user is not logged in, which was causing errors in the console.
Updated the logic to only fetch bookmarks if a user is authenticated.
Cleaned up the error messages caused by the unauthenticated bookmark requests.

Any Breaking changes

None

Associated Screenshots

Hey @shanksxz
Can you please run the prettier script, and commit the changes. Thanks.
npm run prettier:fix

Hey @shanksxz
Can you please run the prettier script, and commit the changes. Thanks.
npm run prettier:fix

This works great, thanks.
PS. @NiallJoeMaher Separately this has me wondering why this query is done in the ArticlePreview component? The resulting data is not used here at all. The refetch is used when the user bookmarks an article, but this is definitely not the way to handle this.

yeah true

Hey @shanksxz Can you please run the prettier script, and commit the changes. Thanks. npm run prettier:fix

sure.

Before this change

After this change

Love to see it


Revert "add yarn"

Reverts LEINWAND/react-redux-app#18

currently not necessary, needs further research.


twitter app set-up

In accordance with the configuration instructions I created a twitter app added the appropriate consumer key, access token and their secrets.  A number of twitter handles were added to follow and are confirmed to issue "live" intel but nothing is being picked from the twitter feed.

Are there any additional requirements to the configuration of the twitter that are not documented?
Is the twitter fully implemented? (TBH I haven't thoroughly reviewed the go code.)

I finally figured this one out.  Most of it was my lack of understanding with respect to github.com/dghubble/go-twitter use of the structure UserLookupParams format for the ScreenName slice that holds the screen names to follow.  The values must be entered in the configuration without the '@' symbol.


SPARCK 190 - Save complex objects with UDTs to Cassandra

Error: Invalid or corrupt jarfile sbt/sbt-launch-0.13.8.jar
huh? jnkns plz

retest this please

Applied comments, rebased and squashed.

retest this please


website

Current dependencies on/for this PR:

main

PR #33   👈

This stack of pull requests is managed by Graphite.


Support http_connect_timeout and http_timeout options

I created this issue in the Symfony repo: https://github.com/getsentry/sentry-symfony/issues/592
This PR modifies the HttpClientFactory to allow configuration of the http (connect) timeout values.
If no option is set, it will use the default.
If I've missed the mark, feel free to reject - I'd just love to be able to do this in my app, if it's possible already please let me know, thanks!

Thanks @Jean85 for the suggestions/comments. I've made most of them.
Re tests, I was only able to write tests for the Options part.
I tried to do them for the HttpClientFactory but as the test harness doesn't have any real clients e.g. curl client or guzzle, I wasn't able to write tests without including the additional dependencies... they all use class_exists within HttpClientFactory::resolveClient

I tried to write some tests by using class_alias in PHP (not something I've ever used before)! But in order to get it to work with the new PluginClient pieces, I'd either have to use reflection or add a getter to that method, all of which I think feel a bit wrong for this case.

For the CS issues, use make cs-fix to fix that automatically.

Looks like this didn't make it into 3.4.0 - but hopefully could make it into 3.5.0?

Sorry for the radio silence on this, we've decided to use relay to alleviate our concerns. I'm afraid I don't have the bandwidth to pick this up at the moment, any volunteers to see this through would be greatly appreciated 🙏

hopefully could make it into 3.5.0

Sure, why not. I will try to find some time in the next days/weeks to finish the work. In the meanwhile, thank you @matthew-gill for having done most of it

How can we support this PR?

I'm curious what is the rationale of having http_timeout and http_connect_timeout options when the underlying Symfony HTTP client used by the SDK has max_duration and timeout options, which have different meanings.  Wouldn't just having the same options be easier to grok?

the underlying Symfony HTTP client used by the SDK

The core SDK has no binding to any specific HTTP client, or at least we try to not have it... We provide some code to ease the intialization of the HTTP transport using some common clients, but this doesn't mean that we want to use them specifically besides that

we should make these new options nullable and throw when we can't apply them, otherwise we could silently ignore them, and confuse the user.

While it's true that we could potentially confuse the user, I think that documenting the fact that these options could not apply to all HTTP clients would be enough. Making them nullable would confuse even more, as the user would not know what null means: does it means that a default applies, or that no timeout is set at all? Moreover, making the Options::getXXX() methods nullable just for the sake of checking elsewhere if those options apply to a particular client feels a code smell

Well, I think we need a tie breaker here... @stayallive? @smeubank? @HazAT?

I think that making them nullable makes the most sense to be honest, because:

It's confusing when we have options that we can't apply, especially since they can have performance implications, so the user should know they are doing something that has no effect
The argument that making them nullable is confusing could be true, but we can easily document what null means here in the documentation, most people will never even configure these values anyway so having them nullable makes more sense I think. We've always had "hidden" default timeouts set so this is a great way to communicate that those are used and we can document where to find those values
Let's not try to get too hung up on perfectly architected code (whatever that definition is for you), in the end this client must report (potentially critical) errors to somewhere and must do it so with as little impact on the application as possible. It's goal is not to have perfectly architected code if that conflicts with the first 2 "goals" IMHO

I am with @stayallive. Let's just document what null  does (or doesn't do, meaning doesn't apply to all transports)
I wouldn't even throw an exception; if the http_client supports it, great; if it doesn't and you configured something manually, you probably anyway know what you are doing.
So I would say let's merge it.
More importantly, for me would be the change send_attempts to 0, not in this PR but referring to this comment https://github.com/getsentry/sentry-php/issues/1311#issuecomment-1119941034

I wouldn't even throw an exception; if the http_client supports it, great; if it doesn't and you configured something manually, you probably anyway know what you are doing.

If we don't want to throw the exception, it makes little sense to have those options nullable. The whole argument in making them like so is because we want to throw an exception when the option could not apply to a transport, but as you said it makes little sense

More importantly, for me would be the change send_attempts to 0

This is a breaking change, people don't expect a default to change between minor versions

There is no need to change send_attempts in this PR.
We do that separately and include that in a new major release of course instead of a minor.

I didn't mean that we need to change send_attempts in this PR, it was just a comment answering a side-topic. The point is that the only reason we want to make the http_*_timeout options nullable is that we need to do it to be able to identify if the user set that option and throw an exception if he did and we can't autoconfigure the HTTP client. Since @HazAT agrees that it doesn't make sense to throw an error in that case, I cannot really understand why we want to keep going this way

Don't think we are, as @HazAT mentioned we are going to document how they work but not going to add the exception in that case the defaults can live in the options 👍
This is how the PR currently is, I don't think there is anything to do, good to merge?


[Bug] index.js:1670 [redi]: You are loading scripts of redi more than once! This may cause undesired behavior in your application. Maybe your dependencies added redi as its dependency and bundled redi to its dist files. Or you import different versions of redi.

Before you submit this issue, have you checked the following

[X] Is this really a problem?
[X] I have searched the Github Issues for similar issues, but did not find anything.

Affected packages and versions
0.3.0
Reproduction link
package.json dependencies:
"dependencies": {
"@antv/x6": "^1.24.4",
"@riophae/vue-treeselect": "0.4.0",
"@univerjs-pro/engine-pivot": "^0.3.0",
"@univerjs-pro/exchange-client": "^0.3.0",
"@univerjs-pro/facade": "^0.3.0",
"@univerjs-pro/sheets-exchange-client": "^0.3.0",
"@univerjs-pro/sheets-pivot": "^0.3.0",
"@univerjs-pro/sheets-pivot-ui": "^0.3.0",
"@univerjs-pro/sheets-print": "^0.3.0",
"@univerjs/core": "^0.3.0",
"@univerjs/data-validation": "^0.3.0",
"@univerjs/design": "^0.3.0",
"@univerjs/docs": "^0.3.0",
"@univerjs/docs-ui": "^0.3.0",
"@univerjs/drawing": "^0.3.0",
"@univerjs/drawing-ui": "^0.3.0",
"@univerjs/engine-formula": "^0.3.0",
"@univerjs/engine-render": "^0.3.0",
"@univerjs/find-replace": "^0.3.0",
"@univerjs/sheets": "^0.3.0",
"@univerjs/sheets-conditional-formatting": "^0.3.0",
"@univerjs/sheets-conditional-formatting-ui": "^0.3.0",
"@univerjs/sheets-crosshair-highlight": "^0.3.0",
"@univerjs/sheets-data-validation": "^0.3.0",
"@univerjs/sheets-drawing": "^0.3.0",
"@univerjs/sheets-drawing-ui": "^0.3.0",
"@univerjs/sheets-filter": "^0.3.0",
"@univerjs/sheets-filter-ui": "^0.3.0",
"@univerjs/sheets-find-replace": "^0.3.0",
"@univerjs/sheets-formula": "^0.3.0",
"@univerjs/sheets-hyper-link": "^0.3.0",
"@univerjs/sheets-hyper-link-ui": "^0.3.0",
"@univerjs/sheets-numfmt": "^0.3.0",
"@univerjs/sheets-sort": "^0.3.0",
"@univerjs/sheets-sort-ui": "^0.3.0",
"@univerjs/sheets-thread-comment": "^0.3.0",
"@univerjs/sheets-thread-comment-base": "^0.3.0",
"@univerjs/sheets-ui": "^0.3.0",
"@univerjs/thread-comment": "^0.3.0",
"@univerjs/thread-comment-ui": "^0.3.0",
"@univerjs/ui": "^0.3.0",
"ant-design-vue": "^1.7.1",
"axios": "^0.21.4",
"clipboard": "2.0.6",
"codemirror": "^5.45.0",
"core-js": "3.8.1",
"echarts": "4.9.0",
"echarts-stat": "^1.1.1",
"element-ui": "2.15.8",
"exceljs": "^4.2.1",
"file-saver": "2.0.4",
"FileSaver": "^0.10.0",
"fuse.js": "6.4.3",
"highlight.js": "9.18.5",
"jquery": "^3.2.1",
"js-beautify": "1.13.0",
"js-cookie": "2.2.1",
"jsencrypt": "3.0.0-rc.1",
"jsonlint": "^1.6.3",
"less": "^3.12.2",
"less-loader": "^7.0.1",
"luckyexcel": "^1.0.1",
"node-sass": "^8.0.0",
"normalize.css": "7.0.0",
"nprogress": "0.2.0",
"path-to-regexp": "2.4.0",
"quill": "1.3.7",
"react": "^18.3.1",
"react-dom": "^18.3.1",
"rxjs": "^7.8.1",
"sass-loader": "^10.5.2",
"screenfull": "5.0.2",
"sortablejs": "1.10.2",
"spark-md5": "^3.0.1",
"sql-formatter": "^2.3.3",
"v-charts": "^1.19.0",
"vue": "2.6.12",
"vue-count-to": "1.0.13",
"vue-cropper": "0.5.5",
"vue-pdf": "^4.2.0",
"vue-quill-editor": "3.0.6",
"vue-router": "3.0.2",
"vue-splitpane": "1.0.4",
"vuedraggable": "2.24.3",
"vuex": "3.6.0",
"vxe-table": "^2.9.25",
"xe-utils": "^2.7.14",
"xlsx": "^0.17.3"
}
Expected behavior
no error
Actual behavior
when i import "@univerjs-pro/facade",report error:
index.js:1670 [redi]: You are loading scripts of redi more than once! This may cause undesired behavior in your application.
Maybe your dependencies added redi as its dependency and bundled redi to its dist files. Or you import different versions of redi.
System information
No response

The provided information isn't enough to understand the issue. Please provide a minimal reproduction.

The issue disappeared after all univer plug-ins were upgraded to 0.4.1.
close it


Need indication of why "Create Export" is grayed out

I did a clone export and then changed the selection of items to export. went to the last page and I could click create export, but then an error dialog window popped up that said "Invalid form", from then on the "Create Export" button has been greyed out (lighter shade and the no icon when hover over) but there is no indication what is wrong with my export job.

I changed a few things with no luck.
turns out I seemingly had to change the selection area ?
What if i wanted the exact same area with but with different things exported?
So I am not sure what the point of the Clone Export button is and if it can't be the exact same area why not and if not, the greyed out button still should say why it is unavailable, and the clone export, should not clone the export area

@bgirardot a fix has been referenced to this issue. could you please review and see if it has been addressed. if so please go ahead and close the issue. cheers!

No, I don't see this as being fixed yet. It is possible some of the submissions made it more difficult to get to the last screen without things being properly filled out, but you can still end up there and have a grey'ed out "create export" button with no indication why. You can see this in the attached screenshot, and honestly, I think it might have been harder to get to that spot, but I have no idea why it is greyed out so I can't tell you how to reproduce it. I will try and get steps to reproduce it.

I tried replicating the issue, by cloning existing exports but changing the selected features. The 'Create Export' button is not being greyed out.
@bgirardot Could you please try to replicate the issue and note the steps, so that Brian and I can take a look at it and find an appropriate solution.
@bjohare At the very least we could provide an error message as to what is happening. Along with the necessary steps to rectify the problem.

https://github.com/hotosm/osm-export-tool2/issues/56