Repository navigation
Conversation
…ss_copy that does not exist
SFTP, FTP/FTPS, Google Drive, OneDrive and Dropbox resolve by URI through the shared clients; WebDAV, SMB and fsspec are mounted. A copy or a move of a file onto itself through two views of one store is refused (file identity), the WebDAV client only talks to its own server and no longer leaves redirects to requests, and the SFTP, OneDrive and SMB clients name the extra to install when their SDK is missing.
The integrity package compares a tree at any storage URI with an approved baseline: snapshot, verify, watch and continuous modes, six kinds of change, a versioned manifest, one IntegrityViolation event per pass that finds drift, and opt-in remediation. The first monitor's call, summary and notification are kept.
Routes deliver events to named sinks with deduplication and a rate limit per route, and the audit trail records one row per event and per storage operation in a searchable store. Both are opt-in. While the router is active, notify_on_failure and the integrity monitor leave the direct notification to it.
Pipelines run tasks in dependency order with retry, timeout, cancellation, conditions, idempotency, checkpoint and resume, a dry run and an execution history, from Python or from a versioned YAML or JSON definition. FA_storage_verify can raise on a mismatch (strict), so a verification can fail its task. The action ACL and the MCP server now check action names nested in the arguments of another action.
Says what is public, the stability levels, what a version number promises and how a name is retired, and adds the helper every deprecation goes through.
The storage contract suite runs against MinIO, Azurite, OpenSSH, FTP, WebDAV and Samba in containers, and the unit tests on Linux and macOS. Nothing here has run yet: there is no Docker on the development machine, so the first workflow run is the test.
Cron with a time zone, manual, file, event and pipeline triggers; action-list and pipeline targets; a record of every run with seven states; overlap protection, timeouts and cancellation.
One plain-Python service per navigation entry, a sidebar GUI built on them with a pipeline editor, and a web UI that renders the same services. The older tabs stay under Advanced.
Up to standards ✅🟢 Issues
|
| Metric | Results |
|---|---|
| Complexity | 9000 |
| Duplication | 81 |
NEW Get contextual insights on your PRs based on Codacy's metrics, along with PR and Jira context, without leaving GitHub. Enable AI reviewer
TIP This summary will be updated as you push new changes.
MinIO from quay.io, a writable FTP root, Samba on port 445 and a replace that removes the target first, a 400 from Apache for a path below a file, a versioning name too long to ask about on macOS, the package job on the locked tools, and equality tests written so that a scanner does not read them as self-comparisons.
File-level pylint disables in the test modules for the rules pytest idioms trip, each with its reason; markers with reasons where a scanner reads a test digest or a constant SQL statement as a risk; nine long lines wrapped; one variable renamed. The S3 integration job uses S3Mock, since MinIO's image can no longer be pulled.
|
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.



Implements the FileAutomation 1.0 roadmap (#107) on top of
dev. Nothing was removed: everyFA_*action, facade name and command-line flag of 0.0.x still works.docs/source/Eng/usage/migration.rstlists the few behaviours that changed.What is in it
File/Storageover oneStorageBackendcontract and one URI syntax. Twelve backends: local, in-memory, S3, Azure Blob, Google Drive, OneDrive, Dropbox, SFTP, FTP/FTPS, WebDAV, SMB, fsspec. An 88-case contract suite that every backend passes;copy_betweennow runs on the layer.[all]for everything).automation_file.app), which the web UI renders too.storage,integrity,pipelineandauditsubcommands.Problems fixed on the way
WebDAVClientcould be sent, credentials included, to another host by an absolute path or a redirect.ActionACLand the MCP--allowed-actionslist did not check actions nested in the arguments of another action.FA_storage_verifycould not fail a pipeline task; it takesstrict=Truenow.Decisions made here, open to change before 1.0
docs/source/Eng/usage/api_policy.rst).X.Y.0instable.tomlanddev.tomlin the pull request tomain(scripts/stable_release.py).tzdatais a base dependency on Windows, for time zones in the scheduler.Checks
Locally, on Windows with Python 3.14: 5763 passed and 257 skipped with every extra, 3879 passed and 137 skipped with the base dependencies only,
ruff check,ruff format --checkandmypy automation_fileclean.Not verified: please read
.github/workflows/integration.ymlandtests/integration/have never run. There is no Docker on the development machine, so this pull request is their first run. The container options, the Samba and FTP ones most of all, may need adjusting. These jobs do not gate publishing.progress.mdlists what remains open;docs/updates/2026-10.mdhas one entry per piece of work (U-20261008-01 to -32).