conda-forge compatibility and eventual migration

cc: #662 #634 #645
I think the majority of us are in agreement that omnia should start to migrate to the excellent conda-forge build system. Even continuum has officially embraced this. However, we need to do this migration in a manner that is not majorly disruptive.
Why can't I just move my recipe to conda-forge right now?
For linux builds, omnia uses a Docker-based build image based on the CentOS 5-based holy build box, which uses an old version of glibc that is maximally compatible with older linux installations still found on many HPC clusters. On the other hand, conda-forge uses a Docker-based build image based on CentOS 6.
As a result, packages built with the conda-forge CentOS 6 build image will fail to run on the omnia CentoOS 5 build image, causing problems for omnia recipes that want to use these as dependencies. For now, this means that any omnia recipes using compiled code must also be built on omnia.
What is the migration plan?
This is certainly open for discussion, but the current migration plan is to get to a point where recipe maintainers can begin to migrate to the conda-forge build infrastructure. This involves the following steps:

Update the omnia-build-box Dockerfiles and docker images to a CentOS 6-based image. This would allow us to build packages using the same glibc version as conda-forge. There are some difficulties with this, described in more detail below.
At this point, we can adopt one of two options: (1) copy packages from the conda-forge to the omnia channel using the anaconda CLI, though this process can potentially be automated; (2) add the conda-forge channel to the conda build environment, and recommend users of omnia include both channels in their environment.
Eventually, we will no longer add new recipes to omnia, but we would maintain the existing packages for reproducibility of published work. We may want to discuss long-term maintenance to ensure reproducibility in a separate thread.

Why haven't we already migrated to a CentOS 6 based build system for conda-forge compatibility?
To support OpenMM, the omnia-build-box image includes some specially-installed build tools:

CUDA 8.0
AMD APP SDK 3.0
clang 3.8
TeXLive (and some additions)

None of these tools are available in the current conda-forge linux-anvil build image, so we can't use this directly.
The simplest path to updating to CentOS 6 at first appeared to be to update to the new holy-build-box CentOS 6 base image once this PR was completed. It's not yet clear if this process is stalled or if work was simply suspended for the holidays.
As an alternative, I've started on a different approach that layers these tools on top of the conda-forge linux-anvil. This is incomplete, as additional troubleshooting is needed. But this may present a viable alternative once someone has put the effort in.
What do we need to do now?
I am in the process of restoring the mdtraj 1.8.0 recipe so we can still build packages that depend on mdtraj, like pyemma.

Can you ballpark the "difficulty" of migrating from

centos 5 hbb -> centos 6 hbb
centos 6 hbb -> linux-anvil
centos 5 hbb -> linux-anvil

If I'm understanding correctly, the plan outlined above would migrate from centos 5 hbb -> centos 6 hbb -> linux-anvil (when we move to conda-forge). The alternative plan would be to go centos 5 hbb -> linux anvil directly.
The first plan makes sense if the sum of the difficulty of the two steps is less than the one larger transition. I understand why this might/should be true, but I worry that each transition would be almost as difficult as going from centos 5 straight to linux-anvil [just a hunch, due to us always running into strange issues with these containers]
A complimentary proposal
We could identify "leaf" packages on which nothing depends and move those to conda-forge incrementally. We could work our way up the dependency tree that way, incrementally moving omnia packages to conda-forge when it's safe to do so.

If I'm understanding correctly, the plan outlined above would migrate from centos 5 hbb -> centos 6 hbb -> linux-anvil (when we move to conda-forge). The alternative plan would be to go centos 5 hbb -> linux anvil directly.

There are two different levels of effort we have to think about:

How much effort will it take us, the omnia maintainers, to retool the build framework?
How much effort will it take package maintainers to update their packages in omnia or migrate to conda-forge?

For the omnia maintainers, centos 5 hbb -> centos 6 hbb would be trivial to easy, while my day of fiddling with trying to use a linux-anvil derivative in omnia suggests this will take some time (though it may not actually be difficult), but may require fixing some special recipes (like openmm) that use specific features of the build system.
For recipe maintainers, they would likely not have to do anything to keep their recipes working under omnia for any of these migrations, but for special recipes like openmm, using a linux-anvil derivative for omnia builds would likely shake out any issues ahead of time.

The first plan makes sense if the sum of the difficulty of the two steps is less than the one larger transition. I understand why this might/should be true, but I worry that each transition would be almost as difficult as going from centos 5 straight to linux-anvil [just a hunch, due to us always running into strange issues with these containers]

I'm certainly open to going straight to the linux-anvil derivative, but someone needs to put in the time to make that work.

We could identify "leaf" packages on which nothing depends and move those to conda-forge incrementally. We could work our way up the dependency tree that way, incrementally moving omnia packages to conda-forge when it's safe to do so.

I'm totally OK with this, but who would do the migration?
My hope was to get us to a CentOS 6 endpoint so that package maintainers can migrate their own packages as they see fit, which takes the pressure off the omnia maintainers. Suggesting we actively migrate packages makes more work for us, rather than less. Permitting migration of "leaf" packages is fine, however, if we can guarantee nobody is using them.
We do still have to decide what scheme we will use for allowing omnia packages to use conda-forge packages as dependencies. Any preference for (1) including conda-forge in the build environment channels, and requiring users add both conda-forge and omnia channels, vs (2) copying packages from conda-forge to omnia?

My hope was to get us to a CentOS 6 endpoint so that package maintainers can migrate their own packages as they see fit, which takes the pressure off the omnia maintainers. Suggesting we actively migrate packages makes more work for us, rather than less. Permitting migration of "leaf" packages is fine, however, if we can guarantee nobody is using them.

Yes, I was suggesting we permit / encourage "leaf" owners to migrate

Any preference for (1) including conda-forge in the build environment channels, and requiring users add both conda-forge and omnia channels, vs (2) copying packages from conda-forge to omnia?

I think we'll have to do (2) for a while anyways so users aren't confused why conda install -c omnia packagename no longer works / gets the latest version.

I'm going to try poking around with https://github.com/omnia-md/omnia-linux-anvil

Started building packages (python 3.6, numpy 1.11) on a modified version of omnia-linux-anvil, uploaded here https://anaconda.org/mpharrigan/repo?label=omnia-anvil
Haven't attempted openmm yet

Awesome! Can you check your dockerfile changes into a PR? Once the PR is merged, it will automatically build an updated image at dockerhub and we can continue to experiment with that on travis by just modifying .travis.yml for conda-dev-recipes or conda-recipes.

@jchodera tex-live-core and clang-dev are available in conda-forge, so you just need to dynamically drag in cuda amd amd sdk in the openmm conda build script and build-time depend on the existing packages. There should be no need to have a custom build image.

so you just need to dynamically drag in cuda and amd sdk in the openmm conda build script and build-time depend on the existing packages.

Interesting! These packages are huge---CUDA is 1.3GB and AMD APP SDK is 167MB. Do you think that will cause a problem? I suppose OpenMM release builds are infrequent, so as long as this can fit within the CI timeframes, we're OK.
The builds are handled in docker containers with root access, right?
Now that OpenMM 7.1 is out, we can start doing test builds of it in conda-forge.

On 06.02.2017 16:50, John Chodera wrote:

so you just need to dynamically drag in cuda and amd sdk in the
openmm conda build script and build-time depend on the existing
packages.

Interesting! These packages are huge---CUDA is 1.3GB and AMD APP SDK is
167MB. Do you think that will cause a problem? I suppose OpenMM release
builds are infrequent, so as long as this can fit within the CI
timeframes, we're OK.
The builds are handled in docker containers with root access, right?
Now that OpenMM 7.1 is out, we can start doing test builds of it in
|conda-forge|.

Is the installed cuda sdk much smaller than the install file? I think
Nvidia provides a network installer rpm, which only drags in the
requested components (do you need all of them, eg. documentation).
The download time is affected no matter if you download these libs
inside the container or they are already included in the docker image
(bigger image).
For testing purposes you could just replace the image name in the
circle.yml of the openmm-feedstock, if this is allowed. Since the
build-image is derived from the same base, it shouldn't be a problem.

Is the installed cuda sdk much smaller than the install file? I think Nvidia provides a network installer rpm, which only drags in the requested components (do you need all of them, eg. documentation).

Good point. We were grabbing the whole tarball and then just installing just the components we needed to minimize the size of the docker image, but in this case, we probably want the network installer to minimize the total data transfer.

The download time is affected no matter if you download these libs inside the container or they are already included in the docker image (bigger image).

Not quite, since we only install a minimal number of components and then discard the whole tarball/RPMs we don't use.

For testing purposes you could just replace the image name in the circle.yml of the openmm-feedstock, if this is allowed. Since the build-image is derived from the same base, it shouldn't be a problem.

That was our original plan, but it sounds like we should first try your idea of modifying the build script to install the additional components and see if it works!

What is the status of this? I want to package something that depends on OpenMM.

On 10/11/18 11:42 PM, salotz wrote:

What is the status of this? I want to package something that depends on OpenMM.

the issue of the beast... there is still no cuda on conda-forge, so it
is not possible to build it there (afaik).

This is still true. If you want OpenMM, you would have to publish on Omnia or your own channel

We think we're getting closer! Several versions of the CUDA Toolkit are now available on the Anaconda channel, so we are hoping we can use those to build CUDA projects on conda-forge:
https://anaconda.org/anaconda/cudatoolkit/files
But not all CUDA Toolkit versions are available, and contributions to the recipes to build the rest are actively being solicited: https://github.com/ContinuumIO/anaconda-recipes/issues/140

I think our hope is to eventually migrate everything to conda-forge and pitch in our efforts there!


Strange Segment State after encoutering JDK22 bug

Description
There is a nasty bug in JDK 22:
Elasticsearch issue: https://github.com/elastic/elasticsearch/issues/106987
JDK issue: https://bugs.openjdk.org/browse/JDK-8329528
This JDK bug is not present in JDK 21.0.x: https://github.com/elastic/elasticsearch/issues/106987#issuecomment-2039591571 ( it appears to be a regression starting with JDK 22 )
We noticed in places where this bug reared its ugly head, segment state ended up in a strange place.
Unexpected file read error while reading index. (resource=BufferedChecksumIndexInput(NIOFSIndexInput(path="<DATA_PATH>/segments_qt")))
Caused by: java.nio.file.NoSuchFileException: <DATAPATH>/_9xo.si

The resulting segment state did create the segments_N file, and had a CFS file. But, was missing .si and .cfe.
This smells like we have an over-eager cleanup code somewhere. As the rename from pending_* seems to have occurred, and the CFS file created, but we deleted the .si and .cfe files.
Version and environment details
JDK 22
Lucene 9.10

Are we sure this is all the same bug in JDK 22?
The above bugs are about FillerArray and the other one about strange segment states. How does this fit together?

All we have right now is a correlation: we've seen quite a few nodes fall over with that JVM bug, and some subset of them have come back up and discovered a missing .si (and .cfe) file. Ben and I have spent some time going through the IndexWriter#commit process without finding anything obvious, but we wonder if the JVM bug is throwing an exception in a place where we're assuming no exception could possibly be thrown.

In particular I'm a little suspicious about the way we call org.apache.lucene.index.IndexFileDeleter#incRef(org.apache.lucene.index.SegmentInfos, boolean) after doing the rename and setting commitCompleted = true, all within a try (Closeable finalizer = () -> deleter.decRef(commitFiles)) {...} block. Are we sure it's ok if an exception is thrown just before that incRef() call? Is there something else preventing those files from being decRef'd into the void? Sorry if this is a red herring, I don't spend much time in this code so I don't have all the relevant invariants in my head.

Now it makes sense: The broken segments look like a side-effect of the JVM bug because it brings IndexWriter into some broken state so it deletes the files without the commit fully applied.

@rmuir for sure, that is an option.
I opened this issue as it seems like Lucene isn't rolling back correctly and it struck me as problematic. Ending up in an un-readable state due to a random exception is regrettable, even if the JDK is doing something bonkers. I realize this could be 'best effort' when the JDK becomes nondeterministic, so I wanted to see if Lucene's effort here could be better.
I have been testing this by randomly throwing at IndexWriter#testPoint. I added some more test points to simulate failures throughout the process. During this testing I found other issues (double file decrements for example), but haven't been able to fully replicate the weird missing file failure besides abusing the FileDeleter#incRef method.

Only thing lucene could do is to not do this reference counting with java code in indexwriter. Can't make java code more complicated to deal with issues like this, if the jvm is broke then it's broke.
So only other option is to not count in java, That way jvm corruption can't hurt it. Means using dup2() or similar and letting the kernel take care.

