NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #3527 most downloaded on PyPI
pathlib.Path subclasses for local and cloud bucket storage
Last release 5 months ago
11 Apr 2026
Ships unpredictably
gaps range from 8 days to 2.2 years
Nearly every release is documented
notes for 33 of 33 stable releases
Nothing withdrawn
no release was ever pulled
6 years old
33 releases · first in 2020
One column per quarter.
This release is published under the Apache-2.0 License.
This release is published under the Apache-2.0 License.
9a6f976)Detailed Changes: v0.14.1...v0.14.2
upgrade to pathlib_abc 0.3.x API
Migrate PurePathy/Pathy to pathlib_abc 0.3.x - replace pathmod with parser - implement drive/root/anchor properties - add split/splitdrive/splitext to pathmod - update method signatures (follow_symlinks, recurse_symlinks) - remove _make_child_entry - drop old requirement files
BREAKING CHANGE: PurePathy.match() no longer auto-prepends '' to patterns. Use full_match() for recursive matching, or explicitly add '/' to patterns.
PurePathBase -> JoinablePath - PathBase -> ReadablePath + WritablePath - implement vfspath/info/open_reader/open_writer - add altsep to pathmod parser protocol
BREAKING CHANGE: PurePathy no longer implements fspath. Cloud paths are not local filesystem paths, so os.fspath() no longer works on them. Use str(path) instead.
modernize build system, add Python 3.12/3.13 support
Drop old tool scripts
(2770c0f)
Fix lint issues
(e95d7c5)
Fix running tests on pr branches?
(d96a590)
maybe the master target changed in meaning? or maybe it was ignored before? idk, but this mirrors the setup from my other working projects :shrug:
Install uv on deploy task
(59316e7)
Update readme docs
(61c7704)
TODO: why isn't this part of the automation? :sob:
readme: Cleanup docs [skip ci]
(5f5d521)
readme: Cleanup docs [skip ci]
(83610d3)
readme: Cleanup install quick start
(a6d364c)
Modernize build system, add Python 3.12/3.13 support
(1b45c22)
Migrate from setup.py to pyproject.toml + hatchling - Switch from virtualenv/pip to uv for dependency management - Add Python 3.12 and 3.13 to test matrix - Drop Python 3.8 and 3.9 (EOL) - Loosen typer version constraint (remove <1.0.0 cap) - Clean up CI workflows and dead tool scripts
BREAKING CHANGE: Python 3.8 and 3.9 are no longer supported. Minimum required version is now Python 3.10.
feat(pypi): relax smart_open range to include 7.x.x
chore: update build script for latest action versions
Drop Python 3.7 and add Python 3.12
This means Pathy does not support directly accepting and working with file system paths. You must use Pathy.fluid or pathlib.Path to construct your file system paths. Pathy will continue to interoperate with them as needed to accommodate its public API.
BREAKING CHANGE: This drops support for python 3.7 which has reached its end of life
BREAKING CHANGE: Pathy.key returns a str rather than a Pathy instance
BREAKING CHANGE: Pathy no longer inherits from pahtlib.Path
This means Pathy does not support directly accepting and working with file system paths. You must use Pathy.fluid or pathlib.Path to construct your file system paths. Pathy will continue to interoperate with them as needed to accommodate its public API.
This drops support for python 3.7 which has reached its end of life
Pathy.key returns a str rather than a Pathy instance
Pathy no longer inherits from pahtlib.Path
is_dir: return False if bucket does not exist ( #107 by @yaelmi3 )
4a4e69d)python: add follow_symlinks for py 3.11.4
ci: Fix node version so github stops complaining
(#103,
78a3730)
deploy: Fix script by removing string escapes
(2350cd2)
On windows this is needed for the command to work. On linux it's an error. 😅
Bumps yaml to 2.2.2 and updates ancestor dependencies yaml, semantic-release, husky and lint-staged. These dependencies need to be updated together.
Updates yaml from 1.10.2 to 2.2.2 - Release notes -
Commits
Updates semantic-release from 19.0.3 to 21.0.1 - Release
notes -
Commits
Updates husky from 4.3.8 to 8.0.3 - Release notes -
Commits
Updates lint-staged from 10.5.4 to 13.2.1 - Release
notes -
Commits
--- updated-dependencies: - dependency-name: yaml dependency-type: indirect
dependency-name: semantic-release dependency-type: direct:development
dependency-name: husky dependency-type: direct:development
dependency-name: lint-staged dependency-type: direct:development ...
Signed-off-by: dependabot[bot] support@github.com
chore: update black for CI build
feat(python): drop pytho 3.6 support
3.6 is end of life
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Justin DuJardin justindujardin@users.noreply.github.com
smart_open: relax range to < 7.0
stat: return BlobStat for all pathy paths
os.stat_result rather than a BlobStat. This made it difficulty to treat mixed paths consistently.Now Pathy returns a BlobStat structure for local and remote paths.
If you need to use os.stat_result you can still call os.stat(my_path) to access it.
stat in BasePath and yield BlobStats instead of os.stat_result. - implement all
the pathlib file mode checking helpers because they use self.stat() internally which doesn't
work with BlobStats. - add tests for base path helpers - update CLI test to assert that stats are
BlobStat nowBREAKING CHANGE: Previously when using Pathy.fluid paths that point to local file system paths,
Pathy would return an os.stat_result rather than a BlobStat. This made it difficulty to treat
mixed paths consistently.
Now Pathy returns a BlobStat structure for local and remote paths.
If you need to use os.stat_result you can still call os.stat(my_path) to access it.
os.stat_result rather than a BlobStat. This made it difficulty to treat mixed
paths consistently.BREAKING CHANGE: Previously Pathy would allow you to initialize Pathy instances with absolute system paths (unix and windows). Now Pathy raises a Valu…
blob: Properly initialize default last_modified
(d831bee)
change the default of last_modified to None instead of -1. This is because last_modified is defined as an optional int, so None is the proper default.
windows: Consistent path separator in resolve
(44f5ca0)
the unerlying abspath() call on windows resolves with \ slashes, which we don't want when referring to bucket paths. BasePath (pathlib.Path) variants don't do this translation to preserve the os-specific slashes.
windows: File:/// paths had the wrong suffix
(674a109)
on Windows Pathy normally only deals with bucket formats using / slashes, but when using the file:/// scheme you would have a Pathy object that contains \ separators to represent a windows file path. In this case, convert the separator to \ while formatting strings.
windows: Return None owner on windows where not implemented
(abd28c4)
windows doesn't implement owner() in pathlib, so catch the error and return None like other corner-cases
Cleanup from review
(35d8525)
Fix lint
(487dad4)
Remove /Q from test package workflow
(39950f6)
Remove sh from windows build scripts
(61b0058)
Use rm github action instead of rmdir
(4f1582f)
the github runner doesn't like the rmdir arguments :shrug:
windows: Add a few path test cases
(390baa1)
windows: Update make_uri test for win paths
(bae873f)
Pathy: Raise error when not using Pathy.fluid for absolute paths
(e7f4e73)
this addresses concerns around initializing Pathy paths with unix and windows absolute paths. The correct way to initialize these paths is to use Pathy.fluid. - raise an error if an absolute system path is given when initializing Pathy objects - fixes #87
BREAKING CHANGE: Previously Pathy would allow you to initialize Pathy instances with absolute system paths (unix and windows). Now Pathy raises a ValueError if given an absolute system path that suggest using Pathy.fluid instead.
windows: Add windows CI test execution
(504823d)
verify some path shenanigans with Windows are working as expected
azure: "azure" scheme was not registered (#94, `2791565`)
BREAKING CHANGE: This removes an internal bit of code that allows for enumerating buckets in certain situations. The API was impossible to reach witho…
pathy[azure] extras to setup.py - remove "list_buckets"
from BucketClient classesBREAKING CHANGE: This removes an internal bit of code that allows for enumerating buckets in certain situations. The API was impossible to reach without going indirectly through the glob functionality, and it's unclear whether the code paths were ever reached outside of specific unit testing situations. If there's an explicit need for listing buckets, we can add a top-level API for it.
pypi: Add classifiers for python 3.10 / 3.11 (`515cb5d`)
515cb5d)I missed this bit while adding support for python 3.11 in #89
Builds look failed until all the tasks are done. Codecov's site says that require_ci_to_pass is
default yes. 🤷
Add after_n_builds set to the number of build tasks we have.
BREAKING CHANGE: Pathy.exists() no longer enumerates buckets if given a path with no root.
python: Support python 3.11
(c2a0586)
drop the use of _Accessor class from the internals of pathlib. It was removed in python 3.11 which broke... everything. - Detect python < 3.11 and provide the base needed accessor method "scandir"
BREAKING CHANGE: Pathy.exists() no longer enumerates buckets if given a path with no root.
smart_open: Use compression flag required by 6.x versions (`8c5f092`)
8c5f092)Also this fix works pathy with smart-open 6.0.0
Co-authored-by: Alexander Shadchin shadchin@yandex-team.com
the dev dependencies were too unspecified, so the pip resolver was taking forever to install packages
latest semantic release requires it
Bumps node-fetch from 2.6.1 to 2.6.7. - Release notes - Commits
--- updated-dependencies: - dependency-name: node-fetch dependency-type: indirect ...
Signed-off-by: dependabot[bot] support@github.com
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps tar from 4.4.13 to 4.4.19. - Release notes - Changelog - Commits
--- updated-dependencies: - dependency-name: tar dependency-type: indirect ...
Signed-off-by: dependabot[bot] support@github.com
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps trim-off-newlines from 1.0.1 to 1.0.3. - Release notes - Commits
--- updated-dependencies: - dependency-name: trim-off-newlines dependency-type: indirect ...
Signed-off-by: dependabot[bot] support@github.com
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps minimist from 1.2.5 to 1.2.6. - Release notes - Commits
--- updated-dependencies: - dependency-name: minimist dependency-type: direct:development ...
Signed-off-by: dependabot[bot] support@github.com
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps semantic-release from 17.3.8 to 19.0.3. - Release notes - Commits
--- updated-dependencies: - dependency-name: semantic-release dependency-type: direct:development ...
Signed-off-by: dependabot[bot] support@github.com
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Justin DuJardin justin@dujardinconsulting.com
Update for Python 3.10 compatibility (#68, `450c2f2`)
Bumps path-parse from 1.0.6 to 1.0.7. - Release notes - Commits
--- updated-dependencies: - dependency-name: path-parse dependency-type: indirect ...
Signed-off-by: dependabot[bot] support@github.com
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
BREAKING CHANGE: This change removes support for smart_open < 5.0.0
Fix error in deploy script
(c774efa)
ignore twine "already exists" errors because we always try to upload. :sweat:
Bumps glob-parent from 5.1.1 to 5.1.2. - Release notes - Changelog - Commits
--- updated-dependencies: - dependency-name: glob-parent dependency-type: indirect ...
Signed-off-by: dependabot[bot] support@github.com
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps handlebars from 4.7.6 to 4.7.7. - Release notes - Changelog - Commits
Signed-off-by: dependabot[bot] support@github.com
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps lodash from 4.17.19 to 4.17.21. - Release notes - Commits
Signed-off-by: dependabot[bot] support@github.com
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps normalize-url from 5.3.0 to 5.3.1. - Release notes - Commits
--- updated-dependencies: - dependency-name: normalize-url dependency-type: indirect ...
Signed-off-by: dependabot[bot] support@github.com
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps trim-newlines from 3.0.0 to 3.0.1. - Release notes - Commits
--- updated-dependencies: - dependency-name: trim-newlines dependency-type: indirect ...
Signed-off-by: dependabot[bot] support@github.com
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
BREAKING CHANGE: This change removes support for smart_open < 5.0.0
The API for specifying s3 credentials changed in smart_open v5, so previous versions are incompatible.
cli: Add version number to cli help string (#55, `8001907`)
clients: Add support for S3 bucket storage (#54, `5bb7e1b`)
pip install pathy[s3] extras - update tests to substitute the scheme where needed
instead of hardcoded "gs"chore: cleanup from review
test(s3): exercise list_buckets and pagination codepaths
chore: fix passing credentials through the env
chore: fix leftover dev change in conftest
chore: tighten up missing extras tests
BREAKING CHANGE: Previously you could import symbols directly from their files in the module, e.g. from pathy.base import Pathy. Now you must import t…
auto-import: Move public exports into init.py
(fd09021)
it seems that pylance can't manage to auto-import symbols with short paths unless they're defined in init.py. - it's supposed to be the case that it just magically picks the shortest import path, but it doesn't work in my testing.
BREAKING CHANGE: Previously you could import symbols directly from their files in the module, e.g.
from pathy.base import Pathy. Now you must import them from the base package, e.g. from pathy import Pathy.
cli: Ls returns code 1 from invalid sources
(b2ff829)
this is more consistent with unix ls command, and was the intention before. - add tests for return code
BREAKING CHANGES: the pathy ls command used to return code 0 if you gave it an invalid path. Now
it returns exit code 1 similar to the unix ls command.
samefile: Compare self.key to other.key not self.key
(688628e)
heh, heh :/
Add back travis script
(3982d1b)
Add breaking changes note
(3e53f21)
Add build step
(f0fdcfa)
Add checkout to deploy job
(ecbc5fa)
no wonder it can't find the deploy script :sweat_smile: - remove mac testing for now. It's cool to be able to do, but there's no platform specific code, and it takes longer to execute (sometimes up to 6 minutes) - add back python 3.7 and 3.8
Add deploy step to github action
(a102df4)
only runs on master. testing these kinds of changes is always "fun" :sweat_smile:
Add ENV_ID to cli tests
(c6ecf6a)
Add platform to unique env id
(f3f59db)
when running matrix tests we need unique locations to write to in each bucket so the tests don't conflict with each other. Adding the platform means we can run MacOS python 3.6 tests at the same time as Ubuntu python 3.6 tests.
Add py 3.9 to setup.py classifiers
(0f7b73b)
Add skip for gcs tests if extra is not installed
(431e631)
Break up the huge test_base.py file
(7a40603)
add a few more corner cases to client testing
Call virtualenv with python
(5cbe076)
Cleanup
(cb1983b)
Cleanup action steps
(b5a5618)
add codecov token for reporting coverage
Cleanup from review
(e61fb01)
Cleanup from review
(2ba9400)
Cleanup from review
(351ecd0)
Cleanup from review
(a664b75)
Cleanup from review
(d244649)
Cleanup lint
(a5a5a2b)
Cleanup ordering assumptions in tests
(9f6f44b)
Delay GCS imports in tests to allow running without extras
(27aad4f)
Drop travis build script
(a14a3f4)
Drop travis script
(4c4bc46)
Enable other python versions
(040763e)
Fix fixtures path in manifest
(99c0130)
Fix lint
(824650c)
Fix lint
(41abaf9)
Fix lint in cli
(23840d6)
Fix test skip if spacy is missing
(e3c9b75)
Ignore main invocation in coverage
(36f7517)
Install virtualenv first
(7e0ff2a)
Misc DRY cleanup in tests
(e094dfc)
Remove extra _gcs and _types files
(7fddd11)
Remove source folder when testing wheels in CI
(a385758)
Run set-build-version with nodejs
(c374e75)
Simplify _init body for better coverage
(a88922a)
in practice we don't pass a template to the _init() function, because it's only ever used in helper functions like Path.resolve/absolute that Pathy implements itself. However, it's possible that some version of python might call _init() with a template, so we keep support for it.
Start with one python version
(b77c5d1)
Try combining coverage files
(246f203)
Try github actions for matrix testing
(394d9ff)
Try out matrix testing on travis
(89143c2)
Try using os matrix for runs-on
(1c100af)
Types to satisfy pyright completeness check
(8143dc2)
Update build badge in readme
(956ebeb)
Update deploy script to build its own venv if needed
(6243893)
Update version bump regex
(ccf13d7)
Use --cov-append to combine reports
(e1b572a)
Remove legacy code paths and add tests
(8bd1914)
some old code-paths don't appear to be reasonably reachable in Pathy, and can probably be attributed to left-overs from the initial port of s3path. - add better test coverage for core classes
Resolve circular imports by inlining file adapter
(a60006f)
while it's perfectly fine to use lazy imports to workaround circular references, it appears to destroy the pylance integration and auto-imports. - move the clients.py and file.py code into base to make it so there is no need for lazy import workarounds.
Test py 3.6/3.9 on ubuntu/macos
(3d5e24b)
move set-build-version into deploy step
GCS: Remove dead code and extra error handlers
(805be85)
the original implementation had a pattern of wrapping the GCS calls in try/except statements. - to avoid obscuring or eating valid client errors from the underlying GCS library, we no longer handle those cases silently, and instead let the errors bubble up to the user. In normal usage this shouldn't change anything. - remove the while loops from GCS scandir implementation. The python library doesn't use the continuation token, but exposes its own pages iterator that handles it transparently.
BREAKING CHANGES: The GCS client no longer handles ClientError's that occur in response to calling .exist() on a Path that exists but you don't have access to.
Pathy: Drop rtruediv operator overload
(8085eb9)
I couldn't construct a test-case that used the overload, and stackoverflow seems to think it's impractical as well: https://stackoverflow.com/questions/37310077/python-rtruediv-does-not-work-as-i-expect
Pathy.prefix: Simplify prefix property
(e6adfae)
it uses Pathy.key that always joins a list of parts with _flavour.sep. Join doesn't add the value
at the end, so the if not key.endswith(sep) line is unnecessary. The key will never end with sep
tests: Add a python version to test paths
(1245aa7)
this way we can run matrix tests at the same time without the tests conflicting with each other trying to read/write the same blobs
Add expects about pathy to uri conversions
(9cbf52d)
Add GCS client corner cases
(6016ba2)
refactor PathyScanDir subclasses to match other class names, and make them non-private members.
Add tests for base scandir class
(3157616)
More file-system client tests
(bcd18af)
Subfolder creation for use_fs/use_fs_cache
(34deaa9)
verify the sub-folder creation logic
pacakge: Run tests from installed wheel
(0130b5c)
this way we know the package is GTG and not just luckily running because of a file in the source folder that doesn't exist in the installed package.
gcs: Stop handling DefaultCredentialsError (`d4754ff`)
gcs: Stop handling DefaultCredentialsError
(d4754ff)
google-cloud-storage provides a nice error message when it can't find the default credentials. Let it flow through to the client. - add test to ensure that if the default google creds can't be found, the error can be caught by the caller. - fixes #43
patch a dependabot vulnerability with marked < 2.0.0
Cleanup from review
(7dd0be4)
Cleanup from review
(551ead1)
patch a dependabot vulnerability with marked < 2.0.0
cli: Add "-l" flag to ls command
(e47fb02)
when provided print the size/updated time for blobs returned
Pathy: Add "ls" method for quickly querying blobs with stats
(bf452e7)
using iterdir goes into pathlib internals and returns path objects that are (potentially) disconnected from their known data points (e.g. size, updated time) It's not clear how to keep the blob stats while using iterdir or glob methods. - add "ls" method that calls the accessor scandir directly and keeps the blob stat information that's returned from GCS with the blob listings. This avoids the need for later calling stat on each blob to provide a listing view.
chore: fix lint in tests
chore: only build master branch
chore: also build develop branch
Python 3.9 compatibility (#46, `a965f40`)
chore: disable broken spacy test until thinc pr lands
chore: make PathyScanDir iterable for py < 3.8
chore: cleanup from review
chore: drop old tox file
chore: add codecov yml to disable patch coverage
Bumps ini from 1.3.5 to 1.3.8. - Release notes - Commits
Signed-off-by: dependabot[bot] support@github.com
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
deps-dev: Bump semantic-release from 17.0.4 to 17.2.3 (#38, `6e06dbd`)
Bumps semantic-release from 17.0.4 to 17.2.3. - Release notes - Commits
Signed-off-by: dependabot[bot] support@github.com
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
chore: fix lint
test: add test for set_client_params
chore: fix test
test: run GCS tests during CI build
chore: install all deps for testing
chore: fix credentials detection
chore: update docs
test(clients): add recreate behavior test
chore: use more generous wait in timestamp test
chore: update readme snippets
Path.scheme would error with schemeless paths (#37, `80f0036`)
Upgrade smart-open to >=2.2.0,<4.0.0 (#36, `fdf083e`)
⬆️ Upgrade smart-open pin, to fix botocore requiring urllib3 < 1.26
Suppress ugly path open type error
(d1d6e50)
the Path open method has a gross type that changes based on the python version. We'll use our specific type and deal with the consequences. :sunglasses:
Add a rglob + unlink test
(9b80f84)
it seems like a reasonably common pattern, make sure it works like rmdir
Add test for about.py to avoid failed codecov checks when releasing (`976374f`)
Add test for about.py to avoid failed codecov checks when releasing
(976374f)
if about.py changes and we don't test it, codecov is all like "wah, you didn't hit your diff targets because you went from 0% to 0% on about.py" :sweat_smile:
Fix fallback type for credentials error
(6c2fee7)
Fix issue where GCS installation was not found
(4059aef)
storage var is outdated
Fix pyright errors in gcs.py
(84a8e31)
Lint
(2453f06)
Npm audit fix
(5fa9994)
Run with npx
(8bcbf66)
Take two at fixing pyright errors
(17b10e9)
this is pretty nice. If you don't have the packages installed, the types end up being Any everywhere, but if you do have them installed, you get all the correct types including documentation popups in the IDE and intellisense :tada:
deps: Bump node-fetch from 2.6.0 to 2.6.1
(0d46e72)
Bumps node-fetch from 2.6.0 to 2.6.1. - Release notes - Changelog - Commits
Signed-off-by: dependabot[bot] support@github.com
BREAKING CHANGE use_fs, get_fs_client, use_fs_cache, get_fs_cache, and clear_fs_cache moved from pathy.api to pathy.clients
Add auto format and lint scripts
(b54d141)
Add codecov script
(cece852)
Add coverage badge to readme
(70d96b7)
Add semantic PR title linting github action
(ac3d0ab)
Cleanup from review
(5d7cb8a)
Drop github action for semantic pr titles
(71defad)
really the title is secondary to the commits in the PR. We'll continue to use the Semantic PR github app as long as it works
Drop PathType variable
(3168af4)
since consolidating the Pathy class in the base.py file, there's no need to TypeVars, we can just use a forward ref to Pathy itself :tada:
Fix extras in setup.py
(35569a3)
Fix tests without google-auth installed
(78f5361)
Fix the remaining mypy errors
(968a226)
in some cases the mypy errors are too uptight about subclasses and their types. When that happens we silence the error and provide the expected subclass type.
Fix travis lint invocation
(96fa4ea)
Misc cleanup
(d6e7e92)
Remove isort test from lint script
(c06f6ab)
we black format last, so the order/indent could be changed.
Update docs
(8a78712)
Update readme
(a537fa9)
restore the credits to s3path library
3b5aef3)c7f6d19)747815b)Adds a simple registry of known schemes and their mappings to BucketClient subclasses. There's a hardcoded list of built-in services, and (in theory) you can register more dynamically.
I think I prefer to hardcode and include most of the known services, and lazily import them so you only need their packages when you actually use them. The hope is that this lets the strong typings flow through to the clients (because they can be statically inspected). If we can't get specific types flowing through nicely, maybe it's okay to do more of a dynamic import style registration.
BREAKING CHANGE use_fs, get_fs_client, use_fs_cache, get_fs_cache, and clear_fs_cache moved from pathy.api to pathy.clients
ci: Add lint check before testing
(2633480)
GCS: Print install command when using GCS without deps installed
(d8dbcd4)
make the assertion prettier :sunglasses:
796dd40)BREAKING CHANGE: This renames the internal GCS/File adapter classes by removing the prefix Client.
ClientBucketFS -> BucketFS ClientBlobFS -> BlobFS ClientBucketGCS -> BucketGCS ClientBlobGCS -> BlobGCS
BREAKING CHANGE: PureGCSPath is now PurePathy
Add BucketStat to docs
(9a7f8d8)
Fix ci build badge
(aacb9f7)
Update docs
(e3a2c49)
deps: Bump lodash from 4.17.15 to 4.17.19
(18938a2)
Bumps lodash from 4.17.15 to 4.17.19. - Release notes - Commits
Signed-off-by: dependabot[bot] support@github.com
83b07f2)Bumps npm from 6.14.2 to 6.14.6. - Release notes - Changelog - Commits
Signed-off-by: dependabot[bot] support@github.com
build: Use husky to auto update docs when code changes
(5a32357)
README: Generate API and CLI docs
(0213d2f)
5632f26)Be more consistent with the Pathy naming.
BREAKING CHANGE: PureGCSPath is now PurePathy
Upgrade typer support (`e481000`)
Upgrade typer support
(e481000)
allow anything in range >=0.3.0,<1.0.0
Path.owner() can raise when using filesystem adapter (`2877b06`)
Path.owner() can raise when using filesystem adapter
(2877b06)
catch the error and return a None owner
cli: Add -r and -v flags for safer usage (`a87e36f`)
cli: Add -r and -v flags for safer usage
(a87e36f)
rm will fail if given a directory without the -r flag (similar to unix rm) - rm will print the removed files/folders when given the -v flag
BREAKING CHANGES: GCSPaths must include a path scheme
25c58a3)3393226)GCSPath wants to work with many kinds of paths, and it's not always clear upfront what kind of path a string represents. If you're on a local file system, the path "/usr/bin/something" may be totally valid, but as a GCSPath it isn't valid because there's no service scheme attached to it, e.g. "gs://bucket/usr/bin/something"
FluidPath is a Union of pathlib.Path and GCSPath which allows type-checking of the paths without needing explicit knowledge of what kind of path it is, until that knowledge is needed.
note I originally thought of using "UnionPath" instead of "FluidPath" but the intellisense for completing "GCSPath.union" was very crowded, and a helper should be easy to type with completion.
cli: Add ls [path] command
(17cab1d)
prints the full paths of files found in the location
cli: Add pathy executable with cp and mv commands
(98760fc)
add "pathy" entry point to the gcspath package - add Typer requirement - add typer CLI app for copying and moving files - basic test
cli: Add rm [path] command
(31cea91)
removes files or folders - add tests
pathy: Rename library to be more generic
(c62b14d)
it does more than just GCS at this point
8a2fb27)BREAKING CHANGES: GCSPaths must include a path scheme
Before GCSPath would convert /bucket-name/file into gs://bucket-name/file internally. This leads
to ambiguity *(thanks @honnibal) when dealing with regular file-system paths and bucket paths
together. Does the path /foo/bar point to an absolute file path or a GCS bucket named foo?
Now paths must be constructed with a path scheme. This allows GCSPath to deal with both types of paths, and is needed for the CLI apps to come.
7b85ca1)Do not de/compress opened files based on extension (`22d14e7`)
Do not de/compress opened files based on extension
(22d14e7)
the streaming library we use smart_open does automatic de/compression if it sees a recognized file extension. We don't want that behavior here.
Your coding agent can read these notes before it upgrades. Set up the MCP server →