Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
d69f502
UPDATE code for TVPaint-12
rlahmidi Mar 12, 2025
9e282b7
CLEAN code and documentation
rlahmidi Apr 1, 2025
c70a54e
CLEAN code
rlahmidi May 2, 2025
276ec04
ADD search by regex in appropriate functions
rlahmidi Aug 19, 2025
4407261
ADD tv_panning layer function
rlahmidi Aug 19, 2025
2411678
ADD cut, copy and pan to Layer class
rlahmidi Aug 19, 2025
e805c68
ADD guidelines support and misc fixes/improvements
rlahmidi Jan 7, 2026
7053d17
UPDATE tvp parsing and misc bugs
rlahmidi Jan 28, 2026
d5d9650
ADD more support for guidelines
rlahmidi Feb 24, 2026
de0d294
HOTFIX GuidelineVanishPoint3 inheritance
rlahmidi Feb 24, 2026
2369b3f
UPDATE layer.render_instances sub render function
rlahmidi Mar 10, 2026
a45639d
UPDATE unit tests and clean code
rlahmidi Mar 24, 2026
2da263d
CLEAN code for ruff/mypy
rlahmidi Mar 24, 2026
c1da502
UPDATE documentation and pyproject.toml files
rlahmidi Apr 7, 2026
d10eed7
Merge branch 'main' into tvp12
rlahmidi Apr 7, 2026
84a757a
UPDATE doc build on commit/tag
rlahmidi Apr 9, 2026
cf5c6db
UPDATE docs ci to use zensical
rlahmidi Apr 9, 2026
4279946
UPDATE docs pyproject.toml and ci
rlahmidi Apr 9, 2026
bdf01b5
HOTFIX range issues with non-consecutive frame sets
rlahmidi Apr 9, 2026
d586495
HOTFIX parsing and output handling and tests
rlahmidi Apr 10, 2026
52a4acb
HOTFIX lint and type check issues
rlahmidi Apr 10, 2026
c065729
UPDATE doc and limitations.md
rlahmidi Apr 30, 2026
2e68a27
UPDATE RPC signals, timeout and retries setup
rlahmidi May 12, 2026
2977334
IMPROVE rpc connect and socket check
rlahmidi May 12, 2026
0b78eae
ADD CHANGELOG.md and changelog page in docs
rlahmidi May 13, 2026
20dbf19
CLEAN code
rlahmidi May 13, 2026
6c3ee1b
ADD changelog CI
rlahmidi May 13, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 8 additions & 11 deletions .github/workflows/check.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,27 +7,24 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- uses: actions/setup-python@v5
with:
python-version: 3.9
fetch-depth: 0

- name: Install Poetry Action
uses: snok/install-poetry@v1.3.4
- uses: actions/setup-python@v5
with:
version: 1.7.0
python-version: "3.9"

- name: Installing dependencies...
run: poetry install --no-interaction --with dev,test
- name: Install Hatch
uses: pypa/hatch@install

- name: Formatting check
if: always()
run: poetry run black --check .
run: hatch run dev:black --check .

- name: Linting
if: always()
run: poetry run ruff .
run: hatch run dev:ruff check .

- name: Type checking
if: always()
run: poetry run mypy .
run: hatch run dev:mypy .
46 changes: 31 additions & 15 deletions .github/workflows/docs-deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,14 @@ name: Publish documentation

on:
push:
# Trigger on all branches and all tags
branches:
- main
- "**"
tags:
- "*"
- "**"
pull_request:
branches:
- main

permissions:
contents: write
Expand All @@ -14,30 +18,42 @@ jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6
with:
fetch-depth: 0

- name: Configure Git Credentials
run: |
git config user.name github-actions[bot]
git config user.email 41898282+github-actions[bot]@users.noreply.github.com

- uses: actions/setup-python@v5
- uses: actions/setup-python@v6
with:
python-version: 3.9
python-version: "3.9"

- name: Install Poetry Action
uses: snok/install-poetry@v1.3.4
with:
version: 1.7.0
- name: Install Hatch
uses: pypa/hatch@install

- run: echo "cache_id=$(date --utc '+%V')" >> $GITHUB_ENV

- uses: actions/cache@v4
- uses: actions/cache@v5
with:
key: mkdocs-material-${{ env.cache_id }}
key: zensical-${{ env.cache_id }}
path: .cache
restore-keys: |
mkdocs-material-

