Skip to content
Snippets Groups Projects
Commit 33bb9b68 authored by Mohammad Torkashvand's avatar Mohammad Torkashvand
Browse files

Add reqs_checker.py for synchronizing dependencies between requirements.txt and setup.py

parent ddfbeef4
Branches
Tags
No related merge requests found
Pipeline #84634 failed
import re
def read_requirements_txt(file_path):
with open(file_path, 'r') as file:
lines = file.readlines()
def _dev_req_index():
return next((i for i, line in enumerate(lines) if "# dev requirements" in line), len(lines))
dev_req_index = _dev_req_index()
assert dev_req_index != len(lines), f"Missing # dev requirements section in {file_path}"
return [line.strip() for line in lines[:_dev_req_index()] if line.strip() and not line.startswith('#')]
def read_requirements_setup(file_path):
with open(file_path, 'r') as file:
content = file.read()
# Find and extract the install_requires section
matches = re.findall(r'install_requires=\[(.*?)\]', content, re.DOTALL)
if matches:
return re.findall(r'"([^"]+)"', matches[0])
return []
def compare_requirements(reqs, setup_reqs):
missing_in_setup = set(reqs) - set(setup_reqs)
missing_in_requirements = set(setup_reqs) - set(reqs)
return missing_in_setup, missing_in_requirements
def main():
reqs = read_requirements_txt('requirements.txt')
setup_reqs = read_requirements_setup('setup.py')
missing_in_setup, missing_in_requirements = compare_requirements(reqs, setup_reqs)
if not missing_in_setup and not missing_in_requirements:
print("Requirements are synchronized.")
else:
if missing_in_setup:
print("Missing or different in setup.py:", ', '.join(missing_in_setup))
if missing_in_requirements:
print("Missing or different in requirements.txt:", ', '.join(missing_in_requirements))
if __name__ == "__main__":
main()
jsonschema~=4.20.0 jsonschema~=4.20.0
fastapi~=0.104.1 fastapi~=0.104.1
pydantic~=2.0.3 pydantic~=2.5.1
ansible-runner==2.3.4 ansible~=9.0.1
uvicorn[standard]~=0.22.0 requests~=2.31.0
httpx~=0.25.1 uvicorn~=0.22.0
ncclient~=0.6.13
xmltodict~=0.13.0
netaddr~=0.9.0
jmespath~=1.0.0
dictdiffer~=0.9.0
ansible-runner~=2.3.3
junos-eznc~=2.6.8
jxmlease~=1.0.3
ansible-core~=2.16.0 ansible-core~=2.16.0
ansible_merge_vars~=5.0.0 ansible_merge_vars~=5.0.0
httpx~=0.25.1
GitPython~=3.1.40 GitPython~=3.1.40
jinja2==3.1.2 jinja2==3.1.2
junos-eznc~=2.6.8
jxmlease~=1.0.3
ncclient~=0.6.13
ruamel.yaml~=0.18.5 ruamel.yaml~=0.18.5
xmltodict~=0.13.0
dictdiffer~=0.9.0
jmespath~=1.0.1
# dev requirements # dev requirements
pytest~=7.4.3 pytest~=7.4.3
Faker~=20.0.3 Faker~=20.1.0
responses~=0.24.1 responses~=0.24.1
sphinx~=7.2.6 sphinx~=7.2.6
sphinx-rtd-theme~=1.3.0 sphinx-rtd-theme~=1.3.0
requests~=2.31.0
docutils~=0.18.1 docutils~=0.18.1
isort~=5.12.0 isort~=5.12.0
black~=23.11.0 black~=23.11.0
......
...@@ -9,21 +9,21 @@ setup( ...@@ -9,21 +9,21 @@ setup(
url="https://gitlab.geant.org/goat/gap/lso", url="https://gitlab.geant.org/goat/gap/lso",
packages=find_packages(), packages=find_packages(),
install_requires=[ install_requires=[
"jsonschema~=4.18.0", "jsonschema~=4.20.0",
"fastapi~=0.100.0", "fastapi~=0.104.1",
"pydantic~=2.0.2", "pydantic~=2.5.1",
"ansible~=8.1.0", "ansible~=9.0.1",
"requests~=2.31.0", "requests~=2.31.0",
"uvicorn~=0.22.0", "uvicorn~=0.22.0",
"ncclient~=0.6.13", "ncclient~=0.6.13",
"xmltodict~=0.13.0", "xmltodict~=0.13.0",
"netaddr~=0.8.0", "netaddr~=0.9.0",
"jmespath~=1.0.0", "jmespath~=1.0.0",
"dictdiffer~=0.9.0", "dictdiffer~=0.9.0",
"ansible-runner~=2.3.3", "ansible-runner~=2.3.3",
"junos-eznc~=2.6.8", "junos-eznc~=2.6.8",
"jxmlease~=1.0.3", "jxmlease~=1.0.3",
"ansible-core~=2.15.1", "ansible-core~=2.16.0",
"ansible_merge_vars~=5.0.0", "ansible_merge_vars~=5.0.0",
"httpx~=0.25.1", "httpx~=0.25.1",
"GitPython~=3.1.40", "GitPython~=3.1.40",
......
...@@ -31,3 +31,4 @@ commands = ...@@ -31,3 +31,4 @@ commands =
coverage xml coverage xml
coverage html coverage html
coverage report --fail-under 80 coverage report --fail-under 80
python reqs_checker.py
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment