Skip to content

Add standardized core API, more Uthana features, CI release/tagging system#1

Merged
brandonscript merged 15 commits intomainfrom
feat/add-new-capabilities
Mar 31, 2026
Merged

Add standardized core API, more Uthana features, CI release/tagging system#1
brandonscript merged 15 commits intomainfrom
feat/add-new-capabilities

Conversation

@brandonscript
Copy link
Copy Markdown
Collaborator

@brandonscript brandonscript commented Mar 6, 2026

Summary of changes:

  • Async-first API: Async methods are now the default; sync variants use a _sync suffix (e.g. create_sync, get_sync).
  • Optional model: model is an optional kwarg for TTM, VTM, and stitch; defaults from models.ini when omitted or "auto".
  • Refactor: separate files to manage separation of concerns a little better.
  • Strong typing: return TypedDict wherever possible that matches graphql schema.
  • domain parameter: Replaced staging=True with domain= for a configurable API host.
  • UthanaCharacters: Renamed from DefaultCharacters.
  • Docstrings: Added docstrings for dataclasses, public functions, and internal methods.
  • README: Reorganized (Install → API key → Quick start), added Context7, API docs links, Support section, and Custom domain section.
  • CI pipeline: Automatically creates releases from version tags.
  • Version: 1.1.0-rc.0

Comment thread src/uthana/modules/motions.py Outdated
)
)

async def download_preview(self, character_id: str, motion_id: str) -> bytes:
Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Important note: moved this from character.py to here, it didn't make sense on character.py

@brandonscript brandonscript marked this pull request as ready for review March 12, 2026 20:27
- name: Build package
run: uv build

- name: Publish to PyPI
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Uh, how do I trigger this? Where do I put the PYPI token?

Comment thread scripts/release.py Outdated
@@ -0,0 +1,196 @@
#!/usr/bin/env python3
"""Release helper for SemVer tags and version synchronization."""
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we really need all this? When should this be run? What are the arguments?

Comment thread src/uthana/modules/characters.py Outdated
"""Character management: upload, list, download, generate previews, rename, and delete."""

@overload
async def create(
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

IMHO, this method literal, should just be baked into the method name. i.e. create_from_file, create_from_image, create_from_prompt.

Comment thread src/uthana/types.py
@@ -0,0 +1,171 @@
# (c) Copyright 2026 Uthana, Inc. All Rights Reserved
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What is the empty py.typed file used for? Does it need to be checked in?

@brandonscript brandonscript changed the title Add more core features, improve readme, automatic CI release/tagging system Add standardized core API, more Uthana features, CI release/tagging system Mar 31, 2026
@brandonscript brandonscript merged commit b6798ed into main Mar 31, 2026
1 check passed
@brandonscript brandonscript deleted the feat/add-new-capabilities branch March 31, 2026 16:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants