Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

build(deps): bump pipenv from 2018.11.26 to 2021.5.29 in /python/helpers #3817

Merged
merged 2 commits into from
Jun 9, 2021

Conversation

dependabot[bot]
Copy link
Contributor

@dependabot dependabot bot commented on behalf of github May 31, 2021

Bumps pipenv from 2018.11.26 to 2021.5.29.

Release notes

Sourced from pipenv's releases.

Release v2021.5.29

No release notes provided.

Release v2020.11.15

No release notes provided.

Release v2020.11.4

No release notes provided.

Release v2020.8.13

Bug Fixes

  • Fixed behaviour of pipenv uninstall --all-dev. From now on it does not uninstall regular packages. [#3722](https://github.com/pypa/pipenv/issues/3722) <https://github.com/pypa/pipenv/issues/3722>_
  • Fix a bug that incorrect Python path will be used when --system flag is on. [#4315](https://github.com/pypa/pipenv/issues/4315) <https://github.com/pypa/pipenv/issues/4315>_
  • Fix falsely flagging a Homebrew installed Python as a virtual environment [#4316](https://github.com/pypa/pipenv/issues/4316) <https://github.com/pypa/pipenv/issues/4316>_
  • Fix a bug that pipenv uninstall throws an exception that does not exist. [#4321](https://github.com/pypa/pipenv/issues/4321) <https://github.com/pypa/pipenv/issues/4321>_
  • Fix a bug that Pipenv can't locate the correct file of special directives in setup.cfg of an editable package. [#4335](https://github.com/pypa/pipenv/issues/4335) <https://github.com/pypa/pipenv/issues/4335>_
  • Fix a bug that setup.py can't be parsed correctly when the assignment is type-annotated. [#4342](https://github.com/pypa/pipenv/issues/4342) <https://github.com/pypa/pipenv/issues/4342>_
  • Fix a bug that pipenv graph throws an exception that PipenvCmdError(cmd_string, c.out, c.err, return_code). [#4388](https://github.com/pypa/pipenv/issues/4388) <https://github.com/pypa/pipenv/issues/4388>_
  • Do not copy the whole directory tree of local file package. [#4403](https://github.com/pypa/pipenv/issues/4403) <https://github.com/pypa/pipenv/issues/4403>_
  • Correctly detect whether Pipenv in run under an activated virtualenv. [#4412](https://github.com/pypa/pipenv/issues/4412) <https://github.com/pypa/pipenv/issues/4412>_

Vendored Libraries

  • Update requirementslib to 1.5.12. [#4385](https://github.com/pypa/pipenv/issues/4385) <https://github.com/pypa/pipenv/issues/4385>_
    • Update requirements to 1.5.13.
    • Update pip-shims to 0.5.3. [#4421](https://github.com/pypa/pipenv/issues/4421) <https://github.com/pypa/pipenv/issues/4421>_

Release v2020.6.2

2020.6.2 (2020-06-02)

Features & Improvements

  • Pipenv will now detect existing venv and virtualenv based virtual environments more robustly. #4276

Bug Fixes

  • + signs in URL authentication fragments will no longer be incorrectly replaced with space ( ) characters. #4271
  • Fixed a regression which caused Pipenv to fail when running under /. #4273
  • setup.py files with version variables read from os.environ are now able to be parsed successfully. #4274
  • Fixed a bug which caused Pipenv to fail to install packages in a virtual environment if those packages were already present in the system global environment. #4276
  • Fix a bug that caused non-specific versions to be pinned in Pipfile.lock. #4278
  • Corrected a missing exception import and invalid function call invocations in pipenv.cli.command. #4286
  • Fixed an issue with resolving packages with names defined by function calls in setup.py. #4292

... (truncated)

Changelog

Sourced from pipenv's changelog.

2021.5.29 (2021-05-29)

Bug Fixes

  • Fix a bug where passing --skip-lock when PIPFILE has no [SOURCE] section throws the error: "tomlkit.exceptions.NonExistentKey: 'Key "source" does not exist.'" [#4141](https://github.com/pypa/pipenv/issues/4141) <https://github.com/pypa/pipenv/issues/4141>_
  • Fix bug where environment wouldn't activate in paths containing & and $ symbols [#4538](https://github.com/pypa/pipenv/issues/4538) <https://github.com/pypa/pipenv/issues/4538>_
  • Fix a bug that importlib-metadata from the project's dependencies conflicts with that from pipenv's. [#4549](https://github.com/pypa/pipenv/issues/4549) <https://github.com/pypa/pipenv/issues/4549>_
  • Fix a bug where pep508checker.py did not expect double-digit Python minor versions (e.g. "3.10"). [#4602](https://github.com/pypa/pipenv/issues/4602) <https://github.com/pypa/pipenv/issues/4602>_
  • Fix bug where environment wouldn't activate in paths containing () and [] symbols [#4615](https://github.com/pypa/pipenv/issues/4615) <https://github.com/pypa/pipenv/issues/4615>_
  • Fix bug preventing use of pipenv lock --pre [#4642](https://github.com/pypa/pipenv/issues/4642) <https://github.com/pypa/pipenv/issues/4642>_

Vendored Libraries

  • Update packaging from 20.4 to 20.8. [#4591](https://github.com/pypa/pipenv/issues/4591) <https://github.com/pypa/pipenv/issues/4591>_

2020.11.15 (2020-11-15)

Features & Improvements

  • Support expanding environment variables in requirement URLs. [#3516](https://github.com/pypa/pipenv/issues/3516) <https://github.com/pypa/pipenv/issues/3516>_
  • Show warning message when a dependency is skipped in locking due to the mismatch of its markers. [#4346](https://github.com/pypa/pipenv/issues/4346) <https://github.com/pypa/pipenv/issues/4346>_

Bug Fixes

  • Fix a bug that executable scripts with leading backslash can't be executed via pipenv run. [#4368](https://github.com/pypa/pipenv/issues/4368) <https://github.com/pypa/pipenv/issues/4368>_
  • Fix a bug that VCS dependencies always satisfy even if the ref has changed. [#4387](https://github.com/pypa/pipenv/issues/4387) <https://github.com/pypa/pipenv/issues/4387>_
  • Restrict the acceptable hash type to SHA256 only. [#4517](https://github.com/pypa/pipenv/issues/4517) <https://github.com/pypa/pipenv/issues/4517>_
  • Fix the output of pipenv scripts under Windows platform. [#4523](https://github.com/pypa/pipenv/issues/4523) <https://github.com/pypa/pipenv/issues/4523>_
  • Fix a bug that the resolver takes wrong section to validate constraints. [#4527](https://github.com/pypa/pipenv/issues/4527) <https://github.com/pypa/pipenv/issues/4527>_

Vendored Libraries

  • Update vendored dependencies:
    • colorama from 0.4.3 to 0.4.4
    • python-dotenv from 0.10.3 to 0.15.0
    • first from 2.0.1 to 2.0.2
    • iso8601 from 0.1.12 to 0.1.13
    • parse from 1.15.0 to 1.18.0
    • pipdeptree from 0.13.2 to 1.0.0
    • requests from 2.23.0 to 2.25.0
    • idna from 2.9 to 2.10
    • urllib3 from 1.25.9 to 1.26.1

... (truncated)

Commits

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot merge will merge this PR after your CI passes on it
  • @dependabot squash and merge will squash and merge this PR after your CI passes on it
  • @dependabot cancel merge will cancel a previously requested merge and block automerging
  • @dependabot reopen will reopen this PR if it is closed
  • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)

@dependabot dependabot bot requested a review from a team as a code owner May 31, 2021 05:08
@dependabot dependabot bot added dependencies python Dependabot pull requests that update Python code labels May 31, 2021
@jurre jurre force-pushed the dependabot/pip/python/helpers/pipenv-2021.5.29 branch from f6eef94 to cf969c2 Compare June 8, 2021 17:08
Bumps [pipenv](https://github.com/pypa/pipenv) from 2018.11.26 to 2021.5.29.
- [Release notes](https://github.com/pypa/pipenv/releases)
- [Changelog](https://github.com/pypa/pipenv/blob/master/CHANGELOG.rst)
- [Commits](pypa/pipenv@v2018.11.26...v2021.5.29)

---
updated-dependencies:
- dependency-name: pipenv
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
@jurre jurre force-pushed the dependabot/pip/python/helpers/pipenv-2021.5.29 branch 4 times, most recently from 69e7c22 to 34246a0 Compare June 9, 2021 11:03
Comment on lines -173 to -190
rescue SharedHelpers::HelperSubprocessFailed => e
original_error ||= e
msg = e.message

relevant_error =
if error_suggests_bad_python_version?(msg) then original_error
else e
end

raise relevant_error unless error_suggests_bad_python_version?(msg)
raise relevant_error if user_specified_python_version
raise relevant_error if python_version == "2.7.18"

@python_version = "2.7.18"
retry
ensure
@python_version = nil
FileUtils.remove_entry(".python-version", true)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This retry is ran when an update failed on python 3 and retries with python 2, this is now no longer required

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So nice getting rid of this!

Comment on lines -267 to -294
rescue SharedHelpers::HelperSubprocessFailed => e
original_error ||= e
msg = e.message

relevant_error =
if error_suggests_bad_python_version?(msg) then original_error
else e
end

raise relevant_error unless error_suggests_bad_python_version?(msg)
raise relevant_error if python_version.start_with?("2")

# Clear the existing virtualenv, so that we use the new Python version
run_command("pyenv local #{python_version}")
run_command("pyenv exec pipenv --rm")

@python_version = "2.7.18"
retry
ensure
@python_version = nil
FileUtils.remove_entry(".python-version", true)
end

def error_suggests_bad_python_version?(message)
return true if message.include?("UnsupportedPythonVersion")

message.include?('Command "python setup.py egg_info" failed') ||
message.include?("exit status 1: python setup.py egg_info")
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same, this retry is ran when an update failed on python 3 and retries with python 2, this is now no longer required

Comment on lines -238 to -266
rescue SharedHelpers::HelperSubprocessFailed => e
original_err ||= e
msg = e.message

relevant_error = choose_relevant_error(original_err, e)
raise relevant_error unless error_suggests_bad_python_version?(msg)
raise relevant_error if user_specified_python_version
raise relevant_error if python_version == "2.7.18"

@python_version = "2.7.18"
retry
ensure
@python_version = nil
FileUtils.remove_entry(".python-version", true)
end

def choose_relevant_error(previous_error, new_error)
return previous_error if previous_error == new_error

# If the previous error was definitely due to using the wrong Python
# version, return the new error (which can't be worse)
return new_error if error_certainly_bad_python_version?(previous_error.message)

# Otherwise, if the new error may be due to using the wrong Python
# version, return the old error (which can't be worse)
return previous_error if error_suggests_bad_python_version?(new_error.message)

# Otherwise, default to the new error
new_error
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same here, retry is ran when an update failed on python 3 and retries with python 2, this is now no longer required

Comment on lines -38 to +44
UNSUPPORTED_DEPS = %w(pyobjc).freeze
UNSUPPORTED_DEP_REGEX =
/"python setup\.py egg_info".*(?:#{UNSUPPORTED_DEPS.join("|")})/.
freeze
PIPENV_INSTALLATION_ERROR = "pipenv.patched.notpip._internal."\
"exceptions.InstallationError: "\
"Command \"python setup.py egg_info\" "\
"failed with error code 1 in"
PIPENV_INSTALLATION_ERROR = "pipenv.patched.notpip._internal.exceptions.InstallationError: Command errored out"\
" with exit status 1: python setup.py egg_info"
TRACEBACK = "Traceback (most recent call last):"
PIPENV_INSTALLATION_ERROR_REGEX =
%r{#{Regexp.quote(PIPENV_INSTALLATION_ERROR)}.+/(?<name>.+)/$}.freeze
/#{Regexp.quote(TRACEBACK)}[\s\S]*^\s+import\s(?<name>.+)[\s\S]*^#{Regexp.quote(PIPENV_INSTALLATION_ERROR)}/.
freeze
UNSUPPORTED_DEP_REGEX = /(?:pyobjc)[\s\S]*#{Regexp.quote(PIPENV_INSTALLATION_ERROR)}/.freeze
PIPENV_RANGE_WARNING = /Warning:\sPython\s[<>].* was not found/.freeze
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These are some error messages that have changed in the latest pipenv

@@ -88,7 +85,7 @@ def fetch_latest_resolvable_version_string(requirement:)
# Whilst calling `lock` avoids doing an install as part of the
# pipenv flow, an install is still done by pip-tools in order
# to resolve the dependencies. That means this is slow.
run_pipenv_command("pyenv exec pipenv lock")
run_pipenv_command("pyenv exec pipenv lock --dev")
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also include dev dependencies: https://pipenv-fork.readthedocs.io/en/latest/advanced.html#generating-a-requirements-txt

As with other commands, passing --dev will include both the default and development dependencies

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Did this behaviour change in the new pipenv version? Does this also apply to the Pipfile.lock? Docks only referenced generating requirements.txt files with the -r option (pipenv lock -r --dev)

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Aye, yes this may not be needed in that case!

if error.message.include?("Could not find a version") ||
error.message.include?("is not a python version")
check_original_requirements_resolvable
if error.message.match?(PIPENV_RANGE_WARNING)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

When using a python range, we already know updates are not possible so we don't need to retry the update

Comment on lines -468 to -497
rescue SharedHelpers::HelperSubprocessFailed => e
original_error ||= e
msg = e.message

relevant_error =
if may_be_using_wrong_python_version?(msg) then original_error
else e
end

raise relevant_error unless may_be_using_wrong_python_version?(msg)
raise relevant_error if python_version.start_with?("2")

# Clear the existing virtualenv, so that we use the new Python version
run_command("pyenv local #{python_version}")
run_command("pyenv exec pipenv --rm")

@python_version = "2.7.18"
retry
ensure
@python_version = nil
FileUtils.remove_entry(".python-version", true)
end

def may_be_using_wrong_python_version?(error_message)
return false if user_specified_python_requirement
return true if error_message.include?("UnsupportedPythonVersion")
return true if error_message.include?("at matches #{dependency.name}")

error_message.include?('Command "python setup.py egg_info" failed') ||
error_message.include?("exit status 1: python setup.py egg_info")
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Retry for python 2, this has been removed

Comment on lines -178 to -187
context "with a met marker that forces a difference Python version" do
let(:manifest_fixture_name) { "met_marker.in" }
let(:generated_fixture_name) { "pip_compile_met_marker.txt" }

it "updates the requirements.txt, keeping the unmet dep in it" do
expect(updated_files.count).to eq(1)
expect(updated_files.first.content).to include("attrs==18.1.0")
expect(updated_files.first.content).to include("flaky")
end
end
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This seems to have mostly been used to distinguish between python 2 and 3 support, so I've yanked the test

@@ -498,91 +487,5 @@
end
end
end

context "when the upgrade requires Python 2.7" do
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We no longer do python 2.7, so this block is no longer relevant

)
end

it "updates both files correctly" do
expect(updated_files.map(&:name)).to eq(%w(Pipfile Pipfile.lock))
end
end

context "when the Python requirement is implicit" do
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This "implicit" python version means the update fails on py3 and we retry on py2, we don't do this anymore so test is yanked out

@@ -141,19 +141,19 @@
let(:dependency_name) { "django" }
let(:dependency_version) { "1.2.4" }

it { is_expected.to eq(Gem::Version.new("2.2.2")) }
it { is_expected.to eq(Gem::Version.new("3.2.4")) }
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These changes to the django version are because of an updated fixture

@@ -375,86 +375,6 @@
end
end

context "with a Python 2.7 library" do
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Python 2.7 is no more, so test is yanked

"pipenv.patched.notpip._internal.exceptions."\
"UnsupportedPythonVersion: futures requires Python '>=2.6, <3' "\
"but the running Python is 3."
"ERROR: No matching distribution found for pytest==10.4.0"
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This error message has changed

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks like this test is failing with a different error message https://github.com/dependabot/dependabot-core/pull/3817/checks?check_run_id=2782969485

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah I'm looking into that now, the test is passing on my machine so I'm not quite sure what's going on yet

end
end

context "when the Python version conflicts with another dependency" do
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is a python 2 vs 3 mismatch, so test is yanked

@@ -337,21 +272,6 @@
end
end

context "with an unfetchable requirement" do
let(:dependency_files) { [pipfile] }
let(:pipfile_fixture_name) { "bad_requirement" }
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This was requesting a python 2 only package, no longer seemed relevant

it "resolves version" do
is_expected.to eq(Gem::Version.new("2.18.4"))
it "raises an error" do
expect { subject }.to raise_error(Dependabot::DependencyFileNotResolvable)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Making sure trying to grab a python 2 dependency raises a resolvability error

let(:python_version_content) { "2.7.13\n" }
it { is_expected.to eq(Gem::Version.new("1.11.21")) }
let(:python_version_content) { "3.5.3\n" }
it { is_expected.to eq(Gem::Version.new("2.2.24")) }
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Versions changed to grab a django version for a python 3 dependabot supports but django does not

@@ -88,7 +85,7 @@ def fetch_latest_resolvable_version_string(requirement:)
# Whilst calling `lock` avoids doing an install as part of the
# pipenv flow, an install is still done by pip-tools in order
# to resolve the dependencies. That means this is slow.
run_pipenv_command("pyenv exec pipenv lock")
run_pipenv_command("pyenv exec pipenv lock --dev")
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

FWIW if we wanted to make this work for python 2, we'd need to pass in --two as an option to all the pipenv commands when python_version.start_with?("2")

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍 would really like to avoid keeping v2 support. Would also block these updates #3775 and #3498

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

pipenv will probably follow suite and drop v2 support soon pypa/pipenv#4261 (comment)

@@ -84,7 +84,6 @@ RUN mkdir -p "$PYENV_ROOT" && chown dependabot:dependabot "$PYENV_ROOT"
USER dependabot
RUN git clone https://github.com/pyenv/pyenv.git --branch 1.2.26 --single-branch --depth=1 /usr/local/.pyenv \
&& pyenv install 3.9.4 \
&& pyenv install 2.7.18 \
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

python-2-is-gone-imgflip-com-python-2-67516964.mp4

@jurre jurre force-pushed the dependabot/pip/python/helpers/pipenv-2021.5.29 branch from ebb5292 to c9725b6 Compare June 9, 2021 12:59
@@ -88,7 +85,7 @@ def fetch_latest_resolvable_version_string(requirement:)
# Whilst calling `lock` avoids doing an install as part of the
# pipenv flow, an install is still done by pip-tools in order
# to resolve the dependencies. That means this is slow.
run_pipenv_command("pyenv exec pipenv lock")
run_pipenv_command("pyenv exec pipenv lock --dev")
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could we drop this?

Suggested change
run_pipenv_command("pyenv exec pipenv lock --dev")
run_pipenv_command("pyenv exec pipenv lock")

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I thought I'd removed it, doing so now!

@@ -122,33 +122,6 @@
end
end
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks like the above error message is CRITICAL:pipenv.patched.notpip._internal.index.package_finder:Could not find a version that satisfies the requirement pytest==10.4.0

Copy link
Contributor

@feelepxyz feelepxyz left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

SGTM 👍 Are we lining up a changelog to announce python 2 deprecation?

Python 2 has been unsupported for a year and a half now, pip 21 no
longer supports it and we see pretty small usage numbers at GitHub.
Maintaining support for it has become increasingly harder, and this
pipenv upgrade made it even more cumbersome.

It's been a good ride, python 2. See ya!
@jurre jurre force-pushed the dependabot/pip/python/helpers/pipenv-2021.5.29 branch from c9725b6 to b6ae9d3 Compare June 9, 2021 14:00
@jurre
Copy link
Member

jurre commented Jun 9, 2021

SGTM 👍 Are we lining up a changelog to announce python 2 deprecation?

Let me double-check with @asciimike

@jurre jurre merged commit d7baa54 into main Jun 9, 2021
@jurre jurre deleted the dependabot/pip/python/helpers/pipenv-2021.5.29 branch June 9, 2021 14:43
@asciimike
Copy link
Contributor

asciimike commented Jun 9, 2021

SGTM 👍 Are we lining up a changelog to announce python 2 deprecation?

Yes!

https://github.blog/changelog/2021-06-10-dependabot-updated-pip-pip-tools-and-pipenv-support/

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
dependencies python Dependabot pull requests that update Python code
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants