Compare commits

..

4 Commits

Author SHA1 Message Date
a912e1b6bf [+] update http_server
1. remove ping dependency;
2025-04-19 18:10:07 +03:00
fdcd67aae6 [+] implement interfaces_index 2025-04-18 16:38:36 +03:00
799280f074 [+] add interfaces_index 2025-04-18 16:30:10 +03:00
202bf85f55 [+] partially wrap ip addr 2025-04-17 12:11:18 +03:00
9 changed files with 62 additions and 58 deletions

@ -1 +1 @@
Subproject commit adef10a8c41f5c550622879370a40f8a9e545574
Subproject commit e52e1c22071d49ff23768dfefd1b33b94552ff6d

@ -1 +1 @@
Subproject commit 3c691ef68d8899edf328d5b06135c0d3b02e7940
Subproject commit f2366f328fb8129fa6ae26d00b421025d2f090c7

@ -1158,6 +1158,7 @@ done'
)
def http_server(argv):
from .commands_typed import os as commands_os
assert isinstance(argv, list) and all([isinstance(o, str) for o in argv])
parser = optparse.OptionParser()
parser.add_option(
@ -1215,10 +1216,17 @@ def http_server(argv):
try:
assert not socket.inet_aton(options.host) is None
subprocess.check_call([
'ping', '-w', '1',
options.host
])
# subprocess.check_call([
# 'ping', '-w', '1',
# options.host
# ])
assert options.host in sum([
[
o2.local
for o2 in o.addr_info
]
for o in commands_os.interfaces_index()
], [])
except Exception:
raise RuntimeError('invalid ip address %s' % options.host)

@ -65,42 +65,6 @@ class CLI(abc.ABC):
argv,
)
def ruff(
self,
project_name: str,
argv: list[str],
) -> None:
project = self.projects[project_name]
if len(argv) == 0:
argv = ['check', '.',]
subprocess.check_call([
self.dist_settings.python_path,
'-m',
'ruff',
'--config', str(project.source_dir / 'pyproject.toml'),
*argv,
])
def pyright(
self,
project_name: str,
argv: list[str],
) -> None:
project = self.projects[project_name]
if len(argv) == 0:
argv = ['--threads', '3', '.']
subprocess.check_call([
self.dist_settings.python_path,
'-m',
'pyright',
'-p', str(project.source_dir / 'pyproject.toml'),
*argv,
])
def pip_sync(
self,
project: str,
@ -302,16 +266,15 @@ class CLI(abc.ABC):
env=dict(list(os.environ.items())) | env,
)
if not project.meson_path is None:
if tests:
subprocess.check_call(
[
'ninja',
'-C',
str(project.build_dir / 'pyproject'),
'test',
]
)
if tests:
subprocess.check_call(
[
'ninja',
'-C',
str(project.build_dir / 'pyproject'),
'test',
]
)
def meson_install(
self,

@ -1,14 +1,17 @@
import shutil
import glob
import subprocess
import pydantic
import pathlib
import ctypes
import os
import sys
import logging
import dataclasses
logger = logging.getLogger(__name__)
from typing import (overload, Optional, Literal,)
from typing import (overload, Optional, Literal, Any, Annotated,)
from .cli_bootstrap import PyProject
@ -89,4 +92,31 @@ def runtime_libdirs_init(
ctypes.cdll.LoadLibrary(preload_found)
else:
raise NotImplementedError
raise NotImplementedError
class interfaces_index_t:
@dataclasses.dataclass
class Interface:
@dataclasses.dataclass
class AddrInfo:
family: str
local: str
name: Annotated[
str,
pydantic.Field(
alias='ifname',
)
]
addr_info: list[AddrInfo]
def interfaces_index() -> list[interfaces_index_t.Interface]:
res = pydantic.RootModel[
list[interfaces_index_t.Interface]
].model_validate_json(
subprocess.check_output([
'ip', '-j', 'addr',
]).decode('utf-8')
).root
return res

@ -1,6 +1,6 @@
[project]
name = 'online.fxreader.pr34'
version = '0.1.5.11'
version = '0.1.5.9+27.2'
dependencies = [
#"-r requirements.txt",

Binary file not shown.

Binary file not shown.

Binary file not shown.