mirror of
https://github.com/archlinux/aur.git
synced 2026-01-27 20:28:31 +01:00
43 lines
1.1 KiB
Python
Executable file
43 lines
1.1 KiB
Python
Executable file
#!/usr/bin/env python
|
|
|
|
# need python-packaging
|
|
|
|
import sys
|
|
import platform
|
|
import argparse
|
|
from packaging.requirements import Requirement
|
|
|
|
def filter_requirements(file_path):
|
|
current_python = f"{sys.version_info.major}.{sys.version_info.minor}"
|
|
current_system = platform.system()
|
|
|
|
with open(file_path, "r") as f:
|
|
lines = f.readlines()
|
|
|
|
filtered = []
|
|
for line in lines:
|
|
line = line.strip()
|
|
if not line or line.startswith("#"):
|
|
continue
|
|
|
|
try:
|
|
req = Requirement(line)
|
|
if req.marker:
|
|
if not req.marker.evaluate({"python_version": current_python, "sys_platform": current_system}):
|
|
continue
|
|
filtered.append(line)
|
|
except Exception as e:
|
|
print(f"{line}, error: {e}")
|
|
|
|
return filtered
|
|
|
|
def main():
|
|
parser = argparse.ArgumentParser(description="filter requirements.txt")
|
|
parser.add_argument("file", help="path to requirements.txt")
|
|
args = parser.parse_args()
|
|
|
|
filtered_reqs = filter_requirements(args.file)
|
|
print("\n".join(filtered_reqs))
|
|
|
|
if __name__ == "__main__":
|
|
main()
|