Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: un33k/python-slugify
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: v6.0.0
Choose a base ref
...
head repository: un33k/python-slugify
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: v6.0.1
Choose a head ref
  • 4 commits
  • 18 files changed
  • 2 contributors

Commits on May 12, 2021

  1. Add better typing for slugify.slugify

    Currently, mypy understands the type as `Iterable[str]`, which doesn't match what should actually be passed in, which is `Iterable[Iterable[str]]` or, ideally, `Iterable[Tuple[str, str]]`
    fahhem authored and un33k committed May 12, 2021
    Copy the full SHA
    1097c23 View commit details
  2. whitespace around =

    fahhem authored and un33k committed May 12, 2021
    Copy the full SHA
    a90d967 View commit details

Commits on Feb 16, 2022

  1. add github action, cleanup

    un33k committed Feb 16, 2022
    Copy the full SHA
    86d76ee View commit details
  2. regex: allow=>disallow

    un33k committed Feb 16, 2022
    Copy the full SHA
    c096bcd View commit details
Showing with 243 additions and 147 deletions.
  1. +44 −0 .github/workflows/ci.yml
  2. +44 −0 .github/workflows/dev.yml
  3. +43 −0 .github/workflows/main.yml
  4. +0 −5 .python-version
  5. +0 −22 .travis.yml
  6. +2 −1 .vscode/settings.json
  7. +10 −0 CHANGELOG.md
  8. +1 −2 MANIFEST.in
  9. +3 −7 README.md
  10. +2 −1 dev.requirements.txt
  11. +66 −52 setup.py
  12. +0 −5 slugify/__init__.py
  13. +3 −3 slugify/__main__.py
  14. +8 −0 slugify/__version__.py
  15. +15 −28 slugify/slugify.py
  16. +1 −1 slugify/special.py
  17. +1 −2 test.py
  18. +0 −18 tox.ini
44 changes: 44 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
name: CI

# Run on push only for dev/sandbox
# Otherwise it may trigger concurrently `push & pull_request` on PRs.
on:
push:
branches:
- ci
- staging

jobs:
build:
name: Python ${{ matrix.python }}
runs-on: ubuntu-latest
strategy:
matrix:
python: [3.6, 3.7, 3.8, 3.9, "3.10", pypy3]

steps:
- uses: actions/checkout@v2
- name: setup python
uses: actions/setup-python@v2
with:
python-version: ${{ matrix.python }}
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -e .
pip install coveralls --upgrade
- name: Run flake8
run: |
pip install flake8 --upgrade
flake8 --exclude=build --ignore=E501,F403,F401,E241,E225,E128 .
- name: Run pycodestyle
run: |
pip install pycodestyle --upgrade
pycodestyle --ignore=E128,E261,E225,E501,W605 slugify test.py setup.py
- name: Run test
run: |
coverage run --source=slugify test.py
- name: Coveralls
run: coveralls --service=github
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
44 changes: 44 additions & 0 deletions .github/workflows/dev.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
name: DEV

# Run on push only for dev/sandbox
# Otherwise it may trigger concurrently `push & pull_request` on PRs.
on:
push:
branches:
- sandbox
- dev

jobs:
build:
name: Python ${{ matrix.python }}
runs-on: ubuntu-latest
strategy:
matrix:
python: [3.6, 3.7, 3.8, 3.9, "3.10", pypy3]

steps:
- uses: actions/checkout@v2
- name: setup python
uses: actions/setup-python@v2
with:
python-version: ${{ matrix.python }}
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -e .
pip install coveralls --upgrade
- name: Run flake8
run: |
pip install flake8 --upgrade
flake8 --exclude=build --ignore=E501,F403,F401,E241,E225,E128 .
- name: Run pycodestyle
run: |
pip install pycodestyle --upgrade
pycodestyle --ignore=E128,E261,E225,E501,W605 slugify test.py setup.py
- name: Run test
run: |
coverage run --source=slugify test.py
- name: Coveralls
run: coveralls --service=github
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
43 changes: 43 additions & 0 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
name: Main

# Run on push only for dev/sandbox
# Otherwise it may trigger concurrently `push & pull_request` on PRs.
on:
push:
branches:
- master

jobs:
build:
name: Python ${{ matrix.python }}
runs-on: ubuntu-latest
strategy:
matrix:
python: [3.6, 3.7, 3.8, 3.9, "3.10", pypy3]

steps:
- uses: actions/checkout@v2
- name: setup python
uses: actions/setup-python@v2
with:
python-version: ${{ matrix.python }}
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -e .
pip install coveralls --upgrade
- name: Run flake8
run: |
pip install flake8 --upgrade
flake8 --exclude=build --ignore=E501,F403,F401,E241,E225,E128 .
- name: Run pycodestyle
run: |
pip install pycodestyle --upgrade
pycodestyle --ignore=E128,E261,E225,E501,W605 slugify test.py setup.py
- name: Run test
run: |
coverage run --source=slugify test.py
- name: Coveralls
run: coveralls --service=github
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
5 changes: 0 additions & 5 deletions .python-version

This file was deleted.

22 changes: 0 additions & 22 deletions .travis.yml

This file was deleted.

3 changes: 2 additions & 1 deletion .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
{
"python.linting.pylintEnabled": false,
"python.pythonPath": "/usr/bin/python3",
}
"cSpell.words": ["Neekman", "shch", "xlate"]
}
10 changes: 10 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,13 @@
## 6.0.1

- Rework regex_pattern to mean the opposite (disallowed chars instead of allowed)
- Thanks to @yyyyyyyan for the initial PR followed by the final PR by @mrezzamoradi

