Skip to content

Commit

Permalink
Merge pull request #292 from vkottler/dev/5.8.2
Browse files Browse the repository at this point in the history
5.8.2 - Expose port mapping to app info
  • Loading branch information
vkottler authored Nov 23, 2024
2 parents cb37739 + 5d51481 commit cce5b35
Show file tree
Hide file tree
Showing 8 changed files with 21 additions and 13 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/python-package.yml
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ jobs:
- run: |
mk python-release owner=vkottler \
repo=runtimepy version=5.8.1
repo=runtimepy version=5.8.2
if: |
matrix.python-version == '3.12'
&& matrix.system == 'ubuntu-latest'
Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,11 @@
=====================================
generator=datazen
version=3.1.4
hash=de150fbd8ea83f317f485e01380215e6
hash=f08f284eec5884d8657cdaf9e4105284
=====================================
-->

# runtimepy ([5.8.1](https://pypi.org/project/runtimepy/))
# runtimepy ([5.8.2](https://pypi.org/project/runtimepy/))

[![python](https://img.shields.io/pypi/pyversions/runtimepy.svg)](https://pypi.org/project/runtimepy/)
![Build Status](https://github.com/vkottler/runtimepy/workflows/Python%20Package/badge.svg)
Expand Down
2 changes: 1 addition & 1 deletion local/variables/package.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
major: 5
minor: 8
patch: 1
patch: 2
entry: runtimepy
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta:__legacy__"

[project]
name = "runtimepy"
version = "5.8.1"
version = "5.8.2"
description = "A framework for implementing Python services."
readme = "README.md"
requires-python = ">=3.12"
Expand Down
4 changes: 2 additions & 2 deletions runtimepy/__init__.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# =====================================
# generator=datazen
# version=3.1.4
# hash=50f22b2d623cea7b3ea3eaf94b419b39
# hash=2ba96609ce56b23f10e95e08eb767442
# =====================================

"""
Expand All @@ -10,7 +10,7 @@

DESCRIPTION = "A framework for implementing Python services."
PKG_NAME = "runtimepy"
VERSION = "5.8.1"
VERSION = "5.8.2"

# runtimepy-specific content.
METRICS_NAME = "metrics"
Expand Down
4 changes: 4 additions & 0 deletions runtimepy/net/arbiter/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -142,6 +142,9 @@ def __init__(
self._servers: list[_asyncio.Task[None]] = []
self._servers_started = _asyncio.Semaphore(0)

# A copy of named port mappings (loaded via external config).
self._ports: dict[str, int] = {}

self._init()

def _init(self) -> None:
Expand Down Expand Up @@ -285,6 +288,7 @@ async def _main(
self._namespace,
self.stop_sig,
config if config is not None else self._config,
self._ports,
self,
tasks, # type: ignore
self.task_manager,
Expand Down
14 changes: 8 additions & 6 deletions runtimepy/net/arbiter/config/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -139,6 +139,8 @@ async def process_config(

names = set()

self._ports = config.ports

# Registier factories.
for factory in config.factories:
name = factory["name"]
Expand All @@ -151,7 +153,7 @@ async def process_config(
*factory.get("namespaces", []),
**dict_resolve_env_vars(
factory.get("kwargs", {}),
env=config.ports, # type: ignore
env=self._ports, # type: ignore
),
), f"Couldn't register factory '{factory}'!"
names.add(name)
Expand All @@ -163,17 +165,17 @@ async def process_config(

# Resolve any port variables that may have been used.
args = list_resolve_env_vars(
client.get("args", []), env=config.ports # type: ignore
client.get("args", []), env=self._ports # type: ignore
)
kwargs = dict_resolve_env_vars(
client.get("kwargs", {}), env=config.ports # type: ignore
client.get("kwargs", {}), env=self._ports # type: ignore
)
kwargs.setdefault("markdown", client.get("markdown"))

assert await self.factory_client(
factory,
name,
*fix_args(args, config.ports),
*fix_args(args, self._ports),
defer=client["defer"],
# Perform some known fixes for common keyword arguments.
**fix_kwargs(kwargs),
Expand All @@ -186,10 +188,10 @@ async def process_config(
assert await self.factory_server(
factory,
*list_resolve_env_vars(
server.get("args", []), env=config.ports # type: ignore
server.get("args", []), env=self._ports # type: ignore
),
**dict_resolve_env_vars(
server.get("kwargs", {}), env=config.ports # type: ignore
server.get("kwargs", {}), env=self._ports # type: ignore
),
), f"Couldn't register a '{factory}' server!"

Expand Down
2 changes: 2 additions & 0 deletions runtimepy/net/arbiter/info.py
Original file line number Diff line number Diff line change
Expand Up @@ -160,6 +160,7 @@ class AppInfo(_LoggerMixin):

# Configuration data that may be specified in a configuration file.
config: _JsonObject
ports: dict[str, int]

tui: TuiMixin

Expand All @@ -186,6 +187,7 @@ def with_new_logger(self, name: str) -> "AppInfo":
self.names,
self.stop,
self.config,
self.ports,
self.tui,
self.tasks,
self.task_manager,
Expand Down

0 comments on commit cce5b35

Please sign in to comment.