mirror of
https://github.com/revanced/revanced-static-api.git
synced 2025-04-30 06:34:30 +02:00
refactor: Use DI pattern
This commit is contained in:
parent
2e2c45bfc7
commit
227fbd3f90
@ -2,7 +2,6 @@ from abc import abstractmethod
|
||||
|
||||
import requests
|
||||
|
||||
|
||||
class Api:
|
||||
_api_key: str | None
|
||||
|
||||
|
@ -7,3 +7,5 @@ def load_config() -> dict:
|
||||
config["output"] = config["output"] if "output" in config else "static"
|
||||
config["purge"] = config["purge"] if "purge" in config else []
|
||||
|
||||
return config
|
||||
|
||||
|
9
app/dependencies.py
Normal file
9
app/dependencies.py
Normal file
@ -0,0 +1,9 @@
|
||||
from dependency_injector import providers, containers
|
||||
|
||||
from app.api import GitHubApi
|
||||
|
||||
class ApiContainer(containers.DeclarativeContainer):
|
||||
api = providers.Singleton(GitHubApi)
|
||||
|
||||
def wire_dependencies():
|
||||
ApiContainer().wire(modules=["app.generator"])
|
136
app/generator.py
136
app/generator.py
@ -1,11 +1,12 @@
|
||||
from os.path import join
|
||||
from app import api
|
||||
from app.utils import get_repository_name, to_json, write_json, read_json, create_if_not_exists
|
||||
from abc import abstractmethod
|
||||
from abc import ABC, abstractmethod
|
||||
from dependency_injector.wiring import Provide, inject
|
||||
from app.dependencies import ApiContainer
|
||||
|
||||
|
||||
class Generator:
|
||||
_api: api.Api
|
||||
class Generator(ABC):
|
||||
_api: api.Api | None
|
||||
|
||||
def __init__(self, name: str, api: api.Api | None = None):
|
||||
"""
|
||||
@ -36,7 +37,10 @@ class ReleasesGenerator(Generator):
|
||||
- releases/<repository>.json: Index file containing all releases of the repository.
|
||||
"""
|
||||
|
||||
def __init__(self, api):
|
||||
_api: api.Api
|
||||
|
||||
@inject
|
||||
def __init__(self, api: api.Api = Provide[ApiContainer.api]):
|
||||
super().__init__("releases", api)
|
||||
|
||||
def generate(self, config, path):
|
||||
@ -77,7 +81,10 @@ class ContributorsGenerator(Generator):
|
||||
- contributors/<repository>.json: Contributors of the repository.
|
||||
"""
|
||||
|
||||
def __init__(self, api):
|
||||
_api: api.Api
|
||||
|
||||
@inject
|
||||
def __init__(self, api: api.Api = Provide[ApiContainer.api]):
|
||||
super().__init__("contributors", api)
|
||||
|
||||
def generate(self, config, path):
|
||||
@ -101,7 +108,7 @@ class ConnectionsGenerator(Generator):
|
||||
- connections.json: Connections of the organization.
|
||||
"""
|
||||
|
||||
def __init__(self, _):
|
||||
def __init__(self):
|
||||
super().__init__("connections", None)
|
||||
|
||||
def generate(self, config, path):
|
||||
@ -118,7 +125,10 @@ class TeamGenerator(Generator):
|
||||
- team.json: Members of the organization.
|
||||
"""
|
||||
|
||||
def __init__(self, api):
|
||||
_api: api.Api
|
||||
|
||||
@inject
|
||||
def __init__(self, api: api.Api = Provide[ApiContainer.api]):
|
||||
super().__init__("team", api)
|
||||
|
||||
def generate(self, config, path):
|
||||
@ -137,7 +147,7 @@ class DonationsGenerator(Generator):
|
||||
- donations.json: Links and wallets to donate to the organization.
|
||||
"""
|
||||
|
||||
def __init__(self, _):
|
||||
def __init__(self):
|
||||
super().__init__("donations")
|
||||
|
||||
def generate(self, config, path):
|
||||
@ -155,28 +165,108 @@ class DonationsGenerator(Generator):
|
||||
)
|
||||
|
||||
|
||||
class AnnouncementGenerator(Generator):
|
||||
"""
|
||||
Generates announcement files:
|
||||
|
||||
- /announcements.json: Get a list of announcements from all channels.
|
||||
- /announcements/<channel>.json: Get a list of announcement from a channel.
|
||||
- /announcements/latest.json: Get the latest announcement.
|
||||
- /announcements/<channel>/latest.json: Get the latest announcement from a channel.
|
||||
"""
|
||||
|
||||
def __init__(self):
|
||||
super().__init__("announcements")
|
||||
|
||||
def generate(self, config, path):
|
||||
new_announcement = config["announcement"]
|
||||
new_announcement_channel = new_announcement["channel"]
|
||||
|
||||
announcements_path = join(path, f"announcements.json")
|
||||
announcements = read_json(announcements_path, [])
|
||||
|
||||
# Determine the id of the new announcement. The id is the highest id + 1
|
||||
new_announcement_id = 0
|
||||
for announcement in announcements:
|
||||
if announcement["id"] >= new_announcement_id:
|
||||
new_announcement_id = announcement["id"] + 1
|
||||
new_announcement["id"] = new_announcement_id
|
||||
|
||||
# Add the new announcement to the list of announcements
|
||||
announcements.append(new_announcement)
|
||||
write_json(announcements, announcements_path)
|
||||
|
||||
# Add the new announcement to the channel file
|
||||
channel_path = join(
|
||||
path, f"announcements/{new_announcement_channel}.json")
|
||||
create_if_not_exists(channel_path)
|
||||
channel_announcements = read_json(channel_path, [])
|
||||
channel_announcements.append(new_announcement)
|
||||
write_json(channel_announcements, channel_path)
|
||||
|
||||
# Update the latest announcement file
|
||||
write_json(new_announcement, join(path, "announcements/latest.json"))
|
||||
|
||||
# Update the latest announcement for the channel
|
||||
write_json(new_announcement, join(
|
||||
path, f"announcements/{new_announcement_channel}/latest.json"))
|
||||
|
||||
|
||||
class RemoveAnnouncementGenerator(Generator):
|
||||
"""
|
||||
Removes an announcement.
|
||||
"""
|
||||
|
||||
def __init__(self):
|
||||
super().__init__("remove_announcement")
|
||||
|
||||
def generate(self, config, path):
|
||||
# TODO: Implement this
|
||||
pass
|
||||
|
||||
class GeneratorProvider:
|
||||
generators: list[Generator]
|
||||
"""
|
||||
Provides a way to get a generator by name.
|
||||
"""
|
||||
_generators = {}
|
||||
|
||||
def __init__(self, generators: list[Generator]):
|
||||
self.generators = generators
|
||||
"""
|
||||
Args:
|
||||
generators (list[Generator]): A list of generators.
|
||||
"""
|
||||
for generator in generators:
|
||||
self._generators[generator.name] = generator
|
||||
|
||||
def get(self, name: str) -> Generator | None:
|
||||
for generator in self.generators:
|
||||
if generator.name == name:
|
||||
return generator
|
||||
"""
|
||||
Gets a generator by name.
|
||||
|
||||
return None
|
||||
Args:
|
||||
name (str): The name of the generator.
|
||||
|
||||
Returns:
|
||||
Generator | None: The generator if found, otherwise None.
|
||||
"""
|
||||
return self._generators[name] if name in self._generators else None
|
||||
|
||||
class DefaultGeneratorProvider(GeneratorProvider):
|
||||
def __init__(self):
|
||||
self._api = api.GitHubApi()
|
||||
super().__init__(
|
||||
[
|
||||
ReleasesGenerator(),
|
||||
ContributorsGenerator(),
|
||||
TeamGenerator(),
|
||||
ConnectionsGenerator(),
|
||||
DonationsGenerator()
|
||||
]
|
||||
)
|
||||
|
||||
super().__init__([
|
||||
ReleasesGenerator(self._api),
|
||||
ContributorsGenerator(self._api),
|
||||
ConnectionsGenerator(self._api),
|
||||
TeamGenerator(self._api),
|
||||
DonationsGenerator(self._api)
|
||||
])
|
||||
class AnnouncementsGeneratorProvider(GeneratorProvider):
|
||||
def __init__(self):
|
||||
super().__init__(
|
||||
[
|
||||
AnnouncementGenerator(),
|
||||
RemoveAnnouncementGenerator()
|
||||
]
|
||||
)
|
22
main.py
22
main.py
@ -2,23 +2,27 @@ from genericpath import isdir, isfile
|
||||
import os
|
||||
import shutil
|
||||
from app.config import load_config
|
||||
from app.dependencies import wire_dependencies
|
||||
from app.generator import DefaultGeneratorProvider
|
||||
|
||||
config = load_config()
|
||||
def main():
|
||||
config = load_config()
|
||||
|
||||
generator_provider = DefaultGeneratorProvider()
|
||||
|
||||
for path in config["purge"]:
|
||||
for path in config["purge"]:
|
||||
if isdir(path):
|
||||
shutil.rmtree(path)
|
||||
elif isfile(path):
|
||||
os.remove(path)
|
||||
|
||||
output = config["output"]
|
||||
output = config["output"]
|
||||
generator_provider = DefaultGeneratorProvider()
|
||||
|
||||
for generator_config in config["configs"]:
|
||||
for generator_config in config["configs"]:
|
||||
for generator_name in generator_config["generators"]:
|
||||
generator = generator_provider.get(generator_name)
|
||||
if generator is None:
|
||||
continue
|
||||
generator.generate(generator_config, output)
|
||||
|
||||
generator.generate(generator_config, output) if generator is not None else print(f"Generator {generator_name} not found.")
|
||||
if __name__ == "__main__":
|
||||
wire_dependencies()
|
||||
main()
|
||||
|
||||
|
112
poetry.lock
generated
112
poetry.lock
generated
@ -1,5 +1,16 @@
|
||||
# This file is automatically @generated by Poetry 1.6.1 and should not be changed by hand.
|
||||
|
||||
[[package]]
|
||||
name = "argparse"
|
||||
version = "1.4.0"
|
||||
description = "Python command-line parsing library"
|
||||
optional = false
|
||||
python-versions = "*"
|
||||
files = [
|
||||
{file = "argparse-1.4.0-py2.py3-none-any.whl", hash = "sha256:c31647edb69fd3d465a847ea3157d37bed1f95f19760b11a47aa91c04b666314"},
|
||||
{file = "argparse-1.4.0.tar.gz", hash = "sha256:62b089a55be1d8949cd2bc7e0df0bddb9e028faefc8c32038cc84862aefdd6e4"},
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "certifi"
|
||||
version = "2023.7.22"
|
||||
@ -110,6 +121,94 @@ files = [
|
||||
{file = "charset_normalizer-3.3.1-py3-none-any.whl", hash = "sha256:800561453acdecedaac137bf09cd719c7a440b6800ec182f077bb8e7025fb708"},
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "dependency-injector"
|
||||
version = "4.41.0"
|
||||
description = "Dependency injection framework for Python"
|
||||
optional = false
|
||||
python-versions = "*"
|
||||
files = [
|
||||
{file = "dependency-injector-4.41.0.tar.gz", hash = "sha256:939dfc657104bc3e66b67afd3fb2ebb0850c9a1e73d0d26066f2bbdd8735ff9c"},
|
||||
{file = "dependency_injector-4.41.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:a2381a251b04244125148298212550750e6e1403e9b2850cc62e0e829d050ad3"},
|
||||
{file = "dependency_injector-4.41.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:75280dfa23f7c88e1bf56c3920d58a43516816de6f6ab2a6650bb8a0f27d5c2c"},
|
||||
{file = "dependency_injector-4.41.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:63bfba21f8bff654a80e9b9d06dd6c43a442990b73bf89cd471314c11c541ec2"},
|
||||
{file = "dependency_injector-4.41.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3535d06416251715b45f8412482b58ec1c6196a4a3baa207f947f0b03a7c4b44"},
|
||||
{file = "dependency_injector-4.41.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d09c08c944a25dabfb454238c1a889acd85102b93ae497de523bf9ab7947b28a"},
|
||||
{file = "dependency_injector-4.41.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:586a0821720b15932addbefb00f7370fbcd5831d6ebbd6494d774b44ff96d23a"},
|
||||
{file = "dependency_injector-4.41.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7fa4970f12a3fc95d8796938b11c41276ad1ff4c447b0e589212eab3fc527a90"},
|
||||
{file = "dependency_injector-4.41.0-cp310-cp310-win32.whl", hash = "sha256:d557e40673de984f78dab13ebd68d27fbb2f16d7c4e3b663ea2fa2f9fae6765b"},
|
||||
{file = "dependency_injector-4.41.0-cp310-cp310-win_amd64.whl", hash = "sha256:3744c327d18408e74781bd6d8b7738745ee80ef89f2c8daecf9ebd098cb84972"},
|
||||
{file = "dependency_injector-4.41.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:89c67edffe7007cf33cee79ecbca38f48efcc2add5c280717af434db6c789377"},
|
||||
{file = "dependency_injector-4.41.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:786f7aac592e191c9caafc47732161d807bad65c62f260cd84cd73c7e2d67d6d"},
|
||||
{file = "dependency_injector-4.41.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b8b61a15bc46a3aa7b29bd8a7384b650aa3a7ef943491e93c49a0540a0b3dda4"},
|
||||
{file = "dependency_injector-4.41.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a4f113e5d4c3070973ad76e5bda7317e500abae6083d78689f0b6e37cf403abf"},
|
||||
{file = "dependency_injector-4.41.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:5fa3ed8f0700e47a0e7363f949b4525ffa8277aa1c5b10ca5b41fce4dea61bb9"},
|
||||
{file = "dependency_injector-4.41.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:05e15ea0f2b14c1127e8b0d1597fef13f98845679f63bf670ba12dbfc12a16ef"},
|
||||
{file = "dependency_injector-4.41.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3055b3fc47a0d6e5f27defb4166c0d37543a4967c279549b154afaf506ce6efc"},
|
||||
{file = "dependency_injector-4.41.0-cp311-cp311-win32.whl", hash = "sha256:37d5954026e3831663518d78bdf4be9c2dbfea691edcb73c813aa3093aa4363a"},
|
||||
{file = "dependency_injector-4.41.0-cp311-cp311-win_amd64.whl", hash = "sha256:f89a507e389b7e4d4892dd9a6f5f4da25849e24f73275478634ac594d621ab3f"},
|
||||
{file = "dependency_injector-4.41.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:ac79f3c05747f9724bd56c06985e78331fc6c85eb50f3e3f1a35e0c60f9977e9"},
|
||||
{file = "dependency_injector-4.41.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:75e7a733b372db3144a34020c4233f6b94db2c6342d6d16bc5245b1b941ee2bd"},
|
||||
{file = "dependency_injector-4.41.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:40936d9384363331910abd59dd244158ec3572abf9d37322f15095315ac99893"},
|
||||
{file = "dependency_injector-4.41.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4a31d9d60be4b585585081109480cfb2ef564d3b851cb32a139bf8408411a93a"},
|
||||
{file = "dependency_injector-4.41.0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:953bfac819d32dc72b963767589e0ed372e5e9e78b03fb6b89419d0500d34bbe"},
|
||||
{file = "dependency_injector-4.41.0-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:8f0090ff14038f17a026ca408a3a0b0e7affb6aa7498b2b59d670f40ac970fbe"},
|
||||
{file = "dependency_injector-4.41.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:6b29abac56ce347d2eb58a560723e1663ee2125cf5cc38866ed92b84319927ec"},
|
||||
{file = "dependency_injector-4.41.0-cp36-cp36m-win32.whl", hash = "sha256:059fbb48333148143e8667a5323d162628dfe27c386bd0ed3deeecfc390338bf"},
|
||||
{file = "dependency_injector-4.41.0-cp36-cp36m-win_amd64.whl", hash = "sha256:16de2797dcfcc2263b8672bf0751166f7c7b369ca2ff9246ceb67b65f8e1d802"},
|
||||
{file = "dependency_injector-4.41.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c71d30b6708438050675f338edb9a25bea6c258478dbe5ec8405286756a2d347"},
|
||||
{file = "dependency_injector-4.41.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d283aee588a72072439e6721cb64aa6cba5bc18c576ef0ab28285a6ec7a9d655"},
|
||||
{file = "dependency_injector-4.41.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc852da612c7e347f2fcf921df2eca2718697a49f648a28a63db3ab504fd9510"},
|
||||
{file = "dependency_injector-4.41.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:02620454ee8101f77a317f3229935ce687480883d72a40858ff4b0c87c935cce"},
|
||||
{file = "dependency_injector-4.41.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:7a92680bea1c260e5c0d2d6cd60b0c913cba76a456a147db5ac047ecfcfcc758"},
|
||||
{file = "dependency_injector-4.41.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:168334cba3f1cbf55299ef38f0f2e31879115cc767b780c859f7814a52d80abb"},
|
||||
{file = "dependency_injector-4.41.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:48b6886a87b4ceb9b9f78550f77b2a5c7d2ce33bc83efd886556ad468cc9c85a"},
|
||||
{file = "dependency_injector-4.41.0-cp37-cp37m-win32.whl", hash = "sha256:87be84084a1b922c4ba15e2e5aa900ee24b78a5467997cb7aec0a1d6cdb4a00b"},
|
||||
{file = "dependency_injector-4.41.0-cp37-cp37m-win_amd64.whl", hash = "sha256:8b8cf1c6c56f5c18bdbd9f5e93b52ca29cb4d99606d4056e91f0c761eef496dc"},
|
||||
{file = "dependency_injector-4.41.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:a8686fa330c83251c75c8238697686f7a0e0f6d40658538089165dc72df9bcff"},
|
||||
{file = "dependency_injector-4.41.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8d670a844268dcd758195e58e9a5b39fc74bb8648aba99a13135a4a10ec9cfac"},
|
||||
{file = "dependency_injector-4.41.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9e3b9d41e0eff4c8e16fea1e33de66ff0030fe51137ca530f3c52ce110447914"},
|
||||
{file = "dependency_injector-4.41.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:33a724e0a737baadb4378f5dc1b079867cc3a88552fcca719b3dba84716828b2"},
|
||||
{file = "dependency_injector-4.41.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:3588bd887b051d16b8bcabaae1127eb14059a0719a8fe34c8a75ba59321b352c"},
|
||||
{file = "dependency_injector-4.41.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:409441122f40e1b4b8582845fdd76deb9dc5c9d6eb74a057b85736ef9e9c671f"},
|
||||
{file = "dependency_injector-4.41.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:7dcba8665cafec825b7095d5dd80afb5cf14404450eca3fe8b66e1edbf4dbc10"},
|
||||
{file = "dependency_injector-4.41.0-cp38-cp38-win32.whl", hash = "sha256:8b51efeaebacaf79ef68edfc65e9687699ccffb3538c4a3ab30d0d77e2db7189"},
|
||||
{file = "dependency_injector-4.41.0-cp38-cp38-win_amd64.whl", hash = "sha256:1662e2ef60ac6e681b9e11b5d8b7c17a0f733688916cf695f9540f8f50a61b1e"},
|
||||
{file = "dependency_injector-4.41.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:51217cb384b468d7cc355544cec20774859f00812f9a1a71ed7fa701c957b2a7"},
|
||||
{file = "dependency_injector-4.41.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b3890a12423ae3a9eade035093beba487f8d092ee6c6cb8706f4e7080a56e819"},
|
||||
{file = "dependency_injector-4.41.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:99ed73b1521bf249e2823a08a730c9f9413a58f4b4290da022e0ad4fb333ba3d"},
|
||||
{file = "dependency_injector-4.41.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:300838e9d4f3fbf539892a5a4072851728e23b37a1f467afcf393edd994d88f0"},
|
||||
{file = "dependency_injector-4.41.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:56d37b9d2f50a18f059d9abdbea7669a7518bd42b81603c21a27910a2b3f1657"},
|
||||
{file = "dependency_injector-4.41.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:4a44ca3ce5867513a70b31855b218be3d251f5068ce1c480cc3a4ad24ffd3280"},
|
||||
{file = "dependency_injector-4.41.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:67b369592c57549ccdcad0d5fef1ddb9d39af7fed8083d76e789ab0111fc6389"},
|
||||
{file = "dependency_injector-4.41.0-cp39-cp39-win32.whl", hash = "sha256:740a8e8106a04d3f44b52b25b80570fdac96a8a3934423de7c9202c5623e7936"},
|
||||
{file = "dependency_injector-4.41.0-cp39-cp39-win_amd64.whl", hash = "sha256:22b11dbf696e184f0b3d5ac4e5418aeac3c379ba4ea758c04a83869b7e5d1cbf"},
|
||||
{file = "dependency_injector-4.41.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:b365a8548e9a49049fa6acb24d3cd939f619eeb8e300ca3e156e44402dcc07ec"},
|
||||
{file = "dependency_injector-4.41.0-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5168dc59808317dc4cdd235aa5d7d556d33e5600156acaf224cead236b48a3e8"},
|
||||
{file = "dependency_injector-4.41.0-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e3229d83e99e255451605d5276604386e06ad948e3d60f31ddd796781c77f76f"},
|
||||
{file = "dependency_injector-4.41.0-pp37-pypy37_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1baee908f21190bdc46a65ce4c417a5175e9397ca62354928694fce218f84487"},
|
||||
{file = "dependency_injector-4.41.0-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:b37f36ecb0c1227f697e1d4a029644e3eda8dd0f0716aa63ad04d96dbb15bbbb"},
|
||||
{file = "dependency_injector-4.41.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:b0c9c966ff66c77364a2d43d08de9968aff7e3903938fe912ba49796b2133344"},
|
||||
{file = "dependency_injector-4.41.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:12e91ac0333e7e589421943ff6c6bf9cf0d9ac9703301cec37ccff3723406332"},
|
||||
{file = "dependency_injector-4.41.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b2440b32474d4e747209528ca3ae48f42563b2fbe3d74dbfe949c11dfbfef7c4"},
|
||||
{file = "dependency_injector-4.41.0-pp38-pypy38_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:54032d62610cf2f4421c9d92cef52957215aaa0bca403cda580c58eb3f726eda"},
|
||||
{file = "dependency_injector-4.41.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:76b94c8310929e54136f3cb3de3adc86d1a657b3984299f40bf1cd2ba0bae548"},
|
||||
{file = "dependency_injector-4.41.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:6ee9810841c6e0599356cb884d16453bfca6ab739d0e4f0248724ed8f9ee0d79"},
|
||||
{file = "dependency_injector-4.41.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6b98945edae88e777091bf0848f869fb94bd76dfa4066d7c870a5caa933391d0"},
|
||||
{file = "dependency_injector-4.41.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a2dee5d4abdd21f1a30a51d46645c095be9dcc404c7c6e9f81d0a01415a49e64"},
|
||||
{file = "dependency_injector-4.41.0-pp39-pypy39_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d03f5fa0fa98a18bd0dfce846db80e2798607f0b861f1f99c97f441f7669d7a2"},
|
||||
{file = "dependency_injector-4.41.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:f2842e15bae664a9f69932e922b02afa055c91efec959cb1896f6c499bf68180"},
|
||||
]
|
||||
|
||||
[package.dependencies]
|
||||
six = ">=1.7.0,<=1.16.0"
|
||||
|
||||
[package.extras]
|
||||
aiohttp = ["aiohttp"]
|
||||
flask = ["flask"]
|
||||
pydantic = ["pydantic"]
|
||||
yaml = ["pyyaml"]
|
||||
|
||||
[[package]]
|
||||
name = "idna"
|
||||
version = "3.4"
|
||||
@ -142,6 +241,17 @@ urllib3 = ">=1.21.1,<3"
|
||||
socks = ["PySocks (>=1.5.6,!=1.5.7)"]
|
||||
use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"]
|
||||
|
||||
[[package]]
|
||||
name = "six"
|
||||
version = "1.16.0"
|
||||
description = "Python 2 and 3 compatibility utilities"
|
||||
optional = false
|
||||
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*"
|
||||
files = [
|
||||
{file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"},
|
||||
{file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"},
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "types-requests"
|
||||
version = "2.31.0.10"
|
||||
@ -176,4 +286,4 @@ zstd = ["zstandard (>=0.18.0)"]
|
||||
[metadata]
|
||||
lock-version = "2.0"
|
||||
python-versions = "^3.11"
|
||||
content-hash = "747d86bc4792bf2d1f4713f4ee23731066fd73ef95c3bb6a15bbdce896232193"
|
||||
content-hash = "90d93d31831c54536a6cf28bd6c2eebf3c6dd4abce301bf1120b9f8d0ed6bee7"
|
||||
|
@ -9,6 +9,8 @@ readme = "README.md"
|
||||
[tool.poetry.dependencies]
|
||||
python = "^3.11"
|
||||
requests = "^2.28.2"
|
||||
argparse = "^1.4.0"
|
||||
dependency-injector = "^4.41.0"
|
||||
|
||||
[tool.poetry.group.dev.dependencies]
|
||||
types-requests = "^2.28.11.17"
|
||||
|
Loading…
x
Reference in New Issue
Block a user