- run: poetry install --no-interaction --with docs
- run: poetry run mkdocs gh-deploy --force
zensical-

# Test build docs on PRs
- name: Verify Docs Build (on Pull Requests)
if: github.event_name == 'pull_request'
run: hatch run docs:build

# Deploy dev documentation
- name: Deploy Branch Documentation
if: github.event_name == 'push' && !startsWith(github.ref, 'refs/tags/')
run: hatch run docs:deploy ${{ github.ref_name }}

# Deploy release documentation
- name: Deploy Release Documentation
if: startsWith(github.ref, 'refs/tags/')
run: hatch run docs:deploy ${{ github.ref_name }} latest
18 changes: 12 additions & 6 deletions .github/workflows/pypi.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,15 +9,21 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0

- uses: actions/setup-python@v5
with:
python-version: 3.9
python-version: "3.9"

- name: Install Poetry Action
uses: snok/install-poetry@v1.3.4
with:
version: 1.7.0
- name: Install Hatch
uses: pypa/hatch@install

- name: Build package
run: hatch build

- name: Publish to PyPi
run: poetry publish --build --username __token__ --password ${{ secrets.PYPI_TOKEN }}
env:
HATCH_INDEX_USER: __token__
HATCH_INDEX_AUTH: ${{ secrets.PYPI_TOKEN }}
run: hatch publish
62 changes: 62 additions & 0 deletions .github/workflows/update-changelog.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
name: Update Changelogs on Release

on:
release:
types: [published]

permissions:
contents: write

jobs:
append-release-notes:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v6
with:
fetch-depth: 0

- name: Process Release Metadata and Update Root Changelog
env:
RELEASE_TAG: ${{ github.event.release.tag_name }}
RELEASE_DATE: ${{ github.event.release.published_at }}
RELEASE_BODY: ${{ github.event.release.body }}
run: |
python3 -c '
import os
from pathlib import Path
from datetime import datetime

tag = os.environ.get("RELEASE_TAG", "Unversioned")
date_str = os.environ.get("RELEASE_DATE", "")
body = os.environ.get("RELEASE_BODY", "")

try:
date_obj = datetime.strptime(date_str, "%Y-%m-%dT%H:%M:%SZ")
formatted_date = date_obj.strftime("%Y-%m-%d")
except ValueError:
formatted_date = datetime.utcnow().strftime("%Y-%m-%d")

new_entry = f"## [{tag}] - {formatted_date}\n\n{body}\n\n---\n\n"

file_path = Path("CHANGELOG.md")
content = file_path.read_text()

# Inject the new entry precisely below the standardized header
insert_marker = "# Changelog\n\n"
new_content = content.replace(insert_marker, insert_marker + new_entry, 1)
content = file_path.write_text(new_content)
'

- name: Synchronize to Docs Directory
run: |
mkdir -p docs
cp CHANGELOG.md docs/changelog.md

- name: Commit and Push Changes
run: |
git config --local user.email "41898282+github-actions[bot]@users.noreply.github.com"
git config --local user.name "github-actions[bot]"
git add CHANGELOG.md docs/changelog.md

git diff --quiet && git diff --staged --quiet || (git commit -m "docs: append release notes for ${{ github.event.release.tag_name }}" && git push)
7 changes: 5 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ ENV/
env.bak/
venv.bak/

# mkdocs documentation
# zensical documentation
/site

# mypy
Expand All @@ -61,4 +61,7 @@ venv.bak/

.idea/
.pytest_cache/
.vscode
.vscode

# hatch version
pytvpaint/_version.py
98 changes: 98 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
# Changelog

## [1.0.2] - 2024-10-02
### Fixes
* FIX save_dependencies functions #14

---

## [1.0.1] - 2024-09-16
### Fixes
* HOTFIX tv_save_sequence range handling

---

## [1.0.0] - 2024-06-21
### Added
* Releasing first production version after successful use in projects at Brunch Studio

---

## [1.0.0b9] - 2024-05-28
### Fixes
* FIX tv_load_sequence/tv_load_image always stretching loaded media

### Features/Updates
* UPDATE default values for functions :
* grg_clip.tv_load_sequence
* grg_clip.tv_sound_clip_adjust
* grg_layer.tv_load_image
* grg_project.tv_load_project
* grg_project.tv_project_save_sequence
* grg_project.tv_frame_rate_project_set
* grg_project.tv_sound_project_adjust

