Compare commits
26 Commits
master
...
27-multipl
Author | SHA1 | Date | |
---|---|---|---|
1e73d19122 | |||
91dbbde50d | |||
3b90dbb347 | |||
62a21cc6a0 | |||
fc10601632 | |||
4474e08e10 | |||
520ea4211a | |||
20a4570484 | |||
49119673d2 | |||
fa09245da6 | |||
fbe6fb01cb | |||
15ab55e370 | |||
bab76643f2 | |||
a7d68110c8 | |||
e0843e8496 | |||
a7c192a51e | |||
8c971fb518 | |||
0a0e8c7079 | |||
c720465c59 | |||
79f6d3544c | |||
772279b5d5 | |||
66e32b4fc9 | |||
b4199d3faa | |||
4d10656e0a | |||
b46571b198 | |||
6bf0555e2c |
@ -5,9 +5,13 @@ ar = 'emar'
|
||||
windres = '/usr/bin/false'
|
||||
; exe_wrapper = '/usr/bin/false'
|
||||
exe_wrapper = 'node'
|
||||
pkg-config = 'pkg-config'
|
||||
|
||||
[host_machine]
|
||||
system = 'linux'
|
||||
cpu_family = 'x86_64'
|
||||
cpu = 'x86_64'
|
||||
endian = 'little'
|
||||
|
||||
[properties]
|
||||
needs_exe_wrapper = true
|
||||
|
@ -12,6 +12,10 @@ import dataclasses
|
||||
|
||||
from typing import (
|
||||
Optional,
|
||||
# override,
|
||||
)
|
||||
|
||||
from typing_extensions import (
|
||||
override,
|
||||
)
|
||||
|
||||
@ -26,7 +30,7 @@ logging_setup()
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class Command(enum.StrEnum):
|
||||
class Command(enum.Enum):
|
||||
mypy = 'mypy'
|
||||
pyright = 'pyright'
|
||||
ruff = 'ruff'
|
||||
|
@ -5,7 +5,7 @@ project(
|
||||
).stdout().strip('\n'),
|
||||
# 'online.fxreader.uv',
|
||||
# ['c', 'cpp'],
|
||||
version: '0.1.5.17',
|
||||
version: '0.1.5.17+27.22',
|
||||
# default_options: [
|
||||
# 'cpp_std=c++23',
|
||||
# # 'prefer_static=true',
|
||||
|
@ -1346,7 +1346,7 @@ server {
|
||||
|
||||
class pass_ssh_osx_t:
|
||||
class kwargs_t:
|
||||
class Mode(enum.StrEnum):
|
||||
class Mode(enum.Enum):
|
||||
clipboard = 'clipboard'
|
||||
qrcode = 'qrcode'
|
||||
|
||||
@ -3928,7 +3928,7 @@ def backup(argv: list[str]) -> None:
|
||||
)
|
||||
|
||||
|
||||
class Command(enum.StrEnum):
|
||||
class Command(enum.Enum):
|
||||
media = 'media'
|
||||
status = 'status'
|
||||
http_server = 'http-server'
|
||||
|
@ -1,5 +1,8 @@
|
||||
import dataclasses
|
||||
import io
|
||||
import json
|
||||
import importlib
|
||||
import configparser
|
||||
import glob
|
||||
import os
|
||||
import pathlib
|
||||
@ -46,7 +49,8 @@ class PyProject:
|
||||
class Meson:
|
||||
@dataclasses.dataclass
|
||||
class Args:
|
||||
install: list[str]
|
||||
install: Optional[list[str]] = None
|
||||
setup: Optional[list[str]] = None
|
||||
|
||||
args: Args
|
||||
|
||||
@ -354,8 +358,19 @@ class CLI(abc.ABC):
|
||||
|
||||
extra_args: list[str] = []
|
||||
|
||||
if len(self.third_party_roots) > 0:
|
||||
extra_args.extend(['-Csetup-args=%s' % ('-Dthird_party_roots=%s' % str(o.absolute())) for o in self.third_party_roots])
|
||||
pyproject_build_dir = project.build_dir / 'pyproject'
|
||||
|
||||
if force and pyproject_build_dir.exists():
|
||||
logger.info(
|
||||
dict(
|
||||
pyproject_build_dir=pyproject_build_dir,
|
||||
msg='remove build dir',
|
||||
)
|
||||
)
|
||||
shutil.rmtree(pyproject_build_dir)
|
||||
|
||||
if len(self.third_party_roots(project_name)) > 0:
|
||||
extra_args.append('-Csetup-args=%s' % ('-Dthird_party_roots=%s' % json.dumps([str(o.absolute()) for o in self.third_party_roots(project_name)])))
|
||||
|
||||
cmd = [
|
||||
sys.executable,
|
||||
@ -365,7 +380,7 @@ class CLI(abc.ABC):
|
||||
'-n',
|
||||
*extra_args,
|
||||
'-Csetup-args=-Dmodes=pyproject',
|
||||
'-Cbuild-dir=%s' % str(project.build_dir / 'pyproject'),
|
||||
'-Cbuild-dir=%s' % str(pyproject_build_dir),
|
||||
'-Csetup-args=-Dinstall_path=%s' % str(project.dest_dir),
|
||||
# '-Cbuild-dir=%s' % str(project.build_dir),
|
||||
str(project.source_dir),
|
||||
@ -375,7 +390,7 @@ class CLI(abc.ABC):
|
||||
if not output_dir is None:
|
||||
cmd.extend(['-o', str(output_dir)])
|
||||
|
||||
logger.info(dict(env=env))
|
||||
logger.info(dict(env=env, cmd=cmd))
|
||||
|
||||
subprocess.check_call(
|
||||
cmd,
|
||||
@ -400,6 +415,7 @@ class CLI(abc.ABC):
|
||||
argv: Optional[list[str]] = None,
|
||||
) -> None:
|
||||
from . import cli_bootstrap
|
||||
from .os import shutil_rmtree
|
||||
|
||||
project = self.projects[project_name]
|
||||
|
||||
@ -410,7 +426,10 @@ class CLI(abc.ABC):
|
||||
argv = []
|
||||
|
||||
if force and project.dest_dir.exists():
|
||||
shutil.rmtree(project.dest_dir)
|
||||
shutil_rmtree(
|
||||
project.dest_dir,
|
||||
preserve_top_path=True,
|
||||
)
|
||||
|
||||
pyproject = cli_bootstrap.pyproject_load(project.source_dir / 'pyproject.toml')
|
||||
|
||||
@ -420,10 +439,13 @@ class CLI(abc.ABC):
|
||||
argv = pyproject_tool.meson.args.install + argv
|
||||
|
||||
cmd = [
|
||||
shutil_which(
|
||||
'meson',
|
||||
True,
|
||||
),
|
||||
str(self.dist_settings.python_path),
|
||||
'-m',
|
||||
'mesonbuild.mesonmain',
|
||||
# shutil_which(
|
||||
# 'meson',
|
||||
# True,
|
||||
# ),
|
||||
'install',
|
||||
'-C',
|
||||
str(project.build_dir / 'meson'),
|
||||
@ -495,10 +517,13 @@ class CLI(abc.ABC):
|
||||
|
||||
subprocess.check_call(
|
||||
[
|
||||
shutil_which(
|
||||
'meson',
|
||||
True,
|
||||
),
|
||||
str(self.dist_settings.python_path),
|
||||
'-m',
|
||||
'mesonbuild.mesonmain',
|
||||
# shutil_which(
|
||||
# 'meson',
|
||||
# True,
|
||||
# ),
|
||||
'test',
|
||||
'-C',
|
||||
project.build_dir / 'meson',
|
||||
@ -518,10 +543,13 @@ class CLI(abc.ABC):
|
||||
|
||||
subprocess.check_call(
|
||||
[
|
||||
shutil_which(
|
||||
'meson',
|
||||
True,
|
||||
),
|
||||
str(self.dist_settings.python_path),
|
||||
'-m',
|
||||
'mesonbuild.mesonmain',
|
||||
# shutil_which(
|
||||
# 'meson',
|
||||
# True,
|
||||
# ),
|
||||
'compile',
|
||||
'-C',
|
||||
project.build_dir / 'meson',
|
||||
@ -529,9 +557,90 @@ class CLI(abc.ABC):
|
||||
]
|
||||
)
|
||||
|
||||
def third_party_roots(
|
||||
self,
|
||||
project_name: Optional[str] = None,
|
||||
) -> list[pathlib.Path]:
|
||||
from . import cli_bootstrap
|
||||
from .pip import pip_show
|
||||
|
||||
res: list[pathlib.Path] = []
|
||||
|
||||
if not project_name is None:
|
||||
pyproject = cli_bootstrap.pyproject_load(self.projects[project_name].source_dir / 'pyproject.toml')
|
||||
|
||||
for third_party_root in pyproject.third_party_roots:
|
||||
if third_party_root.package:
|
||||
if not third_party_root.module_root:
|
||||
third_party_root.module_root = third_party_root.package.replace('.', os.path.sep)
|
||||
if not third_party_root.path:
|
||||
packages = pip_show([third_party_root.package])
|
||||
assert len(packages) == 1
|
||||
third_party_root.path = str(pathlib.Path(packages[0].location) / third_party_root.module_root / 'lib')
|
||||
else:
|
||||
assert not third_party_root.package and not third_party_root.module_root and third_party_root.path
|
||||
|
||||
res.append(pathlib.Path(third_party_root.path))
|
||||
|
||||
# res.append(self.projects[project_name].dest_dir / 'lib')
|
||||
|
||||
return res
|
||||
|
||||
class meson_toolchains_t:
|
||||
class res_t:
|
||||
@dataclasses.dataclass
|
||||
class toolchain_t:
|
||||
name: str
|
||||
path: Optional[pathlib.Path] = None
|
||||
|
||||
@property
|
||||
def third_party_roots(self) -> list[pathlib.Path]:
|
||||
return []
|
||||
def meson_toolchains(self) -> dict[str, meson_toolchains_t.res_t.toolchain_t]:
|
||||
t1 = pathlib.Path(importlib.import_module('online.fxreader.pr34').__path__[0])
|
||||
toolchains = glob.glob(str(t1 / 'meson' / 'toolchains' / '*'))
|
||||
|
||||
res: dict[str, CLI.meson_toolchains_t.res_t.toolchain_t] = dict()
|
||||
|
||||
for o in toolchains:
|
||||
entry = self.meson_toolchains_t.res_t.toolchain_t(
|
||||
name=pathlib.Path(o).stem,
|
||||
path=pathlib.Path(o),
|
||||
)
|
||||
|
||||
config = configparser.ConfigParser()
|
||||
config.read(str(entry.path))
|
||||
|
||||
res[entry.name] = entry
|
||||
|
||||
return res
|
||||
|
||||
def _cross_file(
|
||||
self,
|
||||
extra_args: list[str],
|
||||
pyproject_tool: PyProject.Tool,
|
||||
) -> list[str]:
|
||||
from . import argparse as pr34_argparse
|
||||
|
||||
if pyproject_tool.meson and pyproject_tool.meson.args and pyproject_tool.meson.args.setup:
|
||||
extra_args = pyproject_tool.meson.args.setup + extra_args
|
||||
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument(
|
||||
'--cross-file',
|
||||
dest='cross_file',
|
||||
default=None,
|
||||
# type=pathlib.Path,
|
||||
type=pathlib.Path,
|
||||
)
|
||||
|
||||
options, args = pr34_argparse.parse_args(parser, extra_args)
|
||||
|
||||
if not options.cross_file is None:
|
||||
if not options.cross_file.exists() and (not options.cross_file.is_absolute() and options.cross_file.stem in self.meson_toolchains):
|
||||
options.cross_file = self.meson_toolchains[options.cross_file.stem].path
|
||||
|
||||
extra_args = ['--cross-file', str(options.cross_file)] + args
|
||||
|
||||
return extra_args
|
||||
|
||||
def meson_setup(
|
||||
self,
|
||||
@ -541,6 +650,9 @@ class CLI(abc.ABC):
|
||||
env: Optional[dict[str, str]] = None,
|
||||
# third_party_roots: Optional[list[pathlib.Path]] = None,
|
||||
) -> None:
|
||||
from . import cli_bootstrap
|
||||
from .os import shutil_rmtree
|
||||
|
||||
project = self.projects[project_name]
|
||||
|
||||
if argv is None:
|
||||
@ -549,6 +661,10 @@ class CLI(abc.ABC):
|
||||
if env is None:
|
||||
env = dict()
|
||||
|
||||
pyproject = cli_bootstrap.pyproject_load(project.source_dir / 'pyproject.toml')
|
||||
|
||||
pyproject_tool = pydantic.RootModel[PyProject.Tool].model_validate(pyproject.tool).root
|
||||
|
||||
logger.info(dict(env=env))
|
||||
|
||||
if force:
|
||||
@ -558,14 +674,22 @@ class CLI(abc.ABC):
|
||||
|
||||
extra_args: list[str] = []
|
||||
|
||||
if len(self.third_party_roots) > 0:
|
||||
extra_args.extend(['-Dthird_party_roots=%s' % str(o.absolute()) for o in self.third_party_roots])
|
||||
extra_args = self._cross_file(
|
||||
extra_args=extra_args,
|
||||
pyproject_tool=pyproject_tool,
|
||||
)
|
||||
|
||||
if len(self.third_party_roots(project_name)) > 0:
|
||||
extra_args.append('-Dthird_party_roots=%s' % json.dumps([str(o.absolute()) for o in self.third_party_roots(project_name)]))
|
||||
|
||||
cmd = [
|
||||
shutil_which(
|
||||
'meson',
|
||||
True,
|
||||
),
|
||||
# shutil_which(
|
||||
# 'meson',
|
||||
# True,
|
||||
# ),
|
||||
str(self.dist_settings.python_path),
|
||||
'-m',
|
||||
'mesonbuild.mesonmain',
|
||||
'setup',
|
||||
str(project.source_dir),
|
||||
str(project.build_dir / 'meson'),
|
||||
@ -695,6 +819,7 @@ class CLI(abc.ABC):
|
||||
|
||||
from . import cli_bootstrap
|
||||
from . import argparse as pr34_argparse
|
||||
from .toml import toml_add_overlay
|
||||
|
||||
project = self.projects[project_name]
|
||||
|
||||
@ -758,9 +883,14 @@ class CLI(abc.ABC):
|
||||
# assert isinstance(pyproject_tool, tomlkit.items.Array)
|
||||
assert isinstance(pyproject_tool, MutableMapping)
|
||||
|
||||
for k, v in module.tool.items():
|
||||
assert not k in pyproject_tool
|
||||
pyproject_tool[k] = v
|
||||
toml_add_overlay(
|
||||
pyproject_tool,
|
||||
module.tool,
|
||||
)
|
||||
|
||||
# for k, v in module.tool.items():
|
||||
# assert not k in pyproject_tool
|
||||
# pyproject_tool[k] = v
|
||||
|
||||
del p
|
||||
del pyproject_tool
|
||||
|
@ -1,5 +1,6 @@
|
||||
#!/usr/bin/env python3
|
||||
import glob
|
||||
import importlib
|
||||
import json
|
||||
import io
|
||||
import tempfile
|
||||
@ -18,6 +19,7 @@ from typing import (
|
||||
cast,
|
||||
Type,
|
||||
TypeVar,
|
||||
Callable,
|
||||
)
|
||||
from typing_extensions import (
|
||||
Self,
|
||||
@ -30,17 +32,23 @@ logger = logging.getLogger(__name__)
|
||||
|
||||
def toml_load(f: BinaryIO) -> Any:
|
||||
try:
|
||||
import tomllib
|
||||
tomllib = importlib.import_module('tomllib')
|
||||
|
||||
return tomllib.load(f)
|
||||
except:
|
||||
return cast(
|
||||
Callable[[Any], Any],
|
||||
getattr(
|
||||
tomllib,
|
||||
'load',
|
||||
),
|
||||
)(f)
|
||||
except ModuleNotFoundError:
|
||||
pass
|
||||
|
||||
try:
|
||||
import tomli
|
||||
|
||||
return tomli.load(f)
|
||||
except:
|
||||
except ModuleNotFoundError:
|
||||
pass
|
||||
|
||||
raise NotImplementedError
|
||||
@ -60,6 +68,16 @@ class PyProject:
|
||||
pip_find_links: Optional[list[pathlib.Path]] = None
|
||||
runtime_libdirs: Optional[list[pathlib.Path]] = None
|
||||
runtime_preload: Optional[list[pathlib.Path]] = None
|
||||
|
||||
@dataclasses.dataclass
|
||||
class ThirdPartyRoot:
|
||||
package: Optional[str] = None
|
||||
module_root: Optional[str] = None
|
||||
path: Optional[str] = None
|
||||
|
||||
third_party_roots: list[ThirdPartyRoot] = dataclasses.field(
|
||||
default_factory=lambda: [],
|
||||
)
|
||||
requirements: dict[str, pathlib.Path] = dataclasses.field(default_factory=lambda: dict())
|
||||
|
||||
modules: list[Module] = dataclasses.field(
|
||||
@ -219,16 +237,29 @@ def pyproject_load(
|
||||
res.runtime_libdirs = [
|
||||
d.parent / pathlib.Path(o)
|
||||
# pathlib.Path(o)
|
||||
for o in pr34_tool['runtime_libdirs']
|
||||
for o in check_list(pr34_tool['runtime_libdirs'], str)
|
||||
]
|
||||
|
||||
if 'runtime_preload' in pr34_tool:
|
||||
res.runtime_preload = [
|
||||
d.parent / pathlib.Path(o)
|
||||
# pathlib.Path(o)
|
||||
for o in pr34_tool['runtime_preload']
|
||||
for o in check_list(pr34_tool['runtime_preload'], str)
|
||||
]
|
||||
|
||||
if 'third_party_roots' in pr34_tool:
|
||||
for o in check_list(pr34_tool['third_party_roots']):
|
||||
o2 = check_dict(o, str, str)
|
||||
assert all([k in {'package', 'module_root', 'path'} for k in o2])
|
||||
|
||||
res.third_party_roots.append(
|
||||
PyProject.ThirdPartyRoot(
|
||||
package=o2.get('package'),
|
||||
module_root=o2.get('module_root'),
|
||||
path=o2.get('path'),
|
||||
)
|
||||
)
|
||||
|
||||
if 'requirements' in pr34_tool:
|
||||
res.requirements = {
|
||||
k: d.parent / pathlib.Path(v)
|
||||
@ -414,6 +445,25 @@ def env_bootstrap(
|
||||
# *early_dependencies,
|
||||
# ])
|
||||
|
||||
uv_python_version: list[str] = []
|
||||
venv_python_version: list[str] = []
|
||||
|
||||
if not bootstrap_settings.python_version is None:
|
||||
uv_python_version.extend(
|
||||
[
|
||||
# '-p',
|
||||
'--python-version',
|
||||
bootstrap_settings.python_version,
|
||||
]
|
||||
)
|
||||
venv_python_version.extend(
|
||||
[
|
||||
'-p',
|
||||
# '--python-version',
|
||||
bootstrap_settings.python_version,
|
||||
]
|
||||
)
|
||||
|
||||
if not requirements_path.exists():
|
||||
with tempfile.NamedTemporaryFile(
|
||||
mode='w',
|
||||
@ -428,6 +478,7 @@ def env_bootstrap(
|
||||
'uv',
|
||||
'pip',
|
||||
'compile',
|
||||
*uv_python_version,
|
||||
'--generate-hashes',
|
||||
*pip_find_links_args,
|
||||
# '-p',
|
||||
@ -439,21 +490,11 @@ def env_bootstrap(
|
||||
]
|
||||
)
|
||||
|
||||
uv_python_version: list[str] = []
|
||||
|
||||
if not bootstrap_settings.python_version is None:
|
||||
uv_python_version.extend(
|
||||
[
|
||||
'-p',
|
||||
bootstrap_settings.python_version,
|
||||
]
|
||||
)
|
||||
|
||||
subprocess.check_call(
|
||||
[
|
||||
'uv',
|
||||
'venv',
|
||||
*uv_python_version,
|
||||
*venv_python_version,
|
||||
*pip_find_links_args,
|
||||
# '--seed',
|
||||
*bootstrap_settings.uv_args,
|
||||
@ -466,6 +507,7 @@ def env_bootstrap(
|
||||
'uv',
|
||||
'pip',
|
||||
'install',
|
||||
*uv_python_version,
|
||||
*pip_find_links_args,
|
||||
'-p',
|
||||
bootstrap_settings.python_path,
|
||||
|
@ -123,3 +123,17 @@ def interfaces_index() -> list[interfaces_index_t.Interface]:
|
||||
)
|
||||
|
||||
return res
|
||||
|
||||
|
||||
def shutil_rmtree(
|
||||
path: pathlib.Path,
|
||||
preserve_top_path: bool = False,
|
||||
) -> None:
|
||||
if preserve_top_path:
|
||||
for p in path.iterdir():
|
||||
if p.is_dir():
|
||||
shutil.rmtree(str(p))
|
||||
else:
|
||||
p.unlink()
|
||||
else:
|
||||
shutil.rmtree(str(path))
|
||||
|
@ -43,7 +43,7 @@ logger = logging.getLogger(__name__)
|
||||
class pip_show_t:
|
||||
class res_t:
|
||||
class package_info_t:
|
||||
pass
|
||||
location: str
|
||||
|
||||
|
||||
def pip_show(
|
||||
@ -83,7 +83,7 @@ class pip_resolve_t:
|
||||
) -> None: ...
|
||||
|
||||
class kwargs_t:
|
||||
class mode_t(enum.StrEnum):
|
||||
class mode_t(enum.Enum):
|
||||
copy_paste = 'copy_paste'
|
||||
monkey_patch = 'monkey_patch'
|
||||
uv_pip_freeze = 'uv_pip_freeze'
|
||||
|
80
python/online/fxreader/pr34/commands_typed/pydantic.py
Normal file
80
python/online/fxreader/pr34/commands_typed/pydantic.py
Normal file
@ -0,0 +1,80 @@
|
||||
import pydantic
|
||||
import inspect
|
||||
import collections
|
||||
|
||||
from typing import (
|
||||
TypeVar,
|
||||
Callable,
|
||||
Any,
|
||||
Optional,
|
||||
Mapping,
|
||||
cast,
|
||||
)
|
||||
|
||||
P = TypeVar('P')
|
||||
R = TypeVar('R')
|
||||
|
||||
|
||||
def validate_params(view: Callable[..., R]) -> Callable[..., R]:
|
||||
class Parameter:
|
||||
kind: Any
|
||||
annotation: Any
|
||||
|
||||
parameters = cast(Mapping[str, Parameter], inspect.signature(view).parameters)
|
||||
|
||||
positional_parameters: collections.OrderedDict[str, type[Any]] = collections.OrderedDict(
|
||||
(
|
||||
(k, v.annotation)
|
||||
for k, v in parameters.items()
|
||||
if v.kind
|
||||
in (
|
||||
inspect.Parameter.POSITIONAL_ONLY,
|
||||
inspect.Parameter.POSITIONAL_OR_KEYWORD,
|
||||
)
|
||||
)
|
||||
)
|
||||
positional_names = list(positional_parameters)
|
||||
|
||||
model = pydantic.create_model(
|
||||
getattr(view, '__name__'),
|
||||
**{
|
||||
k: v.annotation
|
||||
for k, v in parameters.items()
|
||||
if v.kind
|
||||
in (
|
||||
inspect.Parameter.POSITIONAL_OR_KEYWORD,
|
||||
inspect.Parameter.POSITIONAL_ONLY,
|
||||
inspect.Parameter.KEYWORD_ONLY,
|
||||
)
|
||||
},
|
||||
__config__=pydantic.ConfigDict(
|
||||
arbitrary_types_allowed=True,
|
||||
),
|
||||
)
|
||||
|
||||
def wrapper(*args: Any, **kwargs: Any) -> R:
|
||||
# data = model.model_validate(
|
||||
|
||||
kwargs_to_check: dict[str, Any] = {k: v for k, v in kwargs.items()}
|
||||
|
||||
for i, o in enumerate(args):
|
||||
k = positional_names[i]
|
||||
|
||||
parameter = positional_parameters[k]
|
||||
|
||||
assert not k in kwargs_to_check
|
||||
|
||||
kwargs_to_check[k] = o
|
||||
|
||||
model.model_validate(
|
||||
kwargs_to_check,
|
||||
)
|
||||
# ).dict()
|
||||
|
||||
return view(
|
||||
# **data,
|
||||
*args,
|
||||
**kwargs,
|
||||
)
|
||||
|
||||
return wrapper
|
30
python/online/fxreader/pr34/commands_typed/toml.py
Normal file
30
python/online/fxreader/pr34/commands_typed/toml.py
Normal file
@ -0,0 +1,30 @@
|
||||
from .cli_bootstrap import check_dict
|
||||
|
||||
from typing import (
|
||||
Any,
|
||||
Mapping,
|
||||
MutableMapping,
|
||||
Iterable,
|
||||
)
|
||||
|
||||
|
||||
def toml_add_overlay(
|
||||
toml: Any,
|
||||
overlay: Any,
|
||||
) -> Any:
|
||||
if isinstance(toml, MutableMapping):
|
||||
overlay2 = check_dict(
|
||||
overlay,
|
||||
str,
|
||||
)
|
||||
|
||||
for k, v in overlay2.items():
|
||||
if not k in toml:
|
||||
toml[k] = v
|
||||
else:
|
||||
toml_add_overlay(
|
||||
toml[k],
|
||||
v,
|
||||
)
|
||||
else:
|
||||
raise NotImplementedError
|
@ -36,6 +36,7 @@ early = [
|
||||
|
||||
lint = [
|
||||
'tomli',
|
||||
# 'tomllib',
|
||||
'mypy',
|
||||
'pyright',
|
||||
'ruff',
|
||||
|
@ -1,5 +1,5 @@
|
||||
# This file was autogenerated by uv via the following command:
|
||||
# uv pip compile --generate-hashes --offline -o /home/nartes/Documents/current/freelance-project-34-marketing-blog/python/requirements.txt /tmp/requirementsguod07w5.in
|
||||
# uv pip compile --generate-hashes -o /home/nartes/Documents/current/freelance-project-34-marketing-blog/python/requirements.txt /tmp/requirementsx8idgxd2.in
|
||||
annotated-types==0.7.0 \
|
||||
--hash=sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53 \
|
||||
--hash=sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89
|
||||
@ -7,7 +7,7 @@ annotated-types==0.7.0 \
|
||||
build==1.2.2.post1 \
|
||||
--hash=sha256:1d61c0887fa860c01971625baae8bdd338e517b836a2f70dd1f7aa3a6b2fc5b5 \
|
||||
--hash=sha256:b36993e92ca9375a219c99e606a122ff365a760a2d4bba0caa09bd5278b608b7
|
||||
# via -r /tmp/requirementsguod07w5.in
|
||||
# via -r /tmp/requirementsx8idgxd2.in
|
||||
cffi==1.17.1 \
|
||||
--hash=sha256:045d61c734659cc045141be4bae381a41d89b741f795af1dd018bfb532fd0df8 \
|
||||
--hash=sha256:0984a4925a435b1da406122d4d7968dd861c1385afe3b45ba82b750f229811e2 \
|
||||
@ -77,45 +77,45 @@ cffi==1.17.1 \
|
||||
--hash=sha256:f7f5baafcc48261359e14bcd6d9bff6d4b28d9103847c9e136694cb0501aef87 \
|
||||
--hash=sha256:fc48c783f9c87e60831201f2cce7f3b2e4846bf4d8728eabe54d60700b318a0b
|
||||
# via cryptography
|
||||
cryptography==44.0.3 \
|
||||
--hash=sha256:02f55fb4f8b79c1221b0961488eaae21015b69b210e18c386b69de182ebb1259 \
|
||||
--hash=sha256:157f1f3b8d941c2bd8f3ffee0af9b049c9665c39d3da9db2dc338feca5e98a43 \
|
||||
--hash=sha256:192ed30fac1728f7587c6f4613c29c584abdc565d7417c13904708db10206645 \
|
||||
--hash=sha256:21a83f6f35b9cc656d71b5de8d519f566df01e660ac2578805ab245ffd8523f8 \
|
||||
--hash=sha256:25cd194c39fa5a0aa4169125ee27d1172097857b27109a45fadc59653ec06f44 \
|
||||
--hash=sha256:3883076d5c4cc56dbef0b898a74eb6992fdac29a7b9013870b34efe4ddb39a0d \
|
||||
--hash=sha256:3bb0847e6363c037df8f6ede57d88eaf3410ca2267fb12275370a76f85786a6f \
|
||||
--hash=sha256:3be3f649d91cb182c3a6bd336de8b61a0a71965bd13d1a04a0e15b39c3d5809d \
|
||||
--hash=sha256:3f07943aa4d7dad689e3bb1638ddc4944cc5e0921e3c227486daae0e31a05e54 \
|
||||
--hash=sha256:479d92908277bed6e1a1c69b277734a7771c2b78633c224445b5c60a9f4bc1d9 \
|
||||
--hash=sha256:4ffc61e8f3bf5b60346d89cd3d37231019c17a081208dfbbd6e1605ba03fa137 \
|
||||
--hash=sha256:5639c2b16764c6f76eedf722dbad9a0914960d3489c0cc38694ddf9464f1bb2f \
|
||||
--hash=sha256:58968d331425a6f9eedcee087f77fd3c927c88f55368f43ff7e0a19891f2642c \
|
||||
--hash=sha256:5d186f32e52e66994dce4f766884bcb9c68b8da62d61d9d215bfe5fb56d21334 \
|
||||
--hash=sha256:5d20cc348cca3a8aa7312f42ab953a56e15323800ca3ab0706b8cd452a3a056c \
|
||||
--hash=sha256:6866df152b581f9429020320e5eb9794c8780e90f7ccb021940d7f50ee00ae0b \
|
||||
--hash=sha256:7d5fe7195c27c32a64955740b949070f21cba664604291c298518d2e255931d2 \
|
||||
--hash=sha256:896530bc9107b226f265effa7ef3f21270f18a2026bc09fed1ebd7b66ddf6375 \
|
||||
--hash=sha256:962bc30480a08d133e631e8dfd4783ab71cc9e33d5d7c1e192f0b7c06397bb88 \
|
||||
--hash=sha256:978631ec51a6bbc0b7e58f23b68a8ce9e5f09721940933e9c217068388789fe5 \
|
||||
--hash=sha256:9b4d4a5dbee05a2c390bf212e78b99434efec37b17a4bff42f50285c5c8c9647 \
|
||||
--hash=sha256:ab0b005721cc0039e885ac3503825661bd9810b15d4f374e473f8c89b7d5460c \
|
||||
--hash=sha256:af653022a0c25ef2e3ffb2c673a50e5a0d02fecc41608f4954176f1933b12359 \
|
||||
--hash=sha256:b0cc66c74c797e1db750aaa842ad5b8b78e14805a9b5d1348dc603612d3e3ff5 \
|
||||
--hash=sha256:b424563394c369a804ecbee9b06dfb34997f19d00b3518e39f83a5642618397d \
|
||||
--hash=sha256:c138abae3a12a94c75c10499f1cbae81294a6f983b3af066390adee73f433028 \
|
||||
--hash=sha256:c6cd67722619e4d55fdb42ead64ed8843d64638e9c07f4011163e46bc512cf01 \
|
||||
--hash=sha256:c91fc8e8fd78af553f98bc7f2a1d8db977334e4eea302a4bfd75b9461c2d8904 \
|
||||
--hash=sha256:cad399780053fb383dc067475135e41c9fe7d901a97dd5d9c5dfb5611afc0d7d \
|
||||
--hash=sha256:cb90f60e03d563ca2445099edf605c16ed1d5b15182d21831f58460c48bffb93 \
|
||||
--hash=sha256:dad80b45c22e05b259e33ddd458e9e2ba099c86ccf4e88db7bbab4b747b18d06 \
|
||||
--hash=sha256:dd3db61b8fe5be220eee484a17233287d0be6932d056cf5738225b9c05ef4fff \
|
||||
--hash=sha256:e28d62e59a4dbd1d22e747f57d4f00c459af22181f0b2f787ea83f5a876d7c76 \
|
||||
--hash=sha256:e909df4053064a97f1e6565153ff8bb389af12c5c8d29c343308760890560aff \
|
||||
--hash=sha256:f3ffef566ac88f75967d7abd852ed5f182da252d23fac11b4766da3957766759 \
|
||||
--hash=sha256:fc3c9babc1e1faefd62704bb46a69f359a9819eb0292e40df3fb6e3574715cd4 \
|
||||
--hash=sha256:fe19d8bc5536a91a24a8133328880a41831b6c5df54599a8417b62fe015d3053
|
||||
# via -r /tmp/requirementsguod07w5.in
|
||||
cryptography==45.0.2 \
|
||||
--hash=sha256:057723b79752a142efbc609e90b0dff27b0361ccbee3bd48312d70f5cdf53b78 \
|
||||
--hash=sha256:05c2385b1f5c89a17df19900cfb1345115a77168f5ed44bdf6fd3de1ce5cc65b \
|
||||
--hash=sha256:08281de408e7eb71ba3cd5098709a356bfdf65eebd7ee7633c3610f0aa80d79b \
|
||||
--hash=sha256:10d68763892a7b19c22508ab57799c4423c7c8cd61d7eee4c5a6a55a46511949 \
|
||||
--hash=sha256:1655d3a76e3dedb683c982a6c3a2cbfae2d08f47a48ec5a3d58db52b3d29ea6f \
|
||||
--hash=sha256:18f8084b7ca3ce1b8d38bdfe33c48116edf9a08b4d056ef4a96dceaa36d8d965 \
|
||||
--hash=sha256:2cb03a944a1a412724d15a7c051d50e63a868031f26b6a312f2016965b661942 \
|
||||
--hash=sha256:4142e20c29224cec63e9e32eb1e6014fb285fe39b7be66b3564ca978a3a8afe9 \
|
||||
--hash=sha256:463096533acd5097f8751115bc600b0b64620c4aafcac10c6d0041e6e68f88fe \
|
||||
--hash=sha256:48caa55c528617fa6db1a9c3bf2e37ccb31b73e098ac2b71408d1f2db551dde4 \
|
||||
--hash=sha256:49af56491473231159c98c2c26f1a8f3799a60e5cf0e872d00745b858ddac9d2 \
|
||||
--hash=sha256:4cc31c66411e14dd70e2f384a9204a859dc25b05e1f303df0f5326691061b839 \
|
||||
--hash=sha256:501de1296b2041dccf2115e3c7d4947430585601b251b140970ce255c5cfb985 \
|
||||
--hash=sha256:59c0c8f043dd376bbd9d4f636223836aed50431af4c5a467ed9bf61520294627 \
|
||||
--hash=sha256:614bca7c6ed0d8ad1dce683a6289afae1f880675b4090878a0136c3da16bc693 \
|
||||
--hash=sha256:61a8b1bbddd9332917485b2453d1de49f142e6334ce1d97b7916d5a85d179c84 \
|
||||
--hash=sha256:7429936146063bd1b2cfc54f0e04016b90ee9b1c908a7bed0800049cbace70eb \
|
||||
--hash=sha256:7c73968fbb7698a4c5d6160859db560d3aac160edde89c751edd5a8bc6560c88 \
|
||||
--hash=sha256:80303ee6a02ef38c4253160446cbeb5c400c07e01d4ddbd4ff722a89b736d95a \
|
||||
--hash=sha256:965611880c3fa8e504b7458484c0697e00ae6e937279cd6734fdaa2bc954dc49 \
|
||||
--hash=sha256:9a900036b42f7324df7c7ad9569eb92ba0b613cf699160dd9c2154b24fd02f8e \
|
||||
--hash=sha256:9cfd1399064b13043082c660ddd97a0358e41c8b0dc7b77c1243e013d305c344 \
|
||||
--hash=sha256:a8ec324711596fbf21837d3a5db543937dd84597d364769b46e0102250023f77 \
|
||||
--hash=sha256:a9727a21957d3327cf6b7eb5ffc9e4b663909a25fea158e3fcbc49d4cdd7881b \
|
||||
--hash=sha256:b19f4b28dd2ef2e6d600307fee656c00825a2980c4356a7080bd758d633c3a6f \
|
||||
--hash=sha256:b2de529027579e43b6dc1f805f467b102fb7d13c1e54c334f1403ee2b37d0059 \
|
||||
--hash=sha256:c0c000c1a09f069632d8a9eb3b610ac029fcc682f1d69b758e625d6ee713f4ed \
|
||||
--hash=sha256:cdafb86eb673c3211accffbffdb3cdffa3aaafacd14819e0898d23696d18e4d3 \
|
||||
--hash=sha256:d2a90ce2f0f5b695e4785ac07c19a58244092f3c85d57db6d8eb1a2b26d2aad6 \
|
||||
--hash=sha256:d784d57b958ffd07e9e226d17272f9af0c41572557604ca7554214def32c26bf \
|
||||
--hash=sha256:d891942592789fa0ab71b502550bbadb12f540d7413d7d7c4cef4b02af0f5bc6 \
|
||||
--hash=sha256:dc7693573f16535428183de8fd27f0ca1ca37a51baa0b41dc5ed7b3d68fe80e2 \
|
||||
--hash=sha256:ddb8d01aa900b741d6b7cc585a97aff787175f160ab975e21f880e89d810781a \
|
||||
--hash=sha256:e328357b6bbf79928363dbf13f4635b7aac0306afb7e5ad24d21d0c5761c3253 \
|
||||
--hash=sha256:e86c8d54cd19a13e9081898b3c24351683fd39d726ecf8e774aaa9d8d96f5f3a \
|
||||
--hash=sha256:e9e4bdcd70216b08801e267c0b563316b787f957a46e215249921f99288456f9 \
|
||||
--hash=sha256:f169469d04a23282de9d0be349499cb6683b6ff1b68901210faacac9b0c24b7d
|
||||
# via -r /tmp/requirementsx8idgxd2.in
|
||||
marisa-trie==1.2.1 \
|
||||
--hash=sha256:06b099dd743676dbcd8abd8465ceac8f6d97d8bfaabe2c83b965495523b4cef2 \
|
||||
--hash=sha256:0ee6cf6a16d9c3d1c94e21c8e63c93d8b34bede170ca4e937e16e1c0700d399f \
|
||||
@ -193,7 +193,7 @@ marisa-trie==1.2.1 \
|
||||
--hash=sha256:f35c2603a6be168088ed1db6ad1704b078aa8f39974c60888fbbced95dcadad4 \
|
||||
--hash=sha256:f4cd800704a5fc57e53c39c3a6b0c9b1519ebdbcb644ede3ee67a06eb542697d \
|
||||
--hash=sha256:f713af9b8aa66a34cd3a78c7d150a560a75734713abe818a69021fd269e927fa
|
||||
# via -r /tmp/requirementsguod07w5.in
|
||||
# via -r /tmp/requirementsx8idgxd2.in
|
||||
meson==1.8.0 \
|
||||
--hash=sha256:0a9b23311271519bd03dca12d7d8b0eab582c3a2c5da433d465b6e519dc88e2f \
|
||||
--hash=sha256:472b7b25da286447333d32872b82d1c6f1a34024fb8ee017d7308056c25fec1f
|
||||
@ -201,7 +201,7 @@ meson==1.8.0 \
|
||||
meson-python==0.18.0 \
|
||||
--hash=sha256:3b0fe051551cc238f5febb873247c0949cd60ded556efa130aa57021804868e2 \
|
||||
--hash=sha256:c56a99ec9df669a40662fe46960321af6e4b14106c14db228709c1628e23848d
|
||||
# via -r /tmp/requirementsguod07w5.in
|
||||
# via -r /tmp/requirementsx8idgxd2.in
|
||||
mypy==1.15.0 \
|
||||
--hash=sha256:1124a18bc11a6a62887e3e137f37f53fbae476dc36c185d549d4f837a2a6a14e \
|
||||
--hash=sha256:171a9ca9a40cd1843abeca0e405bc1940cd9b305eaeea2dda769ba096932bb22 \
|
||||
@ -235,7 +235,7 @@ mypy==1.15.0 \
|
||||
--hash=sha256:d10d994b41fb3497719bbf866f227b3489048ea4bbbb5015357db306249f7980 \
|
||||
--hash=sha256:e601a7fa172c2131bff456bb3ee08a88360760d0d2f8cbd7a75a65497e2df078 \
|
||||
--hash=sha256:f95579473af29ab73a10bada2f9722856792a36ec5af5399b653aa28360290a5
|
||||
# via -r /tmp/requirementsguod07w5.in
|
||||
# via -r /tmp/requirementsx8idgxd2.in
|
||||
mypy-extensions==1.1.0 \
|
||||
--hash=sha256:1be4cccdb0f2482337c4743e60421de3a356cd97508abadd57d47403e94f5505 \
|
||||
--hash=sha256:52e68efc3284861e772bbcd66823fde5ae21fd2fdb51c62a211403730b916558
|
||||
@ -244,63 +244,63 @@ nodeenv==1.9.1 \
|
||||
--hash=sha256:6ec12890a2dab7946721edbfbcd91f3319c6ccc9aec47be7c7e6b7011ee6645f \
|
||||
--hash=sha256:ba11c9782d29c27c70ffbdda2d7415098754709be8a7056d79a737cd901155c9
|
||||
# via pyright
|
||||
numpy==2.2.5 \
|
||||
--hash=sha256:0255732338c4fdd00996c0421884ea8a3651eea555c3a56b84892b66f696eb70 \
|
||||
--hash=sha256:02f226baeefa68f7d579e213d0f3493496397d8f1cff5e2b222af274c86a552a \
|
||||
--hash=sha256:059b51b658f4414fff78c6d7b1b4e18283ab5fa56d270ff212d5ba0c561846f4 \
|
||||
--hash=sha256:0bcb1d057b7571334139129b7f941588f69ce7c4ed15a9d6162b2ea54ded700c \
|
||||
--hash=sha256:0cd48122a6b7eab8f06404805b1bd5856200e3ed6f8a1b9a194f9d9054631beb \
|
||||
--hash=sha256:19f4718c9012e3baea91a7dba661dcab2451cda2550678dc30d53acb91a7290f \
|
||||
--hash=sha256:1a161c2c79ab30fe4501d5a2bbfe8b162490757cf90b7f05be8b80bc02f7bb8e \
|
||||
--hash=sha256:1f4a922da1729f4c40932b2af4fe84909c7a6e167e6e99f71838ce3a29f3fe26 \
|
||||
--hash=sha256:261a1ef047751bb02f29dfe337230b5882b54521ca121fc7f62668133cb119c9 \
|
||||
--hash=sha256:262d23f383170f99cd9191a7c85b9a50970fe9069b2f8ab5d786eca8a675d60b \
|
||||
--hash=sha256:2ba321813a00e508d5421104464510cc962a6f791aa2fca1c97b1e65027da80d \
|
||||
--hash=sha256:2c1a1c6ccce4022383583a6ded7bbcda22fc635eb4eb1e0a053336425ed36dfa \
|
||||
--hash=sha256:352d330048c055ea6db701130abc48a21bec690a8d38f8284e00fab256dc1376 \
|
||||
--hash=sha256:369e0d4647c17c9363244f3468f2227d557a74b6781cb62ce57cf3ef5cc7c610 \
|
||||
--hash=sha256:36ab5b23915887543441efd0417e6a3baa08634308894316f446027611b53bf1 \
|
||||
--hash=sha256:37e32e985f03c06206582a7323ef926b4e78bdaa6915095ef08070471865b906 \
|
||||
--hash=sha256:3a801fef99668f309b88640e28d261991bfad9617c27beda4a3aec4f217ea073 \
|
||||
--hash=sha256:3d14b17b9be5f9c9301f43d2e2a4886a33b53f4e6fdf9ca2f4cc60aeeee76372 \
|
||||
--hash=sha256:422cc684f17bc963da5f59a31530b3936f57c95a29743056ef7a7903a5dbdf88 \
|
||||
--hash=sha256:4520caa3807c1ceb005d125a75e715567806fed67e315cea619d5ec6e75a4191 \
|
||||
--hash=sha256:47834cde750d3c9f4e52c6ca28a7361859fcaf52695c7dc3cc1a720b8922683e \
|
||||
--hash=sha256:47f9ed103af0bc63182609044b0490747e03bd20a67e391192dde119bf43d52f \
|
||||
--hash=sha256:498815b96f67dc347e03b719ef49c772589fb74b8ee9ea2c37feae915ad6ebda \
|
||||
--hash=sha256:54088a5a147ab71a8e7fdfd8c3601972751ded0739c6b696ad9cb0343e21ab73 \
|
||||
--hash=sha256:55f09e00d4dccd76b179c0f18a44f041e5332fd0e022886ba1c0bbf3ea4a18d0 \
|
||||
--hash=sha256:5a0ac90e46fdb5649ab6369d1ab6104bfe5854ab19b645bf5cda0127a13034ae \
|
||||
--hash=sha256:6411f744f7f20081b1b4e7112e0f4c9c5b08f94b9f086e6f0adf3645f85d3a4d \
|
||||
--hash=sha256:6413d48a9be53e183eb06495d8e3b006ef8f87c324af68241bbe7a39e8ff54c3 \
|
||||
--hash=sha256:7451f92eddf8503c9b8aa4fe6aa7e87fd51a29c2cfc5f7dbd72efde6c65acf57 \
|
||||
--hash=sha256:8b4c0773b6ada798f51f0f8e30c054d32304ccc6e9c5d93d46cb26f3d385ab19 \
|
||||
--hash=sha256:8dfa94b6a4374e7851bbb6f35e6ded2120b752b063e6acdd3157e4d2bb922eba \
|
||||
--hash=sha256:97c8425d4e26437e65e1d189d22dff4a079b747ff9c2788057bfb8114ce1e133 \
|
||||
--hash=sha256:9d75f338f5f79ee23548b03d801d28a505198297534f62416391857ea0479571 \
|
||||
--hash=sha256:9de6832228f617c9ef45d948ec1cd8949c482238d68b2477e6f642c33a7b0a54 \
|
||||
--hash=sha256:a4cbdef3ddf777423060c6f81b5694bad2dc9675f110c4b2a60dc0181543fac7 \
|
||||
--hash=sha256:a9c0d994680cd991b1cb772e8b297340085466a6fe964bc9d4e80f5e2f43c291 \
|
||||
--hash=sha256:aa70fdbdc3b169d69e8c59e65c07a1c9351ceb438e627f0fdcd471015cd956be \
|
||||
--hash=sha256:abe38cd8381245a7f49967a6010e77dbf3680bd3627c0fe4362dd693b404c7f8 \
|
||||
--hash=sha256:b13f04968b46ad705f7c8a80122a42ae8f620536ea38cf4bdd374302926424dd \
|
||||
--hash=sha256:b4ea7e1cff6784e58fe281ce7e7f05036b3e1c89c6f922a6bfbc0a7e8768adbe \
|
||||
--hash=sha256:b6f91524d31b34f4a5fee24f5bc16dcd1491b668798b6d85585d836c1e633a6a \
|
||||
--hash=sha256:c26843fd58f65da9491165072da2cccc372530681de481ef670dcc8e27cfb066 \
|
||||
--hash=sha256:c42365005c7a6c42436a54d28c43fe0e01ca11eb2ac3cefe796c25a5f98e5e9b \
|
||||
--hash=sha256:c8b82a55ef86a2d8e81b63da85e55f5537d2157165be1cb2ce7cfa57b6aef38b \
|
||||
--hash=sha256:ced69262a8278547e63409b2653b372bf4baff0870c57efa76c5703fd6543282 \
|
||||
--hash=sha256:d2e3bdadaba0e040d1e7ab39db73e0afe2c74ae277f5614dad53eadbecbbb169 \
|
||||
--hash=sha256:d403c84991b5ad291d3809bace5e85f4bbf44a04bdc9a88ed2bb1807b3360bb8 \
|
||||
--hash=sha256:d7543263084a85fbc09c704b515395398d31d6395518446237eac219eab9e55e \
|
||||
--hash=sha256:d8882a829fd779f0f43998e931c466802a77ca1ee0fe25a3abe50278616b1471 \
|
||||
--hash=sha256:e4f0b035d9d0ed519c813ee23e0a733db81ec37d2e9503afbb6e54ccfdee0fa7 \
|
||||
--hash=sha256:e8b025c351b9f0e8b5436cf28a07fa4ac0204d67b38f01433ac7f9b870fa38c6 \
|
||||
--hash=sha256:eb7fd5b184e5d277afa9ec0ad5e4eb562ecff541e7f60e69ee69c8d59e9aeaba \
|
||||
--hash=sha256:ec31367fd6a255dc8de4772bd1658c3e926d8e860a0b6e922b615e532d320ddc \
|
||||
--hash=sha256:ee461a4eaab4f165b68780a6a1af95fb23a29932be7569b9fab666c407969051 \
|
||||
--hash=sha256:f5045039100ed58fa817a6227a356240ea1b9a1bc141018864c306c1a16d4175
|
||||
# via -r /tmp/requirementsguod07w5.in
|
||||
numpy==2.2.6 \
|
||||
--hash=sha256:038613e9fb8c72b0a41f025a7e4c3f0b7a1b5d768ece4796b674c8f3fe13efff \
|
||||
--hash=sha256:0678000bb9ac1475cd454c6b8c799206af8107e310843532b04d49649c717a47 \
|
||||
--hash=sha256:0811bb762109d9708cca4d0b13c4f67146e3c3b7cf8d34018c722adb2d957c84 \
|
||||
--hash=sha256:0b605b275d7bd0c640cad4e5d30fa701a8d59302e127e5f79138ad62762c3e3d \
|
||||
--hash=sha256:0bca768cd85ae743b2affdc762d617eddf3bcf8724435498a1e80132d04879e6 \
|
||||
--hash=sha256:1bc23a79bfabc5d056d106f9befb8d50c31ced2fbc70eedb8155aec74a45798f \
|
||||
--hash=sha256:287cc3162b6f01463ccd86be154f284d0893d2b3ed7292439ea97eafa8170e0b \
|
||||
--hash=sha256:37c0ca431f82cd5fa716eca9506aefcabc247fb27ba69c5062a6d3ade8cf8f49 \
|
||||
--hash=sha256:37e990a01ae6ec7fe7fa1c26c55ecb672dd98b19c3d0e1d1f326fa13cb38d163 \
|
||||
--hash=sha256:389d771b1623ec92636b0786bc4ae56abafad4a4c513d36a55dce14bd9ce8571 \
|
||||
--hash=sha256:3d70692235e759f260c3d837193090014aebdf026dfd167834bcba43e30c2a42 \
|
||||
--hash=sha256:41c5a21f4a04fa86436124d388f6ed60a9343a6f767fced1a8a71c3fbca038ff \
|
||||
--hash=sha256:481b49095335f8eed42e39e8041327c05b0f6f4780488f61286ed3c01368d491 \
|
||||
--hash=sha256:4eeaae00d789f66c7a25ac5f34b71a7035bb474e679f410e5e1a94deb24cf2d4 \
|
||||
--hash=sha256:55a4d33fa519660d69614a9fad433be87e5252f4b03850642f88993f7b2ca566 \
|
||||
--hash=sha256:5a6429d4be8ca66d889b7cf70f536a397dc45ba6faeb5f8c5427935d9592e9cf \
|
||||
--hash=sha256:5bd4fc3ac8926b3819797a7c0e2631eb889b4118a9898c84f585a54d475b7e40 \
|
||||
--hash=sha256:5beb72339d9d4fa36522fc63802f469b13cdbe4fdab4a288f0c441b74272ebfd \
|
||||
--hash=sha256:6031dd6dfecc0cf9f668681a37648373bddd6421fff6c66ec1624eed0180ee06 \
|
||||
--hash=sha256:71594f7c51a18e728451bb50cc60a3ce4e6538822731b2933209a1f3614e9282 \
|
||||
--hash=sha256:74d4531beb257d2c3f4b261bfb0fc09e0f9ebb8842d82a7b4209415896adc680 \
|
||||
--hash=sha256:7befc596a7dc9da8a337f79802ee8adb30a552a94f792b9c9d18c840055907db \
|
||||
--hash=sha256:894b3a42502226a1cac872f840030665f33326fc3dac8e57c607905773cdcde3 \
|
||||
--hash=sha256:8e41fd67c52b86603a91c1a505ebaef50b3314de0213461c7a6e99c9a3beff90 \
|
||||
--hash=sha256:8e9ace4a37db23421249ed236fdcdd457d671e25146786dfc96835cd951aa7c1 \
|
||||
--hash=sha256:8fc377d995680230e83241d8a96def29f204b5782f371c532579b4f20607a289 \
|
||||
--hash=sha256:9551a499bf125c1d4f9e250377c1ee2eddd02e01eac6644c080162c0c51778ab \
|
||||
--hash=sha256:b0544343a702fa80c95ad5d3d608ea3599dd54d4632df855e4c8d24eb6ecfa1c \
|
||||
--hash=sha256:b093dd74e50a8cba3e873868d9e93a85b78e0daf2e98c6797566ad8044e8363d \
|
||||
--hash=sha256:b412caa66f72040e6d268491a59f2c43bf03eb6c96dd8f0307829feb7fa2b6fb \
|
||||
--hash=sha256:b4f13750ce79751586ae2eb824ba7e1e8dba64784086c98cdbbcc6a42112ce0d \
|
||||
--hash=sha256:b64d8d4d17135e00c8e346e0a738deb17e754230d7e0810ac5012750bbd85a5a \
|
||||
--hash=sha256:ba10f8411898fc418a521833e014a77d3ca01c15b0c6cdcce6a0d2897e6dbbdf \
|
||||
--hash=sha256:bd48227a919f1bafbdda0583705e547892342c26fb127219d60a5c36882609d1 \
|
||||
--hash=sha256:c1f9540be57940698ed329904db803cf7a402f3fc200bfe599334c9bd84a40b2 \
|
||||
--hash=sha256:c820a93b0255bc360f53eca31a0e676fd1101f673dda8da93454a12e23fc5f7a \
|
||||
--hash=sha256:ce47521a4754c8f4593837384bd3424880629f718d87c5d44f8ed763edd63543 \
|
||||
--hash=sha256:d042d24c90c41b54fd506da306759e06e568864df8ec17ccc17e9e884634fd00 \
|
||||
--hash=sha256:de749064336d37e340f640b05f24e9e3dd678c57318c7289d222a8a2f543e90c \
|
||||
--hash=sha256:e1dda9c7e08dc141e0247a5b8f49cf05984955246a327d4c48bda16821947b2f \
|
||||
--hash=sha256:e29554e2bef54a90aa5cc07da6ce955accb83f21ab5de01a62c8478897b264fd \
|
||||
--hash=sha256:e3143e4451880bed956e706a3220b4e5cf6172ef05fcc397f6f36a550b1dd868 \
|
||||
--hash=sha256:e8213002e427c69c45a52bbd94163084025f533a55a59d6f9c5b820774ef3303 \
|
||||
--hash=sha256:efd28d4e9cd7d7a8d39074a4d44c63eda73401580c5c76acda2ce969e0a38e83 \
|
||||
--hash=sha256:f0fd6321b839904e15c46e0d257fdd101dd7f530fe03fd6359c1ea63738703f3 \
|
||||
--hash=sha256:f1372f041402e37e5e633e586f62aa53de2eac8d98cbfb822806ce4bbefcb74d \
|
||||
--hash=sha256:f2618db89be1b4e05f7a1a847a9c1c0abd63e63a1607d892dd54668dd92faf87 \
|
||||
--hash=sha256:f447e6acb680fd307f40d3da4852208af94afdfab89cf850986c3ca00562f4fa \
|
||||
--hash=sha256:f92729c95468a2f4f15e9bb94c432a9229d0d50de67304399627a943201baa2f \
|
||||
--hash=sha256:f9f1adb22318e121c5c69a09142811a201ef17ab257a1e66ca3025065b7f53ae \
|
||||
--hash=sha256:fc0c5673685c508a142ca65209b4e79ed6740a4ed6b2267dbba90f34b0b3cfda \
|
||||
--hash=sha256:fc7b73d02efb0e18c000e9ad8b83480dfcd5dfd11065997ed4c6747470ae8915 \
|
||||
--hash=sha256:fd83c01228a688733f1ded5201c678f0c53ecc1006ffbc404db9f7a899ac6249 \
|
||||
--hash=sha256:fe27749d33bb772c80dcd84ae7e8df2adc920ae8297400dabec45f0dedb3f6de \
|
||||
--hash=sha256:fee4236c876c4e8369388054d02d0e9bb84821feb1a64dd59e137e6511a551f8
|
||||
# via -r /tmp/requirementsx8idgxd2.in
|
||||
packaging==25.0 \
|
||||
--hash=sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484 \
|
||||
--hash=sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f
|
||||
@ -311,11 +311,11 @@ packaging==25.0 \
|
||||
pip==25.1.1 \
|
||||
--hash=sha256:2913a38a2abf4ea6b64ab507bd9e967f3b53dc1ede74b01b0931e1ce548751af \
|
||||
--hash=sha256:3de45d411d308d5054c2168185d8da7f9a2cd753dbac8acbfa88a8909ecd9077
|
||||
# via -r /tmp/requirementsguod07w5.in
|
||||
# via -r /tmp/requirementsx8idgxd2.in
|
||||
pybind11==2.13.6 \
|
||||
--hash=sha256:237c41e29157b962835d356b370ededd57594a26d5894a795960f0047cb5caf5 \
|
||||
--hash=sha256:ba6af10348c12b24e92fa086b39cfba0eff619b61ac77c406167d813b096d39a
|
||||
# via -r /tmp/requirementsguod07w5.in
|
||||
# via -r /tmp/requirementsx8idgxd2.in
|
||||
pycparser==2.22 \
|
||||
--hash=sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6 \
|
||||
--hash=sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc
|
||||
@ -324,7 +324,7 @@ pydantic==2.11.4 \
|
||||
--hash=sha256:32738d19d63a226a52eed76645a98ee07c1f410ee41d93b4afbfa85ed8111c2d \
|
||||
--hash=sha256:d9615eaa9ac5a063471da949c8fc16376a84afb5024688b3ff885693506764eb
|
||||
# via
|
||||
# -r /tmp/requirementsguod07w5.in
|
||||
# -r /tmp/requirementsx8idgxd2.in
|
||||
# pydantic-settings
|
||||
pydantic-core==2.33.2 \
|
||||
--hash=sha256:0069c9acc3f3981b9ff4cdfaf088e98d83440a4c7ea1bc07460af3d4dc22e72d \
|
||||
@ -430,7 +430,7 @@ pydantic-core==2.33.2 \
|
||||
pydantic-settings==2.9.1 \
|
||||
--hash=sha256:59b4f431b1defb26fe620c71a7d3968a710d719f5f4cdbbdb7926edeb770f6ef \
|
||||
--hash=sha256:c509bf79d27563add44e8446233359004ed85066cd096d8b510f715e6ef5d268
|
||||
# via -r /tmp/requirementsguod07w5.in
|
||||
# via -r /tmp/requirementsx8idgxd2.in
|
||||
pyproject-hooks==1.2.0 \
|
||||
--hash=sha256:1e859bd5c40fae9448642dd871adf459e5e2084186e8d2c2a79a824c970da1f8 \
|
||||
--hash=sha256:9e5c6bfa8dcc30091c74b0cf803c81fdd29d94f01992a7707bc97babb1141913
|
||||
@ -442,7 +442,7 @@ pyproject-metadata==0.9.1 \
|
||||
pyright==1.1.400 \
|
||||
--hash=sha256:b8a3ba40481aa47ba08ffb3228e821d22f7d391f83609211335858bf05686bdb \
|
||||
--hash=sha256:c80d04f98b5a4358ad3a35e241dbf2a408eee33a40779df365644f8054d2517e
|
||||
# via -r /tmp/requirementsguod07w5.in
|
||||
# via -r /tmp/requirementsx8idgxd2.in
|
||||
python-dotenv==1.1.0 \
|
||||
--hash=sha256:41f90bc6f5f177fb41f53e87666db362025010eb28f60a01c9143bfa33a2b2d5 \
|
||||
--hash=sha256:d7c01d9e2293916c18baf562d95698754b0dbbb5e74d457c45d4f6561fb9d55d
|
||||
@ -466,12 +466,12 @@ ruff==0.11.10 \
|
||||
--hash=sha256:ddf8967e08227d1bd95cc0851ef80d2ad9c7c0c5aab1eba31db49cf0a7b99523 \
|
||||
--hash=sha256:ef69637b35fb8b210743926778d0e45e1bffa850a7c61e428c6b971549b5f5d1 \
|
||||
--hash=sha256:f4854fd09c7aed5b1590e996a81aeff0c9ff51378b084eb5a0b9cd9518e6cff2
|
||||
# via -r /tmp/requirementsguod07w5.in
|
||||
# via -r /tmp/requirementsx8idgxd2.in
|
||||
setuptools==80.7.1 \
|
||||
--hash=sha256:ca5cc1069b85dc23070a6628e6bcecb3292acac802399c7f8edc0100619f9009 \
|
||||
--hash=sha256:f6ffc5f0142b1bd8d0ca94ee91b30c0ca862ffd50826da1ea85258a06fd94552
|
||||
# via
|
||||
# -r /tmp/requirementsguod07w5.in
|
||||
# -r /tmp/requirementsx8idgxd2.in
|
||||
# marisa-trie
|
||||
tomli==2.2.1 \
|
||||
--hash=sha256:023aa114dd824ade0100497eb2318602af309e5a55595f76b626d6d9f3b7b0a6 \
|
||||
@ -506,11 +506,15 @@ tomli==2.2.1 \
|
||||
--hash=sha256:e85e99945e688e32d5a35c1ff38ed0b3f41f43fad8df0bdf79f72b2ba7bc5272 \
|
||||
--hash=sha256:ece47d672db52ac607a3d9599a9d48dcb2f2f735c6c2d1f34130085bb12b112a \
|
||||
--hash=sha256:f4039b9cbc3048b2416cc57ab3bda989a6fcf9b36cf8937f01a6e731b64f80d7
|
||||
# via -r /tmp/requirementsguod07w5.in
|
||||
# via
|
||||
# -r /tmp/requirementsx8idgxd2.in
|
||||
# build
|
||||
# meson-python
|
||||
# mypy
|
||||
tomlkit==0.13.2 \
|
||||
--hash=sha256:7a974427f6e119197f670fbbbeae7bef749a6c14e793db934baefc1b5f03efde \
|
||||
--hash=sha256:fff5fe59a87295b278abd31bec92c15d9bc4a06885ab12bcea52c71119392e79
|
||||
# via -r /tmp/requirementsguod07w5.in
|
||||
# via -r /tmp/requirementsx8idgxd2.in
|
||||
typing-extensions==4.13.2 \
|
||||
--hash=sha256:a439e7c04b49fec3e5d3e2beaa21755cadbbdc391694e28ccdd36ca4a1408f8c \
|
||||
--hash=sha256:e6c81219bd689f51865d9e372991c540bda33a0379d5573cddb9a3a23f7caaef
|
||||
@ -526,23 +530,23 @@ typing-inspection==0.4.0 \
|
||||
# via
|
||||
# pydantic
|
||||
# pydantic-settings
|
||||
uv==0.7.3 \
|
||||
--hash=sha256:0646e463365e7277f22200ce2d43b7a44e5a3192320500b4983b4fe34d69a5fb \
|
||||
--hash=sha256:0a446d4e5b10ce8a793156a276727bb7affa96a85e80dc5ad34e0c2de7e71cc8 \
|
||||
--hash=sha256:3e6e1fd5755d4ef4c6e1ce55bd2c6d9dec278a8bef5752703d702ce03704fe29 \
|
||||
--hash=sha256:44e2f3fcbd1ab519bdb68986449b2e3103d2261be95f985cadcf7ec7c510b595 \
|
||||
--hash=sha256:4809e5f7f5b2d6423d6573fda5655389c955ca649499fe9750b61af95daf9b7d \
|
||||
--hash=sha256:5eb4872888a9fb10b62cc00be8e84822d63d3e622a5f340248e53ecf321dba96 \
|
||||
--hash=sha256:863ceb63aefc7c2db9918313a1cb3c8bf3fc3d59b656b617db9e4abad90373f3 \
|
||||
--hash=sha256:90990e4c289feee24164c8e463fc0ebc9a336960119cd256acca7c1439f0f536 \
|
||||
--hash=sha256:acef117a0c52299e60c6f7a3e60849050cd233704c561f688fac1100d113da2e \
|
||||
--hash=sha256:acff7fba5ff40dcb5a42de496db92a3965edac7a3d687d9b013ba6e0336995df \
|
||||
--hash=sha256:b1414a026c153ae0731daed0812b17bf77d34eafedaeb3a5c72e08181aea116b \
|
||||
--hash=sha256:c976fce3d1068a1d007f50127cc7873d67643c1a60439564970f092d9be41877 \
|
||||
--hash=sha256:cb2547fd1466698e9b4f11de5eef7055b8cbcc3c693d79f6d747e3f8e6be2ab7 \
|
||||
--hash=sha256:cc27207c35c959d2e0e873e86a80a2470a77b7a34a4512a831e8d4f7c87f4404 \
|
||||
--hash=sha256:d246243f348796730e8ea9736ddd48702d4448d98af5e61693063ed616e30378 \
|
||||
--hash=sha256:db8a5d5995b160158405379deadf0ffccf849a5e7ce048900b73517daf109e2c \
|
||||
--hash=sha256:f37c8a6b172776fb5305afe0699907aff44a778669de7a8fbe5a9c09c1a88a97 \
|
||||
--hash=sha256:fbb2d322d453e498e1431c51421cee597962ecd3f93fcef853b258e9c7e7636c
|
||||
# via -r /tmp/requirementsguod07w5.in
|
||||
uv==0.7.6 \
|
||||
--hash=sha256:0bad870f797971423d7f654423cf3ccd3bbd3688f88aee3f84e79af008c6abae \
|
||||
--hash=sha256:17c79eec35c65bbd25180203be7266dd7d43381e02e28a8f2cb6ee809d008837 \
|
||||
--hash=sha256:1f46cfd2de04dd261cc75158c293de64f99cc907ab0d395f3a0f97c94e7f076a \
|
||||
--hash=sha256:310e488493d03a843b838e9301af1731b02bc93b14bcaa38c62d448cebbdca3c \
|
||||
--hash=sha256:32aecfd27bd724d8ca8bafa811a69d436fcd403d589b025fbbd2e967eb154b46 \
|
||||
--hash=sha256:4026513441dc01326f8bc04517956385442523ed1d40400e14723d8fb3d9c321 \
|
||||
--hash=sha256:434f1820a8fbf54494c53d8ebb2b6509d98a2792876a2d990f90ac70afc9a11a \
|
||||
--hash=sha256:4cd32743d2c0c0b40ffbde48163ae2835353d319472aadabd71e9dcf98152e8b \
|
||||
--hash=sha256:5e283166816f129f29023a4bfdf49fdb33e1e2bcb4e555e9d6996122867a44af \
|
||||
--hash=sha256:72e9337db681a16a7203abe112fedc249f01fe4cadd6d65d23c85031183dcf23 \
|
||||
--hash=sha256:832d7741117c41455ff43569b88892ec0a81938750a8bc4307e1160b70c91f3c \
|
||||
--hash=sha256:8a86cfefd0b9cd3b8a8577e79a0e61d52ade23a7876ed5b5312cc1f05baa140b \
|
||||
--hash=sha256:ad79d71d2bb4cc1cb22d09771a23f70190e3b5fa41668da208e694b50b900178 \
|
||||
--hash=sha256:bd188ac9d9902f1652130837ede39768d7c8f72b0a68fd484ba884d88e963b66 \
|
||||
--hash=sha256:c18b2437e254906b1f48710e1fc1b313052e2ee7261ff104d58b25ef2d347d98 \
|
||||
--hash=sha256:c44311ed1a32e397d81e346e7b868e4ae22f2df2e5ba601e055683fa4cc68323 \
|
||||
--hash=sha256:e15ac957e0a319dba40c897b9408c93e603d2317807384ec8f7d47a9e17c0d85 \
|
||||
--hash=sha256:e3fb41bd4bf88ab21df773b642465fffc469e173645eb986d000db38d7bb8e3c
|
||||
# via -r /tmp/requirementsx8idgxd2.in
|
||||
|
BIN
releases/whl/online_fxreader_pr34-0.1.5.17+27.1-py3-none-any.whl
(Stored with Git LFS)
Normal file
BIN
releases/whl/online_fxreader_pr34-0.1.5.17+27.1-py3-none-any.whl
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
releases/whl/online_fxreader_pr34-0.1.5.17+27.10-py3-none-any.whl
(Stored with Git LFS)
Normal file
BIN
releases/whl/online_fxreader_pr34-0.1.5.17+27.10-py3-none-any.whl
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
releases/whl/online_fxreader_pr34-0.1.5.17+27.11-py3-none-any.whl
(Stored with Git LFS)
Normal file
BIN
releases/whl/online_fxreader_pr34-0.1.5.17+27.11-py3-none-any.whl
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
releases/whl/online_fxreader_pr34-0.1.5.17+27.12-py3-none-any.whl
(Stored with Git LFS)
Normal file
BIN
releases/whl/online_fxreader_pr34-0.1.5.17+27.12-py3-none-any.whl
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
releases/whl/online_fxreader_pr34-0.1.5.17+27.13-py3-none-any.whl
(Stored with Git LFS)
Normal file
BIN
releases/whl/online_fxreader_pr34-0.1.5.17+27.13-py3-none-any.whl
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
releases/whl/online_fxreader_pr34-0.1.5.17+27.14-py3-none-any.whl
(Stored with Git LFS)
Normal file
BIN
releases/whl/online_fxreader_pr34-0.1.5.17+27.14-py3-none-any.whl
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
releases/whl/online_fxreader_pr34-0.1.5.17+27.15-py3-none-any.whl
(Stored with Git LFS)
Normal file
BIN
releases/whl/online_fxreader_pr34-0.1.5.17+27.15-py3-none-any.whl
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
releases/whl/online_fxreader_pr34-0.1.5.17+27.16-py3-none-any.whl
(Stored with Git LFS)
Normal file
BIN
releases/whl/online_fxreader_pr34-0.1.5.17+27.16-py3-none-any.whl
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
releases/whl/online_fxreader_pr34-0.1.5.17+27.17-py3-none-any.whl
(Stored with Git LFS)
Normal file
BIN
releases/whl/online_fxreader_pr34-0.1.5.17+27.17-py3-none-any.whl
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
releases/whl/online_fxreader_pr34-0.1.5.17+27.18-py3-none-any.whl
(Stored with Git LFS)
Normal file
BIN
releases/whl/online_fxreader_pr34-0.1.5.17+27.18-py3-none-any.whl
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
releases/whl/online_fxreader_pr34-0.1.5.17+27.19-py3-none-any.whl
(Stored with Git LFS)
Normal file
BIN
releases/whl/online_fxreader_pr34-0.1.5.17+27.19-py3-none-any.whl
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
releases/whl/online_fxreader_pr34-0.1.5.17+27.2-py3-none-any.whl
(Stored with Git LFS)
Normal file
BIN
releases/whl/online_fxreader_pr34-0.1.5.17+27.2-py3-none-any.whl
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
releases/whl/online_fxreader_pr34-0.1.5.17+27.20-py3-none-any.whl
(Stored with Git LFS)
Normal file
BIN
releases/whl/online_fxreader_pr34-0.1.5.17+27.20-py3-none-any.whl
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
releases/whl/online_fxreader_pr34-0.1.5.17+27.21-py3-none-any.whl
(Stored with Git LFS)
Normal file
BIN
releases/whl/online_fxreader_pr34-0.1.5.17+27.21-py3-none-any.whl
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
releases/whl/online_fxreader_pr34-0.1.5.17+27.22-py3-none-any.whl
(Stored with Git LFS)
Normal file
BIN
releases/whl/online_fxreader_pr34-0.1.5.17+27.22-py3-none-any.whl
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
releases/whl/online_fxreader_pr34-0.1.5.17+27.3-py3-none-any.whl
(Stored with Git LFS)
Normal file
BIN
releases/whl/online_fxreader_pr34-0.1.5.17+27.3-py3-none-any.whl
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
releases/whl/online_fxreader_pr34-0.1.5.17+27.4-py3-none-any.whl
(Stored with Git LFS)
Normal file
BIN
releases/whl/online_fxreader_pr34-0.1.5.17+27.4-py3-none-any.whl
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
releases/whl/online_fxreader_pr34-0.1.5.17+27.5-py3-none-any.whl
(Stored with Git LFS)
Normal file
BIN
releases/whl/online_fxreader_pr34-0.1.5.17+27.5-py3-none-any.whl
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
releases/whl/online_fxreader_pr34-0.1.5.17+27.6-py3-none-any.whl
(Stored with Git LFS)
Normal file
BIN
releases/whl/online_fxreader_pr34-0.1.5.17+27.6-py3-none-any.whl
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
releases/whl/online_fxreader_pr34-0.1.5.17+27.7-py3-none-any.whl
(Stored with Git LFS)
Normal file
BIN
releases/whl/online_fxreader_pr34-0.1.5.17+27.7-py3-none-any.whl
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
releases/whl/online_fxreader_pr34-0.1.5.17+27.8-py3-none-any.whl
(Stored with Git LFS)
Normal file
BIN
releases/whl/online_fxreader_pr34-0.1.5.17+27.8-py3-none-any.whl
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
releases/whl/online_fxreader_pr34-0.1.5.17+27.9-py3-none-any.whl
(Stored with Git LFS)
Normal file
BIN
releases/whl/online_fxreader_pr34-0.1.5.17+27.9-py3-none-any.whl
(Stored with Git LFS)
Normal file
Binary file not shown.
Loading…
Reference in New Issue
Block a user