justindujardin / pathy

simple, flexible, offline capable, cloud storage with a Python path-like interface
Apache License 2.0
171 stars 23 forks source link

Drop Python 3.7 and add Python 3.12 #112

Closed justindujardin closed 10 months ago

justindujardin commented 10 months ago

The circle of life is beautiful. Python 3.7 has reached its end, and Python 3.12 rises to carry on its name.

Motivation Pathy has relied on the internals of pathlib.Path to support complex things like glob matching and the differences between Windows and Posix paths. Because of this when the python developers rightly refactor their internals, Pathy breaks. 😭

We need to stop depending on the internals of pathlib to avoid the yearly "new version of python breakage". It was on my list to inline the parts of pathlib needed and call it good, but then the absolute legend @barneygale published a pypi package pathlib_abc that's synced from CPython and implements the logic we depended on inside of pathlib.

Now, we can have a proper public API to work from and not lose sleep every time a new version of Python is released. 😎

This PR updates Pathy to use pathlib_abc and supports Python 3.12 while deprecating Python 3.7, which reached end-of-life in the middle of last year.

Changes

Breaking Changes

codecov[bot] commented 10 months ago

Codecov Report

All modified and coverable lines are covered by tests :white_check_mark:

Comparison is base (90eb026) 99.91% compared to head (fc85a5c) 99.91%.

Additional details and impacted files ```diff @@ Coverage Diff @@ ## master #112 +/- ## ========================================== - Coverage 99.91% 99.91% -0.01% ========================================== Files 6 7 +1 Lines 1159 1122 -37 ========================================== - Hits 1158 1121 -37 Misses 1 1 ```

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.

github-actions[bot] commented 10 months ago

:tada: This PR is included in version 0.11.0 :tada:

The release is available on GitHub release

Your semantic-release bot :package::rocket: