Mutable mapping for Azure Blob

[Description of PR]
TODO:

[ ] Add unit tests and/or doctests in docstrings
[ ] Add docstrings and API docs for any new/modified user-facing classes and functions
[ ] New/modified features documented in docs/tutorial.rst
[ ] Changes documented in docs/release.rst
[ ] Docs build locally (e.g., run tox -e docs)
[ ] AppVeyor and Travis CI passes
[ ] Test coverage is 100% (Coveralls passes)

I've got travis CI to work with azurite by pulling and running the docker image. This does not seem to delay the travis CI by much, and build times are comparable to when there was no azurite running in the background. So if it's ok, I would suggest we let the abs_store tests run in the same matrix and not as a separate build matrix.
For appveyor we can use the Azure storage emulator which seems to be pre installed in appveyor build vms: https://www.appveyor.com/docs/windows-images-software/. As you can see in the last few commits, I've had trouble trying to get it to run, as I've never really worked with windows commands before. I will try again next week, but until then if anyone knows how to solve this please post here.

After many failed builds, I have finally made the preinstalled azure storage emulator work on appveyor.
As you can see all tests pass on travis-ci, but all 4 builds fail on appveyor. In all the 4 appveyor python builds, the same two tests(TestGroupWithABSStore.test_getitem_contains_iterators and TestABSStore.test_hierarchy) break, with the same error, while on travis-ci, all tests, including these 2, pass. I haven't been able to figure out why this is happening. While I still try to figure out why it's happening, it would be great if someone could review this issue. @jakirkham @alimanfoo @martindurant .
I am almost certain that it's not a problem with the azure storage emulator itself, because when I run the 4 python versions tests locally on a windows laptop, but use azurite(using window subsystem for linux) instead of the azure storage emulator, the same above 2 tests fail with the same error for all 4 versions of python.

OK, it was a silly error, fixed now.

Is this kind of usage acceptable?

Sorry for slow reply. FWIW I think it would be fine just to import whatever you need within the functions where you need it. There shouldn't be any benefit from storing imports as instance variables, I believe imports get cached by Python.

Yes, python caches modules, so the first import is much more expensive than subsequent ones. Import do have a cost to them (<~0.1ms) which is larger than a dict or attribute lookup, but totally negligible in most circumstances.

Thanks for that @alimanfoo @martindurant
I have added the class to api docs and release notes.
As for the tutorial, I'm not sure where one could find a public azure blob? How was it done for the s3fs file system example in the tutorial?

How was it done for the s3fs file system example in the tutorial?

The s3 mocking library moto makes this easy.
For your case, you would probably want to use azurite on docker?

On Fri, 1 Feb 2019, 19:04 shikharsg<EMAIL_ADDRESS>wrote:

Thanks for that @alimanfoo https://github.com/alimanfoo @martindurant
https://github.com/martindurant
I have added the class to api docs and release notes.

Great, thanks.

As for the tutorial, I'm not sure where one could find a public azure
blob? How was it done for the s3fs file system example in the tutorial?

I have an AWS account, made a public S3 bucket then put some data in there.
In the tutorial it only reads from the bucket, so no need to make it
writable. If this is at all a pain for Azure then it's not essential.

On Fri, 1 Feb 2019, 19:07 Martin Durant<EMAIL_ADDRESS>wrote:

How was it done for the s3fs file system example in the tutorial?
The s3 mocking library moto makes this easy.

I actually used a real S3 bucket for the tutorial example.

For your case, you would probably want to use azurite on docker?

Would be nice to use something real if possible, if only to show exactly
the code someone else would need to write. But I guess could also use
azurite, esp. as it's already there and running on CI. The docstrings in
the tutorial get tested on Travis. Bottom line, any docs are better than
none, if it's complicated to include a working  example in the tutorial
then you also just mention that Azure is also an option and link through to
the API docs.
—

You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/zarr-developers/zarr/pull/345#issuecomment-459833011,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAq8QiVxbW3m_FWn9uy0BUIDapnFN-GAks5vJJBkgaJpZM4Y7M9f
.

I have a general question for the people on this thread. It has taken a fairly large number of commits and (I gather) quite a lot of effort to get this off the ground. I, of course, know little about Blob Store in particular, but I did suggest early on that it may be better to produce a full FileSystem interface in an external library in the manner of s3fs et al.
This is has become particularly easier lately with the rough release of fsspec, where must of the common code between file-system implementations. For instance, the key-value store comes for free. Note the large number of lines removed in compatibility PR for s3fs.
Do you have any opinion now, looking back, whether this separate mapping-only effort was the right path? (I am not trying to ruffle feathers, this is from the point of view of possible similar situations in the future)

Regarding the large number of commits on this PR, it's more because I'm a newbie to open source contribution and software testing. In particular you'll see a very large number of commits while I was trying to make Azure Storage Emulator work on Appveyor.
As far as implementing a file system interface for azure blob (and not keeping mutable mappings for azure blob in zarr library) is concerned I really don't have enough information to choose one over the other. I guess the benefit is that we'll have a full file system for azure blob which we can use for other purposes too, not just for zarr. Also the appveyor and travisci build with storage emulator and azurite respectively takes more than double the amount it used to take before, so better to make a file system for azure blob and do blob emulator testing there, and not in zarr. I guess the only downside to this is that we will have to install an extra library to make zarr work with azure blob. Otherwise I'm okay with either way TBH.

Given that this PR is basically done let's be pragmatic and get this merged
so we have something to work with. It would probably be a good idea to mark
this as an experimental feature, which just means that it's new and we
might need to make API changes as we get feedback.
If at some point someone decides to implement the full fsspec for ABS then
I'd be happy to look at depending on that instead of bundling our own
mapping.
As @shikharsg says most of the pain here was probably due to azurite, plus
my fault for giving slow feedback. Generally the experience of implementing
new store classes seems to have been positive, people like the simplicity
of implementing the MutableMapping interface directly. Which is not to say
we shouldn't look at fsspec, we should definitely keep it in mind as a
possible implementation path.
On Sun, 3 Feb 2019, 19:09 shikharsg<EMAIL_ADDRESS>wrote:

Regarding the large number of commits on this PR, it's more because I'm a
newbie to open source contribution and software testing. In particular
you'll see a very large number of commits while I was trying to make Azure
Storage Emulator work on Appveyor.
As far as implementing a file system interface for azure blob (and not
keeping mutable mappings for azure blob in zarr library) is concerned I
really don't have enough information to choose one over the other. I guess
the benefit is that we'll have a full file system for azure blob which we
can use for other purposes too, not just for zarr. Also the appveyor and
travisci build with storage emulator and azurite respectively takes more
than double the amount it used to take before, so better to make a file
system for azure blob and do blob emulator testing there, and not in zarr.
I guess the only downside to this is that we will have to install an extra
library to make zarr work with azure blob. Otherwise I'm okay with either
way TBH.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/zarr-developers/zarr/pull/345#issuecomment-460079033,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAq8Qve_00xv0IjydaOlpBSAE1D5fxcTks5vJzP9gaJpZM4Y7M9f
.

...which is also not to say people wouldn't enjoy implementing fsspec too,
I'm sure it's a good choice. Just that for where we are right now, with an
enthusiastic but small community who are often pressed for time, I think it
would be good to stay flexible and say to anyone who wants to contribute a
new store that they can either implement the MutableMapping interface
(following the store classes bundled in zarr as an example) or they can
implement fsspec (following s3fs or gcsfs as an example). We are happy with
either approach.
On Mon, 4 Feb 2019 at 11:19, Alistair Miles<EMAIL_ADDRESS>wrote:

Given that this PR is basically done let's be pragmatic and get this
merged so we have something to work with. It would probably be a good idea
to mark this as an experimental feature, which just means that it's new and
we might need to make API changes as we get feedback.
If at some point someone decides to implement the full fsspec for ABS then
I'd be happy to look at depending on that instead of bundling our own
mapping.
As @shikharsg says most of the pain here was probably due to azurite, plus
my fault for giving slow feedback. Generally the experience of implementing
new store classes seems to have been positive, people like the simplicity
of implementing the MutableMapping interface directly. Which is not to say
we shouldn't look at fsspec, we should definitely keep it in mind as a
possible implementation path.
On Sun, 3 Feb 2019, 19:09 shikharsg<EMAIL_ADDRESS>wrote:

Regarding the large number of commits on this PR, it's more because I'm a
newbie to open source contribution and software testing. In particular
you'll see a very large number of commits while I was trying to make Azure
Storage Emulator work on Appveyor.
As far as implementing a file system interface for azure blob (and not
keeping mutable mappings for azure blob in zarr library) is concerned I
really don't have enough information to choose one over the other. I guess
the benefit is that we'll have a full file system for azure blob which we
can use for other purposes too, not just for zarr. Also the appveyor and
travisci build with storage emulator and azurite respectively takes more
than double the amount it used to take before, so better to make a file
system for azure blob and do blob emulator testing there, and not in zarr.
I guess the only downside to this is that we will have to install an extra
library to make zarr work with azure blob. Otherwise I'm okay with either
way TBH.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/zarr-developers/zarr/pull/345#issuecomment-460079033,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAq8Qve_00xv0IjydaOlpBSAE1D5fxcTks5vJzP9gaJpZM4Y7M9f
.

--
Alistair Miles
Head of Epidemiological Informatics
Centre for Genomics and Global Health
Big Data Institute
Li Ka Shing Centre for Health Information and Discovery
University of Oxford
Old Road Campus
Headington
Oxford
OX3 7LF
United Kingdom
Phone: +44 (0)1865 743596 or +44 (0)7866 541624
Email<EMAIL_ADDRESS>Web: http://a http://purl.org/net/alimanlimanfoo.github.io/
Twitter: @alimanfoo https://twitter.com/alimanfoo
Please feel free to resend your email and/or contact me by other means if
you need an urgent reply.

Absolutely, this is useful and should be merged, I didn't mean to sound skeptical on that.

thanks all for the comments.
I have added a small snippet in tutorial.rst but it's using the emulator. Don't know if it's good enough.
Unfortunately the travis CI build won't get triggered, don't know why

can I add abs_store temporarily in the travis configuration?

Hello @shikharsg! Thanks for updating the PR.

In the file zarr/__init__.py, following are the PEP8 issues :

Line 7:80: E501 line too long (83 > 79 characters)
Line 10:80: E501 line too long (81 > 79 characters)
Line 15:80: E501 line too long (83 > 79 characters)

In the file zarr/storage.py, following are the PEP8 issues :

Line 4:80: E501 line too long (80 > 79 characters)
Line 8:80: E501 line too long (86 > 79 characters)
Line 9:80: E501 line too long (82 > 79 characters)
Line 10:80: E501 line too long (84 > 79 characters)
Line 11:80: E501 line too long (84 > 79 characters)
Line 12:80: E501 line too long (85 > 79 characters)
Line 13:80: E501 line too long (81 > 79 characters)
Line 14:80: E501 line too long (89 > 79 characters)
Line 44:80: E501 line too long (84 > 79 characters)
Line 45:80: E501 line too long (80 > 79 characters)
Line 103:80: E501 line too long (83 > 79 characters)
Line 126:80: E501 line too long (84 > 79 characters)
Line 152:80: E501 line too long (85 > 79 characters)
Line 153:80: E501 line too long (83 > 79 characters)
Line 165:80: E501 line too long (85 > 79 characters)
Line 211:80: E501 line too long (92 > 79 characters)
Line 282:80: E501 line too long (86 > 79 characters)
Line 309:80: E501 line too long (80 > 79 characters)
Line 318:80: E501 line too long (90 > 79 characters)
Line 327:80: E501 line too long (85 > 79 characters)
Line 328:80: E501 line too long (80 > 79 characters)
Line 378:80: E501 line too long (81 > 79 characters)
Line 381:80: E501 line too long (83 > 79 characters)
Line 383:80: E501 line too long (89 > 79 characters)
Line 407:80: E501 line too long (94 > 79 characters)
Line 468:80: E501 line too long (80 > 79 characters)
Line 674:80: E501 line too long (80 > 79 characters)
Line 706:80: E501 line too long (84 > 79 characters)
Line 707:80: E501 line too long (83 > 79 characters)
Line 755:80: E501 line too long (83 > 79 characters)
Line 766:80: E501 line too long (87 > 79 characters)
Line 923:80: E501 line too long (80 > 79 characters)
Line 938:80: E501 line too long (80 > 79 characters)
Line 1015:80: E501 line too long (85 > 79 characters)
Line 1025:80: E501 line too long (82 > 79 characters)
Line 1026:80: E501 line too long (83 > 79 characters)
Line 1073:80: E501 line too long (80 > 79 characters)
Line 1075:80: E501 line too long (83 > 79 characters)
Line 1086:80: E501 line too long (80 > 79 characters)
Line 1098:80: E501 line too long (80 > 79 characters)
Line 1105:80: E501 line too long (88 > 79 characters)
Line 1109:80: E501 line too long (82 > 79 characters)
Line 1118:80: E501 line too long (88 > 79 characters)
Line 1127:80: E501 line too long (84 > 79 characters)
Line 1128:80: E501 line too long (83 > 79 characters)
Line 1142:80: E501 line too long (87 > 79 characters)
Line 1146:80: E501 line too long (80 > 79 characters)
Line 1160:80: E501 line too long (89 > 79 characters)
Line 1334:80: E501 line too long (85 > 79 characters)
Line 1337:80: E501 line too long (88 > 79 characters)
Line 1347:80: E501 line too long (80 > 79 characters)
Line 1360:80: E501 line too long (80 > 79 characters)
Line 1362:80: E501 line too long (80 > 79 characters)
Line 1366:80: E501 line too long (84 > 79 characters)
Line 1377:80: E501 line too long (80 > 79 characters)
Line 1389:80: E501 line too long (80 > 79 characters)
Line 1391:80: E501 line too long (80 > 79 characters)
Line 1395:80: E501 line too long (82 > 79 characters)
Line 1396:80: E501 line too long (83 > 79 characters)
Line 1419:80: E501 line too long (83 > 79 characters)
Line 1458:80: E501 line too long (83 > 79 characters)
Line 1461:80: E501 line too long (87 > 79 characters)
Line 1528:80: E501 line too long (83 > 79 characters)
Line 1537:80: E501 line too long (87 > 79 characters)
Line 1548:80: E501 line too long (80 > 79 characters)
Line 1561:80: E501 line too long (80 > 79 characters)
Line 1563:80: E501 line too long (80 > 79 characters)
Line 1567:80: E501 line too long (84 > 79 characters)
Line 1573:80: E501 line too long (86 > 79 characters)
Line 1574:80: E501 line too long (90 > 79 characters)
Line 1576:80: E501 line too long (87 > 79 characters)
Line 1577:80: E501 line too long (86 > 79 characters)
Line 1584:80: E501 line too long (89 > 79 characters)
Line 1585:80: E501 line too long (87 > 79 characters)
Line 1592:80: E501 line too long (83 > 79 characters)
Line 1593:80: E501 line too long (84 > 79 characters)
Line 1594:80: E501 line too long (89 > 79 characters)
Line 1598:80: E501 line too long (84 > 79 characters)
Line 1599:80: E501 line too long (87 > 79 characters)
Line 1702:80: E501 line too long (81 > 79 characters)
Line 1703:80: E501 line too long (80 > 79 characters)
Line 1712:80: E501 line too long (87 > 79 characters)
Line 1721:80: E501 line too long (90 > 79 characters)
Line 1728:80: E501 line too long (91 > 79 characters)
Line 1732:80: E501 line too long (91 > 79 characters)
Line 1750:80: E501 line too long (82 > 79 characters)
Line 1751:80: E501 line too long (89 > 79 characters)
Line 1756:80: E501 line too long (82 > 79 characters)
Line 1798:80: E501 line too long (83 > 79 characters)
Line 1814:80: E501 line too long (86 > 79 characters)
Line 1862:80: E501 line too long (86 > 79 characters)
Line 1903:80: E501 line too long (91 > 79 characters)
Line 1962:80: E501 line too long (81 > 79 characters)
Line 1998:80: E501 line too long (91 > 79 characters)
Line 2007:80: E501 line too long (95 > 79 characters)
Line 2018:80: E501 line too long (85 > 79 characters)
Line 2021:80: E501 line too long (84 > 79 characters)
Line 2047:80: E501 line too long (80 > 79 characters)
Line 2259:80: E501 line too long (80 > 79 characters)
Line 2356:80: E501 line too long (80 > 79 characters)
Line 2419:80: E501 line too long (80 > 79 characters)
Line 2433:80: E501 line too long (86 > 79 characters)
Line 2466:80: E501 line too long (85 > 79 characters)

In the file zarr/tests/test_core.py, following are the PEP8 issues :

Line 18:80: E501 line too long (87 > 79 characters)
Line 19:80: E501 line too long (84 > 79 characters)
Line 25:80: E501 line too long (82 > 79 characters)
Line 225:80: E501 line too long (81 > 79 characters)
Line 367:80: E501 line too long (89 > 79 characters)
Line 661:80: E501 line too long (86 > 79 characters)
Line 735:80: E501 line too long (88 > 79 characters)
Line 768:80: E501 line too long (88 > 79 characters)
Line 864:80: E501 line too long (100 > 79 characters)
Line 874:80: E501 line too long (100 > 79 characters)
Line 883:80: E501 line too long (97 > 79 characters)
Line 930:80: E501 line too long (87 > 79 characters)
Line 977:80: E501 line too long (85 > 79 characters)
Line 980:80: E501 line too long (84 > 79 characters)
Line 983:80: E501 line too long (87 > 79 characters)
Line 998:80: E501 line too long (86 > 79 characters)
Line 1013:80: E501 line too long (84 > 79 characters)
Line 1031:80: E501 line too long (86 > 79 characters)
Line 1050:80: E501 line too long (85 > 79 characters)
Line 1054:80: E501 line too long (82 > 79 characters)
Line 1058:80: E501 line too long (84 > 79 characters)
Line 1072:80: E501 line too long (87 > 79 characters)
Line 1091:80: E501 line too long (84 > 79 characters)
Line 1112:80: E501 line too long (85 > 79 characters)
Line 1122:80: E501 line too long (87 > 79 characters)
Line 1131:80: E501 line too long (86 > 79 characters)
Line 1157:80: E501 line too long (82 > 79 characters)
Line 1333:80: E501 line too long (85 > 79 characters)
Line 1334:80: E501 line too long (86 > 79 characters)
Line 1802:80: E501 line too long (86 > 79 characters)
Line 1842:80: E501 line too long (83 > 79 characters)

In the file zarr/tests/test_hierarchy.py, following are the PEP8 issues :

Line 19:80: E501 line too long (86 > 79 characters)
Line 21:80: E501 line too long (81 > 79 characters)
Line 255:80: E501 line too long (86 > 79 characters)
Line 280:80: E501 line too long (80 > 79 characters)
Line 367:80: E501 line too long (84 > 79 characters)
Line 875:80: E501 line too long (85 > 79 characters)
Line 876:80: E501 line too long (86 > 79 characters)

In the file zarr/tests/test_storage.py, following are the PEP8 issues :

Line 24:80: E501 line too long (89 > 79 characters)
Line 26:80: E501 line too long (81 > 79 characters)
Line 152:80: E501 line too long (85 > 79 characters)
Line 722:80: E501 line too long (82 > 79 characters)
Line 884:80: E501 line too long (83 > 79 characters)
Line 911:80: E501 line too long (80 > 79 characters)
Line 1169:80: E501 line too long (81 > 79 characters)
Line 1290:80: E501 line too long (85 > 79 characters)
Line 1291:80: E501 line too long (89 > 79 characters)
Line 1323:80: E501 line too long (84 > 79 characters)
Line 1324:80: E501 line too long (84 > 79 characters)
Line 1325:80: E501 line too long (89 > 79 characters)
Line 1326:80: E501 line too long (89 > 79 characters)
Line 1380:80: E501 line too long (85 > 79 characters)
Line 1381:80: E501 line too long (86 > 79 characters)

Sorry for all the noise from pep8speaks, I need to configure it properly to our line length settings.

can I add abs_store temporarily in the travis configuration?

Sorry @shikharsg, not sure what you mean, could you clarify?

The travis build is not being triggered on the latest commits that I am making. So if you see the requests page of the travis build here, for some of the commits in this pull request it says 'Branch "abs_store" not included per configuration.', so I thought if I could add the abs_store branch to the travis.yml file(temporarily of course) then the build will be triggered. Like this:
branches:
  only:
    - master
    - abs_store

The travis build is not being triggered on the latest commits that I am making. So if you see the requests page of the travis build here, for some of the commits in this pull request it says 'Branch "abs_store" not included per configuration.', so I thought if I could add the abs_store branch to the travis.yml file(temporarily of course) then the build will be triggered. Like this:
branches:
  only:
    - master
    - abs_store

Thanks shouldn't be necessary. Perhaps travis is getting confused because you also have a PR open from your branch into zarr-developers:abs_store (#293). Can #293 be closed now in favour of this PR?

@alimanfoo thanks, that worked

I have added a small snippet to tutorial.rst, but that's still using the emulator. So we can choose whether or not to keep that.
Apart from that I think this is good to go.

Thanks @jakirkham, I have addressed your comments

Hi,
Is there anything else required on this pull request?  It'd be great to get this into master and into a release.
Thanks
Darren

I think some other people that have helped in the review (or have not) should give it a look to see if everything meets their expectations.

Any further input from anyone?  I'm keen to merge

Thanks all :)

Thanks indeed, fantastic to see this go in :clap:
I just realised that I missed @mzjp2 in the credits for this feature, I'll update the release notes directly.

Thanks all!

Thanks all!


CAMEL-16307 azure-storage-datalake:...?operation=getFile appends newline

to the file content

@ppalaga a question, I was looking at the datalake client source code and I saw that you can actually override the default serialization and thus you can override the record separator as explained here. Do you think it would probably make sense to use the other API with the customized query options instead of overriding BufferedInputStream?

I thought of that, but I have not found any way in the API docs how it would be possible to actually omit the separator. It only allows changing the separator to some other character which does not seem to help for our use case. But maybe I am missing something and you see a way how we could reach what we need? I'd definitely that option if it exists.

@ppalaga a question, I was looking at the datalake client source code and I saw that you can actually override the default serialization and thus you can override the record separator as explained here. Do you think it would probably make sense to use the other API with the customized query options instead of overriding BufferedInputStream?

I thought of that, but I have not found any way in the API docs how it would be possible to actually omit the separator. It only allows changing the separator to some other character which does not seem to help for our use case. But maybe I am missing something and you see a way how we could reach what we need? I'd definitely be for that option if it exists.

Yeah I know what you mean, the docs are not best. Let me give it a try using your IT and I will report back me myself not sure if it works or not

44744b2:

Added missing license headers
Removed superfluous throws declarations

The question is still open whether it is possible to configure the request in such a way that the delimiter is omitted.

5719198:

Added assertj

Thanks for checking, @omarsmak. We can remove wrapper stream once they add a new endpoint for this.


[stable/openvpn] Fix CRL keystore secret permissions

What this PR does / why we need it:
Chowns crl.pem file to nobody:nogroup in the keystore secret - this is needed since this file is read on every client connection and so once OpenVPN is running as nobody it still needs to be able to read it.
From the OpenVPN reference:

As the crl file (or directory) is read every time a peer connects, if you are dropping root privileges with –user, make sure that this user has sufficient privileges to read the file

The PR also fixes the check for the existence of the CRL file (as it is moved to ${EASY_RSA_LOC}/crl.pem instead of ${EASY_RSA_LOC}/pki/crl.pem).
Special notes for your reviewer:
Checklist
[Place an '[x]' (no spaces) in all applicable fields. Please remove unrelated fields.]

[x] DCO signed
[x] Chart Version bumped
[x] Title of the PR starts with chart name (e.g. [stable/chart])

Thanks for the contribution!
Can I ask - why increase the permissions as opposed to chown-ing the file to user nobody?

@jasongwartz unfortunately the filesystem containing the secret is mounted read-only:
chown: /etc/openvpn/certs/crl.pem: Read-only file system

so permissions need to be set beforehand.

Ah, of course. Thanks for clarifying

/ok-to-test

/lgtm


Translations: make website localizable (i18n)

Currently the website is only in English. Would be great if it was localized, for instance by using Leaflet.i18n or gulp-html-i18n.

A lot of OSM-related projects use Transifex for translation, which seems to be free for Open Source projects. There is also an OpenStreetMap group, but mostly with editing-related projects.

We now have a project on Tranisfex and a common team with Vespucci and others:
https://www.transifex.com/openstreetmap/brouter-web/

It looks like something like i18next + loc-i18next could do the trick. But I'm facing issues with modules/requires yet - not sure how we should handle that. Still learning things there :).

But I'm facing issues with modules/requires yet - not sure how we should handle that.

There should be a global variable i18next, see JSFiddle linked from Getting started, so we can ignore modules/requires?


Notebook opened from a readonly memfs is empty

Take the fsprovider sample: https://github.com/microsoft/vscode-extension-samples/tree/master/fsprovider-sample
Modify a line to write memfs:/file.github-issues, and modify line 11 to read:    context.subscriptions.push(vscode.workspace.registerFileSystemProvider('memfs', memFs, { isCaseSensitive: true, isReadonly: false }));

Run the extension, execute MemFS: Setup Workspace and MemFS: Create File
You can open other files in the workspace ✔
Try opening the github issues notebook, get this error 🐛

Unlike other files, the readFile method on the FileSystemProvider is not called for a notebook.

@connor4312 I cannot reproduce and the error rather seems to suggest that the file was not created initially?
Here is what I see:

Hm, I no longer can reproduce the error, although the notebook is always empty for me, even if I copy in the file contents of my-work.github-issues for example

Yeah I can reproduce that too. From my end it seems the data is loaded properly and then passed to the notebook model, not sure why it would return empty:

The notebook works just fine for me using this snippet. Make sure to test this with well encoded JSON etc because the GH issue notebook will not print any error when the data is invalid.
memFs.writeFile(vscode.Uri.parse(`memfs:/file.github-issues`), Buffer.from(JSON.stringify([{ kind: 1, value: '_hello_', language: 'markdown' }])), { create: true, overwrite: true });

However, I can reproduce the file not found error and that's an ugly one
ERR Error: Unable to read file 'memfs:/file.github-issues' (Error: Unable to resolve non-existing file 'memfs:/file.github-issues')
    at FileService.doReadFileStream (fileService.js:425)
    at processTicksAndRejections (internal/process/task_queues.js:93)
    at async StoredFileWorkingCopy.resolveFromFile (storedFileWorkingCopy.js:273)
    at async StoredFileWorkingCopyManager.resolve (storedFileWorkingCopyManager.js:289)
    at async SimpleNotebookEditorModel.load (notebookEditorModel.js:424)
    at async NotebookModelReferenceCollection.createReferencedObject (notebookEditorModelResolverServiceImpl.js:65)
    at async NotebookModelResolverServiceImpl.resolve (notebookEditorModelResolverServiceImpl.js:146)
    at async NotebookEditorInput.resolve (notebookEditorInput.js:146)
    at async NotebookEditor.setInput (notebookEditor.js:143)
    at async EditorControl.doSetInput (editorControl.js:156)
    at async EditorControl.openEditor (editorControl.js:65)
    at async file:/Users/jrieken/Code/vscode/out/vs/workbench/browser/parts/editor/editorGroupView.js:752

Steps:

Add notebook to the mem-fs sample
Run sample, create MemFS, create files, open notebook
With the notebook open, reload window
The notebook fails to be restored (because create files hasn't been run yet), you see the error above
Run create files
Re-try to open the notebook, the error-promise is cached and a proper retry is never attempted

Closed in release/1.57. For main @joaomoreno is looking into a AsyncReferenceCollection


feat: display class name in docs and cleanup docs

The class name is now shown in every class.
Page titles are specified in the md header - improved navigation

We're currently processing your upload.  This comment will be updated when the results are available.


Integrate BMI formulations with framework ET kernel

Integrates the BMI formulation types with the internal combination method ET kernel, along with a few other related changes.
Initial Draft PR
These changes require the alt-modular CFE implementation to work, as they need a model that actually accepts as input the ET kernel's output.  As such, creating as a draft PR for now.  Once #250 is approved and merged into this, and some updates are made to the necessary Github Actions workflow(s), this can move out of draft status.
Additions

initial calc_et implementation in Bmi_Formulation, somewhat hardcoded for specific use-case relevant to upcoming milestone test (e.g., combination method, some fixed parameters, etc.)
ET-specific namespaces for currently used combination kernel and essential components
*.cpp files for currently used combination ET kernel and essential components
ET-specific static library
helper functions in Bmi_Formulation for working with BMI variable names
support for configuring name of function pointer registration function for BMI C models
NGen "standard" mapped variable name for BMI model ET input variables
variable name mappings parameter in example realization configs as required for alt-modular CFE implementation
variable name mappings parameter in automated tests as required for alt-modular CFE implementation

Changes

forcing_file realization config param now optional rather than required
calc_et function signature in Et_Accountable interface (and implementing subtypes) now has no parameters and expects class state to provide everything needed for calculations
a few minor fixes to ET kernel components
modifications to the functions used within Bmi_C_Formulation.get_response  to set BMI input variables prior to making the BMI update call
declaration (though not definition) of the get_var_value_as_double convenience function for BMI output variable retrieval was moved up from Bmi_C_Formulation to Bmi_Formulation
corrected reference in BMI usage documentation referencing where NGen "standard" variable names are defined
switches to alt-modular CFE implementation instead of internally maintained CFE lib
documentation as needed for other changes
other required changes to unit tests as a result of code changes

FWIW, I'm a little concerned about something in the ET kernel params and calculations.  This type of warning gets printed a large number of times during the BMI C formulation unit tests.

Invalid value of specific humidity with no supplied rel. humidity in ET calc. function:
Relative Humidity: -99.900000 percent
Specific Humidity: 0.009300 kg/kg

There are not any test failures because the ET kernel code automatically makes an adjustment, but the comments in the kernel code specifically say that "this is bad" and should not happen.  See around line 417 in EtCalcProperty.cpp for where this originates.
As far as I can tell, things leading up to this block of code are operating correctly/as expected:

the et_forcing.relative_humidity_percent is deliberately hard-coded to -99.9 to dictate use of specific humidity

this is set in Bmi_Formulation.calc_et(), which eventually calls the kernel

the right forcing values for specific humidity, pressure, and temperature appear to be getting used for the air_saturation_vapor_pressure_Pa and air_actual_vapor_pressure_Pa calculations

My examination of the EtCalProperty.hpp (I don't see EtCalProperty.cpp)
code logic suggests that variable is not used because aorc_yes is set to
True.
Shengting
On Tue, May 18, 2021 at 10:57 AM Robert Bartel @.***>
wrote:

FWIW, I'm a little concerned about something in the ET kernel params and
calculations. This type of warning gets printed a large number of times
during the BMI C formulation unit tests.
Invalid value of specific humidity with no supplied rel. humidity in ET
calc. function:
Relative Humidity: -99.900000 percent
Specific Humidity: 0.009300 kg/kg
There are not any test failures because the ET kernel code automatically
makes an adjustment, but the comments in the kernel code specifically say
that "this is bad" and should not happen. See around line 417 in
EtCalcProperty.cpp
http://src/models/kernels/evapotranspiration/EtCalcProperty.cpp for
where this originates.
As far as I can tell, things leading up to this block of code are
operating correctly/as expected:

the et_forcing.relative_humidity_percent is deliberately hard-coded
to -99.9 to dictate use of specific humidity

this is set in Bmi_Formulation.calc_et(), which eventually calls
the kernel

the right forcing values for specific humidity, pressure, and
temperature appear to be getting used for the
air_saturation_vapor_pressure_Pa and air_actual_vapor_pressure_Pa
calculations

—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/NOAA-OWP/ngen/pull/251#issuecomment-843291640, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/ACA4SRL7PI4MC37J3RAKYXTTOKE5DANCNFSM45CTWHJA
.

Temporarily, due to permissions issues with the alt-modular repo, the actions that run the automated BMI unit tests will still fail (though not the tests themselves, which don't actually get called).  These have have been successfully run locally on a Mac, and will be shortly on a Linux machine in preparation for the upcoming milestone test.
As such, moving this out of draft status.


[SPARK-16343][SQL] Improve the PushDownPredicate rule to pushdown pre…

What changes were proposed in this pull request?
Currently our Optimizer may reorder the predicates to run them more efficient, but in non-deterministic condition, change the order between deterministic parts and non-deterministic parts may change the number of input rows. For example:
SELECT a FROM t WHERE rand() < 0.1 AND a = 1
And
SELECT a FROM t WHERE a = 1 AND rand() < 0.1
may call rand() for different times and therefore the output rows differ.
This PR improved this condition by checking whether the predicate is placed before any non-deterministic predicates.
How was this patch tested?
Expanded related testcases in FilterPushdownSuite.

Can one of the admins verify this patch?

cc @liancheng @cloud-fan

ok to test

Test build #61691 has started for PR 14012 at commit 856d86d.

Test build #61691 has finished for PR 14012 at commit 856d86d.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/61691/
Test PASSed.

add to whitelist

Test build #61748 has started for PR 14012 at commit 856d86d.

Test build #61748 has finished for PR 14012 at commit 856d86d.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/61748/
Test PASSed.

Test build #61751 has started for PR 14012 at commit c005645.

Test build #61751 has finished for PR 14012 at commit c005645.

This patch fails Scala style tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test FAILed.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/61751/
Test FAILed.

Test build #61752 has started for PR 14012 at commit a4e62f0.

Test build #61752 has finished for PR 14012 at commit a4e62f0.

This patch fails Scala style tests.
This patch merges cleanly.
This patch adds no public classes.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/61752/
Test FAILed.

Merged build finished. Test FAILed.

Test build #61753 has started for PR 14012 at commit 33d45de.

Test build #61753 has finished for PR 14012 at commit 33d45de.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/61753/
Test PASSed.

cc @liancheng please review this PR, thanks!

LGTM except for some minor comments. Thanks for improving this!

One more thing, please complete the PR title.

is it a typo in PR title? currectly -> correctly

Test build #61985 has started for PR 14012 at commit 98d369e.

Test build #61985 has finished for PR 14012 at commit 98d369e.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/61985/
Test PASSed.

Merged build finished. Test PASSed.

@liancheng please find some time to review the latest updates, thanks!

Test build #62100 has started for PR 14012 at commit 9b2b5a8.

Test build #62100 has finished for PR 14012 at commit 9b2b5a8.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/62100/
Test PASSed.

Thanks! Merged this to master.

Since this is a correctness fix, albeit a minor one, I'd like to backport it. I'm going to cherry-pick this to branch-2.0.


⚠ Punto de Fuga has degraded performance

In 8302469, Punto de Fuga (http://puntodefugapodcast.com) experienced degraded performance:

HTTP code: 200
Response time: 16252 ms

Resolved: Punto de Fuga performance has improved in 2fc42dd.


Documentation

Documentation!

We should at least build the API docs, such as they are. At the moment docs aren't even being built in CI.

@epatters @mehalter, I have no idea why the docs aren't being built in CI. I looked at AlgebraicDynamics and the configurations are the same (at least everywhere that I looked)

I am in the process of converting the pipelines to use the new manner of storing the Julia depot, which is more maintainable. I should be finished in the hour.

Thank you, @quffaro!

I think I just turned off the docs in julia_ci.yml manually in a fit of rage when I couldn't convince Documenter to even build the autodocs, see here: https://github.com/AlgebraicJulia/DataMigrations.jl/commit/7e517691dcb2b8212dfc62fa30cb0701f5a42b8b

Ah ok I that explains the crater where the docs block was in the yaml. I'll focus my attention on coaxing Documenter to do the right thing


Potential typo in 1.1 Motivation

(Not native English, so I may be wrong)
There seems to be a typo in 1.1 Motivation, first sentence:
"Today, C++ software is increasingly asynchronous and parallelism"
"parallelism" should probably be "parallel"

Yep, that's a typo.


CJS lib issue "TypeError: invariant is not a function"

When you try and use the DefaultParser from @yozora/core-parser using the cjs lib you get the following error:
TypeError: invariant is not a function
    at consumeNewOpener (https://cigod8.csb.app/node_modules/@yozora/core-parser/lib/cjs/index.cjs:143:13)
    at Object.consume (https://cigod8.csb.app/node_modules/@yozora/core-parser/lib/cjs/index.cjs:303:13)
    at matchBlockTokens (https://cigod8.csb.app/node_modules/@yozora/core-parser/lib/cjs/index.cjs:793:27)
    at Object.process (https://cigod8.csb.app/node_modules/@yozora/core-parser/lib/cjs/index.cjs:736:32)
    at CustomParser.parse (https://cigod8.csb.app/node_modules/@yozora/core-parser/lib/cjs/index.cjs:975:32)
    at Object.eval (https://cigod8.csb.app/src/CustomParser.test.ts:15:25)
    at https://codesandbox.io/static/js/3.09a963795.chunk.js:1:338381
    at new Promise (<anonymous>)
    at t.callAsyncFn (https://codesandbox.io/static/js/3.09a963795.chunk.js:1:338040)
    at https://codesandbox.io/static/js/7.916d1bd34.chunk.js:1:6522
    at c (https://codesandbox.io/static/js/vendors~app~embed~sandbox~sandbox-startup.7424373eb.chunk.js:1:4328)

Here is a code sandbox for the problem:
https://codesandbox.io/s/delicate-haze-cigod8?file=/index.html
The @yozora/invariant/lib/cjs/index.cjs looks like:
'use strict';

Object.defineProperty(exports, '__esModule', { value: true });
...
function invariant(condition, message) {
    ...
}

exports.default = invariant;
exports.invariant = invariant;

which comes from https://github.com/yozorajs/yozora/blob/main/packages/invariant/src/index.ts
export function invariant(
  condition: boolean,
  message?: string | (() => string),
): asserts condition {
  ...
}

export default invariant

The problem occurs when @yozora/core-parse/lib/cjs/index.cjs requires the @yozora/invariant', expecting the default to be the invariant function.
var invariant = require('@yozora/invariant');

But for this to work it would need to use the default:
var invariant = require('@yozora/invariant').default;

I am no rollup expert but I think it may be something to do with this issue: https://github.com/rollup/rollup/issues/1961
Thanks

Hi @ep-mark , thank you for trying out yozora, the issue you reported is ACK, and I will take the time to fix it. Maybe I will remove all default export of all packages under this monorepo, which would completely avoid this bundle issue (this is a breaking change, but I think it's okay since there are no third-party dependencies).

@guanghechen That fixed it! Thanks!


Specify NuGet package prerelease label for nightly

Consume changes from martincostello/update-dotnet-sdk#769 to support restricting NuGet package updates for nightly builds.
Remove . suffix from NuGet package updates for EntityFrameworkCore.

Successful usage


[Web Portal] fix job detail page's stdout/stderr/ssh info css bug

#2554
This PR is a shim of webkit's flexbox bug.
The bug has been fixed in the latest version of Chrome/Chromium/Opera.

webkit:  https://bugs.webkit.org/show_bug.cgi?id=137730#c24
chromium: https://bugs.chromium.org/p/chromium/issues/detail?id=784059

Coverage remained the same at 53.314% when pulling f0696759507f97338f0db4fcdc3a78a13f543e90 on qinsu/chromium into fda315928849486d4824f7b52ea7914f9f0bf79d on master.


IndexError: max(): Expected reduction dim 0 to have non-zero size.

Hi, great work of this wonderful project! However, I'm having some problems in running cityrefer. I sincerely hope you can help me.
I configured the environment of cityrefer as described in Installation, but I got an error when I ran the following command.
!pip install --upgrade<EMAIL_ADDRESS>###############################
Collecting<EMAIL_ADDRESS>Cloning https://gitclone.com//github.com/mit-han-lab/torchsparse.git (to revision v1.4.0) to /tmp/pip-req-build-9mc56f1o
Running command git clone --filter=blob:none --quiet https://gitclone.com//github.com/mit-han-lab/torchsparse.git /tmp/pip-req-build-9mc56f1o
warning: filtering not recognized by server, ignoring
Running command git checkout -q 74099d10a51c71c14318bce63d6421f698b24f24
Resolved https://gitclone.com//github.com/mit-han-lab/torchsparse.git to commit 74099d10a51c71c14318bce63d6421f698b24f24
Preparing metadata (setup.py) ... done
Building wheels for collected packages: torchsparse
error: subprocess-exited-with-error
× python setup.py bdist_wheel did not run successfully.
│ exit code: 1
╰─> See above for output.
note: This error originates from a subprocess, and is likely not a problem with pip.
Building wheel for torchsparse (setup.py) ... error
ERROR: Failed building wheel for torchsparse
Running setup.py clean for torchsparse
Failed to build torchsparse
ERROR: Could not build wheels for torchsparse, which is required to install pyproject.toml-based projects
###############################
Then, I ran the following command to successfully install torch-sparse (but I'm not sure if the version is correct).
!python -c "$(curl -fsSL https://raw.githubusercontent.com/mit-han-lab/torchsparse/master/install.py)"
###############################
evaluate...
preparing data...
Loading data...
evaluating...
seed 42
generating the scores for seed 42...
1% 2/225 [00:07<13:27,  3.62s/it]
Traceback (most recent call last):
File "/content/gdrive/MyDrive/CityRefer-main/CityRefer-main/scripts/eval.py", line 444, in
eval_ref(args, CONF, DC)
File "/content/gdrive/MyDrive/CityRefer-main/CityRefer-main/scripts/eval.py", line 194, in eval_ref
data_dict = model(data_dict)
File "/usr/local/lib/python3.10/dist-packages/torch/nn/modules/module.py", line 1194, in _call_impl
return forward_call(*input, **kwargs)
File "/content/gdrive/MyDrive/CityRefer-main/CityRefer-main/models/cityrefer.py", line 108, in forward
geo_feats = self.pooling(geo_feats)
File "/usr/local/lib/python3.10/dist-packages/torch/nn/modules/module.py", line 1194, in _call_impl
return forward_call(*input, **kwargs)
File "torchsparse/nn/modules/pooling.pyx", line 20, in torchsparse.nn.modules.pooling.GlobalMaxPool.forward
File "torchsparse/nn/functional/pooling.pyx", line 25, in torchsparse.nn.functional.pooling.global_max_pool
IndexError: max(): Expected reduction dim 0 to have non-zero size.
###############################

The latter is an error reported on https://github.com/mit-han-lab/torchsparse/issues/218.
This issue may come from the torchsparse version.

Would you mind telling me which verision of torchsparse did you use?
My specific version configuration is shown below.
##############
torchsparse                      2.1.0+torch113cu116
torch                            1.13.1+cu116
torchaudio                       0.13.1+cu116
torchdata                        0.7.0
torchsummary                     1.5.1
torchtext                        0.16.0
torchvision                      0.14.1+cu116
##############

I used torchsparse 1.4.0.


i18n/l10n support

When I add verbose_name and verbose_name_plural to a model's Meta, the breadcrumbs are as expected. However, even though I use gettext_lazy, the breadcrumbs are never translated and instead show the (english) untranslated string. Everything else in my application is translating correctly.

Can you add a sample configuration ??

@Crazor This has been resolved Thanks


Broken link

Under Scenario 2, the next-to-last paragraph has a broken link in "any of these public IP addresses are a candidate for outbound flows, and one is selected at random." pointing to https://docs.microsoft.com/en-us/azure/load-balancer/load-balancer-outbound-connections#multivipsnat. It seems to me that the intention could have been to point to https://docs.microsoft.com/en-us/azure/load-balancer/load-balancer-outbound-connections#multife but I can't be 100% sure.

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

ID: a96406ce-2ffc-cdb3-1234-5154ccd5cc76
Version Independent ID: f840a092-e1bf-16e2-1916-4270cdfbbcdd
Content: Outbound connections in Azure
Content Source: articles/load-balancer/load-balancer-outbound-connections.md
Service: load-balancer
GitHub Login: @KumudD
Microsoft Alias: kumud

Sorry, I am unable to locate the broken link that is mentioned - https://docs.microsoft.com/en-us/azure/load-balancer/load-balancer-outbound-connections#multivipsnat. The issue seems to have been addressed. Thanks!
#please-close

@alexvy86 We will now proceed to close this thread. If there are further questions regarding this matter, please tag me in your reply. We will gladly continue the discussion and we will reopen the issue.


Translate integration

Integrate support for translation keys for ngx-translate
The ngx-translate is a module that supports translation files, a good idea would be to add its service to translate incoming string so that when you add a translation key to the toast message it will translate it.
example :
this.toastyService.success("TOAST.UPDATE.SUCCESS");

At first sight i guess its doable in here https://github.com/akserg/ng2-toasty/blob/master/src/toasty.service.ts in the add method, if @akserg you are ok with that , please assign the issue to me ill add the changes.

Btw ive currently a wrapper service:
export class ToastService {
    constructor(private toastyService: ToastyService,
                private translateServie: TranslateService){
    }

    default(options: ToastOptions | string | number): void {
        if(typeof options == "string") {
            this.translateServie.get(options).subscribe((message)=>{
                this.toastyService.default(message);
            })
        }
    };
//....
}


Improve crd-extractor script

Fetch CRDs in parallel
Avoid use of associative array
Handle space in file path

@kishorviswanathan thank you for improving the script!
did you have a chance to run some tests with your version of the script?

@eyarz The networking CRDs I extracted from GKE was using the updated script. It worked fine. I don't have access to any other clusters, so I am not really sure how to test it. Do you have something in mind ?

@userbradley @ElanHasson can I get you help in reviewing this?
not a bash expert here and because this is a core utility I want to make sure someone will have a second look here before merging :)

FWIW I was able to test this and run it just fine.

@onedr0p thank you for the feedback!
I will wait for one more reviewer before merging it because it's a critical component in the repo


Document requirement on Emacs version

After reading the straight.el documentation several times during spare evening time, it looked perfect! At last, a package manager that will work for me who work in a heterogenous environment with various Emacs versions on different systems! Hooray!
Not so much:
straight.el requires at least Emacs 25, but you are running Emacs 24.5.1

Darn. I really wanted to use straight.el. :-(
It would have been very helpful and saved me some time if the version requirement had been mentioned early in the README, so that's my suggestion.
I'll maybe return in a few years when I don't have to use Emacs 24. :-)

Fixed. See also #153. Let me know if there are other places in the documentation where I could put this information, to make the requirement more apparent.


French ReadMe

I've made a French translation for Pock's ReadMe

I asked for some french typo.
Can you please move your file into '.github/readmes/README.fr.md' and not replace the default README please ?

I asked for some french typo.
Can you please move your file into '.github/readmes/README.fr.md' and not replace the default README please ?

Please create a French version in the following directory instead: .github/readmes/. Modifying the original global one is not intended as it removes the possibility to understand the original readme.

I already created a French translation, a couple of months ago. How do you put it in the right repository?
The one proposed above has a lot of mistakes.

Please create a French version in the following directory instead: .github/readmes/. Modifying the original global one is not intended as it removes the possibility to understand the original readme.

I already created a French translation, a couple of months ago. How do you put it in the right repository?
The one proposed above has a lot of mistakes.


Portuguese translation date issue

In the list of transactions we have in the english version "Last Friday" if the tx was in the same week.
In the portuguese translation we are not translating the weekdays, we show "Última Friday"

@pedroferreira1  eu estou tentando solucionar esse problema, eu vi que da para adicionarmos o locale so para o script de calendario. Porém nao achei no codigo, aonde que ele verifica a linguagem do app, ainda estou estudando sobre isso.
english: i'm trying to solve this problem, i saw that we can add the location to the calendar script. But I didn't find it in the code, where it checks the app's language, I'm still studying about it.
https://momentjs.com/docs/#/i18n/instance-locale/
moment.locale('en'); // default the locale to English


Fix cursor stuck on HSplit in Advanced Importer

Very minor cosmetic bug fix.
Closes https://github.com/godotengine/godot/issues/84002

Doesn't look like a minor or cosmetic bug. Seems like a bug with input handling in subviewports. I'm not sure this is a good solution, or indeed a good workaround.

Hmm...I can try and investigate this a bit deeper later on. The root cause seems to be that SubViewportContainer has special handling in _gui_input_event where it doesn't update the cursor if it's over one. I assume what it's meant to do is derive a cursor from the contents of the viewport, but since the viewport doesn't have an Control elements inside it, it may not be updating:
		if (DisplayServer::get_singleton()->has_feature(DisplayServer::FEATURE_CURSOR_SHAPE) && !Object::cast_to<SubViewportContainer>(over)) {
			DisplayServer::get_singleton()->cursor_set_shape(ds_cursor_shape);
		}

CC @Sauermann

Superseded by #84661.


Unable to fetch features from Rally

Hi,
I need help with configuring Feature widget with Rally Collector. Any help will be appreciated.
Below are the details that i am able to achieve after configuring Rally Collector -
I am able to fetch data for following -

Iterations
Stories

But when i am trying to configure Feature widget, i am able to select Rally as the source, but no Team details and projects are available after that.
Please suggest if I am doing anything wrong or Feature widget cannot be configured for Rally.

@Sbrenthughes i am also facing a similar issue, I am able to see the iteration burndown graphs but the user story counts is always zero, also checked the same in the DB and it shows as 0 there too in the corresponding documents from where the UI reads the stats.  Attaching Screenshots for the same:


Unable to stop/cancel the running process

Hello, when I use this example, I notice there is no stop/cancel button, and I cannot stop the process.
Here's what it looks like:

It uses the Thread component

However, when I tried this approach, it doesn't work either:

I don't know why, please help me

Hey, React Server Components do not support cancellation. Do not use RSC if you care about cancellation
see also: https://sdk.vercel.ai/docs/ai-sdk-rsc/migrating-to-ui

ok, I know.Thank you!


Fix import/change to new package name

Summary

If you run example app you would get the error:

Unable to resolve module react-native-datetimepicker

Test Plan
cd into the example folder and try to launch the app.
Before fix
After fix

Compatibility

OS
Implemented

iOS
✅

Android
✅

Checklist

[x] I have tested this on a device and a simulator
[ ] I added the documentation in README.md
[ ] I mentioned this change in CHANGELOG.md
[ ] I updated the typed files (TS and Flow)
[ ] I added a sample use of the API in the example project (example/App.js)

Thanks for the contribution, sorry for the slow response was out on vacation :)


Add test helpers interacting with elements based on test selectors

As the test selectors tend to get quite long (e.g. *[data-test-selector="post-title"]) it might be helpful to add some test helpers that automatically generate them, e.g. findViaTestSelector('selector', 'post-title') which would result in find('*[data-test-selector="post-title"]') etc.

I guess the better approach would be to define a helper that returns only the selector, e.g.
find(testSelector('data-test-post-title') // => find('*[data-test-post-title]')
find(testSelector('data-test-selector', 'post-title') // => find('*[data-test-selector="post-title"]')

That would actually be much more flexible and less magic than overriding all the test helpers. Plus, it would work for integration tests out of the box as the selectors could simply be passed to the jQuery methods as well:
this.$(testSelector('data-test-post-title').click() // => this.$('*[data-test-post-title]').click()

What do you think @LevelbossMike, @pangratz?


[ART-6670] optimize create microshift pr method and auto merge pr

auto merge microshift pin pr
construct pr in runtime instead of from local cache file

Having the ocp-build-data cloned locally then pushed to remote could prevent issues like race condition, although it might not be a big concern as it is unlikely to run build-microshift for an assembly in parallel.

I think github pr check should do the conflict check

I think github pr check should do the conflict check
It is not related to the conflict check. It is about reading-modifying-writing the remote branch auto-pin-microshift-{self.group}-{self.assembly} without a lock.

A race condition could happen if multiple build-microshift builds run for the same assembly. Think about the following sequence:

Build A: Started.
Build A: Created a branch auto-pin-microshift-{self.group}-{self.assembly} from commit_a.
Build A: Read content of releases.yml from commit_a in openshift-{self.group}. Let's call it content_a.
Build B: Started.
Build B: Saw auto-pin-microshift-{self.group}-{self.assembly} already existed. Delete branch branch auto-pin-microshift-{self.group}-{self.assembly}.
Build B: Created a branch auto-pin-microshift-{self.group}-{self.assembly} from commit_b. commit_b is newer than commit_a.
Build B: Read content of releases.yml from commit_a in openshift-{self.group}. Let's call it content_b.
Build B: Updated releases.yml auto-pin-microshift-{self.group}-{self.assembly} with modified content based on content_b.
Build A: Updated releases.yml auto-pin-microshift-{self.group}-{self.assembly} with modified content based on content_a. Note, auto-pin-microshift-{self.group}-{self.assembly} is based on commit_b instead of commit_a. The commit history is incorrect!
Build B: Merged auto-pin-microshift-{self.group}-{self.assembly} into openshift-{self.group}. At this moment of merge, auto-pin-microshift-{self.group}-{self.assembly} has updated releases.yml based on content_a. So content_b is lot.
Build A: Would fail to merge auto-pin-microshift-{self.group}-{self.assembly} into openshift-{self.group}.

With the cloning to local approach, no race condition will happen because the changes are made into the local branch. Regardless of the order of pushing to remote, the remote branch will always have the commit history, so merging will either succeed without a data loss, or fail due to a conflict.

But, we can avoid this by using a lock.

I think github pr check should do the conflict check

It is not related to the conflict check. It is about reading-modifying-writing the remote branch auto-pin-microshift-{self.group}-{self.assembly} without a lock.
A race condition could happen if multiple build-microshift builds run for the same assembly. Think about the following sequence:

Build A: Started.
Build A: Created a branch auto-pin-microshift-{self.group}-{self.assembly} from commit_a.
Build A: Read content of releases.yml from commit_a in openshift-{self.group}. Let's call it content_a.
Build B: Started.
Build B: Saw auto-pin-microshift-{self.group}-{self.assembly} already existed. Delete branch branch auto-pin-microshift-{self.group}-{self.assembly}.
Build B: Created a branch auto-pin-microshift-{self.group}-{self.assembly} from commit_b. commit_b is newer than commit_a.
Build B: Read content of releases.yml from commit_a in openshift-{self.group}. Let's call it content_b.
Build B: Updated releases.yml auto-pin-microshift-{self.group}-{self.assembly} with modified content based on content_b.
Build A: Updated releases.yml auto-pin-microshift-{self.group}-{self.assembly} with modified content based on content_a. Note, auto-pin-microshift-{self.group}-{self.assembly} is based on commit_b instead of commit_a. The commit history is incorrect!
Build B: Merged auto-pin-microshift-{self.group}-{self.assembly} into openshift-{self.group}. At this moment of merge, auto-pin-microshift-{self.group}-{self.assembly} has updated releases.yml based on content_a. So content_b is lot.
Build A: Would fail to merge auto-pin-microshift-{self.group}-{self.assembly} into openshift-{self.group}.

With the cloning to local approach, no race condition will happen because the changes are made into the local branch. Regardless of the order of pushing to remote, the remote branch will always have the commit history, so merging will either succeed without a data loss, or fail due to a conflict.

In the above case, when updating file it will be applying patch changes against release.yml's shasum, the second update operation of updating releases.yml by build A will fail, for this case build B interrupts Build A and should successfully commit its changes, build A is failed at updating file since the content already changed by build B's commit.
If Build A update releases.yml happened before Build B update releases.yml then Build B will fail at update file, and then pr will be created and merged but delete pin branch will fail because branch from commit_a was deleted.
The workflow delete branch/create branch/update file/create pull/merge operations all have commit checks on the server. Considering the race condition jobs are doing the same thing, It may doesn't matter invoked by which Build as long as they are in the right order(only one branch exist after multi jobs run create branch, file is only updated once after multi jobs run update file, pr can be merged once after multi jobs run merge) and in openshift-{self.group} branch will only have one merge commit in the commit history.

@Ximinhan

If Build A update releases.yml happened before Build B update releases.yml then Build B will fail at update file, and then pr will be created and merged but delete pin branch will fail because branch from commit_a was deleted.

Good point. I haven't tested if the API will fail if the sha of the file is changed. If so, I am ok with this approach.

checked the git lib basically, it was a wrapper of the workflow using shell command instead of github python API. This part can be optimized later.

@Ximinhan we are not talking about the same thing.
I was talking about ghapi https://ghapi.fast.ai/, while you were talking about pyartcd.git module https://github.com/openshift-eng/aos-cd-jobs/blob/master/pyartcd/pyartcd/git.py

@Ximinhan we are not talking about the same thing. I was talking about ghapi https://ghapi.fast.ai/, while you were talking about pyartcd.git module https://github.com/openshift-eng/aos-cd-jobs/blob/master/pyartcd/pyartcd/git.py

I want to use PyGithub to replace our current usage of ghapi and pyartcd/git.py lib in the repo, since PyGithub is powerful to handle all git operations in a convenient way

Okay, I will use ghapi to merge the pr.


Different verification results when hardcoding a value vs assuming the value

I tried this code:
#![feature(iter_advance_by)]

use std::iter::DoubleEndedIterator;

fn addr() -> usize {
    let addr = kani::any_where::<usize, _>(|val| *val ==<PHONE_NUMBER>854775809);
    // ***** Uncomment the line below to make the harness pass. ******
    // let addr =<PHONE_NUMBER>854775809;
    assert_eq!(addr,<PHONE_NUMBER>854775809);
    addr
}

fn any_slice(orig_slice: &[u8]) -> &[u8] {
    let ptr = addr() as *const u8;
    unsafe { core::slice::from_raw_parts(ptr, 0) }
}

mod verify_u8 {
    use super::*;
    const MAX_LEN: usize = 1;

    #[kanitool::proof]
    fn check_nth_back() {
        let array = [0u8; 0];
        let slice = any_slice(&array);
        assert!(slice.is_empty());
        let mut iter = slice.iter();
        let _ = iter.advance_by(kani::any());
    }
}

using the following command line invocation:
kani iter.rs

with Kani version: 0.56.0 (verify-rust-std branch)
I expected to see this happen: The verification result should be the same as the one where we assign addr directly.
Instead, this happened: Assigning the address using any_where makes the harness fail, while it succeeds when using the concrete value.

@tautschnig do you think you can take a look at this one to see if the inconsistency is coming from Kani or CBMC? Thanks!

This appears to be a bug in CBMC as disabling simplification makes the property fail even when let addr =<PHONE_NUMBER>854775809; is in effect.

Turns out that CBMC may be doing something questionable, but the true problem remains with the input:<PHONE_NUMBER>854775809 is not a pointer to an allocated object, which I believe violates the safety preconditions of sub_ptr. CBMC's back-end treats subtraction of pointers outside object bounds as producing an unconstrained value.
Kani will happily report this problem on this example with --enable-unstable --extra-pointer-checks, irrespective of whether you use assumptions or the direct assignment.
So I'd rather claim the problem is in the lack of (default) checks enabled by Kani?!

@tautschnig do you think we should instantiate pointer validity checks for each occurrence of pointer-integer conversions during the GOTO codegen from Kani ?
let ptr = addr() as *const u8;
/* assert(__CROVER_r_ok(ptr, 0)) */

To me, that seems like a good idea. Though I don’t know how easy that is, e.g., with transmute to a union that includes a pointer-typed member.

@tautschnig do you think we should instantiate pointer validity checks for each occurrence of pointer-integer conversions during the GOTO codegen from Kani ?
let ptr = addr() as *const u8;
/* assert(__CPROVER_r_ok(ptr, 0)) */

Wait, wouldn't that cause spurious counter examples with slices and vectors? This issue is showing up because the standard library encodes length of a ZST iterator by casting the length as a pointer.

Wait, wouldn't that cause spurious counter examples with slices and vectors? This issue is showing up because the standard library encodes length of a ZST iterator by casting the length as a pointer.

Is that defined behaviour in Rust? Given all the talk that some integer (Boolean?) types must not have values outside a certain range I am wondering whether pointers do have a similar constraint to them?

Should be addressed by https://github.com/diffblue/cbmc/pull/8497.

Wait, wouldn't that cause spurious counter examples with slices and vectors? This issue is showing up because the standard library encodes length of a ZST iterator by casting the length as a pointer.

Is that defined behaviour in Rust? Given all the talk that some integer (Boolean?) types must not have values outside a certain range I am wondering whether pointers do have a similar constraint to them?

Yes. That's a well defined behavior. Raw pointers don't have any validity requirements.

https://github.com/diffblue/cbmc/pull/8497 has been merged and I have confirmed that we now get consistent results. We should close this issue with the next CBMC release (and Kani using that newer version).

And which behavior is that? Will the verification succeed?

And which behavior is that? Will the verification succeed?

My apologies for not having clarified that: yes, verification now consistently succeeds. (Which should be the correct result given all pointer handling is well-defined for Rust.)

I've built CBMC from scratch and I was able to verify that it fixes all the harnesses that are currently commented out in https://github.com/model-checking/verify-rust-std/pull/148. Thanks!
Looking forward for the next CBMC release.

Note that there is also a harness commented out in https://github.com/model-checking/verify-rust-std/pull/122 that needs to be updated once we fix this issue.


Compiler crash when two instances are running at once

Simple test case:

Save puts "Hello, world!" to hello.cr.
Run diff <(crystal hello.cr) <(crystal hello.cr).

Sometimes it'll work, but other times, stuff like this gets printed:
Error: you've found a bug in the Crystal compiler. Please open an issue, including source code that will allow us to reproduce the bug: https://github.com/crystal-lang/crystal/issues
0a1,11
> Error deleting file '/home/ryan/langtest/cr/.crystal/crystal-run-hello.tmp': No such file or directory
> [5539354] ???
> [9374111] ???
> [12436199] ???
> [12437491] ???
> [12256495] ???
> [5533666] ???
> [12246136] main +40
> [140192680971973] __libc_start_main +245
> [5510225] ???
>

Maybe the compiler should add its PID to any temporary files?


don't use unneeded requires

i think it's already loaded:
2.5.5 :005 >  require 'fileutils'
 => false

@miq-bot add_label cleanup

yeah, i can't do this:
https://github.com/ManageIQ/manageiq/blob/f68b1be6460d03b6568b2136a5b2b71a2efb9b5d/lib/manageiq/environment.rb#L43 and https://github.com/ManageIQ/manageiq/blob/f68b1be6460d03b6568b2136a5b2b71a2efb9b5d/lib/manageiq/environment.rb#L6


[Question] Best way to implement "onLeft()" and "onRight()" logic inside the scene's component

Using:

react-native-router-flux v3.38.0
react-native v0.43.3

Hello ! I've tried to find this in other threads unsuccessfully. I need to implement some kind of logic inside of the "onRight()" method of a Navigation Bar that requires data from the Scene's component state. I'm using Redux, so a possible solution could be to connect the "Router Component" to the actions and reducers I need. However I would rather put this piece of logic inside of the scene's component, because it would just make more sense to me.
The closest thing I found is adding this code inside "componentWillMount()". But I don't think it's a good solution since it's refreshing the screen just to add the button to the navbar, making the loading process much slower.
Actions.refresh({       rightTitle: 'Permitir',       onRight: this.onCreateInvite.bind(this)     });
Is there any way to achieve something like that with the RN - Redux - RNRF stack ?
Thanks !

there is a tricky way:

register event listener inside your component
`
componentDidMount(){
this.listener = RCTDeviceEventEmitter.addListener(Constants.EVENT_REMOVE_FRIEND,(value)=>{
console.log('...............');
});
console.log('listener is added.....');
}

componentWillUnmount(){
if (this.listener) {
this.listener.remove();
console.log('listener is removed.....')
}
}
`
2.pull the trigger
`
<Scene key="FriendProfile" component={FriendProfile} title="this is a title" rightTitle="this is the title of right button" onRight={()=>RCTDeviceEventEmitter.emit(Constants.EVENT_REMOVE_FRIEND)}/>
`

@brrr I'll definitely give it a try and post my results here. Thanks !!

Here is how I customize the navigation bar button individually from the scene itself. Defining the style and button for the navigationBar from NavigationRouter.js are extremely messy.
Instead of defining the rightTitle/onRight in the NavigationRouter.js, you can define the right button from the scene itself.
During the scene configuration in NavigationRouter.js, access the custom button through the route parameters in the renderRightButton method. I wish there is a similar way available to retrieve the navigationBarStyle through pure function, then I would also be able to customize the navigationBar style individually from the scene itself instead of hardcoded styling in NavigationRouterStyle.js
NavigationRouter.js:
<Scene
key='cameraScannerScreen'
component={CameraScannerScreen}
title=I18n.t('Scan')
hideNavBar={false}
hideTabBar={true}
backButtonImage={Images.btn_header_back}
navigationBarStyle={styles.transparentNavBar}
titleStyle={styles.transparentTitleStyle}
renderRightButton={(route) => { return route.albumButton }} />
CameraScannerScreen.js:
componentDidMount () {
    Actions.refresh({
      albumButton: this.renderAlbumButton()
    })
}

renderAlbumButton () {
    return (
      <TouchableHighlight
        style={styles.albumButton}
        onPress={() => console.tron.log('Your action here')}>
        <Text style={styles.albumButton}>{I18n.t('_camera_scanner_album')}</Text>
      </TouchableHighlight>
    )
  }


files: upload doesn't work

Reproduce

go to the backoffice electronic items page
go to an electronic item details page
click "Upload file" and select a random file (I used a nonempty .txt)
you are redirected to frontsite 404

What should happen
The file should be uploaded successfully and listed in the files list.

Ok so it does work in sandbox and not in dev, but I'm sure it used to work in my local environment. Might be a configuration problem on my side.


希望web管理页面增加运维状态

如图所示，希望新增一个下拉框，可以直接选择的，这样可以直接配置gs的具体状态

感谢反馈。可以关注下OKG Dashboard v2.0
设计文档如下：https://github.com/CloudNativeGame/kruise-game-dashboard/issues/5

@ringtail  @chrisliu1995  can i work on this ?

@ringtail @chrisliu1995 can i work on this ?

Sure. Is that clear for you to begin your work? Cause the issue is described by Chinese.

@chrisliu1995  Sure, I used Google Translate for this.

@chrisliu1995 Yes, I was able to get the context of the issue using Google Translate, but could you explain it a bit more?

Great. You know, There are some opsState value that OKG provides by default, including 'WaitToBeDeleted', 'None', 'Allocated', 'Maintaining', 'Kill'. Those values should be shown in drop down box.
Besides, users can also set GameServers' opsState by any values, so that you have to allow users to fill in any value they want.

@chrisliu1995 Yes, I was able to get the context of the issue using Google Translate, but could you explain it a bit more?

Great. You know, There are some opsState value that OKG provides by default, including 'WaitToBeDeleted', 'None', 'Allocated', 'Maintaining', 'Kill'. Those values should be shown in drop down box, and users can select the value they want.
Besides, users can also set GameServers' opsState by any values, so that you have to allow users to fill in any value they want.

that means we need the below type functionality dropdown + userInput

The function is completed. Thanks @jayesh9747


[Build] Do a git shallow clone with fetch-depth of 25 in checkout

Motivation
There's a significant different in performance when using a shallow
clone. 125 seconds vs. 10 seconds to clone Pulsar on a 100Mbps internet
connection. 568MB vs. 16MB was transferred.
In Github Actions, the speed difference with fetch-depth: 25 compared to fetch-depth: 0 for Pulsar repository is 2-4 seconds compared to 70-75 seconds. about 15-35x faster.
Besides a fast checkout, 552MB less data was transferred and less disk space will be consumed.
example benchmark of cloning full vs. shallow (--depth=25):
$ time git clone https://github.com/apache/pulsar.git pp
Cloning into 'pp'...
remote: Enumerating objects: 601, done.
remote: Counting objects: 100% (601/601), done.
remote: Compressing objects: 100% (340/340), done.
remote: Total 1207163 (delta 473), reused 296 (delta 226), pack-reused 1206562
Receiving objects: 100% (1207163/1207163), 568.24 MiB | 5.66 MiB/s, done.
Resolving deltas: 100% (862029/862029), done.
git clone https://github.com/apache/pulsar.git pp  122,95s user 9,60s system 105% cpu 2:05,23 total
$ time git clone --depth=25 https://github.com/apache/pulsar.git pp2
Cloning into 'pp2'...
remote: Enumerating objects: 7699, done.
remote: Counting objects: 100% (7699/7699), done.
remote: Compressing objects: 100% (5239/5239), done.
remote: Total 7699 (delta 3120), reused 3707 (delta 1177), pack-reused 0
Receiving objects: 100% (7699/7699), 16.16 MiB | 2.85 MiB/s, done.
Resolving deltas: 100% (3120/3120), done.
git clone --depth=25 https://github.com/apache/pulsar.git pp2  2,24s user 0,64s system 31% cpu 9,152 total

Currently for the Pulsar Github workflows, it's only the diff-only action that depends on having all PR commits in the checked out local git repository. Therefore setting the value to 25 is reasonable. The 25th oldest commit would contain all changes so beyond
that point, the diff-only action produce the correct result. That's
a non critical critical issue since diff-only is used to detect if
the PR contains only documentation changes. It simply wouldn't be able
to do the detection if the PR has more than 25 commits. (the fetch-depth
limit could be increase if 25 isn't enough)
Modifications
Change the fetch-depth of check action to 25 instead of 0 which does a full clone.

/pulsarbot run-failure-checks


New diagonal_operation-Parameter for the gridmatrix operation

Instead of being restricted to a plot type along the diagonal of a gridmatrix-operation, this pull request also allows the specification of an operation. The main reasoning for this is that it is now possible to change parameters like the number of bins in a diagonal histogram:
data = pd.DataFrame(np.random.normal(size=(250, 3)), columns=['a', 'b', 'c'])
hvset = hv.Dataset(data.reset_index(), kdims=['index'])

hv.operation.gridmatrix(
    hvset,
    diagonal_operation=hv.operation.histogram.instance(num_bins=30, adjoin=False)
)

I think in its current state, this PR is not ready however, since there are a few open questions:

Should diagonal_type remain?
Should there be a chart_operation parameter?
How to formulate the docstrings to be easy to understand?
Is the normalization relevant for the "operation-histograms"?

When the semantics are decided, I can also add a few tests. I will probably need a few hints however on how to test this.

Sorry I've been so slow in reviewing this, I'll get to it over the weekend.

Sorry for the long delay, this looks fine, except one small comment. If you don't think you'll have the time I'm happy to merge anyway and apply the change myself.

Your comment should be fixed now.

Perfect thanks! I'm actually going to clean up the histogram operation a bit to remove the adjoin nonsense so this can be cleaned up further. For the time being this looks good and I'll merge as soon as tests are passing.

Unless you feel like writing some simple tests that is?

I'm not sure on how to test this. As I cannot find tests for the other operations, can you point to something similar?

You're right, it appears operations are not currently tested at all! I'd create a new file called testoperation.py and then subclass the ComparisonTestCase class. The assertEqual on that class knows how to compare HoloViews objects so a few tests that manually construct GridMatrix and compare it to the gridmatrix output should be fine. I'd be happy to add some basic operation tests myself but will probably not get to it until fairly late today.

Could you rebase the PR, I'll get this merged and add unit tests separately.

Sorry I did not find the time to look into the tests yet. I will do the rebase tomorrow!

@philippjfr I rebased with c563965 in mind.

Sorry this has stalled so long, I think tests are still failing because framewise normalization is not enabled. I'll fix the tests in a separate PR.


Add support to provision RKE1 clusters

PR Description
PR to allow support for provisioning RKE1 clusters in the Go framework. Currently, this file will work with the following node providers:

Amazon EC2 (includes support for spot instances + tags based on PR https://github.com/rancher/rancher/pull/37934)
Azure
Linode

Additionally, as we plan to use this PR to have further design discussions, I have consciously attempted to not do too much refactoring until after we further discuss.
Locally, I have verified that all above node providers work, but I will provide offline Jenkins runs further showing this as well.

Following up on this PR to see if there are any changes needed for this PR before we proceed with merging.


TailwindCSS Not Working

I'm trying to setup TailwindCSS with this extension template but it doesn't seem to work. My astro.config.mjs looks like this:
import { defineConfig } from "astro/config";
import tailwind from "@astrojs/tailwind";

// https://astro.build/config
export default defineConfig({
    build: {
        assets: "app",
    },
    integrations: [tailwind()],
});

and my tailwind.config.cjs looks like this:
/** @type {import('tailwindcss').Config} */
module.exports = {
	content: ['./src/**/*.{astro,html,js,jsx,md,mdx,svelte,ts,tsx,vue}'],
	theme: {
		extend: {},
	},
	plugins: [],
}

when I build the project, it generates everything as normal, except my dist folder structure looks like this:

The popup when I run it in dev mode looks just fine, but when I try to insert the HTML into a page, it doesn't show up, and I'm not sure why.
Any ideas what might be causing this?

Hi, did you have it working before adding tailwind?

I did! I tested it with inline styles and it worked perfectly.

The popup when I run it in dev mode looks just fine, but when I try to insert the HTML into a page, it doesn't show up, and I'm not sure why.

What is the HTML you are trying to insert where? Are you using the content.ts script to manipulate the DOM and that's not working? If it's not too private, sharing your some of your code might be helpful.

Apologies for the delay. Yes, I'm using the content.ts script to manipulate the DOM. Here's the HTML:

        Testing testing 123 456

        789

and here's the content.ts:
// Credit to https://stackoverflow.com/a/16336073
fetch(chrome.runtime.getURL("index.html"))
    .then((r) => r.text())
    .then((html) => {
        const placeholder = document.createElement("div");
        placeholder.innerHTML = html;
        const node = placeholder.firstElementChild;

        if (node == null) {
            return;
        }

        node.classList.add("wc-ext-container");

        document.body.insertBefore(node, document.body.firstChild);
    });

I added wc-ext-container to the classList there just so I could extremely easily identify the div in the Inspect element on the page.

Hi! Just wanted to bump this. Do you know what's going on?

Hi, sorry for the delay. If I understand correctly you are attempting to create an html element styled by Tailwind and then append that to a page's DOM?

I'm gonna close this as not planned. Feel free to reopen.

I'm gonna close this as not planned. Feel free to reopen.


Fix PromotionIndividualCodeRedeemer non redeemed codes and unnecessar…

1. Why is this change necessary?
It is currently possible that individual codes will not be redeemed if there is more than one promotion in an Order.
Additionally, there are many unnecessary database requests fired.
2. What does this change do, exactly?
It resolves this issue in PromotionIndividualCodeRedeemer and reduces the number of database requests that are fired.
3. Describe each step to reproduce the issue or behaviour.

Add at least one promotion with an individual code and one without to your cart.
Order it.
In some cases, it depends on the random order of the line items, the individual code will not be redeemed

4. Please link to the relevant issues (if any).
n/a
5. Checklist

[x] I have rebased my changes to remove merge conflicts
[ ] I have written tests and verified that they fail without my change
[x] I have created a changelog file (adr/2023-07-31-fix-promotion-individual-code-redeemer.md) with all necessary information about my changes
[ ] I have written or adjusted the documentation according to my changes
[x] This change has comments for package types, values, functions, and non-obvious lines of code
[x] I have read the contribution requirements and fulfil them.

🤖 Generated by Copilot at 070ebb7
This pull request fixes a performance and reliability issue with the PromotionIndividualCodeRedeemer component that handles the redemption of individual promotion codes in the checkout process. It also adds an ADR document that explains the rationale and design of the solution.

🤖 Generated by Copilot at 070ebb7

Add a new ADR document to explain the decision for fixing the promotion individual code redeemer issue (adr/2023-07-31-fix-promotion-individual-code-redeemer.md)
Avoid unnecessary database queries by checking if the code is null or empty before fetching the individual code entity (link)
Ensure all the individual codes in the order are processed and redeemed by using continue instead of return when the individual code entity is not found or is invalid (link)

Hey @Drumm3r , I'm closing this PR due to inactivity - feel free to reopen it anytime. In that case, please review the requested changes 🙂


Upgrade to Scala 3

great!
if you push a tag according to this:
https://github.com/typelevel/cats-parse/blob/main/Release.md
it will be published. Seems like 0.3.4 would be the version number.
Nice to have 2.11 to 3.0 support!
:)

Awesome, just tagged v0.3.4


Password Strength Checker

Create a Python script that evaluates the strength of a password based on certain criteria.

👋 Feel free to leave a comment below if you'd like to work on this issue or create new issue if you have an idea. We welcome your contributions! 😊
Don't forget to give a ⭐ & Happy coding!. 😊

Hello, I am a student of Technical University in Kosice and I would like to take this problem, I would also like to add tests to this python checker.  Would it be possible?

I'm interested in working on this issue #14 . After reviewing the requirements and understanding the scope of the task, I'd like to take ownership of this issue and work towards resolving it.
Please consider assigning this issue to me, and I'll start working on it promptly. If there are any additional details or discussions required, I'm more than happy to engage with the community and the project maintainers.
Thank you for your time and for maintaining this project. I look forward to contributing to its progress.

please include label hacktoberfest in this issue

@Parvezkhan0 you cannot create a pull request until assigned to you...  I asked for the project first. Please let the owner decide who can fix this issue. Therefore I request you to close your PR.

@Swapnil-Singh-99 Cn you assign me this issue 🙏🏻 . And if possible please add the hacktoberfest label


Support redoc documentation viewer

Closes #41

The PR works. Using this PR I was able to experiment with Redoc. Looks like it embedding a Redoc web console is kind of moot. Redoc provides a CLI tool to package the console into a single HTML file (that can be included in a Bootique app if needed) :
npx @redocly/cli build-docs openapi.json

This will work well with the existing --generate-spec command

After some consideration, decided not to pursue direct integration because of the reason mentioned above


Key has expired on latest image

Hi,
looks like the beta is expired and setting the environment variable with "-e MAKEMKV_KEY=BETA" doesn't make the trick anymore...

here is the log:

docker run      \
>  -e MAKEMKV_KEY=BETA   \
>  -p 5800:5800   \
>  -v /docker/appdata/makemkv:/config:rw \
>  -v /home/ericc:/storage:ro \
>  -v /capitole/Public/DVD:/DVD:rw \
>  --device /dev/sr0 \
>  --device /dev/sg0 \
>  --device /dev/sg1 \
>  jlesage/makemkv
[s6-init] making user provided files available at /var/run/s6/etc...exited 0.
[s6-init] ensuring user provided files have correct perms...exited 0.
[fix-attrs.d] applying ownership & permissions fixes...
[fix-attrs.d] done.
[cont-init.d] executing container initialization scripts...
[cont-init.d] 00-app-niceness.sh: executing...
[cont-init.d] 00-app-niceness.sh: exited 0.
[cont-init.d] 00-app-script.sh: executing...
[cont-init.d] 00-app-script.sh: exited 0.
[cont-init.d] 00-app-user-map.sh: executing...
[cont-init.d] 00-app-user-map.sh: exited 0.
[cont-init.d] 00-clean-logmonitor-states.sh: executing...
[cont-init.d] 00-clean-logmonitor-states.sh: exited 0.
[cont-init.d] 00-clean-tmp-dir.sh: executing...
[cont-init.d] 00-clean-tmp-dir.sh: exited 0.
[cont-init.d] 00-set-app-deps.sh: executing...
[cont-init.d] 00-set-app-deps.sh: exited 0.
[cont-init.d] 00-set-home.sh: executing...
[cont-init.d] 00-set-home.sh: exited 0.
[cont-init.d] 00-take-config-ownership.sh: executing...
[cont-init.d] 00-take-config-ownership.sh: exited 0.
[cont-init.d] 00-xdg-runtime-dir.sh: executing...
[cont-init.d] 00-xdg-runtime-dir.sh: exited 0.
[cont-init.d] 10-certs.sh: executing...
[cont-init.d] 10-certs.sh: exited 0.
[cont-init.d] 10-cjk-font.sh: executing...
[cont-init.d] 10-cjk-font.sh: exited 0.
[cont-init.d] 10-nginx.sh: executing...
[cont-init.d] 10-nginx.sh: exited 0.
[cont-init.d] 10-vnc-password.sh: executing...
[cont-init.d] 10-vnc-password.sh: exited 0.
[cont-init.d] 10-web-index.sh: executing...
[cont-init.d] 10-web-index.sh: exited 0.
[cont-init.d] 90-makemkv.sh: executing...
[cont-init.d] 90-makemkv.sh: generating machine-id...
app_ccextractor = "/usr/bin/ccextractor"
Checking for new beta key...
Updating registration key...
[cont-init.d] 90-makemkv.sh: exited 0.
[cont-init.d] 95-check-optical-drive.sh: executing...
[cont-init.d] 95-check-optical-drive.sh: looking for usable optical drives...
[cont-init.d] 95-check-optical-drive.sh: found optical drive [/dev/sr0, /dev/sg1], group 20.
[cont-init.d] 95-check-optical-drive.sh: exited 0.
[cont-init.d] 96-install-autodiscripper-srv.sh: executing...
[cont-init.d] 96-install-autodiscripper-srv.sh: automatic disc ripper disabled.
[cont-init.d] 96-install-autodiscripper-srv.sh: exited 0.
[cont-init.d] done.
[services.d] starting services
[services.d] starting s6-fdholderd...
[services.d] starting certsmonitor...
[services.d] starting nginx...
[services.d] starting xvfb...
[certsmonitor] disabling service: secure connection not enabled.
[nginx] starting...
[xvfb] starting...
[services.d] starting logmonitor...
[services.d] starting statusmonitor...
[logmonitor] no file to monitor: disabling service...
[services.d] starting x11vnc...
[statusmonitor] no file to monitor: disabling service...
[x11vnc] starting...
[services.d] starting openbox...
30/11/2019 15:23:30 passing arg to libvncserver: -rfbport
30/11/2019 15:23:30 passing arg to libvncserver: 5900
30/11/2019 15:23:30 passing arg to libvncserver: -rfbportv6
30/11/2019 15:23:30 passing arg to libvncserver: -1
30/11/2019 15:23:30 passing arg to libvncserver: -httpportv6
30/11/2019 15:23:30 passing arg to libvncserver: -1
30/11/2019 15:23:30 passing arg to libvncserver: -desktop
30/11/2019 15:23:30 passing arg to libvncserver: MakeMKV
30/11/2019 15:23:30 x11vnc version: 0.9.14 lastmod: 2015-11-14  pid: 880
[openbox] starting...
30/11/2019 15:23:30 Using X display :0
30/11/2019 15:23:30 rootwin: 0x43 reswin: 0x200001 dpy: 0x9b9249e0
30/11/2019 15:23:30
30/11/2019 15:23:30 ------------------ USEFUL INFORMATION ------------------
30/11/2019 15:23:30 X DAMAGE available on display, using it for polling hints.
30/11/2019 15:23:30   To disable this behavior use: '-noxdamage'
30/11/2019 15:23:30
30/11/2019 15:23:30   Most compositing window managers like 'compiz' or 'beryl'
30/11/2019 15:23:30   cause X DAMAGE to fail, and so you may not see any screen
30/11/2019 15:23:30   updates via VNC.  Either disable 'compiz' (recommended) or
30/11/2019 15:23:30   supply the x11vnc '-noxdamage' command line option.
30/11/2019 15:23:30 X COMPOSITE available on display, using it for window polling.
30/11/2019 15:23:30   To disable this behavior use: '-noxcomposite'
30/11/2019 15:23:30
30/11/2019 15:23:30 Wireframing: -wireframe mode is in effect for window moves.
30/11/2019 15:23:30   If this yields undesired behavior (poor response, painting
30/11/2019 15:23:30   errors, etc) it may be disabled:
30/11/2019 15:23:30    - use '-nowf' to disable wireframing completely.
30/11/2019 15:23:30    - use '-nowcr' to disable the Copy Rectangle after the
30/11/2019 15:23:30      moved window is released in the new position.
30/11/2019 15:23:30   Also see the -help entry for tuning parameters.
30/11/2019 15:23:30   You can press 3 Alt_L's (Left "Alt" key) in a row to
30/11/2019 15:23:30   repaint the screen, also see the -fixscreen option for
30/11/2019 15:23:30   periodic repaints.
30/11/2019 15:23:30 GrabServer control via XTEST.
30/11/2019 15:23:30
30/11/2019 15:23:30 Scroll Detection: -scrollcopyrect mode is in effect to
30/11/2019 15:23:30   use RECORD extension to try to detect scrolling windows
30/11/2019 15:23:30   (induced by either user keystroke or mouse input).
30/11/2019 15:23:30   If this yields undesired behavior (poor response, painting
30/11/2019 15:23:30   errors, etc) it may be disabled via: '-noscr'
30/11/2019 15:23:30   Also see the -help entry for tuning parameters.
30/11/2019 15:23:30   You can press 3 Alt_L's (Left "Alt" key) in a row to
30/11/2019 15:23:30   repaint the screen, also see the -fixscreen option for
30/11/2019 15:23:30   periodic repaints.
30/11/2019 15:23:30
30/11/2019 15:23:30 XKEYBOARD: number of keysyms per keycode 7 is greater
30/11/2019 15:23:30   than 4 and 51 keysyms are mapped above 4.
30/11/2019 15:23:30   Automatically switching to -xkb mode.
30/11/2019 15:23:30   If this makes the key mapping worse you can
30/11/2019 15:23:30   disable it with the "-noxkb" option.
30/11/2019 15:23:30   Also, remember "-remap DEAD" for accenting characters.
30/11/2019 15:23:30
30/11/2019 15:23:30 X FBPM extension not supported.
Xlib:  extension "DPMS" missing on display ":0".
30/11/2019 15:23:30 X display is not capable of DPMS.
30/11/2019 15:23:30 --------------------------------------------------------
30/11/2019 15:23:30
30/11/2019 15:23:30 Default visual ID: 0x21
30/11/2019 15:23:30 Read initial data from X display into framebuffer.
30/11/2019 15:23:30 initialize_screen: fb_depth/fb_bpp/fb_Bpl 24/32/5120
30/11/2019 15:23:30
30/11/2019 15:23:30 X display :0 is 32bpp depth=24 true color
30/11/2019 15:23:30
30/11/2019 15:23:30 Listening for VNC connections on TCP port 5900
30/11/2019 15:23:30
30/11/2019 15:23:30 Xinerama is present and active (e.g. multi-head).
30/11/2019 15:23:30 Xinerama: number of sub-screens: 1
30/11/2019 15:23:30 Xinerama: no blackouts needed (only one sub-screen)
30/11/2019 15:23:30
30/11/2019 15:23:30 fb read rate: 1762 MB/sec
30/11/2019 15:23:30 fast read: reset -wait  ms to: 10
30/11/2019 15:23:30 fast read: reset -defer ms to: 10
30/11/2019 15:23:30 The X server says there are 10 mouse buttons.
30/11/2019 15:23:30 screen setup finished.
30/11/2019 15:23:30

The VNC desktop is:      daf2257a5e37:0
PORT=5900

******************************************************************************
Have you tried the x11vnc '-ncache' VNC client-side pixel caching feature yet?

The scheme stores pixel data offscreen on the VNC viewer side for faster
retrieval.  It should work with any VNC viewer.  Try it by running:

    x11vnc -ncache 10 ...

One can also add -ncache_cr for smooth 'copyrect' window motion.
More info: http://www.karlrunge.com/x11vnc/faq.html#faq-client-caching

[services.d] starting app...
[app] starting MakeMKV...
[services.d] done.

After a key expires, it may take some time to the author of MakeMKV to publish a new one.
But from what I see, there is new one available.  Can you try again to see if you still have the issue?

Hello, actually, version 1.14.6 is out so now 1.14.5 is 'to old' The image needs to be rebuilt.

Thanks, I will update the image.

New image available.  Please re-open if you still have issues.


feat: support bzlmod

fixes #12

The failure is because of the label here: https://github.com/p0deje/rules_ruby/blob/575267f22078de32b7aaecb74a178cc3753ab284/ruby/private/bundle.bzl#L13
The user declares a rules_ruby_dist when the toolchain resolves, but that repository is visible only to them, not to rules_ruby itself. We'll need a bit of refactoring to green it up, I'll look again when I have some fresh brain cells for it.

I've taken the simple answer, which is a small refactor to move that hardcoded label from rules_ruby and instead the user must provide it.
To make it non-breaking for existing WORKSPACE users I've used a macro implicit string->Label conversion to supply a default value.
I'm not sure this is a great answer, but I think the rb_bundle rule could use some redesign thinking anyhow, as it's doing too much in a repository context. So I think we could land this for now, so that we establish bzlmod compatibility, with the tradeoff that it will just slow us down a bit in the future as any refactorings will have to work for both bzlmod and WORKSPACE.

concern is over testing in CI at the moment since we always use MRI 3.2.1 and there is no way to change it for bzlmod

Filed #23 for a long-term answer. For now I'll change this to just have a bzlmod job with its own matrix that doesn't have a dimension for ruby interpreter.