Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
127 commits
Select commit Hold shift + click to select a range
3324f09
fix: warn when comparing incompat UUIDs
tazlin Jul 29, 2024
7b64ebc
fix: better name choice for user id mixin
tazlin Jul 29, 2024
7617ff3
feat: shared key support
tazlin Aug 4, 2024
ad47638
fix: `JobID` is now `GenerationID`
tazlin Aug 4, 2024
f59400a
fix: type `get_follow_up_returned_params` more accurately
tazlin Aug 4, 2024
e0d4b13
tests: improved pytest fixtures
tazlin Sep 14, 2024
65f4c71
fix: internal logging consistent with other haidra projects
tazlin Sep 18, 2024
74ea59f
fix: shared key loose ends
tazlin Sep 18, 2024
f345ef7
docs: update jobid -> generationid; `SharedKeyDetailsResponse`
tazlin Sep 18, 2024
8bd3705
feat: `time_constructed` for `HordeResponse`
tazlin Sep 19, 2024
0f69123
fix: change lingering `JobID` references
tazlin Sep 27, 2024
53f7a0a
docs: shared keys sdk model map entries
tazlin Sep 27, 2024
9108c4f
tests: update styles/collections examples
tazlin Nov 13, 2024
507506f
docs: give main content more room in mkdocs
tazlin Nov 17, 2024
61deea9
docs: fix dangling docstring references
tazlin Nov 17, 2024
91472a2
docs: use `haidra-assest` md; support mermaid for mkdocs
tazlin Nov 17, 2024
2f56ef9
docs/style: fix md linting in CONTRIB.md
tazlin Nov 17, 2024
e86fe21
chore: extra trace log for UUID handling
tazlin Nov 18, 2024
4f87cf0
docs: move ai-horde specific docs to subdir
tazlin Nov 18, 2024
3079e74
fix: add support for arg `load_large_models`
tazlin Nov 18, 2024
35620e9
tests/docs: func docstring for more fixtures
tazlin Nov 19, 2024
dea112c
fix: recursive submod checkout
tazlin Nov 20, 2024
ddf0de4
chore: submodule update
tazlin Nov 20, 2024
4825a25
fix/tests: slightly better `seed_to_int` w/ testing
tazlin Jan 26, 2025
665ef5e
chore: ignore codiumai/qodo config file
tazlin Jan 26, 2025
beb1ab1
fix: rewrite python->api field names on submit as intended
tazlin Jan 26, 2025
20de221
fix: don't use protected namespace in `ImageStatsModelsRequest`
tazlin Jan 26, 2025
dd59dc5
tests: addtl. stats test re: `model_state=known`
tazlin Jan 26, 2025
aecc59c
feat: initial `HordeSingleGeneration` support
tazlin Jan 26, 2025
e87b1ae
fix: don't sort ids/r2_uploads for jobpop responses
tazlin Jan 26, 2025
3819c40
feat: standardize `_async_client_exceptions` in horde_sdk namespace
tazlin Jan 26, 2025
98a0ca7
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Jan 26, 2025
604ba71
chore: ignore other venvs
tazlin Jan 30, 2025
b13a345
fix: consistent naming for alchemy job pop type
tazlin Feb 16, 2025
4e2c60b
fix: log safe dump in simple client on timeout
tazlin Feb 16, 2025
5b65341
fix: remove unused reference to class
tazlin Feb 16, 2025
ffb2d97
fix: handle addtl. case in `UUID_Identifier` compare
tazlin Feb 16, 2025
897765f
fix: clear loggers and notify when using `set_logger_handlers`
tazlin Feb 16, 2025
8bd4354
tests: add simple n request fixture; specify r2_uploads
tazlin Feb 16, 2025
cf1be92
chore: ignore addtl venv dirs w/ linters/formatters
tazlin Feb 16, 2025
575bac3
fix: don't sort alchemy job pop ids either
tazlin Feb 17, 2025
5f4ef8c
refactor: more sensible generation structure
tazlin Feb 17, 2025
b3c0a1f
fix: use factory to init `_time_constructed` by default
tazlin Feb 22, 2025
254ca07
fix: download extra source images concurrently
tazlin Feb 22, 2025
611a3f3
fix: expose `NoValidRequestFound`
tazlin Feb 22, 2025
287a536
tests: addtl. fixtures for common jobs
tazlin Feb 22, 2025
76ebfd0
tests: add attl. test images
tazlin Feb 22, 2025
572e860
tests/fix: init tests/ai_horde_worker as a namespace
tazlin Feb 22, 2025
d2a0d2f
tests/style: lint fix
tazlin Feb 22, 2025
b784786
style: fix
tazlin Feb 24, 2025
2abe6ea
tests/refactor: move model ref. manager to shared conftest
tazlin Feb 24, 2025
78fb983
refactor: `ai_horde_worker` -> `worker`
tazlin Feb 24, 2025
a84022e
tests/refactor: `ai_horde_worker` -> `worker`
tazlin Feb 24, 2025
6ad494d
refactor: move gen. consts to `gen._params/*/consts.py`
tazlin Feb 24, 2025
b7b362f
docs: gen._params
tazlin Feb 24, 2025
7f80295
feat/refactor: `image_utls`
tazlin Feb 24, 2025
75f3e45
feat: introduce `generation_parameters` namespace
tazlin Feb 25, 2025
50fa876
fix:: update missed namespace change in example
tazlin Feb 25, 2025
65b9269
fix/tests: set ids to uuid defaults; resolve swagger issue
tazlin Feb 26, 2025
130e18d
fix/chore: remove superseded code
tazlin Feb 26, 2025
3cb16d2
refactor: move addtl. consts to more general namespaces
tazlin Feb 26, 2025
b619182
fix: `ImageGenerateJobPopResponse.skipped` default_factory
tazlin Feb 26, 2025
1cb27ca
tests: use desc. field for shared key; use 0s for uuids
tazlin Feb 26, 2025
6c7b7bf
fix: remove cyclic dependency generic<->ai_horde namespaces
tazlin Feb 26, 2025
55c5b3d
feat: generations, generation_parameters, dispatch handling
tazlin Feb 26, 2025
f17f2fb
chore: remove pydantic pin
tazlin Feb 26, 2025
a9764e4
feat: support remaining endpoints
tazlin Feb 27, 2025
72bd30e
fix: drop 'private' naming, fix malformed models
tazlin Feb 27, 2025
ea2bf14
tests: compat. hacks for response writing
tazlin Feb 27, 2025
5082f90
tests: print extra info on model validation fails
tazlin Feb 27, 2025
19c6992
style: fix
tazlin Feb 27, 2025
e3b0e6f
fix: ssl_context not being passed in `GenericAsyncHordeAPIManualClient`
tazlin Feb 27, 2025
b7689f2
style: lint fix
tazlin Feb 27, 2025
5805465
fix: `messages.messages` -> `messages`
tazlin Feb 27, 2025
c666595
docs/tests: standardize request/response/apimodel docstrings
tazlin Mar 1, 2025
41090c0
tests: handle case of auto-gen doc string > 119 char line
tazlin Mar 1, 2025
6fe8ace
docs: finalized docstring conformity
tazlin Mar 1, 2025
6d75e69
docs: add missing namespace
tazlin Mar 1, 2025
9a1dcb7
fix: correct linger api_model_name mismatches
tazlin Mar 1, 2025
58c3bc2
tests: ignore certain API models in testing
tazlin Mar 1, 2025
0f9cb2a
fix: match sdk to api test data
tazlin Mar 1, 2025
6670185
fix: missing fields/imports
tazlin Mar 1, 2025
06f90c9
fix: sort ids on hashing job pop responses
tazlin Mar 1, 2025
0be289c
style/docs: fix lingering linting issues + add missing func doc strings
tazlin Mar 1, 2025
40612c9
fix: <3.12 python support enum `in`
tazlin Mar 1, 2025
e593bbb
style: fix
tazlin Mar 1, 2025
4f61577
tests: <3.13 + ==3.13 docstring compliance
tazlin Mar 1, 2025
865df09
tests: ignore docstring enforce jsons; better names
tazlin Mar 1, 2025
1d2bbf2
build/chore: temp generated reqs.txt before uv transition
tazlin Mar 1, 2025
c9de097
ci: use tach to enforce inter package module deps.
tazlin Mar 1, 2025
d6ff419
fix/tests: check requests too + associated fixes
tazlin Mar 7, 2025
ba29ef4
feat: add opt-in telemetry
tazlin Mar 10, 2025
975f96c
refactor/chore: rename image specific consts to reflect that
tazlin Mar 10, 2025
7f880fc
fix: correct lingering api surface test failures
tazlin Mar 10, 2025
00d637d
docs: mkdocs pages catchup
tazlin Mar 10, 2025
16aa79f
fix: add missing namespace `__init__.py`
tazlin Mar 11, 2025
a45c214
docs: rebuild `docs/` autogen `horde_sdk` dir
tazlin Mar 11, 2025
698f125
build/fix: add missing telemetry deps
tazlin Mar 15, 2025
ededf2a
feat/refactor: img feature flags, PIL -> bytes, baseline rename, shar…
tazlin Mar 16, 2025
16e4a72
docs: better contrib + dev onboarding docs
tazlin May 1, 2025
2e67f35
fix: use >3.12 `type` for `GENERATION_ID_TYPES ` when able
tazlin May 1, 2025
1952b1c
fix: set default `type_` as intended in all worker request
tazlin May 1, 2025
8a62ce7
feat: feature flags for generation/worker capability evaluation
tazlin May 1, 2025
1a11522
refactor: use `requests.request(...)` for dynamic verb selection
tazlin May 1, 2025
61414b1
docs: more sdk specific defs, doc link to naming conventions
tazlin May 3, 2025
188ed2f
refactor: rethink of states, result types, adds batch_ids, gen/job th…
tazlin May 4, 2025
c134d0c
style: fix (remove unused imports)
tazlin May 4, 2025
d175dac
docs: fix tabbing in md docs for mkdocs
tazlin May 5, 2025
145106f
doc/style: fix addtl whitespace formatting issues
tazlin May 5, 2025
7abba15
docs: tldr for style guide
tazlin May 5, 2025
e8fdcab
feat: `create_bridge_agent_string`, use a default where applicable
tazlin May 5, 2025
1c9b2ac
refactor: `KNOWN_DISPATCH_SOURCE` to higher level `consts.py`
tazlin May 5, 2025
8d7643c
docs: addtl. clarification for metadata classes
tazlin May 5, 2025
9588d34
fix: rename to `Known*` type alias
tazlin May 5, 2025
c8cee9a
refactor: move bridge data to more suitable namespace
tazlin May 5, 2025
d0926a4
feat/refactor: 'black_box' mode for gens, remove stale `UploadJob` class
tazlin May 6, 2025
5af03ca
docs/tests: write transitions to docs during tests
tazlin May 10, 2025
a780dd0
feat/refactor: adds safety related classes; consts namespace changes
tazlin May 10, 2025
9948858
refactor: `generation_ids` to `result_ids` rename
tazlin May 12, 2025
53d7ee6
tests: identify http verbs not in SDK or swagger
tazlin Jun 8, 2025
0e28145
feat: supports user delete
tazlin Jun 8, 2025
51f2b53
feat: better gen/job handling; backend parsing and user API mapping u…
tazlin Nov 9, 2025
24f9032
refactor: better job+gen typing/design, class renames
tazlin Dec 24, 2025
497851d
tests: fix references to non-existent module
tazlin Dec 24, 2025
99833fd
refactor: lingering gen fixes; style: fix
tazlin Dec 24, 2025
517a6e8
fix: add+update docstrings for API models and requests
tazlin Dec 24, 2025
2d88b17
style/chore: fix, update linters, fix lingering static type bugs
tazlin Dec 24, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
31 changes: 17 additions & 14 deletions .github/workflows/maintests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,23 +19,26 @@ jobs:
build:
env:
AIWORKER_CACHE_HOME: ${{ github.workspace }}/.cache
TESTS_ONGOING: 1
HORDE_SDK_TESTING: 1
HORDE_MODEL_REFERENCE_MAKE_FOLDERS: 1
TESTS_ONGOING: "1"
AI_HORDE_TESTING: "1"
runs-on: ubuntu-latest
strategy:
matrix:
python: ["3.10", "3.11", "3.12", "3.13"]
python-version:
- "3.12"
- "3.13"

