Support pyproject.toml-style configuration (PEP 621) - Round 2

Summary of changes
Based on the experience acquired in #2924, I created this PR as a simplification (please check the discussion there for details).
There are many individual steps, but the following image illustrates how they are organised in 4 main groups of stacked changes:
a) https://github.com/abravalheri/setuptools/compare/1a1397a4...4a986086: Update build_meta to use dist objects instead of simply running setup.py
b) https://github.com/abravalheri/setuptools/compare/4a986086...7fe7a419: Separate setup.cfg parsing and extract common post-processing functions
(new vendorised packages)
c) https://github.com/abravalheri/setuptools/compare/fab3b790...56665563: Add means to apply configuration from pyproject.toml files
d) https://github.com/abravalheri/setuptools/compare/7fe7a419...d34794d7: Integrate pyproject.toml configuration into existing classes
Finally there is a completely non-required group of changes that only adds some type hints to improve (my) level of confidence in the implementation of the setuptools.config sub-package:
e) https://github.com/abravalheri/setuptools/compare/d34794d7...0aff4ea4: Add some type hints to the setuptools.config subpackage

Unfortunately GitHub does not provide tools to facilitate the review of stacked changes/PRs, but I am open to suggestions on how to facilitate the review. I hope that this organisation in groups makes sense and help in the process.
I also have another branch with a proof-of-concept where I remove setuptools' own setup.cfg and add all the existing configurations in the pyproject.toml.
Closes #1688, #2671 (mostly... see discussion bellow).
This PR adds 2 vendorised dependencies: tomli and validate-pyproject.
Pull Request Checklist

[x] Changes have tests
[x] News fragment added in changelog.d/.
(See documentation for details)

Differences from #2924
In #1688 the proposed approach (which have some level of consensus) is to deprecate configuration via setup.cfg files but keep supporting them by automatically converting setup.cfg into pyproject.toml and then proceed with the parsing.
In PR #2924, I try to not only completely follow this approach but also added a series of safe-guards to catch regression problems and ensure backward compatibility. This made the PR very complex and not review-friendly...
My proposal now is to avoid performing this automatic conversion, because it reduces complexity. The internals of setuptools are not prepared to deal with metadata and configs in the way PEP 621 specifies, so the automatic conversion seems a bit pointless, as if we go to the from the INI-state-space to TOML-state-space and then back to something very similar to the INI-state-space.
I think the best would be first re-working the internals of setuptools to use a more modern version of the Core Metadata spec, and then proceed with the automatic conversion.
Another difference is that in #2924 I try to use the latest version of the Core Metadata spec as "lingua franca" between pyproject.toml and the existing way of configuring setuptools. So it should also be possible to scavenge the code in #2924 to help updating support for Core Metadata (but that is left as a future work).
Please note I am providing an external package (abravalheri/ini2toml) anyway to assist in the migration. This package can still be used in the future.

Setuptools-specific tool table in pyproject.toml
As many have previously pointed out PEP 621 does not specify many of the configuration fields required by setuptools to work properly, which seems to indicate that inevitably the users would have to use a non-standardised [tool.setuptools] sub-table in pyproject.toml (and that would "undermine" the efforts for migrating the configuration format).
I would argue that, this is not necessarily the case. As per the implementation in this PR, any configuration coming from pyproject.toml will consider include_package_data=True when the field is absent, as opposed to the behaviour in setup.cfg (which is preserved for backward compatibility).
If we sum to this the changes proposed in #2894 for automatically auto-discovering flat and src-layouts, I believe that most of the packages will be able to use pyproject.toml without a [tool.setuptools] sub-table. (Users will still be able to use it for further customisations or to declare dynamic values to be backfilled by setuptools).
The equivalence between setup.cfg and pyproject.toml and the intuition to convert between them is explained in the ini2toml documentation.

Proof-of-concept converting setuptools' own setup.cfg file to pyproject.toml and blockers
As I previously mentioned, in this branch a version of setuptools that does not have a setup.cfg (but instead uses pyproject.toml for its own configuration) can be found.
I decided to not include it in this PR because of the following blockers:

I believe that the scripts in the tools/ folder that automate releases currently can only handle setup.cfg (e.g. when bumping the version).
jaraco/pytest-enabler#4 (which will cause errors when setuptools runs the validations based on validate-pyproject

Future Works
The following tasks/themes can be further explored in future PRs (either by me or other member of the community):

Include documentation about how to use pyproject.toml to configure the distribution
Update the version of Core Metadata produced by setuptools.

(These were excluded from this PR to avoid increasing even more its size).

The error in the CI seems to be related instead to #2921 (not directly to the changes proposed here).

@abravalheri First of all, thank you for taking care of this, this is a feature I've been wanting for a while now :) If you don't mind me asking: what is the status of this PR? I plan on integrating this into my projects as soon as possible.

Hi @marvinpfoertner thanks for the kind words. Since this is a complex change in setuptools, I am waiting for when other maintainers might have some time to review it.
If you want to help, you are more than welcome to leave your review also 😄

Hi @marvinpfoertner thanks for the kind words. Since this is a complex change in setuptools, I am waiting for when other maintainers might have some time to review it.
If you want to help, you are more than welcome to leave your review also smile
I will rebase the code later this week with the latest version of main to get rid of the conflict files.

Thanks for the quick reply! :) I'm not sure if I can contribute anything with my review, since I have absolutely no idea about the internals of setuptools 😀

I'm against of putting it under an env variable. If it is not ready, it shouldn't land into main. If it is ready, it should be just available for everyone who has installed the needed version of setuptools. Installing any version having this feature, be it installing a version from this branch, or installing one from main or installing any release supporting this feature is by itself the opt-in.

If it were behind an env variable, would that not affect an consumer of an sdist unless they also knew to set that variable?

If it were behind an env variable, would that not affect a consumer of an sdist unless they also knew to set that variable?

Yes that's right. It would only be available for local testing/experimentation. I'd like to validate the use-case against some packages before users come to depend on it.

I'm against of putting it under an env variable. If it is not ready, it shouldn't land into main. If it is ready, it should be just available for everyone who has installed the needed version of setuptools. Installing any version having this feature, be it installing a version from this branch, or installing one from main or installing any release supporting this feature, is by itself the opt-in.

If we go with that approach, users could upload packages that depend on the feature. Users who happen to use the feature before it's stable might find those packages no longer install if a later version removes the feature or makes a breaking change to it. I just want to emphasize the message that this feature is experimental and projects shouldn't depend on it until it's proven stable.

If we go with that approach, users could upload packages that depend on the feature.

The same way they can upload packages depending on libs that are non-public.

Users who happen to use the feature before it's stable might find those packages no longer install if a later version removes the feature or makes a breaking change to it.

it is OK, the features not yet landed into a release are explicitly unstable.
Even if they had landed, it would be OK to break compatibility if it is really needed.

I just want to emphasize the message that this feature is experimental and projects shouldn't depend on it until it's proven stable.

We can emit a warning to make everyone aware the feature is unstable.
I personally am going to convert all my projects to PEP 621 as soon as the feature appears in main (if editable install is working). In an unlikely scenario of anything changing I will just write a script fixing all the my projects. I have already done things like that.

I would feel scared of reviewing a +4,394 −295 PR too, even after @abravalheri structured the commits in such a thoughtful way. Bugs aside, this should not introduce breaking functionality with existing projects - only those that choose to convert their metadata config to PEP 621 pyproject.toml will find problems with this implementation. Therefore, I think the faster this lands on an actual release so package maintainers (with hopefully good CI in place) can test it at scale, the better.
In summary, +1 to any method that the setuptools maintainers deem appropriate to move forward with the feature. The env variable sounds good.

Thank you very much @jaraco and @webknjaz for the kind reviews.
I will probably take some time, but I hope I to address thoroughly each comment the latest this weekend.
@webknjaz, I am completely open to submitting each bit separately, the major problem being that most of them are dependent of the previous one. To use the PR structure I would have to open a series of branches and request PRs in a cascade way... (Github does not help a lot with that). Do you have a different idea?
If you intention is just have a minimal diff to be able to review, would the links I provided in the PR text work?

a) https://github.com/abravalheri/setuptools/compare/1a1397a4...4a986086: Update build_meta to use dist objects instead of simply running setup.py
b) https://github.com/abravalheri/setuptools/compare/4a986086...7fe7a419: Separate setup.cfg parsing and extract common post-processing functions
(new vendorised packages)
c) https://github.com/abravalheri/setuptools/compare/fab3b790...56665563: Add means to apply configuration from pyproject.toml files
d) https://github.com/abravalheri/setuptools/compare/7fe7a419...d34794d7: Integrate pyproject.toml configuration into existing classes
Finally there is a completely non-required group of changes that only adds some type hints to improve (my) level of confidence in the implementation of the setuptools.config sub-package:
e) https://github.com/abravalheri/setuptools/compare/d34794d7...0aff4ea4: Add some type hints to the setuptools.config subpackage

To use the PR structure I would have to open a series of branches and request PRs in a cascade way... (Github does not help a lot with that). Do you have a different idea?

That's about what I'd suggest. You could get approval/updates in the first one, then rebase the second one on top and do the same. It may be a bit inconvenient but you seem to be experienced with Git enough to work with such a setup. Interestingly, if each of the PRs is approved and those branches are a part of this one, then merging this PR would auto-merge others as well because they are included.

If you intention is just have a smaller diff to be able to review, would the links I provided in the PR text work?

Something like that. The problem with those diffs is that it's impossible to add inline comments related to them, as well as scoped reviews. The only way to have this rendered meaningfully is in PRs.

