diff --git a/README.rst b/README.rst index ef2218f97..d9a50656e 100644 --- a/README.rst +++ b/README.rst @@ -1,7 +1,7 @@ .. raw:: html - +.. cut after this Elasticsearch Python Client =========================== @@ -81,10 +81,10 @@ Quick Start # Import the client from the 'elasticsearch' module >>> from elasticsearch import Elasticsearch - + # Instantiate a client instance >>> client = Elasticsearch("http://localhost:9200") - + # Call an API, in this example `info()` >>> resp = client.info() diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 000000000..b0c66d92b --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,77 @@ +[build-system] +requires = ["hatchling", "hatch-fancy-pypi-readme"] +build-backend = "hatchling.build" + +[project] +name = "elasticsearch" +dynamic = ["version", "readme"] +description = "Python client for Elasticsearch" +license = "Apache-2.0" +requires-python = ">=3.6, <4" +authors = [ + { name = "Honza Král", email = "honza.kral@gmail.com" }, + { name = "Nick Lang", email = "nick@nicklang.com" }, +] +maintainers = [ + { name = "Seth Michael Larson", email = "seth.larson@elastic.co" }, +] +classifiers = [ + "Development Status :: 5 - Production/Stable", + "Intended Audience :: Developers", + "License :: OSI Approved :: Apache Software License", + "Operating System :: OS Independent", + "Programming Language :: Python", + "Programming Language :: Python :: 3", + "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", + "Programming Language :: Python :: Implementation :: CPython", + "Programming Language :: Python :: Implementation :: PyPy", +] +dependencies = [ + "elastic-transport>=8,<9", +] + +[project.optional-dependencies] +async = [ + "aiohttp>=3,<4", +] +requests = [ + "requests>=2.4.0, <3.0.0", +] + +[project.urls] +Documentation = "https://elasticsearch-py.readthedocs.io" +Homepage = "https://github.com/elastic/elasticsearch-py" +"Issue Tracker" = "https://github.com/elastic/elasticsearch-py/issues" +"Source Code" = "https://github.com/elastic/elasticsearch-py" + +[tool.hatch.version] +path = "elasticsearch/_version.py" +pattern = '__versionstr__ = "(?P.+)"' + +[tool.hatch.metadata.hooks.fancy-pypi-readme] +content-type = "text/x-rst" + +[[tool.hatch.metadata.hooks.fancy-pypi-readme.fragments]] +path = "README.rst" +start-after = ".. cut after this\n\n" + +[tool.hatch.build.targets.sdist] +exclude = ["/test_elasticsearch"] + +[tool.isort] +profile = "black" + +[tool.pytest] +junit_family = "legacy" +addopts = "-vvv -p no:logging --cov-report=term-missing --cov=elasticsearch --cov-config=.coveragerc" + +[tool.coverage.report] +exclude_lines = [ + "raise NotImplementedError*", +] +[tool.mypy] +ignore_missing_imports = true diff --git a/setup.cfg b/setup.cfg index a527b5b93..403f26a50 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,16 +1,2 @@ [flake8] ignore = E203, E266, E501, W503 - -[tool:pytest] -junit_family=legacy -addopts = -vvv -p no:logging --cov-report=term-missing --cov=elasticsearch --cov-config=.coveragerc - -[tool:isort] -profile=black - -[report] -exclude_lines= - raise NotImplementedError* - -[mypy] -ignore_missing_imports = True diff --git a/setup.py b/setup.py deleted file mode 100644 index 4273b73ff..000000000 --- a/setup.py +++ /dev/null @@ -1,99 +0,0 @@ -# -*- coding: utf-8 -*- -# Licensed to Elasticsearch B.V. under one or more contributor -# license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright -# ownership. Elasticsearch B.V. licenses this file to you under -# the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. - -import re -from os.path import abspath, dirname, join - -from setuptools import find_packages, setup - -package_name = "elasticsearch" -base_dir = abspath(dirname(__file__)) - -with open(join(base_dir, package_name, "_version.py")) as f: - package_version = re.search( - r"__versionstr__\s+=\s+[\"\']([^\"\']+)[\"\']", f.read() - ).group(1) - -with open(join(base_dir, "README.rst")) as f: - # Remove reST raw directive from README as they're not allowed on PyPI - # Those blocks start with a newline and continue until the next newline - mode = None - lines = [] - for line in f: - if line.startswith(".. raw::"): - mode = "ignore_nl" - elif line == "\n": - mode = "wait_nl" if mode == "ignore_nl" else None - if mode is None: - lines.append(line) - - long_description = "".join(lines) - - -packages = [ - package - for package in find_packages(where=".", exclude=("test_elasticsearch*",)) - if package == package_name or package.startswith(package_name + ".") -] - -install_requires = ["elastic-transport>=8,<9"] -async_requires = ["aiohttp>=3,<4"] - -setup( - name=package_name, - description="Python client for Elasticsearch", - license="Apache-2.0", - url="https://github.com/elastic/elasticsearch-py", - long_description=long_description, - long_description_content_type="text/x-rst", - version=package_version, - author="Honza Král, Nick Lang", - author_email="honza.kral@gmail.com, nick@nicklang.com", - maintainer="Seth Michael Larson", - maintainer_email="seth.larson@elastic.co", - project_urls={ - "Documentation": "https://elasticsearch-py.readthedocs.io", - "Source Code": "https://github.com/elastic/elasticsearch-py", - "Issue Tracker": "https://github.com/elastic/elasticsearch-py/issues", - }, - packages=packages, - package_data={"elasticsearch": ["py.typed", "*.pyi"]}, - include_package_data=True, - zip_safe=False, - classifiers=[ - "Development Status :: 5 - Production/Stable", - "License :: OSI Approved :: Apache Software License", - "Intended Audience :: Developers", - "Operating System :: OS Independent", - "Programming Language :: Python", - "Programming Language :: Python :: 3", - "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", - "Programming Language :: Python :: Implementation :: CPython", - "Programming Language :: Python :: Implementation :: PyPy", - ], - python_requires=">=3.6, <4", - install_requires=install_requires, - extras_require={ - "requests": ["requests>=2.4.0, <3.0.0"], - "async": async_requires, - }, -)