steps:
- uses: actions/checkout@v3
- name: Setup Python
uses: actions/setup-python@v4
- uses: actions/checkout@v4
- name: Install uv and set the python version
uses: astral-sh/setup-uv@v6
with:
python-version: ${{ matrix.python }}
- name: Install tox and any other packages
run: |
python -m pip install --upgrade pip
pip install --upgrade -r requirements.dev.txt
- name: Run unit tests
run: tox -e tests-no-api-calls
python-version: ${{ matrix.python-version }}
enable-cache: true

- name: Install the project
run: uv sync --locked --all-extras --dev


- name: Run tests
run: uv run pytest tests --ignore-glob='**/*api_calls*' -m "not api_side_ci"
32 changes: 17 additions & 15 deletions .github/workflows/prtests.yml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
name: Unstable Tests

on:
pull_request_target:
pull_request:
branches:
- main
types:
Expand All @@ -22,25 +22,27 @@ jobs:
build:
env:
AIWORKER_CACHE_HOME: ${{ github.workspace }}/.cache
TESTS_ONGOING: 1
HORDE_SDK_TESTING: 1
HORDE_MODEL_REFERENCE_MAKE_FOLDERS: 1
TESTS_ONGOING: "1"
AI_HORDE_TESTING: "1"
runs-on: ubuntu-latest
strategy:
matrix:
python: ["3.10", "3.11", "3.12", "3.13"]
python-version:
- "3.12"
- "3.13"

steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
with:
ref: ${{ github.event.pull_request.head.sha }}
- name: Setup Python
uses: actions/setup-python@v4
- name: Install uv and set the python version
uses: astral-sh/setup-uv@v6
with:
python-version: ${{ matrix.python }}
- name: Install tox and any other packages
run: |
python -m pip install --upgrade pip
pip install --upgrade -r requirements.dev.txt
- name: Run unit tests
run: tox -e tests-no-api-calls
python-version: ${{ matrix.python-version }}
enable-cache: true

- name: Install the project
run: uv sync --locked --all-extras --dev

- name: Run tests
run: uv run pytest tests --ignore-glob='**/*api_calls*' -m "not api_side_ci"
5 changes: 2 additions & 3 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -39,12 +39,11 @@ jobs:
run: echo "SETUPTOOLS_SCM_PRETEND_VERSION=${{ steps.release.outputs.version }}" >> $GITHUB_ENV

# We need python...
- name: "🐍 Set up Python 3.10"
- name: "🐍 Set up Python 3.13"
if: ${{ steps.release.outputs.version != '' }}
uses: actions/setup-python@v4
with:
python-version: "3.10"

python-version: "3.13"
# Install build deps
- name: "🛠 Install pypa/build"
if: ${{ steps.release.outputs.version != '' }}
Expand Down
6 changes: 6 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -155,3 +155,9 @@ tests/testing_result_images/*
workers.txt

ai_horde_codegen.py

.codiumai.toml

.venv-*
non_conforming_docstrings.json
missing_original_docstrings.json
3 changes: 3 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
[submodule "docs/haidra-assets"]
path = docs/haidra-assets
url = https://github.com/Haidra-Org/haidra-assets
20 changes: 12 additions & 8 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -1,33 +1,37 @@
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v5.0.0
rev: v6.0.0
hooks:
- id: check-yaml
exclude: ^mkdocs\.yml$
- id: end-of-file-fixer
- id: trailing-whitespace
- repo: https://github.com/psf/black
rev: 24.10.0
hooks:
- id: black
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.7.2
rev: v0.14.10
hooks:
- id: ruff
- id: ruff-check
- id: ruff-format
- repo: https://github.com/pre-commit/mirrors-mypy
rev: 'v1.13.0'
rev: v1.19.1
hooks:
- id: mypy
args: [., --strict, --ignore-missing-imports, --exclude=^codegen]
pass_filenames: false
additional_dependencies: [
pytest,
pydantic>=2.9.2,
logfire,
types-Pillow,
types-requests,
types-pytz,
types-setuptools,
types-urllib3,
types-aiofiles,
types-PyYAML,
StrEnum,
horde_model_reference>=2.0.0,
]
- repo: https://github.com/gauge-sh/tach-pre-commit
rev: v0.29.0
hooks:
- id: tach
4 changes: 4 additions & 0 deletions .readthedocs.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,10 @@
# Required
version: 2

submodules:
include: all
recursive: true

# Set the version of Python and other tools you might need
build:
os: ubuntu-22.04
Expand Down
144 changes: 110 additions & 34 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -1,56 +1,132 @@
# Contributing to horde_sdk

## Table of Contents

- [Contributing to horde\_sdk](#contributing-to-horde_sdk)
- [Table of Contents](#table-of-contents)
- [Environment Management](#environment-management)
- [First time setup](#first-time-setup)
- [Code Quality Tools](#code-quality-tools)
- [Code Style and System Design](#code-style-and-system-design)
- [Testing](#testing)
- [When the API adds an endpoint or changes a model](#when-the-api-adds-an-endpoint-or-changes-a-model)
- [Verifying the horde SDK API surface](#verifying-the-horde-sdk-api-surface)
- [New Features/Pull Requests/Working on issues](#new-featurespull-requestsworking-on-issues)
- [Pull Request Do's and Don'ts](#pull-request-dos-and-donts)
- [Do](#do)
- [Don't](#dont)
- [Before Requesting Review](#before-requesting-review)

## Environment Management

[uv](https://github.com/astral-sh/uv/) is the suggested python environment management tool.

### First time setup

- Install uv, as described [here](https://github.com/astral-sh/uv/#installation).
- `uv python install 3.10 3.11 3.12 3.13`
- `uv self update`
- `uv sync --all-groups`
- The `.venv/` directory will now be created with all project, development and documentation dependencies installed.
- Be sure to point your IDE to the python binary appropriate for your OS in this directory.

## Code Quality Tools

* [tox](https://tox.wiki/)
- Creates virtual environments for CI or local pytest runs.
- Note that the CI does not current execute calls to the production API by default.
- Run `tox list` or see `tox.ini` for more info
* [pre-commit](https://pre-commit.com/)
- Creates virtual environments for formatting and linting tools
- Run `pre-commit run --all-files` or see `.pre-commit-config.yaml` for more info.
* [black](https://github.com/psf/black)
- Whitespace formatter
* [ruff](https://github.com/astral-sh/ruff)
- Linting rules from a wide variety of selectable rule sets
- See `pyproject.toml` for the rules used.
- See all rules (but not necessarily used in the project) availible in rust [here](https://beta.ruff.rs/docs/rules/).
* [mypy](https://mypy-lang.org/)
- Static type safety
- I recommending using the [mypy daemon](https://mypy.readthedocs.io/en/stable/mypy_daemon.html) instead of periodically running `pre-commit` (or `mypy` directly.).
- If you are using VSCode, I recommend the `matangover.mypy` extension, which implements this nicely.
- [**tox**](https://tox.wiki/)
- Creates virtual environments for CI or local pytest runs.
- Note that the CI does not current execute calls to the production API by default.
- Run `tox list` or see `tox.ini` for more info
- [**pre-commit**](https://pre-commit.com/)
- Creates virtual environments for formatting and linting tools
- Run `pre-commit run --all-files` or see `.pre-commit-config.yaml` for more info.

## Things to know
> Note: Many of the tools below are run by `pre-commit` automatically, but can also be run manually if desired.

* The `AI_HORDE_DEV_URL` environment variable overrides `AI_HORDE_URL`. This is useful for testing changes locally.
* pytest files which end in `_api_calls.py` run last, and never run during the CI. It is currently incumbent on individual developers to confirm that these tests run successfully locally. In the future, part of the CI will be to spawn an AI-Horde and worker instances and test it there.
- [**black**](https://github.com/psf/black)
- Whitespace formatter/code style formatter
- Run with `black .`
- [**ruff**](https://github.com/astral-sh/ruff)
- Linting rules from a wide variety of selectable rule sets
- See `pyproject.toml` for the rules used.
- See all rules (but not necessarily used in the project) availible in rust [here](https://beta.ruff.rs/docs/rules/).
- Run with `ruff check .`
- Note: When using autofixing (`ruff check . --fix`), changes may be made that require running black, which can then result in needing to run `ruff check . --fix` again.
- Consider running `black . && ruff check . --fix && black . && ruff check . --fix` to avoid this.
- [**mypy**](https://mypy-lang.org/)
- Static type safety
- I recommending using the [mypy daemon](https://mypy.readthedocs.io/en/stable/mypy_daemon.html) instead of periodically running `pre-commit` (or `mypy` directly.).
- [**pyright**](https://github.com/microsoft/pyright)
- Shipped with vscode by default (via the python extension `ms-python.vscode-pylance`)
- Suggested settings:
- `"python.analysis.typeCheckingMode": "off"`
- The pylance extension has certain opinionated type checking assertions which are clash with mypy.
- For example, overriding an optional field to be non-optional is considered by pylance to be a type error due to the field being invariant and the parent class potentially settings it to `None`. However, by convention in the SDK, this is a forbidden pattern.
- `"python.analysis.languageServerMode": "full"`
- `"python.testing.pytestEnabled": true`
- [**tach**](https://github.com/gauge-sh/tach)
- Enforces internal namespace dependency constraints. This helps avoid circular dependencies and helps ensure implementations are in a logical place.

## Code Style and System Design

## Verifying the horde SDK API surface
See the [style guide in the docs folder](docs/concepts/style_guide.md) or go to the [same place in the horde_sdk documentation](https://horde-sdk.readthedocs.io/en/latest/) for more information on the code style requirements and design patterns used in the SDK.

You can run the following:
## Testing

```bash
pytest -m "object_verify"
```
- horde_sdk uses [pytest](https://docs.pytest.org/en/stable/) for testing.
- The `AI_HORDE_DEV_URL` environment variable overrides `AI_HORDE_URL`. This is useful for testing changes locally.
- pytest files which end in `_api_calls.py` run last, and never run during the CI. It is currently incumbent on individual developers to confirm that these tests run successfully locally. In the future, part of the CI will be to spawn an AI-Horde and worker instances and test it there.
- **_Rationale_**: Local runs of the test suite benefit from a way to avoid running tests dependent on a live API.

This will run the tests which validate the objects defined in the SDK are:
- In the appropriate place
- Match the live API (or if `AI_HORDE_DEV_URL` that version of the API)
- That the models are exposed via `__init__.py`
- And will run any other tests which ensure internal consistency.
- This generally does not include specific object validation beyond what can be automatically derived directly from the API docs or from general conventions from the SDK itself.
- If adding objects, you should add tests more specific to the expected functionality of that endpoint and the `object_verify` tests should only be treated as the bare-minimum.
### When the API adds an endpoint or changes a model

## When the API adds an endpoint or changes a model
With the top level directory (the one that contains `pyproject.toml`) as your working directory:

```bash
python horde_sdk/scripts/write_all_payload_examples_for_tests.py
python horde_sdk/scripts/write_all_response_examples_for_tests.py
python docs/build_docs.py
```
This will update the data found in `tests/test_data/` from the default horde URL, or if any of the override environment variables are set, from there.

This will update the data found in `tests/test_data/` from the default horde URL, or if any of the override environment variables are set, from there. This includes writing example payloads and responses extrapolated from the live APIs.

Running `build_docs.py` will update any automatically generated mkdocs documentation stubs or resources (such as the API Model <-> SDK Model map).

Be sure to run the test suite (without any `*_api_calls.py` tests) after. You may also may want to just start with `pytest -m "object_verify"` (see also the section on verifying the horde SDK API surface).

### Verifying the horde SDK API surface

You can run the following:

```bash
pytest -m "object_verify" -s
```

> Note: The `-s` flag is important as it allows you to see the output of the tests, which can be helpful for debugging. Often, the tests will also print out corrective actions to take if the tests fail.

## New Features/Pull Requests/Working on issues

The Horde ecosystem is a collaborative effort made possible through volunteer effort. We welcome all contributions and permission is not needed to work on issues or submit pull requests. However, if there is activity on an issue, you should consider reaching out to that person to coordinate efforts and avoid duplicate/conflicting work. Additionally, please considering commenting on an issue to let others know you are working on it.

### Pull Request Do's and Don'ts

#### Do

- Be bold in your contribution
- Ensure your code complies with the [code style and system design](#code-style-and-system-design) guidelines
- Open draft pull requests when you want early feedback on your approach
- Include clear descriptions of changes made and reasoning behind them
- Include tests for any new features or bug fixes
- Update documentation for new features or changes to existing functionality
- Use descriptive commit messages consistent with the project commit history, especially for medium-to-large changesets.
- While it is possible we will squash commits before merging, it is still helpful to have descriptive commit messages for review and opens the possibility of rebasing instead.

#### Don't

- Make large sweeping changes unrelated to your primary goal
- Include unnecessary changes like formatting or edits to unrelated files (open a separate PR for this)

### Before Requesting Review

- Ensure your PR is based on the latest `main` branch (rebase if out of date)
- Verify all tests and code quality checks pass against the intended API versions
- Double-check that all necessary documentation is updated, including docstrings and the relevant markdown files in the `docs` directory.
19 changes: 18 additions & 1 deletion docs/.pages
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,25 @@ nav:
- getting_started.md
- faq.md
- examples.md
- api_to_sdk_map.md
- Definitions: haidra-assets/docs/definitions
- AI-Horde:
- API Model to SDK Class Map: ai-horde/api_to_sdk_map
- AI Horde Request/Job Lifecycle: haidra-assets/docs/workers
- Kudos Explanation: haidra-assets/docs/kudos
- Motivations: haidra-assets/docs/why
- Workers:
- Generations: worker/generations
- Worker Loop Diagram: haidra-assets/docs/worker_loop
- SDK Development:
- Developer's Getting Started: developers.md
- CONTRIBUTING.md (github link): 'https://github.com/Haidra-Org/horde-sdk/blob/main/CONTRIBUTING.md'
- Style Guide: concepts/style_guide.md
- Package Structure: concepts/package_structure.md
- Definitions: definitions.md
- SDK Client Design: concepts/client_design
- Backend Values Mappers: concepts/backend_values_mappers
- horde_sdk

- GitHub Repo: 'https://github.com/Haidra-Org/horde-sdk'

order: desc
Loading
Loading