Skip to main content

fileroute

Fileroute records where project artifacts come from, where they live locally, and where they should be published. A YAML or JSON descriptor connects local files to SharePoint, Google Drive, and S3 locations. Preview transfers without credentials, visualize the relationships, pull remote inputs, and publish to supported targets through the CLI or Python API. Python 3.11+ is required.

Current transfer support: SharePoint, Google Drive, and S3 can be pulled; only SharePoint can be pushed. Google Drive and S3 targets can be described and diagrammed, but even push --dry-run rejects them until upload support exists. Fileroute does not transform files or transfer directly between cloud providers.

Get started

For a repeatable project workflow, add Fileroute as a dependency and commit the descriptor and uv.lock:

uv add fileroute
uv run fileroute diagram config/fileroute.yaml
uv run fileroute pull config/fileroute.yaml --dry-run

For occasional CLI use, run the published tool in a separate environment:

uvx fileroute diagram config/fileroute.yaml
uvx fileroute pull config/fileroute.yaml --dry-run

uv run uses the project's dependencies and supports Python imports; uvx does not install Fileroute into the project. Pin a version with uv add 'fileroute==X.Y.Z' or uvx --from 'fileroute==X.Y.Z' fileroute --help. See uv's project, dependency, and tool guides.

One supported workflow downloads a SharePoint file to a local artifact and publishes that artifact to two SharePoint destinations:

resources:
  - name: monthly-report
    path: artifacts/monthly-report.csv
    sources:
      - path: https://contoso.sharepoint.com/sites/data/Shared%20Documents/monthly-report.csv
    targets:
      - path: https://contoso.sharepoint.com/sites/reports/Shared%20Documents/monthly-report.csv
      - path: https://contoso.sharepoint.com/sites/archive/Shared%20Documents/monthly-report.csv

Save this as config/fileroute.yaml, replace the example URLs, and run:

uv run fileroute resolve config/fileroute.yaml
uv run fileroute diagram config/fileroute.yaml
uv run fileroute pull config/fileroute.yaml --dry-run
uv run fileroute pull config/fileroute.yaml
uv run fileroute push config/fileroute.yaml --dry-run
uv run fileroute push config/fileroute.yaml

resolve, diagram, and dry runs do not authenticate or contact providers; actual pull/push operations require access. Configure credentials using .env-sample; Google OAuth setup is covered in Google authentication.

Documentation

The descriptor path is a local artifact for transfers. sources are upstream inputs or provenance; targets are publication destinations. Diagrams show intent, not a completed transfer. Use fileroute --help for commands and options. To develop this repository, run uv sync and see the contributor guide.

Release files for fileroute 0.1.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for fileroute 0.1.4
File Size Uploaded
fileroute-0.1.4.tar.gz 77.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for fileroute 0.1.4
File Interpreter ABI Platform
fileroute-0.1.4-py3-none-any.whl Python 3 none any Details

Total release size: 140.2 kB

Release files / fileroute-0.1.4.tar.gz

Download URL fileroute-0.1.4.tar.gz
Size 77.9 kB
Tags Source
SHA-256 checksum
How to use checksums
522d5ac47f0657777c2f27be9415e1d018afa9490b9fe96b2dd1539db7a8d5a0
BLAKE2b-256 checksum
How to use checksums
6ac83d62e87a8b3b3d46175ae92fabd211caebc03cf84ff781d7ab7a13e9f174
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.17 {"installer":{"name":"uv","version":"0.12.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / fileroute-0.1.4-py3-none-any.whl

Download URL fileroute-0.1.4-py3-none-any.whl
Size 62.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
5cc37ed4ffa883926058a751fd33d6a1301a26026379c16fc2b576ceb69b3588
BLAKE2b-256 checksum
How to use checksums
4eadd2168ddac25853b8e42caf4ff78aef44ce11249aa497f7363510d28141f1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.17 {"installer":{"name":"uv","version":"0.12.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release history Release notifications | RSS feed

0.1.8

2 release files

0.1.7

2 release files

0.1.6

2 release files

0.1.5

2 release files

This release

0.1.4 This release

2 release files

0.1.3

2 release files

0.1.2

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page