@webknjaz I have split this PR in a series of cascade dependant PRs (not all the reviews here were addressed yet) as previously discussed. Thank you very much for the tips.
I have to admit I cannot wait for pyproject.toml support to be available so people can start testing it (its been almost 2 months now that I submitted first PR...).
So I will leave those PRs open, while I manage to address all the existing reviews and comments. Please let me know if you plan to review them or don't have time for it.
If reviewers don't have much time for those PRs, we can simply go with Jason's suggestion and put the feature out there as experimental while we gather feedback from the community and iteratively improve the implementation (we don't have to get everything perfect in the first shot...)
@astrojuanlu and any other member of the community, please feel free to also review the broken down PRs! That help would be very appreciated!
Final note: I isolated the added external dependencies in https://github.com/pypa/setuptools/pull/3066, so any reviewer can decide to look or not in those changes (however any comments about those implementations should be addressed to the upstream projects).

If it helps, I've added this to the backends supported by scikit-hep/cookie in https://github.com/scikit-hep/cookie/pull/72, and I get the following error:
  Traceback (most recent call last):
    File "/Users/henryschreiner/git/scikit-hep/cookie/.nox/tests-setuptools621/lib/python3.10/site-packages/pip/_vendor/pep517/in_process/_in_process.py", line 363, in <module>
      main()
    File "/Users/henryschreiner/git/scikit-hep/cookie/.nox/tests-setuptools621/lib/python3.10/site-packages/pip/_vendor/pep517/in_process/_in_process.py", line 345, in main
      json_out['return_val'] = hook(**hook_input['kwargs'])
    File "/Users/henryschreiner/git/scikit-hep/cookie/.nox/tests-setuptools621/lib/python3.10/site-packages/pip/_vendor/pep517/in_process/_in_process.py", line 130, in get_requires_for_build_wheel
      return hook(config_settings)
    File "/Users/henryschreiner/git/scikit-hep/cookie/.nox/tests-setuptools621/tmp/pip-build-env-7dgrao9b/overlay/lib/python3.10/site-packages/setuptools/build_meta.py", line 195, in get_requires_for_build_wheel
      return self._get_build_requires(
    File "/Users/henryschreiner/git/scikit-hep/cookie/.nox/tests-setuptools621/tmp/pip-build-env-7dgrao9b/overlay/lib/python3.10/site-packages/setuptools/build_meta.py", line 177, in _get_build_requires
      dist = self._get_dist()
    File "/Users/henryschreiner/git/scikit-hep/cookie/.nox/tests-setuptools621/tmp/pip-build-env-7dgrao9b/overlay/lib/python3.10/site-packages/setuptools/build_meta.py", line 172, in _get_dist
      dist.parse_config_files()
    File "/Users/henryschreiner/git/scikit-hep/cookie/.nox/tests-setuptools621/lib/python3.10/site-packages/_virtualenv.py", line 21, in parse_config_files
      result = old_parse_config_files(self, *args, **kwargs)
    File "/Users/henryschreiner/git/scikit-hep/cookie/.nox/tests-setuptools621/tmp/pip-build-env-7dgrao9b/overlay/lib/python3.10/site-packages/setuptools/dist.py", line 825, in parse_config_files
      pyprojecttoml.apply_configuration(self, filename)
    File "/Users/henryschreiner/git/scikit-hep/cookie/.nox/tests-setuptools621/tmp/pip-build-env-7dgrao9b/overlay/lib/python3.10/site-packages/setuptools/config/pyprojecttoml.py", line 60, in apply_configuration
      config = read_configuration(filepath)
    File "/Users/henryschreiner/git/scikit-hep/cookie/.nox/tests-setuptools621/tmp/pip-build-env-7dgrao9b/overlay/lib/python3.10/site-packages/setuptools/config/pyprojecttoml.py", line 95, in read_configuration
      tool_table.setdefault("include-package-data", True)
  AttributeError: 'NoneType' object has no attribute 'setdefault'

This does not seem to include automatic discovery of src folder style packages. :'( How would I set that up via tool.setuptools? IMO, the printouts here are quite verbose, I highly recommend always using:
msg = "..."
raise SomeException(msg)

This will keep the traceback much nicer, otherwise it prints your entire string in the traceback twice. The traceback is completely unnecessary for the JsonSchemaValueException's, actually, since there's an actual formatted printout above the traceback.
I've tried a variety of ways to replicate:
[options]
packages = find:
package_dir =
    =src

[options.packages.find]
where = src

Which I'd rather not have to do anyway. :)

Aha! I see the tests, including a src layout. I'd love smart defaults here for the TOML config, especially for https://github.com/pypa/packaging.python.org/pull/1031!

Hi @henryiii, thanks for helping with the tests. Just a few minutes and I got a lot of feedback!

This does not seem to include automatic discovery of src folder style packages.

That is a separated PR for the time being, but I hope we can also lend it soon :)

How would I set that up via tool.setuptools?

That seems to be a failure in validatate-pyproject, the code in setuptools should be able to handle the configuration you provided. The same for the tracebacks...
I will need some time to fix the problems you pointed out that I hope to do during the weekend (unfortunately this week I got a bit busy 😝). If you are interested, could I ping you once I implement the fixes to try running the tests again?

Aha! I see the tests, including a src layout. I'd love smart defaults here for the TOML config, especially for pypa/packaging.python.org#1031!

This would be the separated PR: #2894

[tool.setuptools]
package-dir = {"" = "src"}
[tool.setuptools.packages.find]
where = ["src"]

Fixes it for me. Pretty sure I'm able to use this in scikit-hep/cookie with this - tests passed locally and look like they are passing in https://github.com/scikit-hep/cookie/pull/72. :)

That is a separated PR for the time being, but I hope we can also lend it soon :)

For some reason, the fact that it's required for non-src layout too makes me feel better about it. Would love to see it not needed for normal & src packages (explaining this packaging finding portion to new users can be challenging, and flit discovers common patterns correctly - and I really want packaging-projects.rst to be backend agnostic), but it's correct to keep this PR (family?) as small as possible. ;)

At least for PEP 518 specification of setuptools, this does not cause a regression with scikit-build. https://github.com/scikit-build/scikit-build/pull/660. It does cause a regression for (very tricky) pybind11 packaging, though, with error: package directory 'pybind11/include/pybind11' does not exist. https://github.com/pybind/pybind11/pull/3711

I tried converting plumbum, and got ValueError: expected parenthesized list: "; platform_system=='Windows' && platform_python_implementation!='PyPy'" in PEP 621 form. It was fine (no regression) in the original form.

Just to be clear, I'm personally quite okay if this system is broken by this PR, as long as it's clear that it's supposed to be. It actually won't break our SDists at all (those are completely normal and simple), only the development process, which I'm happy to fix. The pybind11 process is complex because it's doing three things: a) running CMake and producing config files that are shipped in the SDist, b) producing (based on an envvar) two different packages, one with "global" headers/data, and one that behaves like a nice self-contained Python packages, and c) injecting normal setup.py's so that this tricky process won't break for users in the future. ;)
There are other ways to do this, I expect, and I'm pretty sure it's not common. I was intentionally picking two of the most complex projects I maintain (scikit-build & pybind11), as well as one simple enough to be able to use the new config (plubmum). The fact scikit-build still can build with setuptools after the PR is impressive, that's held together with paperclips at the moment.
So if it's an expected breakage, I'm personally happy. Overall, I'd love to see the build backend modernized!

Thanks for the kind words @henryiii. It was not in my initial intentions to introduce any expected breakage for this particular aspect.
I still think I can make it backwards compatible. Let's see how the weekend goes :)

Let's see how the weekend goes. I will try to drop #3064...

I think I managed to do it... let's see how the test suite works.
Most of the work for making the other PRs compatible without #3064, was done when I moved away from #2924 towards the implementation in this PR, so it was not so complicated.
You can check the changes in the other open PRs. I will try also to update this PR with the aggregate of the other ones.

I updated this branch too to reflect the changes of the series of split PRs:

For diffs, please check the separated PRs:

#3065
#3066
#3067
#3068
#3069

In the future we can revisit the build_meta changes in #3064.

