fate
Pull makes happy!
fate is a Python program that helps git pull
a bunch of Git repositories in your home directory or similar.
(The name comes from Fate's Thread Casino in Mystery Hunt 2026,
in which the protagonists become addicted to the Keeper's gacha machines.)
Installation
It's fate-casino on PyPI, so e.g.
uv tool install fate-casino
fate --help
Usage
See the argparse help for full options.
fate init (or fate i)
For every directory you want to use with fate,
you need to create a .faterc or faterc (the latter takes precedence)
in the root of that Git repository.
You can do this by running fate init.
This is a TOML 1.1 file that specifies which actions fate performs
when run on that repository, and looks something like this:
[config]
branch = "main"
venv = ".venv" # path to the virtual environment, if using uv
[actions]
pull = {enabled = true}
uv = {enabled = true, commit = true}
prek = {enabled = true, commit = true}
push = {enabled = true, verify = true}
fate run (or fate r)
Once a directory has .faterc set up, you can use fate run.
The actions supported right now, if you have a clean working state:
pull: runsgit pullif there is a configured remote and clean workdir. If the working directory is dirty but there's a remote, runsgit fetchinstead.uv: runsuv sync --upgradein order to updateuv.lockIf thecommitoption is enabled, also git commit's the change.prek: runsprek updatein order to updateprek.tomlhooks If thecommitoption is enabled, also git commit's the change.push: runsgit pushif there is a configured remote. If theverifyoption is turned off, adds--no-verify.
fate multirun (or fate m)
This recursively runs fate run on every directory under the specified one
which has a .faterc file.
The following options can be used for multirun mode:
-
By default
fateruns all enabled tasks; but you can also use-o/--onlyor-e/--excludeto restrict the list. Note thatfatewill never run a task not actually enabled in.faterc. -
You can add a delay between repositories with
-d/--delay(e.g.1s,500ms,2m, or just5for 5 seconds), to throttle requests. -
Pass
-a/--allto include discovered Git repositories that don't have.faterc, allowing justpullandpushon them. -
Hidden directories are not searched by default (since
~/.cacheoften has repositories, for example). Pass-u/--unrestrictedto search inside hidden directories too. -
By default, only repositories directly inside the target directory are found. Use
-r/--recursiveto search to any depth, or--depth Nto limit to N levels. (-rand--depthare mutually exclusive.)
We recommend installing fd
for much faster search;
fate otherwise falls back to os.walk (slower), and prints a warning.
fate ls (or fate l, or fate list)
Shows the status of each repository without running any tasks. (It doesn't make any network queries, so it's the fastest.)
Shortcuts for fate multirun
fate ls is actually just fate multirun with an empty --only list.
We also have the following:
- fate pull: equivalent to
fate multirun --only pull - fate gamble (or fate g): equivalent to
fate multirun --exclude push. - fate push: equivalent to
fate multirun --only push
Metadata
Release files for fate-casino 0.3.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| fate_casino-0.3.2.tar.gz | 25.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| fate_casino-0.3.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 37.0 kB
Release files / fate_casino-0.3.2.tar.gz
| Download URL | fate_casino-0.3.2.tar.gz |
|---|---|
| Size | 25.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
662e8f68ad48e264f320196e683b3946576204cf859c3e6f1b7bd49de3a144f4
|
|
BLAKE2b-256 checksum How to use checksums |
1202f2b35f35ef8ccff96c9877b65c7b9e597042d60ccef17352caadd5fcb42d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 29, 2026.
Transparency logRelease files / fate_casino-0.3.2-py3-none-any.whl
| Download URL | fate_casino-0.3.2-py3-none-any.whl |
|---|---|
| Size | 11.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
32305a8f994acd6c92decfabbc59238bd83c96f165c034c82287eb920f4cb65c
|
|
BLAKE2b-256 checksum How to use checksums |
0bde44b47e1b2a25dde37f7b9697067f88d0c28c5e859425610d65bee8e6bb91
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 29, 2026.
Transparency log