This repository is a GTK4/libadwaita desktop application for Salesforce Composite and Serial API flows.
The canonical workflow is documented in CONTRIBUTING.md and README.md, and the repo uses uv as the primary launcher for local commands.
Help future agents work with this repository consistently and safely.
Run from the repository root.
uv sync- Installs dependencies and configures the local environment.
uv run salesforce-object-flow- Starts the desktop application.
The repository expects these four checks before a pull request:
uv run ruff check salesforce_object_flow/ tests/uv run ruff format --check salesforce_object_flow/ tests/uv run pyright salesforce_object_flow/ tests/uv run pytest tests/ -v
uv run ruff format salesforce_object_flow/ tests/uv run ruff check --fix salesforce_object_flow/ tests/
- Python
>=3.12 - The repo uses a virtual environment under
.venvwhen available. - Primary dependencies are in
pyproject.toml. - Dev dependencies include
ruff,pytest,pyright, andbabel.
salesforce_object_flow/: main packagetests/: test suitepyproject.toml: project metadata and tooling configurationCONTRIBUTING.md: development workflow and checksREADME.md: product description, status, and higher-level documentationpo/: translation source files (.po)locale/: compiled translation artifacts (.mo), expected to be generated locally and ignored by git
- Use
rufffor formatting and linting. - Project config is in
pyproject.toml:target-version = "py312"line-length = 100select = ["E", "F", "W", "I"]
- Do not rely on formatting tools outside the documented
uvcommands unless necessary.
- Use
pyrightin strict mode for the package. - Only
salesforce_object_flowis strict, whiletestsare included for analysis. - Avoid
assertfor runtime type narrowing; preferisinstance, early returns, or explicitcast.
- Source translations live under
po/<lang>.po. - Compiled catalogs live under
locale/<lang>/LC_MESSAGES/. - Do not commit
locale/artifacts if they are generated locally. - Translation commands use
uv run python scripts/i18n.py ....
- Logging: one logger per module with
import logging; log = logging.getLogger(__name__). - Avoid
asyncioand manual threads in v1; useGLib.idle_addand theTimerhelper for deferred work instead. - Follow existing package and module structure; keep app logic in
salesforce_object_flow/and tests intests/.
- Read
CONTRIBUTING.mdandREADME.md. - Use
uv syncif the workspace needs dependencies. - Verify formatting with
uv run ruff format --check salesforce_object_flow/ tests/. - Run the full check suite if changes are non-trivial.
- Preserve the existing architecture and naming patterns.
- Prefer small, focused changes.
- Run the relevant tests for changed modules.
- Avoid changing translation workflows unless the feature is translation-specific.
salesforce-object-flowis installed as an entry point frompyproject.toml.- The repository is currently at alpha status, so maintainers may expect careful review for new features and bugfixes.
- Use
LANGUAGE=es uv run salesforce-object-flowto validate Spanish locale behavior.