Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
1 change: 0 additions & 1 deletion .flake8
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ exclude =
env,
gen_resources,
build,
extend-ignore=F401,E704,E226

# Allow assigning lambdas in tests
per-file-ignores =
Expand Down
54 changes: 43 additions & 11 deletions pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,25 +1,40 @@
[build-system]
requires = ["setuptools>=42", "wheel", "setuptools-scm"]
requires = ["setuptools>=61", "wheel", "setuptools-scm"]
build-backend = "setuptools.build_meta"

[project]
name = "spellbind"
dynamic = ["version"]
description = "A library which provides observable values to which other values can be bound"
readme = "README.md"
license = {file = "LICENSE"}
authors = [
{name = "Georg Plaz", email = "georg.plaz@gmail.com"},
]
description = "A library which provides observable values to which other values can be bound"
requires-python = ">=3.10"
license = {file = "LICENSE"}

[tool.pytest.ini_options]
minversion = "6.0"
addopts = "--strict-markers"
testpaths = [
"tests",
keywords = [
"reactive", "programming", "computed", "derived",
"values", "variables", "data-binding",
"observable", "events", "event-driven"
]
[tool.coverage.run]
source = ["src"]
classifiers = [
"Development Status :: 4 - Beta",
"Intended Audience :: Developers",
"License :: OSI Approved :: MIT License",
"Operating System :: OS Independent",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.12",
"Topic :: Software Development :: Libraries",
"Topic :: Software Development :: Libraries :: Python Modules",
"Typing :: Typed",
]

[project.urls]
Homepage = "https://github.com/FancyNeuron/spellbind"
Repository = "https://github.com/FancyNeuron/spellbind"
Issues = "https://github.com/FancyNeuron/spellbind/issues"
Documentation = "https://github.com/FancyNeuron/spellbind#readme"

[project.optional-dependencies]
testing = [
Expand All @@ -28,3 +43,20 @@ testing = [
"flake8",
"mypy",
]


[tool.setuptools.packages.find]
where = ["src"]

[tool.setuptools.package-data]
spellbind = ["py.typed"]

[tool.setuptools_scm]

[tool.pytest.ini_options]
minversion = "6.0"
addopts = "--strict-markers"
testpaths = ["tests"]

[tool.coverage.run]
source = ["src"]
2 changes: 1 addition & 1 deletion src/spellbind/bool_values.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

from abc import ABC

from spellbind.values import Value, DerivedValue, _S, _T, Constant
from spellbind.values import Value, DerivedValue, Constant


class BoolValue(Value[bool], ABC):
Expand Down
6 changes: 1 addition & 5 deletions src/spellbind/float_values.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,7 @@
from typing import Generic, Callable, Sequence, TypeVar

from spellbind.bool_values import BoolValue
from spellbind.event import ValueEvent
from spellbind.observables import Observer, ValueObserver

from spellbind.values import Value, CombinedMixedValues, SimpleVariable, CombinedTwoValues, _create_value_getter, \
DerivedValue, DerivedValueBase, Constant
from spellbind.values import Value, SimpleVariable, DerivedValue, DerivedValueBase, Constant

FloatLike = int | Value[int] | float | Value[float]

Expand Down
2 changes: 1 addition & 1 deletion src/spellbind/values.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from __future__ import annotations

from abc import ABC, abstractmethod
from typing import TypeVar, Generic, Optional, Any, Iterable, TYPE_CHECKING, Sequence, Callable
from typing import TypeVar, Generic, Optional, Any, Iterable, TYPE_CHECKING, Callable

from spellbind.event import ValueEvent
from spellbind.observables import ValueObservable, Observer, ValueObserver
Expand Down
7 changes: 4 additions & 3 deletions tests/test_events/test_tri_events.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
import pytest
from spellbind.event import TriEvent

from conftest import NoParametersObserver, OneParameterObserver, OneDefaultParameterObserver, \
OneRequiredOneDefaultParameterObserver, TwoParametersObserver, TwoDefaultParametersObserver, \
ThreeParametersObserver, ThreeDefaultParametersObserver, TwoRequiredOneDefaultParameterObserver
OneRequiredOneDefaultParameterObserver, TwoParametersObserver, ThreeParametersObserver, \
TwoRequiredOneDefaultParameterObserver
from spellbind.event import TriEvent


def test_tri_event_observe_no_parameters_mock_observer():
Expand Down
2 changes: 1 addition & 1 deletion tests/test_events/test_tri_events_weak_observe.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
import pytest

from conftest import NoParametersObserver, OneParameterObserver, OneDefaultParameterObserver, \
OneRequiredOneDefaultParameterObserver, TwoParametersObserver, TwoDefaultParametersObserver, \
OneRequiredOneDefaultParameterObserver, TwoParametersObserver, \
ThreeParametersObserver, ThreeDefaultParametersObserver, TwoRequiredOneDefaultParameterObserver
from spellbind.event import TriEvent

Expand Down
4 changes: 2 additions & 2 deletions tests/test_version.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,6 @@ def test_version_exists():

def test_version_format():
version = spellbind.__version__
# Should be semver-like: 0.1.0, 0.1.0.dev1+g123abc.d20250609, etc.
pattern = r'^\d+\.\d+\.\d+(?:\.dev\d+\+g[a-f0-9]+(?:\.d\d{8})?)?$'
# Should be semver-like: 0.1.0, 0.1.dev1+g123abc, 0.1.0.dev1+g123abc.d20250609, etc.
pattern = r'^\d+\.\d+(?:\.\d+)?(?:\.dev\d+\+g[a-f0-9]+(?:\.d\d{8})?)?$'
assert re.match(pattern, version), f"Version '{version}' doesn't match expected format"