From 11b7e4ba2559843bcae3a7fdcacddd39d48edf41 Mon Sep 17 00:00:00 2001 From: abram axel booth Date: Fri, 5 Dec 2025 10:24:09 -0500 Subject: [PATCH] pyproject.toml + poetry [ENG-9692] --- .github/workflows/test_djelme.yml | 11 +--- README.md | 4 +- docker-compose.yml | 2 +- pyproject.toml | 88 ++++++++++++++++++++++++++++ setup.cfg | 3 - setup.py | 96 ------------------------------- testbox.Dockerfile | 9 +-- tox.ini | 5 +- 8 files changed, 102 insertions(+), 116 deletions(-) create mode 100644 pyproject.toml delete mode 100644 setup.py diff --git a/.github/workflows/test_djelme.yml b/.github/workflows/test_djelme.yml index 874c51f..3e13245 100644 --- a/.github/workflows/test_djelme.yml +++ b/.github/workflows/test_djelme.yml @@ -26,16 +26,9 @@ jobs: test: strategy: matrix: - python: ['3.6', '3.7', '3.8', '3.9', '3.10'] - django: ['1.11', '2.0', '2.1', '2.2', '3.0', '3.1', '3.2', '4.0', '4.1'] + python: ['3.8', '3.9', '3.10'] + django: ['3.2', '4.1'] # TODO: elasticsearch: ['6', '7', '8', '9'] - exclude: - - {python: '3.6', django: '4.0'} - - {python: '3.6', django: '4.1'} - - {python: '3.7', django: '4.0'} - - {python: '3.7', django: '4.1'} - - {python: '3.10', django: '1.11'} - - {python: '3.10', django: '2.0'} runs-on: ubuntu-20.04 services: elasticsearch: diff --git a/README.md b/README.md index 7ee4982..89f9361 100644 --- a/README.md +++ b/README.md @@ -7,8 +7,8 @@ Django app for storing time-series metrics in Elasticsearch. ## Pre-requisites -* Python 2.7 or >=3.6 -* Django 1.11 or 2.0 +* Python >=3.10 +* Django 4.2, 5.1, or 5.2 * Elasticsearch 6 ## Install diff --git a/docker-compose.yml b/docker-compose.yml index d84b530..84b9561 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -9,7 +9,7 @@ services: depends_on: - elasticsearch environment: - TOXENV: py39-django40 + TOXENV: py310-django41 ELASTICSEARCH_HOST: elasticsearch:9200 volumes: - ./:/code:cached diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..2dcdb19 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,88 @@ +[project] +name = "django-elasticsearch-metrics" +version = "2022.0.6" +description = "Django app for storing time-series metrics in Elasticsearch." +authors = [ + {name = "CenterForOpenScience", email = "support@cos.io"} +] +readme = "README.md" +license = "MIT" +requires-python = ">=3.10" +keywords = [ + "django", + "elastic", + "elasticsearch", + "elasticsearch-dsl", + "time-series", + "metrics", + "statistics", +] +classifiers = [ + "Operating System :: OS Independent", + "Programming Language :: Python", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.5", + "Programming Language :: Python :: 3.6", + "Programming Language :: Python :: 3.7", + "Programming Language :: Python :: 3.8", + "Programming Language :: Python :: 3.9", + "Programming Language :: Python :: 3.10", + "Framework :: Django", + "Framework :: Django :: 1.11", + "Framework :: Django :: 2.0", + "Framework :: Django :: 2.1", + "Framework :: Django :: 2.2", + "Framework :: Django :: 3.0", + "Framework :: Django :: 3.1", + "Framework :: Django :: 3.2", + "Framework :: Django :: 4.0", + "Framework :: Django :: 4.1", + "Environment :: Web Environment", + "Intended Audience :: Developers", + "Topic :: Internet :: WWW/HTTP", + "Topic :: Software Development :: Libraries :: Python Modules", +] +dependencies = [ + "elasticsearch6-dsl>=6.3.0,<7.0.0", +] + +[project.urls] +repository = "http://github.com/CenterForOpenScience/django-elasticsearch-metrics" +changelog = "https://github.com/CenterForOpenScience/django-elasticsearch-metrics/blob/master/CHANGELOG.md" + +[dependency-groups] +tests = [ + "pytest", + "mock", + "pytest-django==3.10.0", + "factory-boy==2.11.1", +] +lint = [ + "flake8==5.0.4", + 'flake8-bugbear==18.8.0; python_version >= "3.5"', + "pre-commit==2.17.0", +] +dev = [ + { include-group = "tests" }, + { include-group = "lint" }, + "konch>=3.0.0", + "tox", +] + +[tool.poetry.group.tests] +optional = true + +[tool.poetry.group.lint] +optional = true + +[tool.poetry.group.dev] +optional = true + +[tool.poetry] +packages = [ + { include = "elasticsearch_metrics" } +] + +[build-system] +requires = ["poetry-core>=2.0.0,<3.0.0"] +build-backend = "poetry.core.masonry.api" diff --git a/setup.cfg b/setup.cfg index 061896b..36111f2 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,6 +1,3 @@ -[metadata] -license_file = LICENSE - [bdist_wheel] universal=1 diff --git a/setup.py b/setup.py deleted file mode 100644 index 263aa37..0000000 --- a/setup.py +++ /dev/null @@ -1,96 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- -import re -import os -from setuptools import setup, find_packages - -EXTRAS_REQUIRE = { - "tests": ["pytest", "mock", "pytest-django==3.10.0", "factory-boy==2.11.1"], - "lint": [ - "flake8==5.0.4", - 'flake8-bugbear==18.8.0; python_version >= "3.5"', - "pre-commit==2.17.0", - ], -} -EXTRAS_REQUIRE["dev"] = ( - EXTRAS_REQUIRE["tests"] + EXTRAS_REQUIRE["lint"] + ["konch>=3.0.0", "tox"] -) - - -def find_version(fname): - """Attempts to find the version number in the file names fname. - Raises RuntimeError if not found. - """ - version = "" - with open(fname, "r") as fp: - reg = re.compile(r'__version__ = [\'"]([^\'"]*)[\'"]') - for line in fp: - m = reg.match(line) - if m: - version = m.group(1) - break - if not version: - raise RuntimeError("Cannot find version information") - return version - - -def read(fname): - with open(fname) as fp: - content = fp.read() - return content - - -setup( - name="django-elasticsearch-metrics", - version=find_version(os.path.join("elasticsearch_metrics", "__init__.py")), - author="Steven Loria, Dawn Pattison", - author_email="steve@cos.io, pattison.dawn@cos.io", - description="Django app for storing time-series metrics in Elasticsearch.", - long_description=read("README.md"), - long_description_content_type="text/markdown", - url="http://github.com/CenterForOpenScience/django-elasticsearch-metrics", - license="MIT", - packages=find_packages(exclude=("tests",)), - keywords=( - "django", - "elastic", - "elasticsearch", - "elasticsearch-dsl", - "time-series", - "metrics", - "statistics", - ), - install_requires=["elasticsearch6-dsl>=6.3.0,<7.0.0"], - extras_require=EXTRAS_REQUIRE, - classifiers=[ - "Operating System :: OS Independent", - "Programming Language :: Python", - "Programming Language :: Python :: 3", - "Programming Language :: Python :: 3.5", - "Programming Language :: Python :: 3.6", - "Programming Language :: Python :: 3.7", - "Programming Language :: Python :: 3.8", - "Programming Language :: Python :: 3.9", - "Programming Language :: Python :: 3.10", - "Framework :: Django", - "Framework :: Django :: 1.11", - "Framework :: Django :: 2.0", - "Framework :: Django :: 2.1", - "Framework :: Django :: 2.2", - "Framework :: Django :: 3.0", - "Framework :: Django :: 3.1", - "Framework :: Django :: 3.2", - "Framework :: Django :: 4.0", - "Framework :: Django :: 4.1", - "Environment :: Web Environment", - "Intended Audience :: Developers", - "Topic :: Internet :: WWW/HTTP", - "Topic :: Software Development :: Libraries :: Python Modules", - ], - zip_safe=False, - include_package_data=True, - project_urls={ - "Issues": "https://github.com/CenterForOpenScience/django-elasticsearch-metrics/issues", - "Changelog": "https://github.com/CenterForOpenScience/django-elasticsearch-metrics/blob/master/CHANGELOG.md", - }, -) diff --git a/testbox.Dockerfile b/testbox.Dockerfile index 15b5ad0..8d0c25c 100644 --- a/testbox.Dockerfile +++ b/testbox.Dockerfile @@ -1,9 +1,10 @@ -FROM python:3.9-slim as testbox +FROM python:3.10-slim as testbox + +RUN pip install poetry==2.2.1 RUN mkdir -p /code WORKDIR /code COPY ./ /code +RUN poetry install --with dev -RUN pip install .[dev] - -CMD ["tox"] +CMD ["poetry", "run", "tox"] diff --git a/tox.ini b/tox.ini index e3ed29e..4c64e7a 100644 --- a/tox.ini +++ b/tox.ini @@ -5,7 +5,8 @@ envlist = [testenv] passenv=ELASTICSEARCH_HOST -extras = tests +dependency_groups = + tests deps = django111: Django>=1.11,<1.12 django20: Django>=2.0,<2.1 @@ -18,6 +19,8 @@ deps = django41: Django>=4.1,<4.2 commands= pytest {posargs} +allowlist_externals = + pytest ; NOTE: pre-commit runs both black and flake8 [testenv:lint]