Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
60 commits
Select commit Hold shift + click to select a range
cd4b8b9
remove the forced installation of pytest plugin
Ichunjo Aug 11, 2025
c2bde81
bump deps
Ichunjo Aug 11, 2025
34b234f
add missing typing
Ichunjo Nov 29, 2025
ebf123c
add vs stubs
Ichunjo Dec 6, 2025
cf2efd5
fix unified typing
Ichunjo Dec 6, 2025
ccef8b6
use logger.warning
Ichunjo Dec 6, 2025
b2dd354
fix EnvironmentStore typing
Ichunjo Dec 6, 2025
93a69eb
render: fix type hint
Ichunjo Dec 6, 2025
c181c63
Iterable -> Iterator
Ichunjo Dec 6, 2025
cdae5b3
add pytest
Ichunjo Dec 6, 2025
623f92b
format tests
Ichunjo Dec 6, 2025
5ddc244
more typing schizo fixes
Ichunjo Dec 6, 2025
6427161
refactor(vpy): overhaul script loading api and types
Ichunjo Dec 11, 2025
23be417
refactor(vpy): generalize module parameter and improve typing
Ichunjo Dec 11, 2025
57f8ad5
add Jaded-Encoding-Thaumaturgy to copyright headers
Ichunjo Dec 11, 2025
2076268
_nodes: fix typing
Ichunjo Dec 11, 2025
f6b3e89
ignore .vsjet folder
Ichunjo Dec 11, 2025
d3b4212
kill None
Ichunjo Dec 11, 2025
030cf86
move test_utils
Ichunjo Dec 11, 2025
58c8ffa
delete convert.py & wrap_variable_size
Ichunjo Dec 11, 2025
bf7f057
improve readability
Ichunjo Dec 11, 2025
fd1ab10
adapters: add jet copyright
Ichunjo Dec 11, 2025
16c7808
improve docstrings
Ichunjo Dec 11, 2025
c9722c9
_hospice.py: lower logger level
Ichunjo Dec 11, 2025
0007bc9
cosmetics
Ichunjo Dec 11, 2025
5d0272f
Policy: pass flags creation
Ichunjo Dec 13, 2025
506a7d8
ManagedEnvironment.outputs: return correct type
Ichunjo Dec 13, 2025
d2dd655
update logging messages
Ichunjo Dec 13, 2025
b76a3df
futures: update UnifiedFuture context manager type hints
Ichunjo Dec 16, 2025
202691a
rename load_file to load_script
Ichunjo Dec 19, 2025
30662fb
return module globals on script completion
Ichunjo Dec 19, 2025
5937f13
improve get_variable type hints with overloads
Ichunjo Dec 19, 2025
69c5a55
return self from ManagedScript.__enter__
Ichunjo Dec 19, 2025
f111a96
add docstrings to script execution classes
Ichunjo Dec 19, 2025
f4137a0
fix typo
Ichunjo Dec 19, 2025
1e9e712
return execution result from blocking call
Ichunjo Dec 23, 2025
cd5261d
remove return value from _run_inline
Ichunjo Dec 23, 2025
8a3b2e5
make script execution return None
Ichunjo Dec 23, 2025
0f83fe4
unify script classes and rename exception
Ichunjo Dec 24, 2025
44b3bc2
allow passing arguments to compile in load_code
Ichunjo Dec 24, 2025
af5cbe0
prevent unnecessary module creation when loading from Script object
Ichunjo Dec 24, 2025
d84fa8a
remove curio reference from docstring
Ichunjo Dec 24, 2025
21340b4
make EventLoop base class abstract
Ichunjo Dec 24, 2025
3f5ea53
make current_loop global internal
Ichunjo Dec 24, 2025
2d0e7c2
adapters: improve typing and standardize to_thread
Ichunjo Dec 24, 2025
123de26
remove nix stuff
Ichunjo Dec 24, 2025
801a8ea
remove test plugins
Ichunjo Dec 24, 2025
8549e3a
update deps & stubs
Ichunjo Dec 24, 2025
0491338
build: migrate to hatchling and overhaul config
Ichunjo Dec 25, 2025
f5884de
hospice: explain refcount threshold logic
Ichunjo Dec 25, 2025
6b1fbad
expose submodules
Ichunjo Dec 25, 2025
71cd412
test: remove conversion tests and test wrappers
Ichunjo Dec 25, 2025
3faf218
test: remove obsolete vapoursynth core fixtures
Ichunjo Dec 25, 2025
130d9c8
test: migrate suite to pytest and add type hints
Ichunjo Dec 25, 2025
ea25d26
test: migrate loop adapter tests to pytest and add type hints
Ichunjo Dec 25, 2025
68a843c
test: fix type inference for generator helper
Ichunjo Dec 25, 2025
aa2ca28
test: migrate hospice tests to pytest and add types
Ichunjo Dec 25, 2025
eda8146
add ci tests
Ichunjo Dec 25, 2025
d096510
fix lint
Ichunjo Dec 25, 2025
f138eaf
use future annotations
Ichunjo Dec 25, 2025
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
8 changes: 0 additions & 8 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -1,16 +1,8 @@
root = true

