Skip to content

Support Path objects in the posix module #70215

Closed

Description

@serhiy-storchaka
BPO 26027
Nosy @brettcannon, @pfmoore, @tjguk, @ethanfurman, @berkerpeksag, @vadmium, @zware, @serhiy-storchaka, @eryksun, @zooba, @JelleZijlstra
Dependencies
  • bpo-26671: Clean up path_converter in posixmodule.c
  • bpo-26800: Don't accept bytearray as filenames part 2
  • Files
  • path_converter_path.patch
  • issue27186-os_path_t.patch
  • path_converter.diff: Inline of PyOS_FSPath()
  • path_converter.diff: Updated patch since adding the warning about bytearrays
  • path_converter.diff: Incorporate Serhiy's review feedback
  • Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.

    Show more details

    GitHub fields:

    assignee = 'https://github.com/brettcannon'
    closed_at = <Date 2016-08-27.19:59:15.038>
    created_at = <Date 2016-01-06.21:05:29.971>
    labels = ['extension-modules', 'type-feature', 'OS-windows']
    title = 'Support Path objects in the posix module'
    updated_at = <Date 2016-09-06.22:59:12.215>
    user = 'https://github.com/serhiy-storchaka'

    bugs.python.org fields:

    activity = <Date 2016-09-06.22:59:12.215>
    actor = 'python-dev'
    assignee = 'brett.cannon'
    closed = True
    closed_date = <Date 2016-08-27.19:59:15.038>
    closer = 'berker.peksag'
    components = ['Extension Modules', 'Windows']
    creation = <Date 2016-01-06.21:05:29.971>
    creator = 'serhiy.storchaka'
    dependencies = ['26671', '26800']
    files = ['42382', '43238', '44029', '44090', '44159']
    hgrepos = []
    issue_num = 26027
    keywords = ['patch']
    message_count = 27.0
    messages = ['257642', '262963', '267427', '269212', '269220', '269797', '269801', '272061', '272556', '272650', '272677', '273161', '273734', '273735', '273745', '273748', '273749', '273754', '273786', '273788', '273791', '273792', '273793', '273799', '273800', '274650', '274654']
    nosy_count = 12.0
    nosy_names = ['brett.cannon', 'paul.moore', 'tim.golden', 'ethan.furman', 'python-dev', 'berker.peksag', 'martin.panter', 'zach.ware', 'serhiy.storchaka', 'eryksun', 'steve.dower', 'JelleZijlstra']
    pr_nums = []
    priority = 'normal'
    resolution = 'fixed'
    stage = 'resolved'
    status = 'closed'
    superseder = None
    type = 'enhancement'
    url = 'https://bugs.python.org/issue26027'
    versions = ['Python 3.6']

    Activity

    1. serhiy-storchaka commented on Jan 6, 2016

      @serhiy-storchaka
      MemberAuthor

      path_converter should be changed to accept objects with the "path" attribute. See bpo-22570 for details.

    2. serhiy-storchaka commented on Apr 6, 2016

      @serhiy-storchaka
      MemberAuthor

      Here is preliminary patch without tests. Writing tests will be tiresome.

    3. JelleZijlstra commented on Jun 5, 2016

      @JelleZijlstra
      Member

      The patch is obsolete because PEP-519 ended up going with a different approach. I submitted a new patch for the path_t converter in bpo-27186. That patch probably fits better here, so I'm resubmitting it.

    4. brettcannon commented on Jun 24, 2016

      @brettcannon
      Member

      Did you still want to handle this, Serhiy, or should I assign the issue to myself?

    5. serhiy-storchaka commented on Jun 25, 2016

      @serhiy-storchaka
      MemberAuthor

      I'll take a look.

    6. serhiy-storchaka commented on Jul 4, 2016

      @serhiy-storchaka
      MemberAuthor

      At first glance bpo-27186-os_path_t.patch looks good.

      But with the patch applied the error message in case of incorrect argument type is always "expected str, bytes or os.PathLike object, not ...". Currently it is more detailed and specific: contains the function and the argument names, and is aware that some functions accept an integer or None. I think the best way is to inline the code of PyOS_FSPath in path_converter.

      Also we first resolve bpo-26800.

    7. brettcannon commented on Jul 4, 2016

      @brettcannon
      Member

      I have no issues inlining -- with a comment about the inlining -- if it buys us better error messages in this critical case.

    8. brettcannon commented on Aug 5, 2016

      @brettcannon
      Member

      Here is a version of Jelle's patch but with PyOS_FSPath() inlined.

      Serhiy, does this work for you?

    9. brettcannon commented on Aug 12, 2016

      @brettcannon
      Member

      Here is an updated patch that adds in change to posixmodule.c stemming from the new warning about using bytearrays. It also makes type checking more stringent for what __fspath__() returns.

    10. serhiy-storchaka commented on Aug 14, 2016

      @serhiy-storchaka
      MemberAuthor

      Added comments on Rietveld. Needed tests for supporting path-like objects. And it would be nice to have few tests for error messages.

    11. 11 remaining items

    12. brettcannon commented on Aug 27, 2016

      @brettcannon
      Member

      Hopefully https://hg.python.org/cpython/rev/775158408ecb will fix the problem.

    13. brettcannon commented on Aug 27, 2016

      @brettcannon
      Member

      It's still failing: http://buildbot.python.org/all/builders/AMD64%20Windows7%20SP1%203.x/builds/8176/steps/test/logs/stdio .

      Don't have time to look at why right now and I'm on a Mac ATM so I can't test locally to try and fix it until I'm at work on Monday. If someone has an idea as to why this is only happening on Windows I'm open to understanding.

    14. python-dev commented on Aug 27, 2016

      python-devmannequin
      Mannequin

      New changeset 8ec5a00e5d75 by Berker Peksag in branch 'default':
      Issue bpo-26027: Fix test_path_t_converter on Windows
      https://hg.python.org/cpython/rev/8ec5a00e5d75

    15. berkerpeksag commented on Aug 27, 2016

      @berkerpeksag
      Member

      test_path_t_converter failure looks similar to http://bugs.python.org/issue27493#msg271047 (fixed by 5424252ce174.) I've tested a fix on my Windows box and the test passed for me. Hopefully 8ec5a00e5d75 will fix the problem on buildbots too :)

    16. eryksun commented on Aug 27, 2016

      @eryksun
      Contributor

      I wish the name was "pushCleanup" to emphasize that cleanup functions are popped and called in LIFO order.

    17. brettcannon commented on Aug 27, 2016

      @brettcannon
      Member

      Thanks for fixing it, Berker!

      On Sat, Aug 27, 2016, 12:59 Berker Peksag <[email protected]> wrote:

      Berker Peksag added the comment:

      Builtbots look happy now:

      ----------
      status: open -> closed


      Python tracker <[email protected]>
      <https://bugs.python.org/issue26027\>


    18. python-dev commented on Sep 6, 2016

      python-devmannequin
      Mannequin

      New changeset d0d9d7f55cb5 by Brett Cannon in branch 'default':
      Issue bpo-26027: Support path-like objects in PyUnicode-FSConverter().
      https://hg.python.org/cpython/rev/d0d9d7f55cb5

    19. python-dev commented on Sep 6, 2016

      python-devmannequin
      Mannequin

      New changeset 9be0286772bf by Brett Cannon in branch 'default':
      Issue bpo-26027, bpo-27524: Document the support for path-like objects in os and os.path.
      https://hg.python.org/cpython/rev/9be0286772bf

    20. transferred this issue fromon Apr 10, 2022
    Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

    Metadata

    Metadata

    Assignees

    Labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions