diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 205f902..0000000 --- a/.travis.yml +++ /dev/null @@ -1,45 +0,0 @@ -sudo: false -language: python -dist: xenial - -python: - - "3.5" - - "3.6" - - "3.7" - - "2.7" - - pypy - - pypy3 - -env: - - DJANGO="django==3.0" - - DJANGO="django==2.2.8" - - DJANGO="django==1.11.26" - -install: - - pip install $DJANGO - - pip install -r requirements.txt - - pip install -r requirements_dev.txt - - pip install -e . - - pip install https://github.com/un33k/pyflakes/tarball/master - - pip install coveralls - -before_script: - - "pycodestyle --exclude=migrations --ignore=E501,E225,E128 ." - - if [[ $TRAVIS_PYTHON_VERSION == '2.7' ]]; then pyflakes -x W uuslug; fi - -matrix: - exclude: - - python: "3.5" - env: DJANGO="django==3.0" - - python: "2.7" - env: DJANGO="django==2.2.8" - - python: "2.7" - env: DJANGO="django==3.0" - - python: pypy - env: DJANGO="django==2.2.8" - - python: pypy - env: DJANGO="django==3.0" - -script: coverage run --source=uuslug manage.py test - -after_success: coveralls diff --git a/requirements-dev.txt b/requirements-dev.txt new file mode 100644 index 0000000..46cd12b --- /dev/null +++ b/requirements-dev.txt @@ -0,0 +1,4 @@ +Django==4.0 +pycodestyle==2.7.0 +flake8==3.9.2 +twine==3.4.2 diff --git a/requirements.txt b/requirements.txt deleted file mode 100644 index 551057a..0000000 --- a/requirements.txt +++ /dev/null @@ -1,2 +0,0 @@ -Django>=2.2.26 -python-slugify>=5.0.0 diff --git a/requirements_dev.txt b/requirements_dev.txt deleted file mode 100644 index 6e6cead..0000000 --- a/requirements_dev.txt +++ /dev/null @@ -1 +0,0 @@ -pycodestyle>=2.5.0 \ No newline at end of file diff --git a/setup.cfg b/setup.cfg index 67d7d03..29b21fb 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,3 +1,2 @@ -[flake8] -exclude = migrations -ignore = E501,E225,E128 \ No newline at end of file +[metadata] +license_file = LICENSE \ No newline at end of file diff --git a/setup.py b/setup.py index 81b3bab..25ee46e 100755 --- a/setup.py +++ b/setup.py @@ -1,86 +1,83 @@ #!/usr/bin/env python -# -*- coding: utf-8 -*- - -from setuptools import setup -import re +# Learn more: https://github.com/un33k/setup.py import os import sys +from codecs import open +from shutil import rmtree +from setuptools import setup + -name = 'django-uuslug' package = 'uuslug' -description = 'A Django slugify application that guarantees uniqueness and handles unicode.' -url = 'https://github.com/un33k/django-uuslug' -author = 'Val Neekman' -author_email = 'info@neekware.com' -license = 'BSD' -install_requires = ['python-slugify>=5.0.0'] -classifiers = [ - 'Development Status :: 5 - Production/Stable', - 'Intended Audience :: Developers', - 'Topic :: Software Development :: Build Tools', - 'License :: OSI Approved :: MIT 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', -] +python_requires = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" +here = os.path.abspath(os.path.dirname(__file__)) + +requires = [] +test_requirements = [] + +about = {} +with open(os.path.join(here, package, '__version__.py'), 'r', 'utf-8') as f: + exec(f.read(), about) + +with open('README.md', 'r', 'utf-8') as f: + readme = f.read() -def get_version(package): - """ - Return package version as listed in `__version__` in `init.py`. - """ - init_py = open(os.path.join(package, '__init__.py')).read() - return re.search("^__version__ = ['\"]([^'\"]+)['\"]", init_py, re.MULTILINE).group(1) - - -def get_packages(package): - """ - Return root package and all sub-packages. - """ - return [dirpath - for dirpath, dirnames, filenames in os.walk(package) - if os.path.exists(os.path.join(dirpath, '__init__.py'))] - - -def get_package_data(package): - """ - Return all files under the root package, that are not in a - package themselves. - """ - walk = [(dirpath.replace(package + os.sep, '', 1), filenames) - for dirpath, dirnames, filenames in os.walk(package) - if not os.path.exists(os.path.join(dirpath, '__init__.py'))] - - filepaths = [] - for base, filenames in walk: - filepaths.extend([os.path.join(base, filename) - for filename in filenames]) - return {package: filepaths} +def status(s): + print('\033[1m{0}\033[0m'.format(s)) +# 'setup.py publish' shortcut. if sys.argv[-1] == 'publish': - os.system("python setup.py sdist upload") - args = {'version': get_version(package)} - print("You probably want to also tag the version now:") - print(" git tag -a %(version)s -m 'version %(version)s' && git push --tags" % args) + try: + status('Removing previous builds…') + rmtree(os.path.join(here, 'dist')) + except OSError: + pass + + status('Building Source and Wheel (universal) distribution…') + os.system('{0} setup.py sdist bdist_wheel --universal'.format(sys.executable)) + + status('Uploading the package to PyPI via Twine…') + os.system('twine upload dist/*') + + status('Pushing git tags…') + os.system('git tag v{0}'.format(about['__version__'])) + os.system('git push --tags') sys.exit() - setup( - name=name, - version=get_version(package), - url=url, - license=license, - description=description, - author=author, - author_email=author_email, - packages=get_packages(package), - package_data=get_package_data(package), - install_requires=install_requires, - classifiers=classifiers + name=about['__title__'], + version=about['__version__'], + description=about['__description__'], + long_description=readme, + long_description_content_type='text/markdown', + author=about['__author__'], + author_email=about['__author_email__'], + url=about['__url__'], + packages=[package], + package_data={'': ['LICENSE']}, + package_dir={'uuslug': 'uuslug'}, + include_package_data=True, + python_requires=python_requires, + install_requires=requires, + license=about['__license__'], + zip_safe=False, + classifiers=[ + 'Development Status :: 5 - Production/Stable', + 'Intended Audience :: Developers', + 'Natural Language :: English', + 'License :: OSI Approved :: MIT License', + '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', + ], + cmdclass={}, + tests_require=test_requirements, + extras_require={}, + project_urls={}, ) diff --git a/uuslug/__init__.py b/uuslug/__init__.py index b82fa59..45fb36f 100644 --- a/uuslug/__init__.py +++ b/uuslug/__init__.py @@ -1,7 +1,3 @@ from .uuslug import * # noqa -__author__ = 'Val Neekman @ Neekware Inc. [@vneekman]' -__description__ = 'A Python slugify application that also handles Unicode' -__version__ = '2.0.0' - default_app_config = 'uuslug.apps.AppConfig' diff --git a/uuslug/__version__.py b/uuslug/__version__.py new file mode 100644 index 0000000..3d07d34 --- /dev/null +++ b/uuslug/__version__.py @@ -0,0 +1,8 @@ +__title__ = 'django-uuslug' +__author__ = 'Val Neekman' +__author_email__ = 'info@neekware.com' +__description__ = "A Django slugify application that also handles Unicode" +__url__ = 'https://github.com/un33k/django-uuslug' +__license__ = 'MIT' +__copyright__ = 'Copyright 2022 Val Neekman @ Neekware Inc.' +__version__ = '2.0.0'