---

## [1.0.0b8] - 2024-05-22
### Features/Updates
* UPDATE george.grg_clip.tv_clip_save_structure_json default values and param names

### Fixes
* FIX Layer.new_background_layer not working when providing an image to set

---

## [1.0.0b7] - 2024-04-30
### Features/Updates
* UPDATE clip json export to handle all options (fill_bakcground, all_images, etc...)
* [BREAKING CHANGES] UPDATE tv_clip_save_structure_json default values

---

## [1.0.0b6] - 2024-04-22
### Features/Updates
* Updated documentation
* Added new functions in Layer class : render and render_instances
* Clamp values for position to minimum 0
* Updated `get_` functions in classes to return None instead of raising an error when element not found
* Update tests
* [BREAKING CHANGES] Updated function signatures and default values for:
* Clip.load_media
* Clip.render
* Clip.export_json
* Clip.export_psd
* Clip.export_csv
* Clip.export_sprites
* Clip.export_flix
* Clip.set_layer_color
* Layer.render_frame
* Project.render
* Project.render_clips

### Fixes
* Fix layer position not setting position 0 correctly
* Fix mark_in/mark_out not set correctly

---

## [1.0.0b5] - 2024-04-02
### Fixes
* FIX client auto-connect not working properly
* FIX background colors set in Project class

---

## [1.0.0b4] - 2024-03-28
### Features/Updates
* Change `tv_background_set` George function signature to accepts a single color argument of type `tuple[RGBColor, RGBColor] | RGBColor | None` to be coherent with `tv_background_get`. #9

---

## [1.0.0b3] - 2024-03-27
### Added
* ADD background mode option in render functions
* UPDATE background mode and color functions in API

### Fixes
* FIX render context setting save mode instead of alpha mode
3 changes: 3 additions & 0 deletions docs/api/george/guideline.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# Guideline related George functions

::: pytvpaint.george.grg_guideline
3 changes: 3 additions & 0 deletions docs/api/objects/guideline.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# Guideline class

::: pytvpaint.guideline.Guideline
3 changes: 3 additions & 0 deletions docs/api/objects/guideline_animatorfield.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# GuidelineAnimatorField class

::: pytvpaint.guideline.GuidelineAnimatorField
3 changes: 3 additions & 0 deletions docs/api/objects/guideline_circle.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# GuidelineCircle class

::: pytvpaint.guideline.GuidelineCircle
3 changes: 3 additions & 0 deletions docs/api/objects/guideline_ellipse.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# GuidelineEllipse class

::: pytvpaint.guideline.GuidelineEllipse
3 changes: 3 additions & 0 deletions docs/api/objects/guideline_fieldchart.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# GuidelineFieldChart class

::: pytvpaint.guideline.GuidelineFieldChart
3 changes: 3 additions & 0 deletions docs/api/objects/guideline_grid.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# GuidelineGrid class

::: pytvpaint.guideline.GuidelineGrid
3 changes: 3 additions & 0 deletions docs/api/objects/guideline_image.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# GuidelineImage class

::: pytvpaint.guideline.GuidelineImage
3 changes: 3 additions & 0 deletions docs/api/objects/guideline_line.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# GuidelineImage class

::: pytvpaint.guideline.GuidelineLine
3 changes: 3 additions & 0 deletions docs/api/objects/guideline_marks.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# GuidelineMarks class

::: pytvpaint.guideline.GuidelineMarks
3 changes: 3 additions & 0 deletions docs/api/objects/guideline_safearea.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# GuidelineSafeArea class

::: pytvpaint.guideline.GuidelineSafeArea
3 changes: 3 additions & 0 deletions docs/api/objects/guideline_segment.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# GuidelineSegment class

::: pytvpaint.guideline.GuidelineSegment
3 changes: 3 additions & 0 deletions docs/api/objects/guideline_vanishpoint1.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# GuidelineVanishPoint1 class

::: pytvpaint.guideline.GuidelineVanishPoint1
3 changes: 3 additions & 0 deletions docs/api/objects/guideline_vanishpoint2.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# GuidelineVanishPoint2 class

::: pytvpaint.guideline.GuidelineVanishPoint2
3 changes: 3 additions & 0 deletions docs/api/objects/guideline_vanishpoint3.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# GuidelineVanishPoint3 class

::: pytvpaint.guideline.GuidelineVanishPoint3
Loading
Loading