[FIX] support real version from requirements.txt with poetry
- Add ignore requirements to exclude pip installation - Rename dependancy to dependency
This commit is contained in:
parent
e74ba1f31e
commit
f4b1687bfc
5 changed files with 878 additions and 533 deletions
1
ignore_requirements.txt
Normal file
1
ignore_requirements.txt
Normal file
|
|
@ -0,0 +1 @@
|
|||
mercurial
|
||||
1234
poetry.lock
generated
1234
poetry.lock
generated
File diff suppressed because it is too large
Load diff
133
pyproject.toml
133
pyproject.toml
|
|
@ -11,116 +11,121 @@ authors = [ "Mathieu Benoit <mathben@technolibre.ca>", "Alexandre Ferreira Benev
|
|||
|
||||
[tool.poetry.dependencies]
|
||||
python = "^3.7"
|
||||
Babel = "^2.3.4"
|
||||
Babel = "2.3.4"
|
||||
GitPython = "^3.1.7"
|
||||
Jinja2 = "^2.10.1"
|
||||
Mako = "^1.0.4"
|
||||
MarkupSafe = "^0.23"
|
||||
Pillow = "^6.1.0"
|
||||
PyJWT = "^1.7.1"
|
||||
PyPDF2 = "^1.26.0"
|
||||
PyYAML = "^4.2b4"
|
||||
Jinja2 = "2.10.1"
|
||||
Mako = "1.0.4"
|
||||
MarkupSafe = "0.23"
|
||||
Pillow = "6.1.0"
|
||||
PyJWT = "1.7.1"
|
||||
PyPDF2 = "1.26.0"
|
||||
PyYAML = "4.2b4"
|
||||
SOAPpy = "^0.12.22"
|
||||
Voicent-Python = "^1.0"
|
||||
Werkzeug = "^0.11.15"
|
||||
XlsxWriter = "^0.9.3"
|
||||
Werkzeug = "0.11.15"
|
||||
XlsxWriter = "0.9.3"
|
||||
agithub = "^2.2.2"
|
||||
altair = "^4.1.0"
|
||||
bokeh = "^1.1.0"
|
||||
boto3 = "^1.9.102"
|
||||
bokeh = "1.1.0"
|
||||
boto = "^2.49.0"
|
||||
boto3 = "1.9.102"
|
||||
cerberus = "^1.3.2"
|
||||
chardet = "^3.0.4"
|
||||
cryptography = "^2.6.1"
|
||||
chardet = "3.0.4"
|
||||
cryptography = "2.6.1"
|
||||
cython = "^0.29.21"
|
||||
ddt = "^1.2.0"
|
||||
decorator = "^4.0.10"
|
||||
docutils = "^0.12"
|
||||
ebaysdk = "^2.1.5"
|
||||
ddt = "1.2.0"
|
||||
decorator = "4.0.10"
|
||||
docutils = "0.12"
|
||||
ebaysdk = "2.1.5"
|
||||
email_validator = "^1.1.1"
|
||||
extract-msg = "^0.24.4"
|
||||
extract-msg = "^0.25.3"
|
||||
factur-x = "^1.12"
|
||||
feedparser = "^5.2.1"
|
||||
freezegun = "^0.3.11"
|
||||
geojson = "^2.4.1"
|
||||
gevent = "^1.3.4"
|
||||
feedparser = "5.2.1"
|
||||
freezegun = "0.3.11"
|
||||
geojson = "2.4.1"
|
||||
gevent = "1.3.4"
|
||||
gitpython = "^3.1.7"
|
||||
giturlparse = "^0.9.2"
|
||||
greenlet = "^0.4.13"
|
||||
html2text = "^2016.9.19"
|
||||
greenlet = "0.4.13"
|
||||
html2text = "2016.9.19"
|
||||
invoice2data = "^0.3.5"
|
||||
iscompatible = "^0.1.1"
|
||||
jira = "^2.0.0"
|
||||
keystoneauth1 = "^3.14.0"
|
||||
jira = "2.0.0"
|
||||
keystoneauth1 = "3.14.0"
|
||||
lasso = "^0.0.5"
|
||||
libsass = "^0.12.3"
|
||||
lxml = "^4.2.3"
|
||||
libsass = "0.12.3"
|
||||
lxml = "4.2.3"
|
||||
matplotlib = ">=2.0.0"
|
||||
mock = "^2.0.0"
|
||||
mpld3 = "^0.3"
|
||||
mock = "2.0.0"
|
||||
mpld3 = "0.3"
|
||||
mysqlclient = "^2.0.1"
|
||||
num2words = "^0.5.6"
|
||||
num2words = "0.5.6"
|
||||
numpy = "^1.19.1"
|
||||
oauthlib = "^2.1.0"
|
||||
oauthlib = "2.1.0"
|
||||
"oca.decorators" = "^0.0.1"
|
||||
ofxparse = "^0.16"
|
||||
ofxparse = "0.16"
|
||||
openpyxl = "^3.0.4"
|
||||
openupgradelib = "^2.0.0"
|
||||
paramiko = "^2.7.1"
|
||||
passlib = "^1.6.5"
|
||||
passlib = "1.6.5"
|
||||
pdf2image = "^1.13.1"
|
||||
phonenumbers = "^8.12.7"
|
||||
plotly = "^4.1.0"
|
||||
plotly = "4.1.0"
|
||||
premailer = "^3.7.0"
|
||||
psutil = "^4.3.1"
|
||||
psycopg2 = "^2.7.3.1"
|
||||
psutil = "4.3.1"
|
||||
psycopg2 = "2.7.3.1"
|
||||
py-Asterisk = "^0.5.18"
|
||||
"py3o.formats" = "^0.3"
|
||||
"py3o.template" = "^0.10.0"
|
||||
pycountry = "^20.7.3"
|
||||
pydot = "^1.2.3"
|
||||
pydot = "1.2.3"
|
||||
pygount = "<1.2.0"
|
||||
pyldap = "^2.4.28"
|
||||
pyldap = "2.4.28"
|
||||
pymssql = "^2.1.4"
|
||||
pyotp = "^2.3.0"
|
||||
pyparsing = "^2.1.10"
|
||||
pyserial = "^3.1.1"
|
||||
pyotp = "^2.4.0"
|
||||
pyparsing = "2.1.10"
|
||||
pyserial = "3.1.1"
|
||||
pysftp = "^0.2.9"
|
||||
python-dateutil = "^2.5.3"
|
||||
python-json-logger = "^0.1.5"
|
||||
python-keystoneclient = "^3.22.0"
|
||||
python-chess = "<0.24"
|
||||
python-dateutil = "2.5.3"
|
||||
python-json-logger = "0.1.5"
|
||||
python-keystoneclient = "3.22.0"
|
||||
python-slugify = ">=3.0.2"
|
||||
python-swiftclient = "^3.9.0"
|
||||
python-swiftclient = "3.9.0"
|
||||
python-u2flib-server = "^5.0.0"
|
||||
pytz = "^2016.7"
|
||||
pyusb = "^1.0.0"
|
||||
pytz = "2016.7"
|
||||
pyusb = "1.0.0"
|
||||
pyzbar = "^0.1.8"
|
||||
qrcode = "^5.3"
|
||||
qrcode = "5.3"
|
||||
raven = "^6.10.0"
|
||||
redis = "^2.10.5"
|
||||
reportlab = "^3.3.0"
|
||||
requests = "^2.20.0"
|
||||
redis = "2.10.5"
|
||||
reportlab = "3.3.0"
|
||||
requests = "2.20.0"
|
||||
requests-mock = "^1.8.0"
|
||||
requests-oauthlib = "^1.1.0"
|
||||
requests-toolbelt = "^0.9.1"
|
||||
requests-oauthlib = "1.1.0"
|
||||
requests-toolbelt = "0.9.1"
|
||||
retrying = "^1.3.3"
|
||||
shapely = "^1.6.4.post2"
|
||||
rotate_backups_s3 = "^0.3"
|
||||
shapely = "1.6.4.post2"
|
||||
simplejson = "^3.17.2"
|
||||
sphinx = ">=1.6.7"
|
||||
sphinx-patchqueue = ">=1.0"
|
||||
sqlalchemy = "^1.3.18"
|
||||
statsd = "^3.2.1"
|
||||
suds-jurko = "^0.6"
|
||||
statsd = "3.2.1"
|
||||
suds-jurko = "0.6"
|
||||
toml = "^0.10.1"
|
||||
unidecode = "^1.0.22"
|
||||
vatnumber = "^1.2"
|
||||
unidecode = "1.0.22"
|
||||
vatnumber = "1.2"
|
||||
vcrpy = ">=2.1.1"
|
||||
vcrpy-unittest = "^0.1.7"
|
||||
vobject = "^0.9.3"
|
||||
webcolors = "^1.10"
|
||||
vobject = "0.9.3"
|
||||
webcolors = "1.10"
|
||||
websocket-client = "^0.57.0"
|
||||
wheel = "^0.34.2"
|
||||
xlrd = "^1.0.0"
|
||||
xlwt = "^1.3"
|
||||
xlrd = "1.0.0"
|
||||
xlwt = "1.3"
|
||||
xmltodict = "^0.12.0"
|
||||
zeep = "^3.4.0"
|
||||
zxcvbn = "^4.4.28"
|
||||
|
||||
[tool.poetry.dev-dependencies]
|
||||
|
|
|
|||
3
script/poetry_add_build_dependency.sh
Executable file
3
script/poetry_add_build_dependency.sh
Executable file
|
|
@ -0,0 +1,3 @@
|
|||
#!/usr/bin/env bash
|
||||
source $HOME/.poetry/env
|
||||
poetry add -vv $(grep -v ";" ./.venv/build_dependency.txt | grep -v "*" )
|
||||
|
|
@ -27,7 +27,7 @@ def get_config():
|
|||
parser = argparse.ArgumentParser(
|
||||
formatter_class=argparse.RawDescriptionHelpFormatter,
|
||||
description='''\
|
||||
Update pip dependancy in Poetry, clear pyproject.toml, search all dependancies
|
||||
Update pip dependency in Poetry, clear pyproject.toml, search all dependencies
|
||||
from requirements.txt, search conflict version and generate a new list.
|
||||
Launch Poetry installation.
|
||||
''',
|
||||
|
|
@ -36,6 +36,8 @@ def get_config():
|
|||
)
|
||||
parser.add_argument('-d', '--dir', dest="dir", default="./",
|
||||
help="Path of repo to change remote, including submodule.")
|
||||
parser.add_argument('-f', '--force', action="store_true",
|
||||
help="Force create new list of dependency, ignore poetry.lock.")
|
||||
parser.add_argument('-v', '--verbose', action="store_true",
|
||||
help="More information in execution, show stats.")
|
||||
args = parser.parse_args()
|
||||
|
|
@ -50,7 +52,7 @@ def combine_requirements(config):
|
|||
"""
|
||||
Search all module and version in all requirements.txt file in this project.
|
||||
For each version, check compatibility and show warning with provenance file
|
||||
Generate requirements.txt to "./.venv/build_dependancy.txt"
|
||||
Generate requirements.txt to "./.venv/build_dependency.txt"
|
||||
:param config:
|
||||
:return:
|
||||
"""
|
||||
|
|
@ -174,11 +176,21 @@ def combine_requirements(config):
|
|||
else:
|
||||
print(f"Internal error, missing result for {lst_requis}.")
|
||||
|
||||
with open("./.venv/build_dependancy.txt", 'w') as f:
|
||||
# Support ignored requirements
|
||||
lst_ignore = get_list_ignored()
|
||||
lst_ignored_key = []
|
||||
for key in dct_requirements.keys():
|
||||
for ignored in lst_ignore:
|
||||
if ignored == key:
|
||||
lst_ignored_key.append(key)
|
||||
for key in lst_ignored_key:
|
||||
del dct_requirements[key]
|
||||
|
||||
with open("./.venv/build_dependency.txt", 'w') as f:
|
||||
f.writelines([f"{list(a)[0]}\n" for a in dct_requirements.values()])
|
||||
|
||||
|
||||
def sorted_dependancy_poetry(pyproject_filename):
|
||||
def sorted_dependency_poetry(pyproject_filename):
|
||||
# Open pyproject.toml
|
||||
with open(pyproject_filename, 'r') as f:
|
||||
dct_pyproject = toml.load(f)
|
||||
|
|
@ -200,7 +212,7 @@ def sorted_dependancy_poetry(pyproject_filename):
|
|||
toml.dump(dct_pyproject, f)
|
||||
|
||||
|
||||
def delete_dependancy_poetry(pyproject_filename):
|
||||
def delete_dependency_poetry(pyproject_filename):
|
||||
# Open pyproject.toml
|
||||
with open(pyproject_filename, 'r') as f:
|
||||
dct_pyproject = toml.load(f)
|
||||
|
|
@ -220,8 +232,14 @@ def delete_dependancy_poetry(pyproject_filename):
|
|||
toml.dump(dct_pyproject, f)
|
||||
|
||||
|
||||
def call_poetry_add_build_dependancy():
|
||||
os.system("./script/poetry_add_build_dependancy.sh")
|
||||
def call_poetry_add_build_dependency():
|
||||
os.system("./script/poetry_add_build_dependency.sh")
|
||||
|
||||
|
||||
def get_list_ignored():
|
||||
with open("./ignore_requirements.txt", 'r') as f:
|
||||
lst_ignore_requirements = [a.strip() for a in f.readlines()]
|
||||
return lst_ignore_requirements
|
||||
|
||||
|
||||
def main():
|
||||
|
|
@ -230,10 +248,12 @@ def main():
|
|||
config = get_config()
|
||||
pyproject_toml_filename = f'{config.dir}pyproject.toml'
|
||||
|
||||
delete_dependancy_poetry(pyproject_toml_filename)
|
||||
delete_dependency_poetry(pyproject_toml_filename)
|
||||
combine_requirements(config)
|
||||
call_poetry_add_build_dependancy()
|
||||
sorted_dependancy_poetry(pyproject_toml_filename)
|
||||
if config.force:
|
||||
os.remove("./poetry.lock")
|
||||
call_poetry_add_build_dependency()
|
||||
sorted_dependency_poetry(pyproject_toml_filename)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
|
|
|
|||
Loading…
Reference in a new issue