Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

gh-74696: Pass root_dir to custom archivers which support it#94251

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 ourterms of service andprivacy statement. We’ll occasionally send you account related emails.

Already on GitHub?Sign in to your account

Conversation

serhiy-storchaka
Copy link
Member

@serhiy-storchakaserhiy-storchaka commentedJun 25, 2022
edited by bedevere-bot
Loading

Co-authored-by: Éric <merwok@netwok.org>
@ambv
Copy link
Contributor

ambv commentedJul 1, 2022

@serhiy-storchaka, since this is 3.12+, would it be possible to useinspect.signature() instead of relying on a new attribute on the function (supports_root_dir)? Pure Python functions, as well as Cython functions, work fine withinspect.signature().

@serhiy-storchaka
Copy link
MemberAuthor

I do not like relying oninspect. It fails in too many cases. What if the function signature contains**kwargs?inspect looks to me rather as an inspecting and debugging tool.

zooba reacted with thumbs up emoji

@gpshead
Copy link
Member

Setting a magic attribute on a function is always an awkward API. Why not just add a keyword only argument to theregister_*_format() function to declare whether the supplied archiver callable supports a root_dir kwarg or not?

NoSuckand others added17 commitsOctober 2, 2022 22:38
…hon#96454)Co-authored-by: C.A.M. Gerlach <CAM.Gerlach@Gerlach.CAM>
…nGH-93031)Use output from a 3.10+ REPL, showing invalid range, for theSyntaxError examples in the tutorial introduction page.Automerge-Triggered-By: GH:iritkatriel
…97645)Fix the Python path configuration used to initialized sys.path atPython startup. Paths are no longer encoded to UTF-8/strict to avoidencoding errors if it contains surrogate characters (bytes paths aredecoded with the surrogateescape error handler).getpath_basename() and getpath_dirname() functions no longer encodethe path to UTF-8/strict, but work directly on Unicode strings. Thesefunctions now use PyUnicode_FindChar() and PyUnicode_Substring() onthe Unicode path, rather than strrchr() on the encoded bytes string.
bpo-35598: IDLE: Refactor window and frame classCo-authored-by: Terry Jan Reedy <tjreedy@udel.edu>
…n#97685)This documents the behavior that has always been the case since timeoutsupport was introduced in Python 3.3.
…n#96837)* When chaining futures, skip callback if loop closed.* When shutting down an executor, don't wake a closed loop.
…ython#97660)Evil code could cause fut_callbacks to be cleared when PyObject_RichCompareBool is called.
…ncancel() (python#95253)Co-authored-by: Thomas Grainger <tagrain@gmail.com>
…ython#95919)It was never really safe and this claim conflicts directly with the big warning in the docs about it being able to crash the interpreter.
…tions (python#95976)*pythongh-95975: Move except/*/finally ref labels to more precise locations* Add section headers to fix :keyword: role and aid navigation* Move see also to the introduction rather than a particular subsection* Fix other minor Sphinx syntax issues with exceptCo-authored-by: Ezio Melotti <ezio.melotti@gmail.com>* Suppress redundant link to same section for except too* Don't link try/except/else/finally keywords if in the same section* Format try/except/finally as keywords in modified sectionsCo-authored-by: Ezio Melotti <ezio.melotti@gmail.com>
@serhiy-storchaka
Copy link
MemberAuthor

Setting a magic attribute on a function is always an awkward API. Why not just add a keyword only argument to theregister_*_format() function to declare whether the supplied archiver callable supports a root_dir kwarg or not?

I considered this option. But it would make the caller ofshutil.register_archive_format() responsible for passing the necessary option. For example, ifpy7zr add support forroot_dir, the users ofpy7zr will need to replaceshutil.register_archive_format('7zip', pack_7zarchive, description='7zip archive') in their code withshutil.register_archive_format('7zip', pack_7zarchive, description='7zip archive', supports_root_dir=True). Since it will only works on Python 3.12+, the code will be more complicated. Users which will not do this, will still have the working code, but it is not safe.

In future we can deprecate archivers which does not supportroot_dir. And finally raise an error ifshutil.register_archive_format() is called withoutsupports_root_dir=True. Since that this option will became useless but mandatory, and several versions later we could deprecate and finally remove it. Thus, users will be first forced to add this option (first conditionally, then unconditionally), them remove it. And users which skip versions will risk to get incorrectly working program (using an archiver which does not supportroot_dir with theroot_dir argument).

This all will take very long time until we came to new equilibrium, will cause headache to users, and will be errorprone.

With the variant implemented in this PR, the author of the archiver is responsible for setting thesupports_root_dir attribute if the archiver supports theroot_dir argument. The user's code will not change.

merwok, zooba, and gpshead reacted with thumbs up emoji

Copy link
Member

@gvanrossumgvanrossum left a comment

Choose a reason for hiding this comment

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

Just two doc nits, entirely optional.

Co-authored-by: Éric <merwok@netwok.org>
Copy link
Member

@gvanrossumgvanrossum left a comment

Choose a reason for hiding this comment

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

Excellent.@serhiy-storchaka feel free to land!

@gpsheadgpshead added sprint stdlibPython modules in the Lib dir labelsOct 4, 2022
@serhiy-storchakaserhiy-storchaka merged commite3ef400 intopython:mainOct 5, 2022
@serhiy-storchakaserhiy-storchaka deleted the shutil-register_archive_format-supports_root_dir-attr branchOctober 5, 2022 09:49
@serhiy-storchaka
Copy link
MemberAuthor

Thank you for your review and suggestions.

gpshead reacted with heart emoji

carljm added a commit to carljm/cpython that referenced this pull requestOct 6, 2022
* main: (66 commits)pythongh-65961: Raise `DeprecationWarning` when `__package__` differs from `__spec__.parent` (python#97879)  docs(typing): add "see PEP 675" to LiteralString (python#97926)pythongh-97850: Remove all known instances of module_repr() (python#97876)  I changed my surname early this year (python#96671)pythongh-93738: Documentation C syntax (:c:type:<C type> -> :c:expr:<C type>) (python#97768)pythongh-91539: improve performance of get_proxies_environment  (python#91566)  build(deps): bump actions/stale from 5 to 6 (python#97701)pythonGH-95172 Make the same version `versionadded` oneline (python#95172)pythongh-88050: Fix asyncio subprocess to kill process cleanly when process is blocked (python#32073)pythongh-93738: Documentation C syntax (Function glob patterns -> literal markup) (python#97774)pythongh-93357: Port test cases to IsolatedAsyncioTestCase, part 2 (python#97896)pythongh-95196: Disable incorrect pickling of the C implemented classmethod descriptors (pythonGH-96383)pythongh-97758: Fix a crash in getpath_joinpath() called without arguments (pythonGH-97759)pythongh-74696: Pass root_dir to custom archivers which support it (pythonGH-94251)pythongh-97661: Improve accuracy of sqlite3.Cursor.fetchone docs (python#97662)pythongh-87092: bring compiler code closer to a preprocessing-opt-assembler organisation (pythonGH-97644)pythonGH-96704: Add {Task,Handle}.get_context(), use it in call_exception_handler() (python#96756)pythongh-93738: Documentation C syntax (:c:type:`PyTypeObject*` -> :c:expr:`PyTypeObject*`) (python#97778)pythongh-97825: fix AttributeError when calling subprocess.check_output(input=None) with encoding or errors args (python#97826)  Add re.VERBOSE flag documentation example (python#97678)  ...
mpage pushed a commit to mpage/cpython that referenced this pull requestOct 11, 2022
Sign up for freeto join this conversation on GitHub. Already have an account?Sign in to comment
Reviewers

@merwokmerwokmerwok left review comments

@gpsheadgpsheadgpshead approved these changes

@gvanrossumgvanrossumgvanrossum approved these changes

@ambvambvAwaiting requested review from ambv

Assignees
No one assigned
Labels
sprintstdlibPython modules in the Lib dirtype-featureA feature request or enhancement
Projects
None yet
Milestone
No milestone
Development

Successfully merging this pull request may close these issues.

17 participants
@serhiy-storchaka@ambv@gpshead@merwok@gvanrossum@bedevere-bot@NoSuck@jeff5@ofey404@ehebert@zooba@vstinner@csabella@ericsnowcurrently@hawkinsw@CAM-Gerlach@vsajip

[8]ページ先頭

©2009-2025 Movatter.jp