Hi @jaraco over the last weeks I improved the code with the help of webknjaz, henryiii and many others.
I also added a warning about the fact that this support is experimental in ced2741d0 (as per the suggestion in https://github.com/pypa/setuptools/pull/2970#issuecomment-1025473943). I think that the approach is already opt-in, so if the user is going to port the configuration in setup.cfg to pyproject.toml, is because they learned somewhere that setuptools now have experimental support for it. Moreover the warning from python -m build should be enough to guarantee that we can make breaking changes to this feature in the future, before committing to a stable design.
My plan is to post to the Python Discourse (Packaging category) asking for users to test the experimental/support-pyproject branch before merging it into the main branch. I will give it some days (maybe a week?) for feedback.
Meanwhile the several separated branches are still open for people that want to have a look or review.
Lastly, I think that support for pyproject metadata should be accompanied by py_modules and package automatic discovery, because this has the potential of avoiding a [tool.setuptools] special table for most of the cases (and therefore make it possible to build simple packages with only the information specified in PEP 621). This was discussed in #2887, so I also added #2894 to the experimental/support-pyproject branch.

Thank you for your work @abravalheri !
Do you have an estimate of when you will be posting asking to test the experimental/support-pyproject branch? I'm looking forward to trying it out in a few example projects.

Hi @moshez I have posted it in https://discuss.python.org/t/help-testing-experimental-features-in-setuptools/13821/24, now I am collecting feedback/bugs that I plan to address in the following days :)
Thank you very much

Thank you very much for your work @abravalheri ! I've really been looking forward to this and will be testing it on a couple of my projects soon.

Ok, I tried this again with the latest changes, and the build passed. I got two warnings though:
warning: check: missing required meta-data: url
warning: check: missing meta-data: either (author and author_email) or (maintainer and maintainer_email) should be supplied

I have a bunch of project URLs defined – is "url" really required?
Also, I have this: authors = [{name = "Alex Grönholm", email =<EMAIL_ADDRESS>so what is it complaining about?

@agronholm -- I got the same warnings.
Note that the package is created correctly: https://github.com/moshez/pyproject-only-example/tree/a79f89201915a4c2ac1cf2c14f370cc29449884d resulted in https://pypi.org/project/orbipatch/2<IP_ADDRESS>/ (note that the Homepage and author links are correct). The warnings are spurious.

Yup, I was just looking at the generated PKG-INFO when you posted that. Indeed it seems the metadata is generated correctly.

Hi @moshez and @agronholm , thabk you very much for testing it out!
The warning with the author is related to this: https://github.com/pypa/distutils/pull/116
I still need to have a look on the URL one 😅

@abravalheri  -- thank you for the explanation, link, and context. In order to avoid multiple people reporting the same issues, do you think it would make sense to edit your top-level post in https://discuss.python.org/t/help-testing-experimental-features-in-setuptools/13821 with "Known issues:"?

Hi @agronholm, I am investigating the url warning.
Could you tell me what are the URLs you have defined? I think this warning also comes directly from distutils if you don't have a "homepage". (It can be "Home-page", "homepage", "home-page" etc...)

do you think it would make sense to edit your top-level post in https://discuss.python.org/t/help-testing-experimental-features-in-setuptools/13821 with "Known issues:"?

Thanks @moshez, I just updated the post: https://discuss.python.org/t/help-testing-experimental-features-in-setuptools/13821#currently-known-issuesnon-intuitive-behaviour-not-blockers-4


Hiera-eyaml cannot decrypt with key, plain gpg works

Hi there,
I'm having an issue that none of my colleagues has, and after some days of research and fiddling around I'm completely stuck so maybe someone here can help?
It's similar to this issue: https://github.com/TomPoulton/hiera-eyaml/issues/164, but none of the solutions suggested there worked for me.
I can decrypt a file or a passage in a file using
eyaml edit --gpg-always-trust --gpg-recipients-file <recipient_file> <my_file>,
but when I try to decrpypt the file I get the following error:
[gpg] Fatal: Failed to decrypt ciphertext (check settings and that you are a recipient)
[hiera-eyaml-core] Decryption failed
This is my setup:

Ubuntu 16.04
gpg 1.4.20
hiera-eyaml 2.1.0
hiera-eyaml-gpg 0.6
gpgme 2.0.12

This is what I have tried:

Made sure encryption / decryption with plain gpg works
Deleted all private keys other than the one I'm using for encryption
After eyaml decryption surrounded the encrypted value with gpg "headers" and decrypted it with plain gpg -> works. Thus made sure the correct key pair is used for encryption / decryption.
Explicitly configured gnupg home, and made sure the correct gnupg path is used
Searched for processes on my system that have anything to do with encryption. Found gpg agent and gnome keyring daemon running. Killed the processes so they would not get in the way of eyaml.
Encrypted / decrypted again -> failed.
Set up eyaml in a docker container. Verified that eyaml encryption / decryption worked there. Got rid of all my ruby gems on my machine and installed the exact same setup as in the docker container.

None of these things worked out.
Any ideas anyone? I'm grateful for any hint.
Cheers, Andrea

Hi,
I had the same problem as you and I have the exact same versions of libraries that you do. In the other issue that you linked @sihil did mention that the key needs to be the very first in the list and after blowing away the gpg database and importing my secret key first (then all the other) the problem went away.
You mentioned that one thing you tried was deleting all private keys, which tells me that you haven't deleted ALL keys (public too), so you must have assumed that he meant that the the key needs to be the frist secret key, not first key of any kind.


No user error message displayed when login fails

When wrong user credentials are provided at the login page, there is no login error message shown to the user. The login page remains in the same state.
User must be notified about the login error, preferably using a 'snackbar' notification.

@georgepadayatti @john-k-antony
i checked this issue. There is already an error component which currently displays just below the input container.
Currently its not showing is because we are setting the value as,  error = error_discription
instead of error = errorDiscription
So should i add snackbar component or keep the UI as it is??


[FEATURE] Adding 'Contact Us' Page

Detailed description
Hi @J-Harsh
While exploring the website, I noticed that on clicking 'Contact' button, we get a 404-Page Not Found page.
Being a GSSoC'23 contributor, I would like to create the 'Contact Us' page. So, can you please assign this to me under GSSoC'23 ?

Context
According to me, 'Contact Us' page plays a significant role for a website as it can serve as a means of direct communication between the end users and the website maintainers. Moreover, the users can report bugs or issues encountered by them. Also, they can give feedback for the improvement of the website.
Possible implementation
Using TypeScript
Additional information
No response
Code of Conduct

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

Hey, what do you plan to include in the contact page?
We are already working on building an about us page, how do you plan to differentiate between the two?

As per my plan, the contact page will consist of 2 sections:

Enquiry form: Through this form, the users (if they wish) can enquire more about any upcoming event or hackathon. It will also include the social media handles of Vibey.
Event/Hackathon addition form: Through this form, the event organizers or hackathon organizers can request to the Vibey team about their upcoming event/hackathon to be listed on Vibey Website.

Note: The mail address to which each form will send its data would be different in above two forms so as to handle things separately and properly.
The 'About Us' page that you are already working on will consist of details about founder, team members, mission and vision etc. However, the 'Contact Us' page will serve as a means to get in touch with the Vibey team regarding posting of any upcoming event/hackathon or any enquiry for the same.

We have a proper pipeline of contribution that allows users to add their own events.
Furthermore, isn't the entire purpose of the website is to be a one stop destination for all the events etc?
We currently at Vibey do not provide any customer support or queries regarding events

Okay.

Okay.


deposit: errors not being displayed

Missing user feedback after various actions failing (e.g., failure in update of accessibility settings).

Do you know additional details on this one @saragon02 if you know? Which actions don't provide feedback?


XamlRoot is null in WinUI3 for Desktop preview4

Since preview 4, accessing the XamlRoot property of a FrameworkElement after the InitializeComponent of a Window returns null.
<Window>
    <Grid x:Name="root" />
</Window>

public sealed partial class MainWindow : Window
{
    public MainWindow()
    {
        this.InitializeComponent();
        var xamlroot = root.XamlRoot; //This is null
    }
}

This is expected.  Xaml elements won't have a XamlRoot until they are added to the tree. Once the OnLoaded event has fired the element should have a valid XamlRoot.


Texture altas import breaking sometimes - Cutting off sprite - 3.2.3.rc3

Godot version:
3.2.3.rc3
OS/device including version:
Windows 7
Issue description:
I have a specific set of images where changing their import settings to texture atlas causes them to be cut off in the atlas.
Steps to reproduce:
Check the reproduction project. All I did was select all the images and re-import them as an atlas file. Import mode doesn't make a difference. The result looks like this where half the sprite is cut off:

Minimal reproduction project:
atlas-bug.zip

@Giwayume Did you find a solution to this issue? Can you still reproduce this on 3.4?

Oh, I assumed at some point it started working because I have gotten past this point in my project, so I closed it. But no, looks like I never set up the atlas for this character. It's still broken in 3.4.
This is especially weird, since the atlas works great for literally every other sprite I've created.

For what is worth, and for future reference to anyone stumbling upon this issue, as a workaround I wrote an EditorImportPlugin for GDX Texture Packer GUI some time ago.
The workflow to get the AtlasTexture would be a bit different since you'd have to first build the atlas with the GDX Texture Packer instead, then drop the spritesheet along with the associated .atlas file into the Godot project so that the importer can generate a set of AtlasTexture resources you can use.
I've been meaning to document the whole process in the plugin repository for a while but never got around to it. Maybe I will soon.

My first thought is maybe Image::get_used_rect() is failing somehow, but I recreated the bounding boxes in GIMP using the numbers it outputs during (Re)import and they're correct.

Actually now that I look at it, the atlas region and margin appear to be correct if the atlas image itself didn't cut off the sprite.

This must be a problem when the importer draws the image to the atlas itself. We can assume the image data in memory is correct because it generated a good bounding box.

Ok I don't fully understand this code but I kinda see the problem.
https://github.com/godotengine/godot/blob/3.4/editor/import/resource_importer_texture_atlas.cpp#L134
In this line, "xf" starts at the left margin in the original sprite frame (source) image. Which in my case is a 512x512 image with the eyeball in the middle and a lot of empty space around it. This 512x512 dimension is set to the src_width and src_height variables respectively.

The variables width and height in this function refer to the final atlas texture's width and height, which is 256x252 in this case. So the entire generated texture atlas (256x252) is smaller than a single source animation frame (512x512). That exposes this bug.
It looks like in this loop it's limiting by the generated atlas's width when it's actually looping through the source image's pixels.
for (int xi = (xf > 0 ? int(xf) : 0); xi < (xt < width ? xt : width - 1); xi++) {
So instead it should limit by the source image's width.
for (int xi = (xf > 0 ? int(xf) : 0); xi < (xt < src_width ? xt : src_width - 1); xi++) {
This indeed produces the correct results. And it makes sens why the images were getting cut off before.

I don't yet know the full implications of changing this line, though. The code doesn't seem to crash when I regenerate another atlas where the atlas size is much larger than a source animation frame size.


Add webpack-dev-server to dev dependencies

webpack-dev-server added to list of dev dependencies
Please review the updated files: package.json and package-lock.json
My apologies for not following up sooner, I do not have much experience with git and pull requests, and I was a little bit worried I might make a mistake.
With much thanks and appreciation,
Sam

@syedsameerali thanks !!!


all the line is indented when tab is pressed

hi,
when i press tab after some text in codemirror editor, the text is also indented. i looked for if it is option or not, but i couldn't find anything. i attached a image to explain clearly.
i tried it demos in your website and on chrome, ie, ff (latest versions).
image: http://www.freeimagehosting.net/newuploads/yxnwp.jpg

See http://codemirror.net/doc/upgrade_v2.2.html

Hi Marijn,
As the two issues already filed (and the third one I was about to file) show, this is rather unexpected behavior. Would you consider accepting a patch that makes "insert a tab at the cursor position" the default behavior? That would be in line with what virtually every editor does and what most people expect?

I thanks to both of you


Test for new transaction ID scope after MSC3970 was merged in Matrix 1.7

This adds tests for the new transaction ID semantics that were part of MSC3970 and are now part of 1.7 of the Matrix spec.
Note that some of the tests are skipped because neither Synapse not Dendrite implement the new semantics by default yet.
Pull Request Checklist

[x] Pull request includes a sign off

Signed-off-by: Hugh Nimmo-Smith<EMAIL_ADDRESS>

it will need https://github.com/matrix-org/complement/commit/768f3596a69d2a453ce1fed308615100502c21ef cherry-picked onto it before merge.

This seems to have happened, so I am merging.

Thank you! 👍


Mouse controls in menus and small fixes

I kinda wanted mouse controls since 1998 when I got Final Fantasy VII for Windows and was stuck controlling it with the numpad. It's like how they put it on mobile phones and make you use on screen controls. Makes no sense to me.
A few fixes for my previous tweaks. Like sometimes fade would cut short if enough time went by between draw calls then the draw wouldn't happen. So that's fixed.
I think next week I'm going to figure out how to draw the gray backgrounds that the menus use. Though the texture is in the same file as the finger and such. so you might already have that in a variable somewhere.
I am just taking a break from ffcc and ffmpeg.
Some of my changes in here were to move inputs out of the draw calls and into update. If we ever want to suspend drawing and the controls are in the draw call then they are never checked.
Tried to do some code cleanup on the files I changed a bunch.

Since I work on weekends I'll be mostly not working on this till monday. I hope you like the changes.


array looping issue when used with Prototype or Mootools framework

when using with Prototype or a similar framework that extends Array functionality (http://www.prototypejs.org/api/array), the for... in method of looping (line 147 jquery.mobile.router.js) will treat all extended array methods as properties to loop through, and will cause a lot of errors!

I've never thought of using jQuery Mobile with other javascript frameworks, such as Prototype or Mootools.
Is there a particular reason you can't replace Mootools with jQuery?
It's important for mobile applications/websites to minimize the javascript memory footprint and loading another "useless" framework doesn't sound like a good idea to me.

I like the Object-Oriented inheritence framework that Prototype provides, which is very helpful to have for structuring bigger projects. This is not exclusively a Prototype/Mootools related issue though, any frameworks or plugins that extends Array functionalities are likely to run into this issue.

Fixed! Thank you.
I may suggest a very nice and small plugin to have OO support in jQuery, even if I don't find it particularly useful when used in a Backbone project:
http://code.google.com/p/jquery-klass/

ah thanks for that! Good to know.


Changing Port

I want to change the port of graphite from 80 to 85.
Please help me with the procedure

Please give us more informations about your setup. Which webserver and which version of graphite and webserver are you using? And which distro do you use?

Fixed. You can close the issue


[Native] - Problem accessing different fields of a structure type data in c++ worker

Bug description
There seems to be a problem in accessing different fields of a structure type data in c++ worker as shown by the output of the following query:
Query:
SELECT r[2] FROM (VALUES (ROW (ROW (1, 'a', true)))) AS v(r)
Returns following error:
VeloxUserError: childIndex == inputType.getChildIdx(childName) (1 vs. 0) Cannot map field index to name in dereference expression: 1. Input struct may have duplicate or empty field names: ROW<"":INTEGER,"":VARCHAR,"":BOOLEAN>.
The expected output was 'a'
We can fetch the first field of the resultant row type data here:
presto:tpch> SELECT r[1] FROM (VALUES ROW(ROW(1, 'a', true)) ) AS v(r);
_col0
1
(1 row)
System information
Velox System Info v0.0.2
Commit: fb5afdc532f3248b49302a4bdf0dbe406903882b
CMake Version: 3.26.4
System: Darwin-22.4.0
Arch: x86_64
C++ Compiler: /Library/Developer/CommandLineTools/usr/bin/c++
C++ Compiler Version: <IP_ADDRESS>30022
C Compiler: /Library/Developer/CommandLineTools/usr/bin/cc
C Compiler Version: <IP_ADDRESS>30022
CMake Prefix Path: /Library/Developer/CommandLineTools/SDKs/MacOSX13.1.sdk/usr;/usr/local;/usr;/;/usr/local/Cellar/cmake/3.26.4;/usr/local;/usr/X11R6;/usr/pkg;/opt;/sw;/opt/local
Relevant logs
No response

This issue is being tracked in https://github.com/facebookincubator/velox/issues/5536

Let's close this issue and consolidate the discussion in https://github.com/facebookincubator/velox/issues/5536


get version from GitHub

What I had in mind indeed ^^'

Feature implemented long time ago.
The prod_id will search the version of lstchain from the package (lstchain.__version__)


[RESOLVED] Interface eth0(): High error rate (>2 for 5m)

Problem started at 16:09:29 on 2023.05.17
Problem name: Interface eth0(): High error rate (>2 for 5m)
Host: S100-Primario
Severity: Warning
Operational data: errors in: 2, errors out: 0
Original problem ID: 20779
Event details in Zabbix: http://<IP_ADDRESS>/tr_events.php?triggerid=23483&eventid=20779

Problem has been resolved in 9m 0s at 16:18:29 on 2023.05.17
Problem name: Interface eth0(): High error rate (>2 for 5m)
Host: S100-Primario
Severity: Warning
Original problem ID: 20779


Implementation suggestion for complex multiplication to improve performance

The current implementation for complex multiplication uses the "naive" algorithm, see lib.rs lines 683-692.
// (a + i b) * (c + i d) == (a*c - b*d) + i (a*d + b*c)
impl<T: Clone + Num> Mul<Complex<T>> for Complex<T> {
    type Output = Self;

    #[inline]
    fn mul(self, other: Self) -> Self::Output {
        let re = self.re.clone() * other.re.clone() - self.im.clone() * other.im.clone();
        let im = self.re * other.im + self.im * other.re;
        Self::Output::new(re, im)
    }
}

There exists a slightly faster alternative, a variation on the Karatsuba algorithm, for complex numbers. This algorithm works using only 3 multiplications instead of 4, but 5 additions/subtractions instead of 2. On platforms where addition and multiplication cost the same, it might not be an improvement, but I've consistently seen this algorithm show improved performance on various platforms in C (though I'm not familiar with the Rust compiler, so you might want to test things with some benchmarks).
This is the algorithm's pseudocode:
    For z =  a + ib and z' = c + id
    k1 = c · (a + b)
    k2 = a · (d − c)
    k3 = b · (c + d)
    Re(zz') = k1 − k3
    Im(zz') = k1 + k2

source: https://en.wikipedia.org/wiki/Multiplication_algorithm#Complex_multiplication_algorithm
This would correspond, if I'm not mistaken (I'm currently learning Rust; drawing fractals, which is why I noticed this possible performance improvement; but am not sure about where to .clone() or not, so I put it everywhere), to the following code:
    #[inline]
    fn mul(self, other: Self) -> Self::Output {
        let k1 = other.re.clone() * (self.re.clone() + self.im.clone());
        let k2 = self.re.clone() * (other.im.clone() - other.re.clone());
        let k3 = self.im.clone() * (other.re.clone() + other.im.clone());
        let re = k1 - k3;
        let im = k1 + k2;
        Self::Output::new(re, im)
    }

A few thoughts:

k2 = a · (d − c) may be negative even when the result will only have positive parts.

That's potentially an issue for Complex<T> with unsigned T, though I don't know if anyone realistically uses that.
This could be avoided by branching: if c <= d { /* normal k2 */ } else { /* flip to c-d and then subtract k2 */ }

More generally, this changes the overflow conditions, but it's not necessarily better or worse.

i.e. some inputs will overflow intermediate values in one algorithm but not the other, in both directions.
That would mostly affect Gaussian integers, but floating-point Complex could also be near infinity or zero-underflow.
Maybe this warrants waiting for a breaking-change release? Or maybe nobody would notice...

Do you have any code which can be benchmarked with this change?

not sure about where to .clone() or not, so I put it everywhere

It's reasonable to start with that everywhere, and then you can remove the clone on the last use of a given value to instead consume it. So in your code k3 doesn't need any cloning, and k2 doesn't need to clone self.re.

That's potentially an issue for Complex<T> with unsigned T, though I don't know if anyone realistically uses that.
Wouldn't this also be an issue with the current multiplication ? ie, i^2 = -1 would cause a problem for any complex multiplication algorithm for any unsigned (and non-cyclic) T. But in any case, your solution works.

More generally, this changes the overflow conditions, but it's not necessarily better or worse.
I'm really not an expert on generic Rust (though I'd very much like to become one :D) so I don't feel confident giving you my input here.

Do you have any code which can be benchmarked with this change?
I don't have any such benchmarks in Rust, but if you tell me it's relevant, I can dig through my files and adapt some old C of mine this weekend, and provide you the source so you can run the benchmark. Or I can also try to fork this repo and make the changes, but I'm really not sure how to set that up such a fork or dependency with cargo. Otherwise, I could try to figure out how to use the system clock in Rust. The simplest thing is just to:

generate a random array of complex numbers,
start a timer,
run a defined amount of multiplications on this list with protocol 1,
end the timer: mark the operation time,
start another timer,
run the same multiplications on this list with protocol 2,
end the timer: mark the operation time,
compare the times
I can do that in C for you right now if you'd like.

It's reasonable to start with that everywhere, and then you can remove the clone on the last use of a given value to instead consume it. So in your code k3 doesn't need any cloning, and k2 doesn't need to clone self.re.
Thanks for the helpful advice !! Given that logic, I suppose I forgot to clone k1 in my line let re = k1 - k3; ?

Not sure if this is useful, but a hopefully fairly straightforward benchmark for complex number multiplication could come from a straightforward fractal loop:
#[bench]
fn bench_mul(b: &mut Bencher) {
    // This leverages part of the julia set to benchmark multiplication
    let c = Complex {
        re: -0.7,
        im: 0.27015,
    };
    b.iter(|| {
        let mut i = 0;
        let mut z = Complex {
            re: -0.8099464512195294,
            im: 0.07329678182974636,
        };
        while z.norm() <= 2.0 && i < 255 {
            z = z * z + c;
            i += 1;
        }
    });
}

I tweaked some rust-based julia fractal code I've been fiddling with recently to spit me out some example values where it had to do lots of iteration, to get me some useful values for c and z. That seems to result in sufficient multiplications as to provide a measurement of performance. I can easily influence the performance quite drastically by deliberately breaking the mul implementation doing things like making let im = self.re * other.im + self.im * other.re; just let im = self.im;
Here's the benchmark result from this benchmark against current master:
running 1 test
test bench_mul ... bench:         270 ns/iter (+/- 17)

With my Ryzen 7 3800X, I get 248 ns/iter on that benchmark with current master, and 264 ns/iter with the suggested changes. Most of that time is spent in norm's call to hypot though. If I change that to z.norm_sqr() <= 4.0, I get 79 ns/iter and 105 ns/iter for the old and new code, respectively.

Here are the two implementations on godbolt, using f64: https://rust.godbolt.org/z/558nzKaso
It doesn't look surprising at this level -- indeed showing 4 mulsd versus only 3 in the new, but one more instruction total.


Add tests for ELIST

waiting for Unreal to release, as they are going to change the meaning of ELIST C (https://github.com/unrealircd/unrealircd/pull/194)


bug: Failed to start Cody agent in timely manner

Cody Version
Current main: https://github.com/sourcegraph/jetbrains/commit/09a251166591e3b4e98231106f87fb5b2069cbc7
IDE Information
dev run
Describe the bug
Cody does not start since:
https://github.com/sourcegraph/cody/pull/4073
Expected behavior
cody is starting properly
Additional context
No response

fixed by https://github.com/sourcegraph/cody/pull/4073


MS Visual Studio 2013

I should be able to use VS 2015 if that's what I have installed.  I can pull this code to a local file and work on getting that to work, Is this feasible? Where do I look for the check?

I'm unsure if this is feasible.
https://github.com/workshopper/goingnative/tree/master/exercises/am_i_ready is the first exercise and it ensures everything you need is installed. Getting this to recognize some of the common window's tool chains would be the first step.

I have already submit a Pull-Request https://github.com/workshopper/goingnative/pull/76
@qwadzie See if it is ok?


Wayland clipboard support via data_control protocol

While it is true that wayland can support that X11 way of handling
clipboard support, this requires a running xwayland server and
compositor support for running xwayland.
This change introduces a new clipboard context
WaylandDataControlClipboardContext which is a wrapper around the
wl-clipboard-rs crate. This crate handles all of the communication with
the compositor for us.
To selected between X11 and wayland data_control clipboard handle is not
possible via a platform selector, as is the case for windows and mac,
two new features where add x11 and wayland-data-control. The x11
feature is in the default feature set as to preserve backward
compatibility.
The feature name wayland-data-control was chosen to handle other
possible wayland protocols to interface with a clipboard.
Looking forward to your review :)

Hey, thanks for the contribution!
Which compositor/desktop environment is this expected to work on? I tried with a KDE session and it failed

This protocol is from wlroots. So every compositor based on this will work e.g. sway, hikari.
https://github.com/swaywm/wlr-protocols/blob/master/unstable/wlr-data-control-unstable-v1.xml

As i don't have a X11 setup, i wasn't able to verify the changes to x11_clipboard.rs

Considering that the changes I'm asking for are not trivial, and that I have a somewhat specific idea about how it should be done, if you'd like I can just merge this PR into a topic branch, and I can finish the rest of the work myself. But if you want to complete this, that's totally fine too.

Sure go ahead. If i can be of any other help to this progress please let me know. :)

Awesome. I created an add-wayland branch. Just re-target this PR to that branch, and I'll take care of the rest. 🙂

Thanks again!


Define PODMAN_TEST_EXEC_NODES as a repository secret

What type of PR is this:
What does this PR do / why we need it:
Addendum to 511792a (to speed up the Podman tests on Podman), because defining it as a repo variable does not seem to work at this time in this repo.
Which issue(s) this PR fixes:
—
PR acceptance criteria:

[ ] Unit test

[ ] Integration test

[ ] Documentation

How to test changes / Special notes to the reviewer:

/hold
Blocked on https://github.com/redhat-developer/odo/issues/6532 (Ginkgo command not terminating after all the tests are done).

Closing this PR as superseded by #6535, which also reads PODMAN_TEST_EXEC_NODES as a repository secret.


CMake: Switch status matchers gtest dependency to use iree shim

Adopt changes introduced with 0255a39 to Bazel for CMake. Apologies for not having mentioned that in #409.

Ah sorry that I missed that this needed to be changed for CMake too!


Health check handler cannot return result in Json format

When enabled, the result from HealthGetHandler is a string "OK" (without double quotes). The "Content-Type" in response handler is also empty.
This makes light4j based service cannot be health checked if deployed behind a ESB like "Data Power". Because the response message must be in a unique format, otherwise, an error like "Invalid Json data format" will be returned from Data Power.
We need an option in config, health.yml to return a Json format result.
This option must be turned off by default to keep backward compatible.
There is a RFC submitted and approved: https://github.com/networknt/light-rfcs/blob/master/light-4j/0023-Support-Json-Format-Response-In-HealthGetHandler.md

@jsu216 Should we return double-quoted OK or a full-blown JSON like {"result": "OK}? Depending on the client implementation, double-quoted OK might not be considered as valid JSON for some systems.

Yes, it is a good idea to return {"result": "OK"}.

 Health check handler cannot return result in Json format

 Health check handler cannot return result in Json format


Support encrypted variables in Alertmanager template file

Add support for encrypting variables in the Alertmanager template file.
This is a workaround for https://github.com/ansible/ansible/issues/33067, which prevents us from using encrypted variables here.
e.g. we define the OpsGenie API keys in our group_vars/ files
alertmanager_opsgenie_api_key: !vault |
          $ANSIBLE_VAULT;1.1;AES256
<PHONE_NUMBER>3638323566613563663833633632626439313632336563353434623664633266306365
<PHONE_NUMBER>393033313437333837356536306636666532310a363133616463643962663233613630
<PHONE_NUMBER>3566356366393461656433653236653435346634396131306239363339376635366230
<PHONE_NUMBER>373436360a336439353535356436376133316239313664613434373934316265666162
<PHONE_NUMBER>3935303735333961393461653161376435316332356636326230333138

This change, as suggested in the above mentioned issue, allows us to use encrypted variables.

Looks like Travis failed on 2.9 testing due to rate limiting:
TASK [ansible-alertmanager : Get checksum for amd64 architecture] **************
fatal: [centos7]: FAILED! => {"msg": "An unhandled exception occurred while running the lookup plugin 'url'. Error was a <class 'ansible.errors.AnsibleError'>, original message: Received HTTP error for https://github.com/prometheus/alertmanager/releases/download/v0.20.0/sha256sums.txt : HTTP Error 429: too many requests"}

Unsure how to re-run - @paulfantom ?

Tested manually and LGTM :+1:


Parameters for prepare-iso.sh ignored

I wanted to create a 10.11 and 10.12 image. I have both the installers in /Applications, but the logic in the script seems to just check for the applications and ignores specifying which version or image name I want per the readme.

I delete the check temporarily in prepare-iso.sh.
It's probably unrelated, but I wasn't able to create a 10.11 image:
Resize the partition in the sparse bundle to remove any free space
--------------------------------------------------------------------------
$ hdiutil resize -size 3927744b /tmp/ElCapitan.sparseimage
hdiutil: resize: failed. Resource temporarily unavailable (35)

Convert the sparse bundle to ISO/CD master
--------------------------------------------------------------------------
$ hdiutil convert /tmp/ElCapitan.sparseimage -format UDTO -o /tmp/ElCapitan
hdiutil: convert failed - Resource temporarily unavailable

Remove the sparse bundle
--------------------------------------------------------------------------
$ rm /tmp/ElCapitan.sparseimage

Rename the ISO and move it to the desktop
--------------------------------------------------------------------------
$ mv /tmp/ElCapitan.cdr /Users/my.user/Desktop/ElCapitan.iso
mv: rename /tmp/ElCapitan.cdr to /Users/my.user/Desktop/ElCapitan.iso: No such file or directory

Made a new issue #27 for the OSX 10.11 issue.

d'oh. I had to unmount a drive that was attached. This was attached as part of the first convert-to-iso I did and it was causing issues. Unmounting and re-running and it went fine.

Closed the wrong issue. :(

#48 is my PR for this

See also (slightly related): #34.


doesnt works at all

even when doing sc create + sc start with test sign, when i try to open client it says:
ERROR_INVALID_HANDLE_VALUE

Same. I noticed that the driver is not installing at all. I thought there was a problem with the .inf file, I tried to change it in several ways, but all I was getting was a BSOD.


Dynamic albedo for floating PV

Per @lmicheli recommendation, I suggest we add the dynamic albedo calculation as described here.
I am up for taking the task of adding it to pvlib, but I would like to hear your thoughts on this addition.

One concern around the white cap fraction defined by Eq 6: this paper seems to treat Eq 6 as returning a unitless fraction (it is subtracted from 1 in several places), but the cited reference claims that the equation returns values in percent.  That seems like a nontrivial error to me.
More generally, would people actually use a spectral albedo model for FPV?  I think of spectral albedo as being pretty niche for ground PV (#1826), but maybe it's different in FPV?

I think someone modeling floating PV would look for an albedo because the transposition models require one. The paper proposes a spectral albedo model because one of its sources provides a spectral refractive index. If we implement this method, I think we should add an integrated broadband albedo to the function's output.
I'm a bit skeptical of albedo models that are calibrated to satellite observations, as the components of this model appear to be. I can see how foam, whitecaps and surface roughness could affect the large-area albedo viewed from space. How would these features affect the albedo "seen" by a floating PV system? More generally, is an accurate albedo important in a performance model for ocean floating PV? I imagine the modules would be at quite shallow tilt on the floaters, with their view to the horizon mostly blocked by adjacent floaters. If that's right, the far-field sea-reflected irradiance would be a negligible factor in system power.

I think we should add an integrated broadband albedo to the function's output.

I would prefer to leave that to another function, so it's code can be reused if spectral data is extended in the future and the implementation and docs of this model are more compact.

I scanned the paper but did not see any validation of the model.

Good point @adriesse! There is also this paper that has a fairly similar model (and also a validation section). However, based on the previous comments, it is still not entirely clear to me if such a model would be a valuable addition.


add optional defmt support for error types

add defmt as an optional dependent package
I am only able to test defmt v0.3.0 as the rest of my project is using that version the latest is at v0.3.5
closes #75

I hope I did the CI part properly if not feel free to amend that...

Is there anything here I can help with to get this merged?

@vhdirk At this point, I would consider this PR abandoned. If you want to fork this current work and address my remaining comments, I'd be happy to review it as a separate PR :)

@vhdirk if you can't do it, i can also help, tell me

It's already being continued in https://github.com/rust-embedded-community/serde-json-core/pull/77 for now :)

@vhdirk Thanks for picking up where I started with this and getting it in there!


upgraded to Solr 8.6.0

Adding a PR with the initial commit. It might need more work. Main changes:

TermsQuery is replaced with TermInSetQuery
we treat boosts <=0 as Term queries
upgraded some dependencies (e.g. maven-shade) and using Java 11

I think you'll have to adjust travis configuration because travis builds are failing. I guess you have to remove builds on jdk8 and add builds on jdk11 and newer.

@radu-gheorghe doesn't this need to be merged and then a new release made?

Right. I just merged now. I'll do a release right away.


Feature Request: Allow customizing HTML Title

Currently the HTML Title is always "Mailpit". This is fine as long as only one instance is used.
With multiple environments, e.g. local and staging, I'm running multiple instances so it would be great if I could name them "Mailpit Local" and "Mailpit Staging".
Adding e.g. MP_UI_TITLE and --ui-title with default "Mailpit" would be great.
What do you think?

Interesting suggestion @bb. When you say HTML title, I assume you mean the <title> in the <head> (ie: the tab name), and not the "Mailpit" title (headling/link) at the top of the page?
When I started Mailpit I made an intentional effort to keep the CLI flags/options to a minimum, but that grew and grew as popularity picked up and feature requests came in. I still have to make a conscious effort to keep things as simple as possible where avoidable so I'd rather not add new flags if they can be achieved in a different manner.
Thinking aloud here ~ are your Mailpit servers running on the same hostname/ip? What I mean is, what if I simply used the current hostname (that you were accessing Mailpit with) in the <head> <title>, so for example Mailpit - staging.example.com? Would that work for you?

Exactly: title in head 👍
I understand your concern. Hostname would be fine for me.

I have just released this feature in v1.8.2. Please upgrade and let me know what you think?


Fixed fulltomography

Motivation:
I wanted to tomograph and reconstruct a state from the output from a quantum circuit I had implemented in PastaQ, but I kept getting Error: 'empirical_probabilities' is not defined. This led me to explore the project code, and I ended up making the functionality work. I have added my changes as a PR.
Small changes to some files in the project, I have added a list here:

Added .vscode to .gitignore. This is mainly for cleanup. :)
Added entries for Convex, SCS, and MathOptInterface to Manifest. This enables us to unconditionally include fulltomography.jl in the module.
Tiny correction to the README, just ensuring consistency (everything that's part of code, including the ] to go into package mode, is formatted as code instead of regular text)
Moved fulltomography.jl into the module proper, removed the requirement for optional SCS and Convex, and made them as required dependencies.
fulltomography.jl  now imports SCS, Convex, and MathOptInterface separately. The earlier import const MOI = SCS.MathOptInterface would throw an error.
The functions in fulltomography.jl had some inconsistent implementations for the maximum likelihood keyword, fixed everything to be consistent.
Modified runtests.jl to use a filter, not an explicit list of tests. This can later be upgraded to broadcast the logical && operation on the array returned from readdir(), but requires >=Julia v1.7.
Modified test_fulltomography.jl to use the new keyword for maximum likelihood.
Modified test_gpu.jl to add Phase damping noise as well, and create a new testset for depolarizing noise.  This takes care of the fact that even if eltype is nothing, the output of runcircuit in case of depolarizing noise is a ComplexF64, not a Float64.
Modified test_io.jl to write test output data to a data/ subdirectory in the tests folder, so output of testing can be kept separately, keeping the code directory clean. Currently, this directory is added in the .gitignore, but can be removed in case test outputs are needed here.
Verified that all tests pass (at least with single threaded execution, yet to test multithreaded execution).

I would prefer to keep them as optional dependencies instead of direct dependencies. Ideally we could organize the code as a package extension: https://pkgdocs.julialang.org/v1/creating-packages/#Conditional-loading-of-code-in-packages-(Extensions)


renovatebot(deps): update dependency com.datastax.cassandra:cassandra-driver-core to v3.7.2

This PR contains the following updates:

Package
Update
Change

com.datastax.cassandra:cassandra-driver-core (source)
patch
3.7.1 -> 3.7.2

Release Notes

datastax/java-driver
v3.7.2
Compare Source

Renovate configuration
:date: Schedule: At any time (no schedule defined).
:vertical_traffic_light: Automerge: Disabled by config. Please merge this manually once you are satisfied.
:recycle: Rebasing: Whenever PR is stale, or if you modify the PR title to begin with "rebase!".
:no_bell: Ignore: Close this PR and you won't be reminded about this update again.

[ ] If you want to rebase/retry this PR, check this box

Available now for Enterprise: Renovate Pro with real-time webhook handling and priority job queue.

 Thank you for your submission, we really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.null seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account.You have signed the CLA already but the status is still pending? Let us recheck it.


Updating the number of hours for migration cutoff

Updating the number of hours for migration cutoff from 47 hours to intended and supported 36 hours.

@niko-neugebauer : Thanks for your contribution! The author(s) have been notified to review your proposed change.


Does this library support join point with multipolygon?

I check the sample polygon data in the repo, all of them are actually Polygons, but not Multipolygon. I am wondering whether it supports or this is still on-going work?

I think it works with multipolygon


Using Animations.jl

Regarding #22 where we discuss an easier way of defining frames.
Actually we might want to just define them as animations:
See https://jkrumbiegel.github.io/Animations.jl/stable/
What do you think about:
Action(anim, (args...)->line(O, Point(10,20), :stroke))

where anim is:
Animation(1, Translation(O), sineio(), 30, Translation(Point(20, 50))

but this might be a bit confusing so we should define short hands for it like
Action([1, Translation(O), sineio(), 30, Translation(Point(20, 50)], (args...)->line(O, Point(10,20), :stroke))

or
Action(1:30, sineio, (args...)->line(O, Point(10,20), :stroke), Translation(O, Point(20, 50))

to define a simple animation.
Additionally I'm wondering whether the Translation should be in front of the function as this is the order of execution.

Example of a new idea
Action(1:30, (args...)->line(O, Point(10,20), :stroke); subactions = [
   SubAction(10, sineio, appear),
   SubAction(10, Translation(Point(10,10)),
   SubAction(10, polyin, disappear),
])


feat(BID-394): Eigen websocket popcorn bidding

This PR resolves BID-394
Description

This PR adds capability to consume websocket messages and implements popcorn bidding in Eigen
Video: https://artsy.slack.com/archives/C01PBEBRB0V/p1653340059610279?thread_ts=1653330737.395859&cid=C01PBEBRB0V

PR Checklist

[x] I tested my changes on iOS / Android.
[x] I added screenshots or videos to illustrate my changes.
[x] I added Tests and Stories for my changes.
[ ] I added an app state migration.
[x] I hid my changes behind a feature flag.

To the reviewers 👀

[ ] I would like at least one of the reviewers to run this PR on the simulator or device.

Changelog updates
Changelog updates

Cross-platform user-facing changes

Add Websocket and popcorn functionality - kizito

iOS user-facing changes

Android user-facing changes

Dev changes

Need help with something? Have a look at our docs, or get in touch with us.

Warnings

:warning:

We are trying to migrate away from moment towards luxon, but found moment imports in the following new files:

src/app/Components/ArtworkGrids/LotProgressBar.tests.tsx

See docs.

  Generated by :no_entry_sign: dangerJS against 1543ef89424b373c4f22625ff99eec25cd12b791

Thanks for all the fixes Kizito, I left 2 small comments and I think we should be fine with merging this.

Updated. Will merge when green. Thanks alot for the thorough review!


dynamic programming algorithms

📚 Python
Missing dynamic programming algorithms technique
I would like to add codes for:

assembly line scheduling
calculating binomial coefficient
matrix chain multiplication
floyd warshall

Let me know if there's a chance of me contributing. Thank you

Hi, @HarshCasper @anushkrishnav Can anyone of you help me with this issue? Thank you

looks good , Get started with it !!


Call on Logging Microservice from Printer API

Yes

maybe we should call the log api from the frontend like:
print logging service
      ^
      |
      |
      |
      |
frontend      -------------> printer RPC ---------> printer

instead of
                      print logging service
                                    ^
                                    |
                                    |
                                    |
                                    |
                                    |
frontend      -------------> printer RPC ---------> printer

let me know what you think. my bad if i keep switching up ideas.

I think calling from the frontend seems better because printerRPC would just need to focus on connecting to the printer while the print logging service can focus on adding a print log

@1234momo sounds good. let's just have the 2D printing APIFunctions call both on the logging service and rpc when the user submits a print.

Changes made:

Called print logging service to log a print request from frontend (src/Pages/2DPrinting/2DPrinting.js)
Added a printing analytics page (src/Pages/PrintingAnalytics/PrintingAnalytics.js, src/Pages/PrintingAnalytics/PrintingAnalytics.css)
Added a node file to generate fake print requests (util/mocked-data/PrintLogLineChart.js)


json structure demo

What kind of json data structure can display the graph correctly demo, use flux syntax https://docs.influxdata.com/flux/v0.x/stdlib/array/from/

Sorry, I'm not entirely sure what your question is.
Each "row" of data should at least have a source, target & value.
Hope that helps


Example doesn't compile for macOS

Hi,
error are:
Potential overridden instance method 'startDownload(using:completionHandler:)' here (WebKit.WKWebView)
Potential overridden instance method 'resumeDownload(fromResumeData:completionHandler:)' here (WebKit.WKWebView)
The problem are in FZUIKIt file FZWebView
XCode 16.1, macOS 15.1 (24B83)

Fixed it with the newest release of FZUIKit.

Thanks,


SPFx list command sets | Update refresh list content

What type of issue is this?
Question
What SharePoint development model, framework, SDK or API is this about?
💥 SharePoint Framework
Target SharePoint environment
SharePoint Online
What browser(s) / client(s) have you tested

[x] 💥 Internet Explorer
[x] 💥 Microsoft Edge
[X] 💥 Google Chrome
[x] 💥 FireFox
[x] 💥 Safari
[ ] mobile (iOS/iPadOS)
[ ] mobile (Android)
[ ] not applicable
[ ] other (enter in the "Additional environment details" area below)

Additional environment details

Version 119.0.6045.160 (Official Build) (64-bit)
Any (1.18.1)
Node.js version v16.20.0

Issue description
I'm not really sure where to post this, but @VesaJuvonen linked me here during a ESPC Hot Seat Session
When building SPFx list command sets, I can update a list item via my code, but I cannot force the list to "re-render" - there used to be a hack where I could trick the DOM to "invalidate" the list contents, and force SP to update the list, but that no longer works, so my only option is to reload the entire page, creating a very 2005ish web experience ... and come on it's 2023, we should be able to build sleek web solutions.
Awesome work you're doing SPFx 🙌

Hi, do you have any update on this one?


allow pushpin at 0,0

Manually merged into develop branch. Thanks for your contribution!
Please be sure to submit any future PR's to the develop branch directly.


Refactor out from the build.mk the ingresstest target

Description
We should not run ingresstest as part of test in the builder.mk, as it leads to some other errors.

Not necessary a


Set up the development environment

name: ISSUE_TEMPLATES
about: New issue template
title: ''
labels: ''
assignees: ''

As a [role]
I need [function]
So that [benefit]
Details and Assumptions
* [document what you know]

Acceptance Criteria
gherkin
Given [some context]
When [certain action is taken]
Then [the outcome of action is observed]

As a [role]
I need [function]
So that [benefit]
Details and Assumptions
* [document what you know]

Acceptance Criteria
gherkin
Given [some context]
When [certain action is taken]
Then [the outcome of action is observed]


$assert cells should be ignored during synthesis

This was triaged from openfpga, so please see the discussion over at https://github.com/azonenberg/openfpga/issues/11.

The usual approach is to enclose all code for formal verification with `ifdef FORMAL ... `endif and only set the define FORMAL when doing formal verification (done by default by read_verilog -formal).
It would be possible, as @azonenberg suggested, to add an option to synth_greenpak4 that simply runs a command such as delete t:$assert for convenience, but that would be very unconventional. I'd accept such a patch for synth_greenpak4 from @azonenberg, but I would not add it to "my" synthesis flows such as synth_ice40 or synth_xilinx.

Thanks, I guess the SystemVerilog reproducer was a bit of a red herring. Should GHDL not emit Assert entries at all, or have an option to not emit them? It seems a bit strange to be doing it there, vs yosys or nextpnr.


[Feature] Add smart attribute to polygon.js for auto-conversion to brush mask

Add smart attribute of polygon to enable automatic conversion of closed polygons to brush masks
Enhances user experience by simplifying the transition from polygon to brush mask

작업 내용

web/libs/editor/src/tools/Polygon.js
build and push with static_build


Handle case where $li.scope() returns null.

@sqs  CR?

LGTM (looks good, thanks, Marinelli)
Sent from my iPhone

On May 9, 2015, at 15:49, Eugene Marinelli<EMAIL_ADDRESS>wrote:
You can view, comment on, or merge this pull request online at:
https://github.com/blendlabs/angular-dataform/pull/3
Commit Summary
Handle case where $li.scope() returns null. Happens if you press enter when there are no results.
File Changes
M dist/angular-dataform.css (24)
M dist/angular-dataform.js (8)
M modules/directives/autocomplete/autocomplete.js (5)
Patch Links:
https://github.com/blendlabs/angular-dataform/pull/3.patch
https://github.com/blendlabs/angular-dataform/pull/3.diff
—
Reply to this email directly or view it on GitHub.


Multiple graphs in same svg

Hello, I am using Graphite Render API to render graphs. I have a couple of questions.

I need to display multiple graphs on the same page(same SVG). Is this possible? I tried using "target={metric1}&target={metric2}", but then both metrics are displayed on the same graph. This is not what I want. Please advise how to render separate graphs for separate metrics on the same page(something similar to how the Dashboard displays separate graphs)
I would like to use the drawAsInfinite function to mark all events starting from 3 hours ago. I tried this "target=drawAsInfinte(events(*))&from=-3h", but this seems to be unsupported. What is the correct way to use wildcards for events?
Your help is highly appreciated.

Thank you

@shivagopalan Just use a separate URL for each graph.

@shivagopalan The events argument must be a quoted string, e.g. events('*').

@obfuscurity Thanks a lot for your response.

I do not understand how I can use two URL's for the same page. Maybe I am misunderstanding your point, could you show me an example of how this works?
Thanks, this worked. As a follow up, I would like to assign a separate color to each of the events returned. I tried doing this - "target=drawAsInfinite(events('*'))&colorList=red,yellow,green,purple" , but the colors are not getting assigned to each of the individual events. Instead, all events are getting marked by the same color. What is the right way to do this?

Thank you once again. Appreciate your help

@shivagopalan:
In current codebase, it's not possible to render multiple graphs on the same SVG or PNG image. Please use dashboard software to achieve this, e.g. Grafana. Grafana also can help you with showing annotations.

Let's clarify what we're talking about. It's absolutely possible to render a virtually infinite number of graphs on the same page by sourcing each of them individually, e.g.:

If you want a dashboard, use a dashboard. But it sounded to me like @shivagopalan was trying to compose a custom web page with multiple graphs.

Sure! I'm not going to downplay your explanation, @obfuscurity. It really depends on the task, maybe for @shivagopalan's task using dashboard, especially such complicated as Grafana could be clear overkill.

And I don't know how you can color drawAsInfinite() graph btw.

Eh? http://obfuscurity.com/2012/04/Unhelpful-Graphite-Tip-1

I mean, as @shivagopalan wants - with '*' as event and color list.

@deniszh Thank you for your response.

I believe I may have to use Grafana eventually for my work, but for now the option @obfuscurity suggested should work just fine. Thank you for that, makes my life simpler :)
I am trying to do something like this - "&target=drawAsInfinite(color(events(%27*%27),["red","green"]))&from=18:10_20170317&until=18:30_20170317&format=svg" but not successful so far. @obfuscurity thanks for sharing that link. I went through it but could not find how to assign a colorList to a number of events. Please advise if this functionality is supported.

The link was just to demonstrate that you could apply colors to a drawAsInfinite() series. It doesn't address your specific use case.

@obfuscurity Sure. Thanks for your help. Please let me know if you are aware of this functionality being available. @deniszh Thank you very much. I will continue to look at this usecase.


Create Student & Student Group Modals

4/8 Friday Deadline
Please review design with Fiona and Serena when done
Update the create new student modal:

Make the design look like the figma
Connect the "save" button to the backend to actually add a new student to the database (post route within students.js)

Make the manage student group modal:

Make the design look like the figma
Connect the "save" button to the backend to actually add a new student group (post/put route within studentGroups.js)

Create Student Modal:

Manage Student Group Modal:

/cib create-student-and-student-group-modals

Branch 87-create-student-and-student-group-modals created!


Update credits

Update credits based on the main menu (although I also moved Krock to core dev section)
Add subheadings

please note karhl is now in an inactive team in minetest GH group, maybe move him too


add ETCDCTL_API env var to enable etcdctl on etcd container

little update on swarm file for etcd service
added ETCDCTL_API=3 env. var
then it allows to use etcdctl using:
docker exec -it [containerId] /etcdctl [command...]
to manually add, get, browse etcd data

@freignat91 I don't think this is necessary. This is what I do:
docker run -t --rm --net=host -e ETCDCTL_API=3 quay.io/coreos/etcd:v3.0.4 etcdctl

I actually have that as an alias in my .bashrc file.
# etcd
alias etc='docker run -t --rm --net=host-e ETCDCTL_API=3 quay.io/coreos/etcd:v3.0.4 etcdctl'

With that, I can test etcd running in the swarm:
$ etc put hello world
OK
$ etc get hello
hello
world

@freignat91 I'll close the PR shortly. If you feel strongly that we should merge this, please provide your reasons or discuss with me on slack. Thanks.

Alias is ok, i close it. Thanks


Automatically detect target platform (set -m32 for 32 bit builds)

When the target platform in Visual Studio is set to Win32 power tools do not automatically add parameter -m32 to tell clang it should target a 32 bit system. I can manually add it in the options dialog and thus successfully run clang to target 32 bit. Could this be automated? I.e. could power tools add -m32 automatically depending on the platform setting in visual studio?
Related: #322

Hi,
Good suggestion 👍
Thanks for your feedback.
We'll update this thread when progress is made...

We've added this detection to the next release of Clang Power Tools, 4.0; to be released soon.


Increase dragging dead zone

from 2 to 12 (in units of ScreenCoordinates). IMO this feels fine.
cl:

tweak: Increased dead zone for click-dragging. Should reduce the frequency of accidental drags when trying to click on things.

blessed


Attribute content is cleared entirely if an expression in an AttributePart evaluates to noChange on first render

Description
lit-html: 2.0.0-rc.3
lit-element: 3.0.0-rc.2
If one of the expressions to be rendered by an AttributePart is noChange on the first render, the entire content of the attribute is cleared even if there are other parts of the attribute statically written into the template (or controlled by other directives, I think).
I think this is because of these steps:

The ._$committedValue property is initialized here and filled with nothing:
https://github.com/lit/lit/blob/ec5ab1b394d8de27e1680294547d7cc1db166692/packages/lit-html/src/lit-html.ts#L1231

When the value produced is noChange, it is substituted with a value from ._$committedValue:
https://github.com/lit/lit/blob/ec5ab1b394d8de27e1680294547d7cc1db166692/packages/lit-html/src/lit-html.ts#L1292-L1295
However, the value from  ._$committedValue was never previously set because this is the first render, so it reads the nothing it was initialized to.

A couple lines down, if the value for that particular expression (v) is nothing, then the full value to render to the attribute (value, previously "color: red; " in the example below) is replaced with nothing[^1]:
https://github.com/lit/lit/blob/ec5ab1b394d8de27e1680294547d7cc1db166692/packages/lit-html/src/lit-html.ts#L1298-L1299

Steps to Reproduce

Write this code

import {html, render, noChange} from 'lit';

render(html`

    This text should be red.

`, document.body);

See this output...

The text "This text should be red." is rendered, but it isn't red.
Live Reproduction Link
https://lit.dev/playground/#project=W3sibmFtZSI6InNpbXBsZS1ncmVldGluZy50cyIsImNvbnRlbnQiOiJpbXBvcnQge2h0bWwsIHJlbmRlciwgbm9DaGFuZ2V9IGZyb20gJ2xpdCc7XG5cbnJlbmRlcihodG1sYFxuICA8ZGl2IHN0eWxlPVwiY29sb3I6IHJlZDsgJHtub0NoYW5nZX1cIj5cbiAgICBUaGlzIHRleHQgc2hvdWxkIGJlIHJlZC5cbiAgPC9kaXY-XG5gLCBkb2N1bWVudC5ib2R5KTsifSx7Im5hbWUiOiJpbmRleC5odG1sIiwiY29udGVudCI6IjwhRE9DVFlQRSBodG1sPlxuPGhlYWQ-XG4gIDxzY3JpcHQgdHlwZT1cIm1vZHVsZVwiIHNyYz1cIi4vc2ltcGxlLWdyZWV0aW5nLmpzXCI-PC9zY3JpcHQ-XG48L2hlYWQ-XG48Ym9keT5cbiAgPHNpbXBsZS1ncmVldGluZyBuYW1lPVwiV29ybGRcIj48L3NpbXBsZS1ncmVldGluZz5cbjwvYm9keT5cbiJ9XQ
Expected Results
The rendered text is red.
Actual Results
The rendered text is not red.

[^1]: I think this might qualify as a second bug: any directive of those associated with the same AttributePart can cause the entire attribute to be cleared if it alone returns nothing - even after the first render. Filed as https://github.com/lit/lit/issues/1921.

(Updated to remove discussion about directives, which aren't actually related.)

Oh, actually this isn't related to directives at all. This is enough to demonstrate this:
import {html, render, noChange} from 'lit';

render(html`

    This text should be red.

`, document.body);

playground link

Oh, I've basically turned this into a dupe of #1921. Closing.

This sounds like a legit but, while #1921 is WAI. Reopening.

From https://github.com/lit/lit/pull/1819#issuecomment-846078699:

Actually, looking into this some... I'm not sure #1920 isn't WAI too. The question is what should render if we get noChange on first render? I'll take this to that issue, but here one workaround is to return undefined instead of noChange. That would emulate any change we might make for #1920 which would be to initialize with undefined instead of nothing.

It seems weird that noChange would mean 'delete the entire attribute', more so that this behavior only happens on the first render. My initial expectation is that for something like
html`<div attr="${a()} ${b()} c"></div>`

where a() returned noChange first, that the attribute would render as " ${b()} c" (for whatever b() returns) - as if each AttributePart's initial value was nothing (or really "", in Lit 2 terms).
Lit's model for what aspects of an attribute a particular AttributePart controls is confusing. When I read something like that template, my instinct is that ${a()} only affects the portion of the attribute that the expression would be inserted into if this were a plain template string. It's odd that it prevent the " ${b()} c" part from being rendered. Are we sure AttributeParts should all be given veto powers?

noChange doesn't mean "remove the attribute", only nothing does. The issue here is that the initial value for attribute parts is nothing and noChange just doesn't change that.
Attribute expressions were already given "veto" powers via the ifDefined() directive - the problem is that ifDefined() was imperative and wouldn't automatically work in SSR. The big difference in Lit 2 is the initial value.
One of things with lit-html is that it is decidedly not string interpolation. Parts are stateful, directives are stateful and can do DOM things, and expressions handle many types some of which aren't even renderable (ie event listeners), undefined and null render empty strings, etc. So string interpolation intuition should necessarily apply.
One way to thing about attribute bindings is that they're shorthand for a single computed string value similar to:
`attr="${a} b ${c}"`

⬇
a !== nothing && c != nothing ? `${a ?? ''} b ${c ?? ''}` : null

The question is whether, even if there's a rational explanation for the reason for this behavior, the initial value is confusing. To me, I'm not sure that we should render something before we've received all the values - even undefined or null would count. But I may be in the minority and in #1922 I have a change to the default.


Rails 5 Support

Currently, fastly-rails does not support Rails 5 due to being locked to railtie < 5 in the gemspec. Adding fastly-rails to a rails project silently resolves to a really old version, fastly-rails (0.4.1), the last version before the lock on railtie was added.
This seems to work fine in newer versions of rails, would it be possible to remove the dependency on railtie version, and mimetype?

When will this be resolved?


entrypoint: accept /dev/disk/by-x names for OSD_DEVICE

All the ceph tools support symlinks for the devices (such as /dev/disk/by-path) but ceph-disk list will give the canonical names, so we need to resolve the symlink when we grep the output from ceph-disk

Note that there is a small problem here. If you do not specify OSD_JOURNAL, then entrypoint will helpfully try add the partition number onto the end of the name, but that won't work for by-path or by-id names. This PR is still strictly more functional than what is there at present (I do not believe it introduces regressions) but it only works for symlinked drives if you also happen to specify OSD_JOURNAL.


[improve][ci] Limit cache step to 5 minutes to fail faster when it gets stuck

Motivation
The cache step in GitHub Actions workflows gets sometimes stuck.
Example at https://github.com/apache/pulsar/actions/runs/3905696188/jobs/6673646325#step:6:17
Received<PHONE_NUMBER> of<PHONE_NUMBER> (99.7%), 0.5 MBs/sec
Received<PHONE_NUMBER> of<PHONE_NUMBER> (99.7%), 0.5 MBs/sec
Received<PHONE_NUMBER> of<PHONE_NUMBER> (99.7%), 0.5 MBs/sec
Received<PHONE_NUMBER> of<PHONE_NUMBER> (99.7%), 0.5 MBs/sec
Received<PHONE_NUMBER> of<PHONE_NUMBER> (99.7%), 0.5 MBs/sec
Received<PHONE_NUMBER> of<PHONE_NUMBER> (99.7%), 0.5 MBs/sec
Received<PHONE_NUMBER> of<PHONE_NUMBER> (99.7%), 0.5 MBs/sec
Received<PHONE_NUMBER> of<PHONE_NUMBER> (99.7%), 0.5 MBs/sec
Error: The operation was canceled.

The cache step runs until the job times out after 60 minutes.
Modifications
Add timeout-minutes: 5 to cache steps to limit the execution time to 5 minutes.
Documentation

[ ] doc
[ ] doc-required
[x] doc-not-needed
[ ] doc-complete

another case where this issue is happening: https://github.com/apache/pulsar/actions/runs/3905806139/jobs/6674164947#step:6:1875

Codecov Report

Merging #19219 (d8f256d) into master (d7f8f56) will decrease coverage by 10.55%.
The diff coverage is 0.00%.

@@              Coverage Diff              @@
##             master   #19219       +/-   ##
=============================================
- Coverage     47.89%   37.33%   -10.56%
+ Complexity    10871     1994     -8877
=============================================
  Files           713      209      -504
  Lines         69730    14453    -55277
  Branches       7496     1576     -5920
=============================================
- Hits          33394     5396    -27998
+ Misses        32631     8476    -24155
+ Partials       3705      581     -3124

Flag
Coverage Δ

unittests
37.33% <0.00%> (-10.56%)
:arrow_down:

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

Impacted Files
Coverage Δ

...va/org/apache/pulsar/client/impl/ProducerImpl.java
15.62% <0.00%> (-0.04%)
:arrow_down:

...apache/pulsar/client/impl/AutoClusterFailover.java
75.55% <0.00%> (-0.56%)
:arrow_down:

...er/mledger/intercept/ManagedLedgerInterceptor.java

...n/coordinator/TransactionCoordinatorException.java

...sar/broker/loadbalance/impl/LoadManagerShared.java

.../java/org/apache/pulsar/broker/admin/v3/Sinks.java

...ookkeeper/mledger/impl/PositionImplRecyclable.java

...org/apache/pulsar/broker/stats/DimensionStats.java

...ion/pendingack/TransactionPendingAckException.java

...r/service/schema/JsonSchemaCompatibilityCheck.java

... and 498 more


Option Arbitrary delegates to Option Gen

Resolves #401.

@ceedubs
I would like to have this PR merged.
Just 1 build terminated due to The command "curl https://raw.githubusercontent.com/scala-native/scala-native/master/scripts/travis_setup.sh | bash -x" failed and exited with 100 during .
Perhaps restarting Travis CI is just fine.
We can restart CI by closing this PR and reopening.

There's also should be a way in Travis to hit a restart button on individual failed builds, too.

The 2.13 build failed with no output: https://travis-ci.org/rickynils/scalacheck/jobs/437892113
I closed and reopened once. Maybe someone with permissions could restart just that sub-build?

This looks simple to review and merge.  It's a shame it's been left hanging.


[what happened] strange noise during experiment

blue is RPM, orange is OD.

Happened again, close to 3m periodicty

Occurred again in worker2.

[logs.txt](https://github.com/Pioreactor/pioreactor/files/8849003/logs.txt) twice. Didn't stop.
- tried reducing the IR intensity (maybe the opamp was saturated) - no effect
- tried restarting OD reading, no effect. Turned on DEBUG, logs are attached.
- htop didn't show anything weird
- no under-voltage problems
- CPU temp seemed normal.

Tests we should try:

Are we measuring the same variance with a voltmeter on the ADC?

Current theory is that is caused by CO2 bubbles.

noise occurs after a period of a hours => critical amount of CO2 produced to form into bubbles. Also seemed to end when growth ended.
occurred when using closed caps => not enough oxygen => fermentation route => more CO2
tiny bubbles build up (trapped) in the center, and eventually enough do that they form into a large bubble and exit
didn't occur in very tightly capped vials => CO2 remained dissolved in liquid

Solutions:

allow for more oxygen transfer
slower stirring RPM to not trap small bubbles in middle


--no-extract-css in prod should not create another bundle

I have an application with a very small bit of global CSS. I figured I could inline it into my JS bundles with --no-extract-css and save a request, but instead it just got replaced by an equivalent JS bundle!

Bug Report or Feature Request

[ ] bug report
[x] feature request

Versions.

@angular/cli: 1.2.1
node: 8.1.4
os: darwin x64
@angular/core: 4.2.6

Repro steps.

This can be demonstrated with a blank CLI project:
ng new foo
cd foo
yarn install
ng build --prod --no-extract-css

(of course, the blank project is somewhat silly here since the input CSS is empty, but the idea still applies)
Desired functionality.

Expected: no styles bundle, and a slightly larger main bundle.
Actual: “styles” CSS bundle is gone, but a new JS bundle appears in its place — which is necessarily larger.

--extract-css refers to having a .css bundle instead of a .js bundle for global styles. The .js bundle is just a development optimization for faster rebuilds, due to the way that Webpack works.
We're not looking at adding CSS inlining capabilities overall though. It offers no benefits for apps, it's just bigger and slower to process by the browser.


discord: 0.0.13 -> 0.0.14

Motivation for this change
Things done

[x] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS linux)
Built on platform(s)

[x] NixOS
[ ] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review wip"
[x] Tested execution of all binary files (usually in ./result/bin/)
[ ] Determined the impact on package closure size (by running nix path-info -S before and after)
[ ] Ensured that relevant documentation is up to date
[x] Fits CONTRIBUTING.md.

Well, that got merged very quickly. (:

backported in 0120f5e5b58

Until it is in unstable channel:
nix-env -iA discord -f https://github.com/reedrw/nixpkgs/archive/refs/heads/update-discord.tar.gz

nix-env -iA discord -f https://github.com/NixOS/nixpkgs/archive/refs/heads/master.tar.gz

is preferred.

How can I install the latest version of discord if I have a system flake that tracks unstable? (and it's not in unstable yet).

there's been a channel release since this was merged, you should be able to just update your flake

I just realized that there was a random profile that was pinning version 0.0.12 and it wasn't finding the system package :facepalm: