pip source fails to track requirements with setuptools_scm

See original issue on GitLab
In GitLab by [Gitlab user @nanonyme] on Oct 1, 2019, 20:10
Summary
pip source ignores setuptools_scm because it breaks convention and uses underscores instead of dashes in filenames. pip source should use looser regular expression or better yet move to pip freeze
Steps to reproduce
Have an element with local source requirements.txt which contains requests and setuptools_scm (or setuptools-scm, doesn't matter).
What is the current bug behavior?
pip will download setuptools-scm as setuptools_scm.version.extension so pip source will not see it and omits it in track.
What is the expected correct behavior?
pip source can track setuptools_scm
Relevant logs and/or screenshots
Possible fixes
Other relevant information

BuildStream version affected: 1.4.1, master.

In GitLab by [Gitlab user @nanonyme] on Oct 1, 2019, 20:12
changed the description

In GitLab by [Gitlab user @cs-shadow] on Oct 10, 2019, 12:54
I am unable to reproduce this. I tried with both versions of spelling as you suggested, and was able to bst source track successfully in both cases. I'm including the example I've used for testing at the bottom of this message. Will appreciate if you can try that and let me know if that works for you.
Also, if you have a sample .bst file where this is failing, I'd like to take a look as well, as I'm pretty sure we added tests for this sort of stuff.

As a sidenote, I find it a bit odd to see setuptools_scm as a runtime dependency. In my experience, it is usually only needed during build time.

Here's a minimal example that I used:
# test.bst
kind: import
sources:
- kind: local
  path: files/test
- kind: pip
  requirements-files:
  - requirements.txt

# files/test/requirements.txt
setuptools-scm

In GitLab by [Gitlab user @nanonyme] on Oct 10, 2019, 13:17
Hm, so it really ended up in ref in your test so it gets downloaded by pip source for build? I'll need to re-test with your sample. For me bst track silently omitted it from ref.

In GitLab by [Gitlab user @cs-shadow] on Oct 10, 2019, 13:30
Yes, in both cases I ended up with ref: setuptools_scm==3.3.3 in my .bst file, and can verify that .bst_pip_downloads/setuptools_scm-3.3.3.tar.gz is part of the output after building it and checking it out.

In GitLab by [Gitlab user @cs-shadow] on Jul 17, 2020, 20:04
I'll close this since it can't be reproduced.
If by chance this is indeed still happening, please open an issue at https://gitlab.com/BuildStream/bst-plugins-experimental, where this plugin now lives.


fixed clone dir logic and added more tests

The logic for resolving where to put cloned data was inconsistent and wrong, I implemented it. I fixed it and added more tests, one for each case.

Codecov Report

Merging #20 (965bb72) into main (eb4f4ce) will increase coverage by 0.22%.
The diff coverage is 50.00%.

@@            Coverage Diff             @@
##             main      #20      +/-   ##
==========================================
+ Coverage   64.80%   65.02%   +0.22%
==========================================
  Files           5        5
  Lines         949      955       +6
==========================================
+ Hits          615      621       +6
  Misses        334      334

Impacted Files
Coverage Δ

doltcli/dolt.py
58.61% <50.00%> (+0.34%)
:arrow_up:

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update eb4f4ce...965bb72. Read the comment docs.


cni: always enable ipv6

Pull Request

[x] Make sure you have followed Kube-OVN Code Style.

What type of this PR
Examples of user facing changes:

Features
Bug fixes
Docs
Tests

Which issue(s) this PR fixes
Fixes failure in ipv6/dual clusters running in docker.
#4417

@oilbeater Please review this PR.


Incorrect input variable map formatting

Using a remote data lookup to pull data from existing test infrastructure and feeding the output to terratest.
The output map is a single level, of the same type:
vpc = {
  "account_id" = "xxx"
  "aws_region" = "xxx"
  "default_security_group_id" = "sg-xxx"
  "deploy_key" = "xxx-key"
  "igw_id" = "igw-xxx"
  "vpc_cidr" = "<IP_ADDRESS>/16"
  "vpc_env" = "dev"
  "vpc_id" = "vpc-xxx"
  "vpc_name" = "terratest-use01"
}

This is the function stage called to build an EC2 instance. The VPC and subnet_id data is pulled from the remote data lookup, the rest of the input variables are sourced from ec2.tfvars.
func testEc2(t *testing.T, tfdir string, subnetID interface{}, vpc interface{}) {

	terraformOptions := &terraform.Options{
		// The path to where our Terraform code is located
		TerraformDir: tfdir,

		// Variables to pass to our Terraform code using -var options
		Vars: map[string]interface{}{
			"vpc": vpc,
			"subnet_id": subnetID,
		},
		// Variables to pass to Terraform using -var-file option
		VarFiles: []string{"ec2.tfvars"},
	}

	// This will run `terraform init` and `terraform apply` and fail the test if there are any errors
	terraform.InitAndApply(t, terraformOptions)
}

This fails as terratest does not format the map variables correctly, instead treating the map as a string:
TestTerraformAwsEc2 2020-02-25T12:16:49Z command.go:158: Error: Invalid index

TestTerraformAwsEc2 2020-02-25T12:16:49Z command.go:158:

TestTerraformAwsEc2 2020-02-25T12:16:49Z command.go:158:   on main.tf line 72, in resource "aws_instance" "this":

TestTerraformAwsEc2 2020-02-25T12:16:49Z command.go:158:   72:   key_name                    = var.keypair != null ? var.keypair : var.vpc["deploy_key"]

TestTerraformAwsEc2 2020-02-25T12:16:49Z command.go:158:     |----------------

TestTerraformAwsEc2 2020-02-25T12:16:49Z command.go:158:     | var.vpc is "{\"default_security_group_id\" = \"sg-xxx\", \"vpc_env\" = \"dev\", \"deploy_key\" = \"xxx-key\", \"vpc_cidr\" = \"<IP_ADDRESS>/16\", \"vpc_name\" = \"terratest-use01\", \"igw_id\" = \"igw-xxx\", \"vpc_id\" = \"vpc-xxx\", \"account_id\" = \"xxx\", \"aws_region\" = \"us-east-1\"}"

This is further seen looking at the arguments passed to Terraform:
TestTerraformAwsEc2 2020-02-25T12:16:45Z command.go:87: Running command terraform with args [apply -input=false -auto-approve -var vpc={"default_security_group_id" = "sg-xxx", "vpc_env" = "dev", "deploy_key" = "xxx-key", "vpc_cidr" = "<IP_ADDRESS>/16", "vpc_name" = "terratest-use01", "igw_id" = "igw-xxx", "vpc_id" = "vpc-xxx", "account_id" = "xxx", "aws_region" = "us-east-1"} -var subnet_id=subnet-xxx -var-file ec2.tfvars -lock=false]

Based on the terraform basic example it seems passing a map as an input variable should be supported, but the map formatting does not conform to what Terraform requires:
-var='image_id_map={"us-east-1":"ami-abc123","us-east-2":"ami-def456"}'

versus
-var vpc={"default_security_group_id" = "sg-xxx", "vpc_env" = "dev", "deploy_key" = "xxx-key", "vpc_cidr" = "<IP_ADDRESS>/16", "vpc_name" = "terratest-use01", "igw_id" = "igw-xxx", "vpc_id" = "vpc-xxx", "account_id" = "xxx", "aws_region" = "us-east-1"}

Did you set the type parameter accordingly in your Terraform code on the vpc input variable?

Hi Yevgeniy,
Thanks for the insight.
I did not have type constraints set for the vpc variable. Once set, it worked as expected so that was my error.


only show detailed oopjit backend time under verbose trace with oopjit enabled

LGTM.
Get Outlook for Androidhttps://aka.ms/ghei36

From: Michael Holman<EMAIL_ADDRESS>Sent: Tuesday, September 20, 2016 7:44:14 PM
To: Microsoft/ChakraCore
Cc: Kunal Pathak; Mention
Subject: Re: [Microsoft/ChakraCore] only show detailed oopjit backend time under verbose trace with oopjit enabled (#1615)
Assigned #1615https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FMicrosoft%2FChakraCore%2Fpull%2F1615&data=02|01|kunal.pathak%40microsoft.com|0d9a5902182a4efd534708d3e1c92d27|72f988bf86f141af91ab2d7cd011db47|1|0|636100226579499996&sdata=7%2BL4ZS4nM9af8e8KHnvrbXA2mGAvaxI%2BQf9HYRwXX7w%3D to @kunalspathakhttps://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fkunalspathak&data=02|01|kunal.pathak%40microsoft.com|0d9a5902182a4efd534708d3e1c92d27|72f988bf86f141af91ab2d7cd011db47|1|0|636100226579510009&sdata=5cpiPb8SeJGsPY1rDd0lto2BJDTB0PvoSUTLrwqdsp0%3D.

You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHubhttps://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FMicrosoft%2FChakraCore%2Fpull%2F1615%23event-796659418&data=02|01|kunal.pathak%40microsoft.com|0d9a5902182a4efd534708d3e1c92d27|72f988bf86f141af91ab2d7cd011db47|1|0|636100226579510009&sdata=CVY4FHdEnB3LVDlpyxvE30wrT1BGbsFDWQJ%2BXNPNM64%3D, or mute the threadhttps://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FAL6NfBm-8U7lzMYymnqbMoJv2mvwYdyRks5qsJn-gaJpZM4KCU_r&data=02|01|kunal.pathak%40microsoft.com|0d9a5902182a4efd534708d3e1c92d27|72f988bf86f141af91ab2d7cd011db47|1|0|636100226579510009&sdata=EVEva1VtmdwWhrwwYPYQD1qvyRAz3ddC2kQxYWxWajo%3D.


Fix checking PR body & improve error message in CD

Description:

There is a minor edge-case where the CD will fail updating the ci/dependabot-updates branch (upon a release), this minor fix sorts out that issue.
(This edge-case was found in Materials-Consortia/optimade-python-tools where similar workflows are used.)
Fixes #319.
It also adds a more informative error message for what steps to do next if the CD workflow fails in a particular step.
Type of change:

[X] Bug fix.
[ ] New feature.
[X] Documentation update.

Checklist:

This checklist can be used as a help for the reviewer.

[ ] Is the code easy to read and understand?
[ ] Are comments for humans to read, not computers to disregard?
[ ] Does a new feature has an accompanying new test (in the CI or unit testing schemes)?
[ ] Has the documentation been updated as necessary?
[ ] Does this close the issue?
[ ] Is the change limited to the issue?
[ ] Are errors handled for all outcomes?
[ ] Does the new feature provide new restrictions on dependencies, and if so is this documented?

Comments:

Is there a method to test this?

Is there a method to test this?

The way I tested it originally was locally, to see which method would work - using the gh cli to download particular PR body texts and testing different ways to format it and comparisons in order to ensure that the logic here works.
Essentially the text will be changed once someone clicks the checkboxes - and I think there are some other changes happening automatically if someone accidentally "edits" the body - even without changing anything. The latter is the edge case I suspect happened in the other repository, where the current solution didn't work. This one seems to have been working so far in the other repository :)

Is there a method to test this?

The way I tested it originally was locally, to see which method would work - using the gh cli to download particular PR body texts and testing different ways to format it and comparisons in order to ensure that the logic here works. Essentially the text will be changed once someone clicks the checkboxes - and I think there are some other changes happening automatically if someone accidentally "edits" the body - even without changing anything. The latter is the edge case I suspect happened in the other repository, where the current solution didn't work. This one seems to have been working so far in the other repository :)

Thank you for the explanation. Then I think it is safe and good to go with this here as well-


Individual: Organize edit form fields and tabs

Is your feature request related to a problem? Please describe.
User can click the name of the existing Individual and access the Edit page.
The edit page to have 2 tabs:

Demographics
Contact

Acceptance Criteria
GIVEN I am a logged in user

AND I navigate to the Form Library main navigation

AND I click on the Individual from dropdown

AND I expect to arrive at the Individual List View page

WHEN I click on the Actions column next to their record, I have the option to EDIT that record

THEN I see the edit page with list of field inputs to add data. The fields are divided into 2 tabs:
Tab one Demographics:
    - First Name (charField)
    - Last Name (charField)
    - Gender → Sex (Male, Female)
    - Age (calculated)
    - Date of birth (calendar pop-up)
    - Household ID: dropdown menu showing Households added; single select field.
    - Head of Household (boolean): checkbox
    - {{Workflow level 1}} This is the custom label for workflow level 1 like Program. This will be a dropdown showing all the programs
Tab 2: Contact
    - ID Type (charField)
    - ID number (charField)
    - Primary number (Integer)
    - Secondary number (integer)
    - Signature (boolean): checkbox
    - Photo (Image upload)

Additional context

@myugetsu another ticket to organize the fields in 2 tabs and add the fields listed above in the ticket


KeyError:636 -> BaseException

I am getting below error while using Redis clustered cache in Azure :
**BaseException Traceback (most recent call last): File "/home/site/wwwroot/.python_packages/lib/site-packages/rediscluster/client.py", line 609, in _execute_command node = self.connection_pool.get_node_by_slot( File "/home/site/wwwroot/.python_packages/lib/site-packages/rediscluster/connection.py", line 634, in get_node_by_slot nodes_in_slot = self.nodes.slots[slot] KeyError: 636

Result: Failure
Exception: AttributeError: 'NoneType' object has no attribute 'disconnect'
Stack: File "/azure-functions-host/workers/python/3.8/LINUX/X64/azure_functions_worker/dispatcher.py", line 406, in _handle__invocation_request
call_result = await self._loop.run_in_executor(
File "/usr/local/lib/python3.8/concurrent/futures/thread.py", line 57, in run
result = self.fn(*self.args, **self.kwargs)
File "/azure-functions-host/workers/python/3.8/LINUX/X64/azure_functions_worker/dispatcher.py", line 648, in _run_sync_func
return ExtensionManager.get_sync_invocation_wrapper(context,
File "/azure-functions-host/workers/python/3.8/LINUX/X64/azure_functions_worker/extension.py", line 215, in _raw_invocation_wrapper
result = function(**args)
File "/home/site/wwwroot/fn_test_clustered_redis/__init__.py", line 51, in main
ClusterFeatureCache().write(key, value)
File "/home/site/wwwroot/fn_test_clustered_redis/__init__.py", line 38, in write
self._cache.set(id, value)
File "/home/site/wwwroot/.python_packages/lib/site-packages/redis/client.py", line 1801, in set
return self.execute_command('SET', *pieces)
File "/home/site/wwwroot/.python_packages/lib/site-packages/rediscluster/client.py", line 555, in execute_command
return self._execute_command(*args, **kwargs)
File "/home/site/wwwroot/.python_packages/lib/site-packages/rediscluster/client.py", line 713, in _execute_command
connection.disconnect()**

Closing due to inactivity. This is either an old client version, or the redis cluster itself is not working properly as the slots cache is not setup properly due to the cluster being i a bad or broken state, or maybe an unitialized state.


Stubloader.loadFromJar() cpatiable with non-ascii username

Stubloader.loadFromJar() compatiable with user name with non-ascii username
https://github.com/jnr/jffi/issues/70

This seems fine to me. Do you think you could make a test for this behavior from #70?


Is it possible to configure to which types database columns are introspected?

We use kysely-codegen and we would like to use those generated types later in the code fe. in mapping domain models to db, but they often are translated to diffrent types we want and we struggle with type conversions. One source of truth would be superior too. Lets say int id is introspected to Generated<number> (we would like number type) or decimals are introspected to Numeric (we would like just number). How this can be done in convenient way and is it possible?

Upvote & Fund

We're using Polar.sh so you can upvote and help fund this issue.
We receive the funding once the issue is completed & confirmed by you.
Thank you in advance for helping prioritize & fund our backlog.

I'm not entirely sure I understood your problem correctly, but I have a feeling it's the same one we had when we started using kysely and kysely-codegen.
Have you tried using Selectable, Insertable and Updateable wrappers as described here https://kysely.dev/docs/getting-started#types?


UTXO management strategy

Related to #1467 and #1134
This error message keeps happening:
{"message":"Contract setup failed: Failed to build party params: InsufficientFunds { needed: 518211, available: 291747 }"}

We need a UTXO management strategy

I'm not sure anymore we need a UTXO management strategy.
Maybe we should not allow to parallelize CFD creation, that way we should be able to guarantee that have utxos available.

I think we can also manually tell BDK about our new UTXOs, directly after signing and thus be quicker and avoid the wait for the sync?

Do you mean something like this?

start CFD setup 1: starts and gets UTXO, creates new change UTXO
tell wallet about change UTXO
start CFD setup 2: starts and gets UTXO, creates new change UTXO
tell wallet about change UTXO
setup 1 finishes and publishes tx lock
setup 2 finishes and publishes tx lock

A problem is if setup 1 fails, setup 2 will also fail because the change UTXO does not exist.
I think best if if we can delay step 2 as long as possible to have high certainty that the setup was successful.

Yes that was the idea.
It shouldn't fail though and if it does, we should fix the bugs around it.
Sequencing the setups is another band-aid solution that hurts user experience. I'd rather explore the others first, including requiring enough UTXOs to be present.
Number of UTXOs is probably also a metric we should monitor.

I don't think this is a bug. Closing for now until we decide we need this.


Add ability to override command for main container

This simple change adds ability to override entrypoint for the container.

Story behind the change: (if someone is interested or have similar issue)
I encountered strange issue while using volumes based on NFS as a storage for n8n and n8n was unable to execute entrypoint script due to immutable .snapshot directory on the mounted filesystem, so the only way to temporary hack it was to override entrypoint with my own version that does chown optionally and runs as root:
          command:
            - tini
            - --
            - /bin/sh
            - -c
            - chmod o+rx /root; chown -R node /root/.n8n || true; chown -R node /root/.n8n; ln -s /root/.n8n /home/node; chown -R node /home/node || true; node /usr/local/bin/n8n

For some strange reason GH doesn't see new commit and doesn't allow me to open another PR for the same branch... but I also got error that they're under heavy load, so let's wait and see if the commit will show up soon.

@tomaszkiewicz ping


Error whem importing SlobsConnection

When I try to import SlobsConnection, I have an error with AudioService.
  File "myscript.py", line 4, in <module>
    from pyslobs import SlobsConnection
  File "D:\Apps\Python\Python38-32\lib\site-packages\pyslobs\__init__.py", line 3, in <module>
    from .slobs.audioservice import AudioService
  File "D:\Apps\Python\Python38-32\lib\site-packages\pyslobs\slobs\audioservice.py", line 8, in <module>
    class AudioService(SlobsService):
  File "D:\Apps\Python\Python38-32\lib\site-packages\pyslobs\slobs\audioservice.py", line 18, in AudioService
    async def get_sources(self) -> list[AudioSource]:
TypeError: 'type' object is not subscriptable

Else, thanks for work.  :)

I have updated python to 3.9 and it works fine.

Interesting.
This code depends on PEP-585, which was only implemented in Python 3.9.
My understanding was it would be ignored by the Python interpreter in Python 3.8, and thus be no problem, but that understanding was clearly wrong.
I need to either stop using this form of type-hinting, or explicitly specify that Python 3.9 is the minimum version acceptable.
Thanks for the feedback.

I have taken the lazy way out, and specified that Python 3.9 is required.
However, if there are users who have a good reason to need Python 3.8 or 3.7 support, please raise an issue and I will look into it.

When ı run this code, output is "Waiting for luamacros script...".
Can you help me?

@mrtylmz555: If you have an issue unrelated to Python 3.9 being required for, please create a new issue in GitHub.
(Short version: This code does not use lua or luamacros, and is not the cause of that output. You might have installed some software that uses luamacros to rebind hotkeys on a second keyboard and link them to directly to StreamLabs OBS, or to a Python script that uses this package to achieve an effect on StreamLabs OBS, but I can't imagine a scenario where my code would output that. If you do create an issue, please give a lot more context about the software you are using and where the output appeared.)


Docs API menu covers page text

Environment:

Python version: n/a
Jinja version: 3.1.x
Chrome version: 108
macOS Ventura 13.1
Screen resolution: 1512x982

To reproduce:

Open https://jinja.palletsprojects.com/en/3.1.x/api/
Look at the left hand menu

Actual result:
The menu items cover the main page content

Expected result:
Some sort of wrapping or truncating so menu items don't obscure the page text

Duplicate

Sorry for the noise. I didn't find the duplicate beforehand, but for future reference:
Duplicate of https://github.com/pallets/jinja/issues/1751 and https://github.com/pallets/pallets-sphinx-themes/issues/64, with a PR at https://github.com/pallets/pallets-sphinx-themes/pull/65.


Run experiments with valuation misreporting

Test influence of manipulated valuation reports w/o DP
Test influence of manipulated valuation reports with DP:

online attack
offline attack

Compare these to baselines and baseline settings with DP

Ran experiments and published results in e0da218.
Omitted offline attack, since I didn't find distribution parameters for an offline attack yet that are even remotely as dangerous as in the online attack case. Furthermore the computations take quite long on my hardware :)


Display error (and fail) when trying to pay a money request and the displayed amount does not match the actual one

cc @mountiny, @Julesssss
Details

Fixed Issues
$ https://github.com/Expensify/Expensify/issues/245570
Tests
To fully test this you'll need two accounts with a gold wallet (and a verified deposit account or debit card).

Log into account A and request money from account B

Log into account B and see the money request. Go offline on account B.

Go back to account A (online) and request some more money from B. The money request should get updated to the new amount.

Go back to B (offline). You should not see the updated amount in the money request.

From B (still offline), click Pay and, on the next option, select Pay with Expensify. You should now see the translucent paid request. If you get stuck here, that means you have yet to go through the KYC flow. On Dev, you can skip it by removing these lines. On staging, go back online and complete it once before testing this.:

Go back online and wait a few seconds. You should see the error:

Click the X to remove the error. The request should go back to its previous state:

Repeat the process, but choosing I'll settle up elsewhere instead of Pay with expensify. The results should be the same.

[x] Verify that no errors appear in the JS console

Offline tests
Included above
QA Steps
Same as tests

[ ] Verify that no errors appear in the JS console

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 / Chrome
[x] iOS / native
[x] iOS / 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 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] 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 correct English and approved by marketing by adding the Waiting for Copy label for a copy review on the original GH to get the correct copy.
[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 a new component is created I verified that:

[x] A similar component doesn't exist in the codebase
[x] All props are defined accurately and each prop has a /** comment above it */
[x] The file is named correctly
[x] The component has a clear name that is non-ambiguous and the purpose of the component can be inferred from the name alone
[x] The only data being stored in the state is data necessary for rendering and nothing else
[x] 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)
[x] 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)
[x] All JSX used for rendering exists in the render method
[x] 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

[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(themeColors.componentBG)

[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 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] I have checked off every checkbox in the PR author checklist, including those that don't apply to this PR.

Screenshots/Videos

Web

Desktop

iOS

Android

I'm having trouble with the Android emulator today 🤷

How can a user pay with Expensify while offline?

By following the steps above. The payment won't really happen until the user goes back online

I think I can't really use Pay with Expensify it needs a real account with some balance(maybe internal testing accounts). Though, I never tried it. Are there any doc/steps to complete the KYC for testers/C+?
But this PR can be tested without it. We can use I'll settle up elsewhere.

Ah, I think you are right, as you'll need an account with a full wallet and whatnot. You can test with I'll settle up elsewhere. The code in the backend is different, as it goes through a different path, but the App behavior is the same, and I tested both flows, and @madmax330 or @techievivek can do another pass if they want.

Ah, I think you are right, as you'll need an account with a full wallet and whatnot. You can test with I'll settle up elsewhere. The code in the backend is different, as it goes through a different path, but the App behaviour is the same, and I tested both flows, and @madmax330 or @techievivek can do another pass if they want.

I think we can skip the testing for Pay With Wallet, it should work same as for the other commands. The user needs to be US based so only those people who have Gold wallet can technically test. @Gonals

OFF HOLD!

@parasharrajat Let us know if you are able to test this one, thanks!

@parasharrajat Did you manage to test this?

@parasharrajat I will put this on my list to do tomorrow, no problem if you are busy with other stuff!

oof, quite weird, gonna have to look into this. Any ideas @Gonals ?

Hmm. Weird. Is it for specific amounts or something?

@parasharrajat can you test with fresh new accounts? Both the one you sending to and from.

@parasharrajat How did it go?

@parasharrajat, were you able to test?

@parasharrajat Get better soon!

@Gonals Just wanted to test this one, but maybe it would be good to ensure what wrong with IOU right now instead of adding more puzzle pieces to it.

Yep. This is still wonky, but the reasons seem to have changed. I'm just going to kill this PR and tackle the issue from scratch, as it seems to be different now.


Update branching model to support breaking product API changes

Currently all stable plugin versions reside in master. It means that the code in master must be compatible with 3 products and a range of supported product versions for each product. #328 most likely will bring some breaking API changes, that will make impossible to build a plugin JAR that will be compatible with old and new product versions. In order to keep maintaining all supported product versions separate release branches may need to be created.
For example, a new branch release/jira-plugin/3.0.x created from current master may be used to release bug fix plugin releases for Jira 9.13 and older, while master will be compatible with Jira 10.x and newer versions.
This task may be cancelled though if the code is possible to refactor in a way to keep it compatible with old and new REST implementations in the same branch - master.

New branching model:

master/dev branch

Jira: 10+ (not released yet) and Plugin version - 4+ on JDK 17.
Confluence: 9+ (not released yet) and Plugin version - 4+ on JDK 17.
Bitbucket: 9+ (not released yet) and Plugin version - 5+ on JDK 17.

release-1.x branch

Jira: 8.15.0 (EOL date: 2 Feb 2023) JDK 8, 11 - 9.5.0 (EOL date: 6 Dec 2024) on JDK 8, 11, 17. (Plugin version - 3.x.x)
Confluence: 7.10 (EOL date: Dec 15, 2022) JDK 8, 11 - 8.0.0-m90 (EOL date: TBD - end of 2024) JDK 8, 11. (Plugin version - 3.x.x)
Bitbucket: 7.6.0 (EOL date: Q1 calendar year 2023) on JDK 8, 11 - 8.8.0 (EOL date: 7 Feb 2025) on JDK 8, 11, 17. (Plugin version - 4.x.x)


Re-enable seccomp

In #117 we disabled seccomp because of a systemd bug. When https://github.com/systemd/systemd/pull/6763 is merged we should re-enable it again.

The mentioned PR wasn't merged in the end.


⚠ ClamAV has degraded performance

In 8c6fc3f, ClamAV (https://spamassassin.apache.org/) experienced degraded performance:

HTTP code: 200
Response time: 501 ms

Resolved: ClamAV performance has improved in 221a27a after 5 minutes.


[Bug]: Creating a table with vector column type, when creating index with Hnsw type, the service shutdown.

Is there an existing issue for the same bug?

[X] I have checked the existing issues.

Branch name
main
Commit ID
d8f8d37d
Other environment information
No response
Actual behavior
When creating a table with column type "vector, 3, float", and creating index with index_type=index.IndexType.Hnsw.
[critical] Invalid index parameter@src/storage/definition/index_hnsw.cpp:74
Unrecoverable error issued, stop the serverShutdown infinity server ...
Shutdown storage ...

Expected behavior
No response
Steps to reproduce
Function test code can be found in python/test/test_index.py `test_create_index_on_different_type_of_column`

Additional information
No response

Fixed.

It looks fixed.


SITES-17926: Implement "Custom Field" extensions for CF editor

Description
Simplify the use case to do the word count.
Motivation and Context
Validation is available OOB.
Screenshots (if appropriate):

Types of changes

[ ] Bug fix (non-breaking change which fixes an issue)
[x] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to change)

Checklist:

[x] I have signed the Adobe Open Source CLA.
[x] My code follows the code style of this project.
[x] My change requires a change to the documentation.
[x] I have updated the documentation accordingly.
[x] I have read the CONTRIBUTING document.

@lenaorobei , Everything seems fine to me; however, this example may not be as beneficial for developers as it excludes some crucial UI Extensibility features. Can we simulate external validation to retain all UI Extensibility features and incorporate additional functionality?


lib/path/tests: Fix property tests when "-n" is generated

Description of changes
When "-n" is generated by the property tests, it causes echo to not output the string since it's interpreted as an option. Apparently there's no good way to print "-n" with echo, so switching to printf instead
Thanks to @vcunat for reporting the original failure in the PR that introduced it
I love this, while the property tests didn't detect a mistake in the code implementation, they did detect a mistake in the test implementation!
This work is sponsored by Antithesis :sparkles:
Things done

[x] Successfully ran lib/path/tests/prop.sh 13110

I don't think so, from docs or test
$ printf %s --help
--help


Generate, download and run your VM simply

From Christian's https://github.com/gicmo/dot-devel/tree/master/vm-helper.
This PR brings it in our maintainer tool repo and adds a new step to request image builder to build the VM before downloading it.
Check the Readme for more details.
Here's a screenshot of the usage:

I'd be glad to have some feedback on this if you try to use it :smile:!

Couple of things to note:

It might be useful to preserve the history of the existing repo when importing the tools.  There's always useful knowledge in the history of these kinds of things.
I don't see a LICENSE in the existing repo.  Maybe we should ask @gicmo to add one or at least for permission before copying his code.

Couple of things to note:
* It might be useful to preserve the history of the existing repo when importing the tools.  There's always useful knowledge in the history of these kinds of things.

Thanks for noting this, I imported all the relevant commits from his repo.

* I don't see a LICENSE in the existing repo.  Maybe we should ask @gicmo to add one or at least ask for permission before copying his code.

Oh my.. Silly me! I hope I wasn't rude or anything, I've asked him on signal and let's wait for his opinion on the mater. Thanks!

License added.


feat: expect_... tactics for testing

feat: expect_failure, expect_failure_message, expect_goal and expect_hyp

What is your plan for how these overlap with guard_target and guard_hyp?

@semorrison To be honest, I wasn't aware of guard_hyp and guard_target.
But since you've asked me, I'd be in favor of keeping the expect_hyp and expect_goal tactics and dropping the others for the sake of naming standardization (along with the other expect_... tactics).

Can you check if guard_hyp and guard_target are used in mathlib outside the tests? I think we should ask @digama0 what he prefers here. Probably the right answer is to keep the existing ones, with the existing names, but possibly add a TODO in a comment suggesting we regularize all the names once the port is done.

Actually, @arthurpaulino, how about just remove expect_hyp and expect_goal for now. It would be good to get this merged sooner rather than later, as PRs like #318 need expect_failure as an alternative to fail_if_success.

bors merge


Tools

You can tell me which one tool will be good for learning compilation and deploy contract ? I don’t want ready generators

http://remix.ethereum.org. i think will be best for start


PED SnpReader not working?

Hello,
I am trying to run FaST-LMM single_snp() using PED/MAP files as input like so:
# Load FaST-LMM basic association test:
from fastlmm.association import single_snp
from pysnptools.snpreader import Ped

# Load snp data:
ped_file = "/home/conrad/Data/primary_project_3/gwas/H17_plink/biallelic_snps_full/biallelic_snps_full_w_pheno"

pheno_fn = "/home/conrad/Data/primary_project_3/gwas/H17_plink/biallelic_snps_full/biallelic_snps_full.pheno"

# Run basic association test:
results_df = single_snp(test_snps=Ped(ped_file), pheno=pheno_fn)

Unfortunately, I get the following error:
/home/conrad/anaconda2/lib/python2.7/site-packages/sklearn/cross_validation.py:44: DeprecationWarning: This module was deprecated in version 0.18 in favor of the model_selection module into which all the refactored classes and functions are moved. Also note that the interface of the new CV iterators are different from that of this module. This module will be removed in 0.20.
  "This module will be removed in 0.20.", DeprecationWarning)
/home/conrad/anaconda2/lib/python2.7/site-packages/pysnptools/snpreader/bed.py:42: FutureWarning: 'count_A1' was not set. For now it will default to 'False', but in the future it will default to 'True'
  warnings.warn("'count_A1' was not set. For now it will default to 'False', but in the future it will default to 'True'", FutureWarning)
Traceback (most recent call last):
  File "practice.py", line 26, in <module>
    results_df = single_snp(test_snps=Ped(ped_file), pheno=pheno_fn)
  File "/home/conrad/anaconda2/lib/python2.7/site-packages/fastlmm/association/single_snp.py", line 148, in single_snp
    pheno = _pheno_fixup(pheno, count_A1=count_A1).read()
  File "/home/conrad/anaconda2/lib/python2.7/site-packages/pysnptools/snpreader/snpreader.py", line 455, in read
    val = self._read(None, None, order, dtype, force_python_only, view_ok)
  File "/home/conrad/anaconda2/lib/python2.7/site-packages/pysnptools/snpreader/bed.py", line 213, in _read
    self._run_once()
  File "/home/conrad/anaconda2/lib/python2.7/site-packages/pysnptools/snpreader/bed.py", line 98, in _run_once
    self._row = SnpReader._read_fam(self.filename,remove_suffix="bed")
  File "/home/conrad/anaconda2/lib/python2.7/site-packages/pysnptools/snpreader/snpreader.py", line 658, in _read_fam
    iid = np.loadtxt(famfile, dtype = 'str',usecols=(0,1),comments=None)
  File "/home/conrad/.local/lib/python2.7/site-packages/numpy/lib/npyio.py", line 803, in loadtxt
    fh = iter(open(fname, 'U'))
IOError: [Errno 2] No such file or directory: '/home/conrad/Data/primary_project_3/gwas/H17_plink/biallelic_snps_full/biallelic_snps_full.pheno.fam'

Ignoring the deprecation warning, it seems as though snpreader is trying to use a .bed file, even though I am trying to use a .ped file as input, and calling the Ped() snpreader. My associated .map file is named the same as the .ped file (with the .map extension). Obviously, since I am not using a .fam file, it cannot find it. I am unsure why it is looking for a .fam file in the first place, however.
Note that when I check the type() of the ped_file object, it is reported as the correct class (snpreader ped).
Being new to FaST-LMM, I am wondering if this is an issue or whether I am overlooking something.
Any help is much appreciated.
Thank you,
Conrad Izydorczyk

Conrad,
Thanks for your question and thanks for using FaST-LMM. From the great info that you’ve provided, it looks like the problem is with reading your Pheno file, not your Ped file.
(When the program gets an input as a file name, it tries to read it with all the file readers. When they all fail, it – unfortunately – only gives the error message from the last reader, which is the Bed reader. This causes confusion and I’m thinking about the best way to fix it. In the meantime …)
If you use an explicit Pheno() reader, you should get a much more useful error message about what the pheno reader doesn’t like in your file.
Yours,
Carl
From<EMAIL_ADDRESS>Sent: Saturday, December 30, 2017 8:53 PM
To<EMAIL_ADDRESS>Cc<EMAIL_ADDRESS>Subject: [MicrosoftGenomics/FaST-LMM] PED SnpReader not working? (#24)
Hello,
I am trying to run FaST-LMM single_snp() using PED/MAP files as input like so:
Load FaST-LMM basic association test:
from fastlmm.association import single_snp
from pysnptools.snpreader import Ped
Load snp data:
ped_file = "/home/conrad/Data/primary_project_3/gwas/H17_plink/biallelic_snps_full/biallelic_snps_full_w_pheno"
pheno_fn = "/home/conrad/Data/primary_project_3/gwas/H17_plink/biallelic_snps_full/biallelic_snps_full.pheno"
Run basic association test:
results_df = single_snp(test_snps=Ped(ped_file), pheno=pheno_fn)
Unfortunately, I get the following error:
/home/conrad/anaconda2/lib/python2.7/site-packages/sklearn/cross_validation.py:44: DeprecationWarning: This module was deprecated in version 0.18 in favor of the model_selection module into which all the refactored classes and functions are moved. Also note that the interface of the new CV iterators are different from that of this module. This module will be removed in 0.20.
"This module will be removed in 0.20.", DeprecationWarning)
/home/conrad/anaconda2/lib/python2.7/site-packages/pysnptools/snpreader/bed.py:42: FutureWarning: 'count_A1' was not set. For now it will default to 'False', but in the future it will default to 'True'
warnings.warn("'count_A1' was not set. For now it will default to 'False', but in the future it will default to 'True'", FutureWarning)
Traceback (most recent call last):
File "practice.py", line 26, in
results_df = single_snp(test_snps=Ped(ped_file), pheno=pheno_fn)

File "/home/conrad/anaconda2/lib/python2.7/site-packages/fastlmm/association/single_snp.py", line 148, in single_snp
pheno = _pheno_fixup(pheno, count_A1=count_A1).read()

File "/home/conrad/anaconda2/lib/python2.7/site-packages/pysnptools/snpreader/snpreader.py", line 455, in read
val = self._read(None, None, order, dtype, force_python_only, view_ok)

File "/home/conrad/anaconda2/lib/python2.7/site-packages/pysnptools/snpreader/bed.py", line 213, in _read
self._run_once()

File "/home/conrad/anaconda2/lib/python2.7/site-packages/pysnptools/snpreader/bed.py", line 98, in _run_once
self._row = SnpReader._read_fam(self.filename,remove_suffix="bed")

File "/home/conrad/anaconda2/lib/python2.7/site-packages/pysnptools/snpreader/snpreader.py", line 658, in _read_fam
iid = np.loadtxt(famfile, dtype = 'str',usecols=(0,1),comments=None)

File "/home/conrad/.local/lib/python2.7/site-packages/numpy/lib/npyio.py", line 803, in loadtxt
fh = iter(open(fname, 'U'))

IOError: [Errno 2] No such file or directory: '/home/conrad/Data/primary_project_3/gwas/H17_plink/biallelic_snps_full/biallelic_snps_full.pheno.fam'
Ignoring the deprecation warning, it seems as though snpreader is trying to use a .bed file, even though I am trying to use a .ped file as input, and calling the Ped() snpreader. My associated .map file is named the same as the .ped file (with the .map extension).
Being new to FaST-LMM, I am wondering if this is an issue or whether I am overlooking something.
Any help is much appreciated.
Thank you,
Conrad Izydorczyk
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHubhttps://nam01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FMicrosoftGenomics%2FFaST-LMM%2Fissues%2F24&data=02|01||31736486d6d0460bbb2808d54ff9a4b4|84df9e7fe9f640afb435aaaaaaaaaaaa|1|0|636502855977699825&sdata=xS5rdizMycm5JQBrRtaFEqm49rOEuv4uX8m%2FJUwr%2B5c%3D&reserved=0, or mute the threadhttps://nam01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FAGPuv6Ze_ZEbBh2nQzhqbzJapIX6VElnks5tFvccgaJpZM4RPwPg&data=02|01||31736486d6d0460bbb2808d54ff9a4b4|84df9e7fe9f640afb435aaaaaaaaaaaa|1|0|636502855977699825&sdata=LvzmYhbgJ3rwaK7hCQOBzBXY%2BP6H7Efr8o99Zd1MA0A%3D&reserved=0.

Thank you for your response - I tried it with the Pheno() reader and indeed, found an issue in my phenotypes file. I fixed the issue and no longer get this error.
Best,
Conrad Izydorczyk


Support linking of tasks together

As described in  #92, this pull request adds the ability to link too tasks together in order to be able to explain the relation between too tasks and therefore organize better the work. This also simplify the browsing between tasks.

A list of link labels per project can be managed through the Project view
A list of default link labels for new project can be managed through the Config view (Board settings)
A link to an other task can be added in the Task show view
Linking two tasks of the same project is the common behaviour
Linking two tasks of different project is working, but only the link labels of the current project are available during the link creation
The number of links to other tasks is displayed at the bottom of each task in the Board view
Project links are duplicated when a project is duplicated
Task links are duplicated when a task is duplicated
This PR has been tested for SQLite and MySQL but not for Postgres
This PR includes English and French translations only

Sorry for the high number of commits, I don't know (yet) how to handle that more properly.

Awesome, give me the week to test and review that.

Why the links are specific per project, why not global to the application? That simplify a lot of stuff.
Categories and swimlanes are specific per project because they can be different but you will always define the same link types "blocked by/blocks this task...", it's like task colors for me.

Thank you very much for all your comments. I checked and checked my code, but apparently not enough. I will see that asap.

Why the links are specific per project, why not global to the application?

I made them specific per project because I thought they may be different depending of business activities (online shops project will have different links than development project) like categories. So, not exactly like task colors in my opinion.
But for sure this add more complexity. This is your call, what do you prefer?

Jira have those links:

I think those "relations" should be there by default, that cover most needs.
I would prefer to have links global to the application, by example available from a new section in the settings page.
My concern is you have done a lot of works to make your pull-request, are you ok to change that? Maybe someone else have a different opinion? after all it's an open source software.

Normally I have fixed all the issues you spotted. But the PR will fail, because I am using my proposed PR for simpleValidator (not to force your hand of course, task link validation can be done differently in kanboard if you prefer).
This will give me the time to think about "global links" ;-) I am very open and I am ok to change whatever you want. I just want to do it the best possible way.

I am working in a different branch (oliviermaridat/kanboard/link) to make link labels global to all project. Actually, this doesn't change many things in the code, but it will clearly simplify the management for the end-user. Anyway, it will still be possible to add a "link label" for a specific project. This offers simplicity and specificity :-) But if you don't like "specificity", feel free to remove it.
My only regrets is that I can't add that properly to the Controller/Config (too much pages to create), so I keep it in Controller/Link even it is accessible through the application Settings page.
I am also working on clarifying the "link" and "link label" data models. I was never completely satisfied with it, but I didn't find how to do that properly. I have a new idea, so I will try it.
I will send a new PR when this will be done.

I like it :+1:
Note: The default links should be translated.

I close this pull-request, just open a new one when you will be ready.
Thanks.


maskrcnn

If I download maskrcnn model from model zoo. Can it run on onnxruntime with openvino2019 R3, if not, what i need to do. Thanks

It will not work with OpenVINO. Intel is planning to update to support MaskRCNN with OpenVINO execution provider.


⚠ Bofrost.at has degraded performance

In 12c722f, Bofrost.at (https://www.bofrost.at) experienced degraded performance:

HTTP code: 200
Response time: 1665 ms

Resolved: Bofrost.at performance has improved in 9dc7212 after 9 minutes.


help needed to run the programme

hi,
may i ask what programme do you use to run the files?
thanks in advance
eusinbay

Sorry about the late response I haven't checked the repo in a while.
I use Visual Studio 2017 Community (it's free) to compile. Once you clone the repo you should be able to double click the .sln file (on the root directory) and it should open it. I just reinstalled Windows 10 so I'll give it a run-through this weekend to make sure there aren't any issues.
Let me know if you have questions!


Can we get a release cut for version 0.1.2?

Is this repo just dead?

To use with python 3.x just download the zipped project on the code page and type 'pip install version-master.zip'

+1

Are there any plans to continue to support this code and cut a new release? Or is this a dead project at this point?


fix: enhance accuracy of type definitions

Issue #, if available:
Description of changes:
Updated type definitions of main package exports to more closely align with what is actually exported and allow common examples to work for consumers using TypeScript.
Examples that used to fail:
import { getCurrentInvoke } from '@vendia/serverless-express';

Simplified example from https://github.com/vendia/serverless-express/blob/mainline/examples/basic-starter-nestjs/src/lambda.ts
import serverlessExpress from '@vendia/serverless-express';
import express from 'express';

exports.handler = (event, context, callback) => {
    const handler = serverlessExpress( { app: express() } );
    return handler(event, context, callback);
};

Checklist

[ ] Tests have been added and are passing
[ ] Documentation has been updated

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.

I didn't add any tests because these are only changes to the type definitions and this package doesn't currently have typescript pulled in. I'm open to ideas on how to approach this.

Thanks for this!


Missing config in user-mgt.xml

This config has not been templated in the doc given below
<OverrideUsernameClaimFromInternalUsername>true</OverrideUsernameClaimFromInternalUsername>
https://is.docs.wso2.com/en/5.9.0/develop/using-the-scim-2.0-rest-apis/

This configuration is enabled by default now, no need to template.


⚠ Bofrost.at has degraded performance

In 312248e, Bofrost.at (https://www.bofrost.at) experienced degraded performance:

HTTP code: 200
Response time: 1029 ms

Resolved: Bofrost.at performance has improved in 31259f9.


Integration Tests

launch WebdriverIO multiple times and verify the Allure reporter XML output
in test/fixtures/specs/ different test scenarios are defined that are used by mochaTest
contains an sample test suite for "before all" hook stored in test/runner.js

Good job, @gronke
I am not sure that this could be called unit tests (it looks more like integration), but it is still good thing.

I am not sure that this could be called unit tests (it looks more like integration), but it is still good thing.

You're right, we should them call them integration tests. IMO it's more interesting seeing WebdriverIO in action than mocking the BaseReporter and building real unit tests, even if the tests should be written like unit tests. I would not use this reporter without WebdriverIO, so it feels better to include it in the tests than mocking it.

IMO it's more interesting seeing WebdriverIO in action than mocking the BaseReporter and building real unit tests

I agree with you. This kind of tests more useful here. We can bump webdriverio version and easily check that everything is still compatible.

@gronke could you also please a .travis.yml file? Then we can run your tests right during the pull request.
You can get file content from another webdriverio sub-project, for example, here

Thanks. Looks good for me. Great work, @gronke !

I am still asking for adding .travis.yml file, because I want to see the build before merge

I am still asking for adding .travis.yml file
Did I really commit an empty .travis.yml file 🙈 ... file content added now

@christian-bromann can turn the travis on for this repo?

only @christian-bromann can do this.

I think it's time for another breakpoint. Feedback on the created test cases (in ./test/specs/) is much appreciated to align our expectations on this reporter.

tests look good to me!

@christian-bromann cool! What needs to be done to get this merged? Or would you prefer if I rebase #8 against this branch and we continue there?

@gronke nothing, please go ahead and merge. Just gave you all the access rights.

@christian-bromann awesome.
Some more tests will come with the pull-request #8 (work in progress)


Unable to download unfinished live

Checklist

[ ] I'm reporting a broken site support issue
[ ] I've verified that I'm running youtube-dl version 2020.03.24
[ ] I've checked that all provided URLs are alive and playable in a browser
[ ] I've checked that all URLs and arguments with special characters are properly quoted or escaped
[ ] I've searched the bugtracker for similar bug reports including closed ones
[ ] I've read bugs section in FAQ

Description

When downloading incomplete live, ffmpeg does not stop in the end, cycling on index.m3u8. When running it manually it is possible to stop it by pressing 'q'. I tried to stop it with ^C, but it killed ffmpeg. Why you use ffmpeg, but not let it terminate normally? No log because live is finished now. I know about mpegts or additional ffmpeg options, but why it not enabled by default if without it it is just impossible to get valid file?

ffmpeg will be terminated correctly if you won't hit Ctrl+C multiple times.


Discussion: Ability To Set GIF Cache Duration

If you enter any GIF address online, this GIF image will create a cache at the location you choose or set as default. Normally, this cache file will be displayed as long as the same GIF address is entered until the cache file is deleted. This process is logical, but if the GIF address remains the same but the GIF itself is changed, you will still see the old GIF.
Therefore, in situations where GIF images are offered online and can change, people will constantly see the same GIF image. Setting a GIF cache duration would be an effort to improve this situation. Everyone can set this duration according to their own needs.
Of course, regularly cleaning the GIF cache location can also solve this problem, but this creates an unnecessary situation. Because when it is regularly deleted, it means that all GIF files will be re-downloaded by people. Keeping the same cache duration for each GIF will be a more stable solution. This is because a different cache duration will be calculated for each GIF file, and only those with expired duration will be re-downloaded.

I think it makes sense to make the cache expire, but it might be tricky to implement due to the fact the file will still be in use if the image is currently displayed, so we won't be able to overwrite it. An easy fix would be to just load the file in a MemoryStream and use that instead of the FileStream. I don't love it, but I don't have a better option at the moment.
To keep things simple, I think a global cache duration would be enough for most needs. The approach you took in #199 was probably good enough.
In terms of API, we could have a couple of methods on AnimationBehavior:
public static void SetDownloadCacheExpiration(TimeSpan? duration);
public static TimeSpan? GetDownloadCacheExpiration();

(note that I made it nullable, and it would be null by default, meaning "no expiration")


[Feature Proposal] Option to show user profile details

How about a feature where we can view the profile details of the user?
Something like:
devto author anto_christo --profile
will display the Name, Email, Location, Work, Joined Date, Links, etc etc on the terminal.
If this feature is needed, I'll add it and send a PR.
Thank you.

ummm ohk, feel free to contribute.

Great job Anto !!


Add MP, remove website repo from repo list

I removed the computo website from the list because IMO the list of repos is intended for people who want to submit

@mathurinm Just let me know when you are done with your PR


Introduce Editor Config

Hey guys/gals 👋!
I moved to GVL recently and I am looking to get involved with local geek community and turns out this projects uses laravel, which is something I use daily, figured I'd play around with some code in this repo but I need my spaces vs tabs question solved first. And maybe we figure out how to merge #112 and so I can get invited into the slack channel. 😉
This is just a simple .editorconfig which uses spaces as the indent style to file to get the ball rolling. (laravel/laravel default)

Thanks for joining in.
I'll defer to @zach2825 about the configuration file.
The Slack invite form has a free tier limit and we probably either hit that already this month as @soulfire86 determined in #114
@oliviasculley is working on the Slack form and I believe it was "working" and hosting it for final testing was the task at hand at the meeting earlier this month.
I'll be in touch about an invite to the HG Slack.

@allella thanks for the invite!

@bogdankharchenko quick question do you use PHPStorm? You can generate an editorconfig and include all the phpstorm settings, that would be so nice.

But, what you have is good if not :+1:

@zach2825 yes I do. I can certainly commit my code styles but I also want to add a GitHub action to automatically format the code on each pr

Also @zach2825 ping me on slack, I want to help maintain this repo :)

Is this read for merge?

I think so, we might want to add on to the .editorconfig in the future, but for now, this is better than nothing.

Not that I know if these is even applicable, but I am in the process of updating the data.openupstate.org Drupal site and noticed they have a .editorconfig so here's another PHP project if we need ideas
https://github.com/drupal/drupal/blob/9.5.x/.editorconfig


Unimplemented AVX instructions

We're getting the following issue
F1109 19:56:17.375583 14182 Instruction.cpp:78] Unused memory reference operand to 140017340 in instruction (AMD64 14000ef5a 8 (BYTES c5 d1 fa 2d de 83 00 00) VPSUBD_XMMdq_XMMdq_MEMdq)

Due to the semantics of this AVX instruction not being available:
(AMD64 14000ef5a 8 (BYTES c5 d1 fa 2d de 83 00 00) VPSUBD_XMMdq_XMMdq_MEMdq)

This is a bit more than just a missing instruction semantics fix, because it's showing how one issue snowballs into another. That is, missing instructions is typically a non-fatal error, but failing to resolve a data cross-reference for an operand is a fatal error.

[ ] (AMD64 14000f9d1 5 (BYTES 0f ae 5c 24 08) STMXCSR_MEMd (WRITE_OP (DWORD_PTR (ADD (REG_64 RSP) (SIGNED_IMM_64 0x8)))))
[ ] (AMD64 14000fa47 5 (BYTES 0f ae 54 24 08) LDMXCSR_MEMd (READ_OP (DWORD_PTR (ADD (REG_64 RSP) (SIGNED_IMM_64 0x8)))))
[ ] (AMD64 1400107c0 4 (BYTES 0f 2b 41 e0) MOVNTPS_MEMdq_XMMps (WRITE_OP (DWORD_PTR (ADD (REG_64 RCX) (SIGNED_IMM_64 -0x20)))) (READ_OP (REG_128 XMM0)))
[ ] (AMD64 140010b53 5 (BYTES f2 0f 70 c8 00) PSHUFLW_XMMdq_XMMdq_IMMb (WRITE_OP (REG_256 YMM1)) (READ_OP (REG_128 XMM0)) (READ_OP (IMM_8 0)))
[ ] (AMD64 14000edbb 5 (BYTES c5 e1 73 f3 01) VPSLLQ_XMMdq_XMMdq_IMMb (WRITE_OP (REG_256 YMM3)) (READ_OP (REG_128 XMM3)) (READ_OP (IMM_8 1)))
[ ] (AMD64 14000edc0 4 (BYTES c5 e1 d4 c9) VPADDQ_XMMdq_XMMdq_XMMdq (WRITE_OP (REG_256 YMM1)) (READ_OP (REG_128 XMM3)) (READ_OP (REG_128 XMM1)))
[ ] (AMD64 14000ef49 5 (BYTES c5 d1 73 d2 34) VPSRLQ_XMMdq_XMMdq_IMMb (WRITE_OP (REG_256 YMM5)) (READ_OP (REG_128 XMM2)) (READ_OP (IMM_8 34)))
[ ] (AMD64 14000ef5a 8 (BYTES c5 d1 fa 2d de 83 00 00) VPSUBD_XMMdq_XMMdq_MEMdq (WRITE_OP (REG_256 YMM5)) (READ_OP (REG_128 XMM5)) (READ_OP (DWORD_PTR (ADD (REG_64 PC) (SIGNED_IMM_64 0x83ee)))))
[ ] (AMD64 14000eec4 9 (BYTES c4 e2 e9 a9 25 d3 84 00 00) VFMADD213SD_XMMdq_XMMq_MEMq (WRITE_OP (REG_256 YMM4)) (READ_OP (REG_256 YMM4)) (READ_OP (REG_128 XMM2)) (READ_OP (QWORD_PTR (ADD (REG_64 PC) (SIGNED_IMM_64 0x84e5)))))
[ ] (AMD64 14000ee42 5 (BYTES c4 e2 d1 b9 c8) VFMADD231SD_XMMdq_XMMq_XMMq (WRITE_OP (REG_256 YMM1)) (READ_OP (REG_256 YMM1)) (READ_OP (REG_128 XMM5)) (READ_OP (REG_128 XMM0)))
[ ] (AMD64 14000ee5c 5 (BYTES c4 e2 c9 ab e9) VFMSUB213SD_XMMdq_XMMq_XMMq (WRITE_OP (REG_256 YMM5)) (READ_OP (REG_256 YMM5)) (READ_OP (REG_128 XMM6)) (READ_OP (REG_128 XMM1)))
[ ] (AMD64 14000ee77 9 (BYTES c4 e2 c9 b9 05 f0 83 00 00) VFMADD231SD_XMMdq_XMMq_MEMq (WRITE_OP (REG_256 YMM0)) (READ_OP (REG_256 YMM0)) (READ_OP (REG_128 XMM6)) (READ_OP (QWORD_PTR (ADD (REG_64 PC) (SIGNED_IMM_64 0x8402)))))
[ ] (AMD64 14000ed5d 8 (BYTES c5 e1 fb 1d 8b 84 00 00) VPSUBQ_XMMdq_XMMdq_MEMdq (WRITE_OP (REG_256 YMM3)) (READ_OP (REG_128 XMM3)) (READ_OP (DWORD_PTR (ADD (REG_64 PC) (SIGNED_IMM_64 0x849b)))))

A couple of the "fused-multiply add" instructions in the list above appear to just be the same instruction with different operands. If you agree, I'll edit one of them out of the to-do list.
$ xed -d c4e2e9a925d3840000
C4E2E9A925D3840000
ICLASS: VFMADD213SD   CATEGORY: VFMA   EXTENSION: FMA  IFORM: VFMADD213SD_XMMdq_XMMq_MEMq   ISA_SET: FMA
SHORT: vfmadd213sd xmm4, xmm2, qword ptr [0x84d3]
$ xed -d c4e2c9b905f0830000
C4E2C9B905F0830000
ICLASS: VFMADD231SD   CATEGORY: VFMA   EXTENSION: FMA  IFORM: VFMADD231SD_XMMdq_XMMq_MEMq   ISA_SET: FMA
SHORT: vfmadd231sd xmm0, xmm6, qword ptr [0x83f0]

@pgoodman you mentioned that the MXCSR (control/status register) state management instructions (STMXCSR and LDMXCSR) may require "hyper calls or stop failures", can you elaborate what you meant by that?
How would we write a semantic function for an instruction that just loads or stores a register from memory? Is MXCSR part of the State struct? If not, where would it belong?

[ ] (X86 f115d018 5 (BYTES 0f ae 44 24 30) FXSAVE_MEMmfpxenv (WRITE_OP (DWORD_PTR (ADD (REG_32 SS_BASE) (REG_32 ESP) (SIGNED_IMM_32 0x30)))))

I'm moving the implementation of FXSAVE semantics over to https://github.com/trailofbits/remill/issues/45
so we can close this issue.


Feature: Display backend unreachability message

Details

When user is offline, we display offline message (You appear to be offline.), when user is online but our backend is unreachable, we display We might have a problem. Check out status.expensify.com message.
Fixed Issues

$ https://github.com/Expensify/App/issues/37565
PROPOSAL: https://github.com/Expensify/App/issues/37565#issuecomment-1976463123
Tests

Network Devtools
Web: Open DevTools >> Network
Native: Toggle RN dev menu by CMD + D >> Open Element Inspector >> Network

Block network request
Chrome
Open DevTools >> More tools >> Network request blocking >> Enable network request blocking >> Add network request blocking pattern as https://dev.new.expensify.com:8082/api

Safari

Open DevTools >> Sources >> + >> Local Override...
Press + next to Local Overrides >> Select Block type and URL as https://dev.new.expensify.com:8082/api with Regular Expression enabled

Native
Hard-code the reachability URL here to an invalid URL.

In Network devtools, verify that Ping command is called every 60 seconds (see Network Devtools)
Block https://dev.new.expensify.com:8082/api request to make backend unreachable (see Block network request)
Verify that after a while,We might have a problem. Check out status.expensify.com. message appears and the status page URL can be opened
=====
Go offline
Verify that You appear to be offline. message appears
Go online
Verify that offline message disappears
Verify that after a while, the unreachability message appears
=====
Disable network request blocking as in Step 2
Verify that after a while, the unreachability message disappears

[x] Verify that no errors appear in the JS console

Offline tests

Same as Tests
QA Steps

NA

[x] Verify that no errors appear in the JS console

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/Expensify/App/assets/113963320/d59975d5-4940-453d-b3e7-01e1dde6a50a

Android: mWeb Chrome

https://github.com/Expensify/App/assets/113963320/237f3e56-4f0b-49e4-8f9e-bb24edc1a854

iOS: Native

https://github.com/Expensify/App/assets/113963320/27b329da-ba37-4b48-8498-de2cc2f09fe0

iOS: mWeb Safari

https://github.com/Expensify/App/assets/113963320/ce09149a-4a2b-49c7-8d87-0874fd00ff92

MacOS: Chrome / Safari

https://github.com/Expensify/App/assets/113963320/f53f2698-2099-4778-adbd-0bf657381198

MacOS: Desktop

https://github.com/Expensify/App/assets/113963320/f53f2698-2099-4778-adbd-0bf657381198

@tienifr If there's no better way, we can test it this way on Native.  In rare cases, we test things by applying a small code change. Please specify this technique in the "Tests" steps.

I started testing, it's working very well so far 🙂

Okey, we've got an issue.
Steps:

Open the app on iOS Native (probably affects Android Native too, though)
Wait a few seconds, then make your Internet connection inefficient

For example, Wi-Fi enabled, connected to a Wi-Fi router with WAN cable disconnected (LAN is not Internet)
Can be simulated by disabling your Mac's Wi-Fi, while testing the app on iOS simulator

Expected result (observed on main):
"You appear to be offline"
Actual result:
"We might have a problem (...)"

I think that "offline" means for us:

Either the device is made offline by the user (e.g. Wi-Fi off / Cellular off on the system level)
or the Internet is not reachable (approximated by checking whether a specific high-availability endpoint is reachable)

The second check doesn't seem to work now.

@tienifr Bump!

reachabilityUrl
The URL to call to test if the internet is reachable. Only used on platforms which do not supply internet reachability natively or if useNativeReachability is false.

You could dig more here. Does "native reachability" include any effective Web endpoints, or does it rely on user-triggered Wi-Fi/Cellular switches only? Maybe iOS uses some apple.com endpoint and tries to do some "effective Internet reachability", but it failed in my case? What about Android? Maybe it's an emulator-related thing?
Also, maybe we could change our definition of "online" on mobile Native, so "effectively offline" (being in a train with close-to-zero cellular reception, being connected to a LAN-only Wi-Fi router, etc.) is considered "online" by Expensify. But this would require Slack discussion and I think we should consider it plan B (or plan C).

should disable the useNativeReachability

I'm not excited by that!
You can give it a try, but I'm afraid we'll miss big potential of immediate system feedback when we know that the device is offline (e.g. wifi = off, cellular = off).
It appears that NetInfo gives us a choice: either use a built-in endpoint reachability loop or use the built-in native reachability integration.
I believe that the latter (native reachability integration) is a higher-value functionality.
I can see two viable options, I'll leave the decision to you:

Decide that the behavior is acceptable, i.e. we're fine with the native-only Internet reachability check on Native

Start a Slack discussion, mentioning the pragmatic user-observable behavior difference on Native

Use a platform-specific implementation of Internet network reachability:

Web: NetInfo (Google endpoint) or home-made Google endpoint reachability loop ("or" meaning we decide now)
Native: NetInfo (native reachability) and home-made Google endpoint reachability loop

When I say "home-made Google endpoint reachability loop", I mean re-using the code we created for the backend endpoint reachability loop.

Start a Slack discussion, mentioning the pragmatic user-observable behavior difference on Native

But remember that that means we'll blame Expensify in the "offline in a train" scenario!
The user will be effectively online, the system will report "user is online", the backend will be unavailable, so we'll go with "Expensify has a problem" communication.

Thank you for diving deep into this! I'm sorry if I provided some misleading information. I misunderstood the "which do not supply internet reachability natively" part of the NetInfo docs, which might've biased me.

Android emulator, Native build, after macOS Wi-Fi is turned off:

Expected: "You are offline"
Actual: "We might have a problem"

Please correct me if I'm wrong.

Android only checks for internet reachability on initiation. That means if the network lost internet access anytime after the connection initialization, we wouldn't know.

I'm a bit lost... But didn't we depend on NetInfo regular URL endpoint checks in the old solution (the current main), when we provided it with a custom endpoint URL? Also on Android?

Okey, I gave it a lot of thought. I have some reservations about the current code, but I like the direction we're going in.
I sketched something that I'd consider an improvement over the current code, both in the terms of code organization and behavior in corner cases. I haven't tested it though, it's just a dump of my idea.
// Cross-platform
function subscribeToInternetReachability(
    callback: (status: InternetReachabilityStatus) => void,
): Subscription {
    throw new Error("TODO: Implement using custom loop and one-off requests");
    // Basically what we have now, but let's keep the fallback logic to check high-availability endpoint when backend is
    // unreachable _on all platforms_. I'm suggesting making this the only source of truth about Internet being fully
    // unreachable. This way, we'll have no race conditions between the backend loop and the Internet loop, also
    // we'll minimize the number of unnecessary requests, as backend being reachable implies Internet being reachable.
}

// Web
function subscribeToNetworkConnectivityStatus(
    callback: (status: NetworkConnectivityStatus) => void,
): Subscription {
    // No-op, as we don't have any access to the network connectivity status on the Web
    return () => {
    };
}

// Native
function subscribeToNetworkConnectivityStatus(
    callback: (status: NetworkConnectivityStatus) => void,
): Subscription {
    throw new Error("TODO: Implement based on NetInfo subscriptions / isConnected");
    // Let's drop any NetInfo reasoning about the Internet reachability (as opposed to local network connectivity status,
    // like cellular / Wi-Fi being on/off). Why? Well, it doesn't work well on Android (it seems), and although it might
    // work on iOS, it still won't be performed at the perfect moment. So maybe let's just ignore it, and assume that
    // our source of truth for this information is as good as the one in the system?
}

// Cross-platform
// Subscribe to the real app network status, the offline forcing can be implemented on top of this
function subscribeToAppNetworkStatus(
    callback: (status: AppNetworkStatus) => void,
): Subscription {
    let internetReachabilityStatus: InternetReachabilityStatus = 'backendReachable';
    let networkConnectivityStatus: NetworkConnectivityStatus = 'connected';

    const establishAppNetworkStatus = (): AppNetworkStatus => {
        switch (networkConnectivityStatus) {
            case "disconnected": {
                return 'offline';
            }
            case "connected": {
                switch (internetReachabilityStatus) {
                    case "backendReachable":
                        return 'online';
                    case "backendUnreachable":
                        return 'backendDown';
                    case "internetUnreachable":
                        return 'offline';
                }
            }
        }
    };

    const triggerCallback = () => {
        callback(establishAppNetworkStatus());
    };

    const unsubscribeFromInternetReachability = subscribeToInternetReachability((status) => {
        internetReachabilityStatus = status;

        triggerCallback();
    });

    const unsubscribeFromNetworkConnectivity = subscribeToNetworkConnectivityStatus((status) => {
        networkConnectivityStatus = status;

        triggerCallback();
    });

    return () => {
        unsubscribeFromInternetReachability();
        unsubscribeFromNetworkConnectivity();
    };
}

@tienifr Bump! I know it's a tough task, and there are some hairy corner cases, but please provide some update 🙂

Taking over as C+

Conflicts to resolve here! Assigned you as the reviewer @DylanDylann.

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

@aldo-expensify The change looks good to me. Could you help to add "ready to build" label for testing?

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

🚀 Deployed to staging by https://github.com/aldo-expensify in version: 1.4.74-0 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅

🚀 Deployed to production by https://github.com/chiragsalian in version: 1.4.74-6 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