You could get an exception in these places even if there were no JVM bug, for instance an OOME can be thrown basically anywhere. The JVM still carries on running finally blocks and other stuff after hitting an OOME (unless you tell it not to, but most folks apparently don't). Not that I think this is in any way a sensible default behaviour or anything, but still it's not something I think we can change.

@rmuir for sure, I am not suggesting one solution or the other. Just that the only way I could reproduce was abusing the code in horrific ways. Which is a testament to the general resiliency to Lucene.
I am still trying to replicate it in some way that isn't a "break the incref" scenario.

Basically we can't do anything if due to broken JVM code, the finally block is not called. This can happen on JVM bugs only and then we're lost.

This is why indexwriter closes itself on oom.

and really, that safety mechanism is probably the easiest way to defend against this one. Problem is that only VirtualMachineError is considered a tragedy, and IncompatibleClassChangeError isn't a subclass of that.
If you extend tragic handling to VirtualMachineError | LinkageError, then indexwriter won't delete files after this hits.

Please, see PR: #13277
I think we should be more defensive here.


Integration of Social Media Links and Advanced Positioning for Footer Elements

I want to enrich the footer section of the project under GSSoC 2024 Contribution.  I wnat to  integrate social media links for enhanced connectivity and advancing the positioning of elements.

please assaign it to me , i will do it

Hi nirajsingh015,
Could please assign this task as i have made a lot of website ,so i think i can solve this Footer section issue .
Thanks

Assign this issue to me.
As a full Stack Developer and 1 Year experience I can Write optimized code and Make it responsive.

Hi sir , i would love to work on this issue

Hi madam Shoveet here. Been doing these for past 1.5 years.
I think i could do it seamlessly.
I hope that u will assign it to me the task .

Please assign it to me.
(Contributor at GSSOC'24)

As a Full Stack developer,I have experience of more than 2 years, I can fix this issue very well, please assign this task to me. I have worked on such kind of projects earlier also, thus I have a strong foundation on them.

@nirajsingh015 Kindly make changes within 2-3 days, otherwise this task will be assigned to someone else.

@nirajsingh015 Kindly make changes within 2-3 days, otherwise this task will be assigned to someone else.

Sure

Hi @Priyaaa1 please assign this issue to me

@Priyaaa1  can you assign this issue to me under Gssoc'24


Empty String "" in ?datetime columns should be created to null before being translated to postgres

Currently Get this error
DataError: (psycopg2.DataError) invalid input syntax for type timestamp: ""
With this test.csv
"col1";"col2";"col3"
"test";12;"24/09/2015"
"test2";13;""
"test3";14;
Code
from odo import odo, resource, discover, dshape
csv = resource('test.csv')
odo('test.csv', 'postgresql://postgres:62348r5ajk@localhost/blaze_test_db::blaze_test_table')

I attempted to load csv into dask first using this to make the empty strings null though I got another error with dask "NotImplementedError: Don't know how to discover type 'DataFrame'"
Code
from dask.dataframe.io import read_csv
df = read_csv('test.csv', sep=';', na_filter=True)
odo(df, 'postgresql://postgres:62348r5ajk@localhost/blaze_test_db::blaze_test_table_2')

Quickest fix seemed to be by running the following in linux before.
sed 's/""//g' myfile.csv myfile-formatted.csv


Add Pagination

How to add a pagination in the pdf pages like 1 / 2

Check https://github.com/ivmarcos/react-to-pdf/issues/86#issuecomment-1738284078

thx


Always be set x-ms-encryption-algorithm HTTP header in all operations

Package Name: @azure/storage-blob
Package Version: 12.6.0
Operating system: Ubuntu 20.04 (WSL 2)
[x] nodejs

version: v14.17.4

[ ] browser

name/version:

[ ] typescript

version:

Is the bug related to documentation in

[ ] README.md
[ ] source code documentation
[ ] SDK API docs on https://docs.microsoft.com

Describe the bug
The x-ms-encryption-algorithm HTTP header will always be set in the request, even if the customerProvidedKey option is not specified. The x-ms-encryption-algorithm HTTP header is always set, which causes a lot of problems when using the Azurite emulator.
According to the specification, this should not be necessary if Customer provided keys are not used.
https://docs.microsoft.com/en-us/azure/storage/blobs/encryption-customer-provided-keys#request-headers-for-specifying-customer-provided-keys
To Reproduce
Steps to reproduce the behavior:

Run Azurite emulator
Execute v12 SDK QuickStart code (https://docs.microsoft.com/en-us/azure/storage/blobs/storage-quickstart-blobs-nodejs#upload-blobs-to-a-container)

azure:storage-blob:info Request: {
  "streamResponseStatusCodes": {},
  "url": "http://<IP_ADDRESS>:10000/devstoreaccount1/quickstart93154580-f14e-11eb-b7e7-75c76a3eb9e9/quickstart931e4630-f14e-11eb-b7e7-75c76a3eb9e9.txt",
  "method": "PUT",
  "headers": {
    "_headersMap": {
      "x-ms-version": "2020-08-04",
      "content-length": "13",
      "x-ms-encryption-algorithm": "AES256",
      "content-type": "application/octet-stream",
      "accept": "application/xml",
      "x-ms-blob-type": "BlockBlob",
      "user-agent": "azsdk-js-storageblob/12.6.0 (NODE-VERSION v14.17.4; Linux 5.4.72-microsoft-standard-WSL2)",
      "x-ms-client-request-id": "bf43dc95-1a1f-4ace-a20c-8f458bb19df2"
    }
  },
  "withCredentials": false,
  "timeout": 0,
  "keepAlive": true,
  "requestId": "bf43dc95-1a1f-4ace-a20c-8f458bb19df2"
}

Expected behavior
The x-ms-encryption-algorithm HTTP header will be set only if the customerProvidedKey option is set.
Additional context
Since AES256 is set as the default value in the parameter definition of x-ms-encryption-algorithm, it looks like it is always sent as an HTTP header.
https://github.com/Azure/azure-sdk-for-js/blob/c2102f1134ba169d351bd3af35aec579679cbacb/sdk/storage/storage-blob/src/generated/src/models/parameters.ts#L777-L787

We had a problem in Azurite which may relate to this issue.
https://github.com/Azure/Azurite/issues/977

Thanks, I understand that it can be worked around by adding the --loose option when starting Azurite, but I'm aware that it's a JS SDK specific issue as other language SDKs (C# / Python) don't have this problem.

Hi @shibayan ,
Thanks for reporting this to us. This should be a bug in JS SDK. I'll fix it.
Will update here with any progress.
Thanks
Emma

https://github.com/Azure/azure-sdk-for-js/pull/20480

https://github.com/Azure/azure-sdk-for-js/issues/16362

Issue has been fixed.


Fix problems discovered w/ 1.5.1 builds deploying

Discovered in oc logs output:
ERROR! 'k8s' is not a valid attribute for a Block

The error appears to be in '/opt/ansible/roles/migrationcontroller/tasks/main.yml': line 173, column 7, but may
be elsewhere in the file depending on the exact syntax problem.

The offending line appears to be:
    - name: \"Create empty velero azure secret\"

Investigating around main.yml#173 yielded - in block at main.yml#L186

Discovered in oc logs output:
FAILED!

The conditional check 'migration_ui' failed. The error was: error while evaluating conditional (migration_ui): 'migration_ui' is undefined

The error appears to be in '/opt/ansible/roles/migrationcontroller/tasks/main.yml': line 36, column 5, but may
be elsewhere in the file depending on the exact syntax problem.

The offending line appears to be:
  - set_fact: ui_state=\\\"present\\\"

main.yml#L36-L46 fail when undefined.  Default them to false with https://github.com/rayfordj/mig-legacy-operator/commit/ce096c6ef6bbb39e4041f34684433393a64266fb.

Discovered in oc logs output:
FAILED!

The conditional check 'migration_ui' failed. The error was: error while evaluating conditional (migration_ui): 'migration_ui' is undefined

The error appears to be in '/opt/ansible/roles/migrationcontroller/tasks/main.yml': line 36, column 5, but may
be elsewhere in the file depending on the exact syntax problem.

The offending line appears to be:
  - set_fact: ui_state=\\\"present\\\"

main.yml#L36-L46 fail when undefined.  Default them to false with https://github.com/konveyor/mig-legacy-operator/pull/2/commits/b79718df2aa5c1f8d6aa9dfe68e9dd7453a56e7f.

Addressed in https://github.com/konveyor/mig-legacy-operator/commit/cee0fe4c086415b0ba85f8ea5285584fe89d091d and https://github.com/konveyor/mig-legacy-operator/commit/950c5add6d8e2a0efebd1fa7bfa7b3334e9f7491.


DM-42147 (cont): Move galsim; add >= pins (and pin HTCondor to LTS).

Checklist

[x] Used a personal fork of the feedstock to propose changes
[x] Bumped the build number (if the version is unchanged)
[ ] Reset the build number to 0 (if the version changed)
[x] Re-rendered with the latest conda-smithy (Use the phrase @conda-forge-admin, please rerender in a comment in this PR for automated rerendering)
[x] Ensured the license file is being packaged.

@conda-forge-admin, please rerender


Always use branching preprocessing with the syntax checker.

I was considering making this configurable via flags, but this is
a strong case of 'this should just do the right thing'.
We might need to start allowing +define+ command line options,
but that is on my short-list of things to implement.

Codecov Report

Merging #1289 (067f87a) into master (36b579c) will not change coverage.
The diff coverage is 100.00%.

:exclamation: Current head 067f87a differs from pull request most recent head 42ae955. Consider uploading reports for the commit 42ae955 to get more accurate results

@@           Coverage Diff           @@
##           master    #1289   +/-   ##
=======================================
  Coverage   92.87%   92.87%
=======================================
  Files         339      339
  Lines       23632    23632
=======================================
  Hits        21948    21948
  Misses       1684     1684

Impacted Files
Coverage Δ

verilog/tools/syntax/verilog_syntax.cc
94.44% <100.00%> (ø)

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 36b579c...42ae955. Read the comment docs.


Change state to redirect

As an Intake Analyst
I want to be able to mark a request as Redirect
so that I can action it and close it

Assumptions & Scope
What are the assumptions for this story?
We do not need a modal for this
What is in and not in scope?
Closing a request in Redirect state - that is covered in #469
Acceptance Criteria
Scenario 1: Intake in Progress request

GIVEN a request is in Intake in Progress state
WHEN the intake analyst clicks on the state update dropdown
THEN Redirect will be an option

Scenario 2: Redirect request

GIVEN an intake analyst has clicked the state dropdown for an Intake in Progress request
WHEN the analyst clicks Redirect
THEN the dropdown will close
AND the state will change to Redirect
AND the dropdown will read Redirect

...
Dependencies? What is the impact of this dependency? (If so, link dependency in the ticket, make it visible in a team´s backlog)
Validation Rules? (If yes, list here)
Design
@xxx - please link the Design here
Definition of Ready

[ ] Is there a well articulated User Story?
[ ] Is there Acceptance Criteria that covers all scenarios (happy/sad paths)?
[ ] If there is a user interface, is there a design?
[ ] Does the user story need user research/validation?
[ ] Does this User Story needs stakeholder approval?
[ ] Design / Solution accepted by Product Owner
[ ] Is this user story small enough to be completed in a Sprint? Should it be split?
[ ] Are the dependencies known/ understood? (technical, business, regulatory/policy)
[ ] Has the story been estimated?

Definition of Done

[ ] Passes developer unit tests
[ ] Passes peer code review
[ ] If there's a user interface, passes UX assurance
[ ] Passes QA of Acceptance Criteria with verification in Dev and Test
[ ] Confirm Test cases built and succeeding
[ ] No regression test failures
[ ] Test coverage acceptable by Product Owner
[ ] Ticket ready to be merged to master or story branch
[ ] Developer to list Config changes/ Update documents and designs
[ ] Can be demoed in Sprint Review
[ ] Tagged as part of a Release
[ ] Feature flagged if required
[ ] Change Management activities done?

@arielleandrews, @JHarrietha-AOT, do you think we need a modal for this state change? I think it's not necessary.
Note, any state changes will require the analyst to first save the request in an Unopened state with all the before they can select Redirect.

Duplicate

I agree it's not a necessity, but I wonder about the consistent user experience. Would love to hear from your design perspective @JHarrietha-AOT

@arielleandrews @lmullane for the MVP I don't think this is required. Give the user flow we are expecting users to go through for the MVP this won't be needed. I think it should be included post MVP when we are looking at the Split and Redirect for Intact that we tested a little while ago.


Support String as FmtConst and tuple keys

Would these changes make sense? Do we need any extra tests for this?
Threw in a formatting commit because I have the IDE set to format by default -- let me know if you want me to scratch that.
I was also surprised that the phf_codegen::Map::entry() method takes the value by reference and then immediately calls to_owned() on it. Presumably it would be more transparent in this case to just take a String argument?

I don't think this is working correctly. Will update if I ever have a need.


Fixes a bug in the circle example

I know this is the smallest of changes, but I was looking through the example and got an unexpected crash due to the circle's size being negative.
So I thought I would go ahead and create a PR to fix that.

Thank you for this, I'll investigate it soon :)


Ubuntu portability

Hi,
I am trying to run cf-operator on Ubuntu but failed because of [[ ]] is undefined in POSIX:
root@kube-playground:~/src/code.cloudfoundry.org/cf-operator# ./bin/up
./bin/up: 17: ./bin/include/versioning: [[: not found
./bin/up: 23: ./bin/include/versioning: Bad substitution

So I switched #!/bin/sh to #!/bin/bash and ran shellcheck to scripts under bin/.
https://github.com/koalaman/shellcheck/wiki/SC2039

@edwardstudy can you please rebase?

@viovanov Done

@viovanov Done


Performance of RPC response to eth_getLogs query seems to degrade as the chain grows.

Description
I am attempting to build a dApp on a substrate chain, Beresheet, which is using a version of frontier which has been forked off of commit 6e2e90833fdb9ee92f8e0a04fe0d217bfe07100d: https://github.com/webb-tools/frontier/tree/erup-4-update-master-substrate.
https://github.com/hicommonwealth/edgeware-node/tree/erup-4-up-substrate-master
This dApp makes use of the eth_getLogs RPC call for previous interactions with a smart contract. I have noticed RPC requests performance degrades as the size of the blockchain increases. At the time of contract deployment (blockNumber ~5000), I was able to query in 1000 block increments and successfully receive responses.  As the chain has grown (blockNumber ~167000 at time of writing), I receive timeouts for my RPC requests even when shrinking the range of block increments to 200 blocks.
Steps to Reproduce

Deploy a smart contract and interact with it to generate some events.
Make a call to the rpc using a script such as: https://github.com/webb-tools/evm-scripts/blob/5c65b89e6cb47b570b43a72e494809c50267ec52/scripts/ethers/viewPaginatedDepositEvents.js

Configure the block range to a size as big as possible while receiving successful responses to RPC requests.

Wait 1 or 2 days for the blockchain to grow in size.
Attempt to run the script again, and notice RPC requests start to fail.

Logs, Errors or Screenshots
Error: processing response error (body="{\"jsonrpc\":\"2.0\",\"error\":{\"code\":-32603,\"message\":\"query timeout of 10 seconds exceeded\"},\"id\":46}\n", error={"code":-32603}, requestBody="{\"method\":\"eth_getLogs\",\"params\":[{\"fromBlock\":\"0x1388\",\"toBlock\":\"0x1770\",\"address\":\"0x2ee2e51cab1561e4482cacc8be8b46ce61e46991\",\"topics\":[[\"0xa945e51eec50ab98c161376f0db4cf2aeba3ec92755fe2fcd388bdbbb80ff196\"]]}],\"id\":46,\"jsonrpc\":\"2.0\"}", requestMethod="POST", url="http://beresheet1.edgewa.re:9933", code=SERVER_ERROR, version=web/5.2.0)
    at Logger.makeError (/Users/nathanbarnavon/workspace/evm-scripts/node_modules/@ethersproject/logger/lib/index.js:187:21)
    at Logger.throwError (/Users/nathanbarnavon/workspace/evm-scripts/node_modules/@ethersproject/logger/lib/index.js:196:20)
    at /Users/nathanbarnavon/workspace/evm-scripts/node_modules/@ethersproject/web/lib/index.js:266:32
    at step (/Users/nathanbarnavon/workspace/evm-scripts/node_modules/@ethersproject/web/lib/index.js:33:23)
    at Object.next (/Users/nathanbarnavon/workspace/evm-scripts/node_modules/@ethersproject/web/lib/index.js:14:53)
    at fulfilled (/Users/nathanbarnavon/workspace/evm-scripts/node_modules/@ethersproject/web/lib/index.js:5:58)
    at processTicksAndRejections (node:internal/process/task_queues:94:5) {
  reason: 'processing response error',
  code: 'SERVER_ERROR',
  body: '{"jsonrpc":"2.0","error":{"code":-32603,"message":"query timeout of 10 seconds exceeded"},"id":46}\n',
  error: Error: query timeout of 10 seconds exceeded
      at getResult (/Users/nathanbarnavon/workspace/evm-scripts/node_modules/@ethersproject/providers/lib/json-rpc-provider.js:128:21)
      at processJsonFunc (/Users/nathanbarnavon/workspace/evm-scripts/node_modules/@ethersproject/web/lib/index.js:309:22)
      at /Users/nathanbarnavon/workspace/evm-scripts/node_modules/@ethersproject/web/lib/index.js:241:46
      at step (/Users/nathanbarnavon/workspace/evm-scripts/node_modules/@ethersproject/web/lib/index.js:33:23)
      at Object.next (/Users/nathanbarnavon/workspace/evm-scripts/node_modules/@ethersproject/web/lib/index.js:14:53)
      at fulfilled (/Users/nathanbarnavon/workspace/evm-scripts/node_modules/@ethersproject/web/lib/index.js:5:58)
      at processTicksAndRejections (node:internal/process/task_queues:94:5) {
    code: -32603,
    data: undefined
  },
  requestBody: '{"method":"eth_getLogs","params":[{"fromBlock":"0x1388","toBlock":"0x1770","address":"0x2ee2e51cab1561e4482cacc8be8b46ce61e46991","topics":[["0xa945e51eec50ab98c161376f0db4cf2aeba3ec92755fe2fcd388bdbbb80ff196"]]}],"id":46,"jsonrpc":"2.0"}',
  requestMethod: 'POST',
  url: 'http://beresheet1.edgewa.re:9933'
}

I have noticed the following error as well, but less frequently than the former:
/Users/nathanbarnavon/workspace/evm-scripts/node_modules/@ethersproject/logger/lib/index.js:187
        var error = new Error(message);
                    ^

Error: missing response (requestBody="{\"method\":\"eth_getLogs\",\"params\":[{\"fromBlock\":\"0x28870\",\"toBlock\":\"0x28938\",\"address\":\"0x2ee2e51cab1561e4482cacc8be8b46ce61e46991\",\"topics\":[[\"0xa945e51eec50ab98c161376f0db4cf2aeba3ec92755fe2fcd388bdbbb80ff196\"]]}],\"id\":708,\"jsonrpc\":\"2.0\"}", requestMethod="POST", serverError={"errno":-60,"code":"ETIMEDOUT","syscall":"connect","address":"<IP_ADDRESS>","port":9933}, url="http://beresheet3.edgewa.re:9933", code=SERVER_ERROR, version=web/5.2.0)
    at Logger.makeError (/Users/nathanbarnavon/workspace/evm-scripts/node_modules/@ethersproject/logger/lib/index.js:187:21)
    at Logger.throwError (/Users/nathanbarnavon/workspace/evm-scripts/node_modules/@ethersproject/logger/lib/index.js:196:20)
    at /Users/nathanbarnavon/workspace/evm-scripts/node_modules/@ethersproject/web/lib/index.js:213:36
    at step (/Users/nathanbarnavon/workspace/evm-scripts/node_modules/@ethersproject/web/lib/index.js:33:23)
    at Object.throw (/Users/nathanbarnavon/workspace/evm-scripts/node_modules/@ethersproject/web/lib/index.js:14:53)
    at rejected (/Users/nathanbarnavon/workspace/evm-scripts/node_modules/@ethersproject/web/lib/index.js:6:65)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (node:internal/process/task_queues:94:5) {
  reason: 'missing response',
  code: 'SERVER_ERROR',
  requestBody: '{"method":"eth_getLogs","params":[{"fromBlock":"0x28870","toBlock":"0x28938","address":"0x2ee2e51cab1561e4482cacc8be8b46ce61e46991","topics":[["0xa945e51eec50ab98c161376f0db4cf2aeba3ec92755fe2fcd388bdbbb80ff196"]]}],"id":708,"jsonrpc":"2.0"}',
  requestMethod: 'POST',
  serverError: Error: connect ETIMEDOUT <IP_ADDRESS>:9933
      at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1138:16) {
    errno: -60,
    code: 'ETIMEDOUT',
    syscall: 'connect',
    address: '<IP_ADDRESS>',
    port: 9933
  },
  url: 'http://beresheet3.edgewa.re:9933'
}

Tried to reproduce your issue here:
https://github.com/PureStake/frontier/blob/tgm-426
Please build with manual-seal and run the typescript tests - it will run only test-chain-grow.ts (https://github.com/PureStake/frontier/blob/tgm-426/ts-tests/tests/test-chain-grow.ts). It took ~1 hour to run for me locally:

Creates 5,000 blocks.
Then deploys a contract that emits some events.
Then creates 200,0000 more blocks.
Then queries in batches of 1,000 blocks to eth_getLogs for the address and topics.

All requests received responses and no timeout errors were thrown, so I couldn't reproduce it. Should output something like this:
Created 5000 blocks, transact.
1
10001
20001
...
180001
190001
{
  jsonrpc: '2.0',
  result: [
    {
      address: '0xc2bf5f29a4384b1ab0c063e1c666f02121b6084a',
      blockHash: '0xd33d12ddba40a8d3f644342ae827dd355b46696b499c44189faac943dfdf1362',
      blockNumber: '0x1',
      data: '0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff',
      logIndex: '0x0',
      removed: false,
      topics: [Array],
      transactionHash: '0x049dac83a9d5274c6754f1b03f7b8753203c8c51e01c07b9c3da761ec0e3bd60',
      transactionIndex: '0x0',
      transactionLogIndex: '0x0'
    }
  ],
  id: 1
}
{ jsonrpc: '2.0', result: [], id: 1 }
{ jsonrpc: '2.0', result: [], id: 1 }
{ jsonrpc: '2.0', result: [], id: 1 }
..
{ jsonrpc: '2.0', result: [], id: 1 }
{ jsonrpc: '2.0', result: [], id: 1 }


Some tickers inaccessible

Some valid tickers lead to panic when fetching from Yahoo Finance, even though they are valid. Observed that on exchanges outside the US. Examples are PETR4.SA and GGBR4.SA.
Maybe Alpha Vantage would be able to deal with those better? I know Yahoo has a history of making things difficult for this kind of use.
Sometimes other tickers (such as ETH-USD) also break, but that appears to be random or based on time of request.

Yes I also noticed that Yahoo Finance was not a very reliable source.
I am thinking of removing the *-fetch mode from cli-candlestick-chart. In my opinion the real role of this library is mainly to provide an API to draw charts in the terminal, not to be a bridge to brokers/data-sources.
Someone could build a tool on cli-candlestick-chart that would allow to find charts coming from several brokers/exchanges, that could be great, but indeed I don't think that is the role of cli-candlestick-chart


fix: limit validation errors in debugger

Description
When we have large, improperly formatted, data being validated; large number of error messages are rendered in the debugger.
For example, if we're trying to bind an array with 20000 entries (objects) in a chart widget, and these entries do not have x and y properties, validations return 20000 error messages (one for each entry). When the debugger tries to render these many messages, the application freezes for a few seconds.
The solution here, is to bail out of validations early IF we have already encountered a fixed number (in this case 10) of validation errors and show these messages in the debugger.
Does it negatively effect DX?
Fixing the issues shown so far will trigger another validation. As a result,

If there are more validation errors, they will be displayed.
If there aren't any more validation errors, the fix added earlier has fixed all validation errors.

Also, this only effects individual property validations. Each property with errors in validation, will have their errors displayed nevertheless.
There will not be any lack of relevant information displayed to an Appsmith developer.
Hence, there shouldn't be any negative effects to the DX.
Fixes # (issue)
Type of change

New feature (non-breaking change which adds functionality)

How Has This Been Tested?
Unit tests added and some updated
Checklist:

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

Test coverage results :test_tube:
:green_circle: Total coverage has increased
// Code coverage diff between base branch:release and head branch: fix/limit-validation-errors

Status
File
% Stmts
% Branch
% Funcs
% Lines

:green_circle:
total
55.03 (0.04)
36.37 (0.05)
34.71 (0.03)
55.41 (0.04)

:green_circle:
app/client/src/constants/messages.ts
75 (0.17)
100 (0)
25.9 (0.49)
80.47 (0.16)

:green_circle:
app/client/src/workers/validations.ts
81.95 (5.16)
71.23 (1.74)
76.67 (9.02)
83.39 (4.8)

/ok-to-test sha=c775bbf

/ok-to-test sha=c775bbf

/ok-to-test sha=16a272b

/ok-to-test sha=8daac92


South Africa Political Parties

By BeeswaxCDBs
1946:
Reunited National Party (Herenigde Nasionale Party). Merged with AP in 1951 to form National Party (Conservative/Traditional)
Afrikaner Party (Afrikanerparty). "" "" (Conservative/Traditional)
National Party (Nasionale Party). 1951-1997, if simplified should come to power in 1948 (Conservative/Traditional)
United Party (Verenidge Party). Dissolved in 1977, should be the ruling party in 1946 (Conservative/Liberal)
Labour Party (Arbeidersparty). Dissolved in 1958 (Socialist)
Liberal Party (Liberale Party). 1953-1968 (Liberal)
Progressive Party (Progressiewe Party). 1959->Progressive Reform Party (Progressiewe Reformiste Party) in 1975->Progressive Federal Party (Progressiewe Federale Party) in 1977, dissolved in 1989 (Liberal)
New Republic Party (Nuwe Republiekparty). 1977-1988 successor to United Party (Conservative/Liberal)
Conservative Party (Konserwatiewe Party). 1982-2004 (Conservative/Traditional)
Democratic Party (Demokratiese Party). 1989 formed from Progressive Federal Party->Democratic Alliance in 2000 (Liberal)

A sectarian regime (like the Apartheid in South Africa) is a bit special; the ruling party Nationalist has to be socialist


Backport changes for #427 to 2.0

Description
Backport PR for https://github.com/opensearch-project/notifications/pull/427
The ActionGet on ActionFuture is a blocking call. Making use of SuspendCoroutine to transform the blocking call to suspend by making use of OpenSearchClient ActionListener interface.
Issues Resolved
It partly addresses https://github.com/opensearch-project/notifications/issues/267
Check List

[ ] Commits are signed per the DCO using --signoff

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.
For more information on following Developer Certificate of Origin and signing off your commits, please check here.

Codecov Report

Merging #429 (e20fe47) into 2.0 (23dd949) will increase coverage by 0.08%.
The diff coverage is 76.19%.

@@             Coverage Diff              @@
##                2.0     #429      +/-   ##
============================================
+ Coverage     69.91%   69.99%   +0.08%
- Complexity       84       87       +3
============================================
  Files           123      124       +1
  Lines          3895     3923      +28
  Branches        614      613       -1
============================================
+ Hits           2723     2746      +23
- Misses          992     1000       +8
+ Partials        180      177       -3

Flag
Coverage Δ

dashboards-notifications
86.40% <ø> (ø)

opensearch-notifications
60.06% <76.19%> (+0.25%)
:arrow_up:

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files
Coverage Δ

...fications/action/CreateNotificationConfigAction.kt
81.81% <ø> (ø)

...fications/action/DeleteNotificationConfigAction.kt
81.81% <ø> (ø)

...earch/notifications/action/GetChannelListAction.kt
81.81% <ø> (ø)

...otifications/action/GetNotificationConfigAction.kt
81.81% <ø> (ø)

...ch/notifications/action/GetPluginFeaturesAction.kt
84.61% <ø> (ø)

...pensearch/notifications/action/PluginBaseAction.kt
43.28% <ø> (+1.49%)
:arrow_up:

.../notifications/action/PublishNotificationAction.kt
72.72% <ø> (ø)

...rch/notifications/action/SendNotificationAction.kt
81.81% <ø> (+9.09%)
:arrow_up:

...fications/action/UpdateNotificationConfigAction.kt
81.81% <ø> (ø)

...opensearch/notifications/index/ConfigOperations.kt
0.00% <0.00%> (ø)

... and 13 more

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 23dd949...e20fe47. Read the comment docs.


MGMT-14848: Enforce no-console eslint rule

CIM is breaking the tests, there are console.logs all over the place...


Remove RN methods from EmbraceImpl

Goal

Testing

Release Notes

WHAT:
WHY:
WHO:

Current dependencies on/for this PR:

master

PR #190   👈

PR #191

PR #192

PR #193

This stack of pull requests is managed by Graphite.


Issue with example

Hey guys! I was looking for exactly this and your project stood out to me.
However, when trying to use it with react-chartjs-2 the example doesn't seem to work.
Any known issues with that?

No known issues. Would need a reproduce (in codesandbox for example) to have a look.

Closing as stale


Shortest Path Doesn't Support Negative Edge Weights Properly

Hi,
First off, thank you so much for implementing this graph library, it's made some of my recent projects so much easier not having to implement all my own algorithms!
However I've found something that I'd be interested in the maintainer's views on. From looking at the code it appears as though the shortestPath function is using a variant of Djikstra's algorithm to find the shortest path, now this is fine, but in my particular use case I was using negative edge weights (because I wanted to find the longest path through a DAG) and I was getting different answers each time I ran the code. Eventually after some searching I realised that Djikstra's doesn't support negative edge weights: https://stackoverflow.com/questions/6799172/negative-weights-using-dijkstras-algorithm, but this wasn't clear from the function documentation. Now I realise my use case is slightly novel but I wondered if it would be possible to at least add a health warning/error case to the function so that people don't fall down the same hole that I did?
In the end I implemented shortest path via repeated DFS and TopologicalSorting so this isn't a huge blocker for me, but I wanted to add to the library in any way I could and thought this would be a good start.
Again huge thanks for this library

Hi,
I'm happy to hear you like this library! You're right – Dijkstra's algorithm doesn't support negative edge weights, and this should indeed be documented to avoid confusion. For very generic functions such as ShortestPath, this library usually prefers the more general, less performant solution over a less general, more performant solution, so it really would make sense to support negative edge weights even if the algorithm would be slightly slower. There would still be place for faster solutions tailored to a specific use case.
So I'm open to replace the implementation of ShortestPath with an algorithm that can deal with negative edge weights, such as Bellman-Ford or Johnson's algorithm, which modifies Dijkstra's algorithm to use Bellman-Ford. But I will admit that I'm not deep into these algorithms and can't make an informed decision yet, so any suggestions are welcome.

Hi,
I'm happy to hear you like this library! You're right – Dijkstra's algorithm doesn't support negative edge weights, and this should indeed be documented to avoid confusion. For very generic functions such as ShortestPath, this library usually prefers the more general, less performant solution over a less general, more performant solution, so it really would make sense to support negative edge weights even if the algorithm would be slightly slower. There would still be place for faster solutions tailored to a specific use case.
So I'm open to replace the implementation of ShortestPath with an algorithm that can deal with negative edge weights, such as Bellman-Ford or Johnson's algorithm, which modifies Dijkstra's algorithm to use Bellman-Ford. But I will admit that I'm not deep into these algorithms and can't make an informed decision yet, so any suggestions are welcome.

My recollection is that Johnson's algorithm is more performant so if that's the choice I'd probably say go with that. However I also wonder if there's a case for including a version based on DFS and TopologicalSorting just for DAGs? As this is one of the fastest solutions I've found, and in fact was what I ended up using. But 100% yes a health warning would be great, even if it only saves one other person falling down a StackOverflow rabbit hole!

However I also wonder if there's a case for including a version based on DFS and TopologicalSorting just for DAGs?

If that's the more performant choice for DAGs, then absolutely. This wouldn't even need to be in a dedicated function, a quick if g.Traits().IsDirected (followed by a in-algorithm cycle check, or a g.Traits().IsAcyclic) branch to run that algorithm would suffice.

By the way, do you think it would be an option to directly return an error on negative weights and document that negative weights aren't supported, at least for the time being? This usually is the library's approach of handling invalid input.

Both of those sound great to me :)

Hi,
We have also needed this functionality, so i put up a pr https://github.com/dominikbraun/graph/pull/155. When taking in a single source and destination like the ShortestPath signature does, BellmanFord should be more performant, so i decided to implement it going that route.


fixing imports, fix some type imports

What is it?
Error fix
Description
fixed the import trpc on client side
fixed the import prisma on server side
fixed some type imports

Thanks for your help 👍


[Bug] 图表高度为186px时, label 超出可视区域.

bugserver case id: 666845174fbcd500e2d9f333

will be resolved by global label anti-overlap algorithm in the next step


Random Number Generator

It takes the upper and lower limit from the user and generates a random number within the given limit.Please assign this issue to me under JWOC

@S-ishita Go for it.


Rel 1.38

 Thank you for your submission, we really appreciate it. Like many open source projects, we ask that you all sign our Contributor License Agreement before we can accept your contribution.1 out of 13 committers have signed the CLA.:white_check_mark: matz3:x: SebastianRied:x: Nanovsky:x: TeodorTaushanov:x: simlin:x: Gerrit Code Review:x: goligo:x: Stanley-78:x: Lidiya Georgieva:x: ShtiliyanUzunov:x: codeworrior:x: Sebastian Allmann:x: PetrStribrnyGerrit Code Review, Lidiya Georgieva, Sebastian Allmann seem not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account.

@hwholland could you please tell the reason for this PR?
rel-1.38 is not intened to be merged back into master.

Complete accident.  I'm new to GitHub.  Will stay off till I've gone through tutorials.  My appologies.
Sent via the Samsung Galaxy Note® 4, an AT&T 4G LTE smartphone
-------- Original message --------
From: Matthias Oßwald<EMAIL_ADDRESS>Date: 5/13/2016  3:31 AM  (GMT-05:00)
To: SAP/openui5<EMAIL_ADDRESS>Cc: hwholland<EMAIL_ADDRESS>Mention<EMAIL_ADDRESS>Subject: Re: [SAP/openui5] Rel 1.38 (#992)
@hwholland could you please tell the reason for this PR?
rel-1.38 is not intened to be merged back into master.
—
You are receiving this because you were mentioned.
Reply to this email directly or view it on GitHub

You didn't break anything, so no need to worry 😉


[Issue #272] change Regex matcher predicate's attributeList to attributeNames

This PR changes the attributeList in RegexPredicate's constructor to attributeNames.
This PR is part of the refactor plan in Issue #272 . Similar changes are in PR #275 , #277 , #314 and #315 .

LGTM.


JSONKeyEqual will give confusing error message when comparing JSON numbers

MatchResponse key 'matrix:image:size' got '2239' want '2239'

This is when using JSONKeyEqual on a match.JSON array.
Changing the error message section to the following;
  if !reflect.DeepEqual(gotValue, wantValue) {
    return fmt.Errorf("key '%s' got '%v' (%T) want '%v' (%T)", wantKey, gotValue, gotValue, wantValue, wantValue)
  }

Yields this more useful error message;

MatchResponse key 'matrix:image:size' got '2239' (float64) want '2239' (int)

This behaviour should probably be accounted for when extracting values with JSONKeyEqual, so either JSONKeyEqual will have to coerce all numerical types into float64, or give this above more-clear error message.

Bleh, thanks for pointing this out. Agreed, test writers should not need to know or care about this.

I got tripped up by this again today:
		PLContent := map[string]interface{}{
			"invite": 100,
			"users": map[string]interface{}{
				alice.UserID: 100,
			},
		}

		eventId := alice.SendEventSynced(t, roomID, b.Event{
			Type:     "m.room.power_levels",
			StateKey: b.Ptr(""),
			Content:  PLContent,
		})

		res := alice.MustDoFunc(
			t,
			"GET",
			[]string{"_matrix", "client", "v3", "rooms", roomID, "event", eventId},
		)

		must.MatchResponse(t, res, match.HTTPResponse{
			JSON: []match.JSON{
				match.JSONKeyEqual("content", PLContent),
			},
		})

MatchResponse key 'content' got 'map[invite:100 users:map[@alice:hs1:100]]' want 'map[invite:100 users:map[@alice:hs1:100]]'

This fails because the integer inside the powerlevel event's content is converted to float64, so doing a roundtrip is not possible.

One thing we can do is do a canonicalisation roundtrip by Marshalling and Unmarshal the compared-to interface{}, to make sure it matches the type quirks that reflect.DeepEquals needs.


Create .gitattributes

recognize the repository as CL code, not tex.
And the last one :)
Regards
https://github.com/github/linguist

Thank you for the suggestion and sorry for not replying earlier. We discussed your suggestion and couldn't really come to a decision. The main concern was cluttering the repository with only tangentially related meta-data.

Oh, ok, thanks for the explanation.
Indeed, this is secondary metadata, but it can be quickly forgotten afterwards,
and since the repo is on github this is a good practice IMHO, that can be useful to users (discovering repos, searching code, …) and to CL (to count the contributions as CL, not tex -I admit I may give too much value to this!).


Prevent re-order when active draft becomes empty

Details

Fixed Issues

$ https://github.com/Expensify/App/issues/6718
Tests

Desktop
Action 1

Write some text in any chat that is not the first chat in the list and has no directly preceding chat with a draft (see the screenshots)
Select a different chat

Result

The pencil symbol should appear on the chat and remain there
The chat list should re-order

Action 2

Repeat step 1 in action 2
Delete the text

Result

The pencil symbol should appear when the text is present and disappear when none
The list should not re-order

Action 3

Repeat step 1 in action 2
Send the message

Result

The pencil symbol should disappear
The list should re-order

Mobile
Actions

Repeat all actions under Desktop

Result

The list should always re-order when visible

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

PR Review Checklist

Contributor (PR Author)

[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 Staging and/or Production testing in the QA steps section
[ ] 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 included screenshots or videos for tests on all platforms
[x] I ran the tests on all platforms & verified they passed on:

[x] iOS / native
[x] Android / native
[x] iOS / Safari
[x] Android / Chrome
[x] MacOS / Chrome
[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)

[ ] 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.
[ ] I verified any copy / text shown in the product was added in all src/languages/* files
[ ] I verified any copy / text that was added to the app is correct English and approved by marketing by tagging the marketing team on the original GH to get the correct copy.
[ ] 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

[ ] 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
[ ] 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
[ ] 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 */
[ ] Any functional components have the displayName property
[ ] 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

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

[ ] 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.

PR Reviewer Checklist

[ ] 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
[x] I verified tests pass on all platforms & I tested again on:

[x] iOS / native
[x] Android / native
[x] iOS / Safari
[x] Android / Chrome
[x] MacOS / Chrome
[x] MacOS / Desktop

[ ] 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)
[ ] 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 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 was added in all src/languages/* files
[ ] I verified any copy / text that was added to the app is correct English and approved by marketing by tagging the marketing team on the original GH to get the correct copy.
[ ] 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 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 */
[ ] Any functional components have the displayName property
[ ] 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 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(themeColors.componentBG)

[ ] 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.

QA Steps

Desktop
Action 1

Write some text in any chat that is not the first chat in the list and has no directly preceding chat with a draft (see the screenshots)
Select a different chat

Result

The pencil symbol should appear on the chat and remain there
The chat list should re-order

Action 2

Repeat step 1 in action 2
Delete the text

Result

The pencil symbol should appear when the text is present and disappear when none
The list should not re-order

Action 3

Repeat step 1 in action 2
Send the message

Result

The pencil symbol should disappear
The list should re-order

Mobile
Actions

Repeat all actions under Desktop

Result

The list should always re-order when visible

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

Screenshots

Web

Action 1, Step 1

Action 1, Step 2

Action 2, Step 1

Action 2, Step 2

Action 3, Step 1

Action 3, Step 2

Mobile Web

Desktop

iOS

Android

I test it on the exact Node 14 mac environment that the guide describes and get props key warnings on a clean clone of the main branch (as well as this fork). Are they unknown or should I ignore them?
Other than that, I left checkboxes that I consider unrelated unchecked. In case they are, should I delete them or left them?

You can leave the unrelated checklist points as it is. If any warnings are not coming from your changes then they are fine. There should be none from your code changes. Please mark the PR ready for review when you are.

Comments added. So withReportActionsDrafts uses the REPORT_ACTIONS_DRAFTS collection, which bears the full draft text. Because of that, it's saved debounced. REPORTS_WITH_DRAFT on the other hand keeps only boolean flags and is set immediately. This resolves an old issue where the pencil icon lagged because of debouncing, which is the same reason why shouldReorder uses it.

@marktoman Ok so I think I have noticed the pattern. It does not happen the first time you create and delete the draft for a chat but it happens when doing it second time and further.
Action:

Create a draft in a report which is not first
Choose different report so the chat with the draft moves to the top
Choose the chat with the draft which is in the top now
Delete the draft
LHN does not reshuffle this time doing it for a first time
Click on different chat report
LHN reshuffles
Choose the same report as before
Repeat the steps and notice that this time, once deleting the draft (after the report is on top) the LHN reshuffles with a slight delay after deleting the draft without changing reports

@mountiny I am unable to replicate the problem. I wonder does the input defocus after the delay or is it bordered when it reshuffles?

@mountiny While I cannot replicate the exact problem, I have found another edge case that is very likely caused by the same problem. I expect to push an update tomorrow and steps to reproduce.

@marktoman I will try to make video

@mountiny  I have been able to reproduce the scrolling issue.
The edge case I discovered yesterday:

Do the steps once
In the active chat, right-click a message. The context menu shows up.
Dismiss the menu by clicking on the chat message

This category of problems was caused by unexpected prop updates. I strongly assume the original delay issue is the same kind.
The last commit makes it resilient against prop updates and fixes the above issues.

I will test it shortly.

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

Thank you both @mountiny and @parasharrajat for your help and review.

🚀 Deployed to staging by @mountiny in version: 1.1.56-0 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅

🚀 Deployed to production by @francoisl in version: 1.1.56-0 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅


Remove contact button when user is not logged in

Changes Made 🎉

[ ] feat: added new feature to improve user experience
[x] fix: corrected a bug with login functionality
[ ] refactor: improved code readability and organization
[ ] docs: updated README with new instructions
[ ] chore: updated dependencies and configuration files

Describe Changes
The contact button was visible when the user was not logged in.
I have added the condition to remove the button.
Related Issue(s)

Issue Number

Visuals (Optional)
Without login:

With login:

Checklist ✅

[x] My code follows the code style of this project.
[ ] My change requires a change to the documentation.
[ ] I have updated the documentation accordingly.

The button could be displayed but with a message "Log in to contact" or in case you do not want to repeat it several times (according to the cards) a paragraph explaining that you must log in.
What do you think @afordigital ?

I have a similar feeling to @juanpablo-is; I'd maybe leave the button as-is, but clicking it when not logged-in would prompt you to get logged in.

I agree with @juanpablo-is about the idea of the log in to contact, I think It's a good way to inform the user! We change that and merge!


Implemented filename pattern matching

Added functionality to match filename patterns in watch directories.

hi benhollomon,
thanks for your contribution. We merge you contribution in development.
We are no longer maintaining this project because is obsolet. We are providing other solutions for the same casuistry, check readme.
thanks,


Use Reachability API to cancel sync client reconnect delay

This PR adds the ability to use SystemConfiguration framework on Apple platforms to force sync client to reconnect without a delay after connection is back again.
It also adds SyncManager::reconnect() method to reset the reconnect delay for bindings manually.
SyncClient::cancel_reconnect_delay is not merged yet, but I'm happy to hear your feedback about this implementation.
/cc @bdash, @austinzheng, @jpsim, @cmelchior

I've updated the observer to use serial queue for the reachability callback, so now it should be save to create it on a background thread.
According to that Java and .Net guys are not really happy to mix any reachability-platform-specific code and events with OS I think we can keep #if REALM_PLATFORM_APPLE in sync client for apple platforms for now. There is SyncManager::reconnect() so it will be possible to use it to reset the delay from the bindings. But I'm happy to continue the discussion and implement any other approaches you prefer.

Can we figure out what we want to do about this PR? Continue working on it, discard, etc?

I've merged master and enabled reconnect delay reset. Moving it to Review again, @austinzheng let me know what you think about the current status, if we can use it for initial reconnect issue or if you need any help with this.

@stel Were you able to work out @cmelchior's earlier concerns? Otherwise, it looks good, let me think about it a little more.

The functionality is only available on Apple platforms and SyncManager has reconnect() method as requested, so I assume it should work for Java and others.
We discussed more generic approach for all other platforms that @cmelchior didn't like, but it's not implemented anyway.

If Java and .NET aren't interested in doing reachability at the object store level, is there any reason to do so for Apple platforms?

That's a good question. I suppose the main benefit we get is that it works for Xamarin and JS on Apple platforms out of the box?
Otherwise, I'd at least like to keep the refresh immediately API on SyncManager, so bindings can trigger it immediately if they decide to implement reachability themselves.

That was also what I was advocating for. Just have a refresh() method somewhere, and let the bindings decide when and how to call it

@cmelchior's comment at https://github.com/realm/realm-object-store/pull/289#discussion_r92355663 mentions that .NET wouldn't want to use this either, presumably because they'd implement reachability notifications in a portable way at the .NET layer.

So, to move forward, let's have @stel remove the Apple reachability code, leave in the refresh immediately API, and then I can file a ticket for him to build a RLMSyncReachabilityObserver class at the Cocoa binding level?

Sounds good to me, but what about JS? @kristiandupont, @fealebenpae does it make sense to have this reachability stuff on Apple platforms in OS or do you prefer to implement it by yourself in bindings?

@stel for JS it would be best to have it in OS - unlike .NET, JS cannot (easily) call native APIs so implementing Reachability at the JS layer would be next to impossible.

Presumably that means we'll need an implementation for Android, Linux, and Windows in the object store at some point. If we're going to do that, is there any reason for the Android and .NET bindings not to use that implementation?

To be honest I'm not against this happening at the Object Store level on all the platforms where possible, but doing this for Android (and to some extent Windows) in C++ would be painful - the relevant Android APIs are Java-based, and on Windows it's C++/CX. This is why I advocate adding a reconnect() method to start with - it will be easier to call C++ from Java or C# than the other way round, and it'd mean less development time and complexity for us to ship this. This shouldn't preclude our adding the Android, Windows, and Linux equivalents of RLMSyncReachabilityObserver to Object Store one by one later, though.

Hey guys, any update on getting this feature? For what it's worth, I agree that adding a reconnect() method and letting us handle internet connectivity ourselves (at least to start) is the way to go.
Then perhaps after you can bake this into your various platform libraries. But for us to be able to call reconnect() is a huge must at this point.
Thanks.

Because of Java is blocked on the cancel_reconnect_delay() method and the reachability stuff is still in discussion I can split this PR in 2 parts.

After the discussion in Slack to me it still seems like having this in OS is good idea because JS and .NET can also use it on Apple platforms.
@bdash please let me know if this looks good to you.
@fealebenpae please note that you'll need to link bindings agains SystemConfiguration.framework.

Sorry for delay with that and thanks for feedback, @bdash!
I've made some fixes, please let me know how it looks to you now.

Thanks @bdash!
I'll keep this opened to add runtime loading of SystemConfiguration.framework (see https://github.com/realm/realm-cocoa/pull/4794).

I've added the runtime loading of SystemConfiguration framework. Seems to works so far, tested it with RealmTasks.
But now I need a second round of review here..
/cc @bdash, @austinzheng, @jpsim

I've tested it on macOS and iOS, seems to work. watchOS doesn't have reachability support. will test on my appleTV as well this weekend.

If CI passes go ahead and merge it. You can test tvOS at your leisure.

It looks like the Android CI job is the one failing.

Checked it with tvOS last weekend - seems to work too.
That was some random issue on CI apparently, re-runing the job fixed that.
@fealebenpae, @nirinchev because JS and .NET bindings will also be affected by these changes, could you please let me know if it's fine by you to get it merged? To support it in bindings you'll probably need to make some changes like I did in Cocoa: https://github.com/realm/realm-cocoa/pull/4794/files.

Thanks a lot for the feedback, guys!

🎉  Wow, great work guys! Excited to start using this.
This is the first time I've followed an issue from the core library, what is the methodology for getting this released? Expected version, release time, etc.
Thanks!

This will be integrated into the Cocoa binding in realm/realm-cocoa#4794, and will be released shortly after that is merged.

Thanks @bdash. Out of curiosity, does that trickle down to your react-native / js library as well?

Yes, this project is mostly just beneficial internally to Realm where we use this repo as a shared layer for all our public SDKs: ObjC/Swift, Java, JS, .NET.


Fix typo

.Net -> .NET

@changeworld : Thanks for your contribution! The author, @nabhishek, has been notified to review your proposed change.

Merging the editorial fix.


ASCII art displays incorrectly in scikits.appspot.com

https://scikits.appspot.com/scikit-bio

We should probably replace the ascii in the readme with our actual logo, now that we have one. @johnchase Would you be up for doing this? The logo on the front of our homepage should work fine for this.

But ASCII >> graphics.
On (Mar-06-15|12:17), Evan Bolyen wrote:

We should probably replace the ascii in the readme with our actual logo, now that we have one. @johnchase Would you be up for doing this? The logo on the front of our homepage should work fine for this.

Reply to this email directly or view it on GitHub:
https://github.com/biocore/scikit-bio/issues/400#issuecomment-77628042

True, but logo ⊆ professional packages

:+1: I think having the ASCII art in skbio.__init__ makes sense, but we should use our logo on the web.

:+1: (but at heart I :-1: this change :P).
On (Mar-06-15|12:30), Evan Bolyen wrote:

True, but logo ⊆ professional packages

Reply to this email directly or view it on GitHub:
https://github.com/biocore/scikit-bio/issues/400#issuecomment-77629953

So we are at a consensus that the logo is going to be the actual graphic and not the ASCII art? If so I will make that change.

Yes, you are right @johnchase!
On (Mar-06-15|12:59), John Chase wrote:

So we are at a consensus that the logo is going to be the actual graphic and not the ASCII art? If so I will make that change.

Reply to this email directly or view it on GitHub:
https://github.com/biocore/scikit-bio/issues/400#issuecomment-77634659


Make deleting the id field before an update request optional

I usually design my PUT api like so:
[HttpPut]
public async Task<JsonResult> Put([FromBody] T item) {
    // ...
}

but after seeing the HTTP traffic from this plugin I had to change it to:
[HttpPut("{id}")]
public async Task<JsonResult> Put([FromRoute] Guid id, [FromBody] T item) {
    item.Id = id;
    // ...
}

See this thread if more context is needed: https://github.com/SpoonX/aurelia-api/issues/151

yeah, i'm not sure about that in the current setup. aurelia-orm is currently only using aurelia-api (better named aurelia-rest), so for restful webservices. and there the id is part of the path. i'd rather recommend to design your api backend to be restful

What is this syntax?

I can respect that if everyone wants to keep it strictly in line with typical REST implementations. Would it be against the standard too much to still send the ID with the URL but (perhaps optionally) not delete it from the request body?
@RWOverdijk The code above is from ASP.NET MVC 6, it was just meant to illustrate how much more verbose the ID Route implementation is.

i think the idea is to replace the update with updateOne(resource,id,..). that actually might help, since it.ll be easy to replace the updateOne of the used api instance with a custom one

@CuddleBunny there is also removeCollectionAssociation which uses like:
destroy('/users/1/comments/2')
so, how do you do that in your setup?

If my goal is to delete the comment entirely i would just:
DELETE: /api/comment
[Body]
{ id: 2 }
If I was disassociating the comment from the user without deleting it would be like:
PUT: /api/comment
{ id: 2, userId: null }
All of my association collections on the server side are convention based, so just nulling out the foreign key will remove if from the collection.

hmm. still might be easier/possible, when we allow other transports than aurelia-api. for now, you'd have to fixup your own aurelia-api to convert the path/body

I've just been rolling with it, but if anyone finds this and doesn't want to roll with it, simply deleting the line: delete requestBody[this.getIdProperty()]; from Entity.js would probably work.

@CuddleBunny I am with you on this one.  The Id should be included in the post as well. It a bit odd to pull the Id from the route and then put it back in the entity. Using aspnetentitycore.  But, like you say, the workaround is pretty easy.

If I understand correctly, the issue here is that the null value doesn't get persisted to the server? Because that's an easy fix, as you already found.

The issue is just that I believe the id property should not be deleted from the request body.

Right, and I'm pretty sure that can be done safely. I do agree it should perhaps be an option that can be configured somewhere. I can take a look some time in the future (a bit busy) but if you feel like it, you can make a PR as well. :)


Feature/data object

@NicolasGlassey Vous pouvez review cette PR.

Classe de test 'TestGCPDataObject' incomplète.
Github actions

Publish
Issue
Google.GoogleApiException : 'The service storage has thrown an exception. HttpStatusCode is BadRequest. Cannot update access control for an object when uniform bucket-level access is enabled. Read more at https://cloud.google.com/storage/docs/uniform-bucket-level-access'
Solution
To allow to attach specific access  right to an object change bucket policy with: gsutil uniformbucketlevelaccess set off gs://[BUCKET_NAME]

Publish public access prevention is enforced
Issue
Google.GoogleApiException : 'The service storage has thrown an exception. HttpStatusCode is PreconditionFailed. The member bindings allUsers and allAuthenticatedUsers are not allowed since public access prevention is enforced.'
Solution
Go to Storage browser in the GCP Console, find your bucket, click on the three dots on the right, and select Edit bucket then click on Permissions tab and uncheck Block all public access.
Didn't find the CLI.

In order to implement the API, this PR is merge.


RFC: replace crate with itm-decode

As discussed in the rust-embedded matrix channel this PR replaces the implementation of itm with that of a refactored itm-decode. This new implementation offers a similar std::io::Read-based API, but with:

more granular error enums (MalformedPacket);
re-alignment of the trace stream by handling the synchronization ITM packet; and
chrono::DateTime-timestamped trace packets by intercepting global and local timestamp packets.

The new API is based on Iterator: Decoder<R: Read>::singles returns an iterator that yields single TracePackets; Decoder<R: Read>::timestamps returns an iterator that yields TimestampedTracePackets.
Planned for the future is an additional iterator that intercepts and handles the arbitration (see #39) of TracePacket::Instrumentations and TracePacket::Extensions which would yield the stings written on the target via cortex_m::{iprint, iprintln}. A timestamp should be associated to the strings also.
Some work still remains to be done before I consider this PR ready for merge (presuming the team vote mentioned in the matrix channel discussion passes), namely documentation and more tests for Decoder<R: Read>::timestamps.
Below I'll review the current state of the reimplementation and request comments on certain parts.
Presuming this PR is merged: a v0.4.0 of itm will be tagged and released; issues from itm-decode will be moved here; and itm-decode will be deprecated in favour of itm 0.4.0 and above.

Closes #36
CC @adamgreig

Thanks for the pull request, and welcome! The Rust team is excited to review your changes, and you should hear from @therealprof (or someone else) soon.
Please see the contribution instructions for more information.

Perhaps we should adopt an async API instead of spin inside of Buffer::buffer_some? Then we can ditch the ignore_eof flag (first Poll::Peding would mean EOF) and DecoderErrorInt.

I'm happy with the state of the test bench for now. More should be added that tests GTS flags and additional compression, but the target I'm working with does support generation of global timestamps; I cannot dedicate more time than I already have on GTS functionality/testing.
While I'd prefer the API to be async I'm happy with the current implementation for a v0.4.0 release. An async API can be released with v0.5.0.
Next few commits I'll document the crate, after which I consider the PR ready for merge/voting.

Current implementation returns an absolute timestamp which requires the user to supply when the target was reset. As far as I understand this cannot be done nanosecond-accurately. Global and local timestamps are however exact and relative from target reset/boot. Should the chrono::DateTime (the accuracy of which depends on user-supplied data) be replaced by a chono::Duration (the accuracy of which will always be nanosecond-exact)?

is there a reason to stick with chrono instead of the time crate?

Not necessarily. I was not aware of time.

https://github.com/rust-embedded/wg/pull/589 has merged. This PR is no longer relevant. Closing.

@davidarmstronglewis, the library has been re-implemented and a v0.4.0 will be published soon. This fork contains itm (the library) and itm-decode (the CLI tool).


unexpected result with ascii value

this sample
// dotnet new console -n homoglyphic-test
// dotnet add homoglyphic-test package Homoglyphic -v 1.0.0

using System;
using Homoglyphic;

var pairs = HomoglyphLoader.LoadPairs("homoglyphs.csv");
var replacer = new HomoglyphReplacer(pairs);

string upper = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
string upperReplaced = replacer.Replace(upper);

string lower = "abcdefghijklmnopqrstuvwxyz";
string lowerReplaced = replacer.Replace(lower);

Console.WriteLine("{0} {1} {2}", upper, upper == upperReplaced ? "==" : "!=", upperReplaced);
Console.WriteLine("{0} {1} {2}", lower, lower == lowerReplaced ? "==" : "!=", lowerReplaced);

outputs
ABCDEFGHIJKLMNOPQRSTUVWXYZ != ABCDEFGH1JKLMN0PQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyz != abcdefghijk1mn0pqrstuvwxyz

The project has been re-designed. What I was initially hoping to accomplish (normalizing strings with homoglyphs to their common, English alphabet look-alikes) can't be done without a more complex analysis of the text being processed as there's no easy way to determine how to handle cases where, as you found, an upper-case i or lower-case l could be swapped for the number one and vice versa.
Version 2 instead focuses on providing the library with strings you are looking to find in a given string and it will tell you if there are any matches, with or without, homoglyphs, what the matches are and where they begin in the given string's char index.


Minor use case examples improvements

commit 8187d799facea6d8b985a0ece0ddf621ce127d20
Author: Kristian Amlie<EMAIL_ADDRESS>Date:   Thu Sep 27 16:11:26 2018

    Expand the use case example slightly for Update Confirmations.

    Signed-off-by: Kristian Amlie<EMAIL_ADDRESS>
commit 49bf95e03418a1eab2e14bfa9e3c1e4e2ba0fc24
Author: Kristian Amlie<EMAIL_ADDRESS>Date:   Thu Sep 27 16:07:29 2018

    Avoid suggesting state script that can break migration.

    Clarify that it is ArtifactInstall_Leave that should be used for
    migrations, not ArtifactReboot_Enter. This is important because if a
    spontaneous reboot happens while inside ArtifactReboot_Enter, it will
    be ignored, and hence the new partition will be entered with an
    incomplete migration in place. With ArtifactInstall_Leave it will
    instead cause a rollback, triggering a potential ArtifactFailure
    script which can undo the half done migration.

    Signed-off-by: Kristian Amlie<EMAIL_ADDRESS>

@drewmoseley: Just a couple of things that caught my eye while researching for update modules.

I think so, so I went ahead and cherry-picked to both of them.


[Help] Error when trying to build suricata 5.0.0 and dpdk 18.11.2

Hello @vipinpv85,
I have tried to build suricata 5.0.0 with dpdk 18.11.2 and I got an error:
dpdk-stable-18.11.2/x86_64-native-linuxapp-gcc/include/rte_mempool.h:134:2: error: expected specifier-qualifier-list before ‘STAILQ_ENTRY’
  STAILQ_ENTRY(rte_mempool_objhdr) next; /**< Next in list. */
  ^
dpdk-stable-18.11.2/x86_64-native-linuxapp-gcc/include/rte_mempool.h:149:1: warning: data definition has no type or storage class [enabled by default]
 STAILQ_HEAD(rte_mempool_objhdr_list, rte_mempool_objhdr);
 ^
dpdk-stable-18.11.2/x86_64-native-linuxapp-gcc/include/rte_mempool.h:149:1: warning: type defaults to ‘int’ in declaration of ‘STAILQ_HEAD’ [enabled by default]
dpdk-stable-18.11.2/x86_64-native-linuxapp-gcc/include/rte_mempool.h:149:1: warning: parameter names (without types) in function declaration [enabled by default]
dpdk-stable-18.11.2/x86_64-native-linuxapp-gcc/include/rte_mempool.h:168:1: warning: data definition has no type or storage class [enabled by default]
 STAILQ_HEAD(rte_mempool_memhdr_list, rte_mempool_memhdr);
 ^
dpdk-stable-18.11.2/x86_64-native-linuxapp-gcc/include/rte_mempool.h:168:1: warning: type defaults to ‘int’ in declaration of ‘STAILQ_HEAD’ [enabled by default]
dpdk-stable-18.11.2/x86_64-native-linuxapp-gcc/include/rte_mempool.h:168:1: warning: parameter names (without types) in function declaration [enabled by default]
dpdk-stable-18.11.2/x86_64-native-linuxapp-gcc/include/rte_mempool.h:174:2: warning: ‘struct rte_mempool_memhdr’ declared inside parameter list [enabled by default]
  void *opaque);
  ^
dpdk-stable-18.11.2/x86_64-native-linuxapp-gcc/include/rte_mempool.h:174:2: warning: its scope is only this definition or declaration, which is probably not what you want [enabled by default]
dpdk-stable-18.11.2/x86_64-native-linuxapp-gcc/include/rte_mempool.h:183:2: error: expected specifier-qualifier-list before ‘STAILQ_ENTRY’
  STAILQ_ENTRY(rte_mempool_memhdr) next; /**< Next in list. */
  ^
dpdk-stable-18.11.2/x86_64-native-linuxapp-gcc/include/rte_mempool.h:250:33: error: field ‘elt_list’ has incomplete type
  struct rte_mempool_objhdr_list elt_list; /**< List of objects in pool */
                                 ^
/dpdk-stable-18.11.2/x86_64-native-linuxapp-gcc/include/rte_mempool.h:252:33: error: field ‘mem_list’ has incomplete type
  struct rte_mempool_memhdr_list mem_list; /**< List of memory chunks */
                                 ^
dpdk-stable-18.11.2/x86_64-native-linuxapp-gcc/include/rte_mempool.h: In function ‘rte_mempool_from_obj’:
dpdk-stable-18.11.2/x86_64-native-linuxapp-gcc/include/rte_mempool.h:329:12: error: ‘struct rte_mempool_objhdr’ has no member named ‘mp’
  return hdr->mp;
            ^
dpdk-stable-18.11.2/x86_64-native-linuxapp-gcc/include/rte_mempool.h: In function ‘rte_mempool_virt2iova’:
dpdk-stable-18.11.2/x86_64-native-linuxapp-gcc/include/rte_mempool.h:1614:12: error: ‘const struct rte_mempool_objhdr’ has no member named ‘iova’

I tried to run your code with dpdk 18.11.2 and it had no problem. but when I change it to suricata 5.0.0 it got a problem above.
Could you give me more comment for this situation?
Thanks in advance!

@Onotoko Hi, have you found the solution for your issue? I am facing the same one.

@Onotoko and @mjasojedov the issue that you are facing is because of ordering in include files. The solution is to include dpdk.ueaders first.

@Onotoko  and @mjasojedov  there are no updates from your, happy to say the issue is found and fixed in the current repository. Happy hunting


[TUBEMQ-555] short session data can only be written to a specific partition (addendum)

Co-authored-by: 曹显乐<EMAIL_ADDRESS>

+1


虚拟机列表选择usb查询报错

What happened:

Environment:

OS (e.g. cat /etc/os-release):
Kernel (e.g. uname -a):

Fixed: https://github.com/yunionio/cloudpods/pull/14211


Add options to support byte string map keys as struct field names

Description
Introduces one encode option and one decode option to control the CBOR major type of struct field names.
The current behavior on encode is to produce text strings for field names, unless a field has the keyasint tag option, in which case it will serialize as either a positive or negative CBOR int. That remains the default encode behavior, with the new option to produce byte strings instead of text strings for fields that do not have the keyasint tag option.
Decoding a CBOR map containing a byte string key into a Go struct value currently produces an error. By overriding the default value of the new decode option, byte string map keys can also be recognized as struct field names.

PR Was Proposed and Welcomed in Currently Open Issue

[x] This PR was proposed and welcomed by maintainer(s) in issue #471
[x] Closes or Updates Issue #471

Checklist (for code PR only, ignore for docs PR)

[x] Include unit tests that cover the new code
[x] Pass all unit tests
[x] Pass all 18 ci linters (golint, gosec, staticcheck, etc.)
[x] Sign each commit with your real name and email.
Last line of each commit message should be in this format:
Signed-off-by: Firstname Lastname<EMAIL_ADDRESS>[x] Certify the Developer's Certificate of Origin 1.1
(see next section).

Certify the Developer's Certificate of Origin 1.1

[x] By marking this item as completed, I certify
the Developer Certificate of Origin 1.1.

Developer Certificate of Origin
Version 1.1

Copyright (C) 2004, 2006 The Linux Foundation and its contributors.
660 York Street, Suite 102,
San Francisco, CA 94110 USA

Everyone is permitted to copy and distribute verbatim copies of this
license document, but changing it is not allowed.

Developer's Certificate of Origin 1.1

By making a contribution to this project, I certify that:

(a) The contribution was created in whole or in part by me and I
    have the right to submit it under the open source license
    indicated in the file; or

(b) The contribution is based upon previous work that, to the best
    of my knowledge, is covered under an appropriate open source
    license and I have the right under that license to submit that
    work with modifications, whether created in whole or in part
    by me, under the same open source license (unless I am
    permitted to submit under a different license), as indicated
    in the file; or

(c) The contribution was provided directly to me by some other
    person who certified (a), (b) or (c) and I have not modified
    it.

(d) I understand and agree that this project and the contribution
    are public and that a record of the contribution (including all
    personal information I submit with it, including my sign-off) is
    maintained indefinitely and may be redistributed consistent with
    this project or the open source license(s) involved.

Thanks for the feedback, @fxamacker! I applied both of your suggestions.


check_fillna should use ffill not backfill

As I understand the code, check_fillna.  Each indicator provides its own fill method.
However, if the indicator doesn't have a default value, the pandas fill method with backfill is used.
This is not a good idea as it introduces an information leak - i.e. it's using the value derived from future bars.  'ffill' seems to be more appropriate here.
It's a fairly trivial fix to utils.py inside class IndicatorMixin/check_fillna around line 15.

Hi @RichardDale ,
Of course you are right, we need to fill data first in ffill mode and then we can apply the method selected by the programmer to fill the values for the first values (only if the user of the library wants to fill them).
The last commit in 'develop' branch add this idea. The next version of the library will add this feature.
Please, take a look to the updated code, and let me know what do you think: https://github.com/bukosabino/ta/blob/develop/ta/utils.py
Best,
Dario

Hi @RichardDale ,
This feature has been included in the last version of the library (v0.5.11).
To install the last ta version you can do:
pip install -U ta

Looks great - nice work Dario.


Fix missing security context for cloudsql proxy

PSA: Restricted stops the pod from working without this

Docs on allowed values are here: https://kubernetes.io/docs/concepts/security/pod-security-standards/#restricted


Native_2 New

New PR for native_2

Here is the version of this pull request that should be able to pass the documentation build checks. Nothing has been changed on the code since the previous version was approved

This looks good, but for future reference do we know why changes in formatting can cause the documentation builds to fail?

Anissa was able to find out that there is actually a bug in the most recent matplotlib update which causes problems when using tight_layout() and constrained_layout(). So while more recent PRs weren't necessarily using either of those functions, the already merged projections that had used it were causing build failures. Anissa reverted the version we were using to build on as a temporary fix while matplotlib works on fixing the bug, which should be available in the next update.


Remove dropzone from bower dependencies

Bower is basically an obsolete package manager as the JS world transitions to npm/yarn. Please consider removing dropzone from bower dependencies and grabbing it with npm instead.

Yes please :)

https://github.com/FutoRicky/ember-cli-dropzonejs/pull/69

I don't believe #69 was implemented correctly. The addon doesn't work unless you explicitly add dropzone to your pproject.

Noooo!!! I'm on the road but can push a fix later tonight 😬
On Wed, May 10, 2017 at 2:25 PM Egor Philippov<EMAIL_ADDRESS>wrote:

I don't believe #69
https://github.com/FutoRicky/ember-cli-dropzonejs/pull/69 was
implemented correctly. The addon doesn't work unless you explicitly add
dropzone to your pproject.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/FutoRicky/ember-cli-dropzonejs/issues/59#issuecomment-300571545,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAqJjZsoTeCan3avmGDNpC6qSi65-lBxks5r4gEggaJpZM4LRTg7
.

--
Jake LeBoeuf | @jakeleboeuf http://twitter.com/jakeleboeuf
Front End & UI/UX Engineer
Follow me: Github http://github.com/jakeleboeuf, Twitter
http://twitter.com/jakeleboeuf, and Instagram
http://instagram.com/jakeleboeuf

Thanks guys @jakeleboeuf @hoboman313

Feel free to take a stab at a fix if you need it sooner 🤗 @hoboman313