Skip to content
Merged

Dev #94

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: 1 addition & 0 deletions MANIFEST.in
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
recursive-include summoner *.css *.js
12 changes: 1 addition & 11 deletions pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,13 +1,3 @@
[build-system]
requires = ["setuptools>=62.3.0", "wheel"]
requires = ["setuptools", "wheel"]
build-backend = "setuptools.build_meta"

[project]
name = "summoner"
dynamic = ["version"]

[tool.setuptools.dynamic]
version = { attr = "summoner.client.client.SummonerClient.core_version" }

[tool.setuptools.package-data]
"*" = ["**/*.css", "**/*.js"]
7 changes: 6 additions & 1 deletion setup.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,13 @@
from setuptools import setup, find_packages

# Read version without importing the package (safe for builds)
version_ns = {}
with open("summoner/_version.py", encoding="utf-8") as f:
exec(f.read(), version_ns)

setup(
name="summoner",
version="0.1.0",
version=version_ns["__version__"],
description="Summoner's core SDK",
author="Remy Tuyeras",
author_email="rtuyeras@summoner.org",
Expand Down
1 change: 0 additions & 1 deletion summoner/__init__.py
Original file line number Diff line number Diff line change
@@ -1 +0,0 @@
__version__ = "0.1.0"
1 change: 1 addition & 0 deletions summoner/_version.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
__version__ = "1.1.1"
4 changes: 3 additions & 1 deletion summoner/client/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,8 @@
RelayedMessage
)

from summoner._version import __version__ as core_version

class ServerDisconnected(Exception):
"""Raised when the server closes the connection."""
pass
Expand All @@ -74,7 +76,7 @@ class SummonerClient:
DEFAULT_EVENT_BRIDGE_SIZE = 1000
DEFAULT_MAX_CONSECUTIVE_ERRORS = 3 # Failed attempts to send before disconnecting

core_version = "1.1.1"
core_version = core_version

def __init__(self, name: Optional[str] = None):

Expand Down
15 changes: 9 additions & 6 deletions summoner/protocol/payload.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,10 @@
ensure_trailing_newline,
)

# Current envelope version
WRAPPER_VERSION = "0.0.1"
from summoner._version import __version__ as core_version

# Default envelope version
DEFAULT_VERSION = "0.0.1"

# Registries for versioned parsers and casters
envelope_parsers: Dict[str, Any] = {}
Expand Down Expand Up @@ -156,12 +158,13 @@ def cast_v0_0_1(val: Any, expected: Any) -> Any:
register_envelope_version("1.0.0", parse_v0_0_1, cast_v0_0_1)
register_envelope_version("1.0.1", parse_v0_0_1, cast_v0_0_1)
register_envelope_version("1.1.0", parse_v0_0_1, cast_v0_0_1)
register_envelope_version("1.1.1", parse_v0_0_1, cast_v0_0_1)
# register_envelope_version("1.1.1", parse_v0_0_1, cast_v0_0_1)
register_envelope_version(core_version, parse_v0_0_1, cast_v0_0_1)


def wrap_with_types(
payload: Any,
version: str = WRAPPER_VERSION
version: str = DEFAULT_VERSION
) -> str:
"""
Wrap `payload` in a self-describing JSON envelope with type metadata.
Expand All @@ -173,7 +176,7 @@ def wrap_with_types(

Args:
payload: Any JSON-serializable object (dict, list, primitive).
version: Version string for the envelope format (defaults to WRAPPER_VERSION).
version: Version string for the envelope format (defaults to DEFAULT_VERSION).

Returns:
A JSON string representing the typed envelope.
Expand Down Expand Up @@ -266,7 +269,7 @@ def recover_with_types(text: str) -> RelayedMessage:

# 4) We have the versioned envelope—now look up the correct caster
version = content["_version"]
caster = envelope_casters.get(version, envelope_casters[WRAPPER_VERSION])
caster = envelope_casters.get(version, envelope_casters[DEFAULT_VERSION])
if caster is None:
# Unknown version: hard error so we don't silently mis-interpret data
raise ValueError(f"Unsupported wrapper version: {version}")
Expand Down