Skip to main content
Change of provenance

The repository or configuration that created this release differ from a previous release. View details.

scitex-git

SciTeX

Git operations and utilities — clone, init, branch, remote, retry decorator.

Full Documentation · uv pip install scitex-git[all]

PyPI Python Tests Coverage Docs License: AGPL v3


Installation

pip install scitex-git

Architecture

scitex_git/
├── _clone.py          ← clone_repo, ls_remote, get_remote_url
├── _init.py           ← git_init, init_git_repo, find_parent_git
├── _commit.py         ← git_add_all, git_commit
├── _branch.py         ← checkout_new_branch, branch_rename, setup_branches
├── _remote.py         ← remote-URL helpers, head-hash queries
├── _retry.py          ← @git_retry decorator (transient-error backoff)
├── _validation.py     ← repo-state guards
├── _workflow.py       ← high-level multi-step flows
├── _vendor_sh.py      ← ~70-LOC subprocess wrapper (replaces scitex.sh)
└── _skills/           ← agent-facing skill pages

Pure-stdlib core. _vendor_sh.py is intentionally tiny so the package has no scitex.* runtime dependency. The umbrella scitex.git import resolves through a sys.modules bridge.

1 Interfaces

Python API
import scitex_git as sxg

# Clone / init
sxg.clone_repo(url, dest_dir)
sxg.git_init(repo_path)

# Add / commit
sxg.git_add_all(repo_path)
sxg.git_commit(repo_path, message="…")

# Branch
sxg.git_checkout_new_branch(repo_path, branch_name)
sxg.git_branch_rename(repo_path, old, new)
sxg.setup_branches(repo_path, template_name)

# Repo init / discovery
sxg.init_git_repo(project_dir, git_strategy="parent")
sxg.find_parent_git(project_dir)
sxg.create_child_git(project_dir)
sxg.remove_child_git(project_dir)

# Remote
sxg.get_remote_url(repo_path)
sxg.is_cloned_from(repo_path, url)
sxg.ls_remote(url)
sxg.get_head_hash(repo_path)

# Retry decorator
@sxg.git_retry(max_attempts=3)
def maybe_flaky_operation(): ...

Demo

flowchart LR
    A["scitex_git.clone_repo<br/>(url, dest)"] --> B["@git_retry<br/>(transient errors)"]
    B --> C["repo on disk"]
    C --> D["git_add_all + git_commit"]
    D --> E["checkout_new_branch<br/>+ branch_rename"]
    E --> F["get_remote_url /<br/>get_head_hash"]
>>> import scitex_git as sxg
>>> sxg.clone_repo("https://github.com/foo/bar", "./bar")
>>> sxg.git_add_all("./bar")
>>> sxg.git_commit("./bar", message="initial")

Quick Start

import scitex_git as sxg

sxg.clone_repo("https://github.com/foo/bar", "./bar")
sxg.git_add_all("./bar")
sxg.git_commit("./bar", message="initial")

Status

Standalone fork of scitex.git. scitex.logging.getLogger is replaced by stdlib logging.getLogger; the scitex.sh.sh shell wrapper is replaced by a tiny ~70-LOC _vendor_sh.py that supports just the call-shape used here. The optional scitex.writer.verify_tree_structure validation step in create_child_git is gated behind a try/except so it only runs when scitex-writer is installed.

The umbrella package's scitex.git import path is preserved via a sys.modules-alias bridge so existing code continues to work.

Part of SciTeX

scitex-git is part of SciTeX. Install via the umbrella with pip install scitex[git] to use as scitex.git (Python) or scitex git ... (CLI).

Four Freedoms for Research

  1. The freedom to run your research anywhere — your machine, your terms.
  2. The freedom to study how every step works — from raw data to final manuscript.
  3. The freedom to redistribute your workflows, not just your papers.
  4. The freedom to modify any module and share improvements with the community.

AGPL-3.0 — because we believe research infrastructure deserves the same freedoms as the software it runs on.

License

AGPL-3.0-only (see LICENSE).


SciTeX

Metadata

Release files for scitex-git 0.3.2

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

Change of provenance

The repository or configuration that created these release files differ from that of a previous release.

We recommend inspecting the repository and configuration before proceeding. View details.

Source distribution (sdist)

Source distribution for scitex-git 0.3.2
File Size Uploaded Provenance
scitex_git-0.3.2.tar.gz 33.4 kB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for scitex-git 0.3.2
File Interpreter ABI Platform
scitex_git-0.3.2-py3-none-any.whl Python 3 none any Details

Total release size: 72.3 kB

Release files / scitex_git-0.3.2.tar.gz

Change of provenance

This file belongs to a release with changed provenance: the repository or configuration that created the release files differ from that of a previous release.

We recommend inspecting the repository and configuration before proceeding. View details.

Download URL scitex_git-0.3.2.tar.gz
Size 33.4 kB
Tags Source
SHA-256 checksum
How to use checksums
d312f01cf5d5716e880753d1c01ace799faeb5d0986aefa1652980b52160d6c0
BLAKE2b-256 checksum
How to use checksums
fd4acb3b400d899740ba7e3f298316b719556cd3d7b0dc8bac78f224b65a14fc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

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 May 19, 2026.

Transparency log

Release files / scitex_git-0.3.2-py3-none-any.whl

Change of provenance

This file belongs to a release with changed provenance: the repository or configuration that created the release files differ from that of a previous release.

We recommend inspecting the repository and configuration before proceeding. View details.

Download URL scitex_git-0.3.2-py3-none-any.whl
Size 38.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
5186fd6122bb753309be4e00b8e16a50e1d8fa389b9110cb19bf0e6ee99b1ccd
BLAKE2b-256 checksum
How to use checksums
230399372fe92b87384a0d369a5d64a3f826d5a9f7d37f5357ab99de669e4ef6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

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 May 19, 2026.

Transparency log

Security for scitex-git 0.3.2

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.

Change of provenance

The configuration that created this release differs from a previous release.

While this could reflect a routine change by the project maintainers, it may also indicate that the release files have been compromised.

Configuration

  • Removed 0.3.1 publish-pypi.yml
  • Added 0.3.2 pypi-publish-and-github-release-on-tag.yml
Select from 2 files

Attestation for scitex_git-0.3.2.tar.gz

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 May 19, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

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