## 6.0.0

- Enable github action
- Remove tox, as we run the test on github action, the end users can refer to those test

## 5.0.2

- Enable twine publish
3 changes: 1 addition & 2 deletions MANIFEST.in
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
include CHANGELOG.md
include LICENSE
include README.md
include test.py
include CHANGELOG.md
10 changes: 3 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
@@ -55,7 +55,7 @@ def slugify(
:param save_order (bool): if parameter is True and max_length > 0 return whole words in the initial order
:param separator (str): separator between words
:param stopwords (iterable): words to discount
:param regex_pattern (str): regex pattern for allowed characters
:param regex_pattern (str): regex pattern for disallowed characters
:param lowercase (bool): activate case sensitivity by setting it to False
:param replacements (iterable): list of replacement rules e.g. [['|', 'or'], ['%', 'percent']]
:return (str): slugify text
@@ -164,10 +164,6 @@ quick-brown-fox-jumps-over-lazy-dog

# Running the tests

To run the tests against all environments:

tox

To run the tests against the current environment:

python test.py
@@ -188,8 +184,8 @@ X.Y.Z Version
`MINOR` version -- when you add functionality in a backwards-compatible manner, and
`PATCH` version -- when you make backwards-compatible bug fixes.

[status-image]: https://travis-ci.org/un33k/python-slugify.svg?branch=master
[status-link]: https://travis-ci.org/un33k/python-slugify
[status-image]: https://github.com/un33k/python-slugify/actions/workflows/ci.yml/badge.svg
[status-link]: https://github.com/un33k/python-slugify/actions/workflows/ci.yml
[version-image]: https://img.shields.io/pypi/v/python-slugify.svg
[version-link]: https://pypi.python.org/pypi/python-slugify
[coverage-image]: https://coveralls.io/repos/un33k/python-slugify/badge.svg
3 changes: 2 additions & 1 deletion dev.requirements.txt
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
pycodestyle==2.7.0
twine==3.4.1
twine==3.4.1
flake8==4.0.1
118 changes: 66 additions & 52 deletions setup.py
Original file line number Diff line number Diff line change
@@ -1,70 +1,84 @@
#!/usr/bin/env python

# -*- coding: utf-8 -*-
from setuptools import setup, find_packages
import re
# Learn more: https://github.com/un33k/setup.py
import os
import sys
import codecs

name = 'python-slugify'
from codecs import open
from shutil import rmtree
from setuptools import setup


package = 'slugify'
description = 'A Python Slugify application that handles Unicode'
url = 'https://github.com/un33k/python-slugify'
author = 'Val Neekman'
author_email = 'info@neekware.com'
license = 'MIT'
python_requires = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*"
here = os.path.abspath(os.path.dirname(__file__))

install_requires = ['text-unidecode>=1.3']
extras_require = {'unidecode': ['Unidecode>=1.1.1']}
extras_requires = {'unidecode': ['Unidecode>=1.1.1']}
test_requires = []

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',
]
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 = codecs.open(os.path.join(package, '__init__.py'), encoding='utf-8').read()
return re.search("^__version__ = ['\"]([^'\"]+)['\"]", init_py, re.MULTILINE).group(1)

def status(s):
print('\033[1m{0}\033[0m'.format(s))

if sys.argv[-1] == 'build':
os.system("python setup.py sdist bdist_wheel")

# 'setup.py publish' shortcut.
if sys.argv[-1] == 'publish':
os.system("python setup.py build && twine upload dist/*")
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)
sys.exit()
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))

EXCLUDE_FROM_PACKAGES = []
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,
long_description=description,
author=author,
author_email=author_email,
packages=find_packages(exclude=EXCLUDE_FROM_PACKAGES),
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__'],
license=about['__license__'],
packages=[package],
package_data={'': ['LICENSE']},
package_dir={'slugify': 'slugify'},
include_package_data=True,
python_requires=python_requires,
install_requires=install_requires,
extras_require=extras_require,
python_requires='>=3.6',
classifiers=classifiers,
entry_points={'console_scripts': ['slugify=slugify.__main__:main']},
tests_require=test_requires,
extras_require=extras_requires,
zip_safe=False,
cmdclass={},
project_urls={},
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',
]
)
5 changes: 0 additions & 5 deletions slugify/__init__.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,2 @@
from .special import *
from .slugify import *


__author__ = 'Val Neekman @ Neekware Inc. [@vneekman]'
__description__ = 'A Python slugify application that also handles Unicode'
__version__ = '5.0.2'
6 changes: 3 additions & 3 deletions slugify/__main__.py
Original file line number Diff line number Diff line change
@@ -31,7 +31,7 @@ def parse_args(argv):
parser.add_argument("--stopwords", nargs='+',
help="Words to discount")
parser.add_argument("--regex-pattern",
help="Python regex pattern for allowed characters")
help="Python regex pattern for disallowed characters")
parser.add_argument("--no-lowercase", action='store_false', dest='lowercase', default=True,
help="Activate case sensitivity")
parser.add_argument("--replacements", nargs='+',
@@ -77,7 +77,7 @@ def slugify_params(args):
)


def main(argv=None): # pragma: no cover
def main(argv=None): # pragma: no cover
""" Run this program """
if argv is None:
argv = sys.argv
@@ -89,5 +89,5 @@ def main(argv=None): # pragma: no cover
sys.exit(-1)


if __name__ == '__main__': # pragma: no cover
if __name__ == '__main__': # pragma: no cover
main()
Loading