# HG changeset patch # User Vincent Hatakeyama <vincent.hatakeyama@xcg-consulting.fr> # Date 1671120378 -3600 # Thu Dec 15 17:06:18 2022 +0100 # Node ID d6dc8810721e453025e4224f9ec76ac7ea29bc47 # Parent ca586c1c865ef153e3f5486903f5d91cfa682732 📠Update to use only pyproject.toml and remove setup.py Extract version with setuptools-scm diff --git a/.bumpversion.cfg b/.bumpversion.cfg --- a/.bumpversion.cfg +++ b/.bumpversion.cfg @@ -9,8 +9,6 @@ [bumpversion:file:create_documentation] -[bumpversion:file:doc/conf.py] - [bumpversion:file:do_tests] [bumpversion:file:run_tests] @@ -18,10 +16,3 @@ [bumpversion:file:start] [bumpversion:file:odoo_scripts/__init__.py] - -[bumpversion:file:pyproject.toml] - -[bumpversion:file:setup.py] - -[flake8] -max-line-length = 88 diff --git a/.dockerignore b/.dockerignore --- a/.dockerignore +++ b/.dockerignore @@ -1,2 +1,1 @@ -.hg -tests \ No newline at end of file +tests diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -53,11 +53,19 @@ unittest-py310: extends: unittest image: python:3.10-alpine + before_script: + # mercurial is needed so setuptools-scm does not crash when running hg to get the version number + - apk add git mercurial + - python3 -m pip install tox script: - - apk add git - - python3 -m pip install tox - tox --workdir=.cache/tox -e py310,coverage-report,coverage-xml +unittest-py311: + extends: unittest-py310 + image: python:3.11-alpine + script: + - tox --workdir=.cache/tox -e py311,coverage-report,coverage-xml + import_jsonrpc_odoo11_test: stage: test needs: [] @@ -73,12 +81,13 @@ POSTGRES_HOST_AUTH_METHOD: trust ODOO_ADDONS_PATH: "" ODOO_TYPE: odoo11 - __PIP_EXTRA_OPTS: "--system" before_script: + - python3 -m pip show pip setuptools + - python3 -m pip install pip>10 # install modules - $CI_PROJECT_DIR/start --db_host=db -d test_setup --max-cron-threads=0 --without-demo=all --data-dir /var/lib/odoo --init base --stop-after-init # install current version as this is the one tested, not the one in the image - - python3 -m pip install --disable-pip-version-check --no-cache-dir $__PIP_EXTRA_OPTS --upgrade $CI_PROJECT_DIR + - python3 -m pip install --disable-pip-version-check --no-cache-dir --upgrade $CI_PROJECT_DIR script: # restart odoo with installed modules and use it in background - $CI_PROJECT_DIR/start --db_host=db -d test_setup --max-cron-threads=0 --data-dir /var/lib/odoo & @@ -92,6 +101,11 @@ - pkill --echo --full /usr/bin/python3 - pkill --echo --full zsh +import_jsonrpc_odoo11_test-focal: + extends: import_jsonrpc_odoo11_test + image: + name: quay.orus.io/odoo/odoo:11.0-focal + import_base_import_odoo11_test: extends: import_jsonrpc_odoo11_test script: @@ -120,7 +134,6 @@ entrypoint: [""] variables: ODOO_TYPE: odoo15 - __PIP_EXTRA_OPTS: "" docker_build_copy_test: needs: @@ -143,8 +156,8 @@ expire_in: 10m script: - apk add make + - pip3 install hg-evolve .[doc] - cd doc - - pip3 install -r requirements hg-evolve - for language in en fr ; do make LANGUAGE=$language BUILDDIRSUFFIX=/$CI_COMMIT_HG_BRANCH html ; done publish_documentation: diff --git a/Dockerfile b/Dockerfile --- a/Dockerfile +++ b/Dockerfile @@ -10,9 +10,8 @@ LABEL org.opencontainers.image.source=$VCS_URL ADD . /usr/src/odoo_scripts RUN set -x ;\ - apk add --no-cache --update zsh rsync postgresql-libs && \ + apk add --no-cache --update zsh rsync postgresql-libs mercurial && \ apk add --no-cache --virtual .build-deps gcc musl-dev postgresql-dev git && \ - python3 -m pip install -r /usr/src/odoo_scripts/requirements && \ python3 -m pip install /usr/src/odoo_scripts[import_sql,conf2reST,source_control] && \ apk --purge del .build-deps && \ rm -rf /usr/src/odoo_scripts diff --git a/NEWS.rst b/NEWS.rst --- a/NEWS.rst +++ b/NEWS.rst @@ -9,6 +9,12 @@ Compatibility with longpolling. +Extract version number with setuptools-scm. + +Update to use only pyproject.toml and remove setup.py. + +Add tests for python 3.11. + 16.10.0 ------- diff --git a/doc/conf.py b/doc/conf.py --- a/doc/conf.py +++ b/doc/conf.py @@ -4,6 +4,8 @@ # list see the documentation: # https://www.sphinx-doc.org/en/master/usage/configuration.html +import odoo_scripts + # -- Path setup -------------------------------------------------------------- # If extensions (or modules to document with autodoc) are in another directory, @@ -22,7 +24,7 @@ author = "Vincent Hatakeyama" # The full version, including alpha/beta/rc tags -release = "16.10.0" +release = odoo_scripts.__version__ # -- General configuration --------------------------------------------------- diff --git a/doc/requirements b/doc/requirements deleted file mode 100644 --- a/doc/requirements +++ /dev/null @@ -1,3 +0,0 @@ -sphinx -# used when updating translation files -sphinx-intl diff --git a/odoo_scripts/__init__.py b/odoo_scripts/__init__.py --- a/odoo_scripts/__init__.py +++ b/odoo_scripts/__init__.py @@ -1,5 +1,16 @@ """Odoo Scripts""" -__version__ = "16.10.0" +try: + # python 3.8+ + from importlib.metadata import PackageNotFoundError, version +except ModuleNotFoundError: + from importlib_metadata import PackageNotFoundError, version + +try: + __version__ = version("odoo-scripts") +except PackageNotFoundError: + # package is not installed, default to something + __version__ = "16.10.0" + __author__ = "XCG Consulting" # expose some useful functions diff --git a/pyproject.toml b/pyproject.toml --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "odoo_scripts" -version = "16.10.0" +dynamic = ["version"] description = "Collection of scripts for Odoo" readme = "README.rst" requires-python = ">=3.6" @@ -15,11 +15,68 @@ "Environment :: Console", ] keywords = ["odoo"] +dependencies = [ + "odoorpc>=0.8.0", + "requests_toolbelt==0.8.0", + "python-dateutil>=2.7.0", + "coloredlogs", + "PyYAML", + "importlib_metadata; python_version<'3.8'" +] + +[project.optional-dependencies] +doc = [ + "sphinx", + # used when updating translation files + "sphinx-intl" +] +conf2reST = [] +docker = [ + "docker >=3.4", + "dockerpty", + # used in docker_rednerd + "requests_unixsocket", + "requests", +] +import_sql = ["psycopg2"] +source_control = [ + # Only mercurial 5.2 support Python 3.5+ + "mercurial >=5.2", + "python-hglib", +] + +[project.scripts] +import_base_import = "odoo_scripts.import_base_import:main" +import_jsonrpc= "odoo_scripts.import_jsonrpc:main" +import_sql="odoo_scripts.import_sql:main [import_sql]" +docker_dev_start="odoo_scripts.docker_dev_start:main [docker]" +do_tests="odoo_scripts.do_tests:main" +docker_black="odoo_scripts.docker_black:main [docker]" +docker_build="odoo_scripts.docker_build:main [docker]" +docker_build_doc="odoo_scripts.docker_build_doc:main [docker]" +docker_build_clean="odoo_scripts.docker_build_clean:main" +docker_build_copy="odoo_scripts.docker_build_copy:main" +docker_flake8="odoo_scripts.docker_flake8:main [docker]" +docker_isort="odoo_scripts.docker_isort:main [docker]" +docker_pg="odoo_scripts.docker_postgresql:main [docker]" +docker_prettier="odoo_scripts.docker_prettier:main [docker]" +docker_pylint="odoo_scripts.docker_pylint:main [docker]" +docker_rednerd="odoo_scripts.docker_rednerd:main [docker]" +conf2reST="odoo_scripts.conf2reST:main [conf2reST]" +odoo_conf_inject_env_var="odoo_scripts.odoo_conf_inject_env_var:main" +list_modules="odoo_scripts.list_modules:main" +update_duplicate_sources="odoo_scripts.update_duplicate_sources:main [source_control]" + +[project.urls] +repository = "https://orus.io/xcg/odoo_scripts" +changelog = "https://orus.io/xcg/odoo_scripts/-/blob/branch/default/NEWS.rst" [build-system] -requires = ["setuptools >= 40.6.0", "wheel"] +requires = ["setuptools >= 45", "wheel", "setuptools_scm[toml] >= 6.2"] build-backend = "setuptools.build_meta" +[tool.setuptools_scm] + [tool.black] target = 3.6 @@ -37,11 +94,11 @@ legacy_tox_ini = """ [tox] minversion = 3.15 -envlist = py36,py37,py38,py39,py310,coverage-report +envlist = py36,py37,py38,py39,py310,py311,coverage-report skip_missing_interpreters = true isolated_build = True -[testenv:py{36,37,38,39,310}] +[testenv:py{36,37,38,39,310,311}] setenv = COVERAGE_FILE = .coverage.{envname} deps = @@ -53,7 +110,7 @@ [testenv:coverage-report] skip_install = true deps = coverage[toml] -depends = py36,py37,py38,py39,py310 +depends = py36,py37,py38,py39,py310,py311 commands = coverage combine coverage report diff --git a/requirements b/requirements deleted file mode 100644 --- a/requirements +++ /dev/null @@ -1,12 +0,0 @@ -# This includes the requirements for all extras -git+https://github.com/oca/odoorpc@master#egg=odoorpc -requests_toolbelt==0.8.0 -python-dateutil>=2.7.0 -PyYAML -coloredlogs -docker -dockerpty -psycopg2 -mercurial >=5.2 -python-hglib -requests-unixsocket diff --git a/setup.py b/setup.py deleted file mode 100644 --- a/setup.py +++ /dev/null @@ -1,73 +0,0 @@ -from setuptools import find_packages, setup - -with open("README.rst", "r") as fh: - long_description = fh.read() - -setup( - name="odoo_scripts", - description="Collection of scripts for Odoo", - version="16.10.0", - long_description=long_description, - long_description_content_type="text/x-rst", - author="XCG Consulting", - license="MIT", - packages=find_packages(), - install_requires=[ - "odoorpc>=0.8.0", - "requests_toolbelt==0.8.0", - "python-dateutil>=2.7.0", - "coloredlogs", - "PyYAML", - ], - extras_require={ - # used to require PyYAML but it is used in import scripts too - "conf2reST": [], - "docker": [ - "docker >=3.4", - "dockerpty", - # used in docker_rednerd - "requests_unixsocket", - "requests", - ], - "import_sql": ["psycopg2"], - "source_control": [ - # Only mercurial 5.2 support Python 3.5+ - "mercurial >=5.2", - "python-hglib", - ], - }, - entry_points={ - "console_scripts": [ - "import_base_import=odoo_scripts.import_base_import:main", - "import_jsonrpc=odoo_scripts.import_jsonrpc:main", - "import_sql=odoo_scripts.import_sql:main [import_sql]", - "docker_dev_start=odoo_scripts.docker_dev_start:main [docker]", - "do_tests=odoo_scripts.do_tests:main", - "docker_black=odoo_scripts.docker_black:main [docker]", - "docker_build=odoo_scripts.docker_build:main [docker]", - "docker_build_doc=odoo_scripts.docker_build_doc:main [docker]", - "docker_build_clean=odoo_scripts.docker_build_clean:main", - "docker_build_copy=odoo_scripts.docker_build_copy:main", - "docker_flake8=odoo_scripts.docker_flake8:main [docker]", - "docker_isort=odoo_scripts.docker_isort:main [docker]", - "docker_pg=odoo_scripts.docker_postgresql:main [docker]", - "docker_prettier=odoo_scripts.docker_prettier:main [docker]", - "docker_pylint=odoo_scripts.docker_pylint:main [docker]", - "docker_rednerd=odoo_scripts.docker_rednerd:main [docker]", - "conf2reST=odoo_scripts.conf2reST:main [conf2reST]", - "odoo_conf_inject_env_var=odoo_scripts.odoo_conf_inject_env_var:main", - "list_modules=odoo_scripts.list_modules:main", - "update_duplicate_sources=" - "odoo_scripts.update_duplicate_sources:main [source_control]", - ] - }, - scripts=[], - python_requires=">=3.6", - url="https://orus.io/xcg/odoo_scripts/", - classifiers=[ - "Development Status :: 5 - Production/Stable", - "Programming Language :: Python :: 3", - "License :: OSI Approved :: MIT License", - "Environment :: Console", - ], -)