Collecting recursive schemas fails with a stack overflow in 5.x

We have an api that uses a setup that boils to this:
use utoipa::{OpenApi, ToSchema};

#[derive(ToSchema)]
pub struct Instance {
    kind: Kind,
}

#[derive(ToSchema)]
pub enum Kind {
    MultipleNested(Vec<Instance>),
}

#[derive(ToSchema)]
pub struct Error {
    instance: Instance,
}

#[derive(OpenApi)]
#[openapi(components(schemas(Error)))]
pub struct ApiDoc {}

fn main() {
    let api = ApiDoc::openapi();
    println!("{:?}", api.to_json().unwrap());
}

This fails like that:
thread 'main' has overflowed its stack
fatal runtime error: stack overflow

in 5.x while it worked in 4.x.
Here's a backtrace from gdb:
[...]
#3762 0x0000555555565f1e in utoipa_recursion::{impl#3}::schemas (schemas=0x7fffffffced0) at src/main.rs:8
#3763 0x00005555555657be in utoipa_recursion::{impl#1}::schemas (schemas=0x7fffffffced0) at src/main.rs:3
#3764 0x0000555555565f1e in utoipa_recursion::{impl#3}::schemas (schemas=0x7fffffffced0) at src/main.rs:8
#3765 0x00005555555657be in utoipa_recursion::{impl#1}::schemas (schemas=0x7fffffffced0) at src/main.rs:3
#3766 0x000055555556653e in utoipa_recursion::{impl#5}::schemas (schemas=0x7fffffffced0) at src/main.rs:13
#3767 0x00005555555668d4 in utoipa_recursion::{impl#6}::openapi () at src/main.rs:18
#3768 0x0000555555564f66 in utoipa_recursion::main () at src/main.rs:23

Was there any change in how (bi-)recursive schemas are handled?

Cargo.toml for reference:
[package]
name = "utoipa-recursion"
version = "0.1.0"
edition = "2021"

[dependencies]
utoipa = "5.0.0"

Looking at the cargo expand output, this is probably a direct consequence of now recursively collecting subschemas in ToSchema::schemas? It could probably be fixed by keeping track of which schemas are in the process of being defined and pass them around while collecting subschemas to break the recursion. But that sounds like a breaking change again.

Oh no, this needs some further experimenting to see what can be done with the recursion issue.

#[derive(ToSchema)]
pub struct Instance {
   kind: Kind,
}

#[derive(ToSchema)]
pub enum Kind {
   MultipleNested(Vec<Instance>),
}

Like to code above, the issue is that there is a loop. Kind -> Instance -> Kind. And since utoipa 5.0.0 the schemas will be collected recursively, which causes forever loop. This worked in 4 because there was no automatic schema collection.
I need to see is there way to recognize compile time whether schema references is already collected thus not trying to collect it again.

It could probably be fixed by keeping track of which schemas are in the process of being defined and pass them around while collecting subschemas to break the recursion. But that sounds like a breaking change again.

Yeah fingers crossed, not necessarily, I have a hunch that I can check before calling T::schemas(....)  that schemas.contains(T::name())  if it does not, then calling T::schemas(...). But this still needs some testing and experimenting with also generic types as well. Namely whether the T::name() will give correct result for looking for schemas.

Yeah fingers crossed, not necessarily, I have a hunch that I can check before calling T::schemas(....) that schemas.contains(T::name()) if it does not, then calling T::schemas(...).

Interesting idea, I think right now, the Vec is empty during the recursing call, because the calling schema is added only after all the dependencies.

There's also some concern about code size blow-up because the calling schema has to do these kinds of recursion checks for all of its fields. It would probably be better if the schemas call would only add itself to the list of collected schemas and then recurse to its children. That way only a single check (for itself) would have to be added to the list. (That change could keep the interface of schemas strictly compatible but the behavior would still be incompatible).

As long as the user facing behavior / API does not change it's all good. But hard to say as of yet, this still needs some investigation. But quick "fix" for now is to avoid looped references.
Maybe one alternative would be to provide some sort of attribute e.g. schema(no_recurse) which could be used to break from the recursion.

#[derive(ToSchema)]
pub struct Instance {
   #[schema(no_recurse)]
    kind: Kind,
}

#[derive(ToSchema)]
pub enum Kind {
   MultipleNested(Vec<Instance>),
}

Maybe one alternative would be to provide some sort of attribute e.g. schema(no_recurse) which could be used to break from the recursion.

That would work for us.

@jrudolph Here is a PR for this feature #1137 Perhaps automated solution can be experimented in future, and optionally enabled via config flag eventually (so people get to choose whether they want to pay the performance cost of checking schema existence). But for now it seems to do the job very well.


subscription_id should not be mandatory for .kitchen.yml

Bug: All of the settings for azure are pulled in from the ~/.azure/credentials file.
Subscription ID is one of the settings. The default behavior of the azure-cli is to use the top Subscription if there are multiple subscriptions and default one is not specified.
Current expectation
---
driver:
  name: azurerm

driver_config:
  subscription_id: '43e53945-f02b-4269-8854-ad7dd14ac6f2'
  location: 'West Europe'
  machine_size: 'Standard_D1'

Expected behavior: subscription id is pulled from credentials file.
---
driver:
  name: azurerm

driver_config:
  location: 'West Europe'
  machine_size: 'Standard_D1'

Subscription ID is currently required to be specified as it provides a reference to the correct inifile section. This is intended behaviour/how I designed it.
Can you elaborate on your use case and why you want to remove subscription_id from the .kitchen.yml? Is this to support multiple subscriptions (one per developer?) in which case can you use the .kitchen.local.yml?

In my specific case, each developer has access to 5+ subscriptions (5 minimum). So, when we populate credentials file with just one subscription, it would make intuitive sense that driver would use these creds. (that seems to be azure behavior as well, it uses the top subscription by default)
In a dev workstation scenario, each person has to modify .kitchen.yml to specify their subscription id even though it's already defined in the credentials file.

@vinyar Thanks for the explanation, I understand your use case. Will see what can be done (unless someone else submits a PR ;)). But for now you can add your subscription_id to:

.kitchen.yml (project config)
.kitchen.local.yml (local config)
$HOME/.kitchen/config.yml (global config)

I'm going to close this for now as the current mechanism is used in a few tools and there are workarounds listed in this thread for alternative usages.

:+1:


DER-100 - The explanatory note on hasLotSize needs to be revised

Signed-off-by: Elisa Kendall<EMAIL_ADDRESS>Description
Revised the explanatory note on hasLotSize and added examples to clarify usage
Fixes: #1546 / DER-100
Checklist:

[x] I'm familiar with the FIBO developer quide. My contribution meets all the requirements described there.
[x] My contribution follows the principles of best practices for FIBO.
[x] My changes have been reconciled with latest master and no merge conflicts remain.
[x] This PR is related to exactly one issue. The issue is referenced by using a GitHub keyword such as "fixes", "closes", or "resolves".
[x] Hygiene tests have been applied by a PR with "(WIP)" in title.
[x] The issue has been tested locally using a reasoner (for ontology changes).

@rivettp I think it is bad practise to merge PR before the commit is built.


Batching in Azure Storage Blobs

Implements #4509, #4510, and #5161
Adds batching into Azure Storage Blobs and implements the batching APIs for Blob delete and setTier.

/azp run java - storage - ci

/azp run java - storage - ci

/azp run java - storage - ci

/azp run java - storage - ci

/azp run java - storage - ci

GitHub isn't reporting step passes properly and random transient error in a core test.


DS-3102 Fix collection UUID in DSpaceChoiceLookup

https://jira.duraspace.org/browse/DS-3102

Tested locally & it works, without this pull request you get a javascript exception.
So +1 from me & merging.


When I use the VIM plug-in in VS Code at the same time, I can't expand collapsed files in the directory tree via Enter

Describe the bug
Installed plugins

The associated file

Select and press Enter
Error message

Reproduction
This is an application problem, while installing antfu.file-nesting and vscodevim.vim two plug-ins, and select the folded file and press the Enter key to reproduce.
System Info
System:
    OS: Windows 10 10.0.19043
    CPU: (16) x64 Intel(R) Core(TM) i7-10700T CPU @ 2.00GHz
    Memory: 16.33 GB / 31.72 GB
  Binaries:
    Node: 16.15.1 - D:\Software\nvm\v16.15.1\node.EXE
    Yarn: 1.22.19 - D:\Software\nvm\v16.15.1\yarn.CMD
    npm: 8.14.0 - D:\Software\nvm\v16.15.1\npm.CMD
  Browsers:
    Edge: Spartan (44.19041.1266.0), Chromium (112.0.1722.48)

Used Package Manager
pnpm
Validations

[X] Follow our Code of Conduct
[X] Read the Contributing Guide.
[X] Check that there isn't already an issue that reports the same bug to avoid creating a duplicate.
[X] Check that this is a concrete bug. For Q&A, please open a GitHub Discussion instead.
[X] The provided reproduction is a minimal reproducible of the bug.

This project is just the config, there is nothing we can do about it. Please report upstream.


Instrument new custom metrics

As a project developer, I want to instrument the additional business-specific custom metrics, so that these metrics can be captured in visualization tiles and alert rules

Mentioned in #273


Write trace and trace asserts

This change is

[!WARNING]
This pull request is not mergeable via GitHub because a downstack PR is open. Once all requirements are satisfied, merge this PR as a stack on Graphite.
Learn more

#542  👈
#541
#540
dev

This stack of pull requests is managed by Graphite. Learn more about stacking.

Join @shaharsamocha7 and the rest of your teammates on  Graphite

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 95.18%. Comparing base (3b47ba3) to head (09006c3).

Additional details and impacted files
@@                       Coverage Diff                        @@
##           03-25-Create_wide_fib_structure     #542   +/-   ##
================================================================
  Coverage                            95.18%   95.18%
================================================================
  Files                                   66       66
  Lines                                 9737     9737
  Branches                              9737     9737
================================================================
  Hits                                  9268     9268
  Misses                                 404      404
  Partials                                65       65

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

Merge activity

Mar 27, 8:10 AM EDT: @shaharsamocha7 started a stack merge that includes this pull request via Graphite.


Add test for nested props & batches 🦊

I'm trying to add some tests, but they are not passing on my local build. Am I doing something wrong?

@rmmmp If you can please check out the extra test I added in this commit? This is where it's still not working on my side...
In reference to #43

The reason why this is failing is because batch.set(ref1, { 'nested.prop.deep': true }); won't result to { nested: { prop: { deep: true } } }. If you try it in Firestore, it will result to { 'nested.prop.deep': true }. I've also explained that here.

No worries 👍


test: use idiomatic python for conditional evaluation

Use the more traditional if condition checks for the flag computation.
This will become more useful as more platforms are added.

@swift-ci please smoke test


feature/release 0.4.2

This PR prepares for release v 0.4.2.

Coverage remained the same at 85.819% when pulling 4e90cc1c12ea52f3fc46fa22303399d3090bf4d9 on INM-6:feature/release_0.4.2 into 57183a29b52ff89d1e8c8cbcae511d4288999c29 on NeuralEnsemble:master.


unable to run the code

Hi @choasma
I am unable to build the solution. This seems like an issue with the directory structure.
I keep getting this error.
$ batch.sh Traceback (most recent call last):   File "./bin/run_hsicbt", line 3, in <module>     from hsicbt.core.dispatcher import job_execution ModuleNotFoundError: No module named 'hsicbt'
Am I missing something?

It's ok run it on my side. Were you running the batch.sh under the project root directory with the environment set, for instance source env.sh. To me, the module hsicbt path isn't added properly.

hi @msafwankhan
I'm closing this, let me know if you have further issue or just simply create new one


Player crashes app if volume outside allowed range

There was a report earlier this year about an app crashing if the player volume was set to something outside the 0-100 range. This is because we throw an uncaught IllegalArgumentException at Player.java:269. Instead of throwing an exception we should clamp the value and report the error via the Screen's ErrorOccurred event.
Relevant forum post

Closed by #970


pkgs.writeTextDir doesn't allow slashes

Issue description
pkgs.writeTextDir seems to support passing a path relative to $out (containing slashes), at least according to the docs and the example:
   * Writes a text file to nix store in a specific directory with no
   * optional parameters available. Name passed is the destination.
   *
   * Example:
   * # Writes contents of file to /nix/store/<store path>/<name>
   * writeTextDir "share/my-file"
   *   ''
   *   Contents of File
   *   '';
   *

However, nix complains about invalid character '/' in 'share/my-file'
Steps to reproduce
nix repl '<nixpkgs>'
Welcome to Nix version 2.1.1. Type :? for help.

Loading '<nixpkgs>'...
Added 9644 variables.

nix-repl> writeTextDir "share/my-file" "foo"
error: invalid character '/' in name 'share/my-file'
«derivation

Technical details
Please run nix-shell -p nix-info --run "nix-info -m" and paste the
results.
 - system: `"x86_64-linux"`
 - host os: `Linux 4.19.0, NixOS, 18.09.git.9ea650bb5deM (Jellyfish)`
 - multi-user?: `yes`
 - sandbox: `yes`
 - version: `nix-env (Nix) 2.1.1`
 - channels(root): `"home-manager, nixos-19.03pre158246.6141939d6e0"`
 - channels(flokli): `"nixpkgs-19.03pre157960.722fcbbb80b"`
 - nixpkgs: `/home/flokli/.nix-defexpr/channels/nixpkgs`

cc @Infinisil, @disassembler

I just ran into this.


Canonical url missing domain name

Using django=1.7.10, djangocms=3.1.3, djangocms-blog=0.6.2
I'm missing the domain name in the canonical url.
Seems like in the templates the {{ SITE.domain }} doesn't work in the canonical url line.

How do you generate canonical URL? django-meta-mixin way to generate url is the Post.get_full_url method (which uses the same logic of Django's build_absolute_uri)

I added a {% block canonical_url %}{% endblock canonical_url %} to my base template since it's defined in post_detail.html template line 6
{% block canonical_url %}<link rel="canonical" href="{{ SITE.domain }}{{ view.get_view_url }}"/>{% endblock canonical_url %}

but it seems that {{ SITE.domain }} is empty.

You can use meta context variable to create the canonical URL: <link rel="canonical" href="{{ meta.url }}"/>
{{ SITE }} is anyway handled by Django, not by the blog application

Ok that works.
Would it be better to use that in the djangocms-blog templates?

@dumbflex I totally overlooked that djangocms-blog ships the canonical URL in the template!
Going to fix that, thanks for reporting!

@dumbflex fixed in #169 fi you want to test it


All servers default to UTC for logging

For some reason, we default all logging on all servers to UTC. The only way to get around this is to set a timezone in the config, which obviously won't change with DST.
Options:

Remove the option altogether
Remove it as a default config, but use the config if it is there

1 has the disadvantage of if anyone is actually using it, they won't be able to now. 2 has the disadvantage of requiring people to delete the config from their file to fix the issue.
The disadvantage of 2 does lead us to another option:

Create a new line in the config that has no default, but users can set if they want to.

That would mean everyone would default to their server's time, but people can set another timezone if they want. It has the disadvantage of leaving an unused config in people's files, and if anyone currently uses the setting, it'll reset it for them.
Thoughts? I'm currently thinking of going for 3, despite the horribleness of it.

Alright, this gets worse.
We have 2 different types of logging.

Server logging, just stdout, for errors and stuff
IRC logging, where we log the messages for a user

This much makes sense. However.... Server logging uses the timezone and format settings from IRC logging. There are no settings for server logging. Irc logging is per user, but the only logging setting per user is whether or not to do it. The format is the same for all users.
So... we should probably

Add a new config entry for server logging, that defaults the format to a sensible default (with timezone in it, unlike just now), and defaults the timezone to blank, which means we'll just use server time.
Make the irc logging config entirely per-user, and either default to server time or utc. Again, the time format should probably include the timezone as well by default either way, to make it clear to the users what timezone it is in if they haven't set it. They can delete the timezone from the format if they want.

This is exactly how I would do it.
Users who have (ab)used the current "logs:timezone" setting to set a custom timezone for the console logging (which differs from their server time) will be affected by this though. But I can't imagine that there's many users who did this...

There is 1 question left with this that I'm unsure about.
If a user doesn't have their user log settings set up, do we default to sensible format and server time, or what the global log setting currently is? If someone has set the global userlogging settings, we don't really want that to be lost, do we?

How about we just remove timezone option and it's code? It's going to default to server's (node.js) timezone.

Agreed. timezone and format do not make sense for logs IMO. We should just log everything in ISO 8601 format.


stop error

MissingReferenceException: The object of type 'RenderTexture' has been destroyed but you are still trying to access it.
Your script should either check if it is null or you should not destroy the object.
Unified.Universal.Blur.UniversalBlurPass.Dispose () (at Assets/UnifiedUniversalBlur/Scripts/UniversalBlurPass.cs:44)
Unified.Universal.Blur.UniversalBlurFeature.Dispose (System.Boolean disposing) (at Assets/UnifiedUniversalBlur/Scripts/UniversalBlurFeature.cs:81)

Fixed in 0.2.4

Fixed in 0.2.4

Thx~


Return OpenScanHub log files without download link

Description
Currently all log files are download links, i.e. has ?format=raw in the URL. As this will start a download it might not be the best to return that. Instead to me it would make more sense to return the URL without query parameters and if needed you can add it to any clients utilizing the API.
Benefit
Less complexity, more freedom to handle links how we need to instead of formatting.
Importance
For dashboard, medium priority. There is a workaround that can be done which would be to parse the URL and remove the ?format=raw before displaying it.
What is the impacted category (job)?
Other
Workaround

[X] There is an existing workaround that can be used until this feature is implemented.

Participation

[ ] I am willing to submit a pull request for this issue. (Packit team is happy to help!)

Again, please go against OpenScanHub. Briefly checking the links that we have on dashboard, it might be just an issue of the HTTP server configuration, as without ?format=raw I get a full page with styles and everything. With ?format=raw it's just “raw” logs as the name suggests (though it might be handled by the server as a file to download rather than display).

Again, please go against OpenScanHub

Thought this was a Packit thing. Nonetheless, opened issue here #304. If it changes in the future I would want to see if we can update the DB to all be https for the older entries

We keep this card for updating the db.
Closing the issue since now it is on openscanhub side.


Update search components to USWDS components

Describe the solution:
Update the input fields for search and filters on the TI dashboard top increase usability.
Figma mock:
https://www.figma.com/file/yfhnUmE2FsonLtAqfeEfoo/TI-Edit?type=design&node-id=816%3A494&mode=design&t=A8ppwAkGj6ALGDd0-1
Screenshots:

Done when:

The search inputs are laid out horizontally on desktop
The search fields have a h4 search title
The datepicker uses the USWDS datepicker field
The search fild used the USWDS input field

@sijiayam, could you please confirm a couple parts of the design?

For the input field outlines, the corners should be square not rounded?  This would be a change from our existing input fields which look like this:

The "Search" button should have a white background, black text and a faint outline.  I don't think we currently have any buttons with that styling and I'm concerned that the faint outline may make users think that it's disabled.

Are we adding the ability to search clients by email address?  I didn't notice this requirement earlier, but the design shows a label of "Name(s) or email".  If so, I'll make this new functionality part of the requirements, either on this issue or a separate one.

@sijiayam, I've also noticed that in the existing search, there isn't a way to clear the search.  If I search for a name, there doesn't seem to be a way to return to the full list of clients after that search.  Should we add a way to clear the search?

@melanie-exygy Some responses to your questions below:

For the input field outlines, the corners should be square not rounded?

My recommendation would be to begin using the USWDS input fields which do have square corners. I am okay with this being different from our current styles.

The "Search" button should have a white background, black text and a faint outline.  I don't think we currently have any buttons with that styling and I'm concerned that the faint outline may make users think that it's disabled.

For now feel free to leave the button as is with current styles. We may do a bigger button overhaul at a later time.

Are we adding the ability to search clients by email address?  I didn't notice this requirement earlier, but the design shows a label of "Name(s) or email".  If so, I'll make this new functionality part of the requirements, either on this issue or a separate one.

@isabelcshaw or @shreyachatterjee00 do either of you remember a request to change what users are able to search by? I added them into the mocks based off of some conversation, but am not sure if they were locked in.

I've also noticed that in the existing search, there isn't a way to clear the search. If I search for a name, there doesn't seem to be a way to return to the full list of clients after that search. Should we add a way to clear the search?

Yes, it would be good to add a way to clear the search with a link. Here is the mockup I have for that: https://www.figma.com/file/yfhnUmE2FsonLtAqfeEfoo/TI-Edit?type=design&node-id=843%3A5233&mode=design&t=QzhKhFbQDZhFELwU-1


expires_in not returned

Hi,
The expires_in key is not returned in the result when getting access_token or refresh_token with the version 3.0.0-b2 published on npm.
This seems to be related to this line :
TokenHandler.prototype.getTokenType = function(model) {
  return new BearerTokenType(model.accessToken, model.accessTokenLifetime, model.refreshToken, model.scope);
};

accessTokenLifetime can't be present on the model object, because it's an object of class TokenModel and this class doesn't implement this property.
Have a good day !

Good catch. accessTokenLifeTime is supposed to be populated here when accessTokenExpiresAt is present, but this is never the case because AuthorizationCodeGrantType.saveToken is missing expiry time generation (see #304).

I see the line you speak about on the branch master
  if(this.accessTokenExpiresAt) {
    this.accessTokenLifetime = Math.floor((this.accessTokenExpiresAt - new Date()) / 1000);
  }

But this line is not present on the npm package. And when I try to use directly the branch master on my project, i have an error with an other part.
Is there a release planned soon?

The published version on npm is v2, master is on v3. Those versions are not compatible.
I'm not one of the maintainers, so I can't tell you when v3 is being published. If you want to track the release status you should probably follow #313. In the meantime you could use my fork that has (almost) all pending PRs for v3 merged in. I'll create a PR that fixes the problem with missing expiry times some time this week and directly merge it into my fork.

Yes i've seen this issue.
I hope this project will progress.
Looking on npm, I realized that there's a lot of forks of the project.
Thanks @maxtruxa for your answer.
I will use probably your fork until the original project evolves.

This was fixed when #318 got merged.


Feature registration to allow hiding LogTrail

Hi,
I would like to be able to hide LogTrail in some Spaces. I asked in the Elastic Forum and found out that it requires the plugin to register as a feature:
https://www.elastic.co/guide/en/kibana/current/development-plugin-feature-registration.html
Which seems to be supported since 7.2.

@wolframhaussig I tried adding this code provided in the above link to logtrail. I see that xpack_main plugin is not initialised when logtrail init() method is called, due to which I am not able to register logtrail as a feature. I verified with kibana 7.6.1.
Can you please share the post from Elastic Forum so that I can ask this there?
Logs
log   [07:52:27.342]<EMAIL_ADDRESS>Status changed from uninitialized to yellow - Waiting for Elasticsearch
server    log   [07:52:27.342]<EMAIL_ADDRESS>Status changed from yellow to green - Ready
plugin list - {"inert":{"_etags":{}},"@elastic/good":{},"kibana":{"status":{"id":"plugin:kibana@7.6.1","state":"green","icon":"success","message":"Ready","uiColor":"secondary","since":"2020-03-21T07:52:27.334Z"},"systemApi":{}},"elasticsearch":{"status":{"id":"plugin:elasticsearch@7.6.1","state":"green","icon":"success","message":"Ready","uiColor":"secondary","since":"2020-03-21T07:52:27.342Z"}},"logtrail":{"status":{"id":"plugin:logtrail@0.1.31","state":"uninitialized","icon":"spinner","message":"uninitialized","uiColor":"default","since":"2020-03-21T07:52:27.348Z"}}}
****** xpackMainPlugin - undefined
server    log   [07:52:27.356]<EMAIL_ADDRESS>Status changed from uninitialized to green - Ready
server    log   [07:52:27.358]<EMAIL_ADDRESS>Status changed from uninitialized to green - Ready
server    log   [07:52:27.375]<EMAIL_ADDRESS>Status changed from uninitialized to green - Ready
server    log   [07:52:27.389] [info][kibana-monitoring][monitoring] Starting monitoring stats collection
server    log   [07:52:27.390]<EMAIL_ADDRESS>Status changed from uninitialized to green - Ready
server    log   [07:52:27.401]<EMAIL_ADDRESS>Status changed from uninitialized to green - Ready
server    log   [07:52:27.414]<EMAIL_ADDRESS>Status changed from uninitialized to green - Ready

@sivasamyk Sure, here is the topic: https://discuss.elastic.co/t/hide-plugin-in-some-spaces/222878

closed as we do not use logtrail any longer


dist folder doesn't belong here

Hey, I think the dist folder you have here contains build artifacts that might not belong checked into revision control. If you merge your .gitignore with github's  .gitignore template for python projects[1], that's a good start. Then this might me helpful to clean up the repo: https://stackoverflow.com/a/46273201 (I haven't actually tested this for correctness though!)
[1]: https://raw.githubusercontent.com/github/gitignore/main/Python.gitignore

I'm certainly not an expert on this but I thought I needed the dist folder to store the pip whl and gz files - without them pip install wouldn't work, would it?
However, minimally the old versions shouldn't be there so I've removed them.

Here's a 50,000 ft view of what pip install does:
https://pip.pypa.io/en/stable/cli/pip_install/#overview
Step 3 is to build the wheels (from the source). The source is the only thing that deserves to be tracked by the version control system.

Thanks - dist is gone now.


Off-Chain spec for Optimistic Roots

Complete the specification for off-chain changes.
Details needed:

[ ] Switching mechanism
[ ] Design of new LH agents
[ ] Modifications needed for existing LH agents
[ ] DB changes
[ ] Testing approach

Standup: Spec should be done today, will task out execution, and work on time estimation
AI: Set up a test environment for both teams to collaborate and use
We have upgrades to contract + offchain and need to test it all in an environment

Doesnt touch anything else
Both Wonderland and Connext can build

Can we use Harbor? Main blocker is getting deploy script and AMBs set up. Ask Harbor if they have a solution for AMBs. Otherwise we can't use this without significant more eng work
Alternative: Pull out changes from local xDeposit hackathon to deploy subgraph and env to local testing
Wait until this is ready to test, if staging is not used then use staging. Otherwise spin up a new environment
Change CI flow so testnet-prod and mainnet-prod are triggered off different branches
We need to figure out and scope exactly what integrators need

No blockers, fleshed out almost all details of offchain agents
Now it is minimal things left
Prototype today/tomorrow


Research and design "network" abstraction that can be used instead of network client

The network client is a bit too low-level to be used directly. When working with a network client, especially resolving a network client ID, you have to be aware that there are two types: an Infura network client and a custom network client. This bifurcation is necessary to have at some level because of the fact that we have two different middleware stacks (one designed for Infura RPC endpoints, one designed for everything else) and thus two kinds of network client configuration objects. However, if you just want to make a request to the network, you shouldn't have to care what kind of network it is, as we can expect that all networks feature the same JSON-RPC API. Also, if you want any information about the network, such as the native currency symbol or the nickname, you currently have to shoehorn extra properties into the network client configuration. This shouldn't be necessary, as the middleware doesn't care about them.
Consumers — in particular the DevEx team, who are running into problems with the current design while implementing multichain initiatives — would have a better time if instead of using a network client, they used an abstraction on top of it. We could call it "network", and it would essentially be the same as a network client now, except that the network client interface would be abstract, and network configuration would be allowed to hold user-provided properties.
The devil is in the details, of course, so this ticket is dedicated to understanding whether this plan is really feasible or not, and if so, how much work it would create.
Examples
This is a list of changes we've had to make which solve immediate problems but are ultimately undesirable and which we aim to fix with this proposal. Please add to this list as you find more examples!

https://github.com/MetaMask/core/pull/2000/files#diff-02c32f437b122b5c71f0ac6bdf304cd22f6d4569c9c9b8ecbb711c11c98cd0d3R111
https://github.com/MetaMask/core/pull/1794

Alternatively, we could use network configuration for built-in networks as well: https://github.com/MetaMask/core/issues/1279

We discussed adding a getNetworkConfiguration(networkClientId) action as a short-term fix, and consolidating setActiveNetwork and setProviderType. These two things should reduce the friction of dealing with these two types of networks.
Longer-term we discussed enhancing the custom network configuration/middleware to support Infura (as covered in #1279).

Tickets created: https://github.com/MetaMask/core/issues/2019 and https://github.com/MetaMask/core/issues/2020.
I will leave this ticket here in case it comes in handy later, but I will deprioritize it.

I am the owner of Tura11
Tura 187
Tura 11541 on git hub
X keeps hacking and stealing my s***

Ok she knows how to reprogram software she changed up my JSon files to stop reading  my web 3 wallets on my Mac book
Phone etc etc she is also been destroying devices
Been hacking terrorizing my digital and physical well being
She is stilling from me ..

I think you a low level headed little Network client information giver

I work 12 hours a day I was building this program for myself I didn't think so I had somebody hacking me I was taking my time I was figuring it out yes yes I'm low levels on the information I knew about it but as I keep on messing around with it more knowledge I gained the more I can move the more I started paying attention to things I didn't need anybody that was hacking in my business you people helped her come up with n u l L's web web digital bypassers

HISTORY
The person that is doing the hacking on the other end of my metamask and digital wallets
Her name is Amber Wilbur also goes by Amber Stephens
Also go by Amber Cole
Her aunt is my neighbor she lived with her aunt she's been hacking me every single day all night stalking me she's been stalking me since February of last year before I even started even having a relations with her
I CREATED THIS GITHUB TURA 11
SHE GOT INTO IT AND STARTED HACKING IT NOT THINKING IT WAS HER NOT PUTTING IT TWO AND TWO TOGETHER THAT CLOSE
I STARTED A DIFFERENT REPERTOIRE CALLED
THERE'S A PORTAL IN MY BACKYARD
THAT'S MINE AS WELL I WANT IT BACK

@mcmire and @Gudahtt we believe this is handled now. We are closing but if our understanding is incorrect please feel free to reopen.


Expo SDK 33 import warnings

From the Expo SDK 33 release blog:

With SDK 33, we’re deprecating imports of most modules from the expo package. This means that in a future release, you won’t be able to write, for example, import { FileSystem } from 'expo';. Rather, you’ll need to install the individual packages for each module you use and import from them instead.

The line below in analytics.js is now printing out deprecation warnings which would be great to get rid of.
import { Constants } from 'expo';
The import will need to change to
import * as Constants from 'expo-constants';
but I'm not sure what else is involved.

thanks for the report! Working through this now -- see PR #34

@seanfmcd FYI this has been published to NPM as 1.0.9. Please let me know if you have any further problems!


New version: SimpleWorkflows v0.21.0

Registering package: SimpleWorkflows
Repository: https://github.com/MineralsCloud/SimpleWorkflows.jl
Created by: @github-actions[bot]
Version: v0.21.0
Commit: d13b6bf65964aa9041c154e935b450a706159d27
Reviewed by: @github-actions[bot]
Reference: https://github.com/MineralsCloud/SimpleWorkflows.jl/commit/d13b6bf65964aa9041c154e935b450a706159d27#commitcomment-90957056
Description: A simple workflow engine powered by Julia

Please close this.


Integrate interactive maps

This gets a working MVP of an interactive map working in all templates. You can now open a map with a button click (located right under the static map for the time being), and click tabs for cities. experiences, sponsored sites, and the "about" content. Clicking a city in the sidebar loads a new map.
Pairs with the DN PR: https://github.com/lonelyplanet/destinations-next/pull/286

@jcreamer :+1:

@jcreamer898 :+1:


Convert install/cgroup tests to yaml based config

Signed-off-by: Derek Nola<EMAIL_ADDRESS>

Proposed Changes
The vagrant-k3s plugin supports configuring K3s alot of ways. This eliminates one, the ruby hash based config. This configuration was confusing and not portable (couldn't just copy paste to config.yaml file). This brings tests all in line with using string YAML configuration.

Types of Changes
Testing Changes

Verification
GH actions still pass

Testing

Linked Issues
N/A

User-Facing Change

Further Comments

Ignoring failure on CentOS7, known issue .


Ios exception

I tried to share image from file with instagram it works on android but on Ios I get this error :
nil host used in call to allowsSpecificHTTPSCertificateForHost
nil host used in call to allowsAnyHTTPSCertificateForHost:
NSURLConnection finished with error - code -1002

Does your info.plist contains
<key>NSAppTransportSecurity</key> <dict>     <key>NSExceptionDomains</key>     <dict>         <key>localhost</key>         <dict>             <key>NSExceptionAllowsInsecureHTTPLoads</key>             <true/>         </dict>     </dict> </dict>
<key>NSAppTransportSecurity</key>     <dict>         <key>NSAllowsArbitraryLoads</key>         <true/>     </dict>


Is it possible to connect to a local repo without a web server?

It should in theory be possible to connect to a local (to the GUI) git without running a third party package or web server. But have spent some hours trying to get this to work unsuccessfully, so am just asking if it should be possible?
My scenario: running on MacOS, with the bog standard git installed, created a bare repo that I'm trying to clone with abapGit on my local SapGUI. It is about a direct path as you can get.
So it should in theory be possible to access it via ssh or http/s by running it in daemon mode. Unfortunately I've failed on both to get it to work. Tried too many combinations to list here, using https://git-scm.com/book/en/v2/Git-on-the-Server-The-Protocols as a reference.
My most hopeful one was to start git daemon, establish the port, connect.
Got port:
git-daemo 27659 my_id    4u  IPv6 0x19bc9d1db7855151      0t0  TCP *:9418 (LISTEN)
git-daemo 27659 my_id    5u  IPv4 0x19bc9d1db41f2539      0t0  TCP *:9418 (LISTEN)
Tried to clone to https://localhost:9418/my/repo/path
Unfortunately getting an error 411 "Connect to localhost:9418 failed: NIECONN_REFUSED(-10)"
If it doesn't work, I can easily live without it. But was wondering if it isn't supported, is it a feasible change? I might have a go myself if I can get some pointers.

if the daemon exposes the raw git protocol via http(s) it should work

Thanks, no such fancy stuff as https, just barebones git
I can start the daemon in one terminal session
$ git daemon --reuseaddr --base-path=/users/me/git_base --verbose --informative-errors
[32959] Ready to rumble

and access it in another:
$ echo -e -n "001dgit-upload-pack /test.git\0" | nc -v localhost 9418
found 0 associations
found 1 connections:
     1:	flags=82<CONNECTED,PREFERRED>
	outif lo0
	src ::1 port 54358
	dst ::1 port 9418
	rank info not available
	TCP aux info available

Connection to localhost port 9418 [tcp/git] succeeded!
0102bb016700d8c0d9b2043e6a44254a800679e41474 HEADmulti_ack thin-pack side-band side-band-64k ofs-delta shallow deepen-since deepen-not deepen-relative no-progress include-tag multi_ack_detailed symref=HEAD:refs/heads/master agent=git/2.15.1.(Apple.Git-101)
003fbb016700d8c0d9b2043e6a44254a800679e41474 refs/heads/master
0000

I don't know enough about the internals (yet) to figure out whether abapGit can easily be adapted or if the https side is vastly different.

abapGit currently only supports HTTP(S) as transport protocl


[FEA] Support Cache Mechanism in cuCIM

This issue is explaining the feature that is already being implemented and would like to use this issue for showing the feature and get feedback until the implementation is merged and available.
Is your feature request related to a problem? Please describe.
In many deep learning use cases, small image patches need to be extracted from the large image and they are fed into the neural network.
If the patch size doesn't align with the underlying tile layout of TIFF image (e.g., AI model such as ResNet may accept a particular size of the image [e.g., 224x224] that is smaller than the underlying tile size [256x256]), redundant image loadings for a tile are needed (See the following two figures)

Which resulted in lower performance for unaligned cases as shown in our GTC 2021 presentation

To improve image loading performance for general use cases, cuCIM needs a cache mechanism implemented.
The cache feature also need to be highly configurable (such as disabling cache) : https://github.com/rapidsai/cucim/issues/17#issuecomment-825500526

Will we be able to disable the cache when doing random tile reads? We generally disable the OpenSlide one when training.

(As shown in Access Pattern 3 in https://github.com/rapidsai/cucim/blob/branch-0.20/notebooks/File-access_Experiments_on_TIFF.ipynb)
Describe the solution you'd like
Make the cache memory/strategy configurable
Other libraries have the following strategies for cache.

OpenSlide

1024 x 1024 x 30 bytes (30MiB) per file handle for cache ==> 160 (RGB) or 120 (ARGB) 256x256 tiles
Not configurable

rasterio

5% of available system memory by default (e.g., 32 GB of free memory => 1.6 GB of cache memory allocated)
Configurable through environment module

We would like to support three cache strategies (can be extended).

nocache
per_process
shared_memory (interprocess)

And we want to make user can select cache strategy and its configuration through a configuration file (.cucim.json) or function calls(CuImage.cache() method)
Use high-performance libraries/algorithm

Make use of libcuckoo for cache item handling(hash map).

Known to be better than Intel TBB's concurrent hash map. The project is fairly stable.

Use circular queue(using std::vector with FIFO strategy) with mutex pool, instead of linked list (with LRU strategy) for better handling of concurrent environments.
For shared memory strategy, it uses boost library (interprocess module) for shared memory management.

Results
cuCIM has similar performance gain with aligned case when patch and tile layout are not aligned.

Demo

You can test the feature via the following command
pip install -i https://test.pypi.org/simple/ --pre --upgrade cucim

Room for improvement
Using of a memory pool
per_process strategy performs better than shared_memory strategy, and both strategies perform less than nocache strategy when underlying tiles and patches are aligned.

shared_memory strategy does some additional operations compared with per_process strategy, and both strategies have some overhead using cache (such as memory allocation for cache item/indirect function calls)

=> All three strategies (including nocache) can have benefited if we allocate CPU/GPU memory for tiles from a fixed-sized cache memory pool (using RMM and/or PMR) instead of calling malloc() to allocate memory.
Supporting generator(iterator)
When patches to read in an image can be determined in advance (inference use case), we can load/prefetch entire compressed/decompressed image data to the memory and provide Python generator(iterator) to get a series of patches efficiently for inference use cases.
Supplementary Images

This feature is implemented with https://github.com/rapidsai/cucim/pull/48 and released as v21.06.00 (release note)


⚠ Adacta-fintech.com has degraded performance

In 4f2b06f, Adacta-fintech.com (https://www.adacta-fintech.com) experienced degraded performance:

HTTP code: 200
Response time: 1216 ms

Resolved: Adacta-fintech.com performance has improved in abebd14 after 38 minutes.


[GH-47817]- remove messageManuallyMarkedUnread and manual handling of…

cc. @arosiclair
Details
This PR simplifies the logic related to the unread marker in the chat so that we can rely more on the unread state of the report actions from the backend instead of a local state.
Fixed Issues
$ https://github.com/Expensify/App/issues/47817
PROPOSAL: https://github.com/Expensify/App/issues/47817#issuecomment-2310040198
Tests
Mark unread user messages:

Open a chat with a workspace or another user
Send a few messages in the chat
Mark a message as unread
Open a different chat
Open the same chat again
Expected result: the "new message" marker line is shown on the message that was marked unread

Unread messages in thread

Open a chat with a workspace or another user
Send a message in the chat
Start a new thread in the chat and send a few messages
Mark one of the messages as unread
Leave thread
Open thread again
Expected result: the "new message" marker line is shown on the message that was marked unread

Unread messages between devices

Run all the steps for one of the previous tests in desktop app
Open a different device (mweb, android, ios)
Open same chat where you marked message unread
Expected result: the "new message" marker line is shown on the message that was marked unread

Offline tests
The first two cases can be tested as they are in offline mode. The third one would be as follows:

Run all the steps for one of the previous tests in device A
Open a different device (mweb, android, ios)
No unread messages would show from step 1 as the messages have not reached the backend yet
Make device A online and wait for the Mark Unread action to be sent online
Open the same chat where you marked message unread
Expected result: the "new message" marker line is shown on the message that was marked unread

QA Steps
PR Author Checklist

[x] I linked the correct issue in the ### Fixed Issues section above
[x] I wrote clear testing steps that cover the changes made in this PR

[x] I added steps for local testing in the Tests section
[x] I added steps for the expected offline behavior in the Offline steps section
[x] I added steps for Staging and/or Production testing in the QA steps section
[x] I added steps to cover failure scenarios (i.e. verify an input displays the correct error message if the entered data is not correct)
[x] I turned off my network connection and tested it while offline to ensure it matches the expected behavior (i.e. verify the default avatar icon is displayed if app is offline)
[x] I tested this PR with a High Traffic account against the staging or production API to ensure there are no regressions (e.g. long loading states that impact usability).

[x] I included screenshots or videos for tests on all platforms
[x] I ran the tests on all platforms & verified they passed on:

[x] Android: Native
[x] Android: mWeb Chrome
[x] iOS: Native
[x] iOS: mWeb Safari
[x] MacOS: Chrome / Safari
[x] MacOS: Desktop

[x] I verified there are no console errors (if there's a console error not related to the PR, report it or open an issue for it to be fixed)
[x] I followed proper code patterns (see Reviewing the code)

[x] I verified that any callback methods that were added or modified are named for what the method does and never what callback they handle (i.e. toggleReport and not onIconClick)
[x] I verified that the left part of a conditional rendering a React component is a boolean and NOT a string, e.g. myBool && <MyComponent />.
[x] I verified that comments were added to code that is not self explanatory
[x] I verified that any new or modified comments were clear, correct English, and explained "why" the code was doing something instead of only explaining "what" the code was doing.
[x] I verified any copy / text shown in the product is localized by adding it to src/languages/* files and using the translation method

[x] If any non-english text was added/modified, I verified the translation was requested/reviewed in #expensify-open-source and it was approved by an internal Expensify engineer. Link to Slack message:

[x] I verified all numbers, amounts, dates and phone numbers shown in the product are using the localization methods
[x] I verified any copy / text that was added to the app is grammatically correct in English. It adheres to proper capitalization guidelines (note: only the first word of header/labels should be capitalized), and is either coming verbatim from figma or has been approved by marketing (in order to get marketing approval, ask the Bug Zero team member to add the Waiting for copy label to the issue)
[x] I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named "index.js". All platform-specific files are named for the platform the code supports as outlined in the README.
[x] I verified the JSDocs style guidelines (in STYLE.md) were followed

[x] If a new code pattern is added I verified it was agreed to be used by multiple Expensify engineers
[x] I followed the guidelines as stated in the Review Guidelines
[x] I tested other components that can be impacted by my changes (i.e. if the PR modifies a shared library or component like Avatar, I verified the components using Avatar are working as expected)
[x] I verified all code is DRY (the PR doesn't include any logic written more than once, with the exception of tests)
[x] I verified any variables that can be defined as constants (ie. in CONST.js or at the top of the file that uses the constant) are defined as such
[x] I verified that if a function's arguments changed that all usages have also been updated correctly
[x] If any new file was added I verified that:

[x] The file has a description of what it does and/or why is needed at the top of the file if the code is not self explanatory

[x] If a new CSS style is added I verified that:

[x] A similar style doesn't already exist
[x] The style can't be created with an existing StyleUtils function (i.e. StyleUtils.getBackgroundAndBorderStyle(theme.componentBG))

[x] If the PR modifies code that runs when editing or sending messages, I tested and verified there is no unexpected behavior for all supported markdown - URLs, single line code, code blocks, quotes, headings, bold, strikethrough, and italic.
[x] If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
[x] If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
[x] If the PR modifies a component or page that can be accessed by a direct deeplink, I verified that the code functions as expected when the deeplink is used - from a logged in and logged out account.
[x] If the PR modifies the UI (e.g. new buttons, new UI components, changing the padding/spacing/sizing, moving components, etc) or modifies the form input styles:

[x] I verified that all the inputs inside a form are aligned with each other.
[x] I added Design label and/or tagged @Expensify/design so the design team can review the changes.

[x] If a new page is added, I verified it's using the ScrollView component to make it scrollable when more elements are added to the page.
[x] If the main branch was merged into this PR after a review, I tested again and verified the outcome was still expected according to the Test steps.

Screenshots/Videos

Android: Native
https://github.com/user-attachments/assets/2bf1259e-05f9-4da5-9e67-8e6f533b67e1

Android: mWeb Chrome
https://github.com/user-attachments/assets/acf6c994-1754-4792-89ca-23d4094a991e

iOS: Native
https://github.com/user-attachments/assets/442e5841-d83c-4e4c-9611-2caa029afe18

iOS: mWeb Safari
https://github.com/user-attachments/assets/82e34fcc-37e8-453c-8f14-bc4da46046eb

MacOS: Chrome / Safari
https://github.com/user-attachments/assets/7e4986ad-a9ad-4e03-a5e5-42d4759e74b0

MacOS: Desktop
https://github.com/user-attachments/assets/18f9536e-d868-43f4-82bf-96ab67cbbe65

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

@arosiclair thanks, I tested both the ones in the PR checklist and the ones in the comments and it tests well.
To the reviewer: The ESLint failures have nothing to do with what I changed, do I still need to solve them?

I'm not sure why there's an ESLint check on unchanged files, but I would think those do not need to be fixed. The failures in changed files do need to be fixed though.

Reviewer Checklist

[ ] I have verified the author checklist is complete (all boxes are checked off).
[ ] I verified the correct issue is linked in the ### Fixed Issues section above
[ ] I verified testing steps are clear and they cover the changes made in this PR

[ ] I verified the steps for local testing are in the Tests section
[ ] I verified the steps for Staging and/or Production testing are in the QA steps section
[ ] I verified the steps cover any possible failure scenarios (i.e. verify an input displays the correct error message if the entered data is not correct)
[ ] I turned off my network connection and tested it while offline to ensure it matches the expected behavior (i.e. verify the default avatar icon is displayed if app is offline)

[ ] I checked that screenshots or videos are included for tests on all platforms
[ ] I included screenshots or videos for tests on all platforms
[ ] I verified tests pass on all platforms & I tested again on:

[ ] Android: Native
[ ] Android: mWeb Chrome
[ ] iOS: Native
[ ] iOS: mWeb Safari
[ ] MacOS: Chrome / Safari
[ ] MacOS: Desktop

[ ] If there are any errors in the console that are unrelated to this PR, I either fixed them (preferred) or linked to where I reported them in Slack
[ ] I verified proper code patterns were followed (see Reviewing the code)

[ ] I verified that any callback methods that were added or modified are named for what the method does and never what callback they handle (i.e. toggleReport and not onIconClick).
[ ] I verified that the left part of a conditional rendering a React component is a boolean and NOT a string, e.g. myBool && <MyComponent />.
[ ] I verified that comments were added to code that is not self explanatory
[ ] I verified that any new or modified comments were clear, correct English, and explained "why" the code was doing something instead of only explaining "what" the code was doing.
[ ] I verified any copy / text shown in the product is localized by adding it to src/languages/* files and using the translation method
[ ] I verified all numbers, amounts, dates and phone numbers shown in the product are using the localization methods
[ ] I verified any copy / text that was added to the app is grammatically correct in English. It adheres to proper capitalization guidelines (note: only the first word of header/labels should be capitalized), and is either coming verbatim from figma or has been approved by marketing (in order to get marketing approval, ask the Bug Zero team member to add the Waiting for copy label to the issue)
[ ] I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named "index.js". All platform-specific files are named for the platform the code supports as outlined in the README.
[ ] I verified the JSDocs style guidelines (in STYLE.md) were followed

[ ] If a new code pattern is added I verified it was agreed to be used by multiple Expensify engineers
[ ] I verified that this PR follows the guidelines as stated in the Review Guidelines
[ ] I verified other components that can be impacted by these changes have been tested, and I retested again (i.e. if the PR modifies a shared library or component like Avatar, I verified the components using Avatar have been tested & I retested again)
[ ] I verified all code is DRY (the PR doesn't include any logic written more than once, with the exception of tests)
[ ] I verified any variables that can be defined as constants (ie. in CONST.js or at the top of the file that uses the constant) are defined as such
[ ] If a new component is created I verified that:

[ ] A similar component doesn't exist in the codebase
[ ] All props are defined accurately and each prop has a /** comment above it */
[ ] The file is named correctly
[ ] The component has a clear name that is non-ambiguous and the purpose of the component can be inferred from the name alone
[ ] The only data being stored in the state is data necessary for rendering and nothing else
[ ] For Class Components, any internal methods passed to components event handlers are bound to this properly so there are no scoping issues (i.e. for onClick={this.submit} the method this.submit should be bound to this in the constructor)
[ ] Any internal methods bound to this are necessary to be bound (i.e. avoid this.submit = this.submit.bind(this); if this.submit is never passed to a component event handler like onClick)
[ ] All JSX used for rendering exists in the render method
[ ] The component has the minimum amount of code necessary for its purpose, and it is broken down into smaller components in order to separate concerns and functions

[ ] If any new file was added I verified that:

[ ] The file has a description of what it does and/or why is needed at the top of the file if the code is not self explanatory

[ ] If a new CSS style is added I verified that:

[ ] A similar style doesn't already exist
[ ] The style can't be created with an existing StyleUtils function (i.e. StyleUtils.getBackgroundAndBorderStyle(theme.componentBG)

[ ] If the PR modifies code that runs when editing or sending messages, I tested and verified there is no unexpected behavior for all supported markdown - URLs, single line code, code blocks, quotes, headings, bold, strikethrough, and italic.
[ ] If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
[ ] If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
[ ] If the PR modifies a component or page that can be accessed by a direct deeplink, I verified that the code functions as expected when the deeplink is used - from a logged in and logged out account.
[ ] If the PR modifies the UI (e.g. new buttons, new UI components, changing the padding/spacing/sizing, moving components, etc) or modifies the form input styles:

[ ] I verified that all the inputs inside a form are aligned with each other.
[ ] I added Design label and/or tagged @Expensify/design so the design team can review the changes.

[ ] If a new page is added, I verified it's using the ScrollView component to make it scrollable when more elements are added to the page.
[ ] If the main branch was merged into this PR after a review, I tested again and verified the outcome was still expected according to the Test steps.
[ ] I have checked off every checkbox in the PR reviewer checklist, including those that don't apply to this PR.

Screenshots/Videos

Android: Native

Android: mWeb Chrome

iOS: Native

iOS: mWeb Safari

MacOS: Chrome / Safari

MacOS: Desktop

@neil-marcellini based on this slack thread we should fix only errors in changed files
https://expensify.enterprise.slack.com/archives/C01GTK53T8Q/p1726758316863109?thread_ts=1726758316.863109&cid=C01GTK53T8Q

Ok, thanks so much for explaining @klajdipaja. Merging with the ESLint check failing because it's unrelated to these changes, and it's being handled in the PRs the contributor linked in that Slack message above.

:hand: This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release.

🚀 Deployed to staging by https://github.com/neil-marcellini in version: 9.0.40-0 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅

The changes from this PR led to the following issue:

https://github.com/Expensify/App/issues/50469

because before the changes implemented in this PR, we were ignoring any message that the current user sends, unless the user marked it as unread manually.
To fix the issue we applied the solution from this proposal, read all the context from the contributor to better understand the issue and the solution implemented to fix it.


Cannot install and run develop branch due to missing dependency

          It works on my computer. However, I found an issue in the develop branch, the `aind_behavior_services` package is not found. The package is not defined in the `pyproject.toml`

Originally posted by @XX-Yin in https://github.com/AllenNeuralDynamics/dynamic-foraging-task/issues/1115#issuecomment-2518287632

Thats strange, since this PR added it: https://github.com/AllenNeuralDynamics/dynamic-foraging-task/pull/1003/files#diff-50c86b7ed8ac2cf95bd48334961bf0530cdc77b5a56f852c5c61b89d735fd711

And its in the production_testing branch. So some more recent PR must have removed it, which is troubling
https://github.com/AllenNeuralDynamics/dynamic-foraging-task/blob/66edb6f236fce48d1c816fba8b3b07bf528611c9/pyproject.toml#L31

That is a very strange dependency range. Should it be 0.8?

I don't know. @micahwoodard added that dependency recently

Closed by #1119


prior_linearized no longer has Xs kwarg

Hello ,
I am trying to use the time varying intercept feature while defining the model config , but it leads to an error (which was not there yesterday).
Below are the model definitions and configurations:
best_params = {'prior_sigma': 4.453374020135536,
 'mu_A_S': 0.5254728909760423,
 'mu_B_S': 4.858094986582797,
 'mu_C_S': 0.20741840049133997,
 'mu_D_S': 1.3932538309035063,
 'mu_E_S': 4.349563730296513,
 'mu_F_S': 2.9837827690151446,
 'alpha': 3.5721111826244427,
 'lam_alpha': 3.159080650860037,
 'lam_beta': 6.057818770627395,
 'likelihood_sigma': 4.768963099225516,
 'gamma_control_mu': 3.6755851428916966,
 'gamma_control_sigma': 3.99927540072232,
 'gamma_fourier_mu': -4.815992857627947,
 'gamma_fourier_b': 1.6883991281354374,
 'intercept_tvp_m': 42,
 'intercept_tvp_ls_mu': 56.28947569502999,
 'intercept_tvp_ls_sigma': 3.489056734555973,
 'intercept_tvp_eta_lam': 0.4855496517028385}

custom_best_channel_prior = {
        'intercept': {'dist': 'HalfNormal', 'kwargs': {'sigma': 0.05}},
        'beta_channel': {'dist': 'Normal', 'kwargs': {'mu': [best_params[f'mu_{ch}'] for ch in channels], 'sigma': best_params['prior_sigma']}},
        'alpha': {'dist': 'Beta', 'kwargs': {'alpha': best_params['alpha'], 'beta': 3}},
        'lam': {'dist': 'Gamma', 'kwargs': {'alpha': best_params['lam_alpha'], 'beta': best_params['lam_beta']}},
        'likelihood': {'dist': 'Normal', 'kwargs': {'sigma': {'dist': 'HalfNormal', 'kwargs': {'sigma': best_params['likelihood_sigma']}}}},
        'gamma_control': {'dist': 'Normal', 'kwargs': {'mu': best_params['gamma_control_mu'], 'sigma': best_params['gamma_control_sigma']}},
        'gamma_fourier': {'dist': 'Laplace', 'kwargs': {'mu': best_params['gamma_fourier_mu'], 'b': best_params['gamma_fourier_b']}},
        'intercept_tvp_kwargs': {
            'm': best_params['intercept_tvp_m'],
            'L': None,
            'eta_lam': best_params['intercept_tvp_eta_lam'],
            'ls_mu': best_params['intercept_tvp_ls_mu'],
            'ls_sigma': best_params['intercept_tvp_ls_sigma'],
            'cov_func': None
        }
    }

test_mmm = DelayedSaturatedMMM(
    model_config = custom_best_channel_prior,
    target_column='R',
    date_column='Dates',
    validate_data = True,
    channel_columns=spend_cols,
    control_columns = ['holiday'],
    adstock_max_lag = 8,
    yearly_seasonality = 2,
    time_varying_intercept = True
)
test_mmm.model_config

idata = test_mmm.fit(X_new,y, target_accept=0.98, chains=4, random_seed=43)

However, it throws up the below error:
Error:
"""
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
Cell In[93], line 1
----> 1 idata = test_mmm.fit(X_new,y, target_accept=0.98, chains=4, random_seed=43)

File ~/.local/lib/python3.12/site-packages/pymc_marketing/model_builder.py:462, in ModelBuilder.fit(self, X, y, progressbar, predictor_names, random_seed, **kwargs)
    459     raise ValueError("X and y must be set before calling build_model!")
    461 if self.model is None:
--> 462     self.build_model(self.X, self.y)
    464 sampler_config = self.sampler_config.copy()
    465 sampler_config["progressbar"] = progressbar

File ~/.local/lib/python3.12/site-packages/pymc_marketing/mmm/delayed_saturated_mmm.py:410, in BaseDelayedSaturatedMMM.build_model(self, X, y, **kwargs)
    404 if self.time_varying_intercept:
    405     time_index = pm.Data(
    406         "time_index",
    407         self._time_index,
    408         dims="date",
    409     )
--> 410     intercept = create_time_varying_intercept(
    411         time_index,
    412         self._time_index_mid,
    413         self._time_resolution,
    414         self.intercept_dist,
    415         self.model_config,
    416     )
    417 else:
    418     intercept = self.intercept_dist(
    419         name="intercept", **self.model_config["intercept"]["kwargs"]
    420     )

File ~/.local/lib/python3.12/site-packages/pymc_marketing/mmm/tvp.py:137, in create_time_varying_intercept(time_index, time_index_mid, time_resolution, intercept_dist, model_config)
    132 if model_config["intercept_tvp_kwargs"]["ls_mu"] is None:
    133     model_config["intercept_tvp_kwargs"]["ls_mu"] = (
    134         DAYS_IN_YEAR / time_resolution * 2
    135     )
--> 137 multiplier = time_varying_prior(
    138     name="intercept_time_varying_multiplier",
    139     X=time_index,
    140     dims="date",
    141     X_mid=time_index_mid,
    142     **model_config["intercept_tvp_kwargs"],
    143 )
    144 intercept_base = intercept_dist(
    145     name="intercept_base", **model_config["intercept"]["kwargs"]
    146 )
    147 return pm.Deterministic(
    148     name="intercept",
    149     var=intercept_base * multiplier,
    150     dims="date",
    151 )

File ~/.local/lib/python3.12/site-packages/pymc_marketing/mmm/tvp.py:99, in time_varying_prior(name, X, dims, X_mid, m, L, eta_lam, ls_mu, ls_sigma, cov_func)
     96     hsgp_dims = (dims[1], "m")
     98 gp = pm.gp.HSGP(m=[m], L=[L], cov_func=cov_func)
---> 99 phi, sqrt_psd = gp.prior_linearized(Xs=X[:, None] - X_mid)
    100 hsgp_coefs = pm.Normal(f"{name}_hsgp_coefs", dims=hsgp_dims)
    101 f = phi @ (hsgp_coefs * sqrt_psd).T

TypeError: HSGP.prior_linearized() got an unexpected keyword argument 'Xs'
"""
What does this error mean and how do I resolve this?

Hi @shuvayan
Thanks for reporting. That is a bug with a change from two weeks ago:
https://github.com/pymc-devs/pymc/commit/7bb5d057bf392865543943656d925de5dcee0e93
Would you be able to make a PR? I'd suggest not using keyword arg so we can support previous versions
If you need a quick fix, I would restrict the PyMC version to the release before this linked commit

Hi @wd60622 ,
I don't have any experience in creating PR's./
If you could guide me I will give it a try!

@shuvayan One of the best and most complete guides I have seen is https://www.sktime.net/en/stable/developer_guide/git_workflow.html. They have a step-by-step guide to creating PRs. Let us know if you need some help :)

@shuvayan One of the best and most complete guides I have seen is https://www.sktime.net/en/stable/developer_guide/git_workflow.html. They have a step-by-step guide to creating PRs. Let us know if you need some help :)

Very nice walkthrough. If you run into any issues, let us know!

Okay,
So we need to make changes to the tvp.py file within the mmm folder using the changes in
https://github.com/pymc-devs/pymc/commit/7bb5d057bf392865543943656d925de5dcee0e93
Let me know if my understanding is correct.

Okay,
So we need to make changes to the tvp.py file within the mmm folder using the changes in
https://github.com/pymc-devs/pymc/commit/7bb5d057bf392865543943656d925de5dcee0e93
Let me know if my understanding is correct.

Yes, sounds right to me.
Make some edits, push up and start PR, and we can give some feedback

Hello @wd60622 ,
I have made the changes in tvp.py locally and I think it is working fine with the updated pymc version too.
Just that I see a lot of divergences during the model training.
Can you please take a look at the attached pdf and let me know if I am missing something.
If not, I will push the PR with the changes.
pymc_tvp_ipynb.pdf

Hello @wd60622 ,
I have made the changes in tvp.py locally and I think it is working fine with the updated pymc version too. Just that I see a lot of divergences during the model training. Can you please take a look at the attached pdf and let me know if I am missing something.
If not, I will push the PR with the changes. pymc_tvp_ipynb.pdf

Hi @shuvayan. Just push up the changes that you have tried out! We can review with a PR

Done .
https://github.com/pymc-labs/pymc-marketing/pull/806


Fix NodeJS Freezes in test bot from Canvas

Description:
This PR works-around an issue with Canvas exporting to jpg/png.
When the bot is not in production, it sets canvas.gpu = false, and changes nothing for production.
Changes:

Centralizes canvas creation to avoid needing to check production any time a canvas is created
In createCanvas(), if (not production) disable GPU acceleration on Canvas

Other checks:

[x] I have tested all my changes thoroughly.

Any more info about this? the server doesnt even have a GPU.

It doesn't hurt us to disable the GPU in dev.  it's not even enabled in prod because there is no graphics card.
but this simple change will greatly help my ability to continue contributing because i won't have to kill my entire terminal every time to restart the bot.


Pending — Contributor License Agreement is not signed yet.

Hello, I tried to contribute to a public repository, when I created a pull request to request a merge, I got this message:

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

Can you help me solve this problem. Thank you!

@Medo-ID, it seems you solved the issue on your own, did you?

Hi,
Yes I did, Thank you 🫡
On Mon, 23 Sept 2024 at 09:43, Anton @.***> wrote:

@Medo-ID https://github.com/Medo-ID, it seems you solved the issue on
your own, did you?
—
Reply to this email directly, view it on GitHub
https://github.com/cla-assistant/cla-assistant/issues/1079#issuecomment-2367574690,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AOZJQ4DIVSAHSEOAFU2KUIDZX7IDVAVCNFSM6AAAAABOSXKEYSVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDGNRXGU3TINRZGA
.
You are receiving this because you were mentioned.Message ID:
@.***>

--
Sent with Gmail for Sidekick Browser https://join.meetsidekick.com/_114sr


ConfigureApplicationCookie does not work with AddDefaultIdentity

Using ConfigureApplicationCookie to change the LoginPath only works with AddIdentity but not with AddDefaultIdentity, even after adding the configuration after AddDefaultIdentity as per #1414 .
            services.AddDefaultIdentity<IdentityUser>(); //Redirects to Account/Login
            //services.AddIdentity<IdentityUser, IdentityRole>(); //Redirects to Account/LoginRegister

            services.Configure<IdentityOptions>(options =>
            {
                // Password settings.
                options.Password.RequireDigit = false;
                options.Password.RequireLowercase = false;

                .....

                // User settings.
                options.User.AllowedUserNameCharacters =
                "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-._@+";
                options.User.RequireUniqueEmail = false;
            });

            services.ConfigureApplicationCookie(options =>
            {
                options.LoginPath = $"/Identity/Account/LoginRegister";
            });

This seems to be specifically an issue with AddDefaultUI (which is also called in AddDefaultIdentity).
When I use the following:
            services.AddIdentity<IdentityUser, IdentityRole>()
                  .AddDefaultTokenProviders()
                  .AddDefaultUI();

I am again unable to redirect to my custom login page. This is a bit confusing because as far as I understand adding a default UI should not be interfering with cookie settings or am I wrong?
Would welcome any help or suggestions I've spent several days now trying to do this the right way.
Note: IdentityDefaultUIConfigureOptions has a PostConfigure that seems to set this. Is this where things are being messed up?

I'm noticing this same issue. This breaks certain multi tenant scenarios in my use case.

@javiercn does this fall under your scaffolding work?

I think the PostConfigure is the one causing this, you can write services.PostConfigure<CookieAuthenticationOptions>(IdentityDefaults.ApplicationCookie, o => ...) to change the paths.

@Eilon Who is supporting Identity UI and scaffolding now? No-one seems to want it.

@mkArtakMSFT is working in the answer to that question.


How do I reload the table when a new row is added?

Is it possible to reload the plugin on a table when a new row is added?  Or is there a remove function and then I can reload it fully?

Not in the plans, because it will duplicate things. But it's a good idea to create a method to destroy and reload.

I agree adding a new row is pretty important for a lot of real-world cases -- if a row can be deleted, why not added?
Great project though. Lightweight and functional for straightforward use.

I think if you can add new row . You can try add a default data to db , then you edit the new row :)

Any updates on this? I'm adding rows dynamically to a table and it would be great to have Tabledit parse the table on the fly!

Hello
It's a great plugin to use! I just have a very small question
when a row is deleted or edited it is set to $lastDeletedRow or $lastEditedRow ..
How do I access it ? can you please give me an example?
Thanks in advance!

Hey, this still not implemented, @nanexcool have you create a patch so ? ^^'

@benftwc Hey did you find a work around for this?

This is how I'm currently working around it.  After adding a new row to the database, I then make an ajax call to fresh the HTML of the table and call the Tabledit init again.
$("#table-account-mapping-add-new").on('click', function() {
$.ajax({
type: "GET",
url: "/add_new",
cache: false,
success: function(data, status) {
$('#table-account-mapping').html(data);
$('#table-account-mapping').Tabledit({
url: '/updated_table_html',
columns: {
identifier: [0, 'id'],
editable: [[1, 'account_number'], [2, 'directory_path']]
},
hideIdentifier: true
});
},
error: function() {
}


research GA/HA/Devices

As a developer, I want an understanding of how best to transmit data from Google Assistant to Home Assistant to IoT devices and back. May require additional research per device type.
Considerations:

VPN?
VPC?
Home Assistant Cloud & costs

[ ] Home Assistant Cloud considerations:
[ ] Public IP for EC2 instance running Home Assistant considerations:
[ ] VPN to connect local devices to cloud instance considerations:
[ ] VPC considerations:


test php 7.2 on travis

Coverage increased (+0.1%) to 98.058% when pulling fee55343c194cb179605463ec2e4d3e36f0b198e on php_72 into e8aea17cc9f75109c6c41e4f104b919a86444cd2 on master.


Add path to bash to GITHUB_PATH

Currently the following error is observed on "SlangWin4-2" on another PR.
Error: bash: command not found

And this PR appears to resolve the bash problem.
One of workflow ran on "SlangWin4-2" and the bash error is not observed.


Add option for port mirroring

Enhancement summary
Currently the only way to achieve port mirroring is by using the eos_raw_cli option in eos_designs, it would be nice if it had a dedicated option inside connected_endpoints.adapters
Which component of AVD is impacted
eos_designs, eos_cli_config_gen
Use case example
Port mirroring is useful for monitoring and network probes.
Describe the solution you would like
Something similar to this :
servers:
  server1:
    adapters:
      - switch_ports: [Ethernet1]
        server_ports: [eth0]
        switches: [switch1]
        sessions:
           - name: 1
             type: source
             direction: tx

that would grab the interface/s from the switch_ports or port_channel, if one is defined, and assign it with the specified session.
This would be generated in EOS as:
monitor session 1 source Ethernet1 tx

Describe alternatives you have considered
No response
Additional context
No response
Contributing Guide

[X] I agree to follow this project's Code of Conduct

We actually have the same issue on our side. Using eos_cli has the drawback that it can only be used once per switch - thus if you use it for other "switch specificas" you might override them when mirroring is used for 50% of the ports in a fabric.

@ClausHolbechArista can you assign this one to me? I've already started working on it some days ago, just need to finish the documentation part an upload.
Thanks!

Resolved by #1435

#1435 only resolves the eos_cli_config_gen part of the issue. The eos_designs implementation is still missing.

True! I'd also like to take a look at the eos_designs part once  I have some spare time. It'd be a good opportunity to dive into it

#1435 only resolves the eos_cli_config_gen part of the issue. The eos_designs implementation is still missing.

Sorry I missed that. Reopened and I hope @ccsnw will take it on. Ping me if you need help.

will do! just give me some time, have a couple of other things to finish first


Call one Organiser from another

I just tried to set up a hierarchy of Organisers and Interactors but it seems like one Organiser can't call another Organiser. Multiple organize calls in a single Organiser (https://github.com/collectiveidea/interactor/issues/127) is vaguely similar but doesn't let me delegate responsibility to the "sub-Organiser".
Is this a sensible requirement or is calling one Organiser from another a code smell?
A contrived scenario (starting from the README example) is below:
class PlaceOrder
  include Interactor::Organizer

  organize CreateOrder, ChargeCard, SendThankYou
end

We add a feature for customers to prepay for recurring subscriptions. Each month we need to ship them their order but we don't need to charge their card again:
class RepeatSubscriptionOrder
  include Interactor::Organizer

  organize CreateOrder, SendThankYou
end

CreateOrder is getting a bit bloated so we want to split it into three Interactors (which apply to both regular and repeat orders); CheckStockLevels, CreateOrder, AddMysteryGift. We could just add both new Interactors to both Organisers but it doesn't feel very DRY.
If an Organiser could call another Organiser this would be a lot simpler:
class PlaceOrder
  include Interactor::Organizer

  organize ProcessOrder, ChargeCard, SendThankYou
end

class SubscriptionRepeatOrder
  include Interactor::Organizer

  organize ProcessOrder, SendThankYou
end

class ProcessOrder
  include Interactor::Organizer

  organize CheckStockLevels, CreateOrder, AddMysteryGift
end

Now any time we make changes to ProcessOrder they are inherited by both "parent" Organisers.

I don't see any reason why it should fail. I've done it in the past and it worked quite well.

I just created a brand new project and tested it out. You're absolutely right @denispasin, it does work. I've already deleted the branch I was experimenting with this on so I don't know for sure but I suspect I must have had some other bug in my code (misnamed file or class probably) and just leaped to conclusions.


create issue template for new posts

set this up so i can hit new issue and get a post with all the front matter configured already

Fixed!


MSID: 91243 Version: 2 DOI: 10.1101/2<IP_ADDRESS>3818

MSID: 91243
Version: 2
Preprint DOI: https://doi.org/10.1101/2<IP_ADDRESS>3818
Step 1. Awaiting reviews
Editorial to post reviews via hypothesis
Useful links:

DocMap: https://data-hub-api.elifesciences.org/enhanced-preprints/docmaps/v2/by-publisher/elife/get-by-manuscript-id?manuscript_id=91243
New model tracking: https://docs.google.com/spreadsheets/d/1_fHaoOy7hjyocptKtVJRijeNpUY4hBS7Ck_aVmx6ZJk/
Reviews on sciety: https://sciety.org/articles/activity/10.1101/2<IP_ADDRESS>3818

For trouble shooting (e.g. no Docmaps available):

DocMap issue addressing: https://miro.com/app/board/uXjVNCwK6EI=/
Explore DataHub DocMaps API: https://lookerstudio.google.com/reporting/4c2f0368-babb-4beb-b5b3-497e7e7b0f08/page/ejphD
Unmatched submissions and preprints: https://lookerstudio.google.com/u/0/reporting/9f86204f-3bf7-477c-9b18-5c5ef141bf69/page/p_gxi57ha93c
Unmatched manuscripts spreadsheet: https://docs.google.com/spreadsheets/d/15QcK8w-ssB7109RQEDtFpJPZ0J5HTGxoHa_2TtpMBbg/edit#gid=1336081641

Step 2. Preview reviewed preprint
Production QC content ahead of publication
Instructions:

QC preview: https://prod--epp.elifesciences.org/previews/91243v2
Update ticket with any problems (add blocked label)
When QC OK, add QC OK label to ticket and add publication date and time to https://docs.google.com/spreadsheets/d/1amAlKvdLcaDp5W8Z8g77NmkwbMF5n_u89ArSqPMO8jg
Move card to next column
(At end of the day post link in #enhanced-preprint and ask for PDF to be generated)

Useful links:

Preprint DOI :  https://doi.org/10.1101/2<IP_ADDRESS>3818
Confirm reviews returned by EPP: https://prod--epp.elifesciences.org/api/reviewed-preprints/91243/v2/reviews
To update the MECA path in the docmap: https://docs.google.com/spreadsheets/d/1mctCQuNFBjSn97Lihy7_vBO6z7-N-oqyLv4clyi6zHg

Step 3: Awaiting search reindex
This step adds the reviewed preprint to the homepage: https://elifesciences.org
The search reindex is triggered once an hour. We need the reviewed preprint to be indexed as the search application serves the journal homepage.
Useful links:

Jenkins pipeline to reindex search can be triggered sooner or monitored here: https://alfred.elifesciences.org/job/process/job/process-reindex-reviewed-preprints/

Step 4: Published! PDF requested
Waiting for PDF to be generated
Useful links:

PDF tracking: https://docs.google.com/spreadsheets/d/106_XeDjmuBae7gexOTNzg60lapeqjl2aRn9DzupGyS8/

Step 5: Introduce PDF to data folder and git repo
Upload PDF to relevent folder in git repo https://github.com/elifesciences/enhanced-preprints-data/
Step 6: Done!

[ ] Kettle is on!

😫 JFC, we've got this kind of thing throughout:


Switch to https://api.846policebrutality.com API based data for mobile app

Use this snapshot and sync with it going forward based on confirmation at https://github.com/949mac/846-backend/issues/6
Required by #31 and #37

Some things to think about future - the API allows evidence query
eg. https://api.846policebrutality.com/api/incidents/7b060ec0-a9d6-11ea-ab9b-7579ddf3de22?include=evidence
{
   "data":[
      {
         "id":"7b060ec0-a9d6-11ea-ab9b-7579ddf3de22",
         "pb_id":"ca-clayton-1",
         "state":"California",
         "city":"Clayton",
         "date":"2020-06-02T00:00:00.000000Z",
         "title":"Law enforcement gas teenagers at a park",
         "description":null,
         "links":[
            "https:\/\/twitter.com\/CorinneAllen20\/status\/1268000716884283393",
            "https:\/\/twitter.com\/CliffBraun\/status\/1268038070667849728"
         ],
         "data":null,
         "geocoding":{
            "lat":"37.9410341",
            "long":"-121.9357925"
         },
         "evidence":[
            {
               "id":"7b061f10-a9d6-11ea-8967-ad0afbbe1303",
               "incident_id":"7b060ec0-a9d6-11ea-ab9b-7579ddf3de22",
               "url":"https:\/\/twitter.com\/CorinneAllen20\/status\/1268000716884283393",
               "video_status":"ok",
               "created_at":"2020-06-08T22:22:04.000000Z",
               "updated_at":"2020-06-08T22:22:08.000000Z",
               "video":[
                  {
                     "id":"56fd7bd0-a872-11ea-aac7-c39e12942905",
                     "evidence_url":"https:\/\/twitter.com\/CorinneAllen20\/status\/1268000716884283393",
                     "title":"Corinne Allen - 100% peaceful protest in Clayton, CA. Protestors gassed at least 5 or 6 times by police. One time they threw it on dry grass and a fire was started because of it.",
                     "description":"100% peaceful protest in Clayton, CA. Protestors gassed at least 5 or 6 times by police. One time they threw it on dry grass and a fire was started because of it. https:\/\/t.co\/V5tIwklW2t",
                     "site":"Twitter",
                     "url":"https:\/\/twitter.com\/CorinneAllen20\/status\/1268000716884283393",
                     "duration":"45.00",
                     "tags":[

                     ],
                     "thumbnail":"https:\/\/pbs.twimg.com\/ext_tw_video_thumb\/1268000647032434688\/pu\/img\/Q44eGuvzWI1_aTfC.jpg?name=orig",
                     "streams":[
                        {
                           "url":"https:\/\/video.twimg.com\/ext_tw_video\/1268000647032434688\/pu\/vid\/1280x720\/KdlgZ6mshh71XKjJ.mp4?tag=10",
                           "format":"http-2176 - 1280x720",
                           "format_note":"",
                           "extension":"mp4",
                           "height":720,
                           "width":1280,
                           "fmt_id":"http-2176",
                           "filesize":null,
                           "filesize_pretty":"-",
                           "has_audio":true,
                           "has_video":true,
                           "is_hd":false
                        },
                        {
                           "url":"https:\/\/video.twimg.com\/ext_tw_video\/1268000647032434688\/pu\/vid\/640x360\/zQkgCgIMcaByobGt.mp4?tag=10",
                           "format":"http-832 - 640x360",
                           "format_note":"",
                           "extension":"mp4",
                           "height":360,
                           "width":640,
                           "fmt_id":"http-832",
                           "filesize":null,
                           "filesize_pretty":"-",
                           "has_audio":true,
                           "has_video":true,
                           "is_hd":false
                        },
                        {
                           "url":"https:\/\/video.twimg.com\/ext_tw_video\/1268000647032434688\/pu\/vid\/480x270\/AfQ3Oeyz7nh-i5km.mp4?tag=10",
                           "format":"http-256 - 480x270",
                           "format_note":"",
                           "extension":"mp4",
                           "height":270,
                           "width":480,
                           "fmt_id":"http-256",
                           "filesize":null,
                           "filesize_pretty":"-",
                           "has_audio":true,
                           "has_video":true,
                           "is_hd":false
                        }
                     ],
                     "created_at":"2020-06-07T03:52:42.000000Z",
                     "updated_at":"2020-06-07T03:52:42.000000Z"
                  }
               ]
            },
            {
               "id":"7b062fa0-a9d6-11ea-87a7-b5559c6feb65",
               "incident_id":"7b060ec0-a9d6-11ea-ab9b-7579ddf3de22",
               "url":"https:\/\/twitter.com\/CliffBraun\/status\/1268038070667849728",
               "video_status":"ok",
               "created_at":"2020-06-08T22:22:04.000000Z",
               "updated_at":"2020-06-08T22:22:08.000000Z",
               "video":[
                  {
                     "id":"584b54a0-a872-11ea-8c7d-1743123c8ebe",
                     "evidence_url":"https:\/\/twitter.com\/CliffBraun\/status\/1268038070667849728",
                     "title":"Cliff Braun - .@ClaytonPDCA .@ConcordPD  really out here shooting people's kids with tear gas and rubber bullets for being out past 6:30. Also good job with fire safety.",
                     "description":".@ClaytonPDCA .@ConcordPD  really out here shooting people's kids with tear gas and rubber bullets for being out past 6:30. Also good job with fire safety. https:\/\/t.co\/uGiuOI8WgF",
                     "site":"Twitter",
                     "url":"https:\/\/twitter.com\/CliffBraun\/status\/1268038070667849728",
                     "duration":"91.05",
                     "tags":[

                     ],
                     "thumbnail":"https:\/\/pbs.twimg.com\/ext_tw_video_thumb\/1268036643119742977\/pu\/img\/FHcaYJY06kofdFk3.jpg?name=orig",
                     "streams":[
                        {
                           "url":"https:\/\/video.twimg.com\/ext_tw_video\/1268036643119742977\/pu\/vid\/1280x720\/bNSsmW8MfxK-NMKx.mp4?tag=10",
                           "format":"http-2176 - 1280x720",
                           "format_note":"",
                           "extension":"mp4",
                           "height":720,
                           "width":1280,
                           "fmt_id":"http-2176",
                           "filesize":null,
                           "filesize_pretty":"-",
                           "has_audio":true,
                           "has_video":true,
                           "is_hd":false
                        },
                        {
                           "url":"https:\/\/video.twimg.com\/ext_tw_video\/1268036643119742977\/pu\/vid\/640x360\/t9AT19hE3kuyOKcT.mp4?tag=10",
                           "format":"http-832 - 640x360",
                           "format_note":"",
                           "extension":"mp4",
                           "height":360,
                           "width":640,
                           "fmt_id":"http-832",
                           "filesize":null,
                           "filesize_pretty":"-",
                           "has_audio":true,
                           "has_video":true,
                           "is_hd":false
                        },
                        {
                           "url":"https:\/\/video.twimg.com\/ext_tw_video\/1268036643119742977\/pu\/vid\/480x270\/oMBisNPO_MNs4kG3.mp4?tag=10",
                           "format":"http-256 - 480x270",
                           "format_note":"",
                           "extension":"mp4",
                           "height":270,
                           "width":480,
                           "fmt_id":"http-256",
                           "filesize":null,
                           "filesize_pretty":"-",
                           "has_audio":true,
                           "has_video":true,
                           "is_hd":false
                        }
                     ],
                     "created_at":"2020-06-07T03:52:44.000000Z",
                     "updated_at":"2020-06-07T03:52:44.000000Z"
                  }
               ]
            }
         ]
      }
   ],
   "meta":{
      "about":[
         "8 minutes and 46 seconds is the length of time associated with the killing of George Floyd,",
         "who died in police custody after police officer Derek Chauvin knelt on his neck for roughly eight minutes.",
         "This repo provides and API and archives acts of assault by public servants to American Citizens during non-violent acts of protest."
      ],
      "more":[
         "\u2022 This project does not condone acts aggression of any parties",
         "\u2022 This project is meant to enable others to share their voice and stand-up against acts of violence by public servants",
         "\u2022 This project intends to fight censorship by encouraging all to get involved and mirror this data, download the media, and fight for progress",
         "\u2022 This project is not anti-police",
         "\u2022 This project is a public work dedicated to all of humanity, regardless of race, creed, or borders."
      ],
      "get_involved":{
         "reddit":"https:\/\/www.reddit.com\/r\/2020PoliceBrutality\/",
         "collaboration":"https:\/\/github.com\/2020PB\/police-brutality"
      }
   }
}

Also think about making use of filtering if needed

May not be needed as data is cached locally and is filterable.


Add @EnableTestBinder annotation

Added the @EnableTestBinder annotation to import TestChannelBinderConfiguration for enabling TestBinder. This was decided in issue #2931.
Replaced @Import(TestChannelBinderConfiguration.class) with @EnableTestBinder in the tests.

@kutmk Could you also add some documentation in the reference docs for this?

@sobychacko
I have updated the copyright and author tags, added Javadoc, and also tried rewriting the reference docs.


Can no longer build off dev branch

The application does not appear to work for me from a fresh dev pull.
This is my init script:
cd ~/Watcharr

rm -rf ./server/ui
npm i && npm run build && mv ./build ./server/ui

cd server
rm -f ./watcharr
go mod download && GOOS=linux go build -o ./watcharr

sleep 3; xdg-open http://localhost:3000 &
./watcharr

The application output is
time=2024-03-01T18:03:45.809-06:00 level=INFO msg="Watcharr Starting"
time=2024-03-01T18:03:45.810-06:00 level=INFO msg="Logging level set" logging_level=INFO
time=2024-03-01T18:03:45.814-06:00 level=INFO msg="No users found.. creating setup routes."
time=2024-03-01T18:03:45.814-06:00 level=ERROR msg="IGDB init client id and or secret not provided"
Listening on <IP_ADDRESS>:3000
WATCHARR v1.34.0

The landing page immediately redirects to http://localhost:3000/login?again=1 and any time I try to log in or create a new user, the server log adds a new WATCHARR v1.34.0 line.
I've tried clearing my cache/private window/manually deleting server data, but no success.

Hi @stephaje, sorry you're having trouble with this.
Something is definitely wrong, I tried it out myself and get the same issue, though strangely it seems to work when built in a docker container.
Looks like it might not be registering its routes properly (I get 404s from the ui to any /api requests and no logs saying its created them).
I'll keep looking into this and try to get it working, will let you know.

Oh @stephaje, I should have read my own guide more thoroughly, we have to go to http://localhost:3080.
Let me know if that works for you.
Sorry for the confusion if it does, the log in console that says Listening on <IP_ADDRESS>:3000 is for the UI server, which when started through the backend (in production mode), needs to be accessed through the backend (otherwise api requests on the client will try to go to the wrong address).

Yeah @IRHM, that was it. I had an inkling it was on me, but I just could not figure it out yesterday. I'll take a look at updating the startup logging to also call out :3080 as I start prototyping the Plex Oauth stuff today.


Use Browser Datetime Format

Bug
The Invitation Management section (and perhaps other sections) include dates when a user was invited. These dates are in European format (DD/MM/YYYY), but should be in messed-up US-format (MM/DD/YYY), based on browser settings.
To Reproduce
Steps to reproduce the behavior:

Go to My Organization
Click on the Invitation Management Tab
Scroll down to any of the invitations.
See the dates in European format

Expected behavior
Expected date format to follow the browser settings, if possible.
Screenshots

Desktop (please complete the following information):

Win10 FF 73

It appears the date format is hard coded as DD/MM/YYYY in the WorksiteRequest, InvitationRequest, and a couple other models.  Would you prefer I update the format to "MM/DD/YYYY" or a true localized date method, eg, moment(XXXXX).toLocalString() or new Date().toLocaleDateString()?

I would say use the locale.

I'm pretty sure this has been solved. Closing.


Add Explicit Dependency to App Gateway

Resolves 2598
What is being addressed
This adds an explicit dependency to the app gateway so that it waits until the private link has been set up. The hope is that this prevents the situations where deployments result in an app gateway returning 502 errors.

Yup, see https://github.com/microsoft/AzureTRE/blob/main/templates/core/terraform/main.tf#L89.

As per conversation elsewhere let's keep this as a dependency, see if the issue goes away, and then look to improve the fix later.

/test-extended

/test-extended

/test-destroy-env

/test-extended

/test-destroy-env

/test

/test-destroy-env

/test

/test

/test-extended

/test

/test-force-approve


refactor(DOMUtils): remove isElementOnTop util

Remove the isElementOnTop DOM util as the util is only used to check whether the Chart component should be updated. The checks performed by the utility force layout/reflow (for a
comprehensive list of properties or methods that force layout/reflow see:  https://gist.github.com/paulirish/5d52fb081b3570c81e3a) and as such shouldn't be used to check whether a component should be updated. The util also always returns true if an element is off the screen which completely renders the utility useless if used as a should component
update condition.

Look legit as well :D
✘ Dashboard Create service tests "before each" hook for "increments CPU usage when service is started"
✘ Dashboard Create service tests "after each" hook for "increments CPU usage when service is started"
✘ Dashboard Delete service tests "before each" hook for "decrements CPU usage when service is stopped"

And that one just looks to be flaky
✘ Universe uses advanced install to deploy a community package

The test failures seem unrelated... will trigger another run.
Error: App '/c7e6d1c373974be8bebcbd02d70307e4/dashboard-test-service' does not exist

Alfred would you be so kind and retest this one please?

Alfred retest this one please

Alfred retest this one please


Adding instructions for use of open router

As discussed in Issue 1099 adding the support for Open Router and models there.
Good news. LLama3 8B is much better then LLama 2 70 B was :)

Hey, community! ❤
We'd love to get your help and insights on this PR. If any of you use OpenRouter and are willing to give this a spin and test it, we'd highly appreciate that! Feel free to follow @zigabrencic's instructions in this PR, and let us know if this works well or if you encounter any issues!

tested this and can confirm it works - merging now. thanks @zigabrencic