[*]
end_of_line = lf
insert_final_newline = true

[*.{py,pyi,nix}]
charset = utf-8

[*.{py,pyi}]
indent_style = space
indent_size = 4

[*.nix]
indent_size = space
indent_size = 2
57 changes: 57 additions & 0 deletions .github/workflows/lint.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
name: Lint

on:
workflow_dispatch:
push:
branches:
- main
pull_request:

permissions:
contents: read

env:
PYTHON_VERSION: 3.14

jobs:
ruff:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v6

- name: Set up uv
uses: astral-sh/setup-uv@v7
with:
python-version: ${{ env.PYTHON_VERSION }}
enable-cache: true

- name: Install dependencies
run: |
uv sync --locked --all-extras --no-install-package vapoursynth

- name: Run Ruff check
id: ruff-check
run: uv run --no-sync ruff check .

- name: Run Ruff format
if: success() || (failure() && steps.ruff-check.conclusion == 'failure')
run: uv run --no-sync ruff format --check --diff

mypy:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v6

- name: Set up uv
uses: astral-sh/setup-uv@v7
with:
python-version: ${{ env.PYTHON_VERSION }}
enable-cache: true

- name: Install dependencies
run: uv sync --locked --all-extras --no-install-package vapoursynth

- name: Running mypy
run: uv run --no-sync mypy .
136 changes: 0 additions & 136 deletions .github/workflows/linux.yml

This file was deleted.

63 changes: 63 additions & 0 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
name: Tests

on:
workflow_dispatch:
push:
branches:
- main
pull_request:

permissions:
contents: read

jobs:
test:
name: Test (Python ${{ matrix.python-version }}, VS ${{ matrix.vapoursynth-version }})
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
vapoursynth-version: [69, 70, 71, 72, 73]
python-version: ["3.12", "3.13", "3.14"]

steps:
- name: Checkout repository
uses: actions/checkout@v6

- name: Set up uv
uses: astral-sh/setup-uv@v7
with:
python-version: ${{ matrix.python-version }}
enable-cache: true

- name: Set up VapourSynth ${{ matrix.vapoursynth-version }}
uses: Jaded-Encoding-Thaumaturgy/setup-vapoursynth@v1
with:
vapoursynth-version: ${{ matrix.vapoursynth-version }}
python-version: ${{ matrix.python-version }}

- name: Install dependencies
run: uv sync --all-extras --locked

- name: Run tests with coverage
run: uv run pytest tests --cov=vsengine --cov-report=xml

- name: Upload coverage to coveralls
uses: coverallsapp/github-action@v2.3.7
with:
file: coverage.xml
format: cobertura
parallel: true
flag-name: ${{ join(matrix.*, ' - ') }}
fail-on-error: false

coverage-finished:
name: Coverage Finished
needs: test
runs-on: ubuntu-latest
steps:
- name: Upload coverage to Coveralls (finish)
uses: coverallsapp/github-action@v2.3.7
with:
parallel-finished: true
fail-on-error: false
6 changes: 6 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -164,3 +164,9 @@ cython_debug/
result
result-*
!nix/lib/

# vsjet folder
.vsjet

# versioningit
vsengine/_version.py
52 changes: 7 additions & 45 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,22 +1,17 @@
vs-engine
=========
# vs-engine

An engine for vapoursynth previewers, renderers and script analyis tools.

Installing
----------
## Installation

```
pip install vsengine
```
pip install vsengine-jet
```

The latest development version can be downloaded from the github-actions tab.
Install the included .whl-file.

Using vsengine
--------------
## Using vsengine

Look at this example:

```py
import vapoursynth as vs
from vsengine.vpy import script
Expand All @@ -25,41 +20,8 @@ script("/script/to/my.vpy").result()
vs.get_output(0).output()
```

Development
-----------

Install the dependencies listed in `pyproject.toml` as well as `flit`.

For convenience,
the included nix-flake contains dev-shells with different python and vapoursynth versions preconfigured.

Running Tests
-------------

You can run tests with this command:

```
python -m unittest discover -s ./tests
```

For users with Nix installed,
the included flake contains tests for specific vs and python versions.
These can be run by running `nix flake check`.

Contributing
------------

Users might want to bring their own versions of vapoursynth related plugins and libraries.
Depending on any of them would thus be of disservice to the user.
This is the reason why depending on any plugin or library is banned in this project.
The only exception is when this dependency is optional,
meaning that the feature in question does not lose any functionality when the dependency is missing.
In any case,
the addition of new dependencies (optional or otherwise) must be coordinated with the maintainer prior to filing a PR.
## Contributing

This project is licensed under the EUPL-1.2.
When contributing to this project you accept that your code will be using this license.
By contributing you also accept any relicencing to newer versions of the EUPL at a later point in time.

Your commits have to be signed with a key registered with GitHub.com at the time of the merge.

Loading