From 0a4a9ac4862f1ead489c137fee23b52b5f4e549b Mon Sep 17 00:00:00 2001 From: Val Neekman Date: Tue, 8 Sep 2026 16:32:41 -0400 Subject: [PATCH] Prepare 9.0.0 with legacy-default and opt-in modern algorithms --- .github/workflows/ci.yml | 4 +- .github/workflows/dev.yml | 4 +- CHANGELOG.md | 13 +- MANIFEST.in | 10 +- README.md | 309 +- dev.requirements.txt | 10 +- docs/release-9/historical-evidence.json | 66489 ++++++++++++++++++++++ docs/release-9/historical-review.md | 259 + docs/release-9/migration.md | 90 + docs/release-9/recent-evidence.json | 1176 + docs/release-9/recent-review.md | 91 + docs/release-9/verification.md | 102 + pyproject.toml | 49 +- setup.py | 84 +- slugify/__main__.py | 16 +- slugify/__version__.py | 2 +- slugify/slugify.py | 263 +- test_release.py | 273 + tools/check_algorithms.py | 71 + tools/check_dist.py | 109 + tools/legacy_reference.py | 198 + tox.ini | 90 +- 22 files changed, 69278 insertions(+), 434 deletions(-) create mode 100644 docs/release-9/historical-evidence.json create mode 100644 docs/release-9/historical-review.md create mode 100644 docs/release-9/migration.md create mode 100644 docs/release-9/recent-evidence.json create mode 100644 docs/release-9/recent-review.md create mode 100644 docs/release-9/verification.md create mode 100644 test_release.py create mode 100644 tools/check_algorithms.py create mode 100644 tools/check_dist.py create mode 100644 tools/legacy_reference.py diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 37e11a4..bd0ffc4 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -32,7 +32,7 @@ jobs: run: | python -m pip install --upgrade pip pip install -e . - pip install coveralls --upgrade + pip install coveralls pytest --upgrade - name: Run flake8 run: | pip install flake8 --upgrade @@ -43,7 +43,7 @@ jobs: pycodestyle --ignore=E128,E261,E225,E501,W605 slugify test.py setup.py - name: Run test run: | - coverage run --source=slugify test.py + coverage run --source=slugify -m pytest test.py test_release.py - name: Coveralls run: coveralls --service=github env: diff --git a/.github/workflows/dev.yml b/.github/workflows/dev.yml index 55119d6..086d3c2 100644 --- a/.github/workflows/dev.yml +++ b/.github/workflows/dev.yml @@ -32,7 +32,7 @@ jobs: run: | python -m pip install --upgrade pip pip install -e . - pip install coveralls --upgrade + pip install coveralls pytest --upgrade - name: Run flake8 run: | pip install flake8 --upgrade @@ -43,7 +43,7 @@ jobs: pycodestyle --ignore=E128,E261,E225,E501,W605 slugify test.py setup.py - name: Run test run: | - coverage run --source=slugify test.py + coverage run --source=slugify -m pytest test.py test_release.py - name: Coveralls run: coveralls --service=github env: diff --git a/CHANGELOG.md b/CHANGELOG.md index 537460e..2d761db 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,15 @@ -## Unreleased +## 9.0.0 — unreleased + +- Add keyword-only `algorithm='legacy'` (permanent default) and explicit `algorithm='modern'` opt-in, plus CLI `--algorithm`. Preserve historical default entity ordering, numeric handling, iterator consumption, separator truncation, and public `smart_truncate` behavior. +- Preserve legacy `auto` backend selection and two-pass replacement defaults; add explicit `backend` and `replacement_stage` keyword-only options and matching CLI flags. +- Add opt-in AnyASCII extra without removing or changing the base text-unidecode dependency. +- Forward CLI `--regex-pattern` (Jacobo de Vera, #176; report by @peter-bloomfield, #175). +- Modern mode only: decode entities before transliteration; handle invalid numeric references per match, including surrogate references (#178, #181, #187). +- Modern mode only: materialize replacement rules and stopword iterables consistently; preserve bytes/bytearray UTF-8 input with clear rejection of unsupported types (#183, #190). +- Modern mode only: budget internal tokens using emitted separator widths, support empty separators, and preserve literal word characters that match delimiters. Public smart_truncate remains unchanged (#47, #185, #186). +- Add regression coverage for whitespace, ordinals, backend-specific output, replacement stages, CLI execution, and installed artifacts. +- Move package metadata to pyproject.toml, retain the typed marker and source tests, and remove the unsafe publish/upload/tag shortcut. +- Document output changes, backend license distinctions, compatibility limits, and migration precautions in docs/release-9/migration.md. - Support Python 3.14. - Drop support for Python 3.9 and lower. diff --git a/MANIFEST.in b/MANIFEST.in index 373701c..431ad5e 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -1,3 +1,7 @@ -include LICENSE -include README.md -include CHANGELOG.md +include LICENSE README.md CHANGELOG.md +include test.py test_release.py tox.ini dev.requirements.txt +recursive-include docs *.md +recursive-include tools *.py +recursive-include slugify *.py py.typed +global-exclude *.py[cod] +global-exclude __pycache__ diff --git a/README.md b/README.md index e5123f1..f4815c1 100644 --- a/README.md +++ b/README.md @@ -1,225 +1,176 @@ # Python Slugify -**A Python slugify application that handles unicode**. +Unicode-aware slug generation for Python, with explicit transliteration choices. -[![status-image]][status-link] -[![version-image]][version-link] -[![coverage-image]][coverage-link] +[![CI](https://github.com/un33k/python-slugify/actions/workflows/main.yml/badge.svg)](https://github.com/un33k/python-slugify/actions/workflows/main.yml) +[![PyPI](https://img.shields.io/pypi/v/python-slugify.svg)](https://pypi.org/project/python-slugify/) -# Overview +## Quickstart -**Best attempt** to create slugs from unicode strings while keeping it **DRY**. +This checkout targets **9.0.0** and has not been published. +Install from this checkout to use the new APIs demonstrated below. +See the [migration guide](docs/release-9/migration.md) before changing persisted URLs or keys. -# Notice +Install **python-slugify**, import **slugify**. Other similarly named distributions are not this package. -This module, by default installs and uses [text-unidecode](https://github.com/kmike/text-unidecode) _(GPL & Perl Artistic)_ for its decoding needs. - -However, there is an alternative decoding package called [Unidecode](https://github.com/avian2/unidecode) _(GPL)_. It can be installed as `python-slugify[unidecode]` for those who prefer it. `Unidecode` is believed to be more [advanced](https://github.com/un33k/python-slugify/wiki/Python-Slugify-Wiki#notes-on-unidecode). - -### `Official` Support Matrix - -| Python | Slugify | -| -------------- | ------------------ | -| `>= 2.7 < 3.6` | `< 5.0.0` | -| `>= 3.6 < 3.7` | `>= 5.0.0 < 7.0.0` | -| `>= 3.7` | `>= 7.0.0` | - -# How to install - - pip install python-slugify - - # OR - - pip install python-slugify[unidecode] - -# Options - -```python -def slugify( - text: str, - entities: bool = True, - decimal: bool = True, - hexadecimal: bool = True, - max_length: int = 0, - word_boundary: bool = False, - separator: str = DEFAULT_SEPARATOR, - save_order: bool = False, - stopwords: Iterable[str] = (), - regex_pattern: str | None = None, - lowercase: bool = True, - replacements: Iterable[Iterable[str]] = (), - allow_unicode: bool = False, -) -> str: - """ - Make a slug from the given text. - :param text (str): initial text - :param entities (bool): converts html entities to unicode (foo & bar -> foo-bar) - :param decimal (bool): converts html decimal to unicode (Ž -> Ž -> z) - :param hexadecimal (bool): converts html hexadecimal to unicode (Ž -> Ž -> z) - :param max_length (int): output string length - :param word_boundary (bool): truncates to end of full words (length may be shorter than max_length) - :param save_order (bool): when set, does not include shorter subsequent words even if they fit - :param separator (str): separator between words - :param stopwords (iterable): words to discount - :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']] - :param allow_unicode (bool): allow unicode characters - :return (str): slugify text - """ +```sh +python -m pip install -e . ``` -# How to use - ```python from slugify import slugify -txt = "This is a test ---" -r = slugify(txt) -self.assertEqual(r, "this-is-a-test") - -txt = '影師嗎' -r = slugify(txt) -self.assertEqual(r, "ying-shi-ma") - -txt = '影師嗎' -r = slugify(txt, allow_unicode=True) -self.assertEqual(r, "影師嗎") - -txt = 'C\'est déjà l\'été.' -r = slugify(txt) -self.assertEqual(r, "c-est-deja-l-ete") - -txt = 'Nín hǎo. Wǒ shì zhōng guó rén' -r = slugify(txt) -self.assertEqual(r, "nin-hao-wo-shi-zhong-guo-ren") - -txt = 'Компьютер' -r = slugify(txt) -self.assertEqual(r, "kompiuter") - -txt = 'jaja---lol-méméméoo--a' -r = slugify(txt, max_length=9) -self.assertEqual(r, "jaja-lol") - -txt = 'jaja---lol-méméméoo--a' -r = slugify(txt, max_length=15, word_boundary=True) -self.assertEqual(r, "jaja-lol-a") - -txt = 'jaja---lol-méméméoo--a' -r = slugify(txt, max_length=20, word_boundary=True, separator=".") -self.assertEqual(r, "jaja.lol.mememeoo.a") +assert slugify("C'est déjà l'été.") == 'c-est-deja-l-ete' +assert slugify('影師嗎', backend='text-unidecode') == 'ying-shi-ma' +assert slugify('影師嗎', allow_unicode=True) == '影師嗎' +``` -txt = 'one two three four' -r = slugify(txt, max_length=12, word_boundary=True, save_order=False) -self.assertEqual(r, "one-two-four") +```sh +slugify "Hello, world!" +# hello-world +printf 'Café' | python -m slugify --stdin +# cafe +slugify --regex-pattern '[^-a-z0-9_]+' '___This is a test___' +# ___this-is-a-test___ +``` -txt = 'one two three four' -r = slugify(txt, max_length=12, word_boundary=True, save_order=True) -self.assertEqual(r, "one-two") +The ordinary `python -m pip install python-slugify` command installs the published release, +which does not yet include the new candidate APIs. -txt = 'the quick brown fox jumps over the lazy dog' -r = slugify(txt, stopwords=['the']) -self.assertEqual(r, 'quick-brown-fox-jumps-over-lazy-dog') +## Python support -txt = 'the quick brown fox jumps over the lazy dog in a hurry' -r = slugify(txt, stopwords=['the', 'in', 'a', 'hurry']) -self.assertEqual(r, 'quick-brown-fox-jumps-over-lazy-dog') +| Python | Release family | +| --- | --- | +| 2.7–3.5 | below 5 | +| 3.6 | 5–6 | +| 3.7–3.9 | 7–8 (check each release's Requires-Python) | +| 3.10+ | 9 development series | -txt = 'thIs Has a stopword Stopword' -r = slugify(txt, stopwords=['Stopword'], lowercase=False) -self.assertEqual(r, 'thIs-Has-a-stopword') +The configured release-9 test matrix covers CPython 3.10–3.14 and PyPy 3.11. +Configuration is not proof of a successful run; see [local verification](docs/release-9/verification.md). +Older applications can stay on a pinned 8.x release rather than upgrading Python or regenerating slugs immediately. -txt = "___This is a test___" -regex_pattern = r'[^-a-z0-9_]+' -r = slugify(txt, regex_pattern=regex_pattern) -self.assertEqual(r, "___this-is-a-test___") +## Backends and installation -txt = "___This is a test___" -regex_pattern = r'[^-a-z0-9_]+' -r = slugify(txt, separator='_', regex_pattern=regex_pattern) -self.assertNotEqual(r, "_this_is_a_test_") +| `backend` | Runtime selection | Installation | +| --- | --- | --- | +| `auto` (default) | Installed Unidecode first, otherwise text-unidecode | Base install includes text-unidecode | +| `text-unidecode` | Only text-unidecode | Included in base install | +| `unidecode` | Only Unidecode | `python -m pip install -e '.[unidecode]'` | +| `anyascii` | Only AnyASCII | `python -m pip install -e '.[anyascii]'` | -txt = '10 | 20 %' -r = slugify(txt, replacements=[['|', 'or'], ['%', 'percent']]) -self.assertEqual(r, "10-or-20-percent") +Explicit selection never silently falls back. A missing selected module raises `ModuleNotFoundError`. +Backend imports are lazy; `allow_unicode=True` bypasses transliteration entirely. +**Extras add dependencies; they do not remove text-unidecode.** The AnyASCII extra does not change the default backend. +There is no dependency-free installation extra in this release. -txt = 'ÜBER Über German Umlaut' -r = slugify(txt, replacements=[['Ü', 'UE'], ['ü', 'ue']]) -self.assertEqual(r, "ueber-ueber-german-umlaut") +Transliteration is not translation, language detection, or context-sensitive pronunciation. +Backends produce different slugs: for example `影師嗎` becomes `ying-shi-ma` with text-unidecode/Unidecode, +but `yingshima` with AnyASCII. Pin both this package and your explicitly chosen backend for stable persisted identifiers. -txt = 'i love 🦄' -r = slugify(txt, allow_unicode=True) -self.assertEqual(r, "i-love") +## API options -txt = 'i love 🦄' -r = slugify(txt, allow_unicode=True, regex_pattern=r'[^🦄]+') -self.assertEqual(r, "🦄") +The original positional parameters remain in their original order. New options are keyword-only. +```python +slugify( + text, entities=True, decimal=True, hexadecimal=True, + max_length=0, word_boundary=False, separator='-', save_order=False, + stopwords=(), regex_pattern=None, lowercase=True, replacements=(), + allow_unicode=False, *, replacement_stage='both', backend='auto', + algorithm='legacy', +) ``` -For more examples, have a look at the [test.py](test.py) file. - -# Command Line Options +- `algorithm`: `'legacy'` is the permanent default, preserving the historical output pipeline. `'modern'` explicitly opts into the changes below. Unknown values raise `ValueError`. +- `text`: `str`, or UTF-8 `bytes`/`bytearray` (invalid bytes ignored). Other objects raise `TypeError`. +- `entities`, `decimal`, `hexadecimal`: independently decode named HTML entities, decimal references, and lowercase-`x` hexadecimal references. Legacy decodes after transliteration and numeric substitutions are all-or-nothing per reference kind. Modern decodes before transliteration and handles invalid references independently. +- `max_length`: legacy budgets internal dashes before separator mapping, so wide separators can exceed the limit. Modern budgets final Python characters, including emitted delimiters. Nonpositive means unlimited for slugify; this is not a byte or grapheme limit. +- `word_boundary`: prefer whole words; shorter later words can fill the budget. If none fit, use a hard cut. +- `save_order`: with word boundaries, stop at the first oversized word instead of skipping it. +- `separator`: literal emitted delimiter; may be empty or multiple characters. Existing dashes also map to this delimiter for compatibility. Modern truncation preserves word characters even when they match the output delimiter. +- `stopwords`: iterable of whole normalized, internal dash-separated tokens. Matching is case-insensitive when `lowercase=True`; stopwords themselves are not transliterated. Legacy case-sensitive membership consumes iterators; modern snapshots them once. +- `regex_pattern`: string or compiled regular expression matching **disallowed** characters, not allowed ones. It overrides default filtering. Empty strings retain historical default-pattern behavior. +- `lowercase`: apply `str.lower()`; false preserves case. +- `replacements`: ordered iterable of `(old, new)` literal string rules. Legacy preserves iterator consumption across passes. Modern materializes outer and inner iterables once so generators behave like lists. +- `replacement_stage`: `both` preserves two passes; `pre` runs only before normalization; `post` runs after cleanup and stopword removal, before separator mapping and truncation. Post replacements are **not** re-sanitized. Replacements need not be idempotent. +- `allow_unicode`: retain Unicode word characters after NFKC normalization, not exact original code points; default ASCII mode uses NFKD plus transliteration. +- `backend`: select a backend from the table above. Ignored for transliteration in Unicode mode, but still validated. + +`smart_truncate(string, max_length=0, word_boundary=False, separator=' ', save_order=False)` +is also public and retains legacy behavior: `str.strip(separator)` strips a character set, empty separators raise `ValueError`, zero is unlimited, and negative limits retain slicing semantics. Modern slugify uses a separate private token-budget helper; it does not change this public function. -With the package, a command line tool called `slugify` is also installed. - -It allows convenient command line access to all the features the `slugify` function supports. Call it with `-h` for help. - -The command can take its input directly on the command line or from STDIN (when the `--stdin` flag is passed): - -``` -$ echo "Taking input from STDIN" | slugify --stdin -taking-input-from-stdin -``` +```python +from slugify import slugify -``` -$ slugify taking input from the command line -taking-input-from-the-command-line +assert slugify('a'b') == 'ab' # unchanged default +assert slugify('a'b', algorithm='modern') == 'a-b' +assert slugify('xylophone x', separator='x', max_length=100, algorithm='modern') == 'xylophonexx' ``` -Please note that when a multi-valued option such as `--stopwords` or `--replacements` is passed, you need to use `--` as separator before you start with the input: +## Recipes and boundaries -``` -$ slugify --stopwords the in a hurry -- the quick brown fox jumps over the lazy dog in a hurry -quick-brown-fox-jumps-over-lazy-dog +```python +from slugify import slugify, GERMAN + +assert slugify('ÜBER', replacements=GERMAN, replacement_stage='pre') == 'ueber' +assert slugify('a', replacements=[('a', 'aa')]) == 'aaaa' # legacy two passes +assert slugify('a', replacements=[('a', 'aa')], replacement_stage='pre') == 'aa' +assert slugify('one two three four', max_length=12, word_boundary=True) == 'one-two-four' +assert slugify('one two three four', max_length=12, word_boundary=True, save_order=True) == 'one-two' +assert slugify('a b c', separator='---', max_length=5, algorithm='modern') == 'a---b' +assert slugify('Baby’s shoes', replacements=[('’', '-')], replacement_stage='pre') == 'baby-s-shoes' ``` -# Running the tests +`CYRILLIC`, `GERMAN`, `GREEK`, and their combined `PRE_TRANSLATIONS` are optional substitution lists, +not automatically applied locale rules. `allow_unicode=True` can normalize compatibility jamo, and does not preserve emoji by default. +Disable all three entity flags if encoded markup should not be decoded. +Empty input, whitespace, or entirely filtered content can yield an empty string; callers choose an appropriate fallback. -To run the tests against the current environment: +Slugs are not guaranteed unique, filesystem-safe on every OS, XML-name-safe, or safe as an entire URL. +Choose escaping, reserved-name handling, path validation, and transactional uniqueness for your destination. +Custom regexes and post replacements can intentionally introduce punctuation; do not treat this package as a security sanitizer. - python test.py +## Command line -# Contribution +`slugify --help` and `python -m slugify --help` describe all options, including `--algorithm` (default `legacy`), `--backend` and `--replacement-stage`. +Use `--` before text when supplying multi-valued options: -Please read the ([wiki](https://github.com/un33k/python-slugify/wiki/Python-Slugify-Wiki)) page prior to raising any PRs. +```sh +slugify --stopwords the in a hurry -- the quick brown fox jumps over the lazy dog in a hurry +slugify --replacement-stage pre --replacements 'a->aa' -- a +``` -# License +## Development and local release checks -Released under a ([MIT](LICENSE)) license. +```sh +python -m pip install -r dev.requirements.txt +python -m pip install -e '.[unidecode,anyascii]' +python -m pytest +python -m mypy +python tools/check_dist.py +# Full declared interpreter/backend matrix (requires those interpreters): +tox +``` -### Notes on GPL dependencies -Though the dependencies may be GPL licensed, `python-slugify` itself is not considered a derivative work and will remain under the MIT license. -If you wish to avoid installation of any GPL licensed packages, please note that the default dependency `text-unidecode` explicitly lets you choose to use the [Artistic License](https://opensource.org/license/artistic-perl-1-0-2/) instead. Use without concern. +The artifact check builds and installs both wheel and source archive in temporary environments outside the checkout. +It never uploads or tags. Publishing requires a separate maintainer decision; there is no `setup.py publish` shortcut. +See [migration and release notes](docs/release-9/migration.md), [review and draft replies](docs/release-9/recent-review.md), +and the [historical review](docs/release-9/historical-review.md). Please consult the +[contribution wiki](https://github.com/un33k/python-slugify/wiki/Python-Slugify-Wiki) before proposing changes. -# Version +## Licensing -X.Y.Z Version +python-slugify's own code is [MIT licensed](LICENSE). Dependency licenses are separate: - `MAJOR` version -- when you make incompatible API changes, - `MINOR` version -- when you add functionality in a backwards-compatible manner, and - `PATCH` version -- when you make backwards-compatible bug fixes. +- [text-unidecode](https://github.com/kmike/text-unidecode): upstream offers the Artistic License or GPL; review the license files for the version you distribute. +- [Unidecode](https://github.com/avian2/unidecode): GPL-licensed; review its upstream license text and version. +- [AnyASCII](https://github.com/anyascii/anyascii): ISC-licensed; review its upstream license text and any bundled notices. -[status-image]: https://github.com/un33k/python-slugify/actions/workflows/main.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 -[coverage-link]: https://coveralls.io/r/un33k/python-slugify -[download-image]: https://img.shields.io/pypi/dm/python-slugify.svg -[download-link]: https://pypi.python.org/pypi/python-slugify +The installed package set and the backend used at runtime are different questions. Selecting AnyASCII does not remove +text-unidecode from a normal installation. This is factual dependency guidance, not legal advice or a blanket assurance +about your application's obligations. Evaluate the actual versions, distribution method, and applicable license terms. -# Sponsors +## Sponsors -[Neekware Inc.](http://neekware.com) +[Neekware Inc.](https://neekware.com) diff --git a/dev.requirements.txt b/dev.requirements.txt index 5f94d7b..d5e79de 100644 --- a/dev.requirements.txt +++ b/dev.requirements.txt @@ -1,3 +1,7 @@ -pycodestyle==2.8.0 -twine==3.4.1 -flake8==4.0.1 \ No newline at end of file +build>=1.2,<2 +coverage[toml]>=7,<8 +mypy>=1.11,<2 +pycodestyle>=2.12,<3 +pytest>=8,<10 +tox>=4,<5 +twine>=6,<7 diff --git a/docs/release-9/historical-evidence.json b/docs/release-9/historical-evidence.json new file mode 100644 index 0000000..e852248 --- /dev/null +++ b/docs/release-9/historical-evidence.json @@ -0,0 +1,66489 @@ +{ + "snapshot_date": "2026-09-08", + "commit": "7b6d5d96c1995e6dccb39a19a13ba78d7d0a3ee4", + "issues": [ + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/1", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/1/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/1/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/1/events", + "html_url": "https://github.com/un33k/python-slugify/pull/1", + "id": 13552018, + "node_id": "MDExOlB1bGxSZXF1ZXN0NTMyNTMzMw==", + "number": 1, + "title": "Separator argument added.", + "user": { + "login": "fedale", + "id": 127323, + "node_id": "MDQ6VXNlcjEyNzMyMw==", + "avatar_url": "https://avatars.githubusercontent.com/u/127323?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/fedale", + "html_url": "https://github.com/fedale", + "followers_url": "https://api.github.com/users/fedale/followers", + "following_url": "https://api.github.com/users/fedale/following{/other_user}", + "gists_url": "https://api.github.com/users/fedale/gists{/gist_id}", + "starred_url": "https://api.github.com/users/fedale/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/fedale/subscriptions", + "organizations_url": "https://api.github.com/users/fedale/orgs", + "repos_url": "https://api.github.com/users/fedale/repos", + "events_url": "https://api.github.com/users/fedale/events{/privacy}", + "received_events_url": "https://api.github.com/users/fedale/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 5, + "created_at": "2013-04-23T19:18:38Z", + "updated_at": "2014-06-18T11:55:55Z", + "closed_at": "2013-04-24T14:37:58Z", + "assignee": null, + "author_association": "NONE", + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/1", + "html_url": "https://github.com/un33k/python-slugify/pull/1", + "diff_url": "https://github.com/un33k/python-slugify/pull/1.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/1.patch", + "merged_at": null + }, + "body": "I've added 'separator' argument to module, so you can choose which separator to use (by default it is dash). I think it is useful when you want to use another char to slugify your text (for example, sometimes I prefer to use underscore or dot).\n", + "closed_by": { + "login": "fedale", + "id": 127323, + "node_id": "MDQ6VXNlcjEyNzMyMw==", + "avatar_url": "https://avatars.githubusercontent.com/u/127323?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/fedale", + "html_url": "https://github.com/fedale", + "followers_url": "https://api.github.com/users/fedale/followers", + "following_url": "https://api.github.com/users/fedale/following{/other_user}", + "gists_url": "https://api.github.com/users/fedale/gists{/gist_id}", + "starred_url": "https://api.github.com/users/fedale/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/fedale/subscriptions", + "organizations_url": "https://api.github.com/users/fedale/orgs", + "repos_url": "https://api.github.com/users/fedale/repos", + "events_url": "https://api.github.com/users/fedale/events{/privacy}", + "received_events_url": "https://api.github.com/users/fedale/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/1/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/1/timeline", + "performed_via_github_app": null, + "state_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/2", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/2/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/2/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/2/events", + "html_url": "https://github.com/un33k/python-slugify/pull/2", + "id": 14184579, + "node_id": "MDExOlB1bGxSZXF1ZXN0NTYzOTA1Mg==", + "number": 2, + "title": "Support python 3", + "user": { + "login": "arthurdarcet", + "id": 973454, + "node_id": "MDQ6VXNlcjk3MzQ1NA==", + "avatar_url": "https://avatars.githubusercontent.com/u/973454?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/arthurdarcet", + "html_url": "https://github.com/arthurdarcet", + "followers_url": "https://api.github.com/users/arthurdarcet/followers", + "following_url": "https://api.github.com/users/arthurdarcet/following{/other_user}", + "gists_url": "https://api.github.com/users/arthurdarcet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/arthurdarcet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/arthurdarcet/subscriptions", + "organizations_url": "https://api.github.com/users/arthurdarcet/orgs", + "repos_url": "https://api.github.com/users/arthurdarcet/repos", + "events_url": "https://api.github.com/users/arthurdarcet/events{/privacy}", + "received_events_url": "https://api.github.com/users/arthurdarcet/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 2, + "created_at": "2013-05-10T09:38:57Z", + "updated_at": "2014-07-02T18:12:47Z", + "closed_at": "2013-05-21T11:25:31Z", + "assignee": null, + "author_association": "CONTRIBUTOR", + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/2", + "html_url": "https://github.com/un33k/python-slugify/pull/2", + "diff_url": "https://github.com/un33k/python-slugify/pull/2.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/2.patch", + "merged_at": "2013-05-21T11:25:31Z" + }, + "body": "I am not very competent in 2to3 migrations, but this seems to work.\nThe tests are ok with python 2 and with python 3.\n\nArthur\n\nEdit: Sorry for the mess with the Travis builds, i had some trouble finding out how to make travis run the 2to3 conversion…\n", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/2/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/2/timeline", + "performed_via_github_app": null, + "state_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/3", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/3/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/3/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/3/events", + "html_url": "https://github.com/un33k/python-slugify/pull/3", + "id": 15769635, + "node_id": "MDExOlB1bGxSZXF1ZXN0NjQyODk1NA==", + "number": 3, + "title": "word_boundary problem", + "user": { + "login": "voronind", + "id": 1578066, + "node_id": "MDQ6VXNlcjE1NzgwNjY=", + "avatar_url": "https://avatars.githubusercontent.com/u/1578066?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/voronind", + "html_url": "https://github.com/voronind", + "followers_url": "https://api.github.com/users/voronind/followers", + "following_url": "https://api.github.com/users/voronind/following{/other_user}", + "gists_url": "https://api.github.com/users/voronind/gists{/gist_id}", + "starred_url": "https://api.github.com/users/voronind/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/voronind/subscriptions", + "organizations_url": "https://api.github.com/users/voronind/orgs", + "repos_url": "https://api.github.com/users/voronind/repos", + "events_url": "https://api.github.com/users/voronind/events{/privacy}", + "received_events_url": "https://api.github.com/users/voronind/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 2, + "created_at": "2013-06-19T21:31:46Z", + "updated_at": "2014-06-18T13:42:13Z", + "closed_at": "2013-06-21T20:17:49Z", + "assignee": null, + "author_association": "NONE", + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/3", + "html_url": "https://github.com/un33k/python-slugify/pull/3", + "diff_url": "https://github.com/un33k/python-slugify/pull/3.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/3.patch", + "merged_at": null + }, + "body": "patch fixes:\nsmart_truncate('1-3-5-7-9-1', max_length=9, word_boundaries=True)\n\npatch BROKES:\nsmart_truncate('oneword', max_length=7, word_boundaries=True)\n", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/3/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/3/timeline", + "performed_via_github_app": null, + "state_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/4", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/4/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/4/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/4/events", + "html_url": "https://github.com/un33k/python-slugify/pull/4", + "id": 25074116, + "node_id": "MDExOlB1bGxSZXF1ZXN0MTEyMzYyOTk=", + "number": 4, + "title": "fix file reading in python 3", + "user": { + "login": "pudo", + "id": 41628, + "node_id": "MDQ6VXNlcjQxNjI4", + "avatar_url": "https://avatars.githubusercontent.com/u/41628?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/pudo", + "html_url": "https://github.com/pudo", + "followers_url": "https://api.github.com/users/pudo/followers", + "following_url": "https://api.github.com/users/pudo/following{/other_user}", + "gists_url": "https://api.github.com/users/pudo/gists{/gist_id}", + "starred_url": "https://api.github.com/users/pudo/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/pudo/subscriptions", + "organizations_url": "https://api.github.com/users/pudo/orgs", + "repos_url": "https://api.github.com/users/pudo/repos", + "events_url": "https://api.github.com/users/pudo/events{/privacy}", + "received_events_url": "https://api.github.com/users/pudo/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 3, + "created_at": "2014-01-05T17:20:18Z", + "updated_at": "2014-01-09T22:34:27Z", + "closed_at": "2014-01-05T18:01:12Z", + "assignee": null, + "author_association": "CONTRIBUTOR", + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/4", + "html_url": "https://github.com/un33k/python-slugify/pull/4", + "diff_url": "https://github.com/un33k/python-slugify/pull/4.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/4.patch", + "merged_at": "2014-01-05T18:01:12Z" + }, + "body": "This would enable the package to be used from Python 3 (and thus enable me to port pudo/dataset). \n", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/4/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/4/timeline", + "performed_via_github_app": null, + "state_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/5", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/5/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/5/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/5/events", + "html_url": "https://github.com/un33k/python-slugify/pull/5", + "id": 35274069, + "node_id": "MDExOlB1bGxSZXF1ZXN0MTY4NzkwNDA=", + "number": 5, + "title": "Console entry point", + "user": { + "login": "ekamil", + "id": 1164694, + "node_id": "MDQ6VXNlcjExNjQ2OTQ=", + "avatar_url": "https://avatars.githubusercontent.com/u/1164694?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/ekamil", + "html_url": "https://github.com/ekamil", + "followers_url": "https://api.github.com/users/ekamil/followers", + "following_url": "https://api.github.com/users/ekamil/following{/other_user}", + "gists_url": "https://api.github.com/users/ekamil/gists{/gist_id}", + "starred_url": "https://api.github.com/users/ekamil/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/ekamil/subscriptions", + "organizations_url": "https://api.github.com/users/ekamil/orgs", + "repos_url": "https://api.github.com/users/ekamil/repos", + "events_url": "https://api.github.com/users/ekamil/events{/privacy}", + "received_events_url": "https://api.github.com/users/ekamil/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2014-06-09T10:21:49Z", + "updated_at": "2014-08-17T01:35:53Z", + "closed_at": "2014-08-17T01:35:08Z", + "assignee": null, + "author_association": "CONTRIBUTOR", + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/5", + "html_url": "https://github.com/un33k/python-slugify/pull/5", + "diff_url": "https://github.com/un33k/python-slugify/pull/5.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/5.patch", + "merged_at": "2014-08-17T01:35:08Z" + }, + "body": "", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/5/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/5/timeline", + "performed_via_github_app": null, + "state_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/6", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/6/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/6/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/6/events", + "html_url": "https://github.com/un33k/python-slugify/issues/6", + "id": 39762649, + "node_id": "MDU6SXNzdWUzOTc2MjY0OQ==", + "number": 6, + "title": "Python 3 support?", + "user": { + "login": "jleclanche", + "id": 235410, + "node_id": "MDQ6VXNlcjIzNTQxMA==", + "avatar_url": "https://avatars.githubusercontent.com/u/235410?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/jleclanche", + "html_url": "https://github.com/jleclanche", + "followers_url": "https://api.github.com/users/jleclanche/followers", + "following_url": "https://api.github.com/users/jleclanche/following{/other_user}", + "gists_url": "https://api.github.com/users/jleclanche/gists{/gist_id}", + "starred_url": "https://api.github.com/users/jleclanche/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/jleclanche/subscriptions", + "organizations_url": "https://api.github.com/users/jleclanche/orgs", + "repos_url": "https://api.github.com/users/jleclanche/repos", + "events_url": "https://api.github.com/users/jleclanche/events{/privacy}", + "received_events_url": "https://api.github.com/users/jleclanche/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2014-08-07T20:03:08Z", + "updated_at": "2014-08-07T20:05:16Z", + "closed_at": "2014-08-07T20:05:16Z", + "assignee": null, + "author_association": "NONE", + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "Currently getting:\n\n``` pytb\nTraceback (most recent call last):\n...\n File \"/home/adys/.local/share/virtualenvs/wow/lib/python3.4/site-packages/slugify.py\", line 24, in slugify\n unicode(\n```\n", + "closed_by": { + "login": "jleclanche", + "id": 235410, + "node_id": "MDQ6VXNlcjIzNTQxMA==", + "avatar_url": "https://avatars.githubusercontent.com/u/235410?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/jleclanche", + "html_url": "https://github.com/jleclanche", + "followers_url": "https://api.github.com/users/jleclanche/followers", + "following_url": "https://api.github.com/users/jleclanche/following{/other_user}", + "gists_url": "https://api.github.com/users/jleclanche/gists{/gist_id}", + "starred_url": "https://api.github.com/users/jleclanche/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/jleclanche/subscriptions", + "organizations_url": "https://api.github.com/users/jleclanche/orgs", + "repos_url": "https://api.github.com/users/jleclanche/repos", + "events_url": "https://api.github.com/users/jleclanche/events{/privacy}", + "received_events_url": "https://api.github.com/users/jleclanche/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/6/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/6/timeline", + "performed_via_github_app": null, + "state_reason": "completed", + "pinned_comment": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/7", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/7/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/7/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/7/events", + "html_url": "https://github.com/un33k/python-slugify/issues/7", + "id": 40230654, + "node_id": "MDU6SXNzdWU0MDIzMDY1NA==", + "number": 7, + "title": "python-slugify depends on a GPL library", + "user": { + "login": "sekrause", + "id": 595780, + "node_id": "MDQ6VXNlcjU5NTc4MA==", + "avatar_url": "https://avatars.githubusercontent.com/u/595780?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/sekrause", + "html_url": "https://github.com/sekrause", + "followers_url": "https://api.github.com/users/sekrause/followers", + "following_url": "https://api.github.com/users/sekrause/following{/other_user}", + "gists_url": "https://api.github.com/users/sekrause/gists{/gist_id}", + "starred_url": "https://api.github.com/users/sekrause/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/sekrause/subscriptions", + "organizations_url": "https://api.github.com/users/sekrause/orgs", + "repos_url": "https://api.github.com/users/sekrause/repos", + "events_url": "https://api.github.com/users/sekrause/events{/privacy}", + "received_events_url": "https://api.github.com/users/sekrause/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 3, + "created_at": "2014-08-14T07:51:35Z", + "updated_at": "2018-12-25T23:16:42Z", + "closed_at": "2014-08-17T01:29:34Z", + "assignee": null, + "author_association": "NONE", + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "While `python-slugify` itself is BSD licensed its dependency Unidecode is a pure GPL library. It's technically not a problem for `python-slugify` because the licenses are compatible, but it should probably be mentioned somewhere because this makes `python-slugify` unfit for most commercial deployments.\n", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/7/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/7/timeline", + "performed_via_github_app": null, + "state_reason": "completed", + "pinned_comment": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/8", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/8/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/8/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/8/events", + "html_url": "https://github.com/un33k/python-slugify/pull/8", + "id": 58040506, + "node_id": "MDExOlB1bGxSZXF1ZXN0Mjk1MDg2NTY=", + "number": 8, + "title": "Fix bug (len of output string)", + "user": { + "login": "dioexul", + "id": 2740961, + "node_id": "MDQ6VXNlcjI3NDA5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/2740961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dioexul", + "html_url": "https://github.com/dioexul", + "followers_url": "https://api.github.com/users/dioexul/followers", + "following_url": "https://api.github.com/users/dioexul/following{/other_user}", + "gists_url": "https://api.github.com/users/dioexul/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dioexul/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dioexul/subscriptions", + "organizations_url": "https://api.github.com/users/dioexul/orgs", + "repos_url": "https://api.github.com/users/dioexul/repos", + "events_url": "https://api.github.com/users/dioexul/events{/privacy}", + "received_events_url": "https://api.github.com/users/dioexul/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 0, + "created_at": "2015-02-18T08:38:41Z", + "updated_at": "2015-02-22T14:43:58Z", + "closed_at": "2015-02-22T14:43:58Z", + "assignee": null, + "author_association": "CONTRIBUTOR", + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/8", + "html_url": "https://github.com/un33k/python-slugify/pull/8", + "diff_url": "https://github.com/un33k/python-slugify/pull/8.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/8.patch", + "merged_at": "2015-02-22T14:43:58Z" + }, + "body": "Fix count next length:\nFor string 'jaja---lol-méméméoo--a' and max_length=19\nold result was 'jaja-lol-mememeoo' with len = 17 but correct result should be 'jaja-lol-mememeoo-a' with len = 19.\n", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/8/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/8/timeline", + "performed_via_github_app": null, + "state_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/9", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/9/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/9/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/9/events", + "html_url": "https://github.com/un33k/python-slugify/pull/9", + "id": 58519875, + "node_id": "MDExOlB1bGxSZXF1ZXN0Mjk3NzcxMzM=", + "number": 9, + "title": "Add parameter 'save_order'.", + "user": { + "login": "dioexul", + "id": 2740961, + "node_id": "MDQ6VXNlcjI3NDA5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/2740961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dioexul", + "html_url": "https://github.com/dioexul", + "followers_url": "https://api.github.com/users/dioexul/followers", + "following_url": "https://api.github.com/users/dioexul/following{/other_user}", + "gists_url": "https://api.github.com/users/dioexul/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dioexul/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dioexul/subscriptions", + "organizations_url": "https://api.github.com/users/dioexul/orgs", + "repos_url": "https://api.github.com/users/dioexul/repos", + "events_url": "https://api.github.com/users/dioexul/events{/privacy}", + "received_events_url": "https://api.github.com/users/dioexul/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 4, + "created_at": "2015-02-22T21:24:00Z", + "updated_at": "2015-04-12T18:23:24Z", + "closed_at": "2015-02-26T21:51:41Z", + "assignee": null, + "author_association": "CONTRIBUTOR", + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/9", + "html_url": "https://github.com/un33k/python-slugify/pull/9", + "diff_url": "https://github.com/un33k/python-slugify/pull/9.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/9.patch", + "merged_at": "2015-02-26T21:51:41Z" + }, + "body": "If save_order == True then order of words of output string will be like order of input string.\n", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/9/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/9/timeline", + "performed_via_github_app": null, + "state_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/10", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/10/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/10/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/10/events", + "html_url": "https://github.com/un33k/python-slugify/issues/10", + "id": 62666531, + "node_id": "MDU6SXNzdWU2MjY2NjUzMQ==", + "number": 10, + "title": "Emoticons fail", + "user": { + "login": "powtac", + "id": 36167, + "node_id": "MDQ6VXNlcjM2MTY3", + "avatar_url": "https://avatars.githubusercontent.com/u/36167?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/powtac", + "html_url": "https://github.com/powtac", + "followers_url": "https://api.github.com/users/powtac/followers", + "following_url": "https://api.github.com/users/powtac/following{/other_user}", + "gists_url": "https://api.github.com/users/powtac/gists{/gist_id}", + "starred_url": "https://api.github.com/users/powtac/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/powtac/subscriptions", + "organizations_url": "https://api.github.com/users/powtac/orgs", + "repos_url": "https://api.github.com/users/powtac/repos", + "events_url": "https://api.github.com/users/powtac/events{/privacy}", + "received_events_url": "https://api.github.com/users/powtac/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 6, + "created_at": "2015-03-18T11:26:01Z", + "updated_at": "2015-07-08T14:14:20Z", + "closed_at": "2015-07-08T14:14:20Z", + "assignee": null, + "author_association": "NONE", + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/10/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/10/timeline", + "performed_via_github_app": null, + "state_reason": "completed", + "pinned_comment": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/11", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/11/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/11/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/11/events", + "html_url": "https://github.com/un33k/python-slugify/issues/11", + "id": 68617653, + "node_id": "MDU6SXNzdWU2ODYxNzY1Mw==", + "number": 11, + "title": "PyPi packages include __pycache__ directory", + "user": { + "login": "AcidWeb", + "id": 3713734, + "node_id": "MDQ6VXNlcjM3MTM3MzQ=", + "avatar_url": "https://avatars.githubusercontent.com/u/3713734?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/AcidWeb", + "html_url": "https://github.com/AcidWeb", + "followers_url": "https://api.github.com/users/AcidWeb/followers", + "following_url": "https://api.github.com/users/AcidWeb/following{/other_user}", + "gists_url": "https://api.github.com/users/AcidWeb/gists{/gist_id}", + "starred_url": "https://api.github.com/users/AcidWeb/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/AcidWeb/subscriptions", + "organizations_url": "https://api.github.com/users/AcidWeb/orgs", + "repos_url": "https://api.github.com/users/AcidWeb/repos", + "events_url": "https://api.github.com/users/AcidWeb/events{/privacy}", + "received_events_url": "https://api.github.com/users/AcidWeb/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2015-04-15T08:51:01Z", + "updated_at": "2015-04-15T19:24:17Z", + "closed_at": "2015-04-15T19:24:17Z", + "assignee": null, + "author_association": "NONE", + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "And this break some build systems like buildout.\n", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/11/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/11/timeline", + "performed_via_github_app": null, + "state_reason": "completed", + "pinned_comment": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/12", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/12/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/12/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/12/events", + "html_url": "https://github.com/un33k/python-slugify/issues/12", + "id": 68875961, + "node_id": "MDU6SXNzdWU2ODg3NTk2MQ==", + "number": 12, + "title": "python-slugify==1.0.1 disappeared from PyPi", + "user": { + "login": "kurevin", + "id": 3001336, + "node_id": "MDQ6VXNlcjMwMDEzMzY=", + "avatar_url": "https://avatars.githubusercontent.com/u/3001336?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/kurevin", + "html_url": "https://github.com/kurevin", + "followers_url": "https://api.github.com/users/kurevin/followers", + "following_url": "https://api.github.com/users/kurevin/following{/other_user}", + "gists_url": "https://api.github.com/users/kurevin/gists{/gist_id}", + "starred_url": "https://api.github.com/users/kurevin/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/kurevin/subscriptions", + "organizations_url": "https://api.github.com/users/kurevin/orgs", + "repos_url": "https://api.github.com/users/kurevin/repos", + "events_url": "https://api.github.com/users/kurevin/events{/privacy}", + "received_events_url": "https://api.github.com/users/kurevin/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2015-04-16T08:49:43Z", + "updated_at": "2015-04-16T19:14:03Z", + "closed_at": "2015-04-16T19:14:03Z", + "assignee": null, + "author_association": "NONE", + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "Version 1.0.1 of this package has disappeared from PyPi repository and this broke our pip requirement `python-slugify==1.0.1`.\n\nPlease _never_ remove old versions from PyPy repository.\n", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/12/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/12/timeline", + "performed_via_github_app": null, + "state_reason": "completed", + "pinned_comment": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/13", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/13/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/13/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/13/events", + "html_url": "https://github.com/un33k/python-slugify/pull/13", + "id": 72557038, + "node_id": "MDExOlB1bGxSZXF1ZXN0MzQ1Nzc2NjY=", + "number": 13, + "title": "Add Python versions to setup.py classifiers.", + "user": { + "login": "kengruven", + "id": 22565, + "node_id": "MDQ6VXNlcjIyNTY1", + "avatar_url": "https://avatars.githubusercontent.com/u/22565?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/kengruven", + "html_url": "https://github.com/kengruven", + "followers_url": "https://api.github.com/users/kengruven/followers", + "following_url": "https://api.github.com/users/kengruven/following{/other_user}", + "gists_url": "https://api.github.com/users/kengruven/gists{/gist_id}", + "starred_url": "https://api.github.com/users/kengruven/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/kengruven/subscriptions", + "organizations_url": "https://api.github.com/users/kengruven/orgs", + "repos_url": "https://api.github.com/users/kengruven/repos", + "events_url": "https://api.github.com/users/kengruven/events{/privacy}", + "received_events_url": "https://api.github.com/users/kengruven/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2015-05-02T00:38:08Z", + "updated_at": "2015-05-05T14:58:52Z", + "closed_at": "2015-05-05T14:58:52Z", + "assignee": null, + "author_association": "CONTRIBUTOR", + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/13", + "html_url": "https://github.com/un33k/python-slugify/pull/13", + "diff_url": "https://github.com/un33k/python-slugify/pull/13.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/13.patch", + "merged_at": "2015-05-05T14:58:52Z" + }, + "body": "This should let caniusepython3 detect that it’s Python-3-ready.\n", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/13/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/13/timeline", + "performed_via_github_app": null, + "state_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/14", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/14/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/14/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/14/events", + "html_url": "https://github.com/un33k/python-slugify/issues/14", + "id": 73321982, + "node_id": "MDU6SXNzdWU3MzMyMTk4Mg==", + "number": 14, + "title": "Support a stop-word list when slugifying", + "user": { + "login": "euangoddard", + "id": 412672, + "node_id": "MDQ6VXNlcjQxMjY3Mg==", + "avatar_url": "https://avatars.githubusercontent.com/u/412672?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/euangoddard", + "html_url": "https://github.com/euangoddard", + "followers_url": "https://api.github.com/users/euangoddard/followers", + "following_url": "https://api.github.com/users/euangoddard/following{/other_user}", + "gists_url": "https://api.github.com/users/euangoddard/gists{/gist_id}", + "starred_url": "https://api.github.com/users/euangoddard/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/euangoddard/subscriptions", + "organizations_url": "https://api.github.com/users/euangoddard/orgs", + "repos_url": "https://api.github.com/users/euangoddard/repos", + "events_url": "https://api.github.com/users/euangoddard/events{/privacy}", + "received_events_url": "https://api.github.com/users/euangoddard/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2015-05-05T13:56:50Z", + "updated_at": "2015-05-06T14:39:40Z", + "closed_at": "2015-05-06T14:39:40Z", + "assignee": null, + "author_association": "CONTRIBUTOR", + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "It would be nice to be able to specify a list of common English words which add little to a slug, e.g.\n\n``` python\n>>> slugify('The quick brown fox jumps over the lazy dog', stopwords=['the'])\n'quick-brown-fox-jumps-over-lazy-dog'\n```\n", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/14/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/14/timeline", + "performed_via_github_app": null, + "state_reason": "completed", + "pinned_comment": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/15", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/15/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/15/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/15/events", + "html_url": "https://github.com/un33k/python-slugify/pull/15", + "id": 73551049, + "node_id": "MDExOlB1bGxSZXF1ZXN0MzQ3OTU5MzY=", + "number": 15, + "title": "Add support for stopwords", + "user": { + "login": "euangoddard", + "id": 412672, + "node_id": "MDQ6VXNlcjQxMjY3Mg==", + "avatar_url": "https://avatars.githubusercontent.com/u/412672?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/euangoddard", + "html_url": "https://github.com/euangoddard", + "followers_url": "https://api.github.com/users/euangoddard/followers", + "following_url": "https://api.github.com/users/euangoddard/following{/other_user}", + "gists_url": "https://api.github.com/users/euangoddard/gists{/gist_id}", + "starred_url": "https://api.github.com/users/euangoddard/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/euangoddard/subscriptions", + "organizations_url": "https://api.github.com/users/euangoddard/orgs", + "repos_url": "https://api.github.com/users/euangoddard/repos", + "events_url": "https://api.github.com/users/euangoddard/events{/privacy}", + "received_events_url": "https://api.github.com/users/euangoddard/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 2, + "created_at": "2015-05-06T08:12:13Z", + "updated_at": "2015-05-06T14:39:39Z", + "closed_at": "2015-05-06T14:39:39Z", + "assignee": null, + "author_association": "CONTRIBUTOR", + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/15", + "html_url": "https://github.com/un33k/python-slugify/pull/15", + "diff_url": "https://github.com/un33k/python-slugify/pull/15.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/15.patch", + "merged_at": "2015-05-06T14:39:39Z" + }, + "body": "", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/15/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/15/timeline", + "performed_via_github_app": null, + "state_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/16", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/16/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/16/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/16/events", + "html_url": "https://github.com/un33k/python-slugify/pull/16", + "id": 92881969, + "node_id": "MDExOlB1bGxSZXF1ZXN0MzkxNzc1MDE=", + "number": 16, + "title": "unichr is not defined in python 3", + "user": { + "login": "arthurdarcet", + "id": 973454, + "node_id": "MDQ6VXNlcjk3MzQ1NA==", + "avatar_url": "https://avatars.githubusercontent.com/u/973454?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/arthurdarcet", + "html_url": "https://github.com/arthurdarcet", + "followers_url": "https://api.github.com/users/arthurdarcet/followers", + "following_url": "https://api.github.com/users/arthurdarcet/following{/other_user}", + "gists_url": "https://api.github.com/users/arthurdarcet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/arthurdarcet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/arthurdarcet/subscriptions", + "organizations_url": "https://api.github.com/users/arthurdarcet/orgs", + "repos_url": "https://api.github.com/users/arthurdarcet/repos", + "events_url": "https://api.github.com/users/arthurdarcet/events{/privacy}", + "received_events_url": "https://api.github.com/users/arthurdarcet/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2015-07-03T13:59:35Z", + "updated_at": "2015-07-08T13:44:46Z", + "closed_at": "2015-07-03T14:41:40Z", + "assignee": null, + "author_association": "CONTRIBUTOR", + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/16", + "html_url": "https://github.com/un33k/python-slugify/pull/16", + "diff_url": "https://github.com/un33k/python-slugify/pull/16.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/16.patch", + "merged_at": "2015-07-03T14:41:40Z" + }, + "body": "With python 3.*:\n\n```\n>>> slugify.slugify('test & test')\nTraceback (most recent call last):\n File \"\", line 1, in \n File \"/Users/arthur/Documents/reaaad/pyregrinate/.venv/lib/python3.4/site-packages/slugify/slugify.py\", line 104, in slugify\n text = CHAR_ENTITY_REXP.sub(lambda m: unichr(name2codepoint[m.group(1)]), text)\n File \"/Users/arthur/Documents/reaaad/pyregrinate/.venv/lib/python3.4/site-packages/slugify/slugify.py\", line 104, in \n text = CHAR_ENTITY_REXP.sub(lambda m: unichr(name2codepoint[m.group(1)]), text)\nNameError: name 'unichr' is not defined\n```\n", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/16/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/16/timeline", + "performed_via_github_app": null, + "state_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/17", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/17/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/17/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/17/events", + "html_url": "https://github.com/un33k/python-slugify/issues/17", + "id": 98122773, + "node_id": "MDU6SXNzdWU5ODEyMjc3Mw==", + "number": 17, + "title": "\\' shoud be replaced by separator", + "user": { + "login": "sfermigier", + "id": 271079, + "node_id": "MDQ6VXNlcjI3MTA3OQ==", + "avatar_url": "https://avatars.githubusercontent.com/u/271079?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/sfermigier", + "html_url": "https://github.com/sfermigier", + "followers_url": "https://api.github.com/users/sfermigier/followers", + "following_url": "https://api.github.com/users/sfermigier/following{/other_user}", + "gists_url": "https://api.github.com/users/sfermigier/gists{/gist_id}", + "starred_url": "https://api.github.com/users/sfermigier/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/sfermigier/subscriptions", + "organizations_url": "https://api.github.com/users/sfermigier/orgs", + "repos_url": "https://api.github.com/users/sfermigier/repos", + "events_url": "https://api.github.com/users/sfermigier/events{/privacy}", + "received_events_url": "https://api.github.com/users/sfermigier/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 8, + "created_at": "2015-07-30T09:27:51Z", + "updated_at": "2016-10-23T22:59:10Z", + "closed_at": "2015-12-30T20:49:54Z", + "assignee": null, + "author_association": "NONE", + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "In your example:\n\n``` python\ntxt = 'C\\'est déjà l\\'été.'\nr = slugify(txt)\nself.assertEqual(r, \"cest-deja-lete\")\n```\n\nI believe the result should be 'c-est-deja-l-ete', not 'cest-deja-lete'.\n", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/17/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/17/timeline", + "performed_via_github_app": null, + "state_reason": "completed", + "pinned_comment": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/18", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/18/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/18/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/18/events", + "html_url": "https://github.com/un33k/python-slugify/pull/18", + "id": 107224326, + "node_id": "MDExOlB1bGxSZXF1ZXN0NDU0MTk0NzQ=", + "number": 18, + "title": "quotes are replaced by -, bump to 1.1.4", + "user": { + "login": "nMustaki", + "id": 1023825, + "node_id": "MDQ6VXNlcjEwMjM4MjU=", + "avatar_url": "https://avatars.githubusercontent.com/u/1023825?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/nMustaki", + "html_url": "https://github.com/nMustaki", + "followers_url": "https://api.github.com/users/nMustaki/followers", + "following_url": "https://api.github.com/users/nMustaki/following{/other_user}", + "gists_url": "https://api.github.com/users/nMustaki/gists{/gist_id}", + "starred_url": "https://api.github.com/users/nMustaki/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/nMustaki/subscriptions", + "organizations_url": "https://api.github.com/users/nMustaki/orgs", + "repos_url": "https://api.github.com/users/nMustaki/repos", + "events_url": "https://api.github.com/users/nMustaki/events{/privacy}", + "received_events_url": "https://api.github.com/users/nMustaki/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 8, + "created_at": "2015-09-18T15:29:41Z", + "updated_at": "2016-01-16T03:47:56Z", + "closed_at": "2015-09-21T08:42:40Z", + "assignee": null, + "author_association": "NONE", + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/18", + "html_url": "https://github.com/un33k/python-slugify/pull/18", + "diff_url": "https://github.com/un33k/python-slugify/pull/18.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/18.patch", + "merged_at": null + }, + "body": "FIX #17\n", + "closed_by": { + "login": "nMustaki", + "id": 1023825, + "node_id": "MDQ6VXNlcjEwMjM4MjU=", + "avatar_url": "https://avatars.githubusercontent.com/u/1023825?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/nMustaki", + "html_url": "https://github.com/nMustaki", + "followers_url": "https://api.github.com/users/nMustaki/followers", + "following_url": "https://api.github.com/users/nMustaki/following{/other_user}", + "gists_url": "https://api.github.com/users/nMustaki/gists{/gist_id}", + "starred_url": "https://api.github.com/users/nMustaki/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/nMustaki/subscriptions", + "organizations_url": "https://api.github.com/users/nMustaki/orgs", + "repos_url": "https://api.github.com/users/nMustaki/repos", + "events_url": "https://api.github.com/users/nMustaki/events{/privacy}", + "received_events_url": "https://api.github.com/users/nMustaki/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/18/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/18/timeline", + "performed_via_github_app": null, + "state_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/19", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/19/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/19/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/19/events", + "html_url": "https://github.com/un33k/python-slugify/pull/19", + "id": 107429574, + "node_id": "MDExOlB1bGxSZXF1ZXN0NDU1MDkwNzY=", + "number": 19, + "title": "Add test cases containing numbers", + "user": { + "login": "edunham", + "id": 812892, + "node_id": "MDQ6VXNlcjgxMjg5Mg==", + "avatar_url": "https://avatars.githubusercontent.com/u/812892?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/edunham", + "html_url": "https://github.com/edunham", + "followers_url": "https://api.github.com/users/edunham/followers", + "following_url": "https://api.github.com/users/edunham/following{/other_user}", + "gists_url": "https://api.github.com/users/edunham/gists{/gist_id}", + "starred_url": "https://api.github.com/users/edunham/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/edunham/subscriptions", + "organizations_url": "https://api.github.com/users/edunham/orgs", + "repos_url": "https://api.github.com/users/edunham/repos", + "events_url": "https://api.github.com/users/edunham/events{/privacy}", + "received_events_url": "https://api.github.com/users/edunham/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 0, + "created_at": "2015-09-21T01:32:01Z", + "updated_at": "2015-09-21T12:40:23Z", + "closed_at": "2015-09-21T12:40:23Z", + "assignee": null, + "author_association": "CONTRIBUTOR", + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/19", + "html_url": "https://github.com/un33k/python-slugify/pull/19", + "diff_url": "https://github.com/un33k/python-slugify/pull/19.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/19.patch", + "merged_at": "2015-09-21T12:40:23Z" + }, + "body": "I noticed that you didn't have any. \n", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/19/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/19/timeline", + "performed_via_github_app": null, + "state_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/20", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/20/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/20/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/20/events", + "html_url": "https://github.com/un33k/python-slugify/pull/20", + "id": 107466830, + "node_id": "MDExOlB1bGxSZXF1ZXN0NDU1MjQ2NDI=", + "number": 20, + "title": "Comma separator parameter", + "user": { + "login": "nMustaki", + "id": 1023825, + "node_id": "MDQ6VXNlcjEwMjM4MjU=", + "avatar_url": "https://avatars.githubusercontent.com/u/1023825?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/nMustaki", + "html_url": "https://github.com/nMustaki", + "followers_url": "https://api.github.com/users/nMustaki/followers", + "following_url": "https://api.github.com/users/nMustaki/following{/other_user}", + "gists_url": "https://api.github.com/users/nMustaki/gists{/gist_id}", + "starred_url": "https://api.github.com/users/nMustaki/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/nMustaki/subscriptions", + "organizations_url": "https://api.github.com/users/nMustaki/orgs", + "repos_url": "https://api.github.com/users/nMustaki/repos", + "events_url": "https://api.github.com/users/nMustaki/events{/privacy}", + "received_events_url": "https://api.github.com/users/nMustaki/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 2, + "created_at": "2015-09-21T08:41:53Z", + "updated_at": "2015-09-21T12:43:37Z", + "closed_at": "2015-09-21T12:37:45Z", + "assignee": null, + "author_association": "NONE", + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/20", + "html_url": "https://github.com/un33k/python-slugify/pull/20", + "diff_url": "https://github.com/un33k/python-slugify/pull/20.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/20.patch", + "merged_at": null + }, + "body": "Allow comma to be replaced by any character, like this : \n\n``` python\ntxt = 'C\\'est déjà l\\'été.'\nr = slugify(txt, comma_replacement=\"-\")\nself.assertEqual(r, \"c-est-deja-l-ete\")\n```\n", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/20/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/20/timeline", + "performed_via_github_app": null, + "state_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/21", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/21/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/21/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/21/events", + "html_url": "https://github.com/un33k/python-slugify/pull/21", + "id": 110121262, + "node_id": "MDExOlB1bGxSZXF1ZXN0NDY5NzA0MTk=", + "number": 21, + "title": "Only call .lower() once", + "user": { + "login": "kengruven", + "id": 22565, + "node_id": "MDQ6VXNlcjIyNTY1", + "avatar_url": "https://avatars.githubusercontent.com/u/22565?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/kengruven", + "html_url": "https://github.com/kengruven", + "followers_url": "https://api.github.com/users/kengruven/followers", + "following_url": "https://api.github.com/users/kengruven/following{/other_user}", + "gists_url": "https://api.github.com/users/kengruven/gists{/gist_id}", + "starred_url": "https://api.github.com/users/kengruven/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/kengruven/subscriptions", + "organizations_url": "https://api.github.com/users/kengruven/orgs", + "repos_url": "https://api.github.com/users/kengruven/repos", + "events_url": "https://api.github.com/users/kengruven/events{/privacy}", + "received_events_url": "https://api.github.com/users/kengruven/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2015-10-06T23:17:03Z", + "updated_at": "2015-10-07T01:01:18Z", + "closed_at": "2015-10-07T01:01:12Z", + "assignee": null, + "author_association": "CONTRIBUTOR", + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/21", + "html_url": "https://github.com/un33k/python-slugify/pull/21", + "diff_url": "https://github.com/un33k/python-slugify/pull/21.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/21.patch", + "merged_at": "2015-10-07T01:01:12Z" + }, + "body": "", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/21/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/21/timeline", + "performed_via_github_app": null, + "state_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/22", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/22/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/22/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/22/events", + "html_url": "https://github.com/un33k/python-slugify/pull/22", + "id": 116520740, + "node_id": "MDExOlB1bGxSZXF1ZXN0NTA0OTM5OTY=", + "number": 22, + "title": "Stopword replacement bug (different separators)", + "user": { + "login": "lucaswo", + "id": 7880558, + "node_id": "MDQ6VXNlcjc4ODA1NTg=", + "avatar_url": "https://avatars.githubusercontent.com/u/7880558?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/lucaswo", + "html_url": "https://github.com/lucaswo", + "followers_url": "https://api.github.com/users/lucaswo/followers", + "following_url": "https://api.github.com/users/lucaswo/following{/other_user}", + "gists_url": "https://api.github.com/users/lucaswo/gists{/gist_id}", + "starred_url": "https://api.github.com/users/lucaswo/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/lucaswo/subscriptions", + "organizations_url": "https://api.github.com/users/lucaswo/orgs", + "repos_url": "https://api.github.com/users/lucaswo/repos", + "events_url": "https://api.github.com/users/lucaswo/events{/privacy}", + "received_events_url": "https://api.github.com/users/lucaswo/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2015-11-12T10:26:10Z", + "updated_at": "2015-12-12T16:15:33Z", + "closed_at": "2015-12-12T16:15:21Z", + "assignee": null, + "author_association": "CONTRIBUTOR", + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/22", + "html_url": "https://github.com/un33k/python-slugify/pull/22", + "diff_url": "https://github.com/un33k/python-slugify/pull/22.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/22.patch", + "merged_at": "2015-12-12T16:15:21Z" + }, + "body": "Just like it says in the title. Whenever I wanted to remove stopwords with a seperator other than '-' nothing happend. \nI just changed the split criteria to '-', because the separator replacement is done later.\n", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/22/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/22/timeline", + "performed_via_github_app": null, + "state_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/23", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/23/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/23/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/23/events", + "html_url": "https://github.com/un33k/python-slugify/pull/23", + "id": 126883937, + "node_id": "MDExOlB1bGxSZXF1ZXN0NTYxNzU2MTM=", + "number": 23, + "title": "Fixed issue #17", + "user": { + "login": "fabiocaccamo", + "id": 1035294, + "node_id": "MDQ6VXNlcjEwMzUyOTQ=", + "avatar_url": "https://avatars.githubusercontent.com/u/1035294?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/fabiocaccamo", + "html_url": "https://github.com/fabiocaccamo", + "followers_url": "https://api.github.com/users/fabiocaccamo/followers", + "following_url": "https://api.github.com/users/fabiocaccamo/following{/other_user}", + "gists_url": "https://api.github.com/users/fabiocaccamo/gists{/gist_id}", + "starred_url": "https://api.github.com/users/fabiocaccamo/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/fabiocaccamo/subscriptions", + "organizations_url": "https://api.github.com/users/fabiocaccamo/orgs", + "repos_url": "https://api.github.com/users/fabiocaccamo/repos", + "events_url": "https://api.github.com/users/fabiocaccamo/events{/privacy}", + "received_events_url": "https://api.github.com/users/fabiocaccamo/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2016-01-15T14:33:44Z", + "updated_at": "2016-01-16T03:48:38Z", + "closed_at": "2016-01-16T03:28:45Z", + "assignee": null, + "author_association": "CONTRIBUTOR", + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/23", + "html_url": "https://github.com/un33k/python-slugify/pull/23", + "diff_url": "https://github.com/un33k/python-slugify/pull/23.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/23.patch", + "merged_at": "2016-01-16T03:28:45Z" + }, + "body": "", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/23/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/23/timeline", + "performed_via_github_app": null, + "state_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/24", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/24/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/24/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/24/events", + "html_url": "https://github.com/un33k/python-slugify/issues/24", + "id": 141276383, + "node_id": "MDU6SXNzdWUxNDEyNzYzODM=", + "number": 24, + "title": "Support only sanitizing URL without stripping unicode?", + "user": { + "login": "jeffwidman", + "id": 483314, + "node_id": "MDQ6VXNlcjQ4MzMxNA==", + "avatar_url": "https://avatars.githubusercontent.com/u/483314?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/jeffwidman", + "html_url": "https://github.com/jeffwidman", + "followers_url": "https://api.github.com/users/jeffwidman/followers", + "following_url": "https://api.github.com/users/jeffwidman/following{/other_user}", + "gists_url": "https://api.github.com/users/jeffwidman/gists{/gist_id}", + "starred_url": "https://api.github.com/users/jeffwidman/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/jeffwidman/subscriptions", + "organizations_url": "https://api.github.com/users/jeffwidman/orgs", + "repos_url": "https://api.github.com/users/jeffwidman/repos", + "events_url": "https://api.github.com/users/jeffwidman/events{/privacy}", + "received_events_url": "https://api.github.com/users/jeffwidman/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": true + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2016-03-16T13:32:52Z", + "updated_at": "2016-06-09T20:23:17Z", + "closed_at": "2016-06-09T20:23:17Z", + "assignee": null, + "author_association": "NONE", + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "I'd like to use this library for sanitizing the URL by stripping out non-letters, converting spaces to dashes, etc. \n\nBut I don't want to convert non-english letters to their ASCII equivalents. For example, I want `slugify('ß')` to return 'ß'. Could you add a parameter that supports this behavior? \n\nSimilar to the default behavior of this library? https://github.com/mozilla/unicode-slugify\n\nI want the extra options of `python-slugify` such as max length, word boundary, stopwords, and an active maintainer, otherwise I'd use that library. \n", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/24/reactions", + "total_count": 1, + "+1": 1, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/24/timeline", + "performed_via_github_app": null, + "state_reason": "completed", + "pinned_comment": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/25", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/25/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/25/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/25/events", + "html_url": "https://github.com/un33k/python-slugify/pull/25", + "id": 158306661, + "node_id": "MDExOlB1bGxSZXF1ZXN0NzI0NjQyODg=", + "number": 25, + "title": "enabling cli usage", + "user": { + "login": "theeluwin", + "id": 1303549, + "node_id": "MDQ6VXNlcjEzMDM1NDk=", + "avatar_url": "https://avatars.githubusercontent.com/u/1303549?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/theeluwin", + "html_url": "https://github.com/theeluwin", + "followers_url": "https://api.github.com/users/theeluwin/followers", + "following_url": "https://api.github.com/users/theeluwin/following{/other_user}", + "gists_url": "https://api.github.com/users/theeluwin/gists{/gist_id}", + "starred_url": "https://api.github.com/users/theeluwin/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/theeluwin/subscriptions", + "organizations_url": "https://api.github.com/users/theeluwin/orgs", + "repos_url": "https://api.github.com/users/theeluwin/repos", + "events_url": "https://api.github.com/users/theeluwin/events{/privacy}", + "received_events_url": "https://api.github.com/users/theeluwin/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 5, + "created_at": "2016-06-03T07:23:32Z", + "updated_at": "2016-06-16T13:37:57Z", + "closed_at": "2016-06-16T03:43:25Z", + "assignee": null, + "author_association": "NONE", + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/25", + "html_url": "https://github.com/un33k/python-slugify/pull/25", + "diff_url": "https://github.com/un33k/python-slugify/pull/25.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/25.patch", + "merged_at": null + }, + "body": "", + "closed_by": { + "login": "theeluwin", + "id": 1303549, + "node_id": "MDQ6VXNlcjEzMDM1NDk=", + "avatar_url": "https://avatars.githubusercontent.com/u/1303549?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/theeluwin", + "html_url": "https://github.com/theeluwin", + "followers_url": "https://api.github.com/users/theeluwin/followers", + "following_url": "https://api.github.com/users/theeluwin/following{/other_user}", + "gists_url": "https://api.github.com/users/theeluwin/gists{/gist_id}", + "starred_url": "https://api.github.com/users/theeluwin/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/theeluwin/subscriptions", + "organizations_url": "https://api.github.com/users/theeluwin/orgs", + "repos_url": "https://api.github.com/users/theeluwin/repos", + "events_url": "https://api.github.com/users/theeluwin/events{/privacy}", + "received_events_url": "https://api.github.com/users/theeluwin/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/25/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/25/timeline", + "performed_via_github_app": null, + "state_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/26", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/26/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/26/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/26/events", + "html_url": "https://github.com/un33k/python-slugify/pull/26", + "id": 173286315, + "node_id": "MDExOlB1bGxSZXF1ZXN0ODI3NzY2NTU=", + "number": 26, + "title": "Create MANIFEST.in", + "user": { + "login": "proinsias", + "id": 2073530, + "node_id": "MDQ6VXNlcjIwNzM1MzA=", + "avatar_url": "https://avatars.githubusercontent.com/u/2073530?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/proinsias", + "html_url": "https://github.com/proinsias", + "followers_url": "https://api.github.com/users/proinsias/followers", + "following_url": "https://api.github.com/users/proinsias/following{/other_user}", + "gists_url": "https://api.github.com/users/proinsias/gists{/gist_id}", + "starred_url": "https://api.github.com/users/proinsias/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/proinsias/subscriptions", + "organizations_url": "https://api.github.com/users/proinsias/orgs", + "repos_url": "https://api.github.com/users/proinsias/repos", + "events_url": "https://api.github.com/users/proinsias/events{/privacy}", + "received_events_url": "https://api.github.com/users/proinsias/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2016-08-25T19:15:56Z", + "updated_at": "2016-08-25T23:58:36Z", + "closed_at": "2016-08-25T23:58:36Z", + "assignee": null, + "author_association": "CONTRIBUTOR", + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/26", + "html_url": "https://github.com/un33k/python-slugify/pull/26", + "diff_url": "https://github.com/un33k/python-slugify/pull/26.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/26.patch", + "merged_at": "2016-08-25T23:58:36Z" + }, + "body": "Add the license (and other files) to MANIFEST.in so that it will be included in sdists and other packages.\nThis came up during packaging of python-slugify for [conda-forge](https://conda-forge.github.io).\n", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/26/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/26/timeline", + "performed_via_github_app": null, + "state_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/27", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/27/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/27/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/27/events", + "html_url": "https://github.com/un33k/python-slugify/issues/27", + "id": 173362728, + "node_id": "MDU6SXNzdWUxNzMzNjI3Mjg=", + "number": 27, + "title": "Create new release?", + "user": { + "login": "proinsias", + "id": 2073530, + "node_id": "MDQ6VXNlcjIwNzM1MzA=", + "avatar_url": "https://avatars.githubusercontent.com/u/2073530?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/proinsias", + "html_url": "https://github.com/proinsias", + "followers_url": "https://api.github.com/users/proinsias/followers", + "following_url": "https://api.github.com/users/proinsias/following{/other_user}", + "gists_url": "https://api.github.com/users/proinsias/gists{/gist_id}", + "starred_url": "https://api.github.com/users/proinsias/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/proinsias/subscriptions", + "organizations_url": "https://api.github.com/users/proinsias/orgs", + "repos_url": "https://api.github.com/users/proinsias/repos", + "events_url": "https://api.github.com/users/proinsias/events{/privacy}", + "received_events_url": "https://api.github.com/users/proinsias/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2016-08-26T03:34:05Z", + "updated_at": "2016-08-26T16:04:10Z", + "closed_at": "2016-08-26T16:04:10Z", + "assignee": null, + "author_association": "CONTRIBUTOR", + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "Thanks for merging #26. I believe for this to take effect, there needs to be a new release of python-slugify. Could you create v1.2.1 to include these changes?\n", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/27/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/27/timeline", + "performed_via_github_app": null, + "state_reason": "completed", + "pinned_comment": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/28", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/28/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/28/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/28/events", + "html_url": "https://github.com/un33k/python-slugify/pull/28", + "id": 175869705, + "node_id": "MDExOlB1bGxSZXF1ZXN0ODQ1NTc1ODU=", + "number": 28, + "title": "Add a raw meta.yaml for conda packaging.", + "user": { + "login": "feth", + "id": 554384, + "node_id": "MDQ6VXNlcjU1NDM4NA==", + "avatar_url": "https://avatars.githubusercontent.com/u/554384?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/feth", + "html_url": "https://github.com/feth", + "followers_url": "https://api.github.com/users/feth/followers", + "following_url": "https://api.github.com/users/feth/following{/other_user}", + "gists_url": "https://api.github.com/users/feth/gists{/gist_id}", + "starred_url": "https://api.github.com/users/feth/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/feth/subscriptions", + "organizations_url": "https://api.github.com/users/feth/orgs", + "repos_url": "https://api.github.com/users/feth/repos", + "events_url": "https://api.github.com/users/feth/events{/privacy}", + "received_events_url": "https://api.github.com/users/feth/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 4, + "created_at": "2016-09-08T21:30:31Z", + "updated_at": "2016-11-16T10:50:08Z", + "closed_at": "2016-11-15T22:24:20Z", + "assignee": null, + "author_association": "NONE", + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/28", + "html_url": "https://github.com/un33k/python-slugify/pull/28", + "diff_url": "https://github.com/un33k/python-slugify/pull/28.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/28.patch", + "merged_at": null + }, + "body": "1) I (Feth) am not the author/maintainer of python-slugify\n2) I am willing to transfer ownership\n\nThis will allow 'conda install python-slugify'.\n\nResult is at https://anaconda.org/feth/python-slugify\n", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/28/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/28/timeline", + "performed_via_github_app": null, + "state_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/29", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/29/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/29/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/29/events", + "html_url": "https://github.com/un33k/python-slugify/issues/29", + "id": 183981707, + "node_id": "MDU6SXNzdWUxODM5ODE3MDc=", + "number": 29, + "title": "Slugify thinks apostrophes are significant", + "user": { + "login": "BonkaBonka", + "id": 326917, + "node_id": "MDQ6VXNlcjMyNjkxNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/326917?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/BonkaBonka", + "html_url": "https://github.com/BonkaBonka", + "followers_url": "https://api.github.com/users/BonkaBonka/followers", + "following_url": "https://api.github.com/users/BonkaBonka/following{/other_user}", + "gists_url": "https://api.github.com/users/BonkaBonka/gists{/gist_id}", + "starred_url": "https://api.github.com/users/BonkaBonka/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/BonkaBonka/subscriptions", + "organizations_url": "https://api.github.com/users/BonkaBonka/orgs", + "repos_url": "https://api.github.com/users/BonkaBonka/repos", + "events_url": "https://api.github.com/users/BonkaBonka/events{/privacy}", + "received_events_url": "https://api.github.com/users/BonkaBonka/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 4, + "created_at": "2016-10-19T14:41:46Z", + "updated_at": "2016-11-15T22:21:51Z", + "closed_at": "2016-11-15T22:21:51Z", + "assignee": null, + "author_association": "NONE", + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "Given a title of \"Baby's new shoes\", slugify ought to return \"babys-new-shoes\" but instead returns \"baby-s-new-shoes\" which isn't right. Seems related to changes made for #17.\n", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/29/reactions", + "total_count": 1, + "+1": 1, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/29/timeline", + "performed_via_github_app": null, + "state_reason": "completed", + "pinned_comment": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/30", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/30/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/30/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/30/events", + "html_url": "https://github.com/un33k/python-slugify/issues/30", + "id": 184686045, + "node_id": "MDU6SXNzdWUxODQ2ODYwNDU=", + "number": 30, + "title": "\\u2019 should be replaced by a separator", + "user": { + "login": "ghost", + "id": 10137, + "node_id": "MDQ6VXNlcjEwMTM3", + "avatar_url": "https://avatars.githubusercontent.com/u/10137?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/ghost", + "html_url": "https://github.com/ghost", + "followers_url": "https://api.github.com/users/ghost/followers", + "following_url": "https://api.github.com/users/ghost/following{/other_user}", + "gists_url": "https://api.github.com/users/ghost/gists{/gist_id}", + "starred_url": "https://api.github.com/users/ghost/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/ghost/subscriptions", + "organizations_url": "https://api.github.com/users/ghost/orgs", + "repos_url": "https://api.github.com/users/ghost/repos", + "events_url": "https://api.github.com/users/ghost/events{/privacy}", + "received_events_url": "https://api.github.com/users/ghost/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2016-10-23T11:58:13Z", + "updated_at": "2016-11-15T22:21:18Z", + "closed_at": "2016-11-15T22:21:18Z", + "assignee": null, + "author_association": "NONE", + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "The right single quotation mark (`’`) should be replaced by a separator, like the standard apostrophe.\n\nMaybe `\\u2019` should be searched in `QUOTE_PATTERN` ?\n\nMore info : [Response to \"What’s the right character for an apostrophe?\"](http://graphicdesign.stackexchange.com/a/66812/78704)\n", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/30/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/30/timeline", + "performed_via_github_app": null, + "state_reason": "completed", + "pinned_comment": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/31", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/31/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/31/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/31/events", + "html_url": "https://github.com/un33k/python-slugify/issues/31", + "id": 187061964, + "node_id": "MDU6SXNzdWUxODcwNjE5NjQ=", + "number": 31, + "title": "Option to preserve case", + "user": { + "login": "cjauvin", + "id": 488992, + "node_id": "MDQ6VXNlcjQ4ODk5Mg==", + "avatar_url": "https://avatars.githubusercontent.com/u/488992?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/cjauvin", + "html_url": "https://github.com/cjauvin", + "followers_url": "https://api.github.com/users/cjauvin/followers", + "following_url": "https://api.github.com/users/cjauvin/following{/other_user}", + "gists_url": "https://api.github.com/users/cjauvin/gists{/gist_id}", + "starred_url": "https://api.github.com/users/cjauvin/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/cjauvin/subscriptions", + "organizations_url": "https://api.github.com/users/cjauvin/orgs", + "repos_url": "https://api.github.com/users/cjauvin/repos", + "events_url": "https://api.github.com/users/cjauvin/events{/privacy}", + "received_events_url": "https://api.github.com/users/cjauvin/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2016-11-03T13:39:23Z", + "updated_at": "2016-11-15T22:23:28Z", + "closed_at": "2016-11-15T22:23:28Z", + "assignee": null, + "author_association": "NONE", + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "I'm not sure if it would fit the definition of a \"slug\", but an option to preserve case would be nice. In my current context, it is mandatory, so it's a showstopper unfortunately.", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/31/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/31/timeline", + "performed_via_github_app": null, + "state_reason": "completed", + "pinned_comment": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/32", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/32/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/32/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/32/events", + "html_url": "https://github.com/un33k/python-slugify/issues/32", + "id": 200196282, + "node_id": "MDU6SXNzdWUyMDAxOTYyODI=", + "number": 32, + "title": "Convert Markdown to reStructuredText", + "user": { + "login": "egorsmkv", + "id": 7875085, + "node_id": "MDQ6VXNlcjc4NzUwODU=", + "avatar_url": "https://avatars.githubusercontent.com/u/7875085?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/egorsmkv", + "html_url": "https://github.com/egorsmkv", + "followers_url": "https://api.github.com/users/egorsmkv/followers", + "following_url": "https://api.github.com/users/egorsmkv/following{/other_user}", + "gists_url": "https://api.github.com/users/egorsmkv/gists{/gist_id}", + "starred_url": "https://api.github.com/users/egorsmkv/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/egorsmkv/subscriptions", + "organizations_url": "https://api.github.com/users/egorsmkv/orgs", + "repos_url": "https://api.github.com/users/egorsmkv/repos", + "events_url": "https://api.github.com/users/egorsmkv/events{/privacy}", + "received_events_url": "https://api.github.com/users/egorsmkv/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 3, + "created_at": "2017-01-11T20:16:59Z", + "updated_at": "2017-03-31T15:49:17Z", + "closed_at": "2017-03-31T15:48:04Z", + "assignee": null, + "author_association": "CONTRIBUTOR", + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "Because PyPI not support Markdown and not hightlight code blocks.", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/32/reactions", + "total_count": 1, + "+1": 1, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/32/timeline", + "performed_via_github_app": null, + "state_reason": "completed", + "pinned_comment": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/33", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/33/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/33/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/33/events", + "html_url": "https://github.com/un33k/python-slugify/issues/33", + "id": 200196411, + "node_id": "MDU6SXNzdWUyMDAxOTY0MTE=", + "number": 33, + "title": "Add Python 3.6 to Travis", + "user": { + "login": "egorsmkv", + "id": 7875085, + "node_id": "MDQ6VXNlcjc4NzUwODU=", + "avatar_url": "https://avatars.githubusercontent.com/u/7875085?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/egorsmkv", + "html_url": "https://github.com/egorsmkv", + "followers_url": "https://api.github.com/users/egorsmkv/followers", + "following_url": "https://api.github.com/users/egorsmkv/following{/other_user}", + "gists_url": "https://api.github.com/users/egorsmkv/gists{/gist_id}", + "starred_url": "https://api.github.com/users/egorsmkv/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/egorsmkv/subscriptions", + "organizations_url": "https://api.github.com/users/egorsmkv/orgs", + "repos_url": "https://api.github.com/users/egorsmkv/repos", + "events_url": "https://api.github.com/users/egorsmkv/events{/privacy}", + "received_events_url": "https://api.github.com/users/egorsmkv/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 2, + "created_at": "2017-01-11T20:17:35Z", + "updated_at": "2017-04-01T16:54:22Z", + "closed_at": "2017-03-31T15:47:39Z", + "assignee": null, + "author_association": "CONTRIBUTOR", + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/33/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/33/timeline", + "performed_via_github_app": null, + "state_reason": "completed", + "pinned_comment": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/34", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/34/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/34/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/34/events", + "html_url": "https://github.com/un33k/python-slugify/pull/34", + "id": 200239618, + "node_id": "MDExOlB1bGxSZXF1ZXN0MTAxMTY5Njk0", + "number": 34, + "title": "Pull Request for Issue #32", + "user": { + "login": "egorsmkv", + "id": 7875085, + "node_id": "MDQ6VXNlcjc4NzUwODU=", + "avatar_url": "https://avatars.githubusercontent.com/u/7875085?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/egorsmkv", + "html_url": "https://github.com/egorsmkv", + "followers_url": "https://api.github.com/users/egorsmkv/followers", + "following_url": "https://api.github.com/users/egorsmkv/following{/other_user}", + "gists_url": "https://api.github.com/users/egorsmkv/gists{/gist_id}", + "starred_url": "https://api.github.com/users/egorsmkv/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/egorsmkv/subscriptions", + "organizations_url": "https://api.github.com/users/egorsmkv/orgs", + "repos_url": "https://api.github.com/users/egorsmkv/repos", + "events_url": "https://api.github.com/users/egorsmkv/events{/privacy}", + "received_events_url": "https://api.github.com/users/egorsmkv/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 6, + "created_at": "2017-01-11T23:38:15Z", + "updated_at": "2017-04-01T16:54:52Z", + "closed_at": "2017-03-31T15:46:18Z", + "assignee": null, + "author_association": "CONTRIBUTOR", + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/34", + "html_url": "https://github.com/un33k/python-slugify/pull/34", + "diff_url": "https://github.com/un33k/python-slugify/pull/34.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/34.patch", + "merged_at": "2017-03-31T15:46:18Z" + }, + "body": "", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/34/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/34/timeline", + "performed_via_github_app": null, + "state_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/35", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/35/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/35/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/35/events", + "html_url": "https://github.com/un33k/python-slugify/issues/35", + "id": 206110719, + "node_id": "MDU6SXNzdWUyMDYxMTA3MTk=", + "number": 35, + "title": "Getting Unicode error on Ubuntu Platform, Same code is working on windows", + "user": { + "login": "baid86", + "id": 23254284, + "node_id": "MDQ6VXNlcjIzMjU0Mjg0", + "avatar_url": "https://avatars.githubusercontent.com/u/23254284?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/baid86", + "html_url": "https://github.com/baid86", + "followers_url": "https://api.github.com/users/baid86/followers", + "following_url": "https://api.github.com/users/baid86/following{/other_user}", + "gists_url": "https://api.github.com/users/baid86/gists{/gist_id}", + "starred_url": "https://api.github.com/users/baid86/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/baid86/subscriptions", + "organizations_url": "https://api.github.com/users/baid86/orgs", + "repos_url": "https://api.github.com/users/baid86/repos", + "events_url": "https://api.github.com/users/baid86/events{/privacy}", + "received_events_url": "https://api.github.com/users/baid86/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2017-02-08T06:46:25Z", + "updated_at": "2017-04-12T14:55:56Z", + "closed_at": "2017-04-12T14:55:56Z", + "assignee": null, + "author_association": "NONE", + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "Getting below error on Ubuntu.\r\nThe same code works on Windows machine.\r\nUbuntu Version is 14.04\r\nPython version is 2.7\r\n\r\n```\r\nFile \"/usr/local/lib/python2.7/dist-packages/py/_builtin.py\", line 221, in exec_\r\n exec2(obj, globals, locals)\r\n File \"\", line 7, in exec2\r\n File \"/home/sba001/cnssauto/pytest_suites/conftest.py\", line 106, in \r\n os.makedirs(slugify(SUITE_RESULT_LOG_DIR))\r\n File \"/usr/local/lib/python2.7/dist-packages/slugify.py\", line 26, in slugify\r\n unicodedata.normalize('NFKD', string)\r\nTypeError: must be unicode, not str\r\n```", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/35/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/35/timeline", + "performed_via_github_app": null, + "state_reason": "completed", + "pinned_comment": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/36", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/36/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/36/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/36/events", + "html_url": "https://github.com/un33k/python-slugify/pull/36", + "id": 218148512, + "node_id": "MDExOlB1bGxSZXF1ZXN0MTEzMzkzMjc2", + "number": 36, + "title": "Added possibility to include custom regex as allowed characters", + "user": { + "login": "vrbaskiz", + "id": 22053125, + "node_id": "MDQ6VXNlcjIyMDUzMTI1", + "avatar_url": "https://avatars.githubusercontent.com/u/22053125?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/vrbaskiz", + "html_url": "https://github.com/vrbaskiz", + "followers_url": "https://api.github.com/users/vrbaskiz/followers", + "following_url": "https://api.github.com/users/vrbaskiz/following{/other_user}", + "gists_url": "https://api.github.com/users/vrbaskiz/gists{/gist_id}", + "starred_url": "https://api.github.com/users/vrbaskiz/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/vrbaskiz/subscriptions", + "organizations_url": "https://api.github.com/users/vrbaskiz/orgs", + "repos_url": "https://api.github.com/users/vrbaskiz/repos", + "events_url": "https://api.github.com/users/vrbaskiz/events{/privacy}", + "received_events_url": "https://api.github.com/users/vrbaskiz/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 4, + "created_at": "2017-03-30T10:17:34Z", + "updated_at": "2017-03-31T15:47:10Z", + "closed_at": "2017-03-31T15:47:10Z", + "assignee": null, + "author_association": "CONTRIBUTOR", + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/36", + "html_url": "https://github.com/un33k/python-slugify/pull/36", + "diff_url": "https://github.com/un33k/python-slugify/pull/36.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/36.patch", + "merged_at": "2017-03-31T15:47:10Z" + }, + "body": "Encountered situation in my daily work where passing custom regex for allowed characters was needed (for example underscore _ ). I made a small rework that would stay backwards compatible but would still allow for parameter to be passed to alter this if needed.", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/36/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/36/timeline", + "performed_via_github_app": null, + "state_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/37", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/37/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/37/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/37/events", + "html_url": "https://github.com/un33k/python-slugify/pull/37", + "id": 218596325, + "node_id": "MDExOlB1bGxSZXF1ZXN0MTEzNzE3NDkz", + "number": 37, + "title": "Added possibility to include custom regex as allowed characters", + "user": { + "login": "vrbaskiz", + "id": 22053125, + "node_id": "MDQ6VXNlcjIyMDUzMTI1", + "avatar_url": "https://avatars.githubusercontent.com/u/22053125?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/vrbaskiz", + "html_url": "https://github.com/vrbaskiz", + "followers_url": "https://api.github.com/users/vrbaskiz/followers", + "following_url": "https://api.github.com/users/vrbaskiz/following{/other_user}", + "gists_url": "https://api.github.com/users/vrbaskiz/gists{/gist_id}", + "starred_url": "https://api.github.com/users/vrbaskiz/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/vrbaskiz/subscriptions", + "organizations_url": "https://api.github.com/users/vrbaskiz/orgs", + "repos_url": "https://api.github.com/users/vrbaskiz/repos", + "events_url": "https://api.github.com/users/vrbaskiz/events{/privacy}", + "received_events_url": "https://api.github.com/users/vrbaskiz/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 2, + "created_at": "2017-03-31T19:33:10Z", + "updated_at": "2017-04-01T16:53:58Z", + "closed_at": "2017-04-01T16:53:58Z", + "assignee": null, + "author_association": "CONTRIBUTOR", + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/37", + "html_url": "https://github.com/un33k/python-slugify/pull/37", + "diff_url": "https://github.com/un33k/python-slugify/pull/37.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/37.patch", + "merged_at": null + }, + "body": "Encountered situation in my daily work where passing custom regex for allowed characters was needed (for example underscore _ ). I made a small rework that would stay backwards compatible but would still allow for parameter to be passed to alter this if needed.\r\nAdded additional tests, sorted out code mistakes, updated readme.", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/37/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/37/timeline", + "performed_via_github_app": null, + "state_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/38", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/38/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/38/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/38/events", + "html_url": "https://github.com/un33k/python-slugify/issues/38", + "id": 218879918, + "node_id": "MDU6SXNzdWUyMTg4Nzk5MTg=", + "number": 38, + "title": "Error installing version 1.2.2 with buildout", + "user": { + "login": "ericdupo", + "id": 14122457, + "node_id": "MDQ6VXNlcjE0MTIyNDU3", + "avatar_url": "https://avatars.githubusercontent.com/u/14122457?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/ericdupo", + "html_url": "https://github.com/ericdupo", + "followers_url": "https://api.github.com/users/ericdupo/followers", + "following_url": "https://api.github.com/users/ericdupo/following{/other_user}", + "gists_url": "https://api.github.com/users/ericdupo/gists{/gist_id}", + "starred_url": "https://api.github.com/users/ericdupo/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/ericdupo/subscriptions", + "organizations_url": "https://api.github.com/users/ericdupo/orgs", + "repos_url": "https://api.github.com/users/ericdupo/repos", + "events_url": "https://api.github.com/users/ericdupo/events{/privacy}", + "received_events_url": "https://api.github.com/users/ericdupo/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 7, + "created_at": "2017-04-03T09:42:51Z", + "updated_at": "2017-04-12T14:55:24Z", + "closed_at": "2017-04-12T14:55:24Z", + "assignee": null, + "author_association": "NONE", + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "Hello,\r\n\r\nWhen installing version 1.2.2 with buildout I have this error : \r\n```\r\n\r\nGetting distribution for 'python-slugify'.\r\nzip_safe flag not set; analyzing archive contents...\r\nTraceback (most recent call last):\r\n File \"\", line 1, in \r\n File \"/usr/lib/python2.7/site-packages/setuptools/command/easy_install.py\", line 2270, in main\r\n **kw\r\n File \"/usr/lib64/python2.7/distutils/core.py\", line 152, in setup\r\n dist.run_commands()\r\n File \"/usr/lib64/python2.7/distutils/dist.py\", line 953, in run_commands\r\n self.run_command(cmd)\r\n File \"/usr/lib64/python2.7/distutils/dist.py\", line 972, in run_command\r\n cmd_obj.run()\r\n File \"/usr/lib/python2.7/site-packages/setuptools/command/easy_install.py\", line 411, in run\r\n self.easy_install(spec, not self.no_deps)\r\n File \"/usr/lib/python2.7/site-packages/setuptools/command/easy_install.py\", line 655, in easy_install\r\n return self.install_item(None, spec, tmpdir, deps, True)\r\n File \"/usr/lib/python2.7/site-packages/setuptools/command/easy_install.py\", line 700, in install_item\r\n dists = self.install_eggs(spec, download, tmpdir)\r\n File \"/usr/lib/python2.7/site-packages/setuptools/command/easy_install.py\", line 881, in install_eggs\r\n return self.build_and_install(setup_script, setup_base)\r\n File \"/usr/lib/python2.7/site-packages/setuptools/command/easy_install.py\", line 1120, in build_and_install\r\n self.run_setup(setup_script, setup_base, args)\r\n File \"/usr/lib/python2.7/site-packages/setuptools/command/easy_install.py\", line 1106, in run_setup\r\n run_setup(setup_script, args)\r\n File \"/usr/lib/python2.7/site-packages/setuptools/sandbox.py\", line 258, in run_setup\r\n raise\r\n File \"/usr/lib64/python2.7/contextlib.py\", line 35, in __exit__\r\n self.gen.throw(type, value, traceback)\r\n File \"/usr/lib/python2.7/site-packages/setuptools/sandbox.py\", line 198, in setup_context\r\n yield\r\n File \"/usr/lib64/python2.7/contextlib.py\", line 35, in __exit__\r\n self.gen.throw(type, value, traceback)\r\n File \"/usr/lib/python2.7/site-packages/setuptools/sandbox.py\", line 169, in save_modules\r\n saved_exc.resume()\r\n File \"/usr/lib/python2.7/site-packages/setuptools/sandbox.py\", line 144, in resume\r\n six.reraise(type, exc, self._tb)\r\n File \"/usr/lib/python2.7/site-packages/setuptools/sandbox.py\", line 157, in save_modules\r\n yield saved\r\n File \"/usr/lib/python2.7/site-packages/setuptools/sandbox.py\", line 198, in setup_context\r\n yield\r\n File \"/usr/lib/python2.7/site-packages/setuptools/sandbox.py\", line 255, in run_setup\r\n DirectorySandbox(setup_dir).run(runner)\r\n File \"/usr/lib/python2.7/site-packages/setuptools/sandbox.py\", line 285, in run\r\n return func()\r\n File \"/usr/lib/python2.7/site-packages/setuptools/sandbox.py\", line 253, in runner\r\n _execfile(setup_script, ns)\r\n File \"/usr/lib/python2.7/site-packages/setuptools/sandbox.py\", line 47, in _execfile\r\n exec(code, globals, locals)\r\n File \"/tmp/easy_install-nJRC3I/python-slugify-1.2.2/setup.py\", line 89, in \r\n File \"/usr/lib64/python2.7/distutils/core.py\", line 152, in setup\r\n dist.run_commands()\r\n File \"/usr/lib64/python2.7/distutils/dist.py\", line 953, in run_commands\r\n self.run_command(cmd)\r\n File \"/usr/lib64/python2.7/distutils/dist.py\", line 972, in run_command\r\n cmd_obj.run()\r\n File \"/usr/lib/python2.7/site-packages/setuptools/command/bdist_egg.py\", line 209, in run\r\n os.path.join(archive_root, 'EGG-INFO'), self.zip_safe()\r\n File \"/usr/lib/python2.7/site-packages/setuptools/command/bdist_egg.py\", line 245, in zip_safe\r\n return analyze_egg(self.bdist_dir, self.stubs)\r\n File \"/usr/lib/python2.7/site-packages/setuptools/command/bdist_egg.py\", line 355, in analyze_egg\r\n safe = scan_module(egg_dir, base, name, stubs) and safe\r\n File \"/usr/lib/python2.7/site-packages/setuptools/command/bdist_egg.py\", line 392, in scan_module\r\n code = marshal.load(f)\r\nValueError: bad marshal data (unknown type code)\r\nAn error occurred when trying to install /tmp/tmpN77DXmget_dist/python-slugify-1.2.2.tar.gz. Look above this message for any errors that were output by easy_install.\r\nWhile:\r\n Installing eggs.\r\n Getting distribution for 'python-slugify'.\r\n```\r\n\r\nI do not have this problem when using version 1.2.1", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/38/reactions", + "total_count": 3, + "+1": 3, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/38/timeline", + "performed_via_github_app": null, + "state_reason": "completed", + "pinned_comment": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/39", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/39/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/39/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/39/events", + "html_url": "https://github.com/un33k/python-slugify/pull/39", + "id": 220785402, + "node_id": "MDExOlB1bGxSZXF1ZXN0MTE1MjAyOTM3", + "number": 39, + "title": "Closes #38: use find_packages() rather than home-grown get_packages and get_package_data", + "user": { + "login": "reece", + "id": 109453, + "node_id": "MDQ6VXNlcjEwOTQ1Mw==", + "avatar_url": "https://avatars.githubusercontent.com/u/109453?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/reece", + "html_url": "https://github.com/reece", + "followers_url": "https://api.github.com/users/reece/followers", + "following_url": "https://api.github.com/users/reece/following{/other_user}", + "gists_url": "https://api.github.com/users/reece/gists{/gist_id}", + "starred_url": "https://api.github.com/users/reece/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/reece/subscriptions", + "organizations_url": "https://api.github.com/users/reece/orgs", + "repos_url": "https://api.github.com/users/reece/repos", + "events_url": "https://api.github.com/users/reece/events{/privacy}", + "received_events_url": "https://api.github.com/users/reece/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 2, + "created_at": "2017-04-10T22:10:08Z", + "updated_at": "2017-04-10T22:14:41Z", + "closed_at": "2017-04-10T22:14:41Z", + "assignee": null, + "author_association": "CONTRIBUTOR", + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/39", + "html_url": "https://github.com/un33k/python-slugify/pull/39", + "diff_url": "https://github.com/un33k/python-slugify/pull/39.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/39.patch", + "merged_at": "2017-04-10T22:14:41Z" + }, + "body": "I think that you don't need MANIFEST.in and that you can use setuptools' find_packages.\r\n\r\nDoes this PR work for you?", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/39/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/39/timeline", + "performed_via_github_app": null, + "state_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/40", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/40/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/40/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/40/events", + "html_url": "https://github.com/un33k/python-slugify/pull/40", + "id": 224484748, + "node_id": "MDExOlB1bGxSZXF1ZXN0MTE3NzI2NDk2", + "number": 40, + "title": "Update CHANGELOG.md - didn't you mean `1.2.4`?", + "user": { + "login": "loisaidasam", + "id": 213281, + "node_id": "MDQ6VXNlcjIxMzI4MQ==", + "avatar_url": "https://avatars.githubusercontent.com/u/213281?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/loisaidasam", + "html_url": "https://github.com/loisaidasam", + "followers_url": "https://api.github.com/users/loisaidasam/followers", + "following_url": "https://api.github.com/users/loisaidasam/following{/other_user}", + "gists_url": "https://api.github.com/users/loisaidasam/gists{/gist_id}", + "starred_url": "https://api.github.com/users/loisaidasam/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/loisaidasam/subscriptions", + "organizations_url": "https://api.github.com/users/loisaidasam/orgs", + "repos_url": "https://api.github.com/users/loisaidasam/repos", + "events_url": "https://api.github.com/users/loisaidasam/events{/privacy}", + "received_events_url": "https://api.github.com/users/loisaidasam/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 2, + "created_at": "2017-04-26T14:20:20Z", + "updated_at": "2017-05-08T12:02:24Z", + "closed_at": "2017-05-08T12:02:18Z", + "assignee": null, + "author_association": "CONTRIBUTOR", + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/40", + "html_url": "https://github.com/un33k/python-slugify/pull/40", + "diff_url": "https://github.com/un33k/python-slugify/pull/40.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/40.patch", + "merged_at": "2017-05-08T12:02:18Z" + }, + "body": "", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/40/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/40/timeline", + "performed_via_github_app": null, + "state_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/41", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/41/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/41/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/41/events", + "html_url": "https://github.com/un33k/python-slugify/issues/41", + "id": 224973075, + "node_id": "MDU6SXNzdWUyMjQ5NzMwNzU=", + "number": 41, + "title": "I can't start slugify from the command-line", + "user": { + "login": "sodre", + "id": 1043285, + "node_id": "MDQ6VXNlcjEwNDMyODU=", + "avatar_url": "https://avatars.githubusercontent.com/u/1043285?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/sodre", + "html_url": "https://github.com/sodre", + "followers_url": "https://api.github.com/users/sodre/followers", + "following_url": "https://api.github.com/users/sodre/following{/other_user}", + "gists_url": "https://api.github.com/users/sodre/gists{/gist_id}", + "starred_url": "https://api.github.com/users/sodre/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/sodre/subscriptions", + "organizations_url": "https://api.github.com/users/sodre/orgs", + "repos_url": "https://api.github.com/users/sodre/repos", + "events_url": "https://api.github.com/users/sodre/events{/privacy}", + "received_events_url": "https://api.github.com/users/sodre/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 3, + "created_at": "2017-04-28T03:51:34Z", + "updated_at": "2017-04-30T01:56:48Z", + "closed_at": "2017-04-30T01:56:48Z", + "assignee": null, + "author_association": "NONE", + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "Hi, \r\nI can call slugify from the command line after installing your package. Would you be okay moving the main function into the module slugify.cli ?\r\n\r\nThanks!", + "closed_by": { + "login": "sodre", + "id": 1043285, + "node_id": "MDQ6VXNlcjEwNDMyODU=", + "avatar_url": "https://avatars.githubusercontent.com/u/1043285?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/sodre", + "html_url": "https://github.com/sodre", + "followers_url": "https://api.github.com/users/sodre/followers", + "following_url": "https://api.github.com/users/sodre/following{/other_user}", + "gists_url": "https://api.github.com/users/sodre/gists{/gist_id}", + "starred_url": "https://api.github.com/users/sodre/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/sodre/subscriptions", + "organizations_url": "https://api.github.com/users/sodre/orgs", + "repos_url": "https://api.github.com/users/sodre/repos", + "events_url": "https://api.github.com/users/sodre/events{/privacy}", + "received_events_url": "https://api.github.com/users/sodre/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/41/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/41/timeline", + "performed_via_github_app": null, + "state_reason": "completed", + "pinned_comment": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/42", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/42/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/42/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/42/events", + "html_url": "https://github.com/un33k/python-slugify/pull/42", + "id": 225106741, + "node_id": "MDExOlB1bGxSZXF1ZXN0MTE4MTcxMjU2", + "number": 42, + "title": "Create MANIFEST.in", + "user": { + "login": "proinsias", + "id": 2073530, + "node_id": "MDQ6VXNlcjIwNzM1MzA=", + "avatar_url": "https://avatars.githubusercontent.com/u/2073530?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/proinsias", + "html_url": "https://github.com/proinsias", + "followers_url": "https://api.github.com/users/proinsias/followers", + "following_url": "https://api.github.com/users/proinsias/following{/other_user}", + "gists_url": "https://api.github.com/users/proinsias/gists{/gist_id}", + "starred_url": "https://api.github.com/users/proinsias/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/proinsias/subscriptions", + "organizations_url": "https://api.github.com/users/proinsias/orgs", + "repos_url": "https://api.github.com/users/proinsias/repos", + "events_url": "https://api.github.com/users/proinsias/events{/privacy}", + "received_events_url": "https://api.github.com/users/proinsias/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 2, + "created_at": "2017-04-28T14:59:09Z", + "updated_at": "2017-05-08T18:21:00Z", + "closed_at": "2017-05-08T12:06:49Z", + "assignee": null, + "author_association": "CONTRIBUTOR", + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/42", + "html_url": "https://github.com/un33k/python-slugify/pull/42", + "diff_url": "https://github.com/un33k/python-slugify/pull/42.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/42.patch", + "merged_at": "2017-05-08T12:06:49Z" + }, + "body": "Add the `LICENSE` and other files to `MANIFEST.in` so that they will be included in sdists and other packages.\r\nThis came up during packaging of `python-slugify` for `conda-forge`.\r\n\r\nAlso please submit a new release to pypi so this change will be tracked.\r\n", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/42/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/42/timeline", + "performed_via_github_app": null, + "state_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/43", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/43/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/43/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/43/events", + "html_url": "https://github.com/un33k/python-slugify/pull/43", + "id": 225297764, + "node_id": "MDExOlB1bGxSZXF1ZXN0MTE4Mjk3MjUw", + "number": 43, + "title": "[WIP] Replicate #41 in Travis build", + "user": { + "login": "sodre", + "id": 1043285, + "node_id": "MDQ6VXNlcjEwNDMyODU=", + "avatar_url": "https://avatars.githubusercontent.com/u/1043285?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/sodre", + "html_url": "https://github.com/sodre", + "followers_url": "https://api.github.com/users/sodre/followers", + "following_url": "https://api.github.com/users/sodre/following{/other_user}", + "gists_url": "https://api.github.com/users/sodre/gists{/gist_id}", + "starred_url": "https://api.github.com/users/sodre/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/sodre/subscriptions", + "organizations_url": "https://api.github.com/users/sodre/orgs", + "repos_url": "https://api.github.com/users/sodre/repos", + "events_url": "https://api.github.com/users/sodre/events{/privacy}", + "received_events_url": "https://api.github.com/users/sodre/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 2, + "created_at": "2017-04-30T01:46:32Z", + "updated_at": "2017-04-30T01:56:16Z", + "closed_at": "2017-04-30T01:56:16Z", + "assignee": null, + "author_association": "NONE", + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/43", + "html_url": "https://github.com/un33k/python-slugify/pull/43", + "diff_url": "https://github.com/un33k/python-slugify/pull/43.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/43.patch", + "merged_at": null + }, + "body": " - Install full package during build time, i.e. not in dev mode.\r\n - Call slugify before code coverage.", + "closed_by": { + "login": "sodre", + "id": 1043285, + "node_id": "MDQ6VXNlcjEwNDMyODU=", + "avatar_url": "https://avatars.githubusercontent.com/u/1043285?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/sodre", + "html_url": "https://github.com/sodre", + "followers_url": "https://api.github.com/users/sodre/followers", + "following_url": "https://api.github.com/users/sodre/following{/other_user}", + "gists_url": "https://api.github.com/users/sodre/gists{/gist_id}", + "starred_url": "https://api.github.com/users/sodre/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/sodre/subscriptions", + "organizations_url": "https://api.github.com/users/sodre/orgs", + "repos_url": "https://api.github.com/users/sodre/repos", + "events_url": "https://api.github.com/users/sodre/events{/privacy}", + "received_events_url": "https://api.github.com/users/sodre/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/43/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/43/timeline", + "performed_via_github_app": null, + "state_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/44", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/44/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/44/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/44/events", + "html_url": "https://github.com/un33k/python-slugify/issues/44", + "id": 225770352, + "node_id": "MDU6SXNzdWUyMjU3NzAzNTI=", + "number": 44, + "title": "Slugifying Chinese characters with multiple readings", + "user": { + "login": "imrek", + "id": 13435019, + "node_id": "MDQ6VXNlcjEzNDM1MDE5", + "avatar_url": "https://avatars.githubusercontent.com/u/13435019?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/imrek", + "html_url": "https://github.com/imrek", + "followers_url": "https://api.github.com/users/imrek/followers", + "following_url": "https://api.github.com/users/imrek/following{/other_user}", + "gists_url": "https://api.github.com/users/imrek/gists{/gist_id}", + "starred_url": "https://api.github.com/users/imrek/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/imrek/subscriptions", + "organizations_url": "https://api.github.com/users/imrek/orgs", + "repos_url": "https://api.github.com/users/imrek/repos", + "events_url": "https://api.github.com/users/imrek/events{/privacy}", + "received_events_url": "https://api.github.com/users/imrek/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2017-05-02T17:48:38Z", + "updated_at": "2017-05-08T12:05:21Z", + "closed_at": "2017-05-08T12:05:21Z", + "assignee": null, + "author_association": "NONE", + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "This is probably beyond doable, since it would require extensive lookups, but slugifying can result in erroneous output if a given character has multiple readings (多音字), and context would be required to determine the correct slug, e.g. 行 is correctly rendered 'xing' when it stands alone, but 'hang' it would have to be slugified as 'hang' when it stands with 银行 (銀行) in a compound word. (See [3rd paragraph in this](https://en.wikipedia.org/wiki/Chinese_characters#Function).)", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/44/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/44/timeline", + "performed_via_github_app": null, + "state_reason": "completed", + "pinned_comment": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/45", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/45/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/45/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/45/events", + "html_url": "https://github.com/un33k/python-slugify/issues/45", + "id": 225780124, + "node_id": "MDU6SXNzdWUyMjU3ODAxMjQ=", + "number": 45, + "title": "Slugifying Danish, Norwegian, German", + "user": { + "login": "imrek", + "id": 13435019, + "node_id": "MDQ6VXNlcjEzNDM1MDE5", + "avatar_url": "https://avatars.githubusercontent.com/u/13435019?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/imrek", + "html_url": "https://github.com/imrek", + "followers_url": "https://api.github.com/users/imrek/followers", + "following_url": "https://api.github.com/users/imrek/following{/other_user}", + "gists_url": "https://api.github.com/users/imrek/gists{/gist_id}", + "starred_url": "https://api.github.com/users/imrek/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/imrek/subscriptions", + "organizations_url": "https://api.github.com/users/imrek/orgs", + "repos_url": "https://api.github.com/users/imrek/repos", + "events_url": "https://api.github.com/users/imrek/events{/privacy}", + "received_events_url": "https://api.github.com/users/imrek/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 3, + "created_at": "2017-05-02T18:25:52Z", + "updated_at": "2019-10-11T14:02:11Z", + "closed_at": "2017-05-08T12:04:46Z", + "assignee": null, + "author_association": "NONE", + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "I may have misunderstood the original intentions of this module, but some German, Danish/Norwegian letters aren't mapped correctly by `slugify`. E.g. while 'æ' is correctly resolved as 'ae' (Danish/Norwegian), 'ø' is incorrectly rendered 'o' (in Danish only, but correct for Norwegian usage). The mapping of 'ö' is also language dependent (German: 'oe', but Hungarian, Finnish, Swedish: 'o') ", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/45/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/45/timeline", + "performed_via_github_app": null, + "state_reason": "completed", + "pinned_comment": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/46", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/46/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/46/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/46/events", + "html_url": "https://github.com/un33k/python-slugify/pull/46", + "id": 262583568, + "node_id": "MDExOlB1bGxSZXF1ZXN0MTQ0NTI2Nzc4", + "number": 46, + "title": "Use text-unidecode instead of Unidecode to avoid GPL", + "user": { + "login": "smblackburn", + "id": 611282, + "node_id": "MDQ6VXNlcjYxMTI4Mg==", + "avatar_url": "https://avatars.githubusercontent.com/u/611282?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/smblackburn", + "html_url": "https://github.com/smblackburn", + "followers_url": "https://api.github.com/users/smblackburn/followers", + "following_url": "https://api.github.com/users/smblackburn/following{/other_user}", + "gists_url": "https://api.github.com/users/smblackburn/gists{/gist_id}", + "starred_url": "https://api.github.com/users/smblackburn/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/smblackburn/subscriptions", + "organizations_url": "https://api.github.com/users/smblackburn/orgs", + "repos_url": "https://api.github.com/users/smblackburn/repos", + "events_url": "https://api.github.com/users/smblackburn/events{/privacy}", + "received_events_url": "https://api.github.com/users/smblackburn/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 0, + "created_at": "2017-10-03T20:56:24Z", + "updated_at": "2017-10-03T20:59:38Z", + "closed_at": "2017-10-03T20:56:39Z", + "assignee": null, + "author_association": "NONE", + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/46", + "html_url": "https://github.com/un33k/python-slugify/pull/46", + "diff_url": "https://github.com/un33k/python-slugify/pull/46.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/46.patch", + "merged_at": null + }, + "body": "", + "closed_by": { + "login": "smblackburn", + "id": 611282, + "node_id": "MDQ6VXNlcjYxMTI4Mg==", + "avatar_url": "https://avatars.githubusercontent.com/u/611282?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/smblackburn", + "html_url": "https://github.com/smblackburn", + "followers_url": "https://api.github.com/users/smblackburn/followers", + "following_url": "https://api.github.com/users/smblackburn/following{/other_user}", + "gists_url": "https://api.github.com/users/smblackburn/gists{/gist_id}", + "starred_url": "https://api.github.com/users/smblackburn/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/smblackburn/subscriptions", + "organizations_url": "https://api.github.com/users/smblackburn/orgs", + "repos_url": "https://api.github.com/users/smblackburn/repos", + "events_url": "https://api.github.com/users/smblackburn/events{/privacy}", + "received_events_url": "https://api.github.com/users/smblackburn/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/46/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/46/timeline", + "performed_via_github_app": null, + "state_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/47", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/47/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/47/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/47/events", + "html_url": "https://github.com/un33k/python-slugify/pull/47", + "id": 267341089, + "node_id": "MDExOlB1bGxSZXF1ZXN0MTQ3OTIyMTA3", + "number": 47, + "title": "Use the actual separator in code", + "user": { + "login": "KlaasH", + "id": 6598836, + "node_id": "MDQ6VXNlcjY1OTg4MzY=", + "avatar_url": "https://avatars.githubusercontent.com/u/6598836?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/KlaasH", + "html_url": "https://github.com/KlaasH", + "followers_url": "https://api.github.com/users/KlaasH/followers", + "following_url": "https://api.github.com/users/KlaasH/following{/other_user}", + "gists_url": "https://api.github.com/users/KlaasH/gists{/gist_id}", + "starred_url": "https://api.github.com/users/KlaasH/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/KlaasH/subscriptions", + "organizations_url": "https://api.github.com/users/KlaasH/orgs", + "repos_url": "https://api.github.com/users/KlaasH/repos", + "events_url": "https://api.github.com/users/KlaasH/events{/privacy}", + "received_events_url": "https://api.github.com/users/KlaasH/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 4, + "created_at": "2017-10-21T01:32:08Z", + "updated_at": "2018-02-19T15:04:00Z", + "closed_at": "2018-02-19T13:46:18Z", + "assignee": null, + "author_association": "NONE", + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/47", + "html_url": "https://github.com/un33k/python-slugify/pull/47", + "diff_url": "https://github.com/un33k/python-slugify/pull/47.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/47.patch", + "merged_at": null + }, + "body": "The underlying motivation for this is that I wanted to be able to slugify text that contains hyphens and keep the hyphens. It seemed like that should work with\r\n```\r\nslugify('hyphen-having text FTW!', separator='_', regex_pattern=r'[^-a-z0-9]')\r\n```\r\ni.e. that that should produce 'hyphen-having_text_ftw'. In fact it produced 'hyphen_having_text_ftw' because, behind the scenes, this was always using hyphen as the separator, just switching it out and the end if the separator was overridden, which means hyphen couldn't be an allowed character.\r\n\r\nThis changes it to use the specified separator from the beginning.\r\n\r\nOne side effect of this is that the test with a multi-character separator and `max_length=20` produces a different result, because the multi-character separator counts against the length. This seems like an improvement to me.", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/47/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/47/timeline", + "performed_via_github_app": null, + "state_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/48", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/48/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/48/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/48/events", + "html_url": "https://github.com/un33k/python-slugify/pull/48", + "id": 267342005, + "node_id": "MDExOlB1bGxSZXF1ZXN0MTQ3OTIyNzQ1", + "number": 48, + "title": "Shorten usage to one code and one shell example", + "user": { + "login": "KlaasH", + "id": 6598836, + "node_id": "MDQ6VXNlcjY1OTg4MzY=", + "avatar_url": "https://avatars.githubusercontent.com/u/6598836?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/KlaasH", + "html_url": "https://github.com/KlaasH", + "followers_url": "https://api.github.com/users/KlaasH/followers", + "following_url": "https://api.github.com/users/KlaasH/following{/other_user}", + "gists_url": "https://api.github.com/users/KlaasH/gists{/gist_id}", + "starred_url": "https://api.github.com/users/KlaasH/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/KlaasH/subscriptions", + "organizations_url": "https://api.github.com/users/KlaasH/orgs", + "repos_url": "https://api.github.com/users/KlaasH/repos", + "events_url": "https://api.github.com/users/KlaasH/events{/privacy}", + "received_events_url": "https://api.github.com/users/KlaasH/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 2, + "created_at": "2017-10-21T01:47:36Z", + "updated_at": "2018-02-19T13:54:20Z", + "closed_at": "2018-02-19T13:54:20Z", + "assignee": null, + "author_association": "NONE", + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/48", + "html_url": "https://github.com/un33k/python-slugify/pull/48", + "diff_url": "https://github.com/un33k/python-slugify/pull/48.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/48.patch", + "merged_at": null + }, + "body": "Rather than having a copy of the whole `test.py` file in the README, which is not super readable and tends to make the eyes glaze over, give one example of an invocation in code and one on the command line then link to the tests file.", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/48/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/48/timeline", + "performed_via_github_app": null, + "state_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/49", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/49/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/49/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/49/events", + "html_url": "https://github.com/un33k/python-slugify/issues/49", + "id": 276544046, + "node_id": "MDU6SXNzdWUyNzY1NDQwNDY=", + "number": 49, + "title": "Possible license conflict with Unidecode?", + "user": { + "login": "NiklasMM", + "id": 1924002, + "node_id": "MDQ6VXNlcjE5MjQwMDI=", + "avatar_url": "https://avatars.githubusercontent.com/u/1924002?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/NiklasMM", + "html_url": "https://github.com/NiklasMM", + "followers_url": "https://api.github.com/users/NiklasMM/followers", + "following_url": "https://api.github.com/users/NiklasMM/following{/other_user}", + "gists_url": "https://api.github.com/users/NiklasMM/gists{/gist_id}", + "starred_url": "https://api.github.com/users/NiklasMM/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/NiklasMM/subscriptions", + "organizations_url": "https://api.github.com/users/NiklasMM/orgs", + "repos_url": "https://api.github.com/users/NiklasMM/repos", + "events_url": "https://api.github.com/users/NiklasMM/events{/privacy}", + "received_events_url": "https://api.github.com/users/NiklasMM/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 2, + "created_at": "2017-11-24T08:23:00Z", + "updated_at": "2018-12-25T23:15:40Z", + "closed_at": "2017-11-24T12:17:02Z", + "assignee": null, + "author_association": "NONE", + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "I just noticed, that Unidecode is licensed under the GPL, while python-slugify uses the MIT license.\r\n\r\nThe way I understand things, this is not possible since any code using the API of a GPL licensed piece of software must also be releases under the terms of the GPL.", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/49/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/49/timeline", + "performed_via_github_app": null, + "state_reason": "completed", + "pinned_comment": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/50", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/50/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/50/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/50/events", + "html_url": "https://github.com/un33k/python-slugify/issues/50", + "id": 291336214, + "node_id": "MDU6SXNzdWUyOTEzMzYyMTQ=", + "number": 50, + "title": "License incompatibility due to unidecode being GPLv3", + "user": { + "login": "bolkedebruin", + "id": 4282712, + "node_id": "MDQ6VXNlcjQyODI3MTI=", + "avatar_url": "https://avatars.githubusercontent.com/u/4282712?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/bolkedebruin", + "html_url": "https://github.com/bolkedebruin", + "followers_url": "https://api.github.com/users/bolkedebruin/followers", + "following_url": "https://api.github.com/users/bolkedebruin/following{/other_user}", + "gists_url": "https://api.github.com/users/bolkedebruin/gists{/gist_id}", + "starred_url": "https://api.github.com/users/bolkedebruin/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/bolkedebruin/subscriptions", + "organizations_url": "https://api.github.com/users/bolkedebruin/orgs", + "repos_url": "https://api.github.com/users/bolkedebruin/repos", + "events_url": "https://api.github.com/users/bolkedebruin/events{/privacy}", + "received_events_url": "https://api.github.com/users/bolkedebruin/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 4, + "created_at": "2018-01-24T19:46:14Z", + "updated_at": "2018-12-25T23:16:17Z", + "closed_at": "2018-01-24T20:11:21Z", + "assignee": null, + "author_association": "CONTRIBUTOR", + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "Hi There,\r\n\r\nI am one of the maintainers of Apache Airflow, licensed under the Apache License 2.0. A contributor made us aware that we are dependent on “unidecode” a GPLv3 licensed python library, due to an indirect dependency on python-slugify (by means of python-nvd3).\r\n\r\nAs derivative works of GPLv3 also need to GPL licensed this would make also python-slugify incompliant due to its MIT license. I have asked the maintainer of “unidecode” to dual license under the perl artistic license which would be compatible, but unfortunately that was refused (https://github.com/avian2/unidecode/issues/23). \r\n\r\nAs python-slugify therefore seems to have a license incompatibility issue, would you accept a patch that changes the dependency to text-unidecode (https://github.com/kmike/text-unidecode)?\r\n\r\nThanks\r\nBolke", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/50/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/50/timeline", + "performed_via_github_app": null, + "state_reason": "completed", + "pinned_comment": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/51", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/51/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/51/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/51/events", + "html_url": "https://github.com/un33k/python-slugify/issues/51", + "id": 294339022, + "node_id": "MDU6SXNzdWUyOTQzMzkwMjI=", + "number": 51, + "title": "GPL actually?", + "user": { + "login": "haizaar", + "id": 58201, + "node_id": "MDQ6VXNlcjU4MjAx", + "avatar_url": "https://avatars.githubusercontent.com/u/58201?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/haizaar", + "html_url": "https://github.com/haizaar", + "followers_url": "https://api.github.com/users/haizaar/followers", + "following_url": "https://api.github.com/users/haizaar/following{/other_user}", + "gists_url": "https://api.github.com/users/haizaar/gists{/gist_id}", + "starred_url": "https://api.github.com/users/haizaar/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/haizaar/subscriptions", + "organizations_url": "https://api.github.com/users/haizaar/orgs", + "repos_url": "https://api.github.com/users/haizaar/repos", + "events_url": "https://api.github.com/users/haizaar/events{/privacy}", + "received_events_url": "https://api.github.com/users/haizaar/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 2, + "created_at": "2018-02-05T10:16:56Z", + "updated_at": "2018-12-25T23:15:05Z", + "closed_at": "2018-02-05T10:27:53Z", + "assignee": null, + "author_association": "NONE", + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "Hi guys,\r\n\r\nWhile this library is MIT licensed, it uses unidcode, which is GPL licensed, practically making any SW that uses slugify to comply with GPL.\r\n\r\nWas it an intentional decision to use GPL licensed library underneath?\r\n\r\nThank.", + "closed_by": { + "login": "haizaar", + "id": 58201, + "node_id": "MDQ6VXNlcjU4MjAx", + "avatar_url": "https://avatars.githubusercontent.com/u/58201?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/haizaar", + "html_url": "https://github.com/haizaar", + "followers_url": "https://api.github.com/users/haizaar/followers", + "following_url": "https://api.github.com/users/haizaar/following{/other_user}", + "gists_url": "https://api.github.com/users/haizaar/gists{/gist_id}", + "starred_url": "https://api.github.com/users/haizaar/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/haizaar/subscriptions", + "organizations_url": "https://api.github.com/users/haizaar/orgs", + "repos_url": "https://api.github.com/users/haizaar/repos", + "events_url": "https://api.github.com/users/haizaar/events{/privacy}", + "received_events_url": "https://api.github.com/users/haizaar/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/51/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/51/timeline", + "performed_via_github_app": null, + "state_reason": "completed", + "pinned_comment": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/52", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/52/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/52/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/52/events", + "html_url": "https://github.com/un33k/python-slugify/issues/52", + "id": 307944018, + "node_id": "MDU6SXNzdWUzMDc5NDQwMTg=", + "number": 52, + "title": "Conditional dependency on unidecode/text-unidecode", + "user": { + "login": "bolkedebruin", + "id": 4282712, + "node_id": "MDQ6VXNlcjQyODI3MTI=", + "avatar_url": "https://avatars.githubusercontent.com/u/4282712?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/bolkedebruin", + "html_url": "https://github.com/bolkedebruin", + "followers_url": "https://api.github.com/users/bolkedebruin/followers", + "following_url": "https://api.github.com/users/bolkedebruin/following{/other_user}", + "gists_url": "https://api.github.com/users/bolkedebruin/gists{/gist_id}", + "starred_url": "https://api.github.com/users/bolkedebruin/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/bolkedebruin/subscriptions", + "organizations_url": "https://api.github.com/users/bolkedebruin/orgs", + "repos_url": "https://api.github.com/users/bolkedebruin/repos", + "events_url": "https://api.github.com/users/bolkedebruin/events{/privacy}", + "received_events_url": "https://api.github.com/users/bolkedebruin/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 3, + "created_at": "2018-03-23T08:45:53Z", + "updated_at": "2018-12-25T23:14:32Z", + "closed_at": "2018-03-25T15:04:23Z", + "assignee": null, + "author_association": "CONTRIBUTOR", + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "Hi,\r\n\r\nI have reached out before to discuss the dependency on `unidecode` which for some is an issue due to `unidecode` being GPL. It was argued by you as authors of `python-slugify` and the author of `unidecode` that this is not an issue. While I _personally_ agree, I have a hard time convincing others (https://issues.apache.org/jira/browse/LEGAL-362). \r\n\r\nThis means as a project (Apache Airflow) we are caught between a rock and hard place. The dependency is buried deep down for us and if we are really forced to remove it from our dependency tree we would need to replace some core items (ie. forking python-nvd3 and python-slugify most likely). This is obviously not what we want: we are very happy with both. So this is a call for help.\r\n\r\nIn the exchanges I had with you and the author of `unidecode` it was argued that the usage of `unidecode` by `python-slugify` is equal to the usage of an API (i.e. the same as glibc/linux kernel headers). This would mean that one should be able to replace `unidecode` by an equivalent that exposes the same API. Fortunately, there is one `text-unidecode`. \r\n\r\nHowever, the way python works makes this a bit tough. A `pip install python-slugify` (or a `pip install apache-airflow`) will always bring in `unidecode` although `text-unidecode` might be present on the system. This also makes the argument that `unidecode` is just an API weaker.\r\n\r\nWhat I would like to suggest is to have a conditional dependency which would default to `unidecode`. If an environment variable called `WITH_TEXTUNIDECODE` is defined (inspired by FreeBSD's make.conf https://www.freebsd.org/cgi/man.cgi?make.conf(5)) `text_unidecode` would be used instead when installing. An alternative approach could be to make use of setup.cfg, although that seems less flexible. Both are PEP508 compatible (https://hynek.me/articles/conditional-python-dependencies/).\r\n\r\nI volunteer to create a PR for this and to maintain it for at least a year. It would really help us getting past the hurdle that we see in https://issues.apache.org/jira/browse/LEGAL-362 . \r\n\r\nThanks a lot for your consideration.", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/52/reactions", + "total_count": 26, + "+1": 26, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/52/timeline", + "performed_via_github_app": null, + "state_reason": "completed", + "pinned_comment": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/53", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/53/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/53/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/53/events", + "html_url": "https://github.com/un33k/python-slugify/pull/53", + "id": 307955772, + "node_id": "MDExOlB1bGxSZXF1ZXN0MTc3MDEzMTgz", + "number": 53, + "title": "Use unidecode as an API and allow alternatives", + "user": { + "login": "bolkedebruin", + "id": 4282712, + "node_id": "MDQ6VXNlcjQyODI3MTI=", + "avatar_url": "https://avatars.githubusercontent.com/u/4282712?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/bolkedebruin", + "html_url": "https://github.com/bolkedebruin", + "followers_url": "https://api.github.com/users/bolkedebruin/followers", + "following_url": "https://api.github.com/users/bolkedebruin/following{/other_user}", + "gists_url": "https://api.github.com/users/bolkedebruin/gists{/gist_id}", + "starred_url": "https://api.github.com/users/bolkedebruin/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/bolkedebruin/subscriptions", + "organizations_url": "https://api.github.com/users/bolkedebruin/orgs", + "repos_url": "https://api.github.com/users/bolkedebruin/repos", + "events_url": "https://api.github.com/users/bolkedebruin/events{/privacy}", + "received_events_url": "https://api.github.com/users/bolkedebruin/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2018-03-23T09:28:33Z", + "updated_at": "2018-03-25T01:48:48Z", + "closed_at": "2018-03-25T01:48:48Z", + "assignee": null, + "author_association": "CONTRIBUTOR", + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/53", + "html_url": "https://github.com/un33k/python-slugify/pull/53", + "diff_url": "https://github.com/un33k/python-slugify/pull/53.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/53.patch", + "merged_at": "2018-03-25T01:48:48Z" + }, + "body": "Please see: https://github.com/un33k/python-slugify/issues/52 for an explanation.", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/53/reactions", + "total_count": 22, + "+1": 20, + "-1": 0, + "laugh": 0, + "hooray": 2, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/53/timeline", + "performed_via_github_app": null, + "state_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/54", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/54/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/54/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/54/events", + "html_url": "https://github.com/un33k/python-slugify/pull/54", + "id": 317692110, + "node_id": "MDExOlB1bGxSZXF1ZXN0MTg0MDg0OTk2", + "number": 54, + "title": "Support for case sensitivity", + "user": { + "login": "s-m-e", + "id": 16851110, + "node_id": "MDQ6VXNlcjE2ODUxMTEw", + "avatar_url": "https://avatars.githubusercontent.com/u/16851110?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/s-m-e", + "html_url": "https://github.com/s-m-e", + "followers_url": "https://api.github.com/users/s-m-e/followers", + "following_url": "https://api.github.com/users/s-m-e/following{/other_user}", + "gists_url": "https://api.github.com/users/s-m-e/gists{/gist_id}", + "starred_url": "https://api.github.com/users/s-m-e/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/s-m-e/subscriptions", + "organizations_url": "https://api.github.com/users/s-m-e/orgs", + "repos_url": "https://api.github.com/users/s-m-e/repos", + "events_url": "https://api.github.com/users/s-m-e/events{/privacy}", + "received_events_url": "https://api.github.com/users/s-m-e/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 3, + "created_at": "2018-04-25T15:59:08Z", + "updated_at": "2018-04-26T03:20:44Z", + "closed_at": "2018-04-26T03:20:36Z", + "assignee": null, + "author_association": "CONTRIBUTOR", + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/54", + "html_url": "https://github.com/un33k/python-slugify/pull/54", + "diff_url": "https://github.com/un33k/python-slugify/pull/54.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/54.patch", + "merged_at": "2018-04-26T03:20:36Z" + }, + "body": "`slugify.slugify` receives a new keyword argument, `lowercase`. It's set to `True` by default, preserving the original behavior. If set to `False`, slugify will preserve uppercase letters. This functionality also extends to the `stopwords` keyword argument.\r\n\r\n```python\r\nout_str = slugify(slug_str, lowercase = False)\r\n```\r\n\r\nI added one new test ... it could probably be more.", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/54/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/54/timeline", + "performed_via_github_app": null, + "state_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/55", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/55/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/55/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/55/events", + "html_url": "https://github.com/un33k/python-slugify/issues/55", + "id": 323225684, + "node_id": "MDU6SXNzdWUzMjMyMjU2ODQ=", + "number": 55, + "title": "a bug", + "user": { + "login": "ghost", + "id": 10137, + "node_id": "MDQ6VXNlcjEwMTM3", + "avatar_url": "https://avatars.githubusercontent.com/u/10137?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/ghost", + "html_url": "https://github.com/ghost", + "followers_url": "https://api.github.com/users/ghost/followers", + "following_url": "https://api.github.com/users/ghost/following{/other_user}", + "gists_url": "https://api.github.com/users/ghost/gists{/gist_id}", + "starred_url": "https://api.github.com/users/ghost/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/ghost/subscriptions", + "organizations_url": "https://api.github.com/users/ghost/orgs", + "repos_url": "https://api.github.com/users/ghost/repos", + "events_url": "https://api.github.com/users/ghost/events{/privacy}", + "received_events_url": "https://api.github.com/users/ghost/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2018-05-15T13:47:10Z", + "updated_at": "2018-07-09T07:35:44Z", + "closed_at": "2018-07-09T07:35:44Z", + "assignee": null, + "author_association": "NONE", + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "`from slugify import slugify`\r\n`txt='hello你好'`\r\n`slugify(txt)`\r\n\r\nOut: 'helloni-hao'\r\n\r\n\r\n**i hope the out: 'hello-ni-hao'**\r\n\r\nhow to fix it ?\r\n thank you very much\r\n", + "closed_by": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/55/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/55/timeline", + "performed_via_github_app": null, + "state_reason": "completed", + "pinned_comment": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/56", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/56/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/56/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/56/events", + "html_url": "https://github.com/un33k/python-slugify/issues/56", + "id": 341572175, + "node_id": "MDU6SXNzdWUzNDE1NzIxNzU=", + "number": 56, + "title": "Python 3.7 support?", + "user": { + "login": "glennmatthews", + "id": 5603551, + "node_id": "MDQ6VXNlcjU2MDM1NTE=", + "avatar_url": "https://avatars.githubusercontent.com/u/5603551?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/glennmatthews", + "html_url": "https://github.com/glennmatthews", + "followers_url": "https://api.github.com/users/glennmatthews/followers", + "following_url": "https://api.github.com/users/glennmatthews/following{/other_user}", + "gists_url": "https://api.github.com/users/glennmatthews/gists{/gist_id}", + "starred_url": "https://api.github.com/users/glennmatthews/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/glennmatthews/subscriptions", + "organizations_url": "https://api.github.com/users/glennmatthews/orgs", + "repos_url": "https://api.github.com/users/glennmatthews/repos", + "events_url": "https://api.github.com/users/glennmatthews/events{/privacy}", + "received_events_url": "https://api.github.com/users/glennmatthews/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2018-07-16T15:41:03Z", + "updated_at": "2018-07-17T01:41:56Z", + "closed_at": "2018-07-17T01:41:56Z", + "assignee": null, + "author_association": "NONE", + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "Hi, is there a plan for declaring Python 3.7 support in python-slugify?", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/56/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/56/timeline", + "performed_via_github_app": null, + "state_reason": "completed", + "pinned_comment": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/57", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/57/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/57/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/57/events", + "html_url": "https://github.com/un33k/python-slugify/pull/57", + "id": 341884758, + "node_id": "MDExOlB1bGxSZXF1ZXN0MjAxOTE0NDAy", + "number": 57, + "title": "Adding Python 3.7 support", + "user": { + "login": "s-m-e", + "id": 16851110, + "node_id": "MDQ6VXNlcjE2ODUxMTEw", + "avatar_url": "https://avatars.githubusercontent.com/u/16851110?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/s-m-e", + "html_url": "https://github.com/s-m-e", + "followers_url": "https://api.github.com/users/s-m-e/followers", + "following_url": "https://api.github.com/users/s-m-e/following{/other_user}", + "gists_url": "https://api.github.com/users/s-m-e/gists{/gist_id}", + "starred_url": "https://api.github.com/users/s-m-e/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/s-m-e/subscriptions", + "organizations_url": "https://api.github.com/users/s-m-e/orgs", + "repos_url": "https://api.github.com/users/s-m-e/repos", + "events_url": "https://api.github.com/users/s-m-e/events{/privacy}", + "received_events_url": "https://api.github.com/users/s-m-e/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 3, + "created_at": "2018-07-17T11:48:04Z", + "updated_at": "2018-08-04T11:00:52Z", + "closed_at": "2018-08-04T01:32:19Z", + "assignee": null, + "author_association": "CONTRIBUTOR", + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/57", + "html_url": "https://github.com/un33k/python-slugify/pull/57", + "diff_url": "https://github.com/un33k/python-slugify/pull/57.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/57.patch", + "merged_at": null + }, + "body": "Addressing #56 based on Travis' currently a little incomplete support for Python 3.7.", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/57/reactions", + "total_count": 1, + "+1": 1, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/57/timeline", + "performed_via_github_app": null, + "state_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/58", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/58/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/58/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/58/events", + "html_url": "https://github.com/un33k/python-slugify/issues/58", + "id": 347313093, + "node_id": "MDU6SXNzdWUzNDczMTMwOTM=", + "number": 58, + "title": "setuptools error", + "user": { + "login": "fabiocaccamo", + "id": 1035294, + "node_id": "MDQ6VXNlcjEwMzUyOTQ=", + "avatar_url": "https://avatars.githubusercontent.com/u/1035294?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/fabiocaccamo", + "html_url": "https://github.com/fabiocaccamo", + "followers_url": "https://api.github.com/users/fabiocaccamo/followers", + "following_url": "https://api.github.com/users/fabiocaccamo/following{/other_user}", + "gists_url": "https://api.github.com/users/fabiocaccamo/gists{/gist_id}", + "starred_url": "https://api.github.com/users/fabiocaccamo/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/fabiocaccamo/subscriptions", + "organizations_url": "https://api.github.com/users/fabiocaccamo/orgs", + "repos_url": "https://api.github.com/users/fabiocaccamo/repos", + "events_url": "https://api.github.com/users/fabiocaccamo/events{/privacy}", + "received_events_url": "https://api.github.com/users/fabiocaccamo/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2018-08-03T08:51:48Z", + "updated_at": "2018-08-04T01:30:16Z", + "closed_at": "2018-08-04T01:30:16Z", + "assignee": null, + "author_association": "CONTRIBUTOR", + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "Python 2.7\r\n\r\nsetuptools error when `pip install python-slugify==1.2.5`\r\nImportError: No module named pkg_resources\r\n\r\nRunning `pip install python-slugify==1.2.4` works fine.", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/58/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/58/timeline", + "performed_via_github_app": null, + "state_reason": "completed", + "pinned_comment": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/59", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/59/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/59/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/59/events", + "html_url": "https://github.com/un33k/python-slugify/issues/59", + "id": 354885776, + "node_id": "MDU6SXNzdWUzNTQ4ODU3NzY=", + "number": 59, + "title": "Strange install behavior - pip always installs unidecode", + "user": { + "login": "tedmiston", + "id": 366688, + "node_id": "MDQ6VXNlcjM2NjY4OA==", + "avatar_url": "https://avatars.githubusercontent.com/u/366688?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/tedmiston", + "html_url": "https://github.com/tedmiston", + "followers_url": "https://api.github.com/users/tedmiston/followers", + "following_url": "https://api.github.com/users/tedmiston/following{/other_user}", + "gists_url": "https://api.github.com/users/tedmiston/gists{/gist_id}", + "starred_url": "https://api.github.com/users/tedmiston/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/tedmiston/subscriptions", + "organizations_url": "https://api.github.com/users/tedmiston/orgs", + "repos_url": "https://api.github.com/users/tedmiston/repos", + "events_url": "https://api.github.com/users/tedmiston/events{/privacy}", + "received_events_url": "https://api.github.com/users/tedmiston/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 7, + "created_at": "2018-08-28T20:12:59Z", + "updated_at": "2018-12-26T05:23:40Z", + "closed_at": "2018-12-25T23:06:41Z", + "assignee": null, + "author_association": "NONE", + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "I'm trying to test installing python-slugify with `unidecode` vs `text-unidecode` for Airflow, however, for some reason I'm getting the unidecode package installed by pip always even when passing the explicit flag for text-unidecode. I can see in the setup.py that this shouldn't happen, so I'm not really sure how it is.\r\n\r\nCan you replicate what I'm experiencing below?\r\n\r\nNote: I'm using pyenv and virtualenvwrapper commands.\r\n\r\n## Case 1 - Without `SLUGIFY_USES_TEXT_UNIDECODE` (expected unidecode)\r\n\r\n```\r\nt-mbp:~ taylor$ pyenv shell 3.6.5 && mktmpenv -i python-slugify\r\nUsing base prefix '/Users/taylor/.pyenv/versions/3.6.5'\r\nNew python executable in /Users/taylor/.local/share/virtualenvs/tmp-63bc530c9c5a5f1/bin/python3.6\r\nAlso creating executable in /Users/taylor/.local/share/virtualenvs/tmp-63bc530c9c5a5f1/bin/python\r\nInstalling setuptools, pip, wheel...done.\r\nvirtualenvwrapper.user_scripts creating /Users/taylor/.virtualenvs/tmp-63bc530c9c5a5f1/bin/predeactivate\r\nvirtualenvwrapper.user_scripts creating /Users/taylor/.virtualenvs/tmp-63bc530c9c5a5f1/bin/postdeactivate\r\nvirtualenvwrapper.user_scripts creating /Users/taylor/.virtualenvs/tmp-63bc530c9c5a5f1/bin/preactivate\r\nvirtualenvwrapper.user_scripts creating /Users/taylor/.virtualenvs/tmp-63bc530c9c5a5f1/bin/postactivate\r\nvirtualenvwrapper.user_scripts creating /Users/taylor/.virtualenvs/tmp-63bc530c9c5a5f1/bin/get_env_details\r\nCollecting python-slugify\r\nCollecting Unidecode>=0.04.16 (from python-slugify)\r\n Using cached https://files.pythonhosted.org/packages/59/ef/67085e30e8bbcdd76e2f0a4ad8151c13a2c5bce77c85f8cad6e1f16fb141/Unidecode-1.0.22-py2.py3-none-any.whl\r\nInstalling collected packages: Unidecode, python-slugify\r\nSuccessfully installed Unidecode-1.0.22 python-slugify-1.2.5\r\nThis is a temporary environment. It will be deleted when you run 'deactivate'.\r\n```\r\n\r\n## Case 2 - With `SLUGIFY_USES_TEXT_UNIDECODE=yes ` (expected text-unidecode)\r\n\r\n```\r\nt-mbp:~ taylor$ pyenv shell 3.6.5 && export SLUGIFY_USES_TEXT_UNIDECODE=yes && mktmpenv -i python-slugify\r\nUsing base prefix '/Users/taylor/.pyenv/versions/3.6.5'\r\nNew python executable in /Users/taylor/.local/share/virtualenvs/tmp-6e020af8417d51b/bin/python3.6\r\nAlso creating executable in /Users/taylor/.local/share/virtualenvs/tmp-6e020af8417d51b/bin/python\r\nInstalling setuptools, pip, wheel...done.\r\nvirtualenvwrapper.user_scripts creating /Users/taylor/.virtualenvs/tmp-6e020af8417d51b/bin/predeactivate\r\nvirtualenvwrapper.user_scripts creating /Users/taylor/.virtualenvs/tmp-6e020af8417d51b/bin/postdeactivate\r\nvirtualenvwrapper.user_scripts creating /Users/taylor/.virtualenvs/tmp-6e020af8417d51b/bin/preactivate\r\nvirtualenvwrapper.user_scripts creating /Users/taylor/.virtualenvs/tmp-6e020af8417d51b/bin/postactivate\r\nvirtualenvwrapper.user_scripts creating /Users/taylor/.virtualenvs/tmp-6e020af8417d51b/bin/get_env_details\r\nCollecting python-slugify\r\nCollecting Unidecode>=0.04.16 (from python-slugify)\r\n Using cached https://files.pythonhosted.org/packages/59/ef/67085e30e8bbcdd76e2f0a4ad8151c13a2c5bce77c85f8cad6e1f16fb141/Unidecode-1.0.22-py2.py3-none-any.whl\r\nInstalling collected packages: Unidecode, python-slugify\r\nSuccessfully installed Unidecode-1.0.22 python-slugify-1.2.5\r\nThis is a temporary environment. It will be deleted when you run 'deactivate'.\r\n```\r\n\r\n## Case 3 - With text-unidecode pre-installed (expected text-unidecode)\r\n\r\n```\r\nLast login: Tue Aug 28 15:21:47 on ttys004\r\nt-mbp:~ taylor$ pyenv shell 3.6.5 && export SLUGIFY_USES_TEXT_UNIDECODE=yes && mktmpenv -i text-unidecode -i python-slugify\r\nUsing base prefix '/Users/taylor/.pyenv/versions/3.6.5'\r\nNew python executable in /Users/taylor/.local/share/virtualenvs/tmp-8bec3e8a00b8e0b/bin/python3.6\r\nAlso creating executable in /Users/taylor/.local/share/virtualenvs/tmp-8bec3e8a00b8e0b/bin/python\r\nInstalling setuptools, pip, wheel...done.\r\nvirtualenvwrapper.user_scripts creating /Users/taylor/.virtualenvs/tmp-8bec3e8a00b8e0b/bin/predeactivate\r\nvirtualenvwrapper.user_scripts creating /Users/taylor/.virtualenvs/tmp-8bec3e8a00b8e0b/bin/postdeactivate\r\nvirtualenvwrapper.user_scripts creating /Users/taylor/.virtualenvs/tmp-8bec3e8a00b8e0b/bin/preactivate\r\nvirtualenvwrapper.user_scripts creating /Users/taylor/.virtualenvs/tmp-8bec3e8a00b8e0b/bin/postactivate\r\nvirtualenvwrapper.user_scripts creating /Users/taylor/.virtualenvs/tmp-8bec3e8a00b8e0b/bin/get_env_details\r\nCollecting text-unidecode\r\n Using cached https://files.pythonhosted.org/packages/79/42/d717cc2b4520fb09e45b344b1b0b4e81aa672001dd128c180fabc655c341/text_unidecode-1.2-py2.py3-none-any.whl\r\nInstalling collected packages: text-unidecode\r\nSuccessfully installed text-unidecode-1.2\r\nCollecting python-slugify\r\nCollecting Unidecode>=0.04.16 (from python-slugify)\r\n Using cached https://files.pythonhosted.org/packages/59/ef/67085e30e8bbcdd76e2f0a4ad8151c13a2c5bce77c85f8cad6e1f16fb141/Unidecode-1.0.22-py2.py3-none-any.whl\r\nInstalling collected packages: Unidecode, python-slugify\r\nSuccessfully installed Unidecode-1.0.22 python-slugify-1.2.5\r\nThis is a temporary environment. It will be deleted when you run 'deactivate'.\r\n```", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/59/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/59/timeline", + "performed_via_github_app": null, + "state_reason": "completed", + "pinned_comment": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/60", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/60/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/60/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/60/events", + "html_url": "https://github.com/un33k/python-slugify/issues/60", + "id": 355239090, + "node_id": "MDU6SXNzdWUzNTUyMzkwOTA=", + "number": 60, + "title": "Release new version of this package?", + "user": { + "login": "s-m-e", + "id": 16851110, + "node_id": "MDQ6VXNlcjE2ODUxMTEw", + "avatar_url": "https://avatars.githubusercontent.com/u/16851110?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/s-m-e", + "html_url": "https://github.com/s-m-e", + "followers_url": "https://api.github.com/users/s-m-e/followers", + "following_url": "https://api.github.com/users/s-m-e/following{/other_user}", + "gists_url": "https://api.github.com/users/s-m-e/gists{/gist_id}", + "starred_url": "https://api.github.com/users/s-m-e/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/s-m-e/subscriptions", + "organizations_url": "https://api.github.com/users/s-m-e/orgs", + "repos_url": "https://api.github.com/users/s-m-e/repos", + "events_url": "https://api.github.com/users/s-m-e/events{/privacy}", + "received_events_url": "https://api.github.com/users/s-m-e/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 2, + "created_at": "2018-08-29T16:27:56Z", + "updated_at": "2018-09-02T16:47:52Z", + "closed_at": "2018-09-02T16:37:41Z", + "assignee": null, + "author_association": "CONTRIBUTOR", + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "Would it be possible to release a new version of this package on PyPI? I am heavily relying on #54 and, for that reason, currently have users installing this package from the development branch of this repository on github, which is far from optimal.", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/60/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/60/timeline", + "performed_via_github_app": null, + "state_reason": "completed", + "pinned_comment": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/61", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/61/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/61/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/61/events", + "html_url": "https://github.com/un33k/python-slugify/pull/61", + "id": 367444943, + "node_id": "MDExOlB1bGxSZXF1ZXN0MjIwODc4NjIz", + "number": 61, + "title": "add .vscode to .gitingore", + "user": { + "login": "vaibhavmule", + "id": 6290791, + "node_id": "MDQ6VXNlcjYyOTA3OTE=", + "avatar_url": "https://avatars.githubusercontent.com/u/6290791?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/vaibhavmule", + "html_url": "https://github.com/vaibhavmule", + "followers_url": "https://api.github.com/users/vaibhavmule/followers", + "following_url": "https://api.github.com/users/vaibhavmule/following{/other_user}", + "gists_url": "https://api.github.com/users/vaibhavmule/gists{/gist_id}", + "starred_url": "https://api.github.com/users/vaibhavmule/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/vaibhavmule/subscriptions", + "organizations_url": "https://api.github.com/users/vaibhavmule/orgs", + "repos_url": "https://api.github.com/users/vaibhavmule/repos", + "events_url": "https://api.github.com/users/vaibhavmule/events{/privacy}", + "received_events_url": "https://api.github.com/users/vaibhavmule/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 3, + "created_at": "2018-10-06T10:32:15Z", + "updated_at": "2018-10-14T14:57:13Z", + "closed_at": "2018-10-14T14:57:13Z", + "assignee": null, + "author_association": "NONE", + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/61", + "html_url": "https://github.com/un33k/python-slugify/pull/61", + "diff_url": "https://github.com/un33k/python-slugify/pull/61.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/61.patch", + "merged_at": null + }, + "body": "", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/61/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/61/timeline", + "performed_via_github_app": null, + "state_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/62", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/62/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/62/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/62/events", + "html_url": "https://github.com/un33k/python-slugify/issues/62", + "id": 384741426, + "node_id": "MDU6SXNzdWUzODQ3NDE0MjY=", + "number": 62, + "title": "Fix DeprecationWarnings in newer Pythons (3.6+)", + "user": { + "login": "mcarans", + "id": 3799212, + "node_id": "MDQ6VXNlcjM3OTkyMTI=", + "avatar_url": "https://avatars.githubusercontent.com/u/3799212?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/mcarans", + "html_url": "https://github.com/mcarans", + "followers_url": "https://api.github.com/users/mcarans/followers", + "following_url": "https://api.github.com/users/mcarans/following{/other_user}", + "gists_url": "https://api.github.com/users/mcarans/gists{/gist_id}", + "starred_url": "https://api.github.com/users/mcarans/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/mcarans/subscriptions", + "organizations_url": "https://api.github.com/users/mcarans/orgs", + "repos_url": "https://api.github.com/users/mcarans/repos", + "events_url": "https://api.github.com/users/mcarans/events{/privacy}", + "received_events_url": "https://api.github.com/users/mcarans/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2018-11-27T11:07:54Z", + "updated_at": "2018-12-25T23:02:45Z", + "closed_at": "2018-12-25T23:02:45Z", + "assignee": null, + "author_association": "NONE", + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "I see these warnings each time I run:\r\n\r\n```\r\n...python3.6/site-packages/slugify/slugify.py:25\r\n ...python3.6/site-packages/slugify/slugify.py:25: DeprecationWarning: invalid escape sequence \\d\r\n DECIMAL_PATTERN = re.compile('&#(\\d+);')\r\n\r\n...python3.6/site-packages/slugify/slugify.py:26\r\n ...python3.6/site-packages/slugify/slugify.py:26: DeprecationWarning: invalid escape sequence \\d\r\n HEX_PATTERN = re.compile('&#x([\\da-fA-F]+);')\r\n\r\n...python3.6/site-packages/slugify/slugify.py:31\r\n ...python3.6/site-packages/slugify/slugify.py:31: DeprecationWarning: invalid escape sequence \\d\r\n NUMBERS_PATTERN = re.compile('(?<=\\d),(?=\\d)')\r\n```\r\n\r\nPerhaps this is the problem:\r\nhttps://stackoverflow.com/questions/50504500/deprecationwarning-invalid-escape-sequence-what-to-use-instead-of-d", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/62/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/62/timeline", + "performed_via_github_app": null, + "state_reason": "completed", + "pinned_comment": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/63", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/63/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/63/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/63/events", + "html_url": "https://github.com/un33k/python-slugify/pull/63", + "id": 394054191, + "node_id": "MDExOlB1bGxSZXF1ZXN0MjQwODk2MTA4", + "number": 63, + "title": "Proper fallback to text-unidecode, favoring Unidecode, drop support for py 2.6, 3.3.", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2018-12-25T22:54:52Z", + "updated_at": "2018-12-25T23:00:44Z", + "closed_at": "2018-12-25T23:00:44Z", + "assignee": null, + "author_association": "OWNER", + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/63", + "html_url": "https://github.com/un33k/python-slugify/pull/63", + "diff_url": "https://github.com/un33k/python-slugify/pull/63.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/63.patch", + "merged_at": "2018-12-25T23:00:44Z" + }, + "body": "- Default to Unidecode as decoding module\r\n- Allow easy fallback to text-unidecode\r\n- Drop python 2.6, 3.3\r\n- Clean up\r\n- Up version to 2.0.0", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/63/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/63/timeline", + "performed_via_github_app": null, + "state_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/64", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/64/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/64/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/64/events", + "html_url": "https://github.com/un33k/python-slugify/pull/64", + "id": 394840529, + "node_id": "MDExOlB1bGxSZXF1ZXN0MjQxNDcyODA5", + "number": 64, + "title": "Rename word_boundaries: more consistent naming", + "user": { + "login": "theotheo", + "id": 1499744, + "node_id": "MDQ6VXNlcjE0OTk3NDQ=", + "avatar_url": "https://avatars.githubusercontent.com/u/1499744?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/theotheo", + "html_url": "https://github.com/theotheo", + "followers_url": "https://api.github.com/users/theotheo/followers", + "following_url": "https://api.github.com/users/theotheo/following{/other_user}", + "gists_url": "https://api.github.com/users/theotheo/gists{/gist_id}", + "starred_url": "https://api.github.com/users/theotheo/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/theotheo/subscriptions", + "organizations_url": "https://api.github.com/users/theotheo/orgs", + "repos_url": "https://api.github.com/users/theotheo/repos", + "events_url": "https://api.github.com/users/theotheo/events{/privacy}", + "received_events_url": "https://api.github.com/users/theotheo/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 3, + "created_at": "2018-12-30T02:24:27Z", + "updated_at": "2018-12-30T02:57:53Z", + "closed_at": "2018-12-30T02:57:40Z", + "assignee": null, + "author_association": "CONTRIBUTOR", + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/64", + "html_url": "https://github.com/un33k/python-slugify/pull/64", + "diff_url": "https://github.com/un33k/python-slugify/pull/64.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/64.patch", + "merged_at": "2018-12-30T02:57:40Z" + }, + "body": "", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/64/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/64/timeline", + "performed_via_github_app": null, + "state_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/65", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/65/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/65/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/65/events", + "html_url": "https://github.com/un33k/python-slugify/pull/65", + "id": 395313784, + "node_id": "MDExOlB1bGxSZXF1ZXN0MjQxNzk3NDM5", + "number": 65, + "title": "Add custom_replacements to option", + "user": { + "login": "andriyor", + "id": 11459840, + "node_id": "MDQ6VXNlcjExNDU5ODQw", + "avatar_url": "https://avatars.githubusercontent.com/u/11459840?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/andriyor", + "html_url": "https://github.com/andriyor", + "followers_url": "https://api.github.com/users/andriyor/followers", + "following_url": "https://api.github.com/users/andriyor/following{/other_user}", + "gists_url": "https://api.github.com/users/andriyor/gists{/gist_id}", + "starred_url": "https://api.github.com/users/andriyor/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/andriyor/subscriptions", + "organizations_url": "https://api.github.com/users/andriyor/orgs", + "repos_url": "https://api.github.com/users/andriyor/repos", + "events_url": "https://api.github.com/users/andriyor/events{/privacy}", + "received_events_url": "https://api.github.com/users/andriyor/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 5, + "created_at": "2019-01-02T17:01:13Z", + "updated_at": "2019-01-03T16:28:22Z", + "closed_at": "2019-01-03T16:28:22Z", + "assignee": null, + "author_association": "CONTRIBUTOR", + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/65", + "html_url": "https://github.com/un33k/python-slugify/pull/65", + "diff_url": "https://github.com/un33k/python-slugify/pull/65.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/65.patch", + "merged_at": null + }, + "body": "With this option, user can add his own custom replacements.", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/65/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/65/timeline", + "performed_via_github_app": null, + "state_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/66", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/66/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/66/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/66/events", + "html_url": "https://github.com/un33k/python-slugify/pull/66", + "id": 395607455, + "node_id": "MDExOlB1bGxSZXF1ZXN0MjQyMDIxNjgx", + "number": 66, + "title": "Add support user-specific replacements", + "user": { + "login": "andriyor", + "id": 11459840, + "node_id": "MDQ6VXNlcjExNDU5ODQw", + "avatar_url": "https://avatars.githubusercontent.com/u/11459840?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/andriyor", + "html_url": "https://github.com/andriyor", + "followers_url": "https://api.github.com/users/andriyor/followers", + "following_url": "https://api.github.com/users/andriyor/following{/other_user}", + "gists_url": "https://api.github.com/users/andriyor/gists{/gist_id}", + "starred_url": "https://api.github.com/users/andriyor/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/andriyor/subscriptions", + "organizations_url": "https://api.github.com/users/andriyor/orgs", + "repos_url": "https://api.github.com/users/andriyor/repos", + "events_url": "https://api.github.com/users/andriyor/events{/privacy}", + "received_events_url": "https://api.github.com/users/andriyor/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 3, + "created_at": "2019-01-03T15:11:18Z", + "updated_at": "2019-01-03T16:29:52Z", + "closed_at": "2019-01-03T16:28:02Z", + "assignee": null, + "author_association": "CONTRIBUTOR", + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/66", + "html_url": "https://github.com/un33k/python-slugify/pull/66", + "diff_url": "https://github.com/un33k/python-slugify/pull/66.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/66.patch", + "merged_at": "2019-01-03T16:28:02Z" + }, + "body": "", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/66/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/66/timeline", + "performed_via_github_app": null, + "state_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/67", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/67/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/67/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/67/events", + "html_url": "https://github.com/un33k/python-slugify/pull/67", + "id": 395755197, + "node_id": "MDExOlB1bGxSZXF1ZXN0MjQyMTM0ODQ0", + "number": 67, + "title": "Add replacements option", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2019-01-03T23:00:26Z", + "updated_at": "2019-01-03T23:21:54Z", + "closed_at": "2019-01-03T23:03:36Z", + "assignee": null, + "author_association": "OWNER", + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/67", + "html_url": "https://github.com/un33k/python-slugify/pull/67", + "diff_url": "https://github.com/un33k/python-slugify/pull/67.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/67.patch", + "merged_at": "2019-01-03T23:03:36Z" + }, + "body": "- Add replacements option e.g. [['|', 'or'], ['%', 'percent'], ['-', '_']]\r\n- Clean up\r\n- Bump version\r\n- Ensure fully backward compatible \r\n", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/67/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/67/timeline", + "performed_via_github_app": null, + "state_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/68", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/68/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/68/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/68/events", + "html_url": "https://github.com/un33k/python-slugify/issues/68", + "id": 397726623, + "node_id": "MDU6SXNzdWUzOTc3MjY2MjM=", + "number": 68, + "title": "Use the setuptools \"Extras\" feature to choose between Unidecode and Text-Unidecode", + "user": { + "login": "roniemartinez", + "id": 2573537, + "node_id": "MDQ6VXNlcjI1NzM1Mzc=", + "avatar_url": "https://avatars.githubusercontent.com/u/2573537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/roniemartinez", + "html_url": "https://github.com/roniemartinez", + "followers_url": "https://api.github.com/users/roniemartinez/followers", + "following_url": "https://api.github.com/users/roniemartinez/following{/other_user}", + "gists_url": "https://api.github.com/users/roniemartinez/gists{/gist_id}", + "starred_url": "https://api.github.com/users/roniemartinez/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/roniemartinez/subscriptions", + "organizations_url": "https://api.github.com/users/roniemartinez/orgs", + "repos_url": "https://api.github.com/users/roniemartinez/repos", + "events_url": "https://api.github.com/users/roniemartinez/events{/privacy}", + "received_events_url": "https://api.github.com/users/roniemartinez/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": true, + "assignees": [], + "milestone": null, + "comments": 3, + "created_at": "2019-01-10T08:47:27Z", + "updated_at": "2019-01-12T15:02:07Z", + "closed_at": "2019-01-11T19:37:19Z", + "assignee": null, + "author_association": "NONE", + "active_lock_reason": "resolved", + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "Hi @un33k ,\r\n\r\nThanks for this library! 👍 \r\n\r\nI would like to request an option for users to install `python-slugify` with their preferred decoders.\r\n\r\nWhen using `requirements.txt`, everyone is forced to used `Unidecode` which is GPL-licensed. \r\nUsing the \"[Extras](https://setuptools.readthedocs.io/en/latest/setuptools.html#declaring-extras-optional-features-with-their-own-dependencies)\" feature of setuptools would be a great help!\r\n\r\nExample:\r\n```\r\npip install python-slugify[unidecode]\r\npip install python-slugify[text-unidecode]\r\n```\r\n\r\nAs a reference, this has been used by popular libraries like [Django](https://github.com/django/django/blob/master/setup.py#L87):\r\n```\r\npip install django[bcrypt]\r\npip install django[argon2]\r\n```", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/68/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/68/timeline", + "performed_via_github_app": null, + "state_reason": "completed", + "pinned_comment": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/69", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/69/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/69/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/69/events", + "html_url": "https://github.com/un33k/python-slugify/issues/69", + "id": 397916393, + "node_id": "MDU6SXNzdWUzOTc5MTYzOTM=", + "number": 69, + "title": "submitting non-unicode to normalize chars in py2", + "user": { + "login": "grandrew", + "id": 243218, + "node_id": "MDQ6VXNlcjI0MzIxOA==", + "avatar_url": "https://avatars.githubusercontent.com/u/243218?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/grandrew", + "html_url": "https://github.com/grandrew", + "followers_url": "https://api.github.com/users/grandrew/followers", + "following_url": "https://api.github.com/users/grandrew/following{/other_user}", + "gists_url": "https://api.github.com/users/grandrew/gists{/gist_id}", + "starred_url": "https://api.github.com/users/grandrew/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/grandrew/subscriptions", + "organizations_url": "https://api.github.com/users/grandrew/orgs", + "repos_url": "https://api.github.com/users/grandrew/repos", + "events_url": "https://api.github.com/users/grandrew/events{/privacy}", + "received_events_url": "https://api.github.com/users/grandrew/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 2, + "created_at": "2019-01-10T16:39:51Z", + "updated_at": "2019-01-11T20:00:26Z", + "closed_at": "2019-01-11T20:00:26Z", + "assignee": null, + "author_association": "NONE", + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "```\r\nnormalize() argument 2 must be unicode, not str\r\n Traceback (most recent call last):\r\n File \"./gnib_par_pool.py\", line 383, in screenshot\r\n screenshot(self.driver, str(ids)+str(self.sess))\r\n File \"./gnib_par_pool.py\", line 86, in screenshot\r\n driver.save_screenshot(slugify('%s-screenie-%s' % (datetime.datetime.now().isoformat(), str(sid),))+\".png\")\r\n File \"/usr/local/lib/python2.7/dist-packages/slugify.py\", line 26, in slugify\r\n unicodedata.normalize('NFKD', string)\r\n TypeError: normalize() argument 2 must be unicode, not str\r\n```\r\n\r\nsaw this already at https://github.com/un33k/python-slugify/issues/35\r\n\r\nhappy to debug\r\n\r\nthe code works in pipenv but does not in ubuntu 16.04\r\n\r\nthere is something to do with ubuntu I guess", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/69/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/69/timeline", + "performed_via_github_app": null, + "state_reason": "completed", + "pinned_comment": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/70", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/70/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/70/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/70/events", + "html_url": "https://github.com/un33k/python-slugify/issues/70", + "id": 398676643, + "node_id": "MDU6SXNzdWUzOTg2NzY2NDM=", + "number": 70, + "title": "Setup.py dependency checker does not work for pip", + "user": { + "login": "bolkedebruin", + "id": 4282712, + "node_id": "MDQ6VXNlcjQyODI3MTI=", + "avatar_url": "https://avatars.githubusercontent.com/u/4282712?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/bolkedebruin", + "html_url": "https://github.com/bolkedebruin", + "followers_url": "https://api.github.com/users/bolkedebruin/followers", + "following_url": "https://api.github.com/users/bolkedebruin/following{/other_user}", + "gists_url": "https://api.github.com/users/bolkedebruin/gists{/gist_id}", + "starred_url": "https://api.github.com/users/bolkedebruin/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/bolkedebruin/subscriptions", + "organizations_url": "https://api.github.com/users/bolkedebruin/orgs", + "repos_url": "https://api.github.com/users/bolkedebruin/repos", + "events_url": "https://api.github.com/users/bolkedebruin/events{/privacy}", + "received_events_url": "https://api.github.com/users/bolkedebruin/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 4, + "created_at": "2019-01-13T16:53:58Z", + "updated_at": "2019-03-03T17:47:02Z", + "closed_at": "2019-03-03T17:47:02Z", + "assignee": null, + "author_association": "CONTRIBUTOR", + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "Hi,\r\n\r\nUnfortunately the check for text-unidecode (https://github.com/un33k/python-slugify/pull/63) does not work with pip. Pip executes installations in an isolated environment and does not support `setup_requires`, hence it cannot detect if text-unidecode is installed when text-unidecode was used in install_requires and not installed beforehand.\r\n\r\nHonestly it seems that this is just very hard or impossible to do in Python land. So, what we probably will do is to put slugify in a vendor location and make it dependent on text-unidecode.\r\n\r\nJust opening this to see if you would have other suggestions or ideas.\r\n\r\nCheers", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/70/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/70/timeline", + "performed_via_github_app": null, + "state_reason": "completed", + "pinned_comment": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/71", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/71/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/71/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/71/events", + "html_url": "https://github.com/un33k/python-slugify/pull/71", + "id": 413612364, + "node_id": "MDExOlB1bGxSZXF1ZXN0MjU1NTU5Mjkw", + "number": 71, + "title": "Upgrade Unidecode, add text-unidecode as extra option", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2019-02-22T23:00:19Z", + "updated_at": "2019-02-25T23:29:32Z", + "closed_at": "2019-02-25T23:29:32Z", + "assignee": null, + "author_association": "OWNER", + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/71", + "html_url": "https://github.com/un33k/python-slugify/pull/71", + "diff_url": "https://github.com/un33k/python-slugify/pull/71.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/71.patch", + "merged_at": "2019-02-25T23:29:32Z" + }, + "body": " - Allow install of text-unidecode as extra. \"pip install python-slugify[text-unidecode]\"\r\n - Upgrade Unidecode\r\n", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/71/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/71/timeline", + "performed_via_github_app": null, + "state_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/72", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/72/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/72/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/72/events", + "html_url": "https://github.com/un33k/python-slugify/pull/72", + "id": 414366712, + "node_id": "MDExOlB1bGxSZXF1ZXN0MjU2MDkzNjUw", + "number": 72, + "title": "Optional Extra Requirements", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2019-02-26T00:04:18Z", + "updated_at": "2019-02-26T14:44:27Z", + "closed_at": "2019-02-26T14:44:26Z", + "assignee": null, + "author_association": "OWNER", + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/72", + "html_url": "https://github.com/un33k/python-slugify/pull/72", + "diff_url": "https://github.com/un33k/python-slugify/pull/72.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/72.patch", + "merged_at": "2019-02-26T14:44:26Z" + }, + "body": "Add extra requirement\r\nRemove old requirement file.s", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/72/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/72/timeline", + "performed_via_github_app": null, + "state_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/73", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/73/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/73/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/73/events", + "html_url": "https://github.com/un33k/python-slugify/pull/73", + "id": 416535285, + "node_id": "MDExOlB1bGxSZXF1ZXN0MjU3NzQ5MTM2", + "number": 73, + "title": "Promote text-unidecode to primary decoding api", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 2, + "created_at": "2019-03-03T16:39:00Z", + "updated_at": "2019-03-03T17:40:57Z", + "closed_at": "2019-03-03T17:40:57Z", + "assignee": null, + "author_association": "OWNER", + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/73", + "html_url": "https://github.com/un33k/python-slugify/pull/73", + "diff_url": "https://github.com/un33k/python-slugify/pull/73.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/73.patch", + "merged_at": "2019-03-03T17:40:57Z" + }, + "body": "- Upgrade deps\r\n- Use text-decode as primary decoder\r\n- Clean up", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/73/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/73/timeline", + "performed_via_github_app": null, + "state_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/74", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/74/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/74/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/74/events", + "html_url": "https://github.com/un33k/python-slugify/pull/74", + "id": 419766364, + "node_id": "MDExOlB1bGxSZXF1ZXN0MjYwMTk0OTEx", + "number": 74, + "title": "MANIFEST.in: Add test.py to sdist", + "user": { + "login": "jayvdb", + "id": 15092, + "node_id": "MDQ6VXNlcjE1MDky", + "avatar_url": "https://avatars.githubusercontent.com/u/15092?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/jayvdb", + "html_url": "https://github.com/jayvdb", + "followers_url": "https://api.github.com/users/jayvdb/followers", + "following_url": "https://api.github.com/users/jayvdb/following{/other_user}", + "gists_url": "https://api.github.com/users/jayvdb/gists{/gist_id}", + "starred_url": "https://api.github.com/users/jayvdb/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/jayvdb/subscriptions", + "organizations_url": "https://api.github.com/users/jayvdb/orgs", + "repos_url": "https://api.github.com/users/jayvdb/repos", + "events_url": "https://api.github.com/users/jayvdb/events{/privacy}", + "received_events_url": "https://api.github.com/users/jayvdb/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 6, + "created_at": "2019-03-12T02:06:29Z", + "updated_at": "2019-03-26T04:38:38Z", + "closed_at": "2019-03-25T22:21:42Z", + "assignee": null, + "author_association": "CONTRIBUTOR", + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/74", + "html_url": "https://github.com/un33k/python-slugify/pull/74", + "diff_url": "https://github.com/un33k/python-slugify/pull/74.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/74.patch", + "merged_at": "2019-03-25T22:21:42Z" + }, + "body": "", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/74/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/74/timeline", + "performed_via_github_app": null, + "state_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/75", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/75/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/75/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/75/events", + "html_url": "https://github.com/un33k/python-slugify/pull/75", + "id": 427353853, + "node_id": "MDExOlB1bGxSZXF1ZXN0MjY1OTg1NTY4", + "number": 75, + "title": "Test against Python 3.7", + "user": { + "login": "sloria", + "id": 2379650, + "node_id": "MDQ6VXNlcjIzNzk2NTA=", + "avatar_url": "https://avatars.githubusercontent.com/u/2379650?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/sloria", + "html_url": "https://github.com/sloria", + "followers_url": "https://api.github.com/users/sloria/followers", + "following_url": "https://api.github.com/users/sloria/following{/other_user}", + "gists_url": "https://api.github.com/users/sloria/gists{/gist_id}", + "starred_url": "https://api.github.com/users/sloria/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/sloria/subscriptions", + "organizations_url": "https://api.github.com/users/sloria/orgs", + "repos_url": "https://api.github.com/users/sloria/repos", + "events_url": "https://api.github.com/users/sloria/events{/privacy}", + "received_events_url": "https://api.github.com/users/sloria/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 2, + "created_at": "2019-03-31T03:35:16Z", + "updated_at": "2019-03-31T13:43:39Z", + "closed_at": "2019-03-31T13:43:39Z", + "assignee": null, + "author_association": "CONTRIBUTOR", + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/75", + "html_url": "https://github.com/un33k/python-slugify/pull/75", + "diff_url": "https://github.com/un33k/python-slugify/pull/75.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/75.patch", + "merged_at": "2019-03-31T13:43:39Z" + }, + "body": "Also, remove `sudo: false` because TravisCI has\r\nmigrated to their VM-based infrastructure:\r\n\r\nhttps://blog.travis-ci.com/2018-11-19-required-linux-infrastructure-migration", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/75/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/75/timeline", + "performed_via_github_app": null, + "state_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/76", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/76/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/76/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/76/events", + "html_url": "https://github.com/un33k/python-slugify/pull/76", + "id": 427355241, + "node_id": "MDExOlB1bGxSZXF1ZXN0MjY1OTg2NDcz", + "number": 76, + "title": "Add UniqueSlugify for generating unique slugs", + "user": { + "login": "sloria", + "id": 2379650, + "node_id": "MDQ6VXNlcjIzNzk2NTA=", + "avatar_url": "https://avatars.githubusercontent.com/u/2379650?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/sloria", + "html_url": "https://github.com/sloria", + "followers_url": "https://api.github.com/users/sloria/followers", + "following_url": "https://api.github.com/users/sloria/following{/other_user}", + "gists_url": "https://api.github.com/users/sloria/gists{/gist_id}", + "starred_url": "https://api.github.com/users/sloria/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/sloria/subscriptions", + "organizations_url": "https://api.github.com/users/sloria/orgs", + "repos_url": "https://api.github.com/users/sloria/repos", + "events_url": "https://api.github.com/users/sloria/events{/privacy}", + "received_events_url": "https://api.github.com/users/sloria/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 5, + "created_at": "2019-03-31T04:01:01Z", + "updated_at": "2019-03-31T15:54:41Z", + "closed_at": "2019-03-31T13:46:26Z", + "assignee": null, + "author_association": "CONTRIBUTOR", + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/76", + "html_url": "https://github.com/un33k/python-slugify/pull/76", + "diff_url": "https://github.com/un33k/python-slugify/pull/76.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/76.patch", + "merged_at": null + }, + "body": "", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/76/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/76/timeline", + "performed_via_github_app": null, + "state_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/77", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/77/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/77/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/77/events", + "html_url": "https://github.com/un33k/python-slugify/pull/77", + "id": 427401010, + "node_id": "MDExOlB1bGxSZXF1ZXN0MjY2MDE2NzI4", + "number": 77, + "title": "Add Python 3.7 Support", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2019-03-31T14:11:28Z", + "updated_at": "2019-03-31T14:15:21Z", + "closed_at": "2019-03-31T14:14:44Z", + "assignee": null, + "author_association": "OWNER", + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/77", + "html_url": "https://github.com/un33k/python-slugify/pull/77", + "diff_url": "https://github.com/un33k/python-slugify/pull/77.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/77.patch", + "merged_at": "2019-03-31T14:14:44Z" + }, + "body": "Add Py 3.7 support\r\nAdd Pypy2.7 support\r\nAdd pypy3.5 support\r\nUpdate travis.yml", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/77/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/77/timeline", + "performed_via_github_app": null, + "state_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/78", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/78/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/78/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/78/events", + "html_url": "https://github.com/un33k/python-slugify/issues/78", + "id": 444808308, + "node_id": "MDU6SXNzdWU0NDQ4MDgzMDg=", + "number": 78, + "title": "support utf-8", + "user": { + "login": "mosi-kha", + "id": 35611016, + "node_id": "MDQ6VXNlcjM1NjExMDE2", + "avatar_url": "https://avatars.githubusercontent.com/u/35611016?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/mosi-kha", + "html_url": "https://github.com/mosi-kha", + "followers_url": "https://api.github.com/users/mosi-kha/followers", + "following_url": "https://api.github.com/users/mosi-kha/following{/other_user}", + "gists_url": "https://api.github.com/users/mosi-kha/gists{/gist_id}", + "starred_url": "https://api.github.com/users/mosi-kha/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/mosi-kha/subscriptions", + "organizations_url": "https://api.github.com/users/mosi-kha/orgs", + "repos_url": "https://api.github.com/users/mosi-kha/repos", + "events_url": "https://api.github.com/users/mosi-kha/events{/privacy}", + "received_events_url": "https://api.github.com/users/mosi-kha/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2019-05-16T07:58:18Z", + "updated_at": "2019-05-16T13:07:54Z", + "closed_at": "2019-05-16T13:07:54Z", + "assignee": null, + "author_association": "NONE", + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "hi \r\nplease add support `utf-8` Unicode, for example, Persian language ", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/78/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/78/timeline", + "performed_via_github_app": null, + "state_reason": "completed", + "pinned_comment": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/79", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/79/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/79/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/79/events", + "html_url": "https://github.com/un33k/python-slugify/issues/79", + "id": 460242473, + "node_id": "MDU6SXNzdWU0NjAyNDI0NzM=", + "number": 79, + "title": "HTML entity decoding cannot be disabled", + "user": { + "login": "MartinFalatic", + "id": 6424469, + "node_id": "MDQ6VXNlcjY0MjQ0Njk=", + "avatar_url": "https://avatars.githubusercontent.com/u/6424469?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/MartinFalatic", + "html_url": "https://github.com/MartinFalatic", + "followers_url": "https://api.github.com/users/MartinFalatic/followers", + "following_url": "https://api.github.com/users/MartinFalatic/following{/other_user}", + "gists_url": "https://api.github.com/users/MartinFalatic/gists{/gist_id}", + "starred_url": "https://api.github.com/users/MartinFalatic/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/MartinFalatic/subscriptions", + "organizations_url": "https://api.github.com/users/MartinFalatic/orgs", + "repos_url": "https://api.github.com/users/MartinFalatic/repos", + "events_url": "https://api.github.com/users/MartinFalatic/events{/privacy}", + "received_events_url": "https://api.github.com/users/MartinFalatic/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 11, + "created_at": "2019-06-25T06:48:07Z", + "updated_at": "2019-07-03T00:40:00Z", + "closed_at": "2019-07-02T18:30:47Z", + "assignee": null, + "author_association": "NONE", + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "I'm trying a very simple test as we look at moving from the outdated `awesome-slugify` to `python-slugify`. For backward compatibility reasons we are trying to match its present behavior.\r\n\r\nFor the data involved this can be accomplished after jumping through a few small hoops, but not all of them can be accomplished within `python-slugify` using the options available.\r\n\r\nOne hoop is trivial (you can't seem to force the conversion of `,` to `-` short of pre-replacing the comma with something else.)\r\n\r\nHowever, the other hoop is more odd: I can't seem to disable HTML entity decoding.\r\n\r\n In [1]: slugify.slugify('1-209-3-Ž', entities=True)\r\n Out[1]: '1-209-3-z'\r\n\r\n In [2]: slugify.slugify('1-209-3-Ž', entities=False)\r\n Out[2]: '1-209-3-z'\r\n\r\n**If `entities` isn't what mediates this conversion, what does, and is it configurable?** Currently (like commas) replacing `#&` with something like `_` seems to be the only way to disable that behavior when necessary.\r\n", + "closed_by": { + "login": "MartinFalatic", + "id": 6424469, + "node_id": "MDQ6VXNlcjY0MjQ0Njk=", + "avatar_url": "https://avatars.githubusercontent.com/u/6424469?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/MartinFalatic", + "html_url": "https://github.com/MartinFalatic", + "followers_url": "https://api.github.com/users/MartinFalatic/followers", + "following_url": "https://api.github.com/users/MartinFalatic/following{/other_user}", + "gists_url": "https://api.github.com/users/MartinFalatic/gists{/gist_id}", + "starred_url": "https://api.github.com/users/MartinFalatic/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/MartinFalatic/subscriptions", + "organizations_url": "https://api.github.com/users/MartinFalatic/orgs", + "repos_url": "https://api.github.com/users/MartinFalatic/repos", + "events_url": "https://api.github.com/users/MartinFalatic/events{/privacy}", + "received_events_url": "https://api.github.com/users/MartinFalatic/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/79/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/79/timeline", + "performed_via_github_app": null, + "state_reason": "completed", + "pinned_comment": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/80", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/80/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/80/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/80/events", + "html_url": "https://github.com/un33k/python-slugify/issues/80", + "id": 470811174, + "node_id": "MDU6SXNzdWU0NzA4MTExNzQ=", + "number": 80, + "title": "Documentation missing", + "user": { + "login": "shakeyourbunny", + "id": 5352403, + "node_id": "MDQ6VXNlcjUzNTI0MDM=", + "avatar_url": "https://avatars.githubusercontent.com/u/5352403?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/shakeyourbunny", + "html_url": "https://github.com/shakeyourbunny", + "followers_url": "https://api.github.com/users/shakeyourbunny/followers", + "following_url": "https://api.github.com/users/shakeyourbunny/following{/other_user}", + "gists_url": "https://api.github.com/users/shakeyourbunny/gists{/gist_id}", + "starred_url": "https://api.github.com/users/shakeyourbunny/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/shakeyourbunny/subscriptions", + "organizations_url": "https://api.github.com/users/shakeyourbunny/orgs", + "repos_url": "https://api.github.com/users/shakeyourbunny/repos", + "events_url": "https://api.github.com/users/shakeyourbunny/events{/privacy}", + "received_events_url": "https://api.github.com/users/shakeyourbunny/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2019-07-21T18:37:18Z", + "updated_at": "2019-07-28T03:04:14Z", + "closed_at": "2019-07-28T03:04:14Z", + "assignee": null, + "author_association": "NONE", + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "Hello,\r\n\r\ncan you make a breakdown what option exactly does and not only provide some sample examples for usage?\r\n\r\nThank you.", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/80/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/80/timeline", + "performed_via_github_app": null, + "state_reason": "completed", + "pinned_comment": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/81", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/81/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/81/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/81/events", + "html_url": "https://github.com/un33k/python-slugify/issues/81", + "id": 473625206, + "node_id": "MDU6SXNzdWU0NzM2MjUyMDY=", + "number": 81, + "title": "Name conflict with other slugify package", + "user": { + "login": "EmileSonneveld", + "id": 2298426, + "node_id": "MDQ6VXNlcjIyOTg0MjY=", + "avatar_url": "https://avatars.githubusercontent.com/u/2298426?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/EmileSonneveld", + "html_url": "https://github.com/EmileSonneveld", + "followers_url": "https://api.github.com/users/EmileSonneveld/followers", + "following_url": "https://api.github.com/users/EmileSonneveld/following{/other_user}", + "gists_url": "https://api.github.com/users/EmileSonneveld/gists{/gist_id}", + "starred_url": "https://api.github.com/users/EmileSonneveld/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/EmileSonneveld/subscriptions", + "organizations_url": "https://api.github.com/users/EmileSonneveld/orgs", + "repos_url": "https://api.github.com/users/EmileSonneveld/repos", + "events_url": "https://api.github.com/users/EmileSonneveld/events{/privacy}", + "received_events_url": "https://api.github.com/users/EmileSonneveld/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": true, + "assignees": [], + "milestone": null, + "comments": 7, + "created_at": "2019-07-27T10:34:15Z", + "updated_at": "2019-10-11T13:29:38Z", + "closed_at": "2019-07-28T01:47:13Z", + "assignee": null, + "author_association": "NONE", + "active_lock_reason": "resolved", + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "When working on the following code:\r\n```python\r\nfrom slugify import slugify\r\nfname = slugify(\"cc / loc\") + \".png\"\r\n```\r\nMy IDE (PyCharm 2018.2.5) will suggest to automatically download a package, but the wrong one. And this results in an error: ```NameError: name 'unicode' is not defined```\r\n\r\nThe namespace of this package should be changed, or the half implemented package should be removed from PIP.\r\n\r\nA tool like this should work out of the box.", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/81/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/81/timeline", + "performed_via_github_app": null, + "state_reason": "completed", + "pinned_comment": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/82", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/82/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/82/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/82/events", + "html_url": "https://github.com/un33k/python-slugify/issues/82", + "id": 495303365, + "node_id": "MDU6SXNzdWU0OTUzMDMzNjU=", + "number": 82, + "title": "text-unidecode is bumped up to 1.3 and pipenv install breaks.", + "user": { + "login": "rollue", + "id": 16588135, + "node_id": "MDQ6VXNlcjE2NTg4MTM1", + "avatar_url": "https://avatars.githubusercontent.com/u/16588135?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/rollue", + "html_url": "https://github.com/rollue", + "followers_url": "https://api.github.com/users/rollue/followers", + "following_url": "https://api.github.com/users/rollue/following{/other_user}", + "gists_url": "https://api.github.com/users/rollue/gists{/gist_id}", + "starred_url": "https://api.github.com/users/rollue/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/rollue/subscriptions", + "organizations_url": "https://api.github.com/users/rollue/orgs", + "repos_url": "https://api.github.com/users/rollue/repos", + "events_url": "https://api.github.com/users/rollue/events{/privacy}", + "received_events_url": "https://api.github.com/users/rollue/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2019-09-18T15:34:29Z", + "updated_at": "2019-09-19T15:13:38Z", + "closed_at": "2019-09-19T15:13:38Z", + "assignee": null, + "author_association": "NONE", + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "It seems python-slugify's dependency is fixed to text-unicode 1.2.\r\nSo I think you may need to fix this. \r\n", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/82/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/82/timeline", + "performed_via_github_app": null, + "state_reason": "completed", + "pinned_comment": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/83", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/83/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/83/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/83/events", + "html_url": "https://github.com/un33k/python-slugify/pull/83", + "id": 495686744, + "node_id": "MDExOlB1bGxSZXF1ZXN0MzE5MTg0OTA2", + "number": 83, + "title": "BF(dependencies)| Bump `text_unidecode` version", + "user": { + "login": "koolfunky", + "id": 14309762, + "node_id": "MDQ6VXNlcjE0MzA5NzYy", + "avatar_url": "https://avatars.githubusercontent.com/u/14309762?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/koolfunky", + "html_url": "https://github.com/koolfunky", + "followers_url": "https://api.github.com/users/koolfunky/followers", + "following_url": "https://api.github.com/users/koolfunky/following{/other_user}", + "gists_url": "https://api.github.com/users/koolfunky/gists{/gist_id}", + "starred_url": "https://api.github.com/users/koolfunky/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/koolfunky/subscriptions", + "organizations_url": "https://api.github.com/users/koolfunky/orgs", + "repos_url": "https://api.github.com/users/koolfunky/repos", + "events_url": "https://api.github.com/users/koolfunky/events{/privacy}", + "received_events_url": "https://api.github.com/users/koolfunky/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 5, + "created_at": "2019-09-19T09:39:05Z", + "updated_at": "2019-09-20T16:49:58Z", + "closed_at": "2019-09-19T15:12:08Z", + "assignee": null, + "author_association": "CONTRIBUTOR", + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/83", + "html_url": "https://github.com/un33k/python-slugify/pull/83", + "diff_url": "https://github.com/un33k/python-slugify/pull/83.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/83.patch", + "merged_at": "2019-09-19T15:12:08Z" + }, + "body": "1.2 -> 1.3", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/83/reactions", + "total_count": 2, + "+1": 2, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/83/timeline", + "performed_via_github_app": null, + "state_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/84", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/84/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/84/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/84/events", + "html_url": "https://github.com/un33k/python-slugify/pull/84", + "id": 496302745, + "node_id": "MDExOlB1bGxSZXF1ZXN0MzE5NjgxNTgw", + "number": 84, + "title": "bumped dependency text-unidecode to v1.3", + "user": { + "login": "VKen", + "id": 124760, + "node_id": "MDQ6VXNlcjEyNDc2MA==", + "avatar_url": "https://avatars.githubusercontent.com/u/124760?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/VKen", + "html_url": "https://github.com/VKen", + "followers_url": "https://api.github.com/users/VKen/followers", + "following_url": "https://api.github.com/users/VKen/following{/other_user}", + "gists_url": "https://api.github.com/users/VKen/gists{/gist_id}", + "starred_url": "https://api.github.com/users/VKen/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/VKen/subscriptions", + "organizations_url": "https://api.github.com/users/VKen/orgs", + "repos_url": "https://api.github.com/users/VKen/repos", + "events_url": "https://api.github.com/users/VKen/events{/privacy}", + "received_events_url": "https://api.github.com/users/VKen/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 4, + "created_at": "2019-09-20T11:36:57Z", + "updated_at": "2019-09-21T00:49:41Z", + "closed_at": "2019-09-20T16:44:08Z", + "assignee": null, + "author_association": "NONE", + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/84", + "html_url": "https://github.com/un33k/python-slugify/pull/84", + "diff_url": "https://github.com/un33k/python-slugify/pull/84.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/84.patch", + "merged_at": null + }, + "body": "Hi, I've enjoyed using this library.\r\n\r\nRecently, there's a version update from the text-unidecode dependency to version v1.3\r\nhttps://github.com/kmike/text-unidecode/\r\n\r\nI am also using faker https://github.com/joke2k/faker as part of my dev environment, and they have updated to using text-unidecode v1.3\r\n\r\nThis causes a clash in python-slugify's dependency text-unidecode , needing `text-unidecode==1.2` VS faker needing `text-unidecode==1.3`.\r\n\r\nI updated the dependency requirement to v1.3, and ran `python test.py`. All tests passed.\r\n\r\nCheers,\r\nVKen", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/84/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/84/timeline", + "performed_via_github_app": null, + "state_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/85", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/85/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/85/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/85/events", + "html_url": "https://github.com/un33k/python-slugify/issues/85", + "id": 503324241, + "node_id": "MDU6SXNzdWU1MDMzMjQyNDE=", + "number": 85, + "title": "German Umlaut support", + "user": { + "login": "TobitRE", + "id": 4648804, + "node_id": "MDQ6VXNlcjQ2NDg4MDQ=", + "avatar_url": "https://avatars.githubusercontent.com/u/4648804?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TobitRE", + "html_url": "https://github.com/TobitRE", + "followers_url": "https://api.github.com/users/TobitRE/followers", + "following_url": "https://api.github.com/users/TobitRE/following{/other_user}", + "gists_url": "https://api.github.com/users/TobitRE/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TobitRE/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TobitRE/subscriptions", + "organizations_url": "https://api.github.com/users/TobitRE/orgs", + "repos_url": "https://api.github.com/users/TobitRE/repos", + "events_url": "https://api.github.com/users/TobitRE/events{/privacy}", + "received_events_url": "https://api.github.com/users/TobitRE/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 2, + "created_at": "2019-10-07T09:11:12Z", + "updated_at": "2021-10-12T18:29:33Z", + "closed_at": "2019-10-10T22:20:10Z", + "assignee": null, + "author_association": "NONE", + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "It would be great if slugify support German umlaut like\r\n\r\n`slugify_de('ÜBER Über slugify') # UEBER-Ueber-slugify`\r\n\r\n[awesome-slugify](https://github.com/voronind/awesome-slugify) does a great job but the development hass been stoped. ", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/85/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/85/timeline", + "performed_via_github_app": null, + "state_reason": "completed", + "pinned_comment": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/86", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/86/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/86/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/86/events", + "html_url": "https://github.com/un33k/python-slugify/issues/86", + "id": 505860108, + "node_id": "MDU6SXNzdWU1MDU4NjAxMDg=", + "number": 86, + "title": "What are the few gotchas like when migrating from other packages, etc.", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 7, + "created_at": "2019-10-11T13:41:00Z", + "updated_at": "2019-10-20T17:27:25Z", + "closed_at": "2019-10-20T17:27:25Z", + "assignee": null, + "author_association": "OWNER", + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "Gotchas ... \r\n\r\n#### Migrating form `awesome-slugify` \r\n- Entity decoding is fully disabled only if you specify all three options (entities=False, hexadecimal=False, decimal=False) (https://github.com/un33k/python-slugify/issues/79)\r\n", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/86/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/86/timeline", + "performed_via_github_app": null, + "state_reason": "completed", + "pinned_comment": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/87", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/87/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/87/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/87/events", + "html_url": "https://github.com/un33k/python-slugify/pull/87", + "id": 506355539, + "node_id": "MDExOlB1bGxSZXF1ZXN0MzI3NTc2Mjk3", + "number": 87, + "title": "Drop support for EOL Python 2.6 and 3.2-2.4", + "user": { + "login": "hugovk", + "id": 1324225, + "node_id": "MDQ6VXNlcjEzMjQyMjU=", + "avatar_url": "https://avatars.githubusercontent.com/u/1324225?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/hugovk", + "html_url": "https://github.com/hugovk", + "followers_url": "https://api.github.com/users/hugovk/followers", + "following_url": "https://api.github.com/users/hugovk/following{/other_user}", + "gists_url": "https://api.github.com/users/hugovk/gists{/gist_id}", + "starred_url": "https://api.github.com/users/hugovk/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/hugovk/subscriptions", + "organizations_url": "https://api.github.com/users/hugovk/orgs", + "repos_url": "https://api.github.com/users/hugovk/repos", + "events_url": "https://api.github.com/users/hugovk/events{/privacy}", + "received_events_url": "https://api.github.com/users/hugovk/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 5, + "created_at": "2019-10-13T17:39:55Z", + "updated_at": "2019-10-20T17:47:51Z", + "closed_at": "2019-10-14T21:11:14Z", + "assignee": null, + "author_association": "CONTRIBUTOR", + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/87", + "html_url": "https://github.com/un33k/python-slugify/pull/87", + "diff_url": "https://github.com/un33k/python-slugify/pull/87.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/87.patch", + "merged_at": "2019-10-14T21:11:14Z" + }, + "body": "Python 2.6 and 3.3 were removed in https://github.com/un33k/python-slugify/pull/63, so this removes their Trove classifiers.\r\n\r\nThis also:\r\n\r\n* Removes a duplicate test class\r\n\r\n* Upgrade Python syntax with [pyupgrade](https://github.com/asottile/pyupgrade)\r\n\r\n* Upgrade PyPy and PyPy3 (6.0.0 to 7.1.1) and test 3.8 beta on the CI\r\n\r\n* Add `python_requires` to help pip\r\n\r\n\r\n", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/87/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/87/timeline", + "performed_via_github_app": null, + "state_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/88", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/88/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/88/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/88/events", + "html_url": "https://github.com/un33k/python-slugify/pull/88", + "id": 509625808, + "node_id": "MDExOlB1bGxSZXF1ZXN0MzMwMTM4NjIy", + "number": 88, + "title": "Drop support for old python - cleanup - up version ", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2019-10-20T17:35:34Z", + "updated_at": "2019-10-20T17:47:49Z", + "closed_at": "2019-10-20T17:39:52Z", + "assignee": null, + "author_association": "OWNER", + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/88", + "html_url": "https://github.com/un33k/python-slugify/pull/88", + "diff_url": "https://github.com/un33k/python-slugify/pull/88.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/88.patch", + "merged_at": "2019-10-20T17:39:52Z" + }, + "body": "With version 4.0.0\r\n\r\n- Drop support for python 2.6 & < 3.4.5\r\n- Clean up \r\n- Up version ", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/88/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/88/timeline", + "performed_via_github_app": null, + "state_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/89", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/89/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/89/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/89/events", + "html_url": "https://github.com/un33k/python-slugify/pull/89", + "id": 509627497, + "node_id": "MDExOlB1bGxSZXF1ZXN0MzMwMTM5ODE3", + "number": 89, + "title": "README: Use SVG badge for consistency", + "user": { + "login": "hugovk", + "id": 1324225, + "node_id": "MDQ6VXNlcjEzMjQyMjU=", + "avatar_url": "https://avatars.githubusercontent.com/u/1324225?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/hugovk", + "html_url": "https://github.com/hugovk", + "followers_url": "https://api.github.com/users/hugovk/followers", + "following_url": "https://api.github.com/users/hugovk/following{/other_user}", + "gists_url": "https://api.github.com/users/hugovk/gists{/gist_id}", + "starred_url": "https://api.github.com/users/hugovk/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/hugovk/subscriptions", + "organizations_url": "https://api.github.com/users/hugovk/orgs", + "repos_url": "https://api.github.com/users/hugovk/repos", + "events_url": "https://api.github.com/users/hugovk/events{/privacy}", + "received_events_url": "https://api.github.com/users/hugovk/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2019-10-20T17:50:41Z", + "updated_at": "2019-11-09T22:10:59Z", + "closed_at": "2019-11-09T21:25:43Z", + "assignee": null, + "author_association": "CONTRIBUTOR", + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/89", + "html_url": "https://github.com/un33k/python-slugify/pull/89", + "diff_url": "https://github.com/un33k/python-slugify/pull/89.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/89.patch", + "merged_at": "2019-11-09T21:25:43Z" + }, + "body": "And HTTPS link.\r\n\r\nThe PNG looks a bit fuzzy on Retina screens:\r\n\r\n![image](https://user-images.githubusercontent.com/1324225/67163737-2cd20880-f37b-11e9-88c8-6409e1c2f1f9.png)\r\n", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/89/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/89/timeline", + "performed_via_github_app": null, + "state_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/90", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/90/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/90/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/90/events", + "html_url": "https://github.com/un33k/python-slugify/issues/90", + "id": 541824781, + "node_id": "MDU6SXNzdWU1NDE4MjQ3ODE=", + "number": 90, + "title": "Can I be sure that slug is urlsafe?", + "user": { + "login": "mvolfik", + "id": 31281386, + "node_id": "MDQ6VXNlcjMxMjgxMzg2", + "avatar_url": "https://avatars.githubusercontent.com/u/31281386?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/mvolfik", + "html_url": "https://github.com/mvolfik", + "followers_url": "https://api.github.com/users/mvolfik/followers", + "following_url": "https://api.github.com/users/mvolfik/following{/other_user}", + "gists_url": "https://api.github.com/users/mvolfik/gists{/gist_id}", + "starred_url": "https://api.github.com/users/mvolfik/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/mvolfik/subscriptions", + "organizations_url": "https://api.github.com/users/mvolfik/orgs", + "repos_url": "https://api.github.com/users/mvolfik/repos", + "events_url": "https://api.github.com/users/mvolfik/events{/privacy}", + "received_events_url": "https://api.github.com/users/mvolfik/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2019-12-23T16:39:15Z", + "updated_at": "2019-12-23T17:18:46Z", + "closed_at": "2019-12-23T17:18:46Z", + "assignee": null, + "author_association": "NONE", + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "I don't know the definition of slug, so I'd like to ask: is there some kind of guarantee (I know that the license says no guarantees and stuff, but some guarantee for normal human/developer) that the slug will be url-safe? Also this might be mentioned in the \"docs\" (readme)...", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/90/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/90/timeline", + "performed_via_github_app": null, + "state_reason": "completed", + "pinned_comment": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/91", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/91/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/91/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/91/events", + "html_url": "https://github.com/un33k/python-slugify/issues/91", + "id": 545797961, + "node_id": "MDU6SXNzdWU1NDU3OTc5NjE=", + "number": 91, + "title": "Issue with separator", + "user": { + "login": "ghost", + "id": 10137, + "node_id": "MDQ6VXNlcjEwMTM3", + "avatar_url": "https://avatars.githubusercontent.com/u/10137?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/ghost", + "html_url": "https://github.com/ghost", + "followers_url": "https://api.github.com/users/ghost/followers", + "following_url": "https://api.github.com/users/ghost/following{/other_user}", + "gists_url": "https://api.github.com/users/ghost/gists{/gist_id}", + "starred_url": "https://api.github.com/users/ghost/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/ghost/subscriptions", + "organizations_url": "https://api.github.com/users/ghost/orgs", + "repos_url": "https://api.github.com/users/ghost/repos", + "events_url": "https://api.github.com/users/ghost/events{/privacy}", + "received_events_url": "https://api.github.com/users/ghost/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": true, + "assignees": [], + "milestone": null, + "comments": 3, + "created_at": "2020-01-06T15:51:37Z", + "updated_at": "2020-01-07T13:16:45Z", + "closed_at": "2020-01-07T00:02:28Z", + "assignee": null, + "author_association": "NONE", + "active_lock_reason": "resolved", + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "In [2]: slugify(\"aaa bbb-ccc\") \r\nOut[2]: 'aaa-bbb-ccc'\r\n\r\nIn [3]: slugify(\"aaa bbb-ccc\", separator='.') \r\nOut[3]: 'aaa.bbb.ccc'\r\n\r\nI was expecting to get 'aaa.bbb-ccc'.\r\n\r\n", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/91/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/91/timeline", + "performed_via_github_app": null, + "state_reason": "completed", + "pinned_comment": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/92", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/92/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/92/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/92/events", + "html_url": "https://github.com/un33k/python-slugify/pull/92", + "id": 580991561, + "node_id": "MDExOlB1bGxSZXF1ZXN0Mzg4MTE0ODg1", + "number": 92, + "title": "Create command line tool that can set all parameters", + "user": { + "login": "jdevera", + "id": 73069, + "node_id": "MDQ6VXNlcjczMDY5", + "avatar_url": "https://avatars.githubusercontent.com/u/73069?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/jdevera", + "html_url": "https://github.com/jdevera", + "followers_url": "https://api.github.com/users/jdevera/followers", + "following_url": "https://api.github.com/users/jdevera/following{/other_user}", + "gists_url": "https://api.github.com/users/jdevera/gists{/gist_id}", + "starred_url": "https://api.github.com/users/jdevera/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/jdevera/subscriptions", + "organizations_url": "https://api.github.com/users/jdevera/orgs", + "repos_url": "https://api.github.com/users/jdevera/repos", + "events_url": "https://api.github.com/users/jdevera/events{/privacy}", + "received_events_url": "https://api.github.com/users/jdevera/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 5, + "created_at": "2020-03-14T02:20:56Z", + "updated_at": "2020-04-09T15:42:22Z", + "closed_at": "2020-04-09T15:41:42Z", + "assignee": null, + "author_association": "COLLABORATOR", + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/92", + "html_url": "https://github.com/un33k/python-slugify/pull/92", + "diff_url": "https://github.com/un33k/python-slugify/pull/92.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/92.patch", + "merged_at": "2020-04-09T15:41:42Z" + }, + "body": "I was in need of a CLI tool that did what the original _entrypoint_ did but with some specific parameters different from defaults. So I decided to make it available for anybody and contribute it back.\r\n\r\nThis PR adds a `slugify` command that can take as arguments any of the parameters of the function with the same name.\r\n\r\nI've added tests that verify that different combinations of command-line arguments result in the expected parameters passed to the function. They do not re-test the functionality.", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/92/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/92/timeline", + "performed_via_github_app": null, + "state_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/93", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/93/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/93/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/93/events", + "html_url": "https://github.com/un33k/python-slugify/issues/93", + "id": 675322607, + "node_id": "MDU6SXNzdWU2NzUzMjI2MDc=", + "number": 93, + "title": "ERROR: Failed building wheel for python-slugify", + "user": { + "login": "akani-mashaba", + "id": 68352386, + "node_id": "MDQ6VXNlcjY4MzUyMzg2", + "avatar_url": "https://avatars.githubusercontent.com/u/68352386?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/akani-mashaba", + "html_url": "https://github.com/akani-mashaba", + "followers_url": "https://api.github.com/users/akani-mashaba/followers", + "following_url": "https://api.github.com/users/akani-mashaba/following{/other_user}", + "gists_url": "https://api.github.com/users/akani-mashaba/gists{/gist_id}", + "starred_url": "https://api.github.com/users/akani-mashaba/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/akani-mashaba/subscriptions", + "organizations_url": "https://api.github.com/users/akani-mashaba/orgs", + "repos_url": "https://api.github.com/users/akani-mashaba/repos", + "events_url": "https://api.github.com/users/akani-mashaba/events{/privacy}", + "received_events_url": "https://api.github.com/users/akani-mashaba/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 0, + "created_at": "2020-08-07T22:37:07Z", + "updated_at": "2020-08-07T22:42:23Z", + "closed_at": "2020-08-07T22:42:23Z", + "assignee": null, + "author_association": "NONE", + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "pip install python-slugify\r\nCollecting python-slugify\r\n Downloading python-slugify-4.0.1.tar.gz (11 kB)\r\nCollecting text-unidecode>=1.3\r\n Downloading text_unidecode-1.3-py2.py3-none-any.whl (78 kB)\r\n |████████████████████████████████| 78 kB 110 kB/s \r\nBuilding wheels for collected packages: python-slugify\r\n Building wheel for python-slugify (setup.py) ... error\r\n ERROR: Command errored out with exit status 1:\r\n command: '/home/admin/Documents/GitHub/The Blog/envroment/bin/python' -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '\"'\"'/tmp/pip-install-4483in9n/python-slugify/setup.py'\"'\"'; __file__='\"'\"'/tmp/pip-install-4483in9n/python-slugify/setup.py'\"'\"';f=getattr(tokenize, '\"'\"'open'\"'\"', open)(__file__);code=f.read().replace('\"'\"'\\r\\n'\"'\"', '\"'\"'\\n'\"'\"');f.close();exec(compile(code, __file__, '\"'\"'exec'\"'\"'))' bdist_wheel -d /tmp/pip-wheel-t_kn76sm\r\n cwd: /tmp/pip-install-4483in9n/python-slugify/\r\n Complete output (6 lines):\r\n usage: setup.py [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...]\r\n or: setup.py --help [cmd1 cmd2 ...]\r\n or: setup.py --help-commands\r\n or: setup.py cmd --help\r\n \r\n error: invalid command 'bdist_wheel'\r\n ----------------------------------------\r\n ERROR: Failed building wheel for python-slugify\r\n", + "closed_by": { + "login": "akani-mashaba", + "id": 68352386, + "node_id": "MDQ6VXNlcjY4MzUyMzg2", + "avatar_url": "https://avatars.githubusercontent.com/u/68352386?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/akani-mashaba", + "html_url": "https://github.com/akani-mashaba", + "followers_url": "https://api.github.com/users/akani-mashaba/followers", + "following_url": "https://api.github.com/users/akani-mashaba/following{/other_user}", + "gists_url": "https://api.github.com/users/akani-mashaba/gists{/gist_id}", + "starred_url": "https://api.github.com/users/akani-mashaba/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/akani-mashaba/subscriptions", + "organizations_url": "https://api.github.com/users/akani-mashaba/orgs", + "repos_url": "https://api.github.com/users/akani-mashaba/repos", + "events_url": "https://api.github.com/users/akani-mashaba/events{/privacy}", + "received_events_url": "https://api.github.com/users/akani-mashaba/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/93/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/93/timeline", + "performed_via_github_app": null, + "state_reason": "completed", + "pinned_comment": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/94", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/94/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/94/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/94/events", + "html_url": "https://github.com/un33k/python-slugify/issues/94", + "id": 675673730, + "node_id": "MDU6SXNzdWU2NzU2NzM3MzA=", + "number": 94, + "title": "We cannot replace '-' before replacing ' ' by '-'", + "user": { + "login": "ghost", + "id": 10137, + "node_id": "MDQ6VXNlcjEwMTM3", + "avatar_url": "https://avatars.githubusercontent.com/u/10137?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/ghost", + "html_url": "https://github.com/ghost", + "followers_url": "https://api.github.com/users/ghost/followers", + "following_url": "https://api.github.com/users/ghost/following{/other_user}", + "gists_url": "https://api.github.com/users/ghost/gists{/gist_id}", + "starred_url": "https://api.github.com/users/ghost/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/ghost/subscriptions", + "organizations_url": "https://api.github.com/users/ghost/orgs", + "repos_url": "https://api.github.com/users/ghost/repos", + "events_url": "https://api.github.com/users/ghost/events{/privacy}", + "received_events_url": "https://api.github.com/users/ghost/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2020-08-09T10:13:27Z", + "updated_at": "2020-09-15T16:45:58Z", + "closed_at": "2020-09-15T16:45:58Z", + "assignee": null, + "author_association": "NONE", + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "I get something like this\r\n\r\n```\r\nslugify.slugify('Hola això és - * - = +', replacements=[['-','menys']])\r\n'holamenysaixomenysesmenysmenysmenysmenys'\r\n```\r\n\r\nWhile I expect something like this:\r\n```\r\nhola-aixo-es-menys-menys\r\n```\r\nbecause I want to replace '-' by 'menys' before replacing ' ' by '-'", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/94/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/94/timeline", + "performed_via_github_app": null, + "state_reason": "completed", + "pinned_comment": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/95", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/95/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/95/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/95/events", + "html_url": "https://github.com/un33k/python-slugify/issues/95", + "id": 679633343, + "node_id": "MDU6SXNzdWU2Nzk2MzMzNDM=", + "number": 95, + "title": "[fyi] stubs for python-slugify were submitted to typeshed", + "user": { + "login": "hauntsaninja", + "id": 12621235, + "node_id": "MDQ6VXNlcjEyNjIxMjM1", + "avatar_url": "https://avatars.githubusercontent.com/u/12621235?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/hauntsaninja", + "html_url": "https://github.com/hauntsaninja", + "followers_url": "https://api.github.com/users/hauntsaninja/followers", + "following_url": "https://api.github.com/users/hauntsaninja/following{/other_user}", + "gists_url": "https://api.github.com/users/hauntsaninja/gists{/gist_id}", + "starred_url": "https://api.github.com/users/hauntsaninja/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/hauntsaninja/subscriptions", + "organizations_url": "https://api.github.com/users/hauntsaninja/orgs", + "repos_url": "https://api.github.com/users/hauntsaninja/repos", + "events_url": "https://api.github.com/users/hauntsaninja/events{/privacy}", + "received_events_url": "https://api.github.com/users/hauntsaninja/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2020-08-15T19:57:54Z", + "updated_at": "2020-09-15T16:46:19Z", + "closed_at": "2020-09-15T16:46:19Z", + "assignee": null, + "author_association": "NONE", + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "Type stubs for this library were submitted to typeshed in https://github.com/python/typeshed/pull/4429\r\n\r\nYou don't need to take any action, but:\r\na) If you wish to include type stubs as part of your package, we're happy to transfer them to this repo (or potentially aid with the addition of inline types)\r\nb) If you want us to remove the stubs from typeshed, we will!", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/95/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/95/timeline", + "performed_via_github_app": null, + "state_reason": "completed", + "pinned_comment": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/96", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/96/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/96/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/96/events", + "html_url": "https://github.com/un33k/python-slugify/issues/96", + "id": 723021021, + "node_id": "MDU6SXNzdWU3MjMwMjEwMjE=", + "number": 96, + "title": "publish pre-build wheels (manylinux)", + "user": { + "login": "ssbarnea", + "id": 102495, + "node_id": "MDQ6VXNlcjEwMjQ5NQ==", + "avatar_url": "https://avatars.githubusercontent.com/u/102495?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/ssbarnea", + "html_url": "https://github.com/ssbarnea", + "followers_url": "https://api.github.com/users/ssbarnea/followers", + "following_url": "https://api.github.com/users/ssbarnea/following{/other_user}", + "gists_url": "https://api.github.com/users/ssbarnea/gists{/gist_id}", + "starred_url": "https://api.github.com/users/ssbarnea/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/ssbarnea/subscriptions", + "organizations_url": "https://api.github.com/users/ssbarnea/orgs", + "repos_url": "https://api.github.com/users/ssbarnea/repos", + "events_url": "https://api.github.com/users/ssbarnea/events{/privacy}", + "received_events_url": "https://api.github.com/users/ssbarnea/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 5, + "created_at": "2020-10-16T08:33:37Z", + "updated_at": "2021-01-18T04:35:09Z", + "closed_at": "2021-01-18T04:35:09Z", + "assignee": null, + "author_association": "NONE", + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "Installing python-slugify can takes ages as due to recompilation. It would prove very useful if pre-build wheels would also be published to pypi.\r\n\r\nAs a note, github actions can be used to produce binaries for almost any platform, including arm64. There is no need to cover all platforms, including linux and macos x64 would probably already cover most use case. Once the project has\r\n\r\nI am not yet sure if that is only a performance issue but even after 10mins, pip is still stuck trying to build it.\r\n```\r\nProcessing /Users/ssbarnea/Library/Caches/pip/wheels/11/94/81/312969455540cb0e6a773e5d68a73c14128bfdfd4a7969bb4f/python_slugify-4.0.0-py2.py3-none-any.whl\r\n```\r\n![](https://sbarnea.com/ss/Screen-Shot-2020-10-16-09-32-04.03.png)", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/96/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/96/timeline", + "performed_via_github_app": null, + "state_reason": "completed", + "pinned_comment": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/97", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/97/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/97/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/97/events", + "html_url": "https://github.com/un33k/python-slugify/issues/97", + "id": 731973928, + "node_id": "MDU6SXNzdWU3MzE5NzM5Mjg=", + "number": 97, + "title": "Can I keep consecutive \"-\" symbol?", + "user": { + "login": "laggardkernel", + "id": 12206611, + "node_id": "MDQ6VXNlcjEyMjA2NjEx", + "avatar_url": "https://avatars.githubusercontent.com/u/12206611?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/laggardkernel", + "html_url": "https://github.com/laggardkernel", + "followers_url": "https://api.github.com/users/laggardkernel/followers", + "following_url": "https://api.github.com/users/laggardkernel/following{/other_user}", + "gists_url": "https://api.github.com/users/laggardkernel/gists{/gist_id}", + "starred_url": "https://api.github.com/users/laggardkernel/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/laggardkernel/subscriptions", + "organizations_url": "https://api.github.com/users/laggardkernel/orgs", + "repos_url": "https://api.github.com/users/laggardkernel/repos", + "events_url": "https://api.github.com/users/laggardkernel/events{/privacy}", + "received_events_url": "https://api.github.com/users/laggardkernel/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2020-10-29T03:49:49Z", + "updated_at": "2020-11-02T07:20:26Z", + "closed_at": "2020-11-02T07:20:26Z", + "assignee": null, + "author_association": "NONE", + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "```\r\n>>> s\r\n'=--comfy-children-s-adult-diaper-skirt-shorts-2-in-1'\r\n\r\n>>> slugify(s)\r\n'comfy-children-s-adult-diaper-skirt-shorts-2-in-1'\r\n\r\n>>> slugify(s, regex_pattern = r'[^-=a-z0-9_]+')\r\n'=-comfy-children-s-adult-diaper-skirt-shorts-2-in-1'\r\n```\r\n\r\nSome of the content is already slugified, I wanna keep it untouched.", + "closed_by": { + "login": "laggardkernel", + "id": 12206611, + "node_id": "MDQ6VXNlcjEyMjA2NjEx", + "avatar_url": "https://avatars.githubusercontent.com/u/12206611?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/laggardkernel", + "html_url": "https://github.com/laggardkernel", + "followers_url": "https://api.github.com/users/laggardkernel/followers", + "following_url": "https://api.github.com/users/laggardkernel/following{/other_user}", + "gists_url": "https://api.github.com/users/laggardkernel/gists{/gist_id}", + "starred_url": "https://api.github.com/users/laggardkernel/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/laggardkernel/subscriptions", + "organizations_url": "https://api.github.com/users/laggardkernel/orgs", + "repos_url": "https://api.github.com/users/laggardkernel/repos", + "events_url": "https://api.github.com/users/laggardkernel/events{/privacy}", + "received_events_url": "https://api.github.com/users/laggardkernel/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/97/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/97/timeline", + "performed_via_github_app": null, + "state_reason": "completed", + "pinned_comment": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/98", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/98/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/98/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/98/events", + "html_url": "https://github.com/un33k/python-slugify/pull/98", + "id": 872991355, + "node_id": "MDExOlB1bGxSZXF1ZXN0NjI3ODQ1OTg0", + "number": 98, + "title": "Add a tox file to automatically run the tests and add Python 3.9", + "user": { + "login": "jon-betts", + "id": 7131143, + "node_id": "MDQ6VXNlcjcxMzExNDM=", + "avatar_url": "https://avatars.githubusercontent.com/u/7131143?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/jon-betts", + "html_url": "https://github.com/jon-betts", + "followers_url": "https://api.github.com/users/jon-betts/followers", + "following_url": "https://api.github.com/users/jon-betts/following{/other_user}", + "gists_url": "https://api.github.com/users/jon-betts/gists{/gist_id}", + "starred_url": "https://api.github.com/users/jon-betts/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/jon-betts/subscriptions", + "organizations_url": "https://api.github.com/users/jon-betts/orgs", + "repos_url": "https://api.github.com/users/jon-betts/repos", + "events_url": "https://api.github.com/users/jon-betts/events{/privacy}", + "received_events_url": "https://api.github.com/users/jon-betts/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 7, + "created_at": "2021-04-30T18:03:02Z", + "updated_at": "2021-05-05T17:47:45Z", + "closed_at": "2021-04-30T19:11:54Z", + "assignee": null, + "author_association": "CONTRIBUTOR", + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/98", + "html_url": "https://github.com/un33k/python-slugify/pull/98", + "diff_url": "https://github.com/un33k/python-slugify/pull/98.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/98.patch", + "merged_at": "2021-04-30T19:11:54Z" + }, + "body": "This adds a `tox.ini` config file to allow automatic running of the tests. This also:\r\n\r\n * Adds tox environments to run formatting and coverage\r\n * Advertises the existing Python 3.8 support which was being run against Travis\r\n * Also adds Python 3.9 support\r\n\r\n## Testing notes\r\n\r\nYou can run the tests against all of the versions of Python by running:\r\n\r\n * `pip install tox`\r\n * `tox`\r\n \r\nAfter much task running you should get a summary like this:\r\n\r\n```\r\n py39: commands succeeded\r\n py38: commands succeeded\r\n py37: commands succeeded\r\n py36: commands succeeded\r\n py35: commands succeeded\r\n py27: commands succeeded\r\n pypy: commands succeeded\r\n pypy3: commands succeeded\r\n congratulations :)\r\n```\r\n \r\nYou can also run the formatting and coverage through tox with:\r\n\r\n * `tox -e format`\r\n * `tox- e coverage`\r\n \r\nI'm not sure how far / if you'd like to transit these functions to `tox` at all, so for the moment they either replicate or call out to the external functions, but it might be a nice idea to swap it around and let `tox` manage all the dependencies and tasks etc. ", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/98/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/98/timeline", + "performed_via_github_app": null, + "state_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/99", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/99/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/99/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/99/events", + "html_url": "https://github.com/un33k/python-slugify/pull/99", + "id": 873719295, + "node_id": "MDExOlB1bGxSZXF1ZXN0NjI4NDYxNzgz", + "number": 99, + "title": "Update tox.ini", + "user": { + "login": "DmytroLitvinov", + "id": 16066485, + "node_id": "MDQ6VXNlcjE2MDY2NDg1", + "avatar_url": "https://avatars.githubusercontent.com/u/16066485?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/DmytroLitvinov", + "html_url": "https://github.com/DmytroLitvinov", + "followers_url": "https://api.github.com/users/DmytroLitvinov/followers", + "following_url": "https://api.github.com/users/DmytroLitvinov/following{/other_user}", + "gists_url": "https://api.github.com/users/DmytroLitvinov/gists{/gist_id}", + "starred_url": "https://api.github.com/users/DmytroLitvinov/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/DmytroLitvinov/subscriptions", + "organizations_url": "https://api.github.com/users/DmytroLitvinov/orgs", + "repos_url": "https://api.github.com/users/DmytroLitvinov/repos", + "events_url": "https://api.github.com/users/DmytroLitvinov/events{/privacy}", + "received_events_url": "https://api.github.com/users/DmytroLitvinov/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 2, + "created_at": "2021-05-01T16:46:05Z", + "updated_at": "2021-05-05T23:11:16Z", + "closed_at": "2021-05-05T23:11:16Z", + "assignee": null, + "author_association": "CONTRIBUTOR", + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/99", + "html_url": "https://github.com/un33k/python-slugify/pull/99", + "diff_url": "https://github.com/un33k/python-slugify/pull/99.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/99.patch", + "merged_at": "2021-05-05T23:11:16Z" + }, + "body": "Drop completly from tox.ini file Python3.5 for testing according to [CHANGELOG](https://github.com/un33k/python-slugify/blob/master/CHANGELOG.md#500).\r\nMore information about it at [commit which should drop Python 3.5](https://github.com/un33k/python-slugify/commit/319559cb43f239ac0d3bc7b975a78059bf4a1086)", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/99/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/99/timeline", + "performed_via_github_app": null, + "state_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/100", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/100/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/100/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/100/events", + "html_url": "https://github.com/un33k/python-slugify/pull/100", + "id": 873720296, + "node_id": "MDExOlB1bGxSZXF1ZXN0NjI4NDYyMzYw", + "number": 100, + "title": "Simplify python_requires", + "user": { + "login": "DmytroLitvinov", + "id": 16066485, + "node_id": "MDQ6VXNlcjE2MDY2NDg1", + "avatar_url": "https://avatars.githubusercontent.com/u/16066485?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/DmytroLitvinov", + "html_url": "https://github.com/DmytroLitvinov", + "followers_url": "https://api.github.com/users/DmytroLitvinov/followers", + "following_url": "https://api.github.com/users/DmytroLitvinov/following{/other_user}", + "gists_url": "https://api.github.com/users/DmytroLitvinov/gists{/gist_id}", + "starred_url": "https://api.github.com/users/DmytroLitvinov/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/DmytroLitvinov/subscriptions", + "organizations_url": "https://api.github.com/users/DmytroLitvinov/orgs", + "repos_url": "https://api.github.com/users/DmytroLitvinov/repos", + "events_url": "https://api.github.com/users/DmytroLitvinov/events{/privacy}", + "received_events_url": "https://api.github.com/users/DmytroLitvinov/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 2, + "created_at": "2021-05-01T16:50:22Z", + "updated_at": "2021-05-05T23:12:05Z", + "closed_at": "2021-05-05T23:12:05Z", + "assignee": null, + "author_association": "CONTRIBUTOR", + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/100", + "html_url": "https://github.com/un33k/python-slugify/pull/100", + "diff_url": "https://github.com/un33k/python-slugify/pull/100.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/100.patch", + "merged_at": "2021-05-05T23:12:05Z" + }, + "body": "Related for dropping support for Python 2 and Python <3.6\r\nMore information about it at [commit which should drop Python 3.5](https://github.com/un33k/python-slugify/commit/319559cb43f239ac0d3bc7b975a78059bf4a1086)", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/100/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/100/timeline", + "performed_via_github_app": null, + "state_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/101", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/101/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/101/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/101/events", + "html_url": "https://github.com/un33k/python-slugify/issues/101", + "id": 876945611, + "node_id": "MDU6SXNzdWU4NzY5NDU2MTE=", + "number": 101, + "title": "Looking for 1-2 contributors to de-risk the project as it is now used by 21k+ projects", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 4, + "created_at": "2021-05-05T23:50:59Z", + "updated_at": "2026-01-08T21:57:18Z", + "closed_at": "2026-01-08T21:57:18Z", + "assignee": null, + "author_association": "OWNER", + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "`python-slugify` is now used by [21k+](https://github.com/un33k/python-slugify/network/dependents?dependent_type=REPOSITORY) projects and many major companies. As such, it would be smart to have more than one person with admin access to the project, especially, in times of pandemics. \r\n\r\nIf you would like to contribute in de-risking `python-slugify` and posses solid python background, with keen interests in supporting open source projects for the benefit of many; - send me an email with links to a few python projects you are maintaining.\r\n\r\nI will select two individuals and promote them to admin level.\r\n\r\nI'd appreciate your consideration.\r\n\r\nVal\r\n", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/101/reactions", + "total_count": 10, + "+1": 10, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/101/timeline", + "performed_via_github_app": null, + "state_reason": "completed", + "pinned_comment": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/102", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/102/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/102/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/102/events", + "html_url": "https://github.com/un33k/python-slugify/pull/102", + "id": 885489560, + "node_id": "MDExOlB1bGxSZXF1ZXN0NjM4ODExNjEx", + "number": 102, + "title": "Add better typing for slugify.slugify", + "user": { + "login": "fahhem", + "id": 306100, + "node_id": "MDQ6VXNlcjMwNjEwMA==", + "avatar_url": "https://avatars.githubusercontent.com/u/306100?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/fahhem", + "html_url": "https://github.com/fahhem", + "followers_url": "https://api.github.com/users/fahhem/followers", + "following_url": "https://api.github.com/users/fahhem/following{/other_user}", + "gists_url": "https://api.github.com/users/fahhem/gists{/gist_id}", + "starred_url": "https://api.github.com/users/fahhem/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/fahhem/subscriptions", + "organizations_url": "https://api.github.com/users/fahhem/orgs", + "repos_url": "https://api.github.com/users/fahhem/repos", + "events_url": "https://api.github.com/users/fahhem/events{/privacy}", + "received_events_url": "https://api.github.com/users/fahhem/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 2, + "created_at": "2021-05-11T00:44:17Z", + "updated_at": "2021-06-04T07:04:12Z", + "closed_at": "2021-05-12T17:25:01Z", + "assignee": null, + "author_association": "CONTRIBUTOR", + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/102", + "html_url": "https://github.com/un33k/python-slugify/pull/102", + "diff_url": "https://github.com/un33k/python-slugify/pull/102.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/102.patch", + "merged_at": "2021-05-12T17:25:01Z" + }, + "body": "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]]`", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/102/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/102/timeline", + "performed_via_github_app": null, + "state_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/103", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/103/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/103/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/103/events", + "html_url": "https://github.com/un33k/python-slugify/issues/103", + "id": 894126334, + "node_id": "MDU6SXNzdWU4OTQxMjYzMzQ=", + "number": 103, + "title": "tag 5.0.2", + "user": { + "login": "alucryd", + "id": 1561084, + "node_id": "MDQ6VXNlcjE1NjEwODQ=", + "avatar_url": "https://avatars.githubusercontent.com/u/1561084?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/alucryd", + "html_url": "https://github.com/alucryd", + "followers_url": "https://api.github.com/users/alucryd/followers", + "following_url": "https://api.github.com/users/alucryd/following{/other_user}", + "gists_url": "https://api.github.com/users/alucryd/gists{/gist_id}", + "starred_url": "https://api.github.com/users/alucryd/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/alucryd/subscriptions", + "organizations_url": "https://api.github.com/users/alucryd/orgs", + "repos_url": "https://api.github.com/users/alucryd/repos", + "events_url": "https://api.github.com/users/alucryd/events{/privacy}", + "received_events_url": "https://api.github.com/users/alucryd/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 2, + "created_at": "2021-05-18T08:36:12Z", + "updated_at": "2021-06-07T19:36:35Z", + "closed_at": "2021-05-26T15:41:29Z", + "assignee": null, + "author_association": "NONE", + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "Hi there, could you please tag 5.0.2? The arch linux package pulls git tags instead of pulling from pypi. Thanks in advance.", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/103/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/103/timeline", + "performed_via_github_app": null, + "state_reason": "completed", + "pinned_comment": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/104", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/104/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/104/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/104/events", + "html_url": "https://github.com/un33k/python-slugify/pull/104", + "id": 901177710, + "node_id": "MDExOlB1bGxSZXF1ZXN0NjUyNjYyMDk5", + "number": 104, + "title": "Clarify `regex_pattern` docs.", + "user": { + "login": "yyyyyyyan", + "id": 24644216, + "node_id": "MDQ6VXNlcjI0NjQ0MjE2", + "avatar_url": "https://avatars.githubusercontent.com/u/24644216?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/yyyyyyyan", + "html_url": "https://github.com/yyyyyyyan", + "followers_url": "https://api.github.com/users/yyyyyyyan/followers", + "following_url": "https://api.github.com/users/yyyyyyyan/following{/other_user}", + "gists_url": "https://api.github.com/users/yyyyyyyan/gists{/gist_id}", + "starred_url": "https://api.github.com/users/yyyyyyyan/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/yyyyyyyan/subscriptions", + "organizations_url": "https://api.github.com/users/yyyyyyyan/orgs", + "repos_url": "https://api.github.com/users/yyyyyyyan/repos", + "events_url": "https://api.github.com/users/yyyyyyyan/events{/privacy}", + "received_events_url": "https://api.github.com/users/yyyyyyyan/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": true, + "assignees": [], + "milestone": null, + "comments": 3, + "created_at": "2021-05-25T18:11:56Z", + "updated_at": "2021-05-26T15:41:00Z", + "closed_at": "2021-05-25T18:48:18Z", + "assignee": null, + "author_association": "NONE", + "active_lock_reason": "too heated", + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/104", + "html_url": "https://github.com/un33k/python-slugify/pull/104", + "diff_url": "https://github.com/un33k/python-slugify/pull/104.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/104.patch", + "merged_at": null + }, + "body": "The description of `regex_pattern` parameter is the opposite of how the parameter actually works.\r\nThe docs say the regex is for allowed characters, but it's for disallowed characters instead.\r\n\r\nThis PR simply changes from \"allowed characters\" to \"disallowed characters\" in order to clarify the use of this parameter.", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/104/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/104/timeline", + "performed_via_github_app": null, + "state_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/105", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/105/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/105/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/105/events", + "html_url": "https://github.com/un33k/python-slugify/issues/105", + "id": 912269735, + "node_id": "MDU6SXNzdWU5MTIyNjk3MzU=", + "number": 105, + "title": "Empty slug for emojis", + "user": { + "login": "ShubhamKhandare", + "id": 15657552, + "node_id": "MDQ6VXNlcjE1NjU3NTUy", + "avatar_url": "https://avatars.githubusercontent.com/u/15657552?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/ShubhamKhandare", + "html_url": "https://github.com/ShubhamKhandare", + "followers_url": "https://api.github.com/users/ShubhamKhandare/followers", + "following_url": "https://api.github.com/users/ShubhamKhandare/following{/other_user}", + "gists_url": "https://api.github.com/users/ShubhamKhandare/gists{/gist_id}", + "starred_url": "https://api.github.com/users/ShubhamKhandare/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/ShubhamKhandare/subscriptions", + "organizations_url": "https://api.github.com/users/ShubhamKhandare/orgs", + "repos_url": "https://api.github.com/users/ShubhamKhandare/repos", + "events_url": "https://api.github.com/users/ShubhamKhandare/events{/privacy}", + "received_events_url": "https://api.github.com/users/ShubhamKhandare/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": true, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2021-06-05T13:42:49Z", + "updated_at": "2021-06-05T14:08:51Z", + "closed_at": "2021-06-05T14:08:30Z", + "assignee": null, + "author_association": "NONE", + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "```python\r\nIn [1]: from slugify import slugify\r\n\r\nIn [2]: slugify('રાજમાં')\r\nOut[2]: 'raajmaan'\r\n\r\nIn [3]: slugify('好こん안tวั')\r\nOut[3]: 'hao-konantwa'\r\n\r\nIn [4]: slugify('😀 😃 😄 😁 😆 😅 😂 🤣 🥲 ☺️ 😊 😇 🙂 🙃 😉')\r\nOut[4]: ''\r\n```\r\n\r\nFor emojis and other special characters, the slug is coming empty.", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/105/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/105/timeline", + "performed_via_github_app": null, + "state_reason": "completed", + "pinned_comment": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/106", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/106/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/106/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/106/events", + "html_url": "https://github.com/un33k/python-slugify/issues/106", + "id": 957307366, + "node_id": "MDU6SXNzdWU5NTczMDczNjY=", + "number": 106, + "title": "App crashes if album have some special characters", + "user": { + "login": "Devaniti", + "id": 16295437, + "node_id": "MDQ6VXNlcjE2Mjk1NDM3", + "avatar_url": "https://avatars.githubusercontent.com/u/16295437?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/Devaniti", + "html_url": "https://github.com/Devaniti", + "followers_url": "https://api.github.com/users/Devaniti/followers", + "following_url": "https://api.github.com/users/Devaniti/following{/other_user}", + "gists_url": "https://api.github.com/users/Devaniti/gists{/gist_id}", + "starred_url": "https://api.github.com/users/Devaniti/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/Devaniti/subscriptions", + "organizations_url": "https://api.github.com/users/Devaniti/orgs", + "repos_url": "https://api.github.com/users/Devaniti/repos", + "events_url": "https://api.github.com/users/Devaniti/events{/privacy}", + "received_events_url": "https://api.github.com/users/Devaniti/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 2, + "created_at": "2021-07-31T19:29:01Z", + "updated_at": "2021-07-31T19:32:36Z", + "closed_at": "2021-07-31T19:32:36Z", + "assignee": null, + "author_association": "NONE", + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "```\r\nDownloads: 10 items\r\nTraceback (most recent call last):\r\n File \"gparch_cli.py\", line 138, in \r\n account.download_all_albums()\r\n File \"C:\\Projects\\ArchiverForGooglePhotos\\gparch.py\", line 315, in download_all_albums\r\n self.download_single_album(album)\r\n File \"C:\\Projects\\ArchiverForGooglePhotos\\gparch.py\", line 362, in download_single_album\r\n album_path = auto_mkdir(self.albums_dir + \"/\" + album[\"title\"])\r\n File \"C:\\Projects\\ArchiverForGooglePhotos\\gparch.py\", line 73, in auto_mkdir\r\n os.mkdir(new_path)\r\nNotADirectoryError: [WinError 267] The directory name is invalid: 'C:\\\\Projects\\\\ArchiverForGooglePhotos/Albums/Demänovská Dolina: путешествие'\r\n```", + "closed_by": { + "login": "Devaniti", + "id": 16295437, + "node_id": "MDQ6VXNlcjE2Mjk1NDM3", + "avatar_url": "https://avatars.githubusercontent.com/u/16295437?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/Devaniti", + "html_url": "https://github.com/Devaniti", + "followers_url": "https://api.github.com/users/Devaniti/followers", + "following_url": "https://api.github.com/users/Devaniti/following{/other_user}", + "gists_url": "https://api.github.com/users/Devaniti/gists{/gist_id}", + "starred_url": "https://api.github.com/users/Devaniti/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/Devaniti/subscriptions", + "organizations_url": "https://api.github.com/users/Devaniti/orgs", + "repos_url": "https://api.github.com/users/Devaniti/repos", + "events_url": "https://api.github.com/users/Devaniti/events{/privacy}", + "received_events_url": "https://api.github.com/users/Devaniti/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/106/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/106/timeline", + "performed_via_github_app": null, + "state_reason": "completed", + "pinned_comment": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/107", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/107/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/107/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/107/events", + "html_url": "https://github.com/un33k/python-slugify/issues/107", + "id": 1041536041, + "node_id": "I_kwDOAF7qK84-FJQp", + "number": 107, + "title": "Question/Bug: how do I preserve dashes and not replace them with separator?", + "user": { + "login": "adamcunnington-mlg", + "id": 93528462, + "node_id": "U_kgDOBZMhjg", + "avatar_url": "https://avatars.githubusercontent.com/u/93528462?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/adamcunnington-mlg", + "html_url": "https://github.com/adamcunnington-mlg", + "followers_url": "https://api.github.com/users/adamcunnington-mlg/followers", + "following_url": "https://api.github.com/users/adamcunnington-mlg/following{/other_user}", + "gists_url": "https://api.github.com/users/adamcunnington-mlg/gists{/gist_id}", + "starred_url": "https://api.github.com/users/adamcunnington-mlg/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/adamcunnington-mlg/subscriptions", + "organizations_url": "https://api.github.com/users/adamcunnington-mlg/orgs", + "repos_url": "https://api.github.com/users/adamcunnington-mlg/repos", + "events_url": "https://api.github.com/users/adamcunnington-mlg/events{/privacy}", + "received_events_url": "https://api.github.com/users/adamcunnington-mlg/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": true, + "assignees": [], + "milestone": null, + "comments": 10, + "created_at": "2021-11-01T19:51:02Z", + "updated_at": "2021-12-16T16:12:08Z", + "closed_at": "2021-12-04T16:33:42Z", + "assignee": null, + "author_association": "NONE", + "active_lock_reason": "resolved", + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "I am trying to slugify a string, replacing non-matching characters with an underscore, but I don't want to consider a dash a non-matching character. This is easily achieved with regex but it looks like there is some special slugify behaviour when it comes to dashes which is preventing this working. I can't see anything in the docs or code, about how to work around this.\r\n\r\n**What did I do?**\r\n```python\r\nslugify.slugify(\"test-foo bar\", separator='_', regex_pattern=r'[^-a-zA-Z0-9_]+')\r\n```\r\n\r\n**What happened?**\r\n`test_foo_bar`\r\n\r\n**What did I expect?**\r\n`test-foo_bar`", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/107/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/107/timeline", + "performed_via_github_app": null, + "state_reason": "completed", + "pinned_comment": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/108", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/108/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/108/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/108/events", + "html_url": "https://github.com/un33k/python-slugify/issues/108", + "id": 1110596069, + "node_id": "I_kwDOAF7qK85CMlnl", + "number": 108, + "title": "GitHub Action Work", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 0, + "created_at": "2022-01-21T15:29:49Z", + "updated_at": "2022-04-27T16:16:57Z", + "closed_at": "2022-04-27T16:16:57Z", + "assignee": null, + "author_association": "OWNER", + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "Travis CI is deprecated. This ticket is to create a GitHub Action instead. \r\n\r\nPRs are welcome!", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/108/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/108/timeline", + "performed_via_github_app": null, + "state_reason": "completed", + "pinned_comment": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/109", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/109/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/109/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/109/events", + "html_url": "https://github.com/un33k/python-slugify/pull/109", + "id": 1139853803, + "node_id": "PR_kwDOAF7qK84y6u1e", + "number": 109, + "title": "Fix misleading pattern name and documentation", + "user": { + "login": "mrezzamoradi", + "id": 6003890, + "node_id": "MDQ6VXNlcjYwMDM4OTA=", + "avatar_url": "https://avatars.githubusercontent.com/u/6003890?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/mrezzamoradi", + "html_url": "https://github.com/mrezzamoradi", + "followers_url": "https://api.github.com/users/mrezzamoradi/followers", + "following_url": "https://api.github.com/users/mrezzamoradi/following{/other_user}", + "gists_url": "https://api.github.com/users/mrezzamoradi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/mrezzamoradi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/mrezzamoradi/subscriptions", + "organizations_url": "https://api.github.com/users/mrezzamoradi/orgs", + "repos_url": "https://api.github.com/users/mrezzamoradi/repos", + "events_url": "https://api.github.com/users/mrezzamoradi/events{/privacy}", + "received_events_url": "https://api.github.com/users/mrezzamoradi/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 5, + "created_at": "2022-02-16T10:54:18Z", + "updated_at": "2022-02-16T22:52:54Z", + "closed_at": "2022-02-16T22:36:00Z", + "assignee": null, + "author_association": "COLLABORATOR", + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/109", + "html_url": "https://github.com/un33k/python-slugify/pull/109", + "diff_url": "https://github.com/un33k/python-slugify/pull/109.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/109.patch", + "merged_at": "2022-02-16T22:36:00Z" + }, + "body": "The `ALLOWED_CHARS_PATTERN` and `regex_pattern` are actually disallowed characters in the final slug.\r\n Also since the code lowers the case in line 141, there's no need for a separate regex pattern for lowercase strings", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/109/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/109/timeline", + "performed_via_github_app": null, + "state_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/110", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/110/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/110/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/110/events", + "html_url": "https://github.com/un33k/python-slugify/issues/110", + "id": 1146030569, + "node_id": "I_kwDOAF7qK85ETwnp", + "number": 110, + "title": "Syntax error in slugify/slugify.py ", + "user": { + "login": "janderson-atb-potsdam", + "id": 97621012, + "node_id": "U_kgDOBdGUFA", + "avatar_url": "https://avatars.githubusercontent.com/u/97621012?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/janderson-atb-potsdam", + "html_url": "https://github.com/janderson-atb-potsdam", + "followers_url": "https://api.github.com/users/janderson-atb-potsdam/followers", + "following_url": "https://api.github.com/users/janderson-atb-potsdam/following{/other_user}", + "gists_url": "https://api.github.com/users/janderson-atb-potsdam/gists{/gist_id}", + "starred_url": "https://api.github.com/users/janderson-atb-potsdam/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/janderson-atb-potsdam/subscriptions", + "organizations_url": "https://api.github.com/users/janderson-atb-potsdam/orgs", + "repos_url": "https://api.github.com/users/janderson-atb-potsdam/repos", + "events_url": "https://api.github.com/users/janderson-atb-potsdam/events{/privacy}", + "received_events_url": "https://api.github.com/users/janderson-atb-potsdam/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 5, + "created_at": "2022-02-21T16:51:13Z", + "updated_at": "2022-04-27T16:16:48Z", + "closed_at": "2022-04-27T16:16:48Z", + "assignee": null, + "author_association": "NONE", + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "Hello,\r\n\r\nThe current master branch (commit c096bcdd76b0ef216716eccef5b19839266e1372)\r\ngives a syntax error in slugify/slugify.py \r\n\r\n File \".../site-packages/slugify/slugify.py\", line 69\r\n replacements: typing.Iterable[typing.Iterable[str]] = ()):\r\n ^\r\nSyntaxError: invalid syntax\r\n\r\n\r\nHave a good day\r\n", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/110/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/110/timeline", + "performed_via_github_app": null, + "state_reason": "completed", + "pinned_comment": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/111", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/111/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/111/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/111/events", + "html_url": "https://github.com/un33k/python-slugify/pull/111", + "id": 1146833823, + "node_id": "PR_kwDOAF7qK84zSBDv", + "number": 111, + "title": "allow unicode", + "user": { + "login": "mrezzamoradi", + "id": 6003890, + "node_id": "MDQ6VXNlcjYwMDM4OTA=", + "avatar_url": "https://avatars.githubusercontent.com/u/6003890?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/mrezzamoradi", + "html_url": "https://github.com/mrezzamoradi", + "followers_url": "https://api.github.com/users/mrezzamoradi/followers", + "following_url": "https://api.github.com/users/mrezzamoradi/following{/other_user}", + "gists_url": "https://api.github.com/users/mrezzamoradi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/mrezzamoradi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/mrezzamoradi/subscriptions", + "organizations_url": "https://api.github.com/users/mrezzamoradi/orgs", + "repos_url": "https://api.github.com/users/mrezzamoradi/repos", + "events_url": "https://api.github.com/users/mrezzamoradi/events{/privacy}", + "received_events_url": "https://api.github.com/users/mrezzamoradi/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2022-02-22T12:11:57Z", + "updated_at": "2022-02-28T08:36:29Z", + "closed_at": "2022-02-22T19:05:08Z", + "assignee": null, + "author_association": "COLLABORATOR", + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/111", + "html_url": "https://github.com/un33k/python-slugify/pull/111", + "diff_url": "https://github.com/un33k/python-slugify/pull/111.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/111.patch", + "merged_at": "2022-02-22T19:05:08Z" + }, + "body": "This non-intrusive change gives users the choice to allow Unicode characters in the final slug. I understand it might not be aligned with the initial goal of this project (URL path slugification), still I think it has valid use cases like when applications use slugified strings as filenames, e.g. exporting a google doc to PDF. The filename can contain Unicode. Some popular projects like Djange have [this feature](https://docs.djangoproject.com/en/4.0/ref/utils/#django.utils.text.slugify)\r\n\r\nChanges:\r\n- Added `allow_unicode` parameter with default to False.\r\n- Added `DISALLOWED_UNICODE_CHARS_PATTERN` regex pattern to filter out non-words.\r\n- Duplicated all previous tests and let them run with `allow_unicode` flag on to make sure the behaviour is unchanged.\r\n- Added/updated tests to test unicode strings.\r\n- Make sure emojis are not allowed\r\n\r\nIf you approve this proposal, then I or you can update the README file accordingly. We then need to modify the Wiki a bit as well.\r\n\r\nsolves https://github.com/un33k/python-slugify/issues/78\r\nsolves https://github.com/un33k/python-slugify/issues/24", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/111/reactions", + "total_count": 1, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 1, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/111/timeline", + "performed_via_github_app": null, + "state_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/112", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/112/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/112/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/112/events", + "html_url": "https://github.com/un33k/python-slugify/issues/112", + "id": 1149623797, + "node_id": "I_kwDOAF7qK85Ehd31", + "number": 112, + "title": "Slugify 6.1.0 breaks under Python 3.4.2 - ImportError: No module named 'typing'", + "user": { + "login": "samlehman", + "id": 83078, + "node_id": "MDQ6VXNlcjgzMDc4", + "avatar_url": "https://avatars.githubusercontent.com/u/83078?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/samlehman", + "html_url": "https://github.com/samlehman", + "followers_url": "https://api.github.com/users/samlehman/followers", + "following_url": "https://api.github.com/users/samlehman/following{/other_user}", + "gists_url": "https://api.github.com/users/samlehman/gists{/gist_id}", + "starred_url": "https://api.github.com/users/samlehman/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/samlehman/subscriptions", + "organizations_url": "https://api.github.com/users/samlehman/orgs", + "repos_url": "https://api.github.com/users/samlehman/repos", + "events_url": "https://api.github.com/users/samlehman/events{/privacy}", + "received_events_url": "https://api.github.com/users/samlehman/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 2, + "created_at": "2022-02-24T18:40:10Z", + "updated_at": "2022-04-27T16:16:26Z", + "closed_at": "2022-04-27T16:16:26Z", + "assignee": null, + "author_association": "NONE", + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "Hello,\r\n\r\nSo I'm using the library csvkit 1.0.5 on Python 3.4.2.\r\n\r\nHere's my full backtrace:\r\n\r\n```\r\nFile failed with error: StandardError: conversion failed: Traceback (most recent call last):\r\nFile \"/usr/local/bin/in2csv\", line 9, in \r\nload_entry_point('csvkit==1.0.5', 'console_scripts', 'in2csv')()\r\nFile \"/usr/lib/python3/dist-packages/pkg_resources.py\", line 356, in load_entry_point\r\nreturn get_distribution(dist).load_entry_point(group, name)\r\nFile \"/usr/lib/python3/dist-packages/pkg_resources.py\", line 2476, in load_entry_point\r\nreturn ep.load()\r\nFile \"/usr/lib/python3/dist-packages/pkg_resources.py\", line 2190, in load\r\n['__name__'])\r\nFile \"/usr/local/lib/python3.4/dist-packages/csvkit/__init__.py\", line 15, in \r\nimport agate\r\nFile \"/usr/local/lib/python3.4/dist-packages/agate/__init__.py\", line 5, in \r\nfrom agate.aggregations import *\r\nFile \"/usr/local/lib/python3.4/dist-packages/agate/aggregations/__init__.py\", line 21, in \r\nfrom agate.aggregations.count import Count\r\nFile \"/usr/local/lib/python3.4/dist-packages/agate/aggregations/count.py\", line 5, in \r\nfrom agate.utils import default\r\nFile \"/usr/local/lib/python3.4/dist-packages/agate/utils.py\", line 20, in \r\nfrom slugify import slugify as pslugify\r\nFile \"/usr/local/lib/python3.4/dist-packages/slugify/__init__.py\", line 2, in \r\nfrom .slugify import *\r\nFile \"/usr/local/lib/python3.4/dist-packages/slugify/slugify.py\", line 3, in \r\nimport typing\r\nImportError: No module named 'typing'\r\n```\r\n\r\nI read that 'typing' is available in python 3.5 and on (https://stackoverflow.com/questions/67344483/importerror-no-module-named-typing-when-trying-to-install-a-package). \r\n\r\nSo I suppose slugify might need to limit which version of python it can be installed under?\r\n\r\nI think my solution to my issue might be to lock slugify to the previous version of slugify. \r\n", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/112/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/112/timeline", + "performed_via_github_app": null, + "state_reason": "completed", + "pinned_comment": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/113", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/113/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/113/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/113/events", + "html_url": "https://github.com/un33k/python-slugify/pull/113", + "id": 1150264490, + "node_id": "PR_kwDOAF7qK84zdK_2", + "number": 113, + "title": "remove type hinting", + "user": { + "login": "mrezzamoradi", + "id": 6003890, + "node_id": "MDQ6VXNlcjYwMDM4OTA=", + "avatar_url": "https://avatars.githubusercontent.com/u/6003890?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/mrezzamoradi", + "html_url": "https://github.com/mrezzamoradi", + "followers_url": "https://api.github.com/users/mrezzamoradi/followers", + "following_url": "https://api.github.com/users/mrezzamoradi/following{/other_user}", + "gists_url": "https://api.github.com/users/mrezzamoradi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/mrezzamoradi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/mrezzamoradi/subscriptions", + "organizations_url": "https://api.github.com/users/mrezzamoradi/orgs", + "repos_url": "https://api.github.com/users/mrezzamoradi/repos", + "events_url": "https://api.github.com/users/mrezzamoradi/events{/privacy}", + "received_events_url": "https://api.github.com/users/mrezzamoradi/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 0, + "created_at": "2022-02-25T10:05:39Z", + "updated_at": "2022-02-28T08:36:26Z", + "closed_at": "2022-02-26T18:55:55Z", + "assignee": null, + "author_association": "COLLABORATOR", + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/113", + "html_url": "https://github.com/un33k/python-slugify/pull/113", + "diff_url": "https://github.com/un33k/python-slugify/pull/113.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/113.patch", + "merged_at": "2022-02-26T18:55:55Z" + }, + "body": "Temporarily remove type hinting.\r\nThis will solve https://github.com/un33k/python-slugify/issues/110 and https://github.com/un33k/python-slugify/issues/112", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/113/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/113/timeline", + "performed_via_github_app": null, + "state_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/114", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/114/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/114/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/114/events", + "html_url": "https://github.com/un33k/python-slugify/issues/114", + "id": 1189588573, + "node_id": "I_kwDOAF7qK85G565d", + "number": 114, + "title": "Missing slugify cmd line command: removed 'entry_points' from setup.py", + "user": { + "login": "reixd", + "id": 2931991, + "node_id": "MDQ6VXNlcjI5MzE5OTE=", + "avatar_url": "https://avatars.githubusercontent.com/u/2931991?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/reixd", + "html_url": "https://github.com/reixd", + "followers_url": "https://api.github.com/users/reixd/followers", + "following_url": "https://api.github.com/users/reixd/following{/other_user}", + "gists_url": "https://api.github.com/users/reixd/gists{/gist_id}", + "starred_url": "https://api.github.com/users/reixd/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/reixd/subscriptions", + "organizations_url": "https://api.github.com/users/reixd/orgs", + "repos_url": "https://api.github.com/users/reixd/repos", + "events_url": "https://api.github.com/users/reixd/events{/privacy}", + "received_events_url": "https://api.github.com/users/reixd/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 4, + "created_at": "2022-04-01T10:27:35Z", + "updated_at": "2022-04-27T16:17:44Z", + "closed_at": "2022-04-27T16:17:44Z", + "assignee": null, + "author_association": "NONE", + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "Hello @un33k,\r\n\r\nmy CI scripts started failing after updating to the latest version v6.1.1 .\r\nDigging further I noticed, that you removed the 'entry_points' from setup.py (See https://github.com/un33k/python-slugify/commit/7534199cf4b214309619e7486e1de1057bff74a3#diff-60f61ab7a8d1910d86d9fda2261620314edcae5894d5aaa236b821c7256badd7L70 )\r\nWas this on purpose?\r\n\r\nUsing only the cmd line command it's very useful.\r\n\r\nIf necessary I can provide a PR myself.\r\n\r\nWith regards,\r\n\r\nreixd", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/114/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/114/timeline", + "performed_via_github_app": null, + "state_reason": "completed", + "pinned_comment": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/115", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/115/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/115/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/115/events", + "html_url": "https://github.com/un33k/python-slugify/issues/115", + "id": 1221878085, + "node_id": "I_kwDOAF7qK85I1GFF", + "number": 115, + "title": "Installing python-slugify on Python 2.7 does not install a compatible version of slugify", + "user": { + "login": "ndelon", + "id": 28742528, + "node_id": "MDQ6VXNlcjI4NzQyNTI4", + "avatar_url": "https://avatars.githubusercontent.com/u/28742528?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/ndelon", + "html_url": "https://github.com/ndelon", + "followers_url": "https://api.github.com/users/ndelon/followers", + "following_url": "https://api.github.com/users/ndelon/following{/other_user}", + "gists_url": "https://api.github.com/users/ndelon/gists{/gist_id}", + "starred_url": "https://api.github.com/users/ndelon/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/ndelon/subscriptions", + "organizations_url": "https://api.github.com/users/ndelon/orgs", + "repos_url": "https://api.github.com/users/ndelon/repos", + "events_url": "https://api.github.com/users/ndelon/events{/privacy}", + "received_events_url": "https://api.github.com/users/ndelon/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 6, + "created_at": "2022-04-30T17:14:06Z", + "updated_at": "2022-11-22T17:56:14Z", + "closed_at": "2022-11-22T17:55:15Z", + "assignee": null, + "author_association": "NONE", + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "Hello,\r\n\r\nIt seems that since python-slugify 6.0.0 has been released, the appropriate version of slugify is no longer installed when using Python 2.7.\r\n\r\nBack in 5.0.2, the `python_requires` argument of `setup.py` was set to `>=3.6`, meaning that this version was not eligible for Python 2.7 and that pip would have automatically installed slugify 4.0.1 (where the `python_requires` expression fits Python 2.7) as expected.\r\n\r\nSince 6.x, `python_requires` has been set to `\">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*\"` meaning that this version is installed by pip on Python 2.7 (instead of slugify 4.0.1) and cannot work.\r\n\r\nIt could be fixed, but I think that if it is fixed (for instance) in a future 6.1.3 version, then pip on Python 2.7 will simply install the 6.1.2 version instead and the initial issue will remain.\r\n\r\nWhen developing a library that uses slugify and that still supports Python 2.7, the version dependency has to be set explicitly like I did here: https://github.com/lemoncheesecake/lemoncheesecake/blob/09f4bd84b53f599d52c9749bebbe078e6e1d5f15/setup.py#L15\r\n\r\nBest regards,\r\n\r\nNicolas.", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/115/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/115/timeline", + "performed_via_github_app": null, + "state_reason": "completed", + "pinned_comment": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/116", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/116/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/116/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/116/events", + "html_url": "https://github.com/un33k/python-slugify/pull/116", + "id": 1250544557, + "node_id": "PR_kwDOAF7qK844klBs", + "number": 116, + "title": "Update __init__.py to have __version__ variables.", + "user": { + "login": "eNV25", + "id": 61089994, + "node_id": "MDQ6VXNlcjYxMDg5OTk0", + "avatar_url": "https://avatars.githubusercontent.com/u/61089994?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/eNV25", + "html_url": "https://github.com/eNV25", + "followers_url": "https://api.github.com/users/eNV25/followers", + "following_url": "https://api.github.com/users/eNV25/following{/other_user}", + "gists_url": "https://api.github.com/users/eNV25/gists{/gist_id}", + "starred_url": "https://api.github.com/users/eNV25/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/eNV25/subscriptions", + "organizations_url": "https://api.github.com/users/eNV25/orgs", + "repos_url": "https://api.github.com/users/eNV25/repos", + "events_url": "https://api.github.com/users/eNV25/events{/privacy}", + "received_events_url": "https://api.github.com/users/eNV25/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2022-05-27T09:25:34Z", + "updated_at": "2022-09-27T11:58:31Z", + "closed_at": "2022-09-27T11:58:23Z", + "assignee": null, + "author_association": "CONTRIBUTOR", + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/116", + "html_url": "https://github.com/un33k/python-slugify/pull/116", + "diff_url": "https://github.com/un33k/python-slugify/pull/116.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/116.patch", + "merged_at": "2022-09-27T11:58:23Z" + }, + "body": "This allows you to use `from slugify import __version__ as slugifyVersion`, while `from slugify.__version__ import __version__ as slugifyVersion` continues to work.", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/116/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/116/timeline", + "performed_via_github_app": null, + "state_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/117", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/117/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/117/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/117/events", + "html_url": "https://github.com/un33k/python-slugify/issues/117", + "id": 1386698057, + "node_id": "I_kwDOAF7qK85Sp1VJ", + "number": 117, + "title": "Proposal: Discontinue Python 2 support", + "user": { + "login": "jdevera", + "id": 73069, + "node_id": "MDQ6VXNlcjczMDY5", + "avatar_url": "https://avatars.githubusercontent.com/u/73069?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/jdevera", + "html_url": "https://github.com/jdevera", + "followers_url": "https://api.github.com/users/jdevera/followers", + "following_url": "https://api.github.com/users/jdevera/following{/other_user}", + "gists_url": "https://api.github.com/users/jdevera/gists{/gist_id}", + "starred_url": "https://api.github.com/users/jdevera/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/jdevera/subscriptions", + "organizations_url": "https://api.github.com/users/jdevera/orgs", + "repos_url": "https://api.github.com/users/jdevera/repos", + "events_url": "https://api.github.com/users/jdevera/events{/privacy}", + "received_events_url": "https://api.github.com/users/jdevera/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [ + { + "login": "jdevera", + "id": 73069, + "node_id": "MDQ6VXNlcjczMDY5", + "avatar_url": "https://avatars.githubusercontent.com/u/73069?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/jdevera", + "html_url": "https://github.com/jdevera", + "followers_url": "https://api.github.com/users/jdevera/followers", + "following_url": "https://api.github.com/users/jdevera/following{/other_user}", + "gists_url": "https://api.github.com/users/jdevera/gists{/gist_id}", + "starred_url": "https://api.github.com/users/jdevera/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/jdevera/subscriptions", + "organizations_url": "https://api.github.com/users/jdevera/orgs", + "repos_url": "https://api.github.com/users/jdevera/repos", + "events_url": "https://api.github.com/users/jdevera/events{/privacy}", + "received_events_url": "https://api.github.com/users/jdevera/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + } + ], + "milestone": null, + "comments": 2, + "created_at": "2022-09-26T20:43:48Z", + "updated_at": "2022-11-22T17:54:18Z", + "closed_at": "2022-11-22T17:54:18Z", + "assignee": { + "login": "jdevera", + "id": 73069, + "node_id": "MDQ6VXNlcjczMDY5", + "avatar_url": "https://avatars.githubusercontent.com/u/73069?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/jdevera", + "html_url": "https://github.com/jdevera", + "followers_url": "https://api.github.com/users/jdevera/followers", + "following_url": "https://api.github.com/users/jdevera/following{/other_user}", + "gists_url": "https://api.github.com/users/jdevera/gists{/gist_id}", + "starred_url": "https://api.github.com/users/jdevera/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/jdevera/subscriptions", + "organizations_url": "https://api.github.com/users/jdevera/orgs", + "repos_url": "https://api.github.com/users/jdevera/repos", + "events_url": "https://api.github.com/users/jdevera/events{/privacy}", + "received_events_url": "https://api.github.com/users/jdevera/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "author_association": "COLLABORATOR", + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "I want to propose dropping support for Python 2. The library is pretty stable as is, and there are barely any open bugs, so any [remaining python 2 users](https://pypistats.org/packages/python-slugify) can continue to use the current version.", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/117/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/117/timeline", + "performed_via_github_app": null, + "state_reason": "completed", + "pinned_comment": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/118", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/118/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/118/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/118/events", + "html_url": "https://github.com/un33k/python-slugify/issues/118", + "id": 1386741097, + "node_id": "I_kwDOAF7qK85Sp_1p", + "number": 118, + "title": "Question: Why is save_order False by default?", + "user": { + "login": "jdevera", + "id": 73069, + "node_id": "MDQ6VXNlcjczMDY5", + "avatar_url": "https://avatars.githubusercontent.com/u/73069?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/jdevera", + "html_url": "https://github.com/jdevera", + "followers_url": "https://api.github.com/users/jdevera/followers", + "following_url": "https://api.github.com/users/jdevera/following{/other_user}", + "gists_url": "https://api.github.com/users/jdevera/gists{/gist_id}", + "starred_url": "https://api.github.com/users/jdevera/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/jdevera/subscriptions", + "organizations_url": "https://api.github.com/users/jdevera/orgs", + "repos_url": "https://api.github.com/users/jdevera/repos", + "events_url": "https://api.github.com/users/jdevera/events{/privacy}", + "received_events_url": "https://api.github.com/users/jdevera/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 16454940, + "node_id": "MDU6TGFiZWwxNjQ1NDk0MA==", + "url": "https://api.github.com/repos/un33k/python-slugify/labels/type:question", + "name": "type:question", + "color": "cc317c", + "default": false, + "description": "A question about the library or its code" + } + ], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 3, + "created_at": "2022-09-26T21:21:57Z", + "updated_at": "2022-11-22T17:53:13Z", + "closed_at": "2022-11-22T17:53:12Z", + "assignee": null, + "author_association": "COLLABORATOR", + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "I was trying to understand the meaning of save_order better and I see that it can skip some long words when they will not fit whole within max_length. I'm very curious about why this is the default behaviour.", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/118/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/118/timeline", + "performed_via_github_app": null, + "state_reason": "completed", + "pinned_comment": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/119", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/119/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/119/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/119/events", + "html_url": "https://github.com/un33k/python-slugify/issues/119", + "id": 1386779132, + "node_id": "I_kwDOAF7qK85SqJH8", + "number": 119, + "title": "Question: Why are custom replacements ran twice?", + "user": { + "login": "jdevera", + "id": 73069, + "node_id": "MDQ6VXNlcjczMDY5", + "avatar_url": "https://avatars.githubusercontent.com/u/73069?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/jdevera", + "html_url": "https://github.com/jdevera", + "followers_url": "https://api.github.com/users/jdevera/followers", + "following_url": "https://api.github.com/users/jdevera/following{/other_user}", + "gists_url": "https://api.github.com/users/jdevera/gists{/gist_id}", + "starred_url": "https://api.github.com/users/jdevera/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/jdevera/subscriptions", + "organizations_url": "https://api.github.com/users/jdevera/orgs", + "repos_url": "https://api.github.com/users/jdevera/repos", + "events_url": "https://api.github.com/users/jdevera/events{/privacy}", + "received_events_url": "https://api.github.com/users/jdevera/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 16454940, + "node_id": "MDU6TGFiZWwxNjQ1NDk0MA==", + "url": "https://api.github.com/repos/un33k/python-slugify/labels/type:question", + "name": "type:question", + "color": "cc317c", + "default": false, + "description": "A question about the library or its code" + } + ], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2022-09-26T22:00:00Z", + "updated_at": "2022-11-22T17:57:06Z", + "closed_at": "2022-11-22T17:57:06Z", + "assignee": null, + "author_association": "COLLABORATOR", + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "I noticed this block\r\n```python\r\n if replacements:\r\n for old, new in replacements:\r\n text = text.replace(old, new)\r\n```\r\n\r\nappears twice in `slugify`. Why is that? Would it not make sense to have some pre-replacements and post-replacements instead?", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/119/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/119/timeline", + "performed_via_github_app": null, + "state_reason": "completed", + "pinned_comment": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/120", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/120/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/120/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/120/events", + "html_url": "https://github.com/un33k/python-slugify/issues/120", + "id": 1387240869, + "node_id": "I_kwDOAF7qK85Sr52l", + "number": 120, + "title": "Document the use of what's in special.py", + "user": { + "login": "jdevera", + "id": 73069, + "node_id": "MDQ6VXNlcjczMDY5", + "avatar_url": "https://avatars.githubusercontent.com/u/73069?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/jdevera", + "html_url": "https://github.com/jdevera", + "followers_url": "https://api.github.com/users/jdevera/followers", + "following_url": "https://api.github.com/users/jdevera/following{/other_user}", + "gists_url": "https://api.github.com/users/jdevera/gists{/gist_id}", + "starred_url": "https://api.github.com/users/jdevera/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/jdevera/subscriptions", + "organizations_url": "https://api.github.com/users/jdevera/orgs", + "repos_url": "https://api.github.com/users/jdevera/repos", + "events_url": "https://api.github.com/users/jdevera/events{/privacy}", + "received_events_url": "https://api.github.com/users/jdevera/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 16454938, + "node_id": "MDU6TGFiZWwxNjQ1NDkzOA==", + "url": "https://api.github.com/repos/un33k/python-slugify/labels/type:enhancement", + "name": "type:enhancement", + "color": "84b6eb", + "default": false, + "description": "An improvement to existing features or a new feature" + }, + { + "id": 4581641745, + "node_id": "LA_kwDOAF7qK88AAAABERZOEQ", + "url": "https://api.github.com/repos/un33k/python-slugify/labels/area:docs", + "name": "area:docs", + "color": "E48293", + "default": false, + "description": "Affects mainly the documentation" + } + ], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2022-09-27T07:14:17Z", + "updated_at": "2022-11-22T17:57:20Z", + "closed_at": "2022-11-22T17:57:20Z", + "assignee": null, + "author_association": "COLLABORATOR", + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": null, + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/120/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/120/timeline", + "performed_via_github_app": null, + "state_reason": "completed", + "pinned_comment": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/121", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/121/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/121/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/121/events", + "html_url": "https://github.com/un33k/python-slugify/pull/121", + "id": 1452275917, + "node_id": "PR_kwDOAF7qK85DD1f2", + "number": 121, + "title": "Add support for Python 3.11", + "user": { + "login": "hugovk", + "id": 1324225, + "node_id": "MDQ6VXNlcjEzMjQyMjU=", + "avatar_url": "https://avatars.githubusercontent.com/u/1324225?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/hugovk", + "html_url": "https://github.com/hugovk", + "followers_url": "https://api.github.com/users/hugovk/followers", + "following_url": "https://api.github.com/users/hugovk/following{/other_user}", + "gists_url": "https://api.github.com/users/hugovk/gists{/gist_id}", + "starred_url": "https://api.github.com/users/hugovk/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/hugovk/subscriptions", + "organizations_url": "https://api.github.com/users/hugovk/orgs", + "repos_url": "https://api.github.com/users/hugovk/repos", + "events_url": "https://api.github.com/users/hugovk/events{/privacy}", + "received_events_url": "https://api.github.com/users/hugovk/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 3, + "created_at": "2022-11-16T21:08:52Z", + "updated_at": "2022-11-18T20:33:41Z", + "closed_at": "2022-11-18T18:36:21Z", + "assignee": null, + "author_association": "CONTRIBUTOR", + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/121", + "html_url": "https://github.com/un33k/python-slugify/pull/121", + "diff_url": "https://github.com/un33k/python-slugify/pull/121.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/121.patch", + "merged_at": "2022-11-18T18:36:21Z" + }, + "body": "Python 3.11 was [released on 2022-10-24](https://discuss.python.org/t/python-3-11-0-final-is-now-available/20291?u=hugovk) 🚀 \r\n\r\n[![image](https://user-images.githubusercontent.com/1324225/198233993-5b79523b-370f-4316-a4be-9403c8209068.png)](https://discuss.python.org/t/python-3-11-0-final-is-now-available/20291?u=hugovk)\r\n\r\nAnd drop EOL 3.6.", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/121/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/121/timeline", + "performed_via_github_app": null, + "state_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/122", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/122/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/122/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/122/events", + "html_url": "https://github.com/un33k/python-slugify/issues/122", + "id": 1494467745, + "node_id": "I_kwDOAF7qK85ZE8Sh", + "number": 122, + "title": "Is it possible to translate characters to romanised Japanese rather than Chinese?", + "user": { + "login": "lewisd1996", + "id": 25225528, + "node_id": "MDQ6VXNlcjI1MjI1NTI4", + "avatar_url": "https://avatars.githubusercontent.com/u/25225528?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/lewisd1996", + "html_url": "https://github.com/lewisd1996", + "followers_url": "https://api.github.com/users/lewisd1996/followers", + "following_url": "https://api.github.com/users/lewisd1996/following{/other_user}", + "gists_url": "https://api.github.com/users/lewisd1996/gists{/gist_id}", + "starred_url": "https://api.github.com/users/lewisd1996/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/lewisd1996/subscriptions", + "organizations_url": "https://api.github.com/users/lewisd1996/orgs", + "repos_url": "https://api.github.com/users/lewisd1996/repos", + "events_url": "https://api.github.com/users/lewisd1996/events{/privacy}", + "received_events_url": "https://api.github.com/users/lewisd1996/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2022-12-13T15:15:16Z", + "updated_at": "2022-12-24T22:05:02Z", + "closed_at": "2022-12-24T22:05:02Z", + "assignee": null, + "author_association": "NONE", + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "One slug ive generated from `カリモク 寄木` ends up being `karimoku-ji-mu`\r\n\r\nUnfortunately, Japanese Kanji shares characters with Chinese so it's mixed up here. Anyway to force Japanese?", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/122/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/122/timeline", + "performed_via_github_app": null, + "state_reason": "completed", + "pinned_comment": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/123", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/123/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/123/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/123/events", + "html_url": "https://github.com/un33k/python-slugify/issues/123", + "id": 1509817125, + "node_id": "I_kwDOAF7qK85Z_fsl", + "number": 123, + "title": "How to replace the ampersand symbol \"&\" for two hyphens \"--\"?", + "user": { + "login": "rafaelmarino", + "id": 9305283, + "node_id": "MDQ6VXNlcjkzMDUyODM=", + "avatar_url": "https://avatars.githubusercontent.com/u/9305283?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/rafaelmarino", + "html_url": "https://github.com/rafaelmarino", + "followers_url": "https://api.github.com/users/rafaelmarino/followers", + "following_url": "https://api.github.com/users/rafaelmarino/following{/other_user}", + "gists_url": "https://api.github.com/users/rafaelmarino/gists{/gist_id}", + "starred_url": "https://api.github.com/users/rafaelmarino/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/rafaelmarino/subscriptions", + "organizations_url": "https://api.github.com/users/rafaelmarino/orgs", + "repos_url": "https://api.github.com/users/rafaelmarino/repos", + "events_url": "https://api.github.com/users/rafaelmarino/events{/privacy}", + "received_events_url": "https://api.github.com/users/rafaelmarino/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2022-12-23T22:17:36Z", + "updated_at": "2022-12-24T22:04:04Z", + "closed_at": "2022-12-24T22:04:04Z", + "assignee": null, + "author_association": "NONE", + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "Hi, I have a list of job titles I need to slugify, as part of the requirements I need to convert ampersands (\"&\") into double hyphens (\"--\"). I am able to successfully replace the ampersand for any other symbol/group of symbols except for double (and I suspect multiple) hyphens. Any workaround for this?\r\n\r\n```python\r\njob_title: str = \"ENGINEER - LEVEL II/III & SENIOR\"\r\ntarget: str = \"engineer-level-iiiii--senior\"\r\nslugg: str = slugify(job_title, replacements=[[\"&\", \"--\"], [\"/\", \"\"]])\r\nprint(slugg) # engineer-level-iiiii-senior\r\nassert target == slugg # AssertionError\r\n```\r\n", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/123/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/123/timeline", + "performed_via_github_app": null, + "state_reason": "completed", + "pinned_comment": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/124", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/124/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/124/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/124/events", + "html_url": "https://github.com/un33k/python-slugify/issues/124", + "id": 1528734493, + "node_id": "I_kwDOAF7qK85bHqMd", + "number": 124, + "title": "Missing unittests", + "user": { + "login": "buhtz", + "id": 11861496, + "node_id": "MDQ6VXNlcjExODYxNDk2", + "avatar_url": "https://avatars.githubusercontent.com/u/11861496?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/buhtz", + "html_url": "https://github.com/buhtz", + "followers_url": "https://api.github.com/users/buhtz/followers", + "following_url": "https://api.github.com/users/buhtz/following{/other_user}", + "gists_url": "https://api.github.com/users/buhtz/gists{/gist_id}", + "starred_url": "https://api.github.com/users/buhtz/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/buhtz/subscriptions", + "organizations_url": "https://api.github.com/users/buhtz/orgs", + "repos_url": "https://api.github.com/users/buhtz/repos", + "events_url": "https://api.github.com/users/buhtz/events{/privacy}", + "received_events_url": "https://api.github.com/users/buhtz/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 2, + "created_at": "2023-01-11T09:50:20Z", + "updated_at": "2023-01-12T06:39:29Z", + "closed_at": "2023-01-12T01:59:24Z", + "assignee": null, + "author_association": "NONE", + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "It seems to me that this project doesn't have any unittests.\r\n\r\nThis would be a good task for a funded developer (#101).", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/124/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/124/timeline", + "performed_via_github_app": null, + "state_reason": "completed", + "pinned_comment": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/125", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/125/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/125/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/125/events", + "html_url": "https://github.com/un33k/python-slugify/pull/125", + "id": 1529491513, + "node_id": "PR_kwDOAF7qK85HLlhv", + "number": 125, + "title": "added option to replace ambiguous characters", + "user": { + "login": "xnetcat", + "id": 42355410, + "node_id": "MDQ6VXNlcjQyMzU1NDEw", + "avatar_url": "https://avatars.githubusercontent.com/u/42355410?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xnetcat", + "html_url": "https://github.com/xnetcat", + "followers_url": "https://api.github.com/users/xnetcat/followers", + "following_url": "https://api.github.com/users/xnetcat/following{/other_user}", + "gists_url": "https://api.github.com/users/xnetcat/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xnetcat/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xnetcat/subscriptions", + "organizations_url": "https://api.github.com/users/xnetcat/orgs", + "repos_url": "https://api.github.com/users/xnetcat/repos", + "events_url": "https://api.github.com/users/xnetcat/events{/privacy}", + "received_events_url": "https://api.github.com/users/xnetcat/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 5, + "created_at": "2023-01-11T18:28:16Z", + "updated_at": "2023-02-24T16:21:20Z", + "closed_at": "2023-01-11T20:16:05Z", + "assignee": null, + "author_association": "NONE", + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/125", + "html_url": "https://github.com/un33k/python-slugify/pull/125", + "diff_url": "https://github.com/un33k/python-slugify/pull/125.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/125.patch", + "merged_at": null + }, + "body": "as in title, this option replaces similar characters to their closest ASCII equivalent\r\n\r\nfor example:\r\n`𝙎` -> `s`\r\n`𝘽` -> `b`\r\n`Drake - WizKid Kyla - One Dance (𝙎𝙇𝙊𝙒𝙀𝘿 + 𝙍𝙀𝙑𝙀𝙍𝘽)` -> `drake-wizkid-kyla-one-dance-slowed-reverb`\r\n\r\nbefore:\r\n`𝙎` -> ` `\r\n`𝘽` -> ` `\r\n`Drake - WizKid Kyla - One Dance (𝙎𝙇𝙊𝙒𝙀𝘿 + 𝙍𝙀𝙑𝙀𝙍𝘽)` -> `drake-wizkid-kyla-one-dance`\r\n\r\nfull list: https://pastebin.com/yY9UmByb\r\n\r\nbased on the: https://github.com/hediet/vscode-unicode-data/", + "closed_by": { + "login": "xnetcat", + "id": 42355410, + "node_id": "MDQ6VXNlcjQyMzU1NDEw", + "avatar_url": "https://avatars.githubusercontent.com/u/42355410?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xnetcat", + "html_url": "https://github.com/xnetcat", + "followers_url": "https://api.github.com/users/xnetcat/followers", + "following_url": "https://api.github.com/users/xnetcat/following{/other_user}", + "gists_url": "https://api.github.com/users/xnetcat/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xnetcat/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xnetcat/subscriptions", + "organizations_url": "https://api.github.com/users/xnetcat/orgs", + "repos_url": "https://api.github.com/users/xnetcat/repos", + "events_url": "https://api.github.com/users/xnetcat/events{/privacy}", + "received_events_url": "https://api.github.com/users/xnetcat/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/125/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/125/timeline", + "performed_via_github_app": null, + "state_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/126", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/126/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/126/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/126/events", + "html_url": "https://github.com/un33k/python-slugify/pull/126", + "id": 1560508722, + "node_id": "PR_kwDOAF7qK85It4Hv", + "number": 126, + "title": "`unidecode` vs `text_unidecode` import resolution order", + "user": { + "login": "enkidulan", + "id": 963412, + "node_id": "MDQ6VXNlcjk2MzQxMg==", + "avatar_url": "https://avatars.githubusercontent.com/u/963412?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/enkidulan", + "html_url": "https://github.com/enkidulan", + "followers_url": "https://api.github.com/users/enkidulan/followers", + "following_url": "https://api.github.com/users/enkidulan/following{/other_user}", + "gists_url": "https://api.github.com/users/enkidulan/gists{/gist_id}", + "starred_url": "https://api.github.com/users/enkidulan/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/enkidulan/subscriptions", + "organizations_url": "https://api.github.com/users/enkidulan/orgs", + "repos_url": "https://api.github.com/users/enkidulan/repos", + "events_url": "https://api.github.com/users/enkidulan/events{/privacy}", + "received_events_url": "https://api.github.com/users/enkidulan/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 3, + "created_at": "2023-01-27T22:29:27Z", + "updated_at": "2023-01-30T20:43:28Z", + "closed_at": "2023-01-27T22:47:05Z", + "assignee": null, + "author_association": "CONTRIBUTOR", + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/126", + "html_url": "https://github.com/un33k/python-slugify/pull/126", + "diff_url": "https://github.com/un33k/python-slugify/pull/126.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/126.patch", + "merged_at": "2023-01-27T22:47:05Z" + }, + "body": "The way the code is now `unidecode` library is just getting ignored. \r\n`text_unidecode` is install_requires and is always present in the python environment, so it makes sense to try importing the optional dependency `unidecode` first and only then fallback to `text_unidecode`.\r\n", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/126/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/126/timeline", + "performed_via_github_app": null, + "state_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/127", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/127/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/127/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/127/events", + "html_url": "https://github.com/un33k/python-slugify/issues/127", + "id": 1571547673, + "node_id": "I_kwDOAF7qK85dq-oZ", + "number": 127, + "title": "Fuzzing Python Slugify on OSS-Fuzz", + "user": { + "login": "rikfie", + "id": 16280674, + "node_id": "MDQ6VXNlcjE2MjgwNjc0", + "avatar_url": "https://avatars.githubusercontent.com/u/16280674?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/rikfie", + "html_url": "https://github.com/rikfie", + "followers_url": "https://api.github.com/users/rikfie/followers", + "following_url": "https://api.github.com/users/rikfie/following{/other_user}", + "gists_url": "https://api.github.com/users/rikfie/gists{/gist_id}", + "starred_url": "https://api.github.com/users/rikfie/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/rikfie/subscriptions", + "organizations_url": "https://api.github.com/users/rikfie/orgs", + "repos_url": "https://api.github.com/users/rikfie/repos", + "events_url": "https://api.github.com/users/rikfie/events{/privacy}", + "received_events_url": "https://api.github.com/users/rikfie/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 2, + "created_at": "2023-02-05T17:54:13Z", + "updated_at": "2023-02-23T15:28:26Z", + "closed_at": "2023-02-23T15:28:26Z", + "assignee": null, + "author_association": "NONE", + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "\r\nHi there, \r\n\r\nAre you interested to get Python Slugify fuzzed*? I have written [a harness for Python Slugify](https://github.com/rikfie/python-slugify-fuzzer) and it's ready to be integrated. Many libraries are being fuzzed on [OSS-Fuzz ](https://github.com/google/oss-fuzz)on a daily basis and I would like to add Python Slugify. \r\n\r\nThe only condition for fuzzing on OSS-Fuzz is that any bugs found must be fixed and released within 90 days; the bug will be publicly disclosed past this point.\r\n\r\nIf you're interested, please provide me with an e-mail address of a maintainer. The e-mail address must be linked to a Google account. Note that the addresses will be stored in a public repository. If this is not an option, I can forward bug reports to you. Although I can propose for the integration of Python Slugify to OSS-Fuzz, the decision is up to OSS-Fuzz.\r\n\r\n\\* Fuzz testing is a well-known technique for uncovering programming errors in software. OSS-Fuzz aims to make common open source software more secure and stable by combining modern fuzzing techniques with scalable, distributed execution. ", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/127/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/127/timeline", + "performed_via_github_app": null, + "state_reason": "completed", + "pinned_comment": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/128", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/128/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/128/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/128/events", + "html_url": "https://github.com/un33k/python-slugify/issues/128", + "id": 1594900703, + "node_id": "I_kwDOAF7qK85fEEDf", + "number": 128, + "title": "Enable installation without GPL dependencies", + "user": { + "login": "C-nit", + "id": 11009167, + "node_id": "MDQ6VXNlcjExMDA5MTY3", + "avatar_url": "https://avatars.githubusercontent.com/u/11009167?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/C-nit", + "html_url": "https://github.com/C-nit", + "followers_url": "https://api.github.com/users/C-nit/followers", + "following_url": "https://api.github.com/users/C-nit/following{/other_user}", + "gists_url": "https://api.github.com/users/C-nit/gists{/gist_id}", + "starred_url": "https://api.github.com/users/C-nit/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/C-nit/subscriptions", + "organizations_url": "https://api.github.com/users/C-nit/orgs", + "repos_url": "https://api.github.com/users/C-nit/repos", + "events_url": "https://api.github.com/users/C-nit/events{/privacy}", + "received_events_url": "https://api.github.com/users/C-nit/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": true, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2023-02-22T11:03:06Z", + "updated_at": "2023-02-22T17:36:59Z", + "closed_at": "2023-02-22T17:36:40Z", + "assignee": null, + "author_association": "CONTRIBUTOR", + "active_lock_reason": "resolved", + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "#126 enabled the use of `Unidecode` as alternative to to `text-unidecode`. However it would be nice if there was an alternative to avoid installing GPL dependencies.\r\n\r\nAs a first step it would be great if one could call `slugify` with `allow_unicode=True` that works without any of the GPL dependencies installed.", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/128/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/128/timeline", + "performed_via_github_app": null, + "state_reason": "completed", + "pinned_comment": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/129", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/129/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/129/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/129/events", + "html_url": "https://github.com/un33k/python-slugify/pull/129", + "id": 1597055024, + "node_id": "PR_kwDOAF7qK85KnfZy", + "number": 129, + "title": "Notes on GPL dependencies", + "user": { + "login": "C-nit", + "id": 11009167, + "node_id": "MDQ6VXNlcjExMDA5MTY3", + "avatar_url": "https://avatars.githubusercontent.com/u/11009167?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/C-nit", + "html_url": "https://github.com/C-nit", + "followers_url": "https://api.github.com/users/C-nit/followers", + "following_url": "https://api.github.com/users/C-nit/following{/other_user}", + "gists_url": "https://api.github.com/users/C-nit/gists{/gist_id}", + "starred_url": "https://api.github.com/users/C-nit/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/C-nit/subscriptions", + "organizations_url": "https://api.github.com/users/C-nit/orgs", + "repos_url": "https://api.github.com/users/C-nit/repos", + "events_url": "https://api.github.com/users/C-nit/events{/privacy}", + "received_events_url": "https://api.github.com/users/C-nit/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 3, + "created_at": "2023-02-23T15:21:01Z", + "updated_at": "2023-02-24T15:51:55Z", + "closed_at": "2023-02-24T15:51:54Z", + "assignee": null, + "author_association": "CONTRIBUTOR", + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/129", + "html_url": "https://github.com/un33k/python-slugify/pull/129", + "diff_url": "https://github.com/un33k/python-slugify/pull/129.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/129.patch", + "merged_at": null + }, + "body": "Since there are continued inquiries on the topic of licensing,\nan addition to the README.md seems worthwhile to me.\n\nHopefully this makes the conclusions reached in various previous issues more accessible for the next person.", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/129/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/129/timeline", + "performed_via_github_app": null, + "state_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/130", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/130/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/130/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/130/events", + "html_url": "https://github.com/un33k/python-slugify/pull/130", + "id": 1598496882, + "node_id": "PR_kwDOAF7qK85KsYIo", + "number": 130, + "title": "Add note on licensing", + "user": { + "login": "C-nit", + "id": 11009167, + "node_id": "MDQ6VXNlcjExMDA5MTY3", + "avatar_url": "https://avatars.githubusercontent.com/u/11009167?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/C-nit", + "html_url": "https://github.com/C-nit", + "followers_url": "https://api.github.com/users/C-nit/followers", + "following_url": "https://api.github.com/users/C-nit/following{/other_user}", + "gists_url": "https://api.github.com/users/C-nit/gists{/gist_id}", + "starred_url": "https://api.github.com/users/C-nit/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/C-nit/subscriptions", + "organizations_url": "https://api.github.com/users/C-nit/orgs", + "repos_url": "https://api.github.com/users/C-nit/repos", + "events_url": "https://api.github.com/users/C-nit/events{/privacy}", + "received_events_url": "https://api.github.com/users/C-nit/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2023-02-24T11:54:39Z", + "updated_at": "2023-02-24T15:51:20Z", + "closed_at": "2023-02-24T15:51:02Z", + "assignee": null, + "author_association": "CONTRIBUTOR", + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/130", + "html_url": "https://github.com/un33k/python-slugify/pull/130", + "diff_url": "https://github.com/un33k/python-slugify/pull/130.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/130.patch", + "merged_at": "2023-02-24T15:51:01Z" + }, + "body": "closes #129, which is the same commit but based on the staging branch.", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/130/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/130/timeline", + "performed_via_github_app": null, + "state_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/131", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/131/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/131/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/131/events", + "html_url": "https://github.com/un33k/python-slugify/pull/131", + "id": 1610073897, + "node_id": "PR_kwDOAF7qK85LTJHE", + "number": 131, + "title": "Replace flake8 and pycodestyle with ruff", + "user": { + "login": "cclauss", + "id": 3709715, + "node_id": "MDQ6VXNlcjM3MDk3MTU=", + "avatar_url": "https://avatars.githubusercontent.com/u/3709715?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/cclauss", + "html_url": "https://github.com/cclauss", + "followers_url": "https://api.github.com/users/cclauss/followers", + "following_url": "https://api.github.com/users/cclauss/following{/other_user}", + "gists_url": "https://api.github.com/users/cclauss/gists{/gist_id}", + "starred_url": "https://api.github.com/users/cclauss/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/cclauss/subscriptions", + "organizations_url": "https://api.github.com/users/cclauss/orgs", + "repos_url": "https://api.github.com/users/cclauss/repos", + "events_url": "https://api.github.com/users/cclauss/events{/privacy}", + "received_events_url": "https://api.github.com/users/cclauss/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 7, + "created_at": "2023-03-05T06:18:55Z", + "updated_at": "2023-10-09T14:33:48Z", + "closed_at": "2023-10-09T13:56:55Z", + "assignee": null, + "author_association": "CONTRIBUTOR", + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/131", + "html_url": "https://github.com/un33k/python-slugify/pull/131", + "diff_url": "https://github.com/un33k/python-slugify/pull/131.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/131.patch", + "merged_at": "2023-10-09T13:56:55Z" + }, + "body": "[Ruff](https://beta.ruff.rs) supports [over 500 lint rules](https://beta.ruff.rs/docs/rules) including bandit, flake8, isort, pylint, and pyupgrade and is written in Rust for speed.\r\nAlso added rules for pylint conventions, pylint errors, and pylint warnings.", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/131/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/131/timeline", + "performed_via_github_app": null, + "state_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/132", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/132/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/132/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/132/events", + "html_url": "https://github.com/un33k/python-slugify/pull/132", + "id": 1610074850, + "node_id": "PR_kwDOAF7qK85LTJSv", + "number": 132, + "title": "Fix CI to run on master without duplicate push and pull_request runs", + "user": { + "login": "cclauss", + "id": 3709715, + "node_id": "MDQ6VXNlcjM3MDk3MTU=", + "avatar_url": "https://avatars.githubusercontent.com/u/3709715?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/cclauss", + "html_url": "https://github.com/cclauss", + "followers_url": "https://api.github.com/users/cclauss/followers", + "following_url": "https://api.github.com/users/cclauss/following{/other_user}", + "gists_url": "https://api.github.com/users/cclauss/gists{/gist_id}", + "starred_url": "https://api.github.com/users/cclauss/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/cclauss/subscriptions", + "organizations_url": "https://api.github.com/users/cclauss/orgs", + "repos_url": "https://api.github.com/users/cclauss/repos", + "events_url": "https://api.github.com/users/cclauss/events{/privacy}", + "received_events_url": "https://api.github.com/users/cclauss/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 3, + "created_at": "2023-03-05T06:23:07Z", + "updated_at": "2023-08-15T21:18:24Z", + "closed_at": "2023-08-15T21:18:21Z", + "assignee": null, + "author_association": "CONTRIBUTOR", + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/132", + "html_url": "https://github.com/un33k/python-slugify/pull/132", + "diff_url": "https://github.com/un33k/python-slugify/pull/132.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/132.patch", + "merged_at": null + }, + "body": "That weird construct under `on:` allows the GHA to run on push OR pull_request to the `master` branch but NOT both.", + "closed_by": { + "login": "cclauss", + "id": 3709715, + "node_id": "MDQ6VXNlcjM3MDk3MTU=", + "avatar_url": "https://avatars.githubusercontent.com/u/3709715?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/cclauss", + "html_url": "https://github.com/cclauss", + "followers_url": "https://api.github.com/users/cclauss/followers", + "following_url": "https://api.github.com/users/cclauss/following{/other_user}", + "gists_url": "https://api.github.com/users/cclauss/gists{/gist_id}", + "starred_url": "https://api.github.com/users/cclauss/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/cclauss/subscriptions", + "organizations_url": "https://api.github.com/users/cclauss/orgs", + "repos_url": "https://api.github.com/users/cclauss/repos", + "events_url": "https://api.github.com/users/cclauss/events{/privacy}", + "received_events_url": "https://api.github.com/users/cclauss/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/132/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/132/timeline", + "performed_via_github_app": null, + "state_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/133", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/133/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/133/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/133/events", + "html_url": "https://github.com/un33k/python-slugify/issues/133", + "id": 1823555651, + "node_id": "I_kwDOAF7qK85ssUBD", + "number": 133, + "title": "Option to convert a string to a \"safe\" filename and modify the original name as less as possible ", + "user": { + "login": "sisrfeng", + "id": 53520949, + "node_id": "MDQ6VXNlcjUzNTIwOTQ5", + "avatar_url": "https://avatars.githubusercontent.com/u/53520949?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/sisrfeng", + "html_url": "https://github.com/sisrfeng", + "followers_url": "https://api.github.com/users/sisrfeng/followers", + "following_url": "https://api.github.com/users/sisrfeng/following{/other_user}", + "gists_url": "https://api.github.com/users/sisrfeng/gists{/gist_id}", + "starred_url": "https://api.github.com/users/sisrfeng/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/sisrfeng/subscriptions", + "organizations_url": "https://api.github.com/users/sisrfeng/orgs", + "repos_url": "https://api.github.com/users/sisrfeng/repos", + "events_url": "https://api.github.com/users/sisrfeng/events{/privacy}", + "received_events_url": "https://api.github.com/users/sisrfeng/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2023-07-27T03:43:17Z", + "updated_at": "2023-10-09T14:29:51Z", + "closed_at": "2023-10-09T14:29:51Z", + "assignee": null, + "author_association": "NONE", + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "How to get a safe filename for linux?", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/133/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/133/timeline", + "performed_via_github_app": null, + "state_reason": "completed", + "pinned_comment": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/134", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/134/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/134/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/134/events", + "html_url": "https://github.com/un33k/python-slugify/pull/134", + "id": 1838437491, + "node_id": "PR_kwDOAF7qK85XSDw3", + "number": 134, + "title": "Enables mypy --strict and adds corresponding types", + "user": { + "login": "jmelahman", + "id": 23436978, + "node_id": "MDQ6VXNlcjIzNDM2OTc4", + "avatar_url": "https://avatars.githubusercontent.com/u/23436978?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/jmelahman", + "html_url": "https://github.com/jmelahman", + "followers_url": "https://api.github.com/users/jmelahman/followers", + "following_url": "https://api.github.com/users/jmelahman/following{/other_user}", + "gists_url": "https://api.github.com/users/jmelahman/gists{/gist_id}", + "starred_url": "https://api.github.com/users/jmelahman/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/jmelahman/subscriptions", + "organizations_url": "https://api.github.com/users/jmelahman/orgs", + "repos_url": "https://api.github.com/users/jmelahman/repos", + "events_url": "https://api.github.com/users/jmelahman/events{/privacy}", + "received_events_url": "https://api.github.com/users/jmelahman/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 5, + "created_at": "2023-08-06T22:15:24Z", + "updated_at": "2023-08-13T22:08:47Z", + "closed_at": "2023-08-13T19:53:50Z", + "assignee": null, + "author_association": "NONE", + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/134", + "html_url": "https://github.com/un33k/python-slugify/pull/134", + "diff_url": "https://github.com/un33k/python-slugify/pull/134.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/134.patch", + "merged_at": null + }, + "body": "Enables `mypy --strict` and types everything to be mostly compliant. There are a few, internal ignores mostly because they either require refactoring or extra dependencies (like [typing-extensions](https://pypi.org/project/typing-extensions/) for older python versions).\r\n\r\nI tried to minimize behavioral changes, though there are some. Can address the TODOs introduced here to achieve stronger type-safety or I can follow up with a separate change if desired.\r\n\r\nThis is pushed to HEAD of my fork and you can observe CI approves, https://github.com/jmelahman/python-slugify/actions/runs/5779513831", + "closed_by": { + "login": "jmelahman", + "id": 23436978, + "node_id": "MDQ6VXNlcjIzNDM2OTc4", + "avatar_url": "https://avatars.githubusercontent.com/u/23436978?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/jmelahman", + "html_url": "https://github.com/jmelahman", + "followers_url": "https://api.github.com/users/jmelahman/followers", + "following_url": "https://api.github.com/users/jmelahman/following{/other_user}", + "gists_url": "https://api.github.com/users/jmelahman/gists{/gist_id}", + "starred_url": "https://api.github.com/users/jmelahman/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/jmelahman/subscriptions", + "organizations_url": "https://api.github.com/users/jmelahman/orgs", + "repos_url": "https://api.github.com/users/jmelahman/repos", + "events_url": "https://api.github.com/users/jmelahman/events{/privacy}", + "received_events_url": "https://api.github.com/users/jmelahman/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/134/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/134/timeline", + "performed_via_github_app": null, + "state_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/135", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/135/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/135/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/135/events", + "html_url": "https://github.com/un33k/python-slugify/pull/135", + "id": 1932935928, + "node_id": "PR_kwDOAF7qK85cQKOO", + "number": 135, + "title": "Add typing and expose ``py.typed``", + "user": { + "login": "DanielNoord", + "id": 13665637, + "node_id": "MDQ6VXNlcjEzNjY1NjM3", + "avatar_url": "https://avatars.githubusercontent.com/u/13665637?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/DanielNoord", + "html_url": "https://github.com/DanielNoord", + "followers_url": "https://api.github.com/users/DanielNoord/followers", + "following_url": "https://api.github.com/users/DanielNoord/following{/other_user}", + "gists_url": "https://api.github.com/users/DanielNoord/gists{/gist_id}", + "starred_url": "https://api.github.com/users/DanielNoord/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/DanielNoord/subscriptions", + "organizations_url": "https://api.github.com/users/DanielNoord/orgs", + "repos_url": "https://api.github.com/users/DanielNoord/repos", + "events_url": "https://api.github.com/users/DanielNoord/events{/privacy}", + "received_events_url": "https://api.github.com/users/DanielNoord/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 2, + "created_at": "2023-10-09T12:15:23Z", + "updated_at": "2023-10-09T13:50:47Z", + "closed_at": "2023-10-09T13:50:23Z", + "assignee": null, + "author_association": "CONTRIBUTOR", + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/135", + "html_url": "https://github.com/un33k/python-slugify/pull/135", + "diff_url": "https://github.com/un33k/python-slugify/pull/135.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/135.patch", + "merged_at": "2023-10-09T13:50:23Z" + }, + "body": "This adds typing to the package and exposes a `py.typed` file.\r\n\r\nThere is one change where `add_uppercase_char` returns `char_list` if the other `return` statement is never met. This seems intended, the function returning `None` doesn't seem like what is intended with the code.\r\n\r\nLet me know if I need to make any changes!\r\n\r\nThe tests passed with this change on `3.7`.", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/135/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/135/timeline", + "performed_via_github_app": null, + "state_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/136", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/136/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/136/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/136/events", + "html_url": "https://github.com/un33k/python-slugify/pull/136", + "id": 1933188296, + "node_id": "PR_kwDOAF7qK85cRCgi", + "number": 136, + "title": "Revert \"Replace flake8 and pycodestyle with ruff\"", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 0, + "created_at": "2023-10-09T14:14:56Z", + "updated_at": "2023-10-09T14:15:05Z", + "closed_at": "2023-10-09T14:15:05Z", + "assignee": null, + "author_association": "OWNER", + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/136", + "html_url": "https://github.com/un33k/python-slugify/pull/136", + "diff_url": "https://github.com/un33k/python-slugify/pull/136.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/136.patch", + "merged_at": "2023-10-09T14:15:05Z" + }, + "body": "Reverts un33k/python-slugify#131\r\n\r\nGithub Action Error:\r\n```\r\n Python 3.7\r\nNo file in /home/runner/work/python-slugify/python-slugify matched to [**/requirements.txt \r\nor **/pyproject.toml], make sure you have checked out the target repository\r\n```", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/136/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/136/timeline", + "performed_via_github_app": null, + "state_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/137", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/137/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/137/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/137/events", + "html_url": "https://github.com/un33k/python-slugify/pull/137", + "id": 1933203174, + "node_id": "PR_kwDOAF7qK85cRF5Z", + "number": 137, + "title": "Add typing and expose py.typed", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 0, + "created_at": "2023-10-09T14:20:44Z", + "updated_at": "2023-10-09T14:20:55Z", + "closed_at": "2023-10-09T14:20:54Z", + "assignee": null, + "author_association": "OWNER", + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/137", + "html_url": "https://github.com/un33k/python-slugify/pull/137", + "diff_url": "https://github.com/un33k/python-slugify/pull/137.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/137.patch", + "merged_at": "2023-10-09T14:20:54Z" + }, + "body": "[Add typing and expose](https://github.com/un33k/python-slugify/commit/c3fe5741141142f9bcc3750d095b534afba02fed) [py.typed](https://github.com/un33k/python-slugify/commit/c3fe5741141142f9bcc3750d095b534afba02fed)", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/137/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/137/timeline", + "performed_via_github_app": null, + "state_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/138", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/138/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/138/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/138/events", + "html_url": "https://github.com/un33k/python-slugify/issues/138", + "id": 1961768113, + "node_id": "I_kwDOAF7qK8507jSx", + "number": 138, + "title": "Formally support python 3.12", + "user": { + "login": "foarsitter", + "id": 3885256, + "node_id": "MDQ6VXNlcjM4ODUyNTY=", + "avatar_url": "https://avatars.githubusercontent.com/u/3885256?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/foarsitter", + "html_url": "https://github.com/foarsitter", + "followers_url": "https://api.github.com/users/foarsitter/followers", + "following_url": "https://api.github.com/users/foarsitter/following{/other_user}", + "gists_url": "https://api.github.com/users/foarsitter/gists{/gist_id}", + "starred_url": "https://api.github.com/users/foarsitter/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/foarsitter/subscriptions", + "organizations_url": "https://api.github.com/users/foarsitter/orgs", + "repos_url": "https://api.github.com/users/foarsitter/repos", + "events_url": "https://api.github.com/users/foarsitter/events{/privacy}", + "received_events_url": "https://api.github.com/users/foarsitter/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 0, + "created_at": "2023-10-25T16:05:06Z", + "updated_at": "2023-10-25T16:27:20Z", + "closed_at": "2023-10-25T16:27:19Z", + "assignee": null, + "author_association": "CONTRIBUTOR", + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "Python 3.12 was published on October 2 so it is time support it 🚀\r\n\r\nI don't think there is much to do so it is only a formality. ", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/138/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/138/timeline", + "performed_via_github_app": null, + "state_reason": "completed", + "pinned_comment": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/139", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/139/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/139/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/139/events", + "html_url": "https://github.com/un33k/python-slugify/pull/139", + "id": 1961769048, + "node_id": "PR_kwDOAF7qK85dxesR", + "number": 139, + "title": "Add Python 3.12 to test matrix and add classifier to the setup", + "user": { + "login": "foarsitter", + "id": 3885256, + "node_id": "MDQ6VXNlcjM4ODUyNTY=", + "avatar_url": "https://avatars.githubusercontent.com/u/3885256?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/foarsitter", + "html_url": "https://github.com/foarsitter", + "followers_url": "https://api.github.com/users/foarsitter/followers", + "following_url": "https://api.github.com/users/foarsitter/following{/other_user}", + "gists_url": "https://api.github.com/users/foarsitter/gists{/gist_id}", + "starred_url": "https://api.github.com/users/foarsitter/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/foarsitter/subscriptions", + "organizations_url": "https://api.github.com/users/foarsitter/orgs", + "repos_url": "https://api.github.com/users/foarsitter/repos", + "events_url": "https://api.github.com/users/foarsitter/events{/privacy}", + "received_events_url": "https://api.github.com/users/foarsitter/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 2, + "created_at": "2023-10-25T16:05:39Z", + "updated_at": "2023-10-26T13:28:09Z", + "closed_at": "2023-10-25T16:27:19Z", + "assignee": null, + "author_association": "CONTRIBUTOR", + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/139", + "html_url": "https://github.com/un33k/python-slugify/pull/139", + "diff_url": "https://github.com/un33k/python-slugify/pull/139.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/139.patch", + "merged_at": "2023-10-25T16:27:19Z" + }, + "body": "This PR adds Python 3.12 to the test matrix and classifiers \r\n\r\nFixes #138", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/139/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/139/timeline", + "performed_via_github_app": null, + "state_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/140", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/140/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/140/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/140/events", + "html_url": "https://github.com/un33k/python-slugify/issues/140", + "id": 1974528925, + "node_id": "I_kwDOAF7qK851sOud", + "number": 140, + "title": "pip install python-slugify[unidecode] also installs text-unidecode", + "user": { + "login": "Schulzjo", + "id": 51380820, + "node_id": "MDQ6VXNlcjUxMzgwODIw", + "avatar_url": "https://avatars.githubusercontent.com/u/51380820?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/Schulzjo", + "html_url": "https://github.com/Schulzjo", + "followers_url": "https://api.github.com/users/Schulzjo/followers", + "following_url": "https://api.github.com/users/Schulzjo/following{/other_user}", + "gists_url": "https://api.github.com/users/Schulzjo/gists{/gist_id}", + "starred_url": "https://api.github.com/users/Schulzjo/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/Schulzjo/subscriptions", + "organizations_url": "https://api.github.com/users/Schulzjo/orgs", + "repos_url": "https://api.github.com/users/Schulzjo/repos", + "events_url": "https://api.github.com/users/Schulzjo/events{/privacy}", + "received_events_url": "https://api.github.com/users/Schulzjo/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2023-11-02T15:40:36Z", + "updated_at": "2023-11-08T19:50:06Z", + "closed_at": "2023-11-08T19:50:06Z", + "assignee": null, + "author_association": "NONE", + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "Hey,\r\n`pip install python-slugify[unidecode] ` also installs text-unidecode.\r\nDo I misunderstand the notice on the README? \r\nI have interpreted the note in such a way that it installs unidecode as alternative and not parallel.\r\n\r\nThx for clarification\r\n", + "closed_by": { + "login": "Schulzjo", + "id": 51380820, + "node_id": "MDQ6VXNlcjUxMzgwODIw", + "avatar_url": "https://avatars.githubusercontent.com/u/51380820?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/Schulzjo", + "html_url": "https://github.com/Schulzjo", + "followers_url": "https://api.github.com/users/Schulzjo/followers", + "following_url": "https://api.github.com/users/Schulzjo/following{/other_user}", + "gists_url": "https://api.github.com/users/Schulzjo/gists{/gist_id}", + "starred_url": "https://api.github.com/users/Schulzjo/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/Schulzjo/subscriptions", + "organizations_url": "https://api.github.com/users/Schulzjo/orgs", + "repos_url": "https://api.github.com/users/Schulzjo/repos", + "events_url": "https://api.github.com/users/Schulzjo/events{/privacy}", + "received_events_url": "https://api.github.com/users/Schulzjo/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/140/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/140/timeline", + "performed_via_github_app": null, + "state_reason": "completed", + "pinned_comment": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/141", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/141/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/141/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/141/events", + "html_url": "https://github.com/un33k/python-slugify/issues/141", + "id": 2082740992, + "node_id": "I_kwDOAF7qK858JBsA", + "number": 141, + "title": "PyPi tarball is missing files", + "user": { + "login": "nieder", + "id": 1105137, + "node_id": "MDQ6VXNlcjExMDUxMzc=", + "avatar_url": "https://avatars.githubusercontent.com/u/1105137?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/nieder", + "html_url": "https://github.com/nieder", + "followers_url": "https://api.github.com/users/nieder/followers", + "following_url": "https://api.github.com/users/nieder/following{/other_user}", + "gists_url": "https://api.github.com/users/nieder/gists{/gist_id}", + "starred_url": "https://api.github.com/users/nieder/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/nieder/subscriptions", + "organizations_url": "https://api.github.com/users/nieder/orgs", + "repos_url": "https://api.github.com/users/nieder/repos", + "events_url": "https://api.github.com/users/nieder/events{/privacy}", + "received_events_url": "https://api.github.com/users/nieder/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 2, + "created_at": "2024-01-15T22:15:08Z", + "updated_at": "2024-01-25T17:08:47Z", + "closed_at": "2024-01-25T17:08:47Z", + "assignee": null, + "author_association": "NONE", + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "From PyPi:\r\n```\r\npython-slugify-8.0.1/\r\npython-slugify-8.0.1/CHANGELOG.md\r\npython-slugify-8.0.1/LICENSE\r\npython-slugify-8.0.1/MANIFEST.in\r\npython-slugify-8.0.1/PKG-INFO\r\npython-slugify-8.0.1/README.md\r\npython-slugify-8.0.1/python_slugify.egg-info/\r\npython-slugify-8.0.1/python_slugify.egg-info/PKG-INFO\r\npython-slugify-8.0.1/python_slugify.egg-info/SOURCES.txt\r\npython-slugify-8.0.1/python_slugify.egg-info/dependency_links.txt\r\npython-slugify-8.0.1/python_slugify.egg-info/entry_points.txt\r\npython-slugify-8.0.1/python_slugify.egg-info/not-zip-safe\r\npython-slugify-8.0.1/python_slugify.egg-info/requires.txt\r\npython-slugify-8.0.1/python_slugify.egg-info/top_level.txt\r\npython-slugify-8.0.1/setup.cfg\r\npython-slugify-8.0.1/setup.py\r\npython-slugify-8.0.1/slugify/\r\npython-slugify-8.0.1/slugify/__init__.py\r\npython-slugify-8.0.1/slugify/__main__.py\r\npython-slugify-8.0.1/slugify/__version__.py\r\npython-slugify-8.0.1/slugify/slugify.py\r\npython-slugify-8.0.1/slugify/special.py\r\n```\r\n\r\nFrom github tarball:\r\n```\r\npython-slugify-8.0.1/\r\npython-slugify-8.0.1/.github/\r\npython-slugify-8.0.1/.github/workflows/\r\npython-slugify-8.0.1/.github/workflows/ci.yml\r\npython-slugify-8.0.1/.github/workflows/dev.yml\r\npython-slugify-8.0.1/.github/workflows/main.yml\r\npython-slugify-8.0.1/.gitignore\r\npython-slugify-8.0.1/.vscode/\r\npython-slugify-8.0.1/.vscode/settings.json\r\npython-slugify-8.0.1/CHANGELOG.md\r\npython-slugify-8.0.1/LICENSE\r\npython-slugify-8.0.1/MANIFEST.in\r\npython-slugify-8.0.1/README.md\r\npython-slugify-8.0.1/dev.requirements.txt\r\npython-slugify-8.0.1/format.sh\r\npython-slugify-8.0.1/setup.py\r\npython-slugify-8.0.1/slugify/\r\npython-slugify-8.0.1/slugify/__init__.py\r\npython-slugify-8.0.1/slugify/__main__.py\r\npython-slugify-8.0.1/slugify/__version__.py\r\npython-slugify-8.0.1/slugify/slugify.py\r\npython-slugify-8.0.1/slugify/special.py\r\npython-slugify-8.0.1/test.py\r\n```\r\n\r\nThe .github/* files obviously are not needed, but test.py is missing, so that tests can't be run if one downloads the PyPi distribution.", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/141/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/141/timeline", + "performed_via_github_app": null, + "state_reason": "completed", + "pinned_comment": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/142", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/142/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/142/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/142/events", + "html_url": "https://github.com/un33k/python-slugify/issues/142", + "id": 2100105946, + "node_id": "I_kwDOAF7qK859LRLa", + "number": 142, + "title": "Unicode confusables characters are removed", + "user": { + "login": "chuckyblack", + "id": 116579, + "node_id": "MDQ6VXNlcjExNjU3OQ==", + "avatar_url": "https://avatars.githubusercontent.com/u/116579?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/chuckyblack", + "html_url": "https://github.com/chuckyblack", + "followers_url": "https://api.github.com/users/chuckyblack/followers", + "following_url": "https://api.github.com/users/chuckyblack/following{/other_user}", + "gists_url": "https://api.github.com/users/chuckyblack/gists{/gist_id}", + "starred_url": "https://api.github.com/users/chuckyblack/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/chuckyblack/subscriptions", + "organizations_url": "https://api.github.com/users/chuckyblack/orgs", + "repos_url": "https://api.github.com/users/chuckyblack/repos", + "events_url": "https://api.github.com/users/chuckyblack/events{/privacy}", + "received_events_url": "https://api.github.com/users/chuckyblack/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2024-01-25T10:50:14Z", + "updated_at": "2024-01-25T17:08:33Z", + "closed_at": "2024-01-25T17:08:33Z", + "assignee": null, + "author_association": "NONE", + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "https://util.unicode.org/UnicodeJsps/confusables.jsp?a=a&r=None\r\n\r\n### Current result\r\n\r\n```python\r\nfrom slugify import slugify\r\n\r\nassert slugify(\"𝐚́́𝕒́\") == \"\"\r\n```\r\n\r\n### Expected result\r\n\r\n```python\r\nfrom slugify import slugify\r\n\r\nassert slugify(\"𝐚́́𝕒́\") == \"aa\"\r\n```\r\n\r\n### Possible solution\r\n\r\nI think `text = unicodedata.normalize(\"NFKC\", text)` should be called before `text = unidecode.unidecode(text)`.\r\n", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/142/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/142/timeline", + "performed_via_github_app": null, + "state_reason": "completed", + "pinned_comment": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/143", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/143/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/143/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/143/events", + "html_url": "https://github.com/un33k/python-slugify/pull/143", + "id": 2100818241, + "node_id": "PR_kwDOAF7qK85lFon3", + "number": 143, + "title": "Ci - Normalize accented text twice.", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 0, + "created_at": "2024-01-25T17:04:15Z", + "updated_at": "2024-01-25T17:04:55Z", + "closed_at": "2024-01-25T17:04:55Z", + "assignee": null, + "author_association": "OWNER", + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/143", + "html_url": "https://github.com/un33k/python-slugify/pull/143", + "diff_url": "https://github.com/un33k/python-slugify/pull/143.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/143.patch", + "merged_at": "2024-01-25T17:04:55Z" + }, + "body": "Normalize accented text twice.", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/143/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/143/timeline", + "performed_via_github_app": null, + "state_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/144", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/144/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/144/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/144/events", + "html_url": "https://github.com/un33k/python-slugify/issues/144", + "id": 2103215895, + "node_id": "I_kwDOAF7qK859XIcX", + "number": 144, + "title": "TypeError: decoding to str: need a bytes-like object, int found", + "user": { + "login": "codyc1515", + "id": 50791984, + "node_id": "MDQ6VXNlcjUwNzkxOTg0", + "avatar_url": "https://avatars.githubusercontent.com/u/50791984?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/codyc1515", + "html_url": "https://github.com/codyc1515", + "followers_url": "https://api.github.com/users/codyc1515/followers", + "following_url": "https://api.github.com/users/codyc1515/following{/other_user}", + "gists_url": "https://api.github.com/users/codyc1515/gists{/gist_id}", + "starred_url": "https://api.github.com/users/codyc1515/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/codyc1515/subscriptions", + "organizations_url": "https://api.github.com/users/codyc1515/orgs", + "repos_url": "https://api.github.com/users/codyc1515/repos", + "events_url": "https://api.github.com/users/codyc1515/events{/privacy}", + "received_events_url": "https://api.github.com/users/codyc1515/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 3, + "created_at": "2024-01-27T04:36:10Z", + "updated_at": "2024-01-27T23:51:09Z", + "closed_at": "2024-01-27T23:51:09Z", + "assignee": null, + "author_association": "NONE", + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "There is [code present](https://github.com/un33k/python-slugify/blame/e52c35e34899bc21a389aa7f4fe5084423cf538c/slugify/slugify.py#L116) to convert any non-Str values passed in into Str; however, I don't think this part of the code can ever be reached. Example:\r\n\r\n```\r\n>>> from slugify import slugify\r\n>>> slugify(123)\r\nTraceback (most recent call last):\r\n File \"\", line 1, in \r\n File \"C:\\Users\\CodyC\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.11_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python311\\site-packages\\slugify\\slugify.py\", line 95, in slugify\r\n text = str(text, 'utf-8', 'ignore')\r\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\nTypeError: decoding to str: need a bytes-like object, int found\r\n```\r\n\r\n```\r\n>>> slugify('123')\r\n'123'\r\n```", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/144/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/144/timeline", + "performed_via_github_app": null, + "state_reason": "completed", + "pinned_comment": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/145", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/145/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/145/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/145/events", + "html_url": "https://github.com/un33k/python-slugify/pull/145", + "id": 2110038034, + "node_id": "PR_kwDOAF7qK85lkUrO", + "number": 145, + "title": "Remove compatibility with unsupported Python versions", + "user": { + "login": "Viicos", + "id": 65306057, + "node_id": "MDQ6VXNlcjY1MzA2MDU3", + "avatar_url": "https://avatars.githubusercontent.com/u/65306057?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/Viicos", + "html_url": "https://github.com/Viicos", + "followers_url": "https://api.github.com/users/Viicos/followers", + "following_url": "https://api.github.com/users/Viicos/following{/other_user}", + "gists_url": "https://api.github.com/users/Viicos/gists{/gist_id}", + "starred_url": "https://api.github.com/users/Viicos/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/Viicos/subscriptions", + "organizations_url": "https://api.github.com/users/Viicos/orgs", + "repos_url": "https://api.github.com/users/Viicos/repos", + "events_url": "https://api.github.com/users/Viicos/events{/privacy}", + "received_events_url": "https://api.github.com/users/Viicos/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2024-01-31T12:56:18Z", + "updated_at": "2024-01-31T17:58:29Z", + "closed_at": "2024-01-31T17:55:11Z", + "assignee": null, + "author_association": "CONTRIBUTOR", + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/145", + "html_url": "https://github.com/un33k/python-slugify/pull/145", + "diff_url": "https://github.com/un33k/python-slugify/pull/145.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/145.patch", + "merged_at": null + }, + "body": "Also fix typing of `pattern`", + "closed_by": { + "login": "Viicos", + "id": 65306057, + "node_id": "MDQ6VXNlcjY1MzA2MDU3", + "avatar_url": "https://avatars.githubusercontent.com/u/65306057?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/Viicos", + "html_url": "https://github.com/Viicos", + "followers_url": "https://api.github.com/users/Viicos/followers", + "following_url": "https://api.github.com/users/Viicos/following{/other_user}", + "gists_url": "https://api.github.com/users/Viicos/gists{/gist_id}", + "starred_url": "https://api.github.com/users/Viicos/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/Viicos/subscriptions", + "organizations_url": "https://api.github.com/users/Viicos/orgs", + "repos_url": "https://api.github.com/users/Viicos/repos", + "events_url": "https://api.github.com/users/Viicos/events{/privacy}", + "received_events_url": "https://api.github.com/users/Viicos/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/145/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/145/timeline", + "performed_via_github_app": null, + "state_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/146", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/146/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/146/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/146/events", + "html_url": "https://github.com/un33k/python-slugify/pull/146", + "id": 2110663952, + "node_id": "PR_kwDOAF7qK85lmfL-", + "number": 146, + "title": "Remove compatibility with unsupported Python versions", + "user": { + "login": "Viicos", + "id": 65306057, + "node_id": "MDQ6VXNlcjY1MzA2MDU3", + "avatar_url": "https://avatars.githubusercontent.com/u/65306057?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/Viicos", + "html_url": "https://github.com/Viicos", + "followers_url": "https://api.github.com/users/Viicos/followers", + "following_url": "https://api.github.com/users/Viicos/following{/other_user}", + "gists_url": "https://api.github.com/users/Viicos/gists{/gist_id}", + "starred_url": "https://api.github.com/users/Viicos/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/Viicos/subscriptions", + "organizations_url": "https://api.github.com/users/Viicos/orgs", + "repos_url": "https://api.github.com/users/Viicos/repos", + "events_url": "https://api.github.com/users/Viicos/events{/privacy}", + "received_events_url": "https://api.github.com/users/Viicos/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 2, + "created_at": "2024-01-31T17:58:06Z", + "updated_at": "2024-01-31T18:19:01Z", + "closed_at": "2024-01-31T18:04:19Z", + "assignee": null, + "author_association": "CONTRIBUTOR", + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/146", + "html_url": "https://github.com/un33k/python-slugify/pull/146", + "diff_url": "https://github.com/un33k/python-slugify/pull/146.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/146.patch", + "merged_at": "2024-01-31T18:04:19Z" + }, + "body": "Also fix typing of `pattern`", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/146/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/146/timeline", + "performed_via_github_app": null, + "state_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/147", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/147/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/147/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/147/events", + "html_url": "https://github.com/un33k/python-slugify/pull/147", + "id": 2110694033, + "node_id": "PR_kwDOAF7qK85lmlvA", + "number": 147, + "title": "Drop compatibility for unsupported Python Version", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 0, + "created_at": "2024-01-31T18:15:28Z", + "updated_at": "2024-01-31T18:16:35Z", + "closed_at": "2024-01-31T18:16:35Z", + "assignee": null, + "author_association": "OWNER", + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/147", + "html_url": "https://github.com/un33k/python-slugify/pull/147", + "diff_url": "https://github.com/un33k/python-slugify/pull/147.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/147.patch", + "merged_at": "2024-01-31T18:16:35Z" + }, + "body": "## 8.0.3\r\n\r\n- Drop compatibility for unsupported Python Version (@Viicos - thx)\r\n- Fix pattern types. \r\n", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/147/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/147/timeline", + "performed_via_github_app": null, + "state_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/148", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/148/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/148/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/148/events", + "html_url": "https://github.com/un33k/python-slugify/pull/148", + "id": 2125721747, + "node_id": "PR_kwDOAF7qK85mZ-5e", + "number": 148, + "title": "Fix uppercase pre-translations", + "user": { + "login": "mib1185", + "id": 35783820, + "node_id": "MDQ6VXNlcjM1NzgzODIw", + "avatar_url": "https://avatars.githubusercontent.com/u/35783820?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/mib1185", + "html_url": "https://github.com/mib1185", + "followers_url": "https://api.github.com/users/mib1185/followers", + "following_url": "https://api.github.com/users/mib1185/following{/other_user}", + "gists_url": "https://api.github.com/users/mib1185/gists{/gist_id}", + "starred_url": "https://api.github.com/users/mib1185/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/mib1185/subscriptions", + "organizations_url": "https://api.github.com/users/mib1185/orgs", + "repos_url": "https://api.github.com/users/mib1185/repos", + "events_url": "https://api.github.com/users/mib1185/events{/privacy}", + "received_events_url": "https://api.github.com/users/mib1185/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 4, + "created_at": "2024-02-08T17:29:22Z", + "updated_at": "2024-02-08T18:33:07Z", + "closed_at": "2024-02-08T18:23:57Z", + "assignee": null, + "author_association": "CONTRIBUTOR", + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/148", + "html_url": "https://github.com/un33k/python-slugify/pull/148", + "diff_url": "https://github.com/un33k/python-slugify/pull/148.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/148.patch", + "merged_at": "2024-02-08T18:23:57Z" + }, + "body": "before\r\n```python\r\n>>> from slugify import PRE_TRANSLATIONS\r\n>>> print(PRE_TRANSLATIONS)\r\n[('Ё', 'E'), ('ё', 'e'), ('я', 'ya'), ('х', 'h'), ('у', 'y'), ('щ', 'sch'), ('ю', 'u'), ('Ä', 'Ae'), ('ä', 'ae'), ('ö', 'oe'), ('ü', 'ue'), ('Χ', 'Ch'), ('χ', 'ch'), ('Ξ', 'X'), ('ϒ', 'Y'), ('υ', 'y'), ('ύ', 'y'), ('ϋ', 'y'), ('ΰ', 'y')]\r\n```\r\n\r\nafter\r\n\r\n```python\r\n>>> from slugify import PRE_TRANSLATIONS\r\n>>> print(PRE_TRANSLATIONS)\r\n[('Ю', 'U'), ('Щ', 'Sch'), ('У', 'Y'), ('Х', 'H'), ('Я', 'Ya'), ('Ё', 'E'), ('ё', 'e'), ('я', 'ya'), ('х', 'h'), ('у', 'y'), ('щ', 'sch'), ('ю', 'u'), ('Ü', 'Ue'), ('Ö', 'Oe'), ('Ä', 'Ae'), ('ä', 'ae'), ('ö', 'oe'), ('ü', 'ue'), ('Ϋ́', 'Y'), ('Ϋ', 'Y'), ('Ύ', 'Y'), ('Υ', 'Y'), ('Χ', 'Ch'), ('χ', 'ch'), ('Ξ', 'X'), ('ϒ', 'Y'), ('υ', 'y'), ('ύ', 'y'), ('ϋ', 'y'), ('ΰ', 'y')]\r\n```", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/148/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/148/timeline", + "performed_via_github_app": null, + "state_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/149", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/149/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/149/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/149/events", + "html_url": "https://github.com/un33k/python-slugify/pull/149", + "id": 2125824421, + "node_id": "PR_kwDOAF7qK85maVh9", + "number": 149, + "title": "Uppercase handling of special chars", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 0, + "created_at": "2024-02-08T18:30:02Z", + "updated_at": "2024-02-08T18:31:20Z", + "closed_at": "2024-02-08T18:31:20Z", + "assignee": null, + "author_association": "OWNER", + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/149", + "html_url": "https://github.com/un33k/python-slugify/pull/149", + "diff_url": "https://github.com/un33k/python-slugify/pull/149.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/149.patch", + "merged_at": "2024-02-08T18:31:20Z" + }, + "body": "Uppercase handling of special chars", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/149/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/149/timeline", + "performed_via_github_app": null, + "state_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/150", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/150/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/150/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/150/events", + "html_url": "https://github.com/un33k/python-slugify/issues/150", + "id": 2164994166, + "node_id": "I_kwDOAF7qK86BCzB2", + "number": 150, + "title": "Argument to make flugified strings valid XML id attributes.", + "user": { + "login": "jenstroeger", + "id": 12053937, + "node_id": "MDQ6VXNlcjEyMDUzOTM3", + "avatar_url": "https://avatars.githubusercontent.com/u/12053937?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/jenstroeger", + "html_url": "https://github.com/jenstroeger", + "followers_url": "https://api.github.com/users/jenstroeger/followers", + "following_url": "https://api.github.com/users/jenstroeger/following{/other_user}", + "gists_url": "https://api.github.com/users/jenstroeger/gists{/gist_id}", + "starred_url": "https://api.github.com/users/jenstroeger/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/jenstroeger/subscriptions", + "organizations_url": "https://api.github.com/users/jenstroeger/orgs", + "repos_url": "https://api.github.com/users/jenstroeger/repos", + "events_url": "https://api.github.com/users/jenstroeger/events{/privacy}", + "received_events_url": "https://api.github.com/users/jenstroeger/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2024-03-02T22:02:04Z", + "updated_at": "2024-03-03T22:40:43Z", + "closed_at": "2024-03-03T22:40:43Z", + "assignee": null, + "author_association": "NONE", + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "Thank you for this great package! I have a question/feature request, though.\r\n\r\nSuppose I have a call like this:\r\n```python\r\n>>> slugify.slugify(\"1: Into the Dark\")\r\n'1-into-the-dark'\r\n```\r\nwhich is an invalid XML `id` attribute because it starts with a number (see also [`xml:id` spec](https://www.w3.org/TR/xml-id/) and [NCName](https://www.w3.org/TR/xml-names11/#NT-NCName) definition).\r\n\r\nWould it make sense to add a `valid_xml_id=True` argument to the `slugify()` function? My current approach is somewhat naive:\r\n```python\r\nslug = slugify.slugify(chapter_title, max_length=32)\r\nif regex.fullmatch(r\"^\\d+.*\", slug):\r\n slug = f\"chapter-{slug}\"\r\n```\r\nbut I think having support from `slugify()` might benefit others, too? Happy to attempt a PR, if it helps.", + "closed_by": { + "login": "jenstroeger", + "id": 12053937, + "node_id": "MDQ6VXNlcjEyMDUzOTM3", + "avatar_url": "https://avatars.githubusercontent.com/u/12053937?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/jenstroeger", + "html_url": "https://github.com/jenstroeger", + "followers_url": "https://api.github.com/users/jenstroeger/followers", + "following_url": "https://api.github.com/users/jenstroeger/following{/other_user}", + "gists_url": "https://api.github.com/users/jenstroeger/gists{/gist_id}", + "starred_url": "https://api.github.com/users/jenstroeger/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/jenstroeger/subscriptions", + "organizations_url": "https://api.github.com/users/jenstroeger/orgs", + "repos_url": "https://api.github.com/users/jenstroeger/repos", + "events_url": "https://api.github.com/users/jenstroeger/events{/privacy}", + "received_events_url": "https://api.github.com/users/jenstroeger/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/150/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/150/timeline", + "performed_via_github_app": null, + "state_reason": "completed", + "pinned_comment": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/151", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/151/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/151/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/151/events", + "html_url": "https://github.com/un33k/python-slugify/issues/151", + "id": 2213844588, + "node_id": "I_kwDOAF7qK86D9JZs", + "number": 151, + "title": "Unicode does not work", + "user": { + "login": "pomponchik", + "id": 34486915, + "node_id": "MDQ6VXNlcjM0NDg2OTE1", + "avatar_url": "https://avatars.githubusercontent.com/u/34486915?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/pomponchik", + "html_url": "https://github.com/pomponchik", + "followers_url": "https://api.github.com/users/pomponchik/followers", + "following_url": "https://api.github.com/users/pomponchik/following{/other_user}", + "gists_url": "https://api.github.com/users/pomponchik/gists{/gist_id}", + "starred_url": "https://api.github.com/users/pomponchik/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/pomponchik/subscriptions", + "organizations_url": "https://api.github.com/users/pomponchik/orgs", + "repos_url": "https://api.github.com/users/pomponchik/repos", + "events_url": "https://api.github.com/users/pomponchik/events{/privacy}", + "received_events_url": "https://api.github.com/users/pomponchik/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 3, + "created_at": "2024-03-28T18:14:02Z", + "updated_at": "2024-10-01T16:22:17Z", + "closed_at": "2024-10-01T16:22:17Z", + "assignee": null, + "author_association": "NONE", + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "Hello!\r\n\r\nI try your library with this code:\r\n\r\n```python\r\n>>> from slugify import slugify\r\n>>> text = 'Это против природы, это неестественно'\r\n>>> slugify(text)\r\n```\r\n\r\nWhen i running this code, i get an exception:\r\n\r\n```\r\nTraceback (most recent call last):\r\n File \"\", line 1, in \r\n File \"/path_to_the_project/venv/lib/python3.7/site-packages/slugify.py\", line 24, in slugify\r\n unicode(\r\nNameError: name 'unicode' is not defined\r\n```\r\n\r\nI use Python 3.7.7 on MacOS darwin.", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/151/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/151/timeline", + "performed_via_github_app": null, + "state_reason": "completed", + "pinned_comment": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/152", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/152/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/152/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/152/events", + "html_url": "https://github.com/un33k/python-slugify/pull/152", + "id": 2534529124, + "node_id": "PR_kwDOAF7qK8578XJm", + "number": 152, + "title": "Fix wiki URLs in README.md", + "user": { + "login": "sagesharp", + "id": 270108, + "node_id": "MDQ6VXNlcjI3MDEwOA==", + "avatar_url": "https://avatars.githubusercontent.com/u/270108?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/sagesharp", + "html_url": "https://github.com/sagesharp", + "followers_url": "https://api.github.com/users/sagesharp/followers", + "following_url": "https://api.github.com/users/sagesharp/following{/other_user}", + "gists_url": "https://api.github.com/users/sagesharp/gists{/gist_id}", + "starred_url": "https://api.github.com/users/sagesharp/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/sagesharp/subscriptions", + "organizations_url": "https://api.github.com/users/sagesharp/orgs", + "repos_url": "https://api.github.com/users/sagesharp/repos", + "events_url": "https://api.github.com/users/sagesharp/events{/privacy}", + "received_events_url": "https://api.github.com/users/sagesharp/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 3, + "created_at": "2024-09-18T19:33:57Z", + "updated_at": "2025-11-20T20:37:03Z", + "closed_at": "2025-11-20T20:37:03Z", + "assignee": null, + "author_association": "NONE", + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/152", + "html_url": "https://github.com/un33k/python-slugify/pull/152", + "diff_url": "https://github.com/un33k/python-slugify/pull/152.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/152.patch", + "merged_at": "2025-11-20T20:37:03Z" + }, + "body": "See commit description.", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/152/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/152/timeline", + "performed_via_github_app": null, + "state_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/153", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/153/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/153/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/153/events", + "html_url": "https://github.com/un33k/python-slugify/issues/153", + "id": 2552337781, + "node_id": "I_kwDOAF7qK86YIZV1", + "number": 153, + "title": "The problem of converting all Korean consonants to Korean initials in the slugfiy process when they are alone.", + "user": { + "login": "LMouSoo", + "id": 5020013, + "node_id": "MDQ6VXNlcjUwMjAwMTM=", + "avatar_url": "https://avatars.githubusercontent.com/u/5020013?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/LMouSoo", + "html_url": "https://github.com/LMouSoo", + "followers_url": "https://api.github.com/users/LMouSoo/followers", + "following_url": "https://api.github.com/users/LMouSoo/following{/other_user}", + "gists_url": "https://api.github.com/users/LMouSoo/gists{/gist_id}", + "starred_url": "https://api.github.com/users/LMouSoo/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/LMouSoo/subscriptions", + "organizations_url": "https://api.github.com/users/LMouSoo/orgs", + "repos_url": "https://api.github.com/users/LMouSoo/repos", + "events_url": "https://api.github.com/users/LMouSoo/events{/privacy}", + "received_events_url": "https://api.github.com/users/LMouSoo/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2024-09-27T08:29:56Z", + "updated_at": "2024-09-27T17:03:48Z", + "closed_at": "2024-09-27T17:03:48Z", + "assignee": null, + "author_association": "NONE", + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "카커쿠 <- combined form of Korean consonant and vowel\r\nㅋㅏㅋㅓㅋㅜ<- sepearated form of Korean consonant and vowel\r\nif they're seperated, unicode value of each symbol will be differentiated\r\n \r\nIt doesn't happen often, but just like abbreviations like ASAP in English, Korean often uses consonant-only abbreviations.\r\nFor example, ㅋㅋㅋ is used similarly to lol and ㅜㅜ is used similarly to ;_; (sad emoji)\r\n\r\nIf you type ㅋ in a web address by itself, without combining it with any other consonants, it should be interpreted as Unicode 12619. However, when run it through python slugify, it changes to Unicode 4367. Is there any way to avoid this problem?", + "closed_by": { + "login": "LMouSoo", + "id": 5020013, + "node_id": "MDQ6VXNlcjUwMjAwMTM=", + "avatar_url": "https://avatars.githubusercontent.com/u/5020013?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/LMouSoo", + "html_url": "https://github.com/LMouSoo", + "followers_url": "https://api.github.com/users/LMouSoo/followers", + "following_url": "https://api.github.com/users/LMouSoo/following{/other_user}", + "gists_url": "https://api.github.com/users/LMouSoo/gists{/gist_id}", + "starred_url": "https://api.github.com/users/LMouSoo/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/LMouSoo/subscriptions", + "organizations_url": "https://api.github.com/users/LMouSoo/orgs", + "repos_url": "https://api.github.com/users/LMouSoo/repos", + "events_url": "https://api.github.com/users/LMouSoo/events{/privacy}", + "received_events_url": "https://api.github.com/users/LMouSoo/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/153/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/153/timeline", + "performed_via_github_app": null, + "state_reason": "completed", + "pinned_comment": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/154", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/154/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/154/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/154/events", + "html_url": "https://github.com/un33k/python-slugify/pull/154", + "id": 2576115340, + "node_id": "PR_kwDOAF7qK85-F0pI", + "number": 154, + "title": "Add Python 3.13 to test matrix and add classifier to the setup", + "user": { + "login": "edgarrmondragon", + "id": 16805946, + "node_id": "MDQ6VXNlcjE2ODA1OTQ2", + "avatar_url": "https://avatars.githubusercontent.com/u/16805946?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/edgarrmondragon", + "html_url": "https://github.com/edgarrmondragon", + "followers_url": "https://api.github.com/users/edgarrmondragon/followers", + "following_url": "https://api.github.com/users/edgarrmondragon/following{/other_user}", + "gists_url": "https://api.github.com/users/edgarrmondragon/gists{/gist_id}", + "starred_url": "https://api.github.com/users/edgarrmondragon/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/edgarrmondragon/subscriptions", + "organizations_url": "https://api.github.com/users/edgarrmondragon/orgs", + "repos_url": "https://api.github.com/users/edgarrmondragon/repos", + "events_url": "https://api.github.com/users/edgarrmondragon/events{/privacy}", + "received_events_url": "https://api.github.com/users/edgarrmondragon/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 3, + "created_at": "2024-10-09T14:31:35Z", + "updated_at": "2025-09-26T15:35:28Z", + "closed_at": "2025-09-26T15:20:37Z", + "assignee": null, + "author_association": "CONTRIBUTOR", + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/154", + "html_url": "https://github.com/un33k/python-slugify/pull/154", + "diff_url": "https://github.com/un33k/python-slugify/pull/154.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/154.patch", + "merged_at": "2025-09-26T15:20:37Z" + }, + "body": "I also updated the test matrix to use `pypy3.10` cause it's the only currently supported `pypy3.*`.", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/154/reactions", + "total_count": 1, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 1, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/154/timeline", + "performed_via_github_app": null, + "state_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/155", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/155/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/155/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/155/events", + "html_url": "https://github.com/un33k/python-slugify/pull/155", + "id": 3091335143, + "node_id": "PR_kwDOAF7qK86XpV2Q", + "number": 155, + "title": "rewrote slugify func with radon", + "user": { + "login": "IvanChumakov", + "id": 36165391, + "node_id": "MDQ6VXNlcjM2MTY1Mzkx", + "avatar_url": "https://avatars.githubusercontent.com/u/36165391?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/IvanChumakov", + "html_url": "https://github.com/IvanChumakov", + "followers_url": "https://api.github.com/users/IvanChumakov/followers", + "following_url": "https://api.github.com/users/IvanChumakov/following{/other_user}", + "gists_url": "https://api.github.com/users/IvanChumakov/gists{/gist_id}", + "starred_url": "https://api.github.com/users/IvanChumakov/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/IvanChumakov/subscriptions", + "organizations_url": "https://api.github.com/users/IvanChumakov/orgs", + "repos_url": "https://api.github.com/users/IvanChumakov/repos", + "events_url": "https://api.github.com/users/IvanChumakov/events{/privacy}", + "received_events_url": "https://api.github.com/users/IvanChumakov/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2025-05-26T14:06:26Z", + "updated_at": "2025-11-20T20:37:21Z", + "closed_at": "2025-11-20T20:37:21Z", + "assignee": null, + "author_association": "NONE", + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/155", + "html_url": "https://github.com/un33k/python-slugify/pull/155", + "diff_url": "https://github.com/un33k/python-slugify/pull/155.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/155.patch", + "merged_at": null + }, + "body": "Made some changes in slugify function using the Radon utility (reduce the cyclomatic complexity of the function)", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/155/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/155/timeline", + "performed_via_github_app": null, + "state_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/156", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/156/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/156/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/156/events", + "html_url": "https://github.com/un33k/python-slugify/issues/156", + "id": 3097955968, + "node_id": "I_kwDOAF7qK864pw6A", + "number": 156, + "title": "Adding Debian manpage to python-slugify", + "user": { + "login": "Arian-Ott", + "id": 88984301, + "node_id": "MDQ6VXNlcjg4OTg0MzAx", + "avatar_url": "https://avatars.githubusercontent.com/u/88984301?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/Arian-Ott", + "html_url": "https://github.com/Arian-Ott", + "followers_url": "https://api.github.com/users/Arian-Ott/followers", + "following_url": "https://api.github.com/users/Arian-Ott/following{/other_user}", + "gists_url": "https://api.github.com/users/Arian-Ott/gists{/gist_id}", + "starred_url": "https://api.github.com/users/Arian-Ott/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/Arian-Ott/subscriptions", + "organizations_url": "https://api.github.com/users/Arian-Ott/orgs", + "repos_url": "https://api.github.com/users/Arian-Ott/repos", + "events_url": "https://api.github.com/users/Arian-Ott/events{/privacy}", + "received_events_url": "https://api.github.com/users/Arian-Ott/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 2, + "created_at": "2025-05-28T16:40:32Z", + "updated_at": "2026-01-08T21:56:59Z", + "closed_at": "2026-01-08T21:56:59Z", + "assignee": null, + "author_association": "COLLABORATOR", + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "Hi,\n\nI’m maintaining the Debian package for `python-slugify`, which currently includes an old manpage (slugify.1) for the CLI tool. Inside the manpage you'd want to document the `python-slugify` CLI for CLI users.\n\n\nSince it could be useful to other users as well, I wanted to forward it upstream in case you’d be interested in including it.\n\nIf you’re open to it, I’m happy to send a PR with the manpage added. You can place it either in a dedicated `man/` directory or just leave it in the root directory.\n\nBest,\nArian", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/156/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/156/timeline", + "performed_via_github_app": null, + "state_reason": "completed", + "pinned_comment": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/157", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/157/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/157/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/157/events", + "html_url": "https://github.com/un33k/python-slugify/pull/157", + "id": 3343898951, + "node_id": "PR_kwDOAF7qK86kzWSF", + "number": 157, + "title": "Explain `save_order` more clearly", + "user": { + "login": "marksteward", + "id": 121960, + "node_id": "MDQ6VXNlcjEyMTk2MA==", + "avatar_url": "https://avatars.githubusercontent.com/u/121960?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/marksteward", + "html_url": "https://github.com/marksteward", + "followers_url": "https://api.github.com/users/marksteward/followers", + "following_url": "https://api.github.com/users/marksteward/following{/other_user}", + "gists_url": "https://api.github.com/users/marksteward/gists{/gist_id}", + "starred_url": "https://api.github.com/users/marksteward/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/marksteward/subscriptions", + "organizations_url": "https://api.github.com/users/marksteward/orgs", + "repos_url": "https://api.github.com/users/marksteward/repos", + "events_url": "https://api.github.com/users/marksteward/events{/privacy}", + "received_events_url": "https://api.github.com/users/marksteward/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2025-08-22T02:35:53Z", + "updated_at": "2025-09-26T15:20:05Z", + "closed_at": "2025-09-26T15:19:57Z", + "assignee": null, + "author_association": "CONTRIBUTOR", + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/157", + "html_url": "https://github.com/un33k/python-slugify/pull/157", + "diff_url": "https://github.com/un33k/python-slugify/pull/157.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/157.patch", + "merged_at": "2025-09-26T15:19:57Z" + }, + "body": "I had to read the code to understand what `save_order` does.", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/157/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/157/timeline", + "performed_via_github_app": null, + "state_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/158", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/158/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/158/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/158/events", + "html_url": "https://github.com/un33k/python-slugify/issues/158", + "id": 3445498482, + "node_id": "I_kwDOAF7qK87NXiJy", + "number": 158, + "title": "[WIP] Rewriting in Rust PyO3 python lib - Student / Learning project", + "user": { + "login": "gmaOCR", + "id": 85942661, + "node_id": "MDQ6VXNlcjg1OTQyNjYx", + "avatar_url": "https://avatars.githubusercontent.com/u/85942661?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/gmaOCR", + "html_url": "https://github.com/gmaOCR", + "followers_url": "https://api.github.com/users/gmaOCR/followers", + "following_url": "https://api.github.com/users/gmaOCR/following{/other_user}", + "gists_url": "https://api.github.com/users/gmaOCR/gists{/gist_id}", + "starred_url": "https://api.github.com/users/gmaOCR/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/gmaOCR/subscriptions", + "organizations_url": "https://api.github.com/users/gmaOCR/orgs", + "repos_url": "https://api.github.com/users/gmaOCR/repos", + "events_url": "https://api.github.com/users/gmaOCR/events{/privacy}", + "received_events_url": "https://api.github.com/users/gmaOCR/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2025-09-23T14:19:23Z", + "updated_at": "2025-09-30T19:52:11Z", + "closed_at": "2025-09-30T19:52:11Z", + "assignee": null, + "author_association": "NONE", + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "Hello, I've selected this repository to learn Rust ecosystem (and language too). \nI'm trying to rewrite the librairy and increase the execution speed (the goal by using Rust of course...)\nAny help, advice, guidance, kind comment are welcome !\n\nHere the project: (https://github.com/gmaOCR/slugify-rs)\n\nThank you !", + "closed_by": { + "login": "gmaOCR", + "id": 85942661, + "node_id": "MDQ6VXNlcjg1OTQyNjYx", + "avatar_url": "https://avatars.githubusercontent.com/u/85942661?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/gmaOCR", + "html_url": "https://github.com/gmaOCR", + "followers_url": "https://api.github.com/users/gmaOCR/followers", + "following_url": "https://api.github.com/users/gmaOCR/following{/other_user}", + "gists_url": "https://api.github.com/users/gmaOCR/gists{/gist_id}", + "starred_url": "https://api.github.com/users/gmaOCR/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/gmaOCR/subscriptions", + "organizations_url": "https://api.github.com/users/gmaOCR/orgs", + "repos_url": "https://api.github.com/users/gmaOCR/repos", + "events_url": "https://api.github.com/users/gmaOCR/events{/privacy}", + "received_events_url": "https://api.github.com/users/gmaOCR/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/158/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/158/timeline", + "performed_via_github_app": null, + "state_reason": "completed", + "pinned_comment": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/159", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/159/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/159/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/159/events", + "html_url": "https://github.com/un33k/python-slugify/pull/159", + "id": 3491827119, + "node_id": "PR_kwDOAF7qK86sg1uu", + "number": 159, + "title": "Fix build process", + "user": { + "login": "kurtmckee", + "id": 39996, + "node_id": "MDQ6VXNlcjM5OTk2", + "avatar_url": "https://avatars.githubusercontent.com/u/39996?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/kurtmckee", + "html_url": "https://github.com/kurtmckee", + "followers_url": "https://api.github.com/users/kurtmckee/followers", + "following_url": "https://api.github.com/users/kurtmckee/following{/other_user}", + "gists_url": "https://api.github.com/users/kurtmckee/gists{/gist_id}", + "starred_url": "https://api.github.com/users/kurtmckee/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/kurtmckee/subscriptions", + "organizations_url": "https://api.github.com/users/kurtmckee/orgs", + "repos_url": "https://api.github.com/users/kurtmckee/repos", + "events_url": "https://api.github.com/users/kurtmckee/events{/privacy}", + "received_events_url": "https://api.github.com/users/kurtmckee/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 4, + "created_at": "2025-10-07T14:50:29Z", + "updated_at": "2026-01-07T13:07:19Z", + "closed_at": "2026-01-07T07:09:50Z", + "assignee": null, + "author_association": "CONTRIBUTOR", + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/159", + "html_url": "https://github.com/un33k/python-slugify/pull/159", + "diff_url": "https://github.com/un33k/python-slugify/pull/159.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/159.patch", + "merged_at": "2026-01-07T07:09:50Z" + }, + "body": "Hello! Thanks for your work on python-slugify!\r\n\r\nslugify's packaging is using a number of deprecated constructs, and building and installing the package throws a number of deprecation warnings. This PR resolves all of the warnings that I was seeing.\r\n\r\n* Remove deprecated `codecs.open()` usage\r\n \r\n `codecs.open()` is deprecated and throws a `DeprecationWarning`:\r\n \r\n ```\r\n :20: DeprecationWarning: codecs.open() is deprecated. Use open() instead.\r\n :23: DeprecationWarning: codecs.open() is deprecated. Use open() instead.\r\n ```\r\n\r\n* Remove the unknown `tests_require` option\r\n \r\n The `tests_require` option throws a `UserWarning`:\r\n \r\n ```\r\n /.../site-packages/setuptools/_distutils/dist.py:289:\r\n UserWarning: Unknown distribution option: 'tests_require'\r\n warnings.warn(msg)\r\n ```\r\n\r\n* Resolve deprecated `License` trove classifier usage\r\n \r\n This resolves build warnings thrown by setuptools:\r\n \r\n ```\r\n /.../site-packages/setuptools/dist.py:759: SetuptoolsDeprecationWarning: License classifiers are deprecated.\r\n !!\r\n \r\n ********************************************************************************\r\n Please consider removing the following classifiers in favor of a SPDX license expression:\r\n \r\n License :: OSI Approved :: MIT License\r\n \r\n See https://packaging.python.org/en/latest/guides/writing-pyproject-toml/#license for details.\r\n ********************************************************************************\r\n \r\n !!\r\n ```\r\n\r\n* Resolve deprecation warnings thrown when installing in editable mode\r\n \r\n Running `pip install -e.` displays the following deprecation warnings:\r\n \r\n ```\r\n DEPRECATION: Legacy editable install of python-slugify==8.0.4\r\n from file:///.../pr-python-slugify (setup.py develop) is deprecated.\r\n pip 25.3 will enforce this behaviour change.\r\n A possible replacement is to add a pyproject.toml\r\n or enable --use-pep517, and use setuptools >= 64.\r\n If the resulting installation is not behaving as expected,\r\n try using --config-settings editable_mode=compat.\r\n Please consult the setuptools documentation for more information.\r\n Discussion can be found at https://github.com/pypa/pip/issues/11457\r\n ```\r\n\r\n----\r\n\r\nWith these changes, it's now possible to build and install the package without any warnings. Example:\r\n\r\n```\r\n# Building the package no longer throws warnings:\r\npython -m pip install build\r\npython -m build\r\n\r\n# Installing in editable mode no longer throws warnings:\r\npython -m pip install -e.\r\n```\r\n\r\n> [!WARNING]\r\n>\r\n> Running commands like `python setup.py bdist_wheel` is deprecated and _**may start failing at the end of this month**_. I strongly recommend migrating off of an executable `setup.py` file entirely, in favor of a declarative `pyproject.toml` file.\r\n> \r\n> ```\r\n> $ python setup.py bdist_wheel\r\n> ...\r\n> /.../lib/python3.13/site-packages/setuptools/_distutils/cmd.py:90: SetuptoolsDeprecationWarning: setup.py install is deprecated.\r\n> !!\r\n> \r\n> ********************************************************************************\r\n> Please avoid running ``setup.py`` directly.\r\n> Instead, use pypa/build, pypa/installer or other\r\n> standards-based tools.\r\n> \r\n> By 2025-Oct-31, you need to update your project and remove deprecated calls\r\n> or your builds will no longer be supported.\r\n> \r\n> See https://blog.ganssle.io/articles/2021/10/setup-py-deprecated.html for details.\r\n> ********************************************************************************\r\n> \r\n> !!\r\n> ```", + "closed_by": { + "login": "Arian-Ott", + "id": 88984301, + "node_id": "MDQ6VXNlcjg4OTg0MzAx", + "avatar_url": "https://avatars.githubusercontent.com/u/88984301?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/Arian-Ott", + "html_url": "https://github.com/Arian-Ott", + "followers_url": "https://api.github.com/users/Arian-Ott/followers", + "following_url": "https://api.github.com/users/Arian-Ott/following{/other_user}", + "gists_url": "https://api.github.com/users/Arian-Ott/gists{/gist_id}", + "starred_url": "https://api.github.com/users/Arian-Ott/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/Arian-Ott/subscriptions", + "organizations_url": "https://api.github.com/users/Arian-Ott/orgs", + "repos_url": "https://api.github.com/users/Arian-Ott/repos", + "events_url": "https://api.github.com/users/Arian-Ott/events{/privacy}", + "received_events_url": "https://api.github.com/users/Arian-Ott/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/159/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/159/timeline", + "performed_via_github_app": null, + "state_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/160", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/160/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/160/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/160/events", + "html_url": "https://github.com/un33k/python-slugify/pull/160", + "id": 3513419863, + "node_id": "PR_kwDOAF7qK86tpADr", + "number": 160, + "title": "Reintroduce tox and thoroughly test the project", + "user": { + "login": "kurtmckee", + "id": 39996, + "node_id": "MDQ6VXNlcjM5OTk2", + "avatar_url": "https://avatars.githubusercontent.com/u/39996?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/kurtmckee", + "html_url": "https://github.com/kurtmckee", + "followers_url": "https://api.github.com/users/kurtmckee/followers", + "following_url": "https://api.github.com/users/kurtmckee/following{/other_user}", + "gists_url": "https://api.github.com/users/kurtmckee/gists{/gist_id}", + "starred_url": "https://api.github.com/users/kurtmckee/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/kurtmckee/subscriptions", + "organizations_url": "https://api.github.com/users/kurtmckee/orgs", + "repos_url": "https://api.github.com/users/kurtmckee/repos", + "events_url": "https://api.github.com/users/kurtmckee/events{/privacy}", + "received_events_url": "https://api.github.com/users/kurtmckee/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 4, + "created_at": "2025-10-14T11:03:34Z", + "updated_at": "2026-01-06T21:23:43Z", + "closed_at": "2026-01-06T21:10:30Z", + "assignee": null, + "author_association": "CONTRIBUTOR", + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/160", + "html_url": "https://github.com/un33k/python-slugify/pull/160", + "diff_url": "https://github.com/un33k/python-slugify/pull/160.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/160.patch", + "merged_at": "2026-01-06T21:10:30Z" + }, + "body": "This commit introduces the following major changes:\r\n\r\n* Use tox.\r\n* Test the project against both `unidecode` and `text_unidecode`.\r\n Previously, `unidecode` was untested.\r\n* Drop support for Python 3.7, 3.8, and 3.9.\r\n CI was unable to run because Python 3.7 is no longer available.\r\n In addition, Python 3.9 and lower are all end-of-life.\r\n* Test against PyPy 3.11 and Python 3.14.\r\n* Test type annotations using mypy.\r\n Previously, type annotations were untested.\r\n* Install and test all supported Python interpreters in CI at once.\r\n* Use tox, and the tox-uv plugin, exclusively in CI.\r\n This eliminates differences between local and CI testing.\r\n* Run CI against pull requests.\r\n* Collect, combine, and report coverage\r\n for all Python versions and dependencies, locally and in CI.\r\n\r\nIn addition, this commit introduces the following minor changes:\r\n\r\n* Fix typing issues identified by mypy.\r\n Note that `text_unidecode` is untyped and must be type-ignored.\r\n* Remove almost all coverage `pragma: nocover` lines.\r\n* Fix incorrect copy/pasted comments in `ci.yml` and `main.yml`.\r\n* Upgrade `actions/checkout` to v5 and `actions/setup-python` to v6.\r\n\r\n----\r\n\r\nTaken together, these changes improve the health of the project by ensuring that the test suite can be run locally, tests all dependencies, runs successfully in CI, and that there is no drift between CI and local testing.\r\n\r\n[Here is an example of a CI run](https://github.com/kurtmckee/pr-python-slugify/actions/runs/18494261172/job/52694739484) using the code in this PR.", + "closed_by": { + "login": "Arian-Ott", + "id": 88984301, + "node_id": "MDQ6VXNlcjg4OTg0MzAx", + "avatar_url": "https://avatars.githubusercontent.com/u/88984301?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/Arian-Ott", + "html_url": "https://github.com/Arian-Ott", + "followers_url": "https://api.github.com/users/Arian-Ott/followers", + "following_url": "https://api.github.com/users/Arian-Ott/following{/other_user}", + "gists_url": "https://api.github.com/users/Arian-Ott/gists{/gist_id}", + "starred_url": "https://api.github.com/users/Arian-Ott/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/Arian-Ott/subscriptions", + "organizations_url": "https://api.github.com/users/Arian-Ott/orgs", + "repos_url": "https://api.github.com/users/Arian-Ott/repos", + "events_url": "https://api.github.com/users/Arian-Ott/events{/privacy}", + "received_events_url": "https://api.github.com/users/Arian-Ott/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/160/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/160/timeline", + "performed_via_github_app": null, + "state_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/161", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/161/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/161/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/161/events", + "html_url": "https://github.com/un33k/python-slugify/pull/161", + "id": 3519670919, + "node_id": "PR_kwDOAF7qK86t-Pn7", + "number": 161, + "title": "Remove references to `easy_install`, which is deprecated", + "user": { + "login": "kurtmckee", + "id": 39996, + "node_id": "MDQ6VXNlcjM5OTk2", + "avatar_url": "https://avatars.githubusercontent.com/u/39996?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/kurtmckee", + "html_url": "https://github.com/kurtmckee", + "followers_url": "https://api.github.com/users/kurtmckee/followers", + "following_url": "https://api.github.com/users/kurtmckee/following{/other_user}", + "gists_url": "https://api.github.com/users/kurtmckee/gists{/gist_id}", + "starred_url": "https://api.github.com/users/kurtmckee/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/kurtmckee/subscriptions", + "organizations_url": "https://api.github.com/users/kurtmckee/orgs", + "repos_url": "https://api.github.com/users/kurtmckee/repos", + "events_url": "https://api.github.com/users/kurtmckee/events{/privacy}", + "received_events_url": "https://api.github.com/users/kurtmckee/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2025-10-15T21:42:50Z", + "updated_at": "2025-11-12T15:07:24Z", + "closed_at": "2025-11-12T13:30:07Z", + "assignee": null, + "author_association": "CONTRIBUTOR", + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/161", + "html_url": "https://github.com/un33k/python-slugify/pull/161", + "diff_url": "https://github.com/un33k/python-slugify/pull/161.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/161.patch", + "merged_at": "2025-11-12T13:30:07Z" + }, + "body": "This PR removes references to `easy_install` in the README.\r\n\r\n[`easy_install` is deprecated](https://setuptools.pypa.io/en/latest/deprecated/easy_install.html), and users are explicitly warned not to use it.\r\n", + "closed_by": { + "login": "Arian-Ott", + "id": 88984301, + "node_id": "MDQ6VXNlcjg4OTg0MzAx", + "avatar_url": "https://avatars.githubusercontent.com/u/88984301?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/Arian-Ott", + "html_url": "https://github.com/Arian-Ott", + "followers_url": "https://api.github.com/users/Arian-Ott/followers", + "following_url": "https://api.github.com/users/Arian-Ott/following{/other_user}", + "gists_url": "https://api.github.com/users/Arian-Ott/gists{/gist_id}", + "starred_url": "https://api.github.com/users/Arian-Ott/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/Arian-Ott/subscriptions", + "organizations_url": "https://api.github.com/users/Arian-Ott/orgs", + "repos_url": "https://api.github.com/users/Arian-Ott/repos", + "events_url": "https://api.github.com/users/Arian-Ott/events{/privacy}", + "received_events_url": "https://api.github.com/users/Arian-Ott/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/161/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/161/timeline", + "performed_via_github_app": null, + "state_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/162", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/162/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/162/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/162/events", + "html_url": "https://github.com/un33k/python-slugify/issues/162", + "id": 3648908277, + "node_id": "I_kwDOAF7qK87Zfev1", + "number": 162, + "title": "Replace Text_unidecode-1.3 dependency or change license", + "user": { + "login": "ndrezn", + "id": 38958867, + "node_id": "MDQ6VXNlcjM4OTU4ODY3", + "avatar_url": "https://avatars.githubusercontent.com/u/38958867?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/ndrezn", + "html_url": "https://github.com/ndrezn", + "followers_url": "https://api.github.com/users/ndrezn/followers", + "following_url": "https://api.github.com/users/ndrezn/following{/other_user}", + "gists_url": "https://api.github.com/users/ndrezn/gists{/gist_id}", + "starred_url": "https://api.github.com/users/ndrezn/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/ndrezn/subscriptions", + "organizations_url": "https://api.github.com/users/ndrezn/orgs", + "repos_url": "https://api.github.com/users/ndrezn/repos", + "events_url": "https://api.github.com/users/ndrezn/events{/privacy}", + "received_events_url": "https://api.github.com/users/ndrezn/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": true, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2025-11-20T20:13:56Z", + "updated_at": "2025-11-20T20:35:49Z", + "closed_at": "2025-11-20T20:35:29Z", + "assignee": null, + "author_association": "NONE", + "active_lock_reason": "resolved", + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "The dependency Text_unidecode-1.3 is GPL licensed. However, any package that is GPL licensed must also be GPL licensed -- as this package is MIT licensed, it means anyone who is using this package may unexpectedly need to release their software as GPL.\n\nI would encourage the package maintainers to remove Text_unidecode-1.3 dependency or to change the license of this package to properly reflect its inheritance. Cheers!", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/162/reactions", + "total_count": 1, + "+1": 1, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/162/timeline", + "performed_via_github_app": null, + "state_reason": "completed", + "pinned_comment": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/163", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/163/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/163/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/163/events", + "html_url": "https://github.com/un33k/python-slugify/pull/163", + "id": 3649462369, + "node_id": "PR_kwDOAF7qK860tchh", + "number": 163, + "title": "Default to anyascii decoder", + "user": { + "login": "ndrezn", + "id": 38958867, + "node_id": "MDQ6VXNlcjM4OTU4ODY3", + "avatar_url": "https://avatars.githubusercontent.com/u/38958867?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/ndrezn", + "html_url": "https://github.com/ndrezn", + "followers_url": "https://api.github.com/users/ndrezn/followers", + "following_url": "https://api.github.com/users/ndrezn/following{/other_user}", + "gists_url": "https://api.github.com/users/ndrezn/gists{/gist_id}", + "starred_url": "https://api.github.com/users/ndrezn/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/ndrezn/subscriptions", + "organizations_url": "https://api.github.com/users/ndrezn/orgs", + "repos_url": "https://api.github.com/users/ndrezn/repos", + "events_url": "https://api.github.com/users/ndrezn/events{/privacy}", + "received_events_url": "https://api.github.com/users/ndrezn/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 9, + "created_at": "2025-11-20T22:53:42Z", + "updated_at": "2026-01-09T16:27:47Z", + "closed_at": "2026-01-08T21:56:02Z", + "assignee": null, + "author_association": "NONE", + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/163", + "html_url": "https://github.com/un33k/python-slugify/pull/163", + "diff_url": "https://github.com/un33k/python-slugify/pull/163.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/163.patch", + "merged_at": null + }, + "body": "Default to a non-GPL encoder. This encoder works for most cases, but it could be backwards incompatible.\r\n\r\nI recommend a major release as a result if this change is accepted.\r\n\r\nSee: #128 , #162, etc for more related to this issue. Providing a non-copyleft licensed default package prevents unintended misinterpretation of the package license and putting folks using this package into murky legal water.", + "closed_by": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/163/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/163/timeline", + "performed_via_github_app": null, + "state_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/164", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/164/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/164/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/164/events", + "html_url": "https://github.com/un33k/python-slugify/pull/164", + "id": 3785381063, + "node_id": "PR_kwDOAF7qK867u-_B", + "number": 164, + "title": "Fix CI by dropping EOL Python versions", + "user": { + "login": "kurtmckee", + "id": 39996, + "node_id": "MDQ6VXNlcjM5OTk2", + "avatar_url": "https://avatars.githubusercontent.com/u/39996?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/kurtmckee", + "html_url": "https://github.com/kurtmckee", + "followers_url": "https://api.github.com/users/kurtmckee/followers", + "following_url": "https://api.github.com/users/kurtmckee/following{/other_user}", + "gists_url": "https://api.github.com/users/kurtmckee/gists{/gist_id}", + "starred_url": "https://api.github.com/users/kurtmckee/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/kurtmckee/subscriptions", + "organizations_url": "https://api.github.com/users/kurtmckee/orgs", + "repos_url": "https://api.github.com/users/kurtmckee/repos", + "events_url": "https://api.github.com/users/kurtmckee/events{/privacy}", + "received_events_url": "https://api.github.com/users/kurtmckee/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2026-01-06T14:40:59Z", + "updated_at": "2026-01-06T15:11:20Z", + "closed_at": "2026-01-06T15:03:44Z", + "assignee": null, + "author_association": "CONTRIBUTOR", + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/164", + "html_url": "https://github.com/un33k/python-slugify/pull/164", + "diff_url": "https://github.com/un33k/python-slugify/pull/164.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/164.patch", + "merged_at": "2026-01-06T15:03:44Z" + }, + "body": "This introduces the following changes:\r\n\r\n- Support Python 3.14.\r\n- Drop support for Python 3.9 and lower.\r\n\r\n@Arian-Ott, happy new year! Fixing CI, as well as fixing the build process (#159), are critical project infrastructure needs, and I hope you can take a look at both when you have an opportunity!", + "closed_by": { + "login": "Arian-Ott", + "id": 88984301, + "node_id": "MDQ6VXNlcjg4OTg0MzAx", + "avatar_url": "https://avatars.githubusercontent.com/u/88984301?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/Arian-Ott", + "html_url": "https://github.com/Arian-Ott", + "followers_url": "https://api.github.com/users/Arian-Ott/followers", + "following_url": "https://api.github.com/users/Arian-Ott/following{/other_user}", + "gists_url": "https://api.github.com/users/Arian-Ott/gists{/gist_id}", + "starred_url": "https://api.github.com/users/Arian-Ott/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/Arian-Ott/subscriptions", + "organizations_url": "https://api.github.com/users/Arian-Ott/orgs", + "repos_url": "https://api.github.com/users/Arian-Ott/repos", + "events_url": "https://api.github.com/users/Arian-Ott/events{/privacy}", + "received_events_url": "https://api.github.com/users/Arian-Ott/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/164/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/164/timeline", + "performed_via_github_app": null, + "state_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/165", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/165/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/165/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/165/events", + "html_url": "https://github.com/un33k/python-slugify/pull/165", + "id": 3788816872, + "node_id": "PR_kwDOAF7qK8676UHy", + "number": 165, + "title": "Fix the README badge to refer to the `main.yml` workflow results", + "user": { + "login": "kurtmckee", + "id": 39996, + "node_id": "MDQ6VXNlcjM5OTk2", + "avatar_url": "https://avatars.githubusercontent.com/u/39996?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/kurtmckee", + "html_url": "https://github.com/kurtmckee", + "followers_url": "https://api.github.com/users/kurtmckee/followers", + "following_url": "https://api.github.com/users/kurtmckee/following{/other_user}", + "gists_url": "https://api.github.com/users/kurtmckee/gists{/gist_id}", + "starred_url": "https://api.github.com/users/kurtmckee/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/kurtmckee/subscriptions", + "organizations_url": "https://api.github.com/users/kurtmckee/orgs", + "repos_url": "https://api.github.com/users/kurtmckee/repos", + "events_url": "https://api.github.com/users/kurtmckee/events{/privacy}", + "received_events_url": "https://api.github.com/users/kurtmckee/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignees": [], + "milestone": null, + "comments": 4, + "created_at": "2026-01-07T13:39:01Z", + "updated_at": "2026-01-07T17:04:52Z", + "closed_at": "2026-01-07T16:28:09Z", + "assignee": null, + "author_association": "CONTRIBUTOR", + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/165", + "html_url": "https://github.com/un33k/python-slugify/pull/165", + "diff_url": "https://github.com/un33k/python-slugify/pull/165.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/165.patch", + "merged_at": "2026-01-07T16:28:09Z" + }, + "body": "This fixes the CI badge in the README, which was pointing to the CI results in the `ci` branch (which are currently failing).\r\n\r\nI generally recommend against including badges in the README, as they are permanently locked when publishing to PyPI and can cause the PyPI page to look like the project is unhealthy (for example, if the badge hosting service closes shop, or if CI starts failing).\r\n\r\n[In fact, this is currently the case](https://pypi.org/project/python-slugify/), and can only be fixed by publishing a new release of the package.\r\n\r\n> \"image\"\r\n\r\n* If the badges should be removed, let me know.\r\n* Separately, if the triplicated GitHub workflows should be unified down to just one YAML file, let me know.", + "closed_by": { + "login": "Arian-Ott", + "id": 88984301, + "node_id": "MDQ6VXNlcjg4OTg0MzAx", + "avatar_url": "https://avatars.githubusercontent.com/u/88984301?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/Arian-Ott", + "html_url": "https://github.com/Arian-Ott", + "followers_url": "https://api.github.com/users/Arian-Ott/followers", + "following_url": "https://api.github.com/users/Arian-Ott/following{/other_user}", + "gists_url": "https://api.github.com/users/Arian-Ott/gists{/gist_id}", + "starred_url": "https://api.github.com/users/Arian-Ott/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/Arian-Ott/subscriptions", + "organizations_url": "https://api.github.com/users/Arian-Ott/orgs", + "repos_url": "https://api.github.com/users/Arian-Ott/repos", + "events_url": "https://api.github.com/users/Arian-Ott/events{/privacy}", + "received_events_url": "https://api.github.com/users/Arian-Ott/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/165/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/165/timeline", + "performed_via_github_app": null, + "state_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/166", + "repository_url": "https://api.github.com/repos/un33k/python-slugify", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/issues/166/labels{/name}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/166/comments", + "events_url": "https://api.github.com/repos/un33k/python-slugify/issues/166/events", + "html_url": "https://github.com/un33k/python-slugify/issues/166", + "id": 3794605486, + "node_id": "I_kwDOAF7qK87iLRWu", + "number": 166, + "title": "Slugify licensing update and PRs", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "open", + "locked": true, + "assignees": [], + "milestone": null, + "comments": 9, + "created_at": "2026-01-08T22:03:37Z", + "updated_at": "2026-01-12T20:00:58Z", + "closed_at": null, + "assignee": null, + "author_association": "OWNER", + "active_lock_reason": "resolved", + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "All,\n\nSlugify is a mature Python utility under a permissive license. It does not automatically install any GPL dependency. Users may opt in if they choose to add one. The creator of Unidecode confirmed that this model is clean and acceptable.\n\nLicensing issues are closed automatically. Breaking change requests are closed automatically. The package is intentionally simple and focused on one job.\n\nIf you have edge cases, prepend or append your own logic around slugify to meet your needs.\n\nFeel free to clone or fork the code as you wish, however `python-slugify` is a reserved namespace. Please do not register `python-slugify-1,` `python-slugify-2`, `python-slugify-x` or other confusing variants.\n\nVal", + "closed_by": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/166/reactions", + "total_count": 2, + "+1": 2, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/un33k/python-slugify/issues/166/timeline", + "performed_via_github_app": null, + "state_reason": null, + "pinned_comment": null + } + ], + "pulls": [ + { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/1", + "id": 5325333, + "node_id": "MDExOlB1bGxSZXF1ZXN0NTMyNTMzMw==", + "html_url": "https://github.com/un33k/python-slugify/pull/1", + "diff_url": "https://github.com/un33k/python-slugify/pull/1.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/1.patch", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/1", + "number": 1, + "state": "closed", + "locked": false, + "title": "Separator argument added.", + "user": { + "login": "fedale", + "id": 127323, + "node_id": "MDQ6VXNlcjEyNzMyMw==", + "avatar_url": "https://avatars.githubusercontent.com/u/127323?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/fedale", + "html_url": "https://github.com/fedale", + "followers_url": "https://api.github.com/users/fedale/followers", + "following_url": "https://api.github.com/users/fedale/following{/other_user}", + "gists_url": "https://api.github.com/users/fedale/gists{/gist_id}", + "starred_url": "https://api.github.com/users/fedale/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/fedale/subscriptions", + "organizations_url": "https://api.github.com/users/fedale/orgs", + "repos_url": "https://api.github.com/users/fedale/repos", + "events_url": "https://api.github.com/users/fedale/events{/privacy}", + "received_events_url": "https://api.github.com/users/fedale/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "body": "I've added 'separator' argument to module, so you can choose which separator to use (by default it is dash). I think it is useful when you want to use another char to slugify your text (for example, sometimes I prefer to use underscore or dot).\n", + "created_at": "2013-04-23T19:18:38Z", + "updated_at": "2014-06-18T11:55:55Z", + "closed_at": "2013-04-24T14:37:58Z", + "merged_at": null, + "merge_commit_sha": "01da782d093742ef1c3868e776305d7697c5a6e8", + "assignees": [], + "requested_reviewers": [], + "requested_teams": [], + "labels": [], + "milestone": null, + "draft": false, + "commits_url": "https://api.github.com/repos/un33k/python-slugify/pulls/1/commits", + "review_comments_url": "https://api.github.com/repos/un33k/python-slugify/pulls/1/comments", + "review_comment_url": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/1/comments", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/05306ea52e761b5e1dc2f350948617d0c761efa3", + "head": { + "label": "fedale:master", + "ref": "master", + "sha": "05306ea52e761b5e1dc2f350948617d0c761efa3", + "user": { + "login": "fedale", + "id": 127323, + "node_id": "MDQ6VXNlcjEyNzMyMw==", + "avatar_url": "https://avatars.githubusercontent.com/u/127323?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/fedale", + "html_url": "https://github.com/fedale", + "followers_url": "https://api.github.com/users/fedale/followers", + "following_url": "https://api.github.com/users/fedale/following{/other_user}", + "gists_url": "https://api.github.com/users/fedale/gists{/gist_id}", + "starred_url": "https://api.github.com/users/fedale/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/fedale/subscriptions", + "organizations_url": "https://api.github.com/users/fedale/orgs", + "repos_url": "https://api.github.com/users/fedale/repos", + "events_url": "https://api.github.com/users/fedale/events{/privacy}", + "received_events_url": "https://api.github.com/users/fedale/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": null + }, + "base": { + "label": "un33k:master", + "ref": "master", + "sha": "a4c78fab0157d7da3ed77ca8b2f98cd0dbac5bf2", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 6220331, + "node_id": "MDEwOlJlcG9zaXRvcnk2MjIwMzMx", + "name": "python-slugify", + "full_name": "un33k/python-slugify", + "private": false, + "owner": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/un33k/python-slugify", + "description": "Returns unicode slugs", + "fork": false, + "url": "https://api.github.com/repos/un33k/python-slugify", + "forks_url": "https://api.github.com/repos/un33k/python-slugify/forks", + "keys_url": "https://api.github.com/repos/un33k/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/un33k/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/un33k/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/un33k/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/un33k/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/un33k/python-slugify/events", + "assignees_url": "https://api.github.com/repos/un33k/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/un33k/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/un33k/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/un33k/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/un33k/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/un33k/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/un33k/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/un33k/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/un33k/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/un33k/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/un33k/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/un33k/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/un33k/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/un33k/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/un33k/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/un33k/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/un33k/python-slugify/merges", + "archive_url": "https://api.github.com/repos/un33k/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/un33k/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/un33k/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/un33k/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/un33k/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/un33k/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/un33k/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/un33k/python-slugify/deployments", + "created_at": "2012-10-15T01:44:50Z", + "updated_at": "2026-09-05T12:52:20Z", + "pushed_at": "2026-04-27T11:17:17Z", + "git_url": "git://github.com/un33k/python-slugify.git", + "ssh_url": "git@github.com:un33k/python-slugify.git", + "clone_url": "https://github.com/un33k/python-slugify.git", + "svn_url": "https://github.com/un33k/python-slugify", + "homepage": "", + "size": 208, + "stargazers_count": 1623, + "watchers_count": 1623, + "language": "Python", + "has_issues": true, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 134, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 17, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 134, + "open_issues": 17, + "watchers": 1623, + "default_branch": "master" + } + }, + "_links": { + "self": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/1" + }, + "html": { + "href": "https://github.com/un33k/python-slugify/pull/1" + }, + "issue": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/1" + }, + "comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/1/comments" + }, + "review_comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/1/comments" + }, + "review_comment": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}" + }, + "commits": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/1/commits" + }, + "statuses": { + "href": "https://api.github.com/repos/un33k/python-slugify/statuses/05306ea52e761b5e1dc2f350948617d0c761efa3" + } + }, + "author_association": "NONE", + "auto_merge": null, + "assignee": null, + "active_lock_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/2", + "id": 5639052, + "node_id": "MDExOlB1bGxSZXF1ZXN0NTYzOTA1Mg==", + "html_url": "https://github.com/un33k/python-slugify/pull/2", + "diff_url": "https://github.com/un33k/python-slugify/pull/2.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/2.patch", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/2", + "number": 2, + "state": "closed", + "locked": false, + "title": "Support python 3", + "user": { + "login": "arthurdarcet", + "id": 973454, + "node_id": "MDQ6VXNlcjk3MzQ1NA==", + "avatar_url": "https://avatars.githubusercontent.com/u/973454?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/arthurdarcet", + "html_url": "https://github.com/arthurdarcet", + "followers_url": "https://api.github.com/users/arthurdarcet/followers", + "following_url": "https://api.github.com/users/arthurdarcet/following{/other_user}", + "gists_url": "https://api.github.com/users/arthurdarcet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/arthurdarcet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/arthurdarcet/subscriptions", + "organizations_url": "https://api.github.com/users/arthurdarcet/orgs", + "repos_url": "https://api.github.com/users/arthurdarcet/repos", + "events_url": "https://api.github.com/users/arthurdarcet/events{/privacy}", + "received_events_url": "https://api.github.com/users/arthurdarcet/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "body": "I am not very competent in 2to3 migrations, but this seems to work.\nThe tests are ok with python 2 and with python 3.\n\nArthur\n\nEdit: Sorry for the mess with the Travis builds, i had some trouble finding out how to make travis run the 2to3 conversion…\n", + "created_at": "2013-05-10T09:38:57Z", + "updated_at": "2014-07-02T18:12:47Z", + "closed_at": "2013-05-21T11:25:31Z", + "merged_at": "2013-05-21T11:25:31Z", + "merge_commit_sha": "2e08a9e2b79728bc00fe866a9b37d787094598b6", + "assignees": [], + "requested_reviewers": [], + "requested_teams": [], + "labels": [], + "milestone": null, + "draft": false, + "commits_url": "https://api.github.com/repos/un33k/python-slugify/pulls/2/commits", + "review_comments_url": "https://api.github.com/repos/un33k/python-slugify/pulls/2/comments", + "review_comment_url": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/2/comments", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/1fd811dae346c5e57c7d19680199bd1509863feb", + "head": { + "label": "arthurdarcet:master", + "ref": "master", + "sha": "1fd811dae346c5e57c7d19680199bd1509863feb", + "user": { + "login": "arthurdarcet", + "id": 973454, + "node_id": "MDQ6VXNlcjk3MzQ1NA==", + "avatar_url": "https://avatars.githubusercontent.com/u/973454?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/arthurdarcet", + "html_url": "https://github.com/arthurdarcet", + "followers_url": "https://api.github.com/users/arthurdarcet/followers", + "following_url": "https://api.github.com/users/arthurdarcet/following{/other_user}", + "gists_url": "https://api.github.com/users/arthurdarcet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/arthurdarcet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/arthurdarcet/subscriptions", + "organizations_url": "https://api.github.com/users/arthurdarcet/orgs", + "repos_url": "https://api.github.com/users/arthurdarcet/repos", + "events_url": "https://api.github.com/users/arthurdarcet/events{/privacy}", + "received_events_url": "https://api.github.com/users/arthurdarcet/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": null + }, + "base": { + "label": "un33k:master", + "ref": "master", + "sha": "e951142f77402cd4e0bdca69ea4aea5bb466c310", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 6220331, + "node_id": "MDEwOlJlcG9zaXRvcnk2MjIwMzMx", + "name": "python-slugify", + "full_name": "un33k/python-slugify", + "private": false, + "owner": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/un33k/python-slugify", + "description": "Returns unicode slugs", + "fork": false, + "url": "https://api.github.com/repos/un33k/python-slugify", + "forks_url": "https://api.github.com/repos/un33k/python-slugify/forks", + "keys_url": "https://api.github.com/repos/un33k/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/un33k/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/un33k/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/un33k/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/un33k/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/un33k/python-slugify/events", + "assignees_url": "https://api.github.com/repos/un33k/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/un33k/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/un33k/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/un33k/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/un33k/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/un33k/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/un33k/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/un33k/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/un33k/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/un33k/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/un33k/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/un33k/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/un33k/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/un33k/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/un33k/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/un33k/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/un33k/python-slugify/merges", + "archive_url": "https://api.github.com/repos/un33k/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/un33k/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/un33k/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/un33k/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/un33k/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/un33k/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/un33k/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/un33k/python-slugify/deployments", + "created_at": "2012-10-15T01:44:50Z", + "updated_at": "2026-09-05T12:52:20Z", + "pushed_at": "2026-04-27T11:17:17Z", + "git_url": "git://github.com/un33k/python-slugify.git", + "ssh_url": "git@github.com:un33k/python-slugify.git", + "clone_url": "https://github.com/un33k/python-slugify.git", + "svn_url": "https://github.com/un33k/python-slugify", + "homepage": "", + "size": 208, + "stargazers_count": 1623, + "watchers_count": 1623, + "language": "Python", + "has_issues": true, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 134, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 17, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 134, + "open_issues": 17, + "watchers": 1623, + "default_branch": "master" + } + }, + "_links": { + "self": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/2" + }, + "html": { + "href": "https://github.com/un33k/python-slugify/pull/2" + }, + "issue": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/2" + }, + "comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/2/comments" + }, + "review_comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/2/comments" + }, + "review_comment": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}" + }, + "commits": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/2/commits" + }, + "statuses": { + "href": "https://api.github.com/repos/un33k/python-slugify/statuses/1fd811dae346c5e57c7d19680199bd1509863feb" + } + }, + "author_association": "CONTRIBUTOR", + "auto_merge": null, + "assignee": null, + "active_lock_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/3", + "id": 6428954, + "node_id": "MDExOlB1bGxSZXF1ZXN0NjQyODk1NA==", + "html_url": "https://github.com/un33k/python-slugify/pull/3", + "diff_url": "https://github.com/un33k/python-slugify/pull/3.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/3.patch", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/3", + "number": 3, + "state": "closed", + "locked": false, + "title": "word_boundary problem", + "user": { + "login": "voronind", + "id": 1578066, + "node_id": "MDQ6VXNlcjE1NzgwNjY=", + "avatar_url": "https://avatars.githubusercontent.com/u/1578066?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/voronind", + "html_url": "https://github.com/voronind", + "followers_url": "https://api.github.com/users/voronind/followers", + "following_url": "https://api.github.com/users/voronind/following{/other_user}", + "gists_url": "https://api.github.com/users/voronind/gists{/gist_id}", + "starred_url": "https://api.github.com/users/voronind/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/voronind/subscriptions", + "organizations_url": "https://api.github.com/users/voronind/orgs", + "repos_url": "https://api.github.com/users/voronind/repos", + "events_url": "https://api.github.com/users/voronind/events{/privacy}", + "received_events_url": "https://api.github.com/users/voronind/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "body": "patch fixes:\nsmart_truncate('1-3-5-7-9-1', max_length=9, word_boundaries=True)\n\npatch BROKES:\nsmart_truncate('oneword', max_length=7, word_boundaries=True)\n", + "created_at": "2013-06-19T21:31:46Z", + "updated_at": "2014-06-18T13:42:13Z", + "closed_at": "2013-06-21T20:17:49Z", + "merged_at": null, + "merge_commit_sha": "bc0ad3606e48ffe4a3bb1881c50d01ea2537a12e", + "assignees": [], + "requested_reviewers": [], + "requested_teams": [], + "labels": [], + "milestone": null, + "draft": false, + "commits_url": "https://api.github.com/repos/un33k/python-slugify/pulls/3/commits", + "review_comments_url": "https://api.github.com/repos/un33k/python-slugify/pulls/3/comments", + "review_comment_url": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/3/comments", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/a1f15f695d5bec15a46b462fddc56d067f1ab4a3", + "head": { + "label": "voronind:patch-1", + "ref": "patch-1", + "sha": "a1f15f695d5bec15a46b462fddc56d067f1ab4a3", + "user": { + "login": "voronind", + "id": 1578066, + "node_id": "MDQ6VXNlcjE1NzgwNjY=", + "avatar_url": "https://avatars.githubusercontent.com/u/1578066?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/voronind", + "html_url": "https://github.com/voronind", + "followers_url": "https://api.github.com/users/voronind/followers", + "following_url": "https://api.github.com/users/voronind/following{/other_user}", + "gists_url": "https://api.github.com/users/voronind/gists{/gist_id}", + "starred_url": "https://api.github.com/users/voronind/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/voronind/subscriptions", + "organizations_url": "https://api.github.com/users/voronind/orgs", + "repos_url": "https://api.github.com/users/voronind/repos", + "events_url": "https://api.github.com/users/voronind/events{/privacy}", + "received_events_url": "https://api.github.com/users/voronind/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 10776238, + "node_id": "MDEwOlJlcG9zaXRvcnkxMDc3NjIzOA==", + "name": "python-slugify", + "full_name": "voronind/python-slugify", + "private": false, + "owner": { + "login": "voronind", + "id": 1578066, + "node_id": "MDQ6VXNlcjE1NzgwNjY=", + "avatar_url": "https://avatars.githubusercontent.com/u/1578066?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/voronind", + "html_url": "https://github.com/voronind", + "followers_url": "https://api.github.com/users/voronind/followers", + "following_url": "https://api.github.com/users/voronind/following{/other_user}", + "gists_url": "https://api.github.com/users/voronind/gists{/gist_id}", + "starred_url": "https://api.github.com/users/voronind/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/voronind/subscriptions", + "organizations_url": "https://api.github.com/users/voronind/orgs", + "repos_url": "https://api.github.com/users/voronind/repos", + "events_url": "https://api.github.com/users/voronind/events{/privacy}", + "received_events_url": "https://api.github.com/users/voronind/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/voronind/python-slugify", + "description": null, + "fork": true, + "url": "https://api.github.com/repos/voronind/python-slugify", + "forks_url": "https://api.github.com/repos/voronind/python-slugify/forks", + "keys_url": "https://api.github.com/repos/voronind/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/voronind/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/voronind/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/voronind/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/voronind/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/voronind/python-slugify/events", + "assignees_url": "https://api.github.com/repos/voronind/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/voronind/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/voronind/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/voronind/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/voronind/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/voronind/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/voronind/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/voronind/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/voronind/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/voronind/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/voronind/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/voronind/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/voronind/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/voronind/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/voronind/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/voronind/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/voronind/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/voronind/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/voronind/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/voronind/python-slugify/merges", + "archive_url": "https://api.github.com/repos/voronind/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/voronind/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/voronind/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/voronind/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/voronind/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/voronind/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/voronind/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/voronind/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/voronind/python-slugify/deployments", + "created_at": "2013-06-19T00:11:28Z", + "updated_at": "2013-06-21T20:17:49Z", + "pushed_at": "2013-06-19T14:12:48Z", + "git_url": "git://github.com/voronind/python-slugify.git", + "ssh_url": "git@github.com:voronind/python-slugify.git", + "clone_url": "https://github.com/voronind/python-slugify.git", + "svn_url": "https://github.com/voronind/python-slugify", + "homepage": null, + "size": 102, + "stargazers_count": 0, + "watchers_count": 0, + "language": "Python", + "has_issues": false, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 0, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 0, + "license": null, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 0, + "open_issues": 0, + "watchers": 0, + "default_branch": "master" + } + }, + "base": { + "label": "un33k:master", + "ref": "master", + "sha": "23dd5388e65e269342ee752123dfc673a475063a", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 6220331, + "node_id": "MDEwOlJlcG9zaXRvcnk2MjIwMzMx", + "name": "python-slugify", + "full_name": "un33k/python-slugify", + "private": false, + "owner": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/un33k/python-slugify", + "description": "Returns unicode slugs", + "fork": false, + "url": "https://api.github.com/repos/un33k/python-slugify", + "forks_url": "https://api.github.com/repos/un33k/python-slugify/forks", + "keys_url": "https://api.github.com/repos/un33k/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/un33k/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/un33k/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/un33k/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/un33k/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/un33k/python-slugify/events", + "assignees_url": "https://api.github.com/repos/un33k/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/un33k/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/un33k/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/un33k/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/un33k/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/un33k/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/un33k/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/un33k/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/un33k/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/un33k/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/un33k/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/un33k/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/un33k/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/un33k/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/un33k/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/un33k/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/un33k/python-slugify/merges", + "archive_url": "https://api.github.com/repos/un33k/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/un33k/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/un33k/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/un33k/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/un33k/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/un33k/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/un33k/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/un33k/python-slugify/deployments", + "created_at": "2012-10-15T01:44:50Z", + "updated_at": "2026-09-05T12:52:20Z", + "pushed_at": "2026-04-27T11:17:17Z", + "git_url": "git://github.com/un33k/python-slugify.git", + "ssh_url": "git@github.com:un33k/python-slugify.git", + "clone_url": "https://github.com/un33k/python-slugify.git", + "svn_url": "https://github.com/un33k/python-slugify", + "homepage": "", + "size": 208, + "stargazers_count": 1623, + "watchers_count": 1623, + "language": "Python", + "has_issues": true, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 134, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 17, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 134, + "open_issues": 17, + "watchers": 1623, + "default_branch": "master" + } + }, + "_links": { + "self": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/3" + }, + "html": { + "href": "https://github.com/un33k/python-slugify/pull/3" + }, + "issue": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/3" + }, + "comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/3/comments" + }, + "review_comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/3/comments" + }, + "review_comment": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}" + }, + "commits": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/3/commits" + }, + "statuses": { + "href": "https://api.github.com/repos/un33k/python-slugify/statuses/a1f15f695d5bec15a46b462fddc56d067f1ab4a3" + } + }, + "author_association": "NONE", + "auto_merge": null, + "assignee": null, + "active_lock_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/4", + "id": 11236299, + "node_id": "MDExOlB1bGxSZXF1ZXN0MTEyMzYyOTk=", + "html_url": "https://github.com/un33k/python-slugify/pull/4", + "diff_url": "https://github.com/un33k/python-slugify/pull/4.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/4.patch", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/4", + "number": 4, + "state": "closed", + "locked": false, + "title": "fix file reading in python 3", + "user": { + "login": "pudo", + "id": 41628, + "node_id": "MDQ6VXNlcjQxNjI4", + "avatar_url": "https://avatars.githubusercontent.com/u/41628?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/pudo", + "html_url": "https://github.com/pudo", + "followers_url": "https://api.github.com/users/pudo/followers", + "following_url": "https://api.github.com/users/pudo/following{/other_user}", + "gists_url": "https://api.github.com/users/pudo/gists{/gist_id}", + "starred_url": "https://api.github.com/users/pudo/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/pudo/subscriptions", + "organizations_url": "https://api.github.com/users/pudo/orgs", + "repos_url": "https://api.github.com/users/pudo/repos", + "events_url": "https://api.github.com/users/pudo/events{/privacy}", + "received_events_url": "https://api.github.com/users/pudo/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "body": "This would enable the package to be used from Python 3 (and thus enable me to port pudo/dataset). \n", + "created_at": "2014-01-05T17:20:18Z", + "updated_at": "2014-01-09T22:34:27Z", + "closed_at": "2014-01-05T18:01:12Z", + "merged_at": "2014-01-05T18:01:12Z", + "merge_commit_sha": "8d79eb7dc587a0fdbdfbd716e1be49854c54183f", + "assignees": [], + "requested_reviewers": [], + "requested_teams": [], + "labels": [], + "milestone": null, + "draft": false, + "commits_url": "https://api.github.com/repos/un33k/python-slugify/pulls/4/commits", + "review_comments_url": "https://api.github.com/repos/un33k/python-slugify/pulls/4/comments", + "review_comment_url": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/4/comments", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/29cac30f6c505cfb5f85aa18b67aac2dd9cf5d04", + "head": { + "label": "pudo:master", + "ref": "master", + "sha": "29cac30f6c505cfb5f85aa18b67aac2dd9cf5d04", + "user": { + "login": "pudo", + "id": 41628, + "node_id": "MDQ6VXNlcjQxNjI4", + "avatar_url": "https://avatars.githubusercontent.com/u/41628?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/pudo", + "html_url": "https://github.com/pudo", + "followers_url": "https://api.github.com/users/pudo/followers", + "following_url": "https://api.github.com/users/pudo/following{/other_user}", + "gists_url": "https://api.github.com/users/pudo/gists{/gist_id}", + "starred_url": "https://api.github.com/users/pudo/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/pudo/subscriptions", + "organizations_url": "https://api.github.com/users/pudo/orgs", + "repos_url": "https://api.github.com/users/pudo/repos", + "events_url": "https://api.github.com/users/pudo/events{/privacy}", + "received_events_url": "https://api.github.com/users/pudo/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": null + }, + "base": { + "label": "un33k:master", + "ref": "master", + "sha": "2c338a87b098439d152b1f47fda70b7ff3545b37", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 6220331, + "node_id": "MDEwOlJlcG9zaXRvcnk2MjIwMzMx", + "name": "python-slugify", + "full_name": "un33k/python-slugify", + "private": false, + "owner": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/un33k/python-slugify", + "description": "Returns unicode slugs", + "fork": false, + "url": "https://api.github.com/repos/un33k/python-slugify", + "forks_url": "https://api.github.com/repos/un33k/python-slugify/forks", + "keys_url": "https://api.github.com/repos/un33k/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/un33k/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/un33k/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/un33k/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/un33k/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/un33k/python-slugify/events", + "assignees_url": "https://api.github.com/repos/un33k/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/un33k/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/un33k/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/un33k/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/un33k/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/un33k/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/un33k/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/un33k/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/un33k/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/un33k/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/un33k/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/un33k/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/un33k/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/un33k/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/un33k/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/un33k/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/un33k/python-slugify/merges", + "archive_url": "https://api.github.com/repos/un33k/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/un33k/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/un33k/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/un33k/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/un33k/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/un33k/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/un33k/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/un33k/python-slugify/deployments", + "created_at": "2012-10-15T01:44:50Z", + "updated_at": "2026-09-05T12:52:20Z", + "pushed_at": "2026-04-27T11:17:17Z", + "git_url": "git://github.com/un33k/python-slugify.git", + "ssh_url": "git@github.com:un33k/python-slugify.git", + "clone_url": "https://github.com/un33k/python-slugify.git", + "svn_url": "https://github.com/un33k/python-slugify", + "homepage": "", + "size": 208, + "stargazers_count": 1623, + "watchers_count": 1623, + "language": "Python", + "has_issues": true, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 134, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 17, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 134, + "open_issues": 17, + "watchers": 1623, + "default_branch": "master" + } + }, + "_links": { + "self": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/4" + }, + "html": { + "href": "https://github.com/un33k/python-slugify/pull/4" + }, + "issue": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/4" + }, + "comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/4/comments" + }, + "review_comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/4/comments" + }, + "review_comment": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}" + }, + "commits": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/4/commits" + }, + "statuses": { + "href": "https://api.github.com/repos/un33k/python-slugify/statuses/29cac30f6c505cfb5f85aa18b67aac2dd9cf5d04" + } + }, + "author_association": "CONTRIBUTOR", + "auto_merge": null, + "assignee": null, + "active_lock_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/5", + "id": 16879040, + "node_id": "MDExOlB1bGxSZXF1ZXN0MTY4NzkwNDA=", + "html_url": "https://github.com/un33k/python-slugify/pull/5", + "diff_url": "https://github.com/un33k/python-slugify/pull/5.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/5.patch", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/5", + "number": 5, + "state": "closed", + "locked": false, + "title": "Console entry point", + "user": { + "login": "ekamil", + "id": 1164694, + "node_id": "MDQ6VXNlcjExNjQ2OTQ=", + "avatar_url": "https://avatars.githubusercontent.com/u/1164694?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/ekamil", + "html_url": "https://github.com/ekamil", + "followers_url": "https://api.github.com/users/ekamil/followers", + "following_url": "https://api.github.com/users/ekamil/following{/other_user}", + "gists_url": "https://api.github.com/users/ekamil/gists{/gist_id}", + "starred_url": "https://api.github.com/users/ekamil/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/ekamil/subscriptions", + "organizations_url": "https://api.github.com/users/ekamil/orgs", + "repos_url": "https://api.github.com/users/ekamil/repos", + "events_url": "https://api.github.com/users/ekamil/events{/privacy}", + "received_events_url": "https://api.github.com/users/ekamil/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "body": "", + "created_at": "2014-06-09T10:21:49Z", + "updated_at": "2014-08-17T01:35:53Z", + "closed_at": "2014-08-17T01:35:08Z", + "merged_at": "2014-08-17T01:35:08Z", + "merge_commit_sha": "7ca490a33a3377d47371c3f78a75a798c9b55cde", + "assignees": [], + "requested_reviewers": [], + "requested_teams": [], + "labels": [], + "milestone": null, + "draft": false, + "commits_url": "https://api.github.com/repos/un33k/python-slugify/pulls/5/commits", + "review_comments_url": "https://api.github.com/repos/un33k/python-slugify/pulls/5/comments", + "review_comment_url": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/5/comments", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/8d024259a5a140777d2ed3a3a3a7089a8d0ba330", + "head": { + "label": "ekamil:master", + "ref": "master", + "sha": "8d024259a5a140777d2ed3a3a3a7089a8d0ba330", + "user": { + "login": "ekamil", + "id": 1164694, + "node_id": "MDQ6VXNlcjExNjQ2OTQ=", + "avatar_url": "https://avatars.githubusercontent.com/u/1164694?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/ekamil", + "html_url": "https://github.com/ekamil", + "followers_url": "https://api.github.com/users/ekamil/followers", + "following_url": "https://api.github.com/users/ekamil/following{/other_user}", + "gists_url": "https://api.github.com/users/ekamil/gists{/gist_id}", + "starred_url": "https://api.github.com/users/ekamil/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/ekamil/subscriptions", + "organizations_url": "https://api.github.com/users/ekamil/orgs", + "repos_url": "https://api.github.com/users/ekamil/repos", + "events_url": "https://api.github.com/users/ekamil/events{/privacy}", + "received_events_url": "https://api.github.com/users/ekamil/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": null + }, + "base": { + "label": "un33k:master", + "ref": "master", + "sha": "52108c39d2a7c53def6bf55ddb0c81b185bb211a", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 6220331, + "node_id": "MDEwOlJlcG9zaXRvcnk2MjIwMzMx", + "name": "python-slugify", + "full_name": "un33k/python-slugify", + "private": false, + "owner": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/un33k/python-slugify", + "description": "Returns unicode slugs", + "fork": false, + "url": "https://api.github.com/repos/un33k/python-slugify", + "forks_url": "https://api.github.com/repos/un33k/python-slugify/forks", + "keys_url": "https://api.github.com/repos/un33k/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/un33k/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/un33k/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/un33k/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/un33k/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/un33k/python-slugify/events", + "assignees_url": "https://api.github.com/repos/un33k/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/un33k/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/un33k/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/un33k/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/un33k/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/un33k/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/un33k/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/un33k/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/un33k/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/un33k/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/un33k/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/un33k/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/un33k/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/un33k/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/un33k/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/un33k/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/un33k/python-slugify/merges", + "archive_url": "https://api.github.com/repos/un33k/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/un33k/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/un33k/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/un33k/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/un33k/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/un33k/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/un33k/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/un33k/python-slugify/deployments", + "created_at": "2012-10-15T01:44:50Z", + "updated_at": "2026-09-05T12:52:20Z", + "pushed_at": "2026-04-27T11:17:17Z", + "git_url": "git://github.com/un33k/python-slugify.git", + "ssh_url": "git@github.com:un33k/python-slugify.git", + "clone_url": "https://github.com/un33k/python-slugify.git", + "svn_url": "https://github.com/un33k/python-slugify", + "homepage": "", + "size": 208, + "stargazers_count": 1623, + "watchers_count": 1623, + "language": "Python", + "has_issues": true, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 134, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 17, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 134, + "open_issues": 17, + "watchers": 1623, + "default_branch": "master" + } + }, + "_links": { + "self": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/5" + }, + "html": { + "href": "https://github.com/un33k/python-slugify/pull/5" + }, + "issue": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/5" + }, + "comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/5/comments" + }, + "review_comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/5/comments" + }, + "review_comment": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}" + }, + "commits": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/5/commits" + }, + "statuses": { + "href": "https://api.github.com/repos/un33k/python-slugify/statuses/8d024259a5a140777d2ed3a3a3a7089a8d0ba330" + } + }, + "author_association": "CONTRIBUTOR", + "auto_merge": null, + "assignee": null, + "active_lock_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/8", + "id": 29508656, + "node_id": "MDExOlB1bGxSZXF1ZXN0Mjk1MDg2NTY=", + "html_url": "https://github.com/un33k/python-slugify/pull/8", + "diff_url": "https://github.com/un33k/python-slugify/pull/8.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/8.patch", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/8", + "number": 8, + "state": "closed", + "locked": false, + "title": "Fix bug (len of output string)", + "user": { + "login": "dioexul", + "id": 2740961, + "node_id": "MDQ6VXNlcjI3NDA5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/2740961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dioexul", + "html_url": "https://github.com/dioexul", + "followers_url": "https://api.github.com/users/dioexul/followers", + "following_url": "https://api.github.com/users/dioexul/following{/other_user}", + "gists_url": "https://api.github.com/users/dioexul/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dioexul/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dioexul/subscriptions", + "organizations_url": "https://api.github.com/users/dioexul/orgs", + "repos_url": "https://api.github.com/users/dioexul/repos", + "events_url": "https://api.github.com/users/dioexul/events{/privacy}", + "received_events_url": "https://api.github.com/users/dioexul/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "body": "Fix count next length:\nFor string 'jaja---lol-méméméoo--a' and max_length=19\nold result was 'jaja-lol-mememeoo' with len = 17 but correct result should be 'jaja-lol-mememeoo-a' with len = 19.\n", + "created_at": "2015-02-18T08:38:41Z", + "updated_at": "2015-02-22T14:43:58Z", + "closed_at": "2015-02-22T14:43:58Z", + "merged_at": "2015-02-22T14:43:58Z", + "merge_commit_sha": "0e5f040f8a2b17d54d4dc523bc6cd71e91ebaf00", + "assignees": [], + "requested_reviewers": [], + "requested_teams": [], + "labels": [], + "milestone": null, + "draft": false, + "commits_url": "https://api.github.com/repos/un33k/python-slugify/pulls/8/commits", + "review_comments_url": "https://api.github.com/repos/un33k/python-slugify/pulls/8/comments", + "review_comment_url": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/8/comments", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/07155c2001580b0ec70b40f24a475baef6238aac", + "head": { + "label": "dioexul:master", + "ref": "master", + "sha": "07155c2001580b0ec70b40f24a475baef6238aac", + "user": { + "login": "dioexul", + "id": 2740961, + "node_id": "MDQ6VXNlcjI3NDA5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/2740961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dioexul", + "html_url": "https://github.com/dioexul", + "followers_url": "https://api.github.com/users/dioexul/followers", + "following_url": "https://api.github.com/users/dioexul/following{/other_user}", + "gists_url": "https://api.github.com/users/dioexul/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dioexul/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dioexul/subscriptions", + "organizations_url": "https://api.github.com/users/dioexul/orgs", + "repos_url": "https://api.github.com/users/dioexul/repos", + "events_url": "https://api.github.com/users/dioexul/events{/privacy}", + "received_events_url": "https://api.github.com/users/dioexul/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 30916921, + "node_id": "MDEwOlJlcG9zaXRvcnkzMDkxNjkyMQ==", + "name": "python-slugify", + "full_name": "dioexul/python-slugify", + "private": false, + "owner": { + "login": "dioexul", + "id": 2740961, + "node_id": "MDQ6VXNlcjI3NDA5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/2740961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dioexul", + "html_url": "https://github.com/dioexul", + "followers_url": "https://api.github.com/users/dioexul/followers", + "following_url": "https://api.github.com/users/dioexul/following{/other_user}", + "gists_url": "https://api.github.com/users/dioexul/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dioexul/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dioexul/subscriptions", + "organizations_url": "https://api.github.com/users/dioexul/orgs", + "repos_url": "https://api.github.com/users/dioexul/repos", + "events_url": "https://api.github.com/users/dioexul/events{/privacy}", + "received_events_url": "https://api.github.com/users/dioexul/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/dioexul/python-slugify", + "description": "Returns a unicode slugs", + "fork": true, + "url": "https://api.github.com/repos/dioexul/python-slugify", + "forks_url": "https://api.github.com/repos/dioexul/python-slugify/forks", + "keys_url": "https://api.github.com/repos/dioexul/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dioexul/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dioexul/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/dioexul/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/dioexul/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/dioexul/python-slugify/events", + "assignees_url": "https://api.github.com/repos/dioexul/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/dioexul/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/dioexul/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/dioexul/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dioexul/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dioexul/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dioexul/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dioexul/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dioexul/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/dioexul/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/dioexul/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/dioexul/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/dioexul/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/dioexul/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dioexul/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dioexul/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dioexul/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dioexul/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/dioexul/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dioexul/python-slugify/merges", + "archive_url": "https://api.github.com/repos/dioexul/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dioexul/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/dioexul/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/dioexul/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dioexul/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dioexul/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dioexul/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/dioexul/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/dioexul/python-slugify/deployments", + "created_at": "2015-02-17T12:55:33Z", + "updated_at": "2015-02-26T20:08:38Z", + "pushed_at": "2015-02-26T20:08:38Z", + "git_url": "git://github.com/dioexul/python-slugify.git", + "ssh_url": "git@github.com:dioexul/python-slugify.git", + "clone_url": "https://github.com/dioexul/python-slugify.git", + "svn_url": "https://github.com/dioexul/python-slugify", + "homepage": "", + "size": 156, + "stargazers_count": 0, + "watchers_count": 0, + "language": "Python", + "has_issues": false, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 0, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 0, + "license": { + "key": "bsd-3-clause", + "name": "BSD 3-Clause \"New\" or \"Revised\" License", + "spdx_id": "BSD-3-Clause", + "url": "https://api.github.com/licenses/bsd-3-clause", + "node_id": "MDc6TGljZW5zZTU=" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 0, + "open_issues": 0, + "watchers": 0, + "default_branch": "master" + } + }, + "base": { + "label": "un33k:master", + "ref": "master", + "sha": "6e1793fcda103bc1cae7f96295c56574be7880cc", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 6220331, + "node_id": "MDEwOlJlcG9zaXRvcnk2MjIwMzMx", + "name": "python-slugify", + "full_name": "un33k/python-slugify", + "private": false, + "owner": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/un33k/python-slugify", + "description": "Returns unicode slugs", + "fork": false, + "url": "https://api.github.com/repos/un33k/python-slugify", + "forks_url": "https://api.github.com/repos/un33k/python-slugify/forks", + "keys_url": "https://api.github.com/repos/un33k/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/un33k/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/un33k/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/un33k/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/un33k/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/un33k/python-slugify/events", + "assignees_url": "https://api.github.com/repos/un33k/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/un33k/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/un33k/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/un33k/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/un33k/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/un33k/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/un33k/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/un33k/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/un33k/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/un33k/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/un33k/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/un33k/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/un33k/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/un33k/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/un33k/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/un33k/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/un33k/python-slugify/merges", + "archive_url": "https://api.github.com/repos/un33k/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/un33k/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/un33k/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/un33k/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/un33k/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/un33k/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/un33k/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/un33k/python-slugify/deployments", + "created_at": "2012-10-15T01:44:50Z", + "updated_at": "2026-09-05T12:52:20Z", + "pushed_at": "2026-04-27T11:17:17Z", + "git_url": "git://github.com/un33k/python-slugify.git", + "ssh_url": "git@github.com:un33k/python-slugify.git", + "clone_url": "https://github.com/un33k/python-slugify.git", + "svn_url": "https://github.com/un33k/python-slugify", + "homepage": "", + "size": 208, + "stargazers_count": 1623, + "watchers_count": 1623, + "language": "Python", + "has_issues": true, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 134, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 17, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 134, + "open_issues": 17, + "watchers": 1623, + "default_branch": "master" + } + }, + "_links": { + "self": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/8" + }, + "html": { + "href": "https://github.com/un33k/python-slugify/pull/8" + }, + "issue": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/8" + }, + "comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/8/comments" + }, + "review_comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/8/comments" + }, + "review_comment": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}" + }, + "commits": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/8/commits" + }, + "statuses": { + "href": "https://api.github.com/repos/un33k/python-slugify/statuses/07155c2001580b0ec70b40f24a475baef6238aac" + } + }, + "author_association": "CONTRIBUTOR", + "auto_merge": null, + "assignee": null, + "active_lock_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/9", + "id": 29777133, + "node_id": "MDExOlB1bGxSZXF1ZXN0Mjk3NzcxMzM=", + "html_url": "https://github.com/un33k/python-slugify/pull/9", + "diff_url": "https://github.com/un33k/python-slugify/pull/9.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/9.patch", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/9", + "number": 9, + "state": "closed", + "locked": false, + "title": "Add parameter 'save_order'.", + "user": { + "login": "dioexul", + "id": 2740961, + "node_id": "MDQ6VXNlcjI3NDA5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/2740961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dioexul", + "html_url": "https://github.com/dioexul", + "followers_url": "https://api.github.com/users/dioexul/followers", + "following_url": "https://api.github.com/users/dioexul/following{/other_user}", + "gists_url": "https://api.github.com/users/dioexul/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dioexul/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dioexul/subscriptions", + "organizations_url": "https://api.github.com/users/dioexul/orgs", + "repos_url": "https://api.github.com/users/dioexul/repos", + "events_url": "https://api.github.com/users/dioexul/events{/privacy}", + "received_events_url": "https://api.github.com/users/dioexul/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "body": "If save_order == True then order of words of output string will be like order of input string.\n", + "created_at": "2015-02-22T21:24:00Z", + "updated_at": "2015-04-12T18:23:24Z", + "closed_at": "2015-02-26T21:51:41Z", + "merged_at": "2015-02-26T21:51:41Z", + "merge_commit_sha": "3c5f160a4cb90e78750208131aa30e3506aa6959", + "assignees": [], + "requested_reviewers": [], + "requested_teams": [], + "labels": [], + "milestone": null, + "draft": false, + "commits_url": "https://api.github.com/repos/un33k/python-slugify/pulls/9/commits", + "review_comments_url": "https://api.github.com/repos/un33k/python-slugify/pulls/9/comments", + "review_comment_url": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/9/comments", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/967725fbdeaaa6c5b2a54dafdadfccee663768fb", + "head": { + "label": "dioexul:master", + "ref": "master", + "sha": "967725fbdeaaa6c5b2a54dafdadfccee663768fb", + "user": { + "login": "dioexul", + "id": 2740961, + "node_id": "MDQ6VXNlcjI3NDA5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/2740961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dioexul", + "html_url": "https://github.com/dioexul", + "followers_url": "https://api.github.com/users/dioexul/followers", + "following_url": "https://api.github.com/users/dioexul/following{/other_user}", + "gists_url": "https://api.github.com/users/dioexul/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dioexul/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dioexul/subscriptions", + "organizations_url": "https://api.github.com/users/dioexul/orgs", + "repos_url": "https://api.github.com/users/dioexul/repos", + "events_url": "https://api.github.com/users/dioexul/events{/privacy}", + "received_events_url": "https://api.github.com/users/dioexul/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 30916921, + "node_id": "MDEwOlJlcG9zaXRvcnkzMDkxNjkyMQ==", + "name": "python-slugify", + "full_name": "dioexul/python-slugify", + "private": false, + "owner": { + "login": "dioexul", + "id": 2740961, + "node_id": "MDQ6VXNlcjI3NDA5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/2740961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dioexul", + "html_url": "https://github.com/dioexul", + "followers_url": "https://api.github.com/users/dioexul/followers", + "following_url": "https://api.github.com/users/dioexul/following{/other_user}", + "gists_url": "https://api.github.com/users/dioexul/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dioexul/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dioexul/subscriptions", + "organizations_url": "https://api.github.com/users/dioexul/orgs", + "repos_url": "https://api.github.com/users/dioexul/repos", + "events_url": "https://api.github.com/users/dioexul/events{/privacy}", + "received_events_url": "https://api.github.com/users/dioexul/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/dioexul/python-slugify", + "description": "Returns a unicode slugs", + "fork": true, + "url": "https://api.github.com/repos/dioexul/python-slugify", + "forks_url": "https://api.github.com/repos/dioexul/python-slugify/forks", + "keys_url": "https://api.github.com/repos/dioexul/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dioexul/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dioexul/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/dioexul/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/dioexul/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/dioexul/python-slugify/events", + "assignees_url": "https://api.github.com/repos/dioexul/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/dioexul/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/dioexul/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/dioexul/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dioexul/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dioexul/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dioexul/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dioexul/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dioexul/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/dioexul/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/dioexul/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/dioexul/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/dioexul/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/dioexul/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dioexul/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dioexul/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dioexul/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dioexul/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/dioexul/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dioexul/python-slugify/merges", + "archive_url": "https://api.github.com/repos/dioexul/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dioexul/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/dioexul/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/dioexul/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dioexul/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dioexul/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dioexul/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/dioexul/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/dioexul/python-slugify/deployments", + "created_at": "2015-02-17T12:55:33Z", + "updated_at": "2015-02-26T20:08:38Z", + "pushed_at": "2015-02-26T20:08:38Z", + "git_url": "git://github.com/dioexul/python-slugify.git", + "ssh_url": "git@github.com:dioexul/python-slugify.git", + "clone_url": "https://github.com/dioexul/python-slugify.git", + "svn_url": "https://github.com/dioexul/python-slugify", + "homepage": "", + "size": 156, + "stargazers_count": 0, + "watchers_count": 0, + "language": "Python", + "has_issues": false, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 0, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 0, + "license": { + "key": "bsd-3-clause", + "name": "BSD 3-Clause \"New\" or \"Revised\" License", + "spdx_id": "BSD-3-Clause", + "url": "https://api.github.com/licenses/bsd-3-clause", + "node_id": "MDc6TGljZW5zZTU=" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 0, + "open_issues": 0, + "watchers": 0, + "default_branch": "master" + } + }, + "base": { + "label": "un33k:master", + "ref": "master", + "sha": "9a8f8ddb86363d65687daf2d48d2070a2fe97e24", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 6220331, + "node_id": "MDEwOlJlcG9zaXRvcnk2MjIwMzMx", + "name": "python-slugify", + "full_name": "un33k/python-slugify", + "private": false, + "owner": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/un33k/python-slugify", + "description": "Returns unicode slugs", + "fork": false, + "url": "https://api.github.com/repos/un33k/python-slugify", + "forks_url": "https://api.github.com/repos/un33k/python-slugify/forks", + "keys_url": "https://api.github.com/repos/un33k/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/un33k/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/un33k/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/un33k/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/un33k/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/un33k/python-slugify/events", + "assignees_url": "https://api.github.com/repos/un33k/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/un33k/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/un33k/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/un33k/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/un33k/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/un33k/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/un33k/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/un33k/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/un33k/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/un33k/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/un33k/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/un33k/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/un33k/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/un33k/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/un33k/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/un33k/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/un33k/python-slugify/merges", + "archive_url": "https://api.github.com/repos/un33k/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/un33k/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/un33k/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/un33k/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/un33k/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/un33k/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/un33k/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/un33k/python-slugify/deployments", + "created_at": "2012-10-15T01:44:50Z", + "updated_at": "2026-09-05T12:52:20Z", + "pushed_at": "2026-04-27T11:17:17Z", + "git_url": "git://github.com/un33k/python-slugify.git", + "ssh_url": "git@github.com:un33k/python-slugify.git", + "clone_url": "https://github.com/un33k/python-slugify.git", + "svn_url": "https://github.com/un33k/python-slugify", + "homepage": "", + "size": 208, + "stargazers_count": 1623, + "watchers_count": 1623, + "language": "Python", + "has_issues": true, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 134, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 17, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 134, + "open_issues": 17, + "watchers": 1623, + "default_branch": "master" + } + }, + "_links": { + "self": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/9" + }, + "html": { + "href": "https://github.com/un33k/python-slugify/pull/9" + }, + "issue": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/9" + }, + "comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/9/comments" + }, + "review_comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/9/comments" + }, + "review_comment": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}" + }, + "commits": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/9/commits" + }, + "statuses": { + "href": "https://api.github.com/repos/un33k/python-slugify/statuses/967725fbdeaaa6c5b2a54dafdadfccee663768fb" + } + }, + "author_association": "CONTRIBUTOR", + "auto_merge": null, + "assignee": null, + "active_lock_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/13", + "id": 34577666, + "node_id": "MDExOlB1bGxSZXF1ZXN0MzQ1Nzc2NjY=", + "html_url": "https://github.com/un33k/python-slugify/pull/13", + "diff_url": "https://github.com/un33k/python-slugify/pull/13.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/13.patch", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/13", + "number": 13, + "state": "closed", + "locked": false, + "title": "Add Python versions to setup.py classifiers.", + "user": { + "login": "kengruven", + "id": 22565, + "node_id": "MDQ6VXNlcjIyNTY1", + "avatar_url": "https://avatars.githubusercontent.com/u/22565?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/kengruven", + "html_url": "https://github.com/kengruven", + "followers_url": "https://api.github.com/users/kengruven/followers", + "following_url": "https://api.github.com/users/kengruven/following{/other_user}", + "gists_url": "https://api.github.com/users/kengruven/gists{/gist_id}", + "starred_url": "https://api.github.com/users/kengruven/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/kengruven/subscriptions", + "organizations_url": "https://api.github.com/users/kengruven/orgs", + "repos_url": "https://api.github.com/users/kengruven/repos", + "events_url": "https://api.github.com/users/kengruven/events{/privacy}", + "received_events_url": "https://api.github.com/users/kengruven/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "body": "This should let caniusepython3 detect that it’s Python-3-ready.\n", + "created_at": "2015-05-02T00:38:08Z", + "updated_at": "2015-05-05T14:58:52Z", + "closed_at": "2015-05-05T14:58:52Z", + "merged_at": "2015-05-05T14:58:52Z", + "merge_commit_sha": "543a99f083764a7012c3c985387bc1ed8001c0cc", + "assignees": [], + "requested_reviewers": [], + "requested_teams": [], + "labels": [], + "milestone": null, + "draft": false, + "commits_url": "https://api.github.com/repos/un33k/python-slugify/pulls/13/commits", + "review_comments_url": "https://api.github.com/repos/un33k/python-slugify/pulls/13/comments", + "review_comment_url": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/13/comments", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/38d44967eb412acfabb9ff8ca2d1a9ad40ce2f3d", + "head": { + "label": "kengruven:master", + "ref": "master", + "sha": "38d44967eb412acfabb9ff8ca2d1a9ad40ce2f3d", + "user": { + "login": "kengruven", + "id": 22565, + "node_id": "MDQ6VXNlcjIyNTY1", + "avatar_url": "https://avatars.githubusercontent.com/u/22565?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/kengruven", + "html_url": "https://github.com/kengruven", + "followers_url": "https://api.github.com/users/kengruven/followers", + "following_url": "https://api.github.com/users/kengruven/following{/other_user}", + "gists_url": "https://api.github.com/users/kengruven/gists{/gist_id}", + "starred_url": "https://api.github.com/users/kengruven/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/kengruven/subscriptions", + "organizations_url": "https://api.github.com/users/kengruven/orgs", + "repos_url": "https://api.github.com/users/kengruven/repos", + "events_url": "https://api.github.com/users/kengruven/events{/privacy}", + "received_events_url": "https://api.github.com/users/kengruven/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": null + }, + "base": { + "label": "un33k:master", + "ref": "master", + "sha": "8caf2d7c3fb3eba756322bd01def2c9f4ee37644", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 6220331, + "node_id": "MDEwOlJlcG9zaXRvcnk2MjIwMzMx", + "name": "python-slugify", + "full_name": "un33k/python-slugify", + "private": false, + "owner": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/un33k/python-slugify", + "description": "Returns unicode slugs", + "fork": false, + "url": "https://api.github.com/repos/un33k/python-slugify", + "forks_url": "https://api.github.com/repos/un33k/python-slugify/forks", + "keys_url": "https://api.github.com/repos/un33k/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/un33k/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/un33k/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/un33k/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/un33k/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/un33k/python-slugify/events", + "assignees_url": "https://api.github.com/repos/un33k/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/un33k/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/un33k/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/un33k/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/un33k/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/un33k/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/un33k/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/un33k/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/un33k/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/un33k/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/un33k/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/un33k/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/un33k/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/un33k/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/un33k/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/un33k/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/un33k/python-slugify/merges", + "archive_url": "https://api.github.com/repos/un33k/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/un33k/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/un33k/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/un33k/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/un33k/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/un33k/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/un33k/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/un33k/python-slugify/deployments", + "created_at": "2012-10-15T01:44:50Z", + "updated_at": "2026-09-05T12:52:20Z", + "pushed_at": "2026-04-27T11:17:17Z", + "git_url": "git://github.com/un33k/python-slugify.git", + "ssh_url": "git@github.com:un33k/python-slugify.git", + "clone_url": "https://github.com/un33k/python-slugify.git", + "svn_url": "https://github.com/un33k/python-slugify", + "homepage": "", + "size": 208, + "stargazers_count": 1623, + "watchers_count": 1623, + "language": "Python", + "has_issues": true, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 134, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 17, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 134, + "open_issues": 17, + "watchers": 1623, + "default_branch": "master" + } + }, + "_links": { + "self": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/13" + }, + "html": { + "href": "https://github.com/un33k/python-slugify/pull/13" + }, + "issue": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/13" + }, + "comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/13/comments" + }, + "review_comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/13/comments" + }, + "review_comment": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}" + }, + "commits": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/13/commits" + }, + "statuses": { + "href": "https://api.github.com/repos/un33k/python-slugify/statuses/38d44967eb412acfabb9ff8ca2d1a9ad40ce2f3d" + } + }, + "author_association": "CONTRIBUTOR", + "auto_merge": null, + "assignee": null, + "active_lock_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/15", + "id": 34795936, + "node_id": "MDExOlB1bGxSZXF1ZXN0MzQ3OTU5MzY=", + "html_url": "https://github.com/un33k/python-slugify/pull/15", + "diff_url": "https://github.com/un33k/python-slugify/pull/15.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/15.patch", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/15", + "number": 15, + "state": "closed", + "locked": false, + "title": "Add support for stopwords", + "user": { + "login": "euangoddard", + "id": 412672, + "node_id": "MDQ6VXNlcjQxMjY3Mg==", + "avatar_url": "https://avatars.githubusercontent.com/u/412672?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/euangoddard", + "html_url": "https://github.com/euangoddard", + "followers_url": "https://api.github.com/users/euangoddard/followers", + "following_url": "https://api.github.com/users/euangoddard/following{/other_user}", + "gists_url": "https://api.github.com/users/euangoddard/gists{/gist_id}", + "starred_url": "https://api.github.com/users/euangoddard/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/euangoddard/subscriptions", + "organizations_url": "https://api.github.com/users/euangoddard/orgs", + "repos_url": "https://api.github.com/users/euangoddard/repos", + "events_url": "https://api.github.com/users/euangoddard/events{/privacy}", + "received_events_url": "https://api.github.com/users/euangoddard/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "body": "", + "created_at": "2015-05-06T08:12:13Z", + "updated_at": "2015-05-06T14:39:39Z", + "closed_at": "2015-05-06T14:39:39Z", + "merged_at": "2015-05-06T14:39:39Z", + "merge_commit_sha": "138222febca6b2af867677f906d1cf3b16755341", + "assignees": [], + "requested_reviewers": [], + "requested_teams": [], + "labels": [], + "milestone": null, + "draft": false, + "commits_url": "https://api.github.com/repos/un33k/python-slugify/pulls/15/commits", + "review_comments_url": "https://api.github.com/repos/un33k/python-slugify/pulls/15/comments", + "review_comment_url": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/15/comments", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/f60687c611f6ef8262870ef5f50bcd54242b904b", + "head": { + "label": "euangoddard:master", + "ref": "master", + "sha": "f60687c611f6ef8262870ef5f50bcd54242b904b", + "user": { + "login": "euangoddard", + "id": 412672, + "node_id": "MDQ6VXNlcjQxMjY3Mg==", + "avatar_url": "https://avatars.githubusercontent.com/u/412672?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/euangoddard", + "html_url": "https://github.com/euangoddard", + "followers_url": "https://api.github.com/users/euangoddard/followers", + "following_url": "https://api.github.com/users/euangoddard/following{/other_user}", + "gists_url": "https://api.github.com/users/euangoddard/gists{/gist_id}", + "starred_url": "https://api.github.com/users/euangoddard/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/euangoddard/subscriptions", + "organizations_url": "https://api.github.com/users/euangoddard/orgs", + "repos_url": "https://api.github.com/users/euangoddard/repos", + "events_url": "https://api.github.com/users/euangoddard/events{/privacy}", + "received_events_url": "https://api.github.com/users/euangoddard/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": null + }, + "base": { + "label": "un33k:master", + "ref": "master", + "sha": "c800617dfd45608df60c9b667381801a1544ff58", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 6220331, + "node_id": "MDEwOlJlcG9zaXRvcnk2MjIwMzMx", + "name": "python-slugify", + "full_name": "un33k/python-slugify", + "private": false, + "owner": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/un33k/python-slugify", + "description": "Returns unicode slugs", + "fork": false, + "url": "https://api.github.com/repos/un33k/python-slugify", + "forks_url": "https://api.github.com/repos/un33k/python-slugify/forks", + "keys_url": "https://api.github.com/repos/un33k/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/un33k/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/un33k/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/un33k/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/un33k/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/un33k/python-slugify/events", + "assignees_url": "https://api.github.com/repos/un33k/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/un33k/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/un33k/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/un33k/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/un33k/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/un33k/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/un33k/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/un33k/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/un33k/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/un33k/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/un33k/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/un33k/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/un33k/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/un33k/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/un33k/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/un33k/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/un33k/python-slugify/merges", + "archive_url": "https://api.github.com/repos/un33k/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/un33k/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/un33k/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/un33k/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/un33k/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/un33k/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/un33k/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/un33k/python-slugify/deployments", + "created_at": "2012-10-15T01:44:50Z", + "updated_at": "2026-09-05T12:52:20Z", + "pushed_at": "2026-04-27T11:17:17Z", + "git_url": "git://github.com/un33k/python-slugify.git", + "ssh_url": "git@github.com:un33k/python-slugify.git", + "clone_url": "https://github.com/un33k/python-slugify.git", + "svn_url": "https://github.com/un33k/python-slugify", + "homepage": "", + "size": 208, + "stargazers_count": 1623, + "watchers_count": 1623, + "language": "Python", + "has_issues": true, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 134, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 17, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 134, + "open_issues": 17, + "watchers": 1623, + "default_branch": "master" + } + }, + "_links": { + "self": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/15" + }, + "html": { + "href": "https://github.com/un33k/python-slugify/pull/15" + }, + "issue": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/15" + }, + "comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/15/comments" + }, + "review_comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/15/comments" + }, + "review_comment": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}" + }, + "commits": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/15/commits" + }, + "statuses": { + "href": "https://api.github.com/repos/un33k/python-slugify/statuses/f60687c611f6ef8262870ef5f50bcd54242b904b" + } + }, + "author_association": "CONTRIBUTOR", + "auto_merge": null, + "assignee": null, + "active_lock_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/16", + "id": 39177501, + "node_id": "MDExOlB1bGxSZXF1ZXN0MzkxNzc1MDE=", + "html_url": "https://github.com/un33k/python-slugify/pull/16", + "diff_url": "https://github.com/un33k/python-slugify/pull/16.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/16.patch", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/16", + "number": 16, + "state": "closed", + "locked": false, + "title": "unichr is not defined in python 3", + "user": { + "login": "arthurdarcet", + "id": 973454, + "node_id": "MDQ6VXNlcjk3MzQ1NA==", + "avatar_url": "https://avatars.githubusercontent.com/u/973454?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/arthurdarcet", + "html_url": "https://github.com/arthurdarcet", + "followers_url": "https://api.github.com/users/arthurdarcet/followers", + "following_url": "https://api.github.com/users/arthurdarcet/following{/other_user}", + "gists_url": "https://api.github.com/users/arthurdarcet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/arthurdarcet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/arthurdarcet/subscriptions", + "organizations_url": "https://api.github.com/users/arthurdarcet/orgs", + "repos_url": "https://api.github.com/users/arthurdarcet/repos", + "events_url": "https://api.github.com/users/arthurdarcet/events{/privacy}", + "received_events_url": "https://api.github.com/users/arthurdarcet/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "body": "With python 3.*:\n\n```\n>>> slugify.slugify('test & test')\nTraceback (most recent call last):\n File \"\", line 1, in \n File \"/Users/arthur/Documents/reaaad/pyregrinate/.venv/lib/python3.4/site-packages/slugify/slugify.py\", line 104, in slugify\n text = CHAR_ENTITY_REXP.sub(lambda m: unichr(name2codepoint[m.group(1)]), text)\n File \"/Users/arthur/Documents/reaaad/pyregrinate/.venv/lib/python3.4/site-packages/slugify/slugify.py\", line 104, in \n text = CHAR_ENTITY_REXP.sub(lambda m: unichr(name2codepoint[m.group(1)]), text)\nNameError: name 'unichr' is not defined\n```\n", + "created_at": "2015-07-03T13:59:35Z", + "updated_at": "2015-07-08T13:44:46Z", + "closed_at": "2015-07-03T14:41:40Z", + "merged_at": "2015-07-03T14:41:40Z", + "merge_commit_sha": "8969bb9803262965c568fb04df11ff3c6352dfd4", + "assignees": [], + "requested_reviewers": [], + "requested_teams": [], + "labels": [], + "milestone": null, + "draft": false, + "commits_url": "https://api.github.com/repos/un33k/python-slugify/pulls/16/commits", + "review_comments_url": "https://api.github.com/repos/un33k/python-slugify/pulls/16/comments", + "review_comment_url": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/16/comments", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/706ecc0d30217c2dd125def1cc5cb5445b010dfa", + "head": { + "label": "arthurdarcet:patch-1", + "ref": "patch-1", + "sha": "706ecc0d30217c2dd125def1cc5cb5445b010dfa", + "user": { + "login": "arthurdarcet", + "id": 973454, + "node_id": "MDQ6VXNlcjk3MzQ1NA==", + "avatar_url": "https://avatars.githubusercontent.com/u/973454?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/arthurdarcet", + "html_url": "https://github.com/arthurdarcet", + "followers_url": "https://api.github.com/users/arthurdarcet/followers", + "following_url": "https://api.github.com/users/arthurdarcet/following{/other_user}", + "gists_url": "https://api.github.com/users/arthurdarcet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/arthurdarcet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/arthurdarcet/subscriptions", + "organizations_url": "https://api.github.com/users/arthurdarcet/orgs", + "repos_url": "https://api.github.com/users/arthurdarcet/repos", + "events_url": "https://api.github.com/users/arthurdarcet/events{/privacy}", + "received_events_url": "https://api.github.com/users/arthurdarcet/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 38495255, + "node_id": "MDEwOlJlcG9zaXRvcnkzODQ5NTI1NQ==", + "name": "python-slugify", + "full_name": "arthurdarcet/python-slugify", + "private": false, + "owner": { + "login": "arthurdarcet", + "id": 973454, + "node_id": "MDQ6VXNlcjk3MzQ1NA==", + "avatar_url": "https://avatars.githubusercontent.com/u/973454?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/arthurdarcet", + "html_url": "https://github.com/arthurdarcet", + "followers_url": "https://api.github.com/users/arthurdarcet/followers", + "following_url": "https://api.github.com/users/arthurdarcet/following{/other_user}", + "gists_url": "https://api.github.com/users/arthurdarcet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/arthurdarcet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/arthurdarcet/subscriptions", + "organizations_url": "https://api.github.com/users/arthurdarcet/orgs", + "repos_url": "https://api.github.com/users/arthurdarcet/repos", + "events_url": "https://api.github.com/users/arthurdarcet/events{/privacy}", + "received_events_url": "https://api.github.com/users/arthurdarcet/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/arthurdarcet/python-slugify", + "description": "Returns unicode slugs", + "fork": true, + "url": "https://api.github.com/repos/arthurdarcet/python-slugify", + "forks_url": "https://api.github.com/repos/arthurdarcet/python-slugify/forks", + "keys_url": "https://api.github.com/repos/arthurdarcet/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/arthurdarcet/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/arthurdarcet/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/arthurdarcet/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/arthurdarcet/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/arthurdarcet/python-slugify/events", + "assignees_url": "https://api.github.com/repos/arthurdarcet/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/arthurdarcet/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/arthurdarcet/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/arthurdarcet/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/arthurdarcet/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/arthurdarcet/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/arthurdarcet/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/arthurdarcet/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/arthurdarcet/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/arthurdarcet/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/arthurdarcet/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/arthurdarcet/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/arthurdarcet/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/arthurdarcet/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/arthurdarcet/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/arthurdarcet/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/arthurdarcet/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/arthurdarcet/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/arthurdarcet/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/arthurdarcet/python-slugify/merges", + "archive_url": "https://api.github.com/repos/arthurdarcet/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/arthurdarcet/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/arthurdarcet/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/arthurdarcet/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/arthurdarcet/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/arthurdarcet/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/arthurdarcet/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/arthurdarcet/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/arthurdarcet/python-slugify/deployments", + "created_at": "2015-07-03T13:57:27Z", + "updated_at": "2015-07-03T13:57:27Z", + "pushed_at": "2015-07-03T14:05:09Z", + "git_url": "git://github.com/arthurdarcet/python-slugify.git", + "ssh_url": "git@github.com:arthurdarcet/python-slugify.git", + "clone_url": "https://github.com/arthurdarcet/python-slugify.git", + "svn_url": "https://github.com/arthurdarcet/python-slugify", + "homepage": "", + "size": 146, + "stargazers_count": 0, + "watchers_count": 0, + "language": "Python", + "has_issues": false, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 0, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 0, + "license": { + "key": "bsd-3-clause", + "name": "BSD 3-Clause \"New\" or \"Revised\" License", + "spdx_id": "BSD-3-Clause", + "url": "https://api.github.com/licenses/bsd-3-clause", + "node_id": "MDc6TGljZW5zZTU=" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 0, + "open_issues": 0, + "watchers": 0, + "default_branch": "master" + } + }, + "base": { + "label": "un33k:master", + "ref": "master", + "sha": "741cff34a2600e94b214279479c138dc38fdf6a9", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 6220331, + "node_id": "MDEwOlJlcG9zaXRvcnk2MjIwMzMx", + "name": "python-slugify", + "full_name": "un33k/python-slugify", + "private": false, + "owner": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/un33k/python-slugify", + "description": "Returns unicode slugs", + "fork": false, + "url": "https://api.github.com/repos/un33k/python-slugify", + "forks_url": "https://api.github.com/repos/un33k/python-slugify/forks", + "keys_url": "https://api.github.com/repos/un33k/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/un33k/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/un33k/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/un33k/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/un33k/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/un33k/python-slugify/events", + "assignees_url": "https://api.github.com/repos/un33k/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/un33k/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/un33k/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/un33k/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/un33k/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/un33k/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/un33k/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/un33k/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/un33k/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/un33k/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/un33k/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/un33k/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/un33k/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/un33k/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/un33k/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/un33k/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/un33k/python-slugify/merges", + "archive_url": "https://api.github.com/repos/un33k/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/un33k/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/un33k/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/un33k/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/un33k/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/un33k/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/un33k/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/un33k/python-slugify/deployments", + "created_at": "2012-10-15T01:44:50Z", + "updated_at": "2026-09-05T12:52:20Z", + "pushed_at": "2026-04-27T11:17:17Z", + "git_url": "git://github.com/un33k/python-slugify.git", + "ssh_url": "git@github.com:un33k/python-slugify.git", + "clone_url": "https://github.com/un33k/python-slugify.git", + "svn_url": "https://github.com/un33k/python-slugify", + "homepage": "", + "size": 208, + "stargazers_count": 1623, + "watchers_count": 1623, + "language": "Python", + "has_issues": true, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 134, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 17, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 134, + "open_issues": 17, + "watchers": 1623, + "default_branch": "master" + } + }, + "_links": { + "self": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/16" + }, + "html": { + "href": "https://github.com/un33k/python-slugify/pull/16" + }, + "issue": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/16" + }, + "comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/16/comments" + }, + "review_comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/16/comments" + }, + "review_comment": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}" + }, + "commits": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/16/commits" + }, + "statuses": { + "href": "https://api.github.com/repos/un33k/python-slugify/statuses/706ecc0d30217c2dd125def1cc5cb5445b010dfa" + } + }, + "author_association": "CONTRIBUTOR", + "auto_merge": null, + "assignee": null, + "active_lock_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/18", + "id": 45419474, + "node_id": "MDExOlB1bGxSZXF1ZXN0NDU0MTk0NzQ=", + "html_url": "https://github.com/un33k/python-slugify/pull/18", + "diff_url": "https://github.com/un33k/python-slugify/pull/18.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/18.patch", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/18", + "number": 18, + "state": "closed", + "locked": false, + "title": "quotes are replaced by -, bump to 1.1.4", + "user": { + "login": "nMustaki", + "id": 1023825, + "node_id": "MDQ6VXNlcjEwMjM4MjU=", + "avatar_url": "https://avatars.githubusercontent.com/u/1023825?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/nMustaki", + "html_url": "https://github.com/nMustaki", + "followers_url": "https://api.github.com/users/nMustaki/followers", + "following_url": "https://api.github.com/users/nMustaki/following{/other_user}", + "gists_url": "https://api.github.com/users/nMustaki/gists{/gist_id}", + "starred_url": "https://api.github.com/users/nMustaki/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/nMustaki/subscriptions", + "organizations_url": "https://api.github.com/users/nMustaki/orgs", + "repos_url": "https://api.github.com/users/nMustaki/repos", + "events_url": "https://api.github.com/users/nMustaki/events{/privacy}", + "received_events_url": "https://api.github.com/users/nMustaki/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "body": "FIX #17\n", + "created_at": "2015-09-18T15:29:41Z", + "updated_at": "2016-01-16T03:47:56Z", + "closed_at": "2015-09-21T08:42:40Z", + "merged_at": null, + "merge_commit_sha": "bca5d07fb641529e69f13e65ca60acc0849f3135", + "assignees": [], + "requested_reviewers": [], + "requested_teams": [], + "labels": [], + "milestone": null, + "draft": false, + "commits_url": "https://api.github.com/repos/un33k/python-slugify/pulls/18/commits", + "review_comments_url": "https://api.github.com/repos/un33k/python-slugify/pulls/18/comments", + "review_comment_url": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/18/comments", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/c9208bcd3083db001039b44e2c78b695ef3d34c0", + "head": { + "label": "nMustaki:master", + "ref": "master", + "sha": "c9208bcd3083db001039b44e2c78b695ef3d34c0", + "user": { + "login": "nMustaki", + "id": 1023825, + "node_id": "MDQ6VXNlcjEwMjM4MjU=", + "avatar_url": "https://avatars.githubusercontent.com/u/1023825?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/nMustaki", + "html_url": "https://github.com/nMustaki", + "followers_url": "https://api.github.com/users/nMustaki/followers", + "following_url": "https://api.github.com/users/nMustaki/following{/other_user}", + "gists_url": "https://api.github.com/users/nMustaki/gists{/gist_id}", + "starred_url": "https://api.github.com/users/nMustaki/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/nMustaki/subscriptions", + "organizations_url": "https://api.github.com/users/nMustaki/orgs", + "repos_url": "https://api.github.com/users/nMustaki/repos", + "events_url": "https://api.github.com/users/nMustaki/events{/privacy}", + "received_events_url": "https://api.github.com/users/nMustaki/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 42724881, + "node_id": "MDEwOlJlcG9zaXRvcnk0MjcyNDg4MQ==", + "name": "python-slugify", + "full_name": "nMustaki/python-slugify", + "private": false, + "owner": { + "login": "nMustaki", + "id": 1023825, + "node_id": "MDQ6VXNlcjEwMjM4MjU=", + "avatar_url": "https://avatars.githubusercontent.com/u/1023825?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/nMustaki", + "html_url": "https://github.com/nMustaki", + "followers_url": "https://api.github.com/users/nMustaki/followers", + "following_url": "https://api.github.com/users/nMustaki/following{/other_user}", + "gists_url": "https://api.github.com/users/nMustaki/gists{/gist_id}", + "starred_url": "https://api.github.com/users/nMustaki/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/nMustaki/subscriptions", + "organizations_url": "https://api.github.com/users/nMustaki/orgs", + "repos_url": "https://api.github.com/users/nMustaki/repos", + "events_url": "https://api.github.com/users/nMustaki/events{/privacy}", + "received_events_url": "https://api.github.com/users/nMustaki/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/nMustaki/python-slugify", + "description": "Returns unicode slugs", + "fork": true, + "url": "https://api.github.com/repos/nMustaki/python-slugify", + "forks_url": "https://api.github.com/repos/nMustaki/python-slugify/forks", + "keys_url": "https://api.github.com/repos/nMustaki/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/nMustaki/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/nMustaki/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/nMustaki/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/nMustaki/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/nMustaki/python-slugify/events", + "assignees_url": "https://api.github.com/repos/nMustaki/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/nMustaki/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/nMustaki/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/nMustaki/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/nMustaki/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/nMustaki/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/nMustaki/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/nMustaki/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/nMustaki/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/nMustaki/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/nMustaki/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/nMustaki/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/nMustaki/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/nMustaki/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/nMustaki/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/nMustaki/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/nMustaki/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/nMustaki/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/nMustaki/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/nMustaki/python-slugify/merges", + "archive_url": "https://api.github.com/repos/nMustaki/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/nMustaki/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/nMustaki/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/nMustaki/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/nMustaki/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/nMustaki/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/nMustaki/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/nMustaki/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/nMustaki/python-slugify/deployments", + "created_at": "2015-09-18T13:48:13Z", + "updated_at": "2015-09-18T13:48:14Z", + "pushed_at": "2015-09-21T08:38:35Z", + "git_url": "git://github.com/nMustaki/python-slugify.git", + "ssh_url": "git@github.com:nMustaki/python-slugify.git", + "clone_url": "https://github.com/nMustaki/python-slugify.git", + "svn_url": "https://github.com/nMustaki/python-slugify", + "homepage": "", + "size": 139, + "stargazers_count": 0, + "watchers_count": 0, + "language": "Python", + "has_issues": false, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 0, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 0, + "license": { + "key": "bsd-3-clause", + "name": "BSD 3-Clause \"New\" or \"Revised\" License", + "spdx_id": "BSD-3-Clause", + "url": "https://api.github.com/licenses/bsd-3-clause", + "node_id": "MDc6TGljZW5zZTU=" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 0, + "open_issues": 0, + "watchers": 0, + "default_branch": "master" + } + }, + "base": { + "label": "un33k:master", + "ref": "master", + "sha": "632ea7d6d54302443d8011727ed5ef7174d50640", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 6220331, + "node_id": "MDEwOlJlcG9zaXRvcnk2MjIwMzMx", + "name": "python-slugify", + "full_name": "un33k/python-slugify", + "private": false, + "owner": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/un33k/python-slugify", + "description": "Returns unicode slugs", + "fork": false, + "url": "https://api.github.com/repos/un33k/python-slugify", + "forks_url": "https://api.github.com/repos/un33k/python-slugify/forks", + "keys_url": "https://api.github.com/repos/un33k/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/un33k/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/un33k/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/un33k/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/un33k/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/un33k/python-slugify/events", + "assignees_url": "https://api.github.com/repos/un33k/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/un33k/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/un33k/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/un33k/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/un33k/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/un33k/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/un33k/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/un33k/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/un33k/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/un33k/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/un33k/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/un33k/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/un33k/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/un33k/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/un33k/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/un33k/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/un33k/python-slugify/merges", + "archive_url": "https://api.github.com/repos/un33k/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/un33k/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/un33k/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/un33k/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/un33k/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/un33k/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/un33k/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/un33k/python-slugify/deployments", + "created_at": "2012-10-15T01:44:50Z", + "updated_at": "2026-09-05T12:52:20Z", + "pushed_at": "2026-04-27T11:17:17Z", + "git_url": "git://github.com/un33k/python-slugify.git", + "ssh_url": "git@github.com:un33k/python-slugify.git", + "clone_url": "https://github.com/un33k/python-slugify.git", + "svn_url": "https://github.com/un33k/python-slugify", + "homepage": "", + "size": 208, + "stargazers_count": 1623, + "watchers_count": 1623, + "language": "Python", + "has_issues": true, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 134, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 17, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 134, + "open_issues": 17, + "watchers": 1623, + "default_branch": "master" + } + }, + "_links": { + "self": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/18" + }, + "html": { + "href": "https://github.com/un33k/python-slugify/pull/18" + }, + "issue": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/18" + }, + "comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/18/comments" + }, + "review_comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/18/comments" + }, + "review_comment": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}" + }, + "commits": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/18/commits" + }, + "statuses": { + "href": "https://api.github.com/repos/un33k/python-slugify/statuses/c9208bcd3083db001039b44e2c78b695ef3d34c0" + } + }, + "author_association": "NONE", + "auto_merge": null, + "assignee": null, + "active_lock_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/19", + "id": 45509076, + "node_id": "MDExOlB1bGxSZXF1ZXN0NDU1MDkwNzY=", + "html_url": "https://github.com/un33k/python-slugify/pull/19", + "diff_url": "https://github.com/un33k/python-slugify/pull/19.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/19.patch", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/19", + "number": 19, + "state": "closed", + "locked": false, + "title": "Add test cases containing numbers", + "user": { + "login": "edunham", + "id": 812892, + "node_id": "MDQ6VXNlcjgxMjg5Mg==", + "avatar_url": "https://avatars.githubusercontent.com/u/812892?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/edunham", + "html_url": "https://github.com/edunham", + "followers_url": "https://api.github.com/users/edunham/followers", + "following_url": "https://api.github.com/users/edunham/following{/other_user}", + "gists_url": "https://api.github.com/users/edunham/gists{/gist_id}", + "starred_url": "https://api.github.com/users/edunham/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/edunham/subscriptions", + "organizations_url": "https://api.github.com/users/edunham/orgs", + "repos_url": "https://api.github.com/users/edunham/repos", + "events_url": "https://api.github.com/users/edunham/events{/privacy}", + "received_events_url": "https://api.github.com/users/edunham/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "body": "I noticed that you didn't have any. \n", + "created_at": "2015-09-21T01:32:01Z", + "updated_at": "2015-09-21T12:40:23Z", + "closed_at": "2015-09-21T12:40:23Z", + "merged_at": "2015-09-21T12:40:23Z", + "merge_commit_sha": "c477b50797dfd6d15c43615c994e899069a97ad6", + "assignees": [], + "requested_reviewers": [], + "requested_teams": [], + "labels": [], + "milestone": null, + "draft": false, + "commits_url": "https://api.github.com/repos/un33k/python-slugify/pulls/19/commits", + "review_comments_url": "https://api.github.com/repos/un33k/python-slugify/pulls/19/comments", + "review_comment_url": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/19/comments", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/115c1eb56421a36159768e1fcd9a00386988b209", + "head": { + "label": "edunham:numeric-tests", + "ref": "numeric-tests", + "sha": "115c1eb56421a36159768e1fcd9a00386988b209", + "user": { + "login": "edunham", + "id": 812892, + "node_id": "MDQ6VXNlcjgxMjg5Mg==", + "avatar_url": "https://avatars.githubusercontent.com/u/812892?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/edunham", + "html_url": "https://github.com/edunham", + "followers_url": "https://api.github.com/users/edunham/followers", + "following_url": "https://api.github.com/users/edunham/following{/other_user}", + "gists_url": "https://api.github.com/users/edunham/gists{/gist_id}", + "starred_url": "https://api.github.com/users/edunham/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/edunham/subscriptions", + "organizations_url": "https://api.github.com/users/edunham/orgs", + "repos_url": "https://api.github.com/users/edunham/repos", + "events_url": "https://api.github.com/users/edunham/events{/privacy}", + "received_events_url": "https://api.github.com/users/edunham/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 42837009, + "node_id": "MDEwOlJlcG9zaXRvcnk0MjgzNzAwOQ==", + "name": "python-slugify", + "full_name": "edunham/python-slugify", + "private": false, + "owner": { + "login": "edunham", + "id": 812892, + "node_id": "MDQ6VXNlcjgxMjg5Mg==", + "avatar_url": "https://avatars.githubusercontent.com/u/812892?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/edunham", + "html_url": "https://github.com/edunham", + "followers_url": "https://api.github.com/users/edunham/followers", + "following_url": "https://api.github.com/users/edunham/following{/other_user}", + "gists_url": "https://api.github.com/users/edunham/gists{/gist_id}", + "starred_url": "https://api.github.com/users/edunham/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/edunham/subscriptions", + "organizations_url": "https://api.github.com/users/edunham/orgs", + "repos_url": "https://api.github.com/users/edunham/repos", + "events_url": "https://api.github.com/users/edunham/events{/privacy}", + "received_events_url": "https://api.github.com/users/edunham/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/edunham/python-slugify", + "description": "Returns unicode slugs", + "fork": true, + "url": "https://api.github.com/repos/edunham/python-slugify", + "forks_url": "https://api.github.com/repos/edunham/python-slugify/forks", + "keys_url": "https://api.github.com/repos/edunham/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/edunham/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/edunham/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/edunham/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/edunham/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/edunham/python-slugify/events", + "assignees_url": "https://api.github.com/repos/edunham/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/edunham/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/edunham/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/edunham/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/edunham/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/edunham/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/edunham/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/edunham/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/edunham/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/edunham/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/edunham/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/edunham/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/edunham/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/edunham/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/edunham/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/edunham/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/edunham/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/edunham/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/edunham/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/edunham/python-slugify/merges", + "archive_url": "https://api.github.com/repos/edunham/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/edunham/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/edunham/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/edunham/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/edunham/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/edunham/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/edunham/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/edunham/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/edunham/python-slugify/deployments", + "created_at": "2015-09-21T01:25:21Z", + "updated_at": "2015-09-21T01:25:21Z", + "pushed_at": "2015-09-21T01:31:14Z", + "git_url": "git://github.com/edunham/python-slugify.git", + "ssh_url": "git@github.com:edunham/python-slugify.git", + "clone_url": "https://github.com/edunham/python-slugify.git", + "svn_url": "https://github.com/edunham/python-slugify", + "homepage": "", + "size": 129, + "stargazers_count": 0, + "watchers_count": 0, + "language": "Python", + "has_issues": false, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 0, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 0, + "license": { + "key": "bsd-3-clause", + "name": "BSD 3-Clause \"New\" or \"Revised\" License", + "spdx_id": "BSD-3-Clause", + "url": "https://api.github.com/licenses/bsd-3-clause", + "node_id": "MDc6TGljZW5zZTU=" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 0, + "open_issues": 0, + "watchers": 0, + "default_branch": "master" + } + }, + "base": { + "label": "un33k:master", + "ref": "master", + "sha": "632ea7d6d54302443d8011727ed5ef7174d50640", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 6220331, + "node_id": "MDEwOlJlcG9zaXRvcnk2MjIwMzMx", + "name": "python-slugify", + "full_name": "un33k/python-slugify", + "private": false, + "owner": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/un33k/python-slugify", + "description": "Returns unicode slugs", + "fork": false, + "url": "https://api.github.com/repos/un33k/python-slugify", + "forks_url": "https://api.github.com/repos/un33k/python-slugify/forks", + "keys_url": "https://api.github.com/repos/un33k/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/un33k/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/un33k/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/un33k/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/un33k/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/un33k/python-slugify/events", + "assignees_url": "https://api.github.com/repos/un33k/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/un33k/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/un33k/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/un33k/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/un33k/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/un33k/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/un33k/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/un33k/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/un33k/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/un33k/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/un33k/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/un33k/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/un33k/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/un33k/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/un33k/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/un33k/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/un33k/python-slugify/merges", + "archive_url": "https://api.github.com/repos/un33k/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/un33k/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/un33k/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/un33k/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/un33k/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/un33k/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/un33k/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/un33k/python-slugify/deployments", + "created_at": "2012-10-15T01:44:50Z", + "updated_at": "2026-09-05T12:52:20Z", + "pushed_at": "2026-04-27T11:17:17Z", + "git_url": "git://github.com/un33k/python-slugify.git", + "ssh_url": "git@github.com:un33k/python-slugify.git", + "clone_url": "https://github.com/un33k/python-slugify.git", + "svn_url": "https://github.com/un33k/python-slugify", + "homepage": "", + "size": 208, + "stargazers_count": 1623, + "watchers_count": 1623, + "language": "Python", + "has_issues": true, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 134, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 17, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 134, + "open_issues": 17, + "watchers": 1623, + "default_branch": "master" + } + }, + "_links": { + "self": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/19" + }, + "html": { + "href": "https://github.com/un33k/python-slugify/pull/19" + }, + "issue": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/19" + }, + "comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/19/comments" + }, + "review_comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/19/comments" + }, + "review_comment": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}" + }, + "commits": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/19/commits" + }, + "statuses": { + "href": "https://api.github.com/repos/un33k/python-slugify/statuses/115c1eb56421a36159768e1fcd9a00386988b209" + } + }, + "author_association": "CONTRIBUTOR", + "auto_merge": null, + "assignee": null, + "active_lock_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/20", + "id": 45524642, + "node_id": "MDExOlB1bGxSZXF1ZXN0NDU1MjQ2NDI=", + "html_url": "https://github.com/un33k/python-slugify/pull/20", + "diff_url": "https://github.com/un33k/python-slugify/pull/20.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/20.patch", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/20", + "number": 20, + "state": "closed", + "locked": false, + "title": "Comma separator parameter", + "user": { + "login": "nMustaki", + "id": 1023825, + "node_id": "MDQ6VXNlcjEwMjM4MjU=", + "avatar_url": "https://avatars.githubusercontent.com/u/1023825?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/nMustaki", + "html_url": "https://github.com/nMustaki", + "followers_url": "https://api.github.com/users/nMustaki/followers", + "following_url": "https://api.github.com/users/nMustaki/following{/other_user}", + "gists_url": "https://api.github.com/users/nMustaki/gists{/gist_id}", + "starred_url": "https://api.github.com/users/nMustaki/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/nMustaki/subscriptions", + "organizations_url": "https://api.github.com/users/nMustaki/orgs", + "repos_url": "https://api.github.com/users/nMustaki/repos", + "events_url": "https://api.github.com/users/nMustaki/events{/privacy}", + "received_events_url": "https://api.github.com/users/nMustaki/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "body": "Allow comma to be replaced by any character, like this : \n\n``` python\ntxt = 'C\\'est déjà l\\'été.'\nr = slugify(txt, comma_replacement=\"-\")\nself.assertEqual(r, \"c-est-deja-l-ete\")\n```\n", + "created_at": "2015-09-21T08:41:53Z", + "updated_at": "2015-09-21T12:43:37Z", + "closed_at": "2015-09-21T12:37:45Z", + "merged_at": null, + "merge_commit_sha": "ff2e0ae53565ec2d3a2f1dac20f9ac3074a75cdc", + "assignees": [], + "requested_reviewers": [], + "requested_teams": [], + "labels": [], + "milestone": null, + "draft": false, + "commits_url": "https://api.github.com/repos/un33k/python-slugify/pulls/20/commits", + "review_comments_url": "https://api.github.com/repos/un33k/python-slugify/pulls/20/comments", + "review_comment_url": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/20/comments", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/50fdbf1dbdd00146b11b86e53681d6a55d9969af", + "head": { + "label": "nMustaki:comma_separator", + "ref": "comma_separator", + "sha": "50fdbf1dbdd00146b11b86e53681d6a55d9969af", + "user": { + "login": "nMustaki", + "id": 1023825, + "node_id": "MDQ6VXNlcjEwMjM4MjU=", + "avatar_url": "https://avatars.githubusercontent.com/u/1023825?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/nMustaki", + "html_url": "https://github.com/nMustaki", + "followers_url": "https://api.github.com/users/nMustaki/followers", + "following_url": "https://api.github.com/users/nMustaki/following{/other_user}", + "gists_url": "https://api.github.com/users/nMustaki/gists{/gist_id}", + "starred_url": "https://api.github.com/users/nMustaki/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/nMustaki/subscriptions", + "organizations_url": "https://api.github.com/users/nMustaki/orgs", + "repos_url": "https://api.github.com/users/nMustaki/repos", + "events_url": "https://api.github.com/users/nMustaki/events{/privacy}", + "received_events_url": "https://api.github.com/users/nMustaki/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 42724881, + "node_id": "MDEwOlJlcG9zaXRvcnk0MjcyNDg4MQ==", + "name": "python-slugify", + "full_name": "nMustaki/python-slugify", + "private": false, + "owner": { + "login": "nMustaki", + "id": 1023825, + "node_id": "MDQ6VXNlcjEwMjM4MjU=", + "avatar_url": "https://avatars.githubusercontent.com/u/1023825?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/nMustaki", + "html_url": "https://github.com/nMustaki", + "followers_url": "https://api.github.com/users/nMustaki/followers", + "following_url": "https://api.github.com/users/nMustaki/following{/other_user}", + "gists_url": "https://api.github.com/users/nMustaki/gists{/gist_id}", + "starred_url": "https://api.github.com/users/nMustaki/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/nMustaki/subscriptions", + "organizations_url": "https://api.github.com/users/nMustaki/orgs", + "repos_url": "https://api.github.com/users/nMustaki/repos", + "events_url": "https://api.github.com/users/nMustaki/events{/privacy}", + "received_events_url": "https://api.github.com/users/nMustaki/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/nMustaki/python-slugify", + "description": "Returns unicode slugs", + "fork": true, + "url": "https://api.github.com/repos/nMustaki/python-slugify", + "forks_url": "https://api.github.com/repos/nMustaki/python-slugify/forks", + "keys_url": "https://api.github.com/repos/nMustaki/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/nMustaki/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/nMustaki/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/nMustaki/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/nMustaki/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/nMustaki/python-slugify/events", + "assignees_url": "https://api.github.com/repos/nMustaki/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/nMustaki/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/nMustaki/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/nMustaki/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/nMustaki/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/nMustaki/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/nMustaki/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/nMustaki/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/nMustaki/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/nMustaki/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/nMustaki/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/nMustaki/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/nMustaki/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/nMustaki/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/nMustaki/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/nMustaki/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/nMustaki/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/nMustaki/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/nMustaki/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/nMustaki/python-slugify/merges", + "archive_url": "https://api.github.com/repos/nMustaki/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/nMustaki/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/nMustaki/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/nMustaki/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/nMustaki/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/nMustaki/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/nMustaki/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/nMustaki/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/nMustaki/python-slugify/deployments", + "created_at": "2015-09-18T13:48:13Z", + "updated_at": "2015-09-18T13:48:14Z", + "pushed_at": "2015-09-21T08:38:35Z", + "git_url": "git://github.com/nMustaki/python-slugify.git", + "ssh_url": "git@github.com:nMustaki/python-slugify.git", + "clone_url": "https://github.com/nMustaki/python-slugify.git", + "svn_url": "https://github.com/nMustaki/python-slugify", + "homepage": "", + "size": 139, + "stargazers_count": 0, + "watchers_count": 0, + "language": "Python", + "has_issues": false, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 0, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 0, + "license": { + "key": "bsd-3-clause", + "name": "BSD 3-Clause \"New\" or \"Revised\" License", + "spdx_id": "BSD-3-Clause", + "url": "https://api.github.com/licenses/bsd-3-clause", + "node_id": "MDc6TGljZW5zZTU=" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 0, + "open_issues": 0, + "watchers": 0, + "default_branch": "master" + } + }, + "base": { + "label": "un33k:master", + "ref": "master", + "sha": "632ea7d6d54302443d8011727ed5ef7174d50640", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 6220331, + "node_id": "MDEwOlJlcG9zaXRvcnk2MjIwMzMx", + "name": "python-slugify", + "full_name": "un33k/python-slugify", + "private": false, + "owner": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/un33k/python-slugify", + "description": "Returns unicode slugs", + "fork": false, + "url": "https://api.github.com/repos/un33k/python-slugify", + "forks_url": "https://api.github.com/repos/un33k/python-slugify/forks", + "keys_url": "https://api.github.com/repos/un33k/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/un33k/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/un33k/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/un33k/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/un33k/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/un33k/python-slugify/events", + "assignees_url": "https://api.github.com/repos/un33k/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/un33k/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/un33k/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/un33k/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/un33k/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/un33k/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/un33k/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/un33k/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/un33k/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/un33k/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/un33k/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/un33k/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/un33k/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/un33k/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/un33k/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/un33k/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/un33k/python-slugify/merges", + "archive_url": "https://api.github.com/repos/un33k/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/un33k/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/un33k/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/un33k/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/un33k/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/un33k/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/un33k/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/un33k/python-slugify/deployments", + "created_at": "2012-10-15T01:44:50Z", + "updated_at": "2026-09-05T12:52:20Z", + "pushed_at": "2026-04-27T11:17:17Z", + "git_url": "git://github.com/un33k/python-slugify.git", + "ssh_url": "git@github.com:un33k/python-slugify.git", + "clone_url": "https://github.com/un33k/python-slugify.git", + "svn_url": "https://github.com/un33k/python-slugify", + "homepage": "", + "size": 208, + "stargazers_count": 1623, + "watchers_count": 1623, + "language": "Python", + "has_issues": true, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 134, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 17, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 134, + "open_issues": 17, + "watchers": 1623, + "default_branch": "master" + } + }, + "_links": { + "self": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/20" + }, + "html": { + "href": "https://github.com/un33k/python-slugify/pull/20" + }, + "issue": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/20" + }, + "comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/20/comments" + }, + "review_comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/20/comments" + }, + "review_comment": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}" + }, + "commits": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/20/commits" + }, + "statuses": { + "href": "https://api.github.com/repos/un33k/python-slugify/statuses/50fdbf1dbdd00146b11b86e53681d6a55d9969af" + } + }, + "author_association": "NONE", + "auto_merge": null, + "assignee": null, + "active_lock_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/21", + "id": 46970419, + "node_id": "MDExOlB1bGxSZXF1ZXN0NDY5NzA0MTk=", + "html_url": "https://github.com/un33k/python-slugify/pull/21", + "diff_url": "https://github.com/un33k/python-slugify/pull/21.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/21.patch", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/21", + "number": 21, + "state": "closed", + "locked": false, + "title": "Only call .lower() once", + "user": { + "login": "kengruven", + "id": 22565, + "node_id": "MDQ6VXNlcjIyNTY1", + "avatar_url": "https://avatars.githubusercontent.com/u/22565?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/kengruven", + "html_url": "https://github.com/kengruven", + "followers_url": "https://api.github.com/users/kengruven/followers", + "following_url": "https://api.github.com/users/kengruven/following{/other_user}", + "gists_url": "https://api.github.com/users/kengruven/gists{/gist_id}", + "starred_url": "https://api.github.com/users/kengruven/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/kengruven/subscriptions", + "organizations_url": "https://api.github.com/users/kengruven/orgs", + "repos_url": "https://api.github.com/users/kengruven/repos", + "events_url": "https://api.github.com/users/kengruven/events{/privacy}", + "received_events_url": "https://api.github.com/users/kengruven/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "body": "", + "created_at": "2015-10-06T23:17:03Z", + "updated_at": "2015-10-07T01:01:18Z", + "closed_at": "2015-10-07T01:01:12Z", + "merged_at": "2015-10-07T01:01:12Z", + "merge_commit_sha": "a77a204523b82e32b68cf3bde8d29f40c12329a3", + "assignees": [], + "requested_reviewers": [], + "requested_teams": [], + "labels": [], + "milestone": null, + "draft": false, + "commits_url": "https://api.github.com/repos/un33k/python-slugify/pulls/21/commits", + "review_comments_url": "https://api.github.com/repos/un33k/python-slugify/pulls/21/comments", + "review_comment_url": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/21/comments", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/0c3053d3ccc0de3f49d86d5e515600842336d62a", + "head": { + "label": "kengruven:master", + "ref": "master", + "sha": "0c3053d3ccc0de3f49d86d5e515600842336d62a", + "user": { + "login": "kengruven", + "id": 22565, + "node_id": "MDQ6VXNlcjIyNTY1", + "avatar_url": "https://avatars.githubusercontent.com/u/22565?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/kengruven", + "html_url": "https://github.com/kengruven", + "followers_url": "https://api.github.com/users/kengruven/followers", + "following_url": "https://api.github.com/users/kengruven/following{/other_user}", + "gists_url": "https://api.github.com/users/kengruven/gists{/gist_id}", + "starred_url": "https://api.github.com/users/kengruven/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/kengruven/subscriptions", + "organizations_url": "https://api.github.com/users/kengruven/orgs", + "repos_url": "https://api.github.com/users/kengruven/repos", + "events_url": "https://api.github.com/users/kengruven/events{/privacy}", + "received_events_url": "https://api.github.com/users/kengruven/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": null + }, + "base": { + "label": "un33k:master", + "ref": "master", + "sha": "069a3684cb5b6e6446a68b0b592e5aeb4cb8ce01", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 6220331, + "node_id": "MDEwOlJlcG9zaXRvcnk2MjIwMzMx", + "name": "python-slugify", + "full_name": "un33k/python-slugify", + "private": false, + "owner": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/un33k/python-slugify", + "description": "Returns unicode slugs", + "fork": false, + "url": "https://api.github.com/repos/un33k/python-slugify", + "forks_url": "https://api.github.com/repos/un33k/python-slugify/forks", + "keys_url": "https://api.github.com/repos/un33k/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/un33k/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/un33k/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/un33k/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/un33k/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/un33k/python-slugify/events", + "assignees_url": "https://api.github.com/repos/un33k/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/un33k/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/un33k/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/un33k/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/un33k/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/un33k/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/un33k/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/un33k/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/un33k/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/un33k/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/un33k/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/un33k/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/un33k/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/un33k/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/un33k/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/un33k/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/un33k/python-slugify/merges", + "archive_url": "https://api.github.com/repos/un33k/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/un33k/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/un33k/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/un33k/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/un33k/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/un33k/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/un33k/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/un33k/python-slugify/deployments", + "created_at": "2012-10-15T01:44:50Z", + "updated_at": "2026-09-05T12:52:20Z", + "pushed_at": "2026-04-27T11:17:17Z", + "git_url": "git://github.com/un33k/python-slugify.git", + "ssh_url": "git@github.com:un33k/python-slugify.git", + "clone_url": "https://github.com/un33k/python-slugify.git", + "svn_url": "https://github.com/un33k/python-slugify", + "homepage": "", + "size": 208, + "stargazers_count": 1623, + "watchers_count": 1623, + "language": "Python", + "has_issues": true, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 134, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 17, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 134, + "open_issues": 17, + "watchers": 1623, + "default_branch": "master" + } + }, + "_links": { + "self": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/21" + }, + "html": { + "href": "https://github.com/un33k/python-slugify/pull/21" + }, + "issue": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/21" + }, + "comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/21/comments" + }, + "review_comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/21/comments" + }, + "review_comment": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}" + }, + "commits": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/21/commits" + }, + "statuses": { + "href": "https://api.github.com/repos/un33k/python-slugify/statuses/0c3053d3ccc0de3f49d86d5e515600842336d62a" + } + }, + "author_association": "CONTRIBUTOR", + "auto_merge": null, + "assignee": null, + "active_lock_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/22", + "id": 50493996, + "node_id": "MDExOlB1bGxSZXF1ZXN0NTA0OTM5OTY=", + "html_url": "https://github.com/un33k/python-slugify/pull/22", + "diff_url": "https://github.com/un33k/python-slugify/pull/22.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/22.patch", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/22", + "number": 22, + "state": "closed", + "locked": false, + "title": "Stopword replacement bug (different separators)", + "user": { + "login": "lucaswo", + "id": 7880558, + "node_id": "MDQ6VXNlcjc4ODA1NTg=", + "avatar_url": "https://avatars.githubusercontent.com/u/7880558?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/lucaswo", + "html_url": "https://github.com/lucaswo", + "followers_url": "https://api.github.com/users/lucaswo/followers", + "following_url": "https://api.github.com/users/lucaswo/following{/other_user}", + "gists_url": "https://api.github.com/users/lucaswo/gists{/gist_id}", + "starred_url": "https://api.github.com/users/lucaswo/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/lucaswo/subscriptions", + "organizations_url": "https://api.github.com/users/lucaswo/orgs", + "repos_url": "https://api.github.com/users/lucaswo/repos", + "events_url": "https://api.github.com/users/lucaswo/events{/privacy}", + "received_events_url": "https://api.github.com/users/lucaswo/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "body": "Just like it says in the title. Whenever I wanted to remove stopwords with a seperator other than '-' nothing happend. \nI just changed the split criteria to '-', because the separator replacement is done later.\n", + "created_at": "2015-11-12T10:26:10Z", + "updated_at": "2015-12-12T16:15:33Z", + "closed_at": "2015-12-12T16:15:21Z", + "merged_at": "2015-12-12T16:15:21Z", + "merge_commit_sha": "046cda859c157192bb0b8692e5e1ac423a5d3b7e", + "assignees": [], + "requested_reviewers": [], + "requested_teams": [], + "labels": [], + "milestone": null, + "draft": false, + "commits_url": "https://api.github.com/repos/un33k/python-slugify/pulls/22/commits", + "review_comments_url": "https://api.github.com/repos/un33k/python-slugify/pulls/22/comments", + "review_comment_url": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/22/comments", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/a1543fe0ae019606bec660d6cf2e70a435ff29e4", + "head": { + "label": "lucaswo:master", + "ref": "master", + "sha": "a1543fe0ae019606bec660d6cf2e70a435ff29e4", + "user": { + "login": "lucaswo", + "id": 7880558, + "node_id": "MDQ6VXNlcjc4ODA1NTg=", + "avatar_url": "https://avatars.githubusercontent.com/u/7880558?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/lucaswo", + "html_url": "https://github.com/lucaswo", + "followers_url": "https://api.github.com/users/lucaswo/followers", + "following_url": "https://api.github.com/users/lucaswo/following{/other_user}", + "gists_url": "https://api.github.com/users/lucaswo/gists{/gist_id}", + "starred_url": "https://api.github.com/users/lucaswo/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/lucaswo/subscriptions", + "organizations_url": "https://api.github.com/users/lucaswo/orgs", + "repos_url": "https://api.github.com/users/lucaswo/repos", + "events_url": "https://api.github.com/users/lucaswo/events{/privacy}", + "received_events_url": "https://api.github.com/users/lucaswo/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": null + }, + "base": { + "label": "un33k:master", + "ref": "master", + "sha": "4091b444746032847ccce0d5c6a0cd5b1bb73d81", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 6220331, + "node_id": "MDEwOlJlcG9zaXRvcnk2MjIwMzMx", + "name": "python-slugify", + "full_name": "un33k/python-slugify", + "private": false, + "owner": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/un33k/python-slugify", + "description": "Returns unicode slugs", + "fork": false, + "url": "https://api.github.com/repos/un33k/python-slugify", + "forks_url": "https://api.github.com/repos/un33k/python-slugify/forks", + "keys_url": "https://api.github.com/repos/un33k/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/un33k/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/un33k/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/un33k/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/un33k/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/un33k/python-slugify/events", + "assignees_url": "https://api.github.com/repos/un33k/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/un33k/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/un33k/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/un33k/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/un33k/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/un33k/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/un33k/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/un33k/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/un33k/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/un33k/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/un33k/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/un33k/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/un33k/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/un33k/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/un33k/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/un33k/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/un33k/python-slugify/merges", + "archive_url": "https://api.github.com/repos/un33k/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/un33k/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/un33k/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/un33k/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/un33k/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/un33k/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/un33k/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/un33k/python-slugify/deployments", + "created_at": "2012-10-15T01:44:50Z", + "updated_at": "2026-09-05T12:52:20Z", + "pushed_at": "2026-04-27T11:17:17Z", + "git_url": "git://github.com/un33k/python-slugify.git", + "ssh_url": "git@github.com:un33k/python-slugify.git", + "clone_url": "https://github.com/un33k/python-slugify.git", + "svn_url": "https://github.com/un33k/python-slugify", + "homepage": "", + "size": 208, + "stargazers_count": 1623, + "watchers_count": 1623, + "language": "Python", + "has_issues": true, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 134, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 17, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 134, + "open_issues": 17, + "watchers": 1623, + "default_branch": "master" + } + }, + "_links": { + "self": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/22" + }, + "html": { + "href": "https://github.com/un33k/python-slugify/pull/22" + }, + "issue": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/22" + }, + "comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/22/comments" + }, + "review_comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/22/comments" + }, + "review_comment": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}" + }, + "commits": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/22/commits" + }, + "statuses": { + "href": "https://api.github.com/repos/un33k/python-slugify/statuses/a1543fe0ae019606bec660d6cf2e70a435ff29e4" + } + }, + "author_association": "CONTRIBUTOR", + "auto_merge": null, + "assignee": null, + "active_lock_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/23", + "id": 56175613, + "node_id": "MDExOlB1bGxSZXF1ZXN0NTYxNzU2MTM=", + "html_url": "https://github.com/un33k/python-slugify/pull/23", + "diff_url": "https://github.com/un33k/python-slugify/pull/23.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/23.patch", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/23", + "number": 23, + "state": "closed", + "locked": false, + "title": "Fixed issue #17", + "user": { + "login": "fabiocaccamo", + "id": 1035294, + "node_id": "MDQ6VXNlcjEwMzUyOTQ=", + "avatar_url": "https://avatars.githubusercontent.com/u/1035294?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/fabiocaccamo", + "html_url": "https://github.com/fabiocaccamo", + "followers_url": "https://api.github.com/users/fabiocaccamo/followers", + "following_url": "https://api.github.com/users/fabiocaccamo/following{/other_user}", + "gists_url": "https://api.github.com/users/fabiocaccamo/gists{/gist_id}", + "starred_url": "https://api.github.com/users/fabiocaccamo/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/fabiocaccamo/subscriptions", + "organizations_url": "https://api.github.com/users/fabiocaccamo/orgs", + "repos_url": "https://api.github.com/users/fabiocaccamo/repos", + "events_url": "https://api.github.com/users/fabiocaccamo/events{/privacy}", + "received_events_url": "https://api.github.com/users/fabiocaccamo/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "body": "", + "created_at": "2016-01-15T14:33:44Z", + "updated_at": "2016-01-16T03:48:38Z", + "closed_at": "2016-01-16T03:28:45Z", + "merged_at": "2016-01-16T03:28:45Z", + "merge_commit_sha": "fc829041f6b180d739a26ee6a455af15d3550992", + "assignees": [], + "requested_reviewers": [], + "requested_teams": [], + "labels": [], + "milestone": null, + "draft": false, + "commits_url": "https://api.github.com/repos/un33k/python-slugify/pulls/23/commits", + "review_comments_url": "https://api.github.com/repos/un33k/python-slugify/pulls/23/comments", + "review_comment_url": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/23/comments", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/76f0678e9b28ae54a9a29b95d9fedb74bc8855cd", + "head": { + "label": "fabiocaccamo:master", + "ref": "master", + "sha": "76f0678e9b28ae54a9a29b95d9fedb74bc8855cd", + "user": { + "login": "fabiocaccamo", + "id": 1035294, + "node_id": "MDQ6VXNlcjEwMzUyOTQ=", + "avatar_url": "https://avatars.githubusercontent.com/u/1035294?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/fabiocaccamo", + "html_url": "https://github.com/fabiocaccamo", + "followers_url": "https://api.github.com/users/fabiocaccamo/followers", + "following_url": "https://api.github.com/users/fabiocaccamo/following{/other_user}", + "gists_url": "https://api.github.com/users/fabiocaccamo/gists{/gist_id}", + "starred_url": "https://api.github.com/users/fabiocaccamo/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/fabiocaccamo/subscriptions", + "organizations_url": "https://api.github.com/users/fabiocaccamo/orgs", + "repos_url": "https://api.github.com/users/fabiocaccamo/repos", + "events_url": "https://api.github.com/users/fabiocaccamo/events{/privacy}", + "received_events_url": "https://api.github.com/users/fabiocaccamo/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": null + }, + "base": { + "label": "un33k:master", + "ref": "master", + "sha": "eeabcc29eb67dd9ab34c693db44f9ece312e7a2c", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 6220331, + "node_id": "MDEwOlJlcG9zaXRvcnk2MjIwMzMx", + "name": "python-slugify", + "full_name": "un33k/python-slugify", + "private": false, + "owner": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/un33k/python-slugify", + "description": "Returns unicode slugs", + "fork": false, + "url": "https://api.github.com/repos/un33k/python-slugify", + "forks_url": "https://api.github.com/repos/un33k/python-slugify/forks", + "keys_url": "https://api.github.com/repos/un33k/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/un33k/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/un33k/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/un33k/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/un33k/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/un33k/python-slugify/events", + "assignees_url": "https://api.github.com/repos/un33k/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/un33k/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/un33k/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/un33k/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/un33k/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/un33k/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/un33k/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/un33k/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/un33k/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/un33k/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/un33k/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/un33k/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/un33k/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/un33k/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/un33k/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/un33k/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/un33k/python-slugify/merges", + "archive_url": "https://api.github.com/repos/un33k/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/un33k/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/un33k/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/un33k/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/un33k/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/un33k/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/un33k/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/un33k/python-slugify/deployments", + "created_at": "2012-10-15T01:44:50Z", + "updated_at": "2026-09-05T12:52:20Z", + "pushed_at": "2026-04-27T11:17:17Z", + "git_url": "git://github.com/un33k/python-slugify.git", + "ssh_url": "git@github.com:un33k/python-slugify.git", + "clone_url": "https://github.com/un33k/python-slugify.git", + "svn_url": "https://github.com/un33k/python-slugify", + "homepage": "", + "size": 208, + "stargazers_count": 1623, + "watchers_count": 1623, + "language": "Python", + "has_issues": true, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 134, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 17, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 134, + "open_issues": 17, + "watchers": 1623, + "default_branch": "master" + } + }, + "_links": { + "self": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/23" + }, + "html": { + "href": "https://github.com/un33k/python-slugify/pull/23" + }, + "issue": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/23" + }, + "comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/23/comments" + }, + "review_comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/23/comments" + }, + "review_comment": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}" + }, + "commits": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/23/commits" + }, + "statuses": { + "href": "https://api.github.com/repos/un33k/python-slugify/statuses/76f0678e9b28ae54a9a29b95d9fedb74bc8855cd" + } + }, + "author_association": "CONTRIBUTOR", + "auto_merge": null, + "assignee": null, + "active_lock_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/25", + "id": 72464288, + "node_id": "MDExOlB1bGxSZXF1ZXN0NzI0NjQyODg=", + "html_url": "https://github.com/un33k/python-slugify/pull/25", + "diff_url": "https://github.com/un33k/python-slugify/pull/25.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/25.patch", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/25", + "number": 25, + "state": "closed", + "locked": false, + "title": "enabling cli usage", + "user": { + "login": "theeluwin", + "id": 1303549, + "node_id": "MDQ6VXNlcjEzMDM1NDk=", + "avatar_url": "https://avatars.githubusercontent.com/u/1303549?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/theeluwin", + "html_url": "https://github.com/theeluwin", + "followers_url": "https://api.github.com/users/theeluwin/followers", + "following_url": "https://api.github.com/users/theeluwin/following{/other_user}", + "gists_url": "https://api.github.com/users/theeluwin/gists{/gist_id}", + "starred_url": "https://api.github.com/users/theeluwin/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/theeluwin/subscriptions", + "organizations_url": "https://api.github.com/users/theeluwin/orgs", + "repos_url": "https://api.github.com/users/theeluwin/repos", + "events_url": "https://api.github.com/users/theeluwin/events{/privacy}", + "received_events_url": "https://api.github.com/users/theeluwin/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "body": "", + "created_at": "2016-06-03T07:23:32Z", + "updated_at": "2016-06-16T13:37:57Z", + "closed_at": "2016-06-16T03:43:25Z", + "merged_at": null, + "merge_commit_sha": "7252ab4f0c66226824928a63c42a55e1d0e20526", + "assignees": [], + "requested_reviewers": [], + "requested_teams": [], + "labels": [], + "milestone": null, + "draft": false, + "commits_url": "https://api.github.com/repos/un33k/python-slugify/pulls/25/commits", + "review_comments_url": "https://api.github.com/repos/un33k/python-slugify/pulls/25/comments", + "review_comment_url": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/25/comments", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/6e232a6aee46e1138c695308fe7c7d8b91c03fad", + "head": { + "label": "theeluwin:master", + "ref": "master", + "sha": "6e232a6aee46e1138c695308fe7c7d8b91c03fad", + "user": { + "login": "theeluwin", + "id": 1303549, + "node_id": "MDQ6VXNlcjEzMDM1NDk=", + "avatar_url": "https://avatars.githubusercontent.com/u/1303549?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/theeluwin", + "html_url": "https://github.com/theeluwin", + "followers_url": "https://api.github.com/users/theeluwin/followers", + "following_url": "https://api.github.com/users/theeluwin/following{/other_user}", + "gists_url": "https://api.github.com/users/theeluwin/gists{/gist_id}", + "starred_url": "https://api.github.com/users/theeluwin/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/theeluwin/subscriptions", + "organizations_url": "https://api.github.com/users/theeluwin/orgs", + "repos_url": "https://api.github.com/users/theeluwin/repos", + "events_url": "https://api.github.com/users/theeluwin/events{/privacy}", + "received_events_url": "https://api.github.com/users/theeluwin/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 60326981, + "node_id": "MDEwOlJlcG9zaXRvcnk2MDMyNjk4MQ==", + "name": "python-slugify", + "full_name": "theeluwin/python-slugify", + "private": false, + "owner": { + "login": "theeluwin", + "id": 1303549, + "node_id": "MDQ6VXNlcjEzMDM1NDk=", + "avatar_url": "https://avatars.githubusercontent.com/u/1303549?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/theeluwin", + "html_url": "https://github.com/theeluwin", + "followers_url": "https://api.github.com/users/theeluwin/followers", + "following_url": "https://api.github.com/users/theeluwin/following{/other_user}", + "gists_url": "https://api.github.com/users/theeluwin/gists{/gist_id}", + "starred_url": "https://api.github.com/users/theeluwin/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/theeluwin/subscriptions", + "organizations_url": "https://api.github.com/users/theeluwin/orgs", + "repos_url": "https://api.github.com/users/theeluwin/repos", + "events_url": "https://api.github.com/users/theeluwin/events{/privacy}", + "received_events_url": "https://api.github.com/users/theeluwin/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/theeluwin/python-slugify", + "description": "Returns unicode slugs", + "fork": true, + "url": "https://api.github.com/repos/theeluwin/python-slugify", + "forks_url": "https://api.github.com/repos/theeluwin/python-slugify/forks", + "keys_url": "https://api.github.com/repos/theeluwin/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/theeluwin/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/theeluwin/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/theeluwin/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/theeluwin/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/theeluwin/python-slugify/events", + "assignees_url": "https://api.github.com/repos/theeluwin/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/theeluwin/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/theeluwin/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/theeluwin/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/theeluwin/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/theeluwin/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/theeluwin/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/theeluwin/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/theeluwin/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/theeluwin/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/theeluwin/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/theeluwin/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/theeluwin/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/theeluwin/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/theeluwin/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/theeluwin/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/theeluwin/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/theeluwin/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/theeluwin/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/theeluwin/python-slugify/merges", + "archive_url": "https://api.github.com/repos/theeluwin/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/theeluwin/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/theeluwin/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/theeluwin/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/theeluwin/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/theeluwin/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/theeluwin/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/theeluwin/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/theeluwin/python-slugify/deployments", + "created_at": "2016-06-03T07:18:33Z", + "updated_at": "2016-06-03T07:18:34Z", + "pushed_at": "2016-06-09T06:03:31Z", + "git_url": "git://github.com/theeluwin/python-slugify.git", + "ssh_url": "git@github.com:theeluwin/python-slugify.git", + "clone_url": "https://github.com/theeluwin/python-slugify.git", + "svn_url": "https://github.com/theeluwin/python-slugify", + "homepage": "", + "size": 66, + "stargazers_count": 0, + "watchers_count": 0, + "language": "Python", + "has_issues": false, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 0, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 0, + "license": { + "key": "bsd-3-clause", + "name": "BSD 3-Clause \"New\" or \"Revised\" License", + "spdx_id": "BSD-3-Clause", + "url": "https://api.github.com/licenses/bsd-3-clause", + "node_id": "MDc6TGljZW5zZTU=" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 0, + "open_issues": 0, + "watchers": 0, + "default_branch": "master" + } + }, + "base": { + "label": "un33k:master", + "ref": "master", + "sha": "27d35f8810dd2816561044a9658eb19310d7e109", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 6220331, + "node_id": "MDEwOlJlcG9zaXRvcnk2MjIwMzMx", + "name": "python-slugify", + "full_name": "un33k/python-slugify", + "private": false, + "owner": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/un33k/python-slugify", + "description": "Returns unicode slugs", + "fork": false, + "url": "https://api.github.com/repos/un33k/python-slugify", + "forks_url": "https://api.github.com/repos/un33k/python-slugify/forks", + "keys_url": "https://api.github.com/repos/un33k/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/un33k/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/un33k/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/un33k/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/un33k/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/un33k/python-slugify/events", + "assignees_url": "https://api.github.com/repos/un33k/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/un33k/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/un33k/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/un33k/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/un33k/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/un33k/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/un33k/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/un33k/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/un33k/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/un33k/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/un33k/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/un33k/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/un33k/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/un33k/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/un33k/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/un33k/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/un33k/python-slugify/merges", + "archive_url": "https://api.github.com/repos/un33k/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/un33k/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/un33k/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/un33k/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/un33k/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/un33k/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/un33k/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/un33k/python-slugify/deployments", + "created_at": "2012-10-15T01:44:50Z", + "updated_at": "2026-09-05T12:52:20Z", + "pushed_at": "2026-04-27T11:17:17Z", + "git_url": "git://github.com/un33k/python-slugify.git", + "ssh_url": "git@github.com:un33k/python-slugify.git", + "clone_url": "https://github.com/un33k/python-slugify.git", + "svn_url": "https://github.com/un33k/python-slugify", + "homepage": "", + "size": 208, + "stargazers_count": 1623, + "watchers_count": 1623, + "language": "Python", + "has_issues": true, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 134, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 17, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 134, + "open_issues": 17, + "watchers": 1623, + "default_branch": "master" + } + }, + "_links": { + "self": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/25" + }, + "html": { + "href": "https://github.com/un33k/python-slugify/pull/25" + }, + "issue": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/25" + }, + "comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/25/comments" + }, + "review_comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/25/comments" + }, + "review_comment": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}" + }, + "commits": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/25/commits" + }, + "statuses": { + "href": "https://api.github.com/repos/un33k/python-slugify/statuses/6e232a6aee46e1138c695308fe7c7d8b91c03fad" + } + }, + "author_association": "NONE", + "auto_merge": null, + "assignee": null, + "active_lock_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/26", + "id": 82776655, + "node_id": "MDExOlB1bGxSZXF1ZXN0ODI3NzY2NTU=", + "html_url": "https://github.com/un33k/python-slugify/pull/26", + "diff_url": "https://github.com/un33k/python-slugify/pull/26.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/26.patch", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/26", + "number": 26, + "state": "closed", + "locked": false, + "title": "Create MANIFEST.in", + "user": { + "login": "proinsias", + "id": 2073530, + "node_id": "MDQ6VXNlcjIwNzM1MzA=", + "avatar_url": "https://avatars.githubusercontent.com/u/2073530?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/proinsias", + "html_url": "https://github.com/proinsias", + "followers_url": "https://api.github.com/users/proinsias/followers", + "following_url": "https://api.github.com/users/proinsias/following{/other_user}", + "gists_url": "https://api.github.com/users/proinsias/gists{/gist_id}", + "starred_url": "https://api.github.com/users/proinsias/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/proinsias/subscriptions", + "organizations_url": "https://api.github.com/users/proinsias/orgs", + "repos_url": "https://api.github.com/users/proinsias/repos", + "events_url": "https://api.github.com/users/proinsias/events{/privacy}", + "received_events_url": "https://api.github.com/users/proinsias/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "body": "Add the license (and other files) to MANIFEST.in so that it will be included in sdists and other packages.\nThis came up during packaging of python-slugify for [conda-forge](https://conda-forge.github.io).\n", + "created_at": "2016-08-25T19:15:56Z", + "updated_at": "2016-08-26T03:02:23Z", + "closed_at": "2016-08-25T23:58:36Z", + "merged_at": "2016-08-25T23:58:36Z", + "merge_commit_sha": "66146885159df3cf24e9ebe32aa288b9900ea052", + "assignees": [], + "requested_reviewers": [], + "requested_teams": [], + "labels": [], + "milestone": null, + "draft": false, + "commits_url": "https://api.github.com/repos/un33k/python-slugify/pulls/26/commits", + "review_comments_url": "https://api.github.com/repos/un33k/python-slugify/pulls/26/comments", + "review_comment_url": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/26/comments", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/88da2775a0d201a32cc51b5b294818a472266e2d", + "head": { + "label": "proinsias:patch-1", + "ref": "patch-1", + "sha": "88da2775a0d201a32cc51b5b294818a472266e2d", + "user": { + "login": "proinsias", + "id": 2073530, + "node_id": "MDQ6VXNlcjIwNzM1MzA=", + "avatar_url": "https://avatars.githubusercontent.com/u/2073530?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/proinsias", + "html_url": "https://github.com/proinsias", + "followers_url": "https://api.github.com/users/proinsias/followers", + "following_url": "https://api.github.com/users/proinsias/following{/other_user}", + "gists_url": "https://api.github.com/users/proinsias/gists{/gist_id}", + "starred_url": "https://api.github.com/users/proinsias/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/proinsias/subscriptions", + "organizations_url": "https://api.github.com/users/proinsias/orgs", + "repos_url": "https://api.github.com/users/proinsias/repos", + "events_url": "https://api.github.com/users/proinsias/events{/privacy}", + "received_events_url": "https://api.github.com/users/proinsias/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": null + }, + "base": { + "label": "un33k:master", + "ref": "master", + "sha": "43d8b722ca6e477802dac98d116bfd84ec6b99a2", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 6220331, + "node_id": "MDEwOlJlcG9zaXRvcnk2MjIwMzMx", + "name": "python-slugify", + "full_name": "un33k/python-slugify", + "private": false, + "owner": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/un33k/python-slugify", + "description": "Returns unicode slugs", + "fork": false, + "url": "https://api.github.com/repos/un33k/python-slugify", + "forks_url": "https://api.github.com/repos/un33k/python-slugify/forks", + "keys_url": "https://api.github.com/repos/un33k/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/un33k/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/un33k/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/un33k/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/un33k/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/un33k/python-slugify/events", + "assignees_url": "https://api.github.com/repos/un33k/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/un33k/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/un33k/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/un33k/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/un33k/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/un33k/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/un33k/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/un33k/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/un33k/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/un33k/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/un33k/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/un33k/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/un33k/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/un33k/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/un33k/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/un33k/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/un33k/python-slugify/merges", + "archive_url": "https://api.github.com/repos/un33k/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/un33k/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/un33k/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/un33k/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/un33k/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/un33k/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/un33k/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/un33k/python-slugify/deployments", + "created_at": "2012-10-15T01:44:50Z", + "updated_at": "2026-09-05T12:52:20Z", + "pushed_at": "2026-04-27T11:17:17Z", + "git_url": "git://github.com/un33k/python-slugify.git", + "ssh_url": "git@github.com:un33k/python-slugify.git", + "clone_url": "https://github.com/un33k/python-slugify.git", + "svn_url": "https://github.com/un33k/python-slugify", + "homepage": "", + "size": 208, + "stargazers_count": 1623, + "watchers_count": 1623, + "language": "Python", + "has_issues": true, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 134, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 17, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 134, + "open_issues": 17, + "watchers": 1623, + "default_branch": "master" + } + }, + "_links": { + "self": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/26" + }, + "html": { + "href": "https://github.com/un33k/python-slugify/pull/26" + }, + "issue": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/26" + }, + "comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/26/comments" + }, + "review_comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/26/comments" + }, + "review_comment": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}" + }, + "commits": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/26/commits" + }, + "statuses": { + "href": "https://api.github.com/repos/un33k/python-slugify/statuses/88da2775a0d201a32cc51b5b294818a472266e2d" + } + }, + "author_association": "CONTRIBUTOR", + "auto_merge": null, + "assignee": null, + "active_lock_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/28", + "id": 84557585, + "node_id": "MDExOlB1bGxSZXF1ZXN0ODQ1NTc1ODU=", + "html_url": "https://github.com/un33k/python-slugify/pull/28", + "diff_url": "https://github.com/un33k/python-slugify/pull/28.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/28.patch", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/28", + "number": 28, + "state": "closed", + "locked": false, + "title": "Add a raw meta.yaml for conda packaging.", + "user": { + "login": "feth", + "id": 554384, + "node_id": "MDQ6VXNlcjU1NDM4NA==", + "avatar_url": "https://avatars.githubusercontent.com/u/554384?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/feth", + "html_url": "https://github.com/feth", + "followers_url": "https://api.github.com/users/feth/followers", + "following_url": "https://api.github.com/users/feth/following{/other_user}", + "gists_url": "https://api.github.com/users/feth/gists{/gist_id}", + "starred_url": "https://api.github.com/users/feth/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/feth/subscriptions", + "organizations_url": "https://api.github.com/users/feth/orgs", + "repos_url": "https://api.github.com/users/feth/repos", + "events_url": "https://api.github.com/users/feth/events{/privacy}", + "received_events_url": "https://api.github.com/users/feth/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "body": "1) I (Feth) am not the author/maintainer of python-slugify\n2) I am willing to transfer ownership\n\nThis will allow 'conda install python-slugify'.\n\nResult is at https://anaconda.org/feth/python-slugify\n", + "created_at": "2016-09-08T21:30:31Z", + "updated_at": "2016-11-16T10:50:08Z", + "closed_at": "2016-11-15T22:24:20Z", + "merged_at": null, + "merge_commit_sha": "393def50542b708ae16b1f3613e4faa424d8d8f0", + "assignees": [], + "requested_reviewers": [], + "requested_teams": [], + "labels": [], + "milestone": null, + "draft": false, + "commits_url": "https://api.github.com/repos/un33k/python-slugify/pulls/28/commits", + "review_comments_url": "https://api.github.com/repos/un33k/python-slugify/pulls/28/comments", + "review_comment_url": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/28/comments", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/c5988c1577339575ffaddc3c6b5c4459a35bcb4b", + "head": { + "label": "feth:master", + "ref": "master", + "sha": "c5988c1577339575ffaddc3c6b5c4459a35bcb4b", + "user": { + "login": "feth", + "id": 554384, + "node_id": "MDQ6VXNlcjU1NDM4NA==", + "avatar_url": "https://avatars.githubusercontent.com/u/554384?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/feth", + "html_url": "https://github.com/feth", + "followers_url": "https://api.github.com/users/feth/followers", + "following_url": "https://api.github.com/users/feth/following{/other_user}", + "gists_url": "https://api.github.com/users/feth/gists{/gist_id}", + "starred_url": "https://api.github.com/users/feth/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/feth/subscriptions", + "organizations_url": "https://api.github.com/users/feth/orgs", + "repos_url": "https://api.github.com/users/feth/repos", + "events_url": "https://api.github.com/users/feth/events{/privacy}", + "received_events_url": "https://api.github.com/users/feth/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 67741072, + "node_id": "MDEwOlJlcG9zaXRvcnk2Nzc0MTA3Mg==", + "name": "python-slugify", + "full_name": "feth/python-slugify", + "private": false, + "owner": { + "login": "feth", + "id": 554384, + "node_id": "MDQ6VXNlcjU1NDM4NA==", + "avatar_url": "https://avatars.githubusercontent.com/u/554384?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/feth", + "html_url": "https://github.com/feth", + "followers_url": "https://api.github.com/users/feth/followers", + "following_url": "https://api.github.com/users/feth/following{/other_user}", + "gists_url": "https://api.github.com/users/feth/gists{/gist_id}", + "starred_url": "https://api.github.com/users/feth/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/feth/subscriptions", + "organizations_url": "https://api.github.com/users/feth/orgs", + "repos_url": "https://api.github.com/users/feth/repos", + "events_url": "https://api.github.com/users/feth/events{/privacy}", + "received_events_url": "https://api.github.com/users/feth/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/feth/python-slugify", + "description": "Returns unicode slugs", + "fork": true, + "url": "https://api.github.com/repos/feth/python-slugify", + "forks_url": "https://api.github.com/repos/feth/python-slugify/forks", + "keys_url": "https://api.github.com/repos/feth/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/feth/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/feth/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/feth/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/feth/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/feth/python-slugify/events", + "assignees_url": "https://api.github.com/repos/feth/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/feth/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/feth/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/feth/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/feth/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/feth/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/feth/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/feth/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/feth/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/feth/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/feth/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/feth/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/feth/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/feth/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/feth/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/feth/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/feth/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/feth/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/feth/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/feth/python-slugify/merges", + "archive_url": "https://api.github.com/repos/feth/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/feth/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/feth/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/feth/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/feth/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/feth/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/feth/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/feth/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/feth/python-slugify/deployments", + "created_at": "2016-09-08T21:18:33Z", + "updated_at": "2016-09-08T21:18:35Z", + "pushed_at": "2016-09-12T10:30:51Z", + "git_url": "git://github.com/feth/python-slugify.git", + "ssh_url": "git@github.com:feth/python-slugify.git", + "clone_url": "https://github.com/feth/python-slugify.git", + "svn_url": "https://github.com/feth/python-slugify", + "homepage": "", + "size": 73, + "stargazers_count": 0, + "watchers_count": 0, + "language": "Python", + "has_issues": false, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 0, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 0, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 0, + "open_issues": 0, + "watchers": 0, + "default_branch": "master" + } + }, + "base": { + "label": "un33k:master", + "ref": "master", + "sha": "6472f8fae4088f323a69ef5086f0f97268be88f8", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 6220331, + "node_id": "MDEwOlJlcG9zaXRvcnk2MjIwMzMx", + "name": "python-slugify", + "full_name": "un33k/python-slugify", + "private": false, + "owner": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/un33k/python-slugify", + "description": "Returns unicode slugs", + "fork": false, + "url": "https://api.github.com/repos/un33k/python-slugify", + "forks_url": "https://api.github.com/repos/un33k/python-slugify/forks", + "keys_url": "https://api.github.com/repos/un33k/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/un33k/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/un33k/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/un33k/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/un33k/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/un33k/python-slugify/events", + "assignees_url": "https://api.github.com/repos/un33k/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/un33k/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/un33k/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/un33k/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/un33k/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/un33k/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/un33k/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/un33k/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/un33k/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/un33k/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/un33k/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/un33k/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/un33k/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/un33k/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/un33k/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/un33k/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/un33k/python-slugify/merges", + "archive_url": "https://api.github.com/repos/un33k/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/un33k/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/un33k/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/un33k/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/un33k/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/un33k/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/un33k/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/un33k/python-slugify/deployments", + "created_at": "2012-10-15T01:44:50Z", + "updated_at": "2026-09-05T12:52:20Z", + "pushed_at": "2026-04-27T11:17:17Z", + "git_url": "git://github.com/un33k/python-slugify.git", + "ssh_url": "git@github.com:un33k/python-slugify.git", + "clone_url": "https://github.com/un33k/python-slugify.git", + "svn_url": "https://github.com/un33k/python-slugify", + "homepage": "", + "size": 208, + "stargazers_count": 1623, + "watchers_count": 1623, + "language": "Python", + "has_issues": true, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 134, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 17, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 134, + "open_issues": 17, + "watchers": 1623, + "default_branch": "master" + } + }, + "_links": { + "self": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/28" + }, + "html": { + "href": "https://github.com/un33k/python-slugify/pull/28" + }, + "issue": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/28" + }, + "comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/28/comments" + }, + "review_comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/28/comments" + }, + "review_comment": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}" + }, + "commits": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/28/commits" + }, + "statuses": { + "href": "https://api.github.com/repos/un33k/python-slugify/statuses/c5988c1577339575ffaddc3c6b5c4459a35bcb4b" + } + }, + "author_association": "NONE", + "auto_merge": null, + "assignee": null, + "active_lock_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/34", + "id": 101169694, + "node_id": "MDExOlB1bGxSZXF1ZXN0MTAxMTY5Njk0", + "html_url": "https://github.com/un33k/python-slugify/pull/34", + "diff_url": "https://github.com/un33k/python-slugify/pull/34.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/34.patch", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/34", + "number": 34, + "state": "closed", + "locked": false, + "title": "Pull Request for Issue #32", + "user": { + "login": "egorsmkv", + "id": 7875085, + "node_id": "MDQ6VXNlcjc4NzUwODU=", + "avatar_url": "https://avatars.githubusercontent.com/u/7875085?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/egorsmkv", + "html_url": "https://github.com/egorsmkv", + "followers_url": "https://api.github.com/users/egorsmkv/followers", + "following_url": "https://api.github.com/users/egorsmkv/following{/other_user}", + "gists_url": "https://api.github.com/users/egorsmkv/gists{/gist_id}", + "starred_url": "https://api.github.com/users/egorsmkv/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/egorsmkv/subscriptions", + "organizations_url": "https://api.github.com/users/egorsmkv/orgs", + "repos_url": "https://api.github.com/users/egorsmkv/repos", + "events_url": "https://api.github.com/users/egorsmkv/events{/privacy}", + "received_events_url": "https://api.github.com/users/egorsmkv/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "body": "", + "created_at": "2017-01-11T23:38:15Z", + "updated_at": "2017-04-01T16:54:52Z", + "closed_at": "2017-03-31T15:46:18Z", + "merged_at": "2017-03-31T15:46:18Z", + "merge_commit_sha": "3f7ce8791dc676216c6bd9f0757262cf6bc210f1", + "assignees": [], + "requested_reviewers": [], + "requested_teams": [], + "labels": [], + "milestone": null, + "draft": false, + "commits_url": "https://api.github.com/repos/un33k/python-slugify/pulls/34/commits", + "review_comments_url": "https://api.github.com/repos/un33k/python-slugify/pulls/34/comments", + "review_comment_url": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/34/comments", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/83fdce9d4bedf257f4947da5354b1bf8c059923e", + "head": { + "label": "egorsmkv:master", + "ref": "master", + "sha": "83fdce9d4bedf257f4947da5354b1bf8c059923e", + "user": { + "login": "egorsmkv", + "id": 7875085, + "node_id": "MDQ6VXNlcjc4NzUwODU=", + "avatar_url": "https://avatars.githubusercontent.com/u/7875085?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/egorsmkv", + "html_url": "https://github.com/egorsmkv", + "followers_url": "https://api.github.com/users/egorsmkv/followers", + "following_url": "https://api.github.com/users/egorsmkv/following{/other_user}", + "gists_url": "https://api.github.com/users/egorsmkv/gists{/gist_id}", + "starred_url": "https://api.github.com/users/egorsmkv/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/egorsmkv/subscriptions", + "organizations_url": "https://api.github.com/users/egorsmkv/orgs", + "repos_url": "https://api.github.com/users/egorsmkv/repos", + "events_url": "https://api.github.com/users/egorsmkv/events{/privacy}", + "received_events_url": "https://api.github.com/users/egorsmkv/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": null + }, + "base": { + "label": "un33k:master", + "ref": "master", + "sha": "f2ab4b72d9777ba4078398b52f69d7773807b585", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 6220331, + "node_id": "MDEwOlJlcG9zaXRvcnk2MjIwMzMx", + "name": "python-slugify", + "full_name": "un33k/python-slugify", + "private": false, + "owner": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/un33k/python-slugify", + "description": "Returns unicode slugs", + "fork": false, + "url": "https://api.github.com/repos/un33k/python-slugify", + "forks_url": "https://api.github.com/repos/un33k/python-slugify/forks", + "keys_url": "https://api.github.com/repos/un33k/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/un33k/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/un33k/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/un33k/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/un33k/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/un33k/python-slugify/events", + "assignees_url": "https://api.github.com/repos/un33k/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/un33k/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/un33k/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/un33k/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/un33k/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/un33k/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/un33k/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/un33k/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/un33k/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/un33k/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/un33k/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/un33k/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/un33k/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/un33k/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/un33k/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/un33k/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/un33k/python-slugify/merges", + "archive_url": "https://api.github.com/repos/un33k/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/un33k/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/un33k/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/un33k/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/un33k/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/un33k/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/un33k/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/un33k/python-slugify/deployments", + "created_at": "2012-10-15T01:44:50Z", + "updated_at": "2026-09-05T12:52:20Z", + "pushed_at": "2026-04-27T11:17:17Z", + "git_url": "git://github.com/un33k/python-slugify.git", + "ssh_url": "git@github.com:un33k/python-slugify.git", + "clone_url": "https://github.com/un33k/python-slugify.git", + "svn_url": "https://github.com/un33k/python-slugify", + "homepage": "", + "size": 208, + "stargazers_count": 1623, + "watchers_count": 1623, + "language": "Python", + "has_issues": true, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 134, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 17, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 134, + "open_issues": 17, + "watchers": 1623, + "default_branch": "master" + } + }, + "_links": { + "self": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/34" + }, + "html": { + "href": "https://github.com/un33k/python-slugify/pull/34" + }, + "issue": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/34" + }, + "comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/34/comments" + }, + "review_comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/34/comments" + }, + "review_comment": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}" + }, + "commits": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/34/commits" + }, + "statuses": { + "href": "https://api.github.com/repos/un33k/python-slugify/statuses/83fdce9d4bedf257f4947da5354b1bf8c059923e" + } + }, + "author_association": "CONTRIBUTOR", + "auto_merge": null, + "assignee": null, + "active_lock_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/36", + "id": 113393276, + "node_id": "MDExOlB1bGxSZXF1ZXN0MTEzMzkzMjc2", + "html_url": "https://github.com/un33k/python-slugify/pull/36", + "diff_url": "https://github.com/un33k/python-slugify/pull/36.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/36.patch", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/36", + "number": 36, + "state": "closed", + "locked": false, + "title": "Added possibility to include custom regex as allowed characters", + "user": { + "login": "vrbaskiz", + "id": 22053125, + "node_id": "MDQ6VXNlcjIyMDUzMTI1", + "avatar_url": "https://avatars.githubusercontent.com/u/22053125?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/vrbaskiz", + "html_url": "https://github.com/vrbaskiz", + "followers_url": "https://api.github.com/users/vrbaskiz/followers", + "following_url": "https://api.github.com/users/vrbaskiz/following{/other_user}", + "gists_url": "https://api.github.com/users/vrbaskiz/gists{/gist_id}", + "starred_url": "https://api.github.com/users/vrbaskiz/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/vrbaskiz/subscriptions", + "organizations_url": "https://api.github.com/users/vrbaskiz/orgs", + "repos_url": "https://api.github.com/users/vrbaskiz/repos", + "events_url": "https://api.github.com/users/vrbaskiz/events{/privacy}", + "received_events_url": "https://api.github.com/users/vrbaskiz/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "body": "Encountered situation in my daily work where passing custom regex for allowed characters was needed (for example underscore _ ). I made a small rework that would stay backwards compatible but would still allow for parameter to be passed to alter this if needed.", + "created_at": "2017-03-30T10:17:34Z", + "updated_at": "2017-03-31T15:47:10Z", + "closed_at": "2017-03-31T15:47:10Z", + "merged_at": "2017-03-31T15:47:10Z", + "merge_commit_sha": "750c737b37a7261ef551f9ab013dfb0b1b3eb29a", + "assignees": [], + "requested_reviewers": [], + "requested_teams": [], + "labels": [], + "milestone": null, + "draft": false, + "commits_url": "https://api.github.com/repos/un33k/python-slugify/pulls/36/commits", + "review_comments_url": "https://api.github.com/repos/un33k/python-slugify/pulls/36/comments", + "review_comment_url": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/36/comments", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/273f8e9c2c02e3efcbdbc5c998a6ce15f37890cf", + "head": { + "label": "vrbaskiz:master", + "ref": "master", + "sha": "273f8e9c2c02e3efcbdbc5c998a6ce15f37890cf", + "user": { + "login": "vrbaskiz", + "id": 22053125, + "node_id": "MDQ6VXNlcjIyMDUzMTI1", + "avatar_url": "https://avatars.githubusercontent.com/u/22053125?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/vrbaskiz", + "html_url": "https://github.com/vrbaskiz", + "followers_url": "https://api.github.com/users/vrbaskiz/followers", + "following_url": "https://api.github.com/users/vrbaskiz/following{/other_user}", + "gists_url": "https://api.github.com/users/vrbaskiz/gists{/gist_id}", + "starred_url": "https://api.github.com/users/vrbaskiz/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/vrbaskiz/subscriptions", + "organizations_url": "https://api.github.com/users/vrbaskiz/orgs", + "repos_url": "https://api.github.com/users/vrbaskiz/repos", + "events_url": "https://api.github.com/users/vrbaskiz/events{/privacy}", + "received_events_url": "https://api.github.com/users/vrbaskiz/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 86679971, + "node_id": "MDEwOlJlcG9zaXRvcnk4NjY3OTk3MQ==", + "name": "python-slugify", + "full_name": "vrbaskiz/python-slugify", + "private": false, + "owner": { + "login": "vrbaskiz", + "id": 22053125, + "node_id": "MDQ6VXNlcjIyMDUzMTI1", + "avatar_url": "https://avatars.githubusercontent.com/u/22053125?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/vrbaskiz", + "html_url": "https://github.com/vrbaskiz", + "followers_url": "https://api.github.com/users/vrbaskiz/followers", + "following_url": "https://api.github.com/users/vrbaskiz/following{/other_user}", + "gists_url": "https://api.github.com/users/vrbaskiz/gists{/gist_id}", + "starred_url": "https://api.github.com/users/vrbaskiz/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/vrbaskiz/subscriptions", + "organizations_url": "https://api.github.com/users/vrbaskiz/orgs", + "repos_url": "https://api.github.com/users/vrbaskiz/repos", + "events_url": "https://api.github.com/users/vrbaskiz/events{/privacy}", + "received_events_url": "https://api.github.com/users/vrbaskiz/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/vrbaskiz/python-slugify", + "description": "Returns unicode slugs", + "fork": true, + "url": "https://api.github.com/repos/vrbaskiz/python-slugify", + "forks_url": "https://api.github.com/repos/vrbaskiz/python-slugify/forks", + "keys_url": "https://api.github.com/repos/vrbaskiz/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/vrbaskiz/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/vrbaskiz/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/vrbaskiz/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/vrbaskiz/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/vrbaskiz/python-slugify/events", + "assignees_url": "https://api.github.com/repos/vrbaskiz/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/vrbaskiz/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/vrbaskiz/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/vrbaskiz/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/vrbaskiz/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/vrbaskiz/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/vrbaskiz/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/vrbaskiz/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/vrbaskiz/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/vrbaskiz/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/vrbaskiz/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/vrbaskiz/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/vrbaskiz/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/vrbaskiz/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/vrbaskiz/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/vrbaskiz/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/vrbaskiz/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/vrbaskiz/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/vrbaskiz/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/vrbaskiz/python-slugify/merges", + "archive_url": "https://api.github.com/repos/vrbaskiz/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/vrbaskiz/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/vrbaskiz/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/vrbaskiz/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/vrbaskiz/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/vrbaskiz/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/vrbaskiz/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/vrbaskiz/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/vrbaskiz/python-slugify/deployments", + "created_at": "2017-03-30T08:44:14Z", + "updated_at": "2017-03-30T08:44:16Z", + "pushed_at": "2017-03-31T19:28:34Z", + "git_url": "git://github.com/vrbaskiz/python-slugify.git", + "ssh_url": "git@github.com:vrbaskiz/python-slugify.git", + "clone_url": "https://github.com/vrbaskiz/python-slugify.git", + "svn_url": "https://github.com/vrbaskiz/python-slugify", + "homepage": "", + "size": 76, + "stargazers_count": 0, + "watchers_count": 0, + "language": "Python", + "has_issues": false, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 0, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 0, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 0, + "open_issues": 0, + "watchers": 0, + "default_branch": "master" + } + }, + "base": { + "label": "un33k:master", + "ref": "master", + "sha": "f2ab4b72d9777ba4078398b52f69d7773807b585", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 6220331, + "node_id": "MDEwOlJlcG9zaXRvcnk2MjIwMzMx", + "name": "python-slugify", + "full_name": "un33k/python-slugify", + "private": false, + "owner": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/un33k/python-slugify", + "description": "Returns unicode slugs", + "fork": false, + "url": "https://api.github.com/repos/un33k/python-slugify", + "forks_url": "https://api.github.com/repos/un33k/python-slugify/forks", + "keys_url": "https://api.github.com/repos/un33k/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/un33k/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/un33k/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/un33k/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/un33k/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/un33k/python-slugify/events", + "assignees_url": "https://api.github.com/repos/un33k/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/un33k/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/un33k/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/un33k/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/un33k/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/un33k/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/un33k/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/un33k/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/un33k/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/un33k/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/un33k/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/un33k/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/un33k/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/un33k/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/un33k/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/un33k/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/un33k/python-slugify/merges", + "archive_url": "https://api.github.com/repos/un33k/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/un33k/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/un33k/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/un33k/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/un33k/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/un33k/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/un33k/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/un33k/python-slugify/deployments", + "created_at": "2012-10-15T01:44:50Z", + "updated_at": "2026-09-05T12:52:20Z", + "pushed_at": "2026-04-27T11:17:17Z", + "git_url": "git://github.com/un33k/python-slugify.git", + "ssh_url": "git@github.com:un33k/python-slugify.git", + "clone_url": "https://github.com/un33k/python-slugify.git", + "svn_url": "https://github.com/un33k/python-slugify", + "homepage": "", + "size": 208, + "stargazers_count": 1623, + "watchers_count": 1623, + "language": "Python", + "has_issues": true, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 134, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 17, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 134, + "open_issues": 17, + "watchers": 1623, + "default_branch": "master" + } + }, + "_links": { + "self": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/36" + }, + "html": { + "href": "https://github.com/un33k/python-slugify/pull/36" + }, + "issue": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/36" + }, + "comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/36/comments" + }, + "review_comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/36/comments" + }, + "review_comment": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}" + }, + "commits": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/36/commits" + }, + "statuses": { + "href": "https://api.github.com/repos/un33k/python-slugify/statuses/273f8e9c2c02e3efcbdbc5c998a6ce15f37890cf" + } + }, + "author_association": "CONTRIBUTOR", + "auto_merge": null, + "assignee": null, + "active_lock_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/37", + "id": 113717493, + "node_id": "MDExOlB1bGxSZXF1ZXN0MTEzNzE3NDkz", + "html_url": "https://github.com/un33k/python-slugify/pull/37", + "diff_url": "https://github.com/un33k/python-slugify/pull/37.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/37.patch", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/37", + "number": 37, + "state": "closed", + "locked": false, + "title": "Added possibility to include custom regex as allowed characters", + "user": { + "login": "vrbaskiz", + "id": 22053125, + "node_id": "MDQ6VXNlcjIyMDUzMTI1", + "avatar_url": "https://avatars.githubusercontent.com/u/22053125?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/vrbaskiz", + "html_url": "https://github.com/vrbaskiz", + "followers_url": "https://api.github.com/users/vrbaskiz/followers", + "following_url": "https://api.github.com/users/vrbaskiz/following{/other_user}", + "gists_url": "https://api.github.com/users/vrbaskiz/gists{/gist_id}", + "starred_url": "https://api.github.com/users/vrbaskiz/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/vrbaskiz/subscriptions", + "organizations_url": "https://api.github.com/users/vrbaskiz/orgs", + "repos_url": "https://api.github.com/users/vrbaskiz/repos", + "events_url": "https://api.github.com/users/vrbaskiz/events{/privacy}", + "received_events_url": "https://api.github.com/users/vrbaskiz/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "body": "Encountered situation in my daily work where passing custom regex for allowed characters was needed (for example underscore _ ). I made a small rework that would stay backwards compatible but would still allow for parameter to be passed to alter this if needed.\r\nAdded additional tests, sorted out code mistakes, updated readme.", + "created_at": "2017-03-31T19:33:10Z", + "updated_at": "2017-04-01T16:53:58Z", + "closed_at": "2017-04-01T16:53:58Z", + "merged_at": null, + "merge_commit_sha": "edd2749e0a79505f8da5c1070db6d9c77e899056", + "assignees": [], + "requested_reviewers": [], + "requested_teams": [], + "labels": [], + "milestone": null, + "draft": false, + "commits_url": "https://api.github.com/repos/un33k/python-slugify/pulls/37/commits", + "review_comments_url": "https://api.github.com/repos/un33k/python-slugify/pulls/37/comments", + "review_comment_url": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/37/comments", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/4abdcdf9e3a2a23f517ad1f8f23ab3f0f35a0aaf", + "head": { + "label": "vrbaskiz:master", + "ref": "master", + "sha": "4abdcdf9e3a2a23f517ad1f8f23ab3f0f35a0aaf", + "user": { + "login": "vrbaskiz", + "id": 22053125, + "node_id": "MDQ6VXNlcjIyMDUzMTI1", + "avatar_url": "https://avatars.githubusercontent.com/u/22053125?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/vrbaskiz", + "html_url": "https://github.com/vrbaskiz", + "followers_url": "https://api.github.com/users/vrbaskiz/followers", + "following_url": "https://api.github.com/users/vrbaskiz/following{/other_user}", + "gists_url": "https://api.github.com/users/vrbaskiz/gists{/gist_id}", + "starred_url": "https://api.github.com/users/vrbaskiz/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/vrbaskiz/subscriptions", + "organizations_url": "https://api.github.com/users/vrbaskiz/orgs", + "repos_url": "https://api.github.com/users/vrbaskiz/repos", + "events_url": "https://api.github.com/users/vrbaskiz/events{/privacy}", + "received_events_url": "https://api.github.com/users/vrbaskiz/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 86679971, + "node_id": "MDEwOlJlcG9zaXRvcnk4NjY3OTk3MQ==", + "name": "python-slugify", + "full_name": "vrbaskiz/python-slugify", + "private": false, + "owner": { + "login": "vrbaskiz", + "id": 22053125, + "node_id": "MDQ6VXNlcjIyMDUzMTI1", + "avatar_url": "https://avatars.githubusercontent.com/u/22053125?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/vrbaskiz", + "html_url": "https://github.com/vrbaskiz", + "followers_url": "https://api.github.com/users/vrbaskiz/followers", + "following_url": "https://api.github.com/users/vrbaskiz/following{/other_user}", + "gists_url": "https://api.github.com/users/vrbaskiz/gists{/gist_id}", + "starred_url": "https://api.github.com/users/vrbaskiz/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/vrbaskiz/subscriptions", + "organizations_url": "https://api.github.com/users/vrbaskiz/orgs", + "repos_url": "https://api.github.com/users/vrbaskiz/repos", + "events_url": "https://api.github.com/users/vrbaskiz/events{/privacy}", + "received_events_url": "https://api.github.com/users/vrbaskiz/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/vrbaskiz/python-slugify", + "description": "Returns unicode slugs", + "fork": true, + "url": "https://api.github.com/repos/vrbaskiz/python-slugify", + "forks_url": "https://api.github.com/repos/vrbaskiz/python-slugify/forks", + "keys_url": "https://api.github.com/repos/vrbaskiz/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/vrbaskiz/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/vrbaskiz/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/vrbaskiz/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/vrbaskiz/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/vrbaskiz/python-slugify/events", + "assignees_url": "https://api.github.com/repos/vrbaskiz/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/vrbaskiz/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/vrbaskiz/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/vrbaskiz/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/vrbaskiz/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/vrbaskiz/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/vrbaskiz/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/vrbaskiz/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/vrbaskiz/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/vrbaskiz/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/vrbaskiz/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/vrbaskiz/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/vrbaskiz/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/vrbaskiz/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/vrbaskiz/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/vrbaskiz/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/vrbaskiz/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/vrbaskiz/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/vrbaskiz/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/vrbaskiz/python-slugify/merges", + "archive_url": "https://api.github.com/repos/vrbaskiz/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/vrbaskiz/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/vrbaskiz/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/vrbaskiz/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/vrbaskiz/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/vrbaskiz/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/vrbaskiz/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/vrbaskiz/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/vrbaskiz/python-slugify/deployments", + "created_at": "2017-03-30T08:44:14Z", + "updated_at": "2017-03-30T08:44:16Z", + "pushed_at": "2017-03-31T19:28:34Z", + "git_url": "git://github.com/vrbaskiz/python-slugify.git", + "ssh_url": "git@github.com:vrbaskiz/python-slugify.git", + "clone_url": "https://github.com/vrbaskiz/python-slugify.git", + "svn_url": "https://github.com/vrbaskiz/python-slugify", + "homepage": "", + "size": 76, + "stargazers_count": 0, + "watchers_count": 0, + "language": "Python", + "has_issues": false, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 0, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 0, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 0, + "open_issues": 0, + "watchers": 0, + "default_branch": "master" + } + }, + "base": { + "label": "un33k:development", + "ref": "development", + "sha": "cf90eeb80c0692480db8a31a159e1dfd24e1c2b8", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 6220331, + "node_id": "MDEwOlJlcG9zaXRvcnk2MjIwMzMx", + "name": "python-slugify", + "full_name": "un33k/python-slugify", + "private": false, + "owner": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/un33k/python-slugify", + "description": "Returns unicode slugs", + "fork": false, + "url": "https://api.github.com/repos/un33k/python-slugify", + "forks_url": "https://api.github.com/repos/un33k/python-slugify/forks", + "keys_url": "https://api.github.com/repos/un33k/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/un33k/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/un33k/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/un33k/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/un33k/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/un33k/python-slugify/events", + "assignees_url": "https://api.github.com/repos/un33k/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/un33k/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/un33k/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/un33k/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/un33k/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/un33k/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/un33k/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/un33k/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/un33k/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/un33k/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/un33k/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/un33k/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/un33k/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/un33k/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/un33k/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/un33k/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/un33k/python-slugify/merges", + "archive_url": "https://api.github.com/repos/un33k/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/un33k/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/un33k/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/un33k/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/un33k/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/un33k/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/un33k/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/un33k/python-slugify/deployments", + "created_at": "2012-10-15T01:44:50Z", + "updated_at": "2026-09-05T12:52:20Z", + "pushed_at": "2026-04-27T11:17:17Z", + "git_url": "git://github.com/un33k/python-slugify.git", + "ssh_url": "git@github.com:un33k/python-slugify.git", + "clone_url": "https://github.com/un33k/python-slugify.git", + "svn_url": "https://github.com/un33k/python-slugify", + "homepage": "", + "size": 208, + "stargazers_count": 1623, + "watchers_count": 1623, + "language": "Python", + "has_issues": true, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 134, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 17, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 134, + "open_issues": 17, + "watchers": 1623, + "default_branch": "master" + } + }, + "_links": { + "self": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/37" + }, + "html": { + "href": "https://github.com/un33k/python-slugify/pull/37" + }, + "issue": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/37" + }, + "comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/37/comments" + }, + "review_comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/37/comments" + }, + "review_comment": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}" + }, + "commits": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/37/commits" + }, + "statuses": { + "href": "https://api.github.com/repos/un33k/python-slugify/statuses/4abdcdf9e3a2a23f517ad1f8f23ab3f0f35a0aaf" + } + }, + "author_association": "CONTRIBUTOR", + "auto_merge": null, + "assignee": null, + "active_lock_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/39", + "id": 115202937, + "node_id": "MDExOlB1bGxSZXF1ZXN0MTE1MjAyOTM3", + "html_url": "https://github.com/un33k/python-slugify/pull/39", + "diff_url": "https://github.com/un33k/python-slugify/pull/39.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/39.patch", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/39", + "number": 39, + "state": "closed", + "locked": false, + "title": "Closes #38: use find_packages() rather than home-grown get_packages and get_package_data", + "user": { + "login": "reece", + "id": 109453, + "node_id": "MDQ6VXNlcjEwOTQ1Mw==", + "avatar_url": "https://avatars.githubusercontent.com/u/109453?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/reece", + "html_url": "https://github.com/reece", + "followers_url": "https://api.github.com/users/reece/followers", + "following_url": "https://api.github.com/users/reece/following{/other_user}", + "gists_url": "https://api.github.com/users/reece/gists{/gist_id}", + "starred_url": "https://api.github.com/users/reece/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/reece/subscriptions", + "organizations_url": "https://api.github.com/users/reece/orgs", + "repos_url": "https://api.github.com/users/reece/repos", + "events_url": "https://api.github.com/users/reece/events{/privacy}", + "received_events_url": "https://api.github.com/users/reece/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "body": "I think that you don't need MANIFEST.in and that you can use setuptools' find_packages.\r\n\r\nDoes this PR work for you?", + "created_at": "2017-04-10T22:10:08Z", + "updated_at": "2017-04-10T22:14:41Z", + "closed_at": "2017-04-10T22:14:41Z", + "merged_at": "2017-04-10T22:14:41Z", + "merge_commit_sha": "d6a233b5c4446d8510288489ce012675e91089c2", + "assignees": [], + "requested_reviewers": [], + "requested_teams": [], + "labels": [], + "milestone": null, + "draft": false, + "commits_url": "https://api.github.com/repos/un33k/python-slugify/pulls/39/commits", + "review_comments_url": "https://api.github.com/repos/un33k/python-slugify/pulls/39/comments", + "review_comment_url": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/39/comments", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/d230919235e061d50fa092c8e2ad294ada8902e5", + "head": { + "label": "reece:development", + "ref": "development", + "sha": "d230919235e061d50fa092c8e2ad294ada8902e5", + "user": { + "login": "reece", + "id": 109453, + "node_id": "MDQ6VXNlcjEwOTQ1Mw==", + "avatar_url": "https://avatars.githubusercontent.com/u/109453?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/reece", + "html_url": "https://github.com/reece", + "followers_url": "https://api.github.com/users/reece/followers", + "following_url": "https://api.github.com/users/reece/following{/other_user}", + "gists_url": "https://api.github.com/users/reece/gists{/gist_id}", + "starred_url": "https://api.github.com/users/reece/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/reece/subscriptions", + "organizations_url": "https://api.github.com/users/reece/orgs", + "repos_url": "https://api.github.com/users/reece/repos", + "events_url": "https://api.github.com/users/reece/events{/privacy}", + "received_events_url": "https://api.github.com/users/reece/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": null + }, + "base": { + "label": "un33k:development", + "ref": "development", + "sha": "ea5e26af19b3e99ef47c3b802fddb87b03fa3fae", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 6220331, + "node_id": "MDEwOlJlcG9zaXRvcnk2MjIwMzMx", + "name": "python-slugify", + "full_name": "un33k/python-slugify", + "private": false, + "owner": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/un33k/python-slugify", + "description": "Returns unicode slugs", + "fork": false, + "url": "https://api.github.com/repos/un33k/python-slugify", + "forks_url": "https://api.github.com/repos/un33k/python-slugify/forks", + "keys_url": "https://api.github.com/repos/un33k/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/un33k/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/un33k/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/un33k/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/un33k/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/un33k/python-slugify/events", + "assignees_url": "https://api.github.com/repos/un33k/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/un33k/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/un33k/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/un33k/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/un33k/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/un33k/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/un33k/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/un33k/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/un33k/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/un33k/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/un33k/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/un33k/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/un33k/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/un33k/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/un33k/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/un33k/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/un33k/python-slugify/merges", + "archive_url": "https://api.github.com/repos/un33k/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/un33k/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/un33k/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/un33k/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/un33k/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/un33k/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/un33k/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/un33k/python-slugify/deployments", + "created_at": "2012-10-15T01:44:50Z", + "updated_at": "2026-09-05T12:52:20Z", + "pushed_at": "2026-04-27T11:17:17Z", + "git_url": "git://github.com/un33k/python-slugify.git", + "ssh_url": "git@github.com:un33k/python-slugify.git", + "clone_url": "https://github.com/un33k/python-slugify.git", + "svn_url": "https://github.com/un33k/python-slugify", + "homepage": "", + "size": 208, + "stargazers_count": 1623, + "watchers_count": 1623, + "language": "Python", + "has_issues": true, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 134, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 17, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 134, + "open_issues": 17, + "watchers": 1623, + "default_branch": "master" + } + }, + "_links": { + "self": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/39" + }, + "html": { + "href": "https://github.com/un33k/python-slugify/pull/39" + }, + "issue": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/39" + }, + "comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/39/comments" + }, + "review_comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/39/comments" + }, + "review_comment": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}" + }, + "commits": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/39/commits" + }, + "statuses": { + "href": "https://api.github.com/repos/un33k/python-slugify/statuses/d230919235e061d50fa092c8e2ad294ada8902e5" + } + }, + "author_association": "CONTRIBUTOR", + "auto_merge": null, + "assignee": null, + "active_lock_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/40", + "id": 117726496, + "node_id": "MDExOlB1bGxSZXF1ZXN0MTE3NzI2NDk2", + "html_url": "https://github.com/un33k/python-slugify/pull/40", + "diff_url": "https://github.com/un33k/python-slugify/pull/40.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/40.patch", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/40", + "number": 40, + "state": "closed", + "locked": false, + "title": "Update CHANGELOG.md - didn't you mean `1.2.4`?", + "user": { + "login": "loisaidasam", + "id": 213281, + "node_id": "MDQ6VXNlcjIxMzI4MQ==", + "avatar_url": "https://avatars.githubusercontent.com/u/213281?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/loisaidasam", + "html_url": "https://github.com/loisaidasam", + "followers_url": "https://api.github.com/users/loisaidasam/followers", + "following_url": "https://api.github.com/users/loisaidasam/following{/other_user}", + "gists_url": "https://api.github.com/users/loisaidasam/gists{/gist_id}", + "starred_url": "https://api.github.com/users/loisaidasam/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/loisaidasam/subscriptions", + "organizations_url": "https://api.github.com/users/loisaidasam/orgs", + "repos_url": "https://api.github.com/users/loisaidasam/repos", + "events_url": "https://api.github.com/users/loisaidasam/events{/privacy}", + "received_events_url": "https://api.github.com/users/loisaidasam/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "body": "", + "created_at": "2017-04-26T14:20:20Z", + "updated_at": "2017-05-08T12:02:24Z", + "closed_at": "2017-05-08T12:02:18Z", + "merged_at": "2017-05-08T12:02:18Z", + "merge_commit_sha": "3fafff8cef9b43a816dafb5e0c14e14b04958266", + "assignees": [], + "requested_reviewers": [], + "requested_teams": [], + "labels": [], + "milestone": null, + "draft": false, + "commits_url": "https://api.github.com/repos/un33k/python-slugify/pulls/40/commits", + "review_comments_url": "https://api.github.com/repos/un33k/python-slugify/pulls/40/comments", + "review_comment_url": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/40/comments", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/c98be5753a2c4dce2f6fcccec5c4f78ecaaf3fe8", + "head": { + "label": "loisaidasam:patch-1", + "ref": "patch-1", + "sha": "c98be5753a2c4dce2f6fcccec5c4f78ecaaf3fe8", + "user": { + "login": "loisaidasam", + "id": 213281, + "node_id": "MDQ6VXNlcjIxMzI4MQ==", + "avatar_url": "https://avatars.githubusercontent.com/u/213281?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/loisaidasam", + "html_url": "https://github.com/loisaidasam", + "followers_url": "https://api.github.com/users/loisaidasam/followers", + "following_url": "https://api.github.com/users/loisaidasam/following{/other_user}", + "gists_url": "https://api.github.com/users/loisaidasam/gists{/gist_id}", + "starred_url": "https://api.github.com/users/loisaidasam/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/loisaidasam/subscriptions", + "organizations_url": "https://api.github.com/users/loisaidasam/orgs", + "repos_url": "https://api.github.com/users/loisaidasam/repos", + "events_url": "https://api.github.com/users/loisaidasam/events{/privacy}", + "received_events_url": "https://api.github.com/users/loisaidasam/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 89489560, + "node_id": "MDEwOlJlcG9zaXRvcnk4OTQ4OTU2MA==", + "name": "python-slugify", + "full_name": "loisaidasam/python-slugify", + "private": false, + "owner": { + "login": "loisaidasam", + "id": 213281, + "node_id": "MDQ6VXNlcjIxMzI4MQ==", + "avatar_url": "https://avatars.githubusercontent.com/u/213281?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/loisaidasam", + "html_url": "https://github.com/loisaidasam", + "followers_url": "https://api.github.com/users/loisaidasam/followers", + "following_url": "https://api.github.com/users/loisaidasam/following{/other_user}", + "gists_url": "https://api.github.com/users/loisaidasam/gists{/gist_id}", + "starred_url": "https://api.github.com/users/loisaidasam/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/loisaidasam/subscriptions", + "organizations_url": "https://api.github.com/users/loisaidasam/orgs", + "repos_url": "https://api.github.com/users/loisaidasam/repos", + "events_url": "https://api.github.com/users/loisaidasam/events{/privacy}", + "received_events_url": "https://api.github.com/users/loisaidasam/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/loisaidasam/python-slugify", + "description": "Returns unicode slugs", + "fork": true, + "url": "https://api.github.com/repos/loisaidasam/python-slugify", + "forks_url": "https://api.github.com/repos/loisaidasam/python-slugify/forks", + "keys_url": "https://api.github.com/repos/loisaidasam/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/loisaidasam/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/loisaidasam/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/loisaidasam/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/loisaidasam/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/loisaidasam/python-slugify/events", + "assignees_url": "https://api.github.com/repos/loisaidasam/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/loisaidasam/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/loisaidasam/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/loisaidasam/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/loisaidasam/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/loisaidasam/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/loisaidasam/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/loisaidasam/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/loisaidasam/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/loisaidasam/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/loisaidasam/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/loisaidasam/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/loisaidasam/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/loisaidasam/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/loisaidasam/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/loisaidasam/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/loisaidasam/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/loisaidasam/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/loisaidasam/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/loisaidasam/python-slugify/merges", + "archive_url": "https://api.github.com/repos/loisaidasam/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/loisaidasam/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/loisaidasam/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/loisaidasam/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/loisaidasam/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/loisaidasam/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/loisaidasam/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/loisaidasam/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/loisaidasam/python-slugify/deployments", + "created_at": "2017-04-26T14:19:43Z", + "updated_at": "2017-04-26T14:19:44Z", + "pushed_at": "2017-04-26T14:20:14Z", + "git_url": "git://github.com/loisaidasam/python-slugify.git", + "ssh_url": "git@github.com:loisaidasam/python-slugify.git", + "clone_url": "https://github.com/loisaidasam/python-slugify.git", + "svn_url": "https://github.com/loisaidasam/python-slugify", + "homepage": "", + "size": 82, + "stargazers_count": 0, + "watchers_count": 0, + "language": "Python", + "has_issues": false, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 0, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 0, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 0, + "open_issues": 0, + "watchers": 0, + "default_branch": "master" + } + }, + "base": { + "label": "un33k:master", + "ref": "master", + "sha": "5826d0d022b84be6419979c30a61507ba1384359", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 6220331, + "node_id": "MDEwOlJlcG9zaXRvcnk2MjIwMzMx", + "name": "python-slugify", + "full_name": "un33k/python-slugify", + "private": false, + "owner": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/un33k/python-slugify", + "description": "Returns unicode slugs", + "fork": false, + "url": "https://api.github.com/repos/un33k/python-slugify", + "forks_url": "https://api.github.com/repos/un33k/python-slugify/forks", + "keys_url": "https://api.github.com/repos/un33k/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/un33k/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/un33k/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/un33k/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/un33k/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/un33k/python-slugify/events", + "assignees_url": "https://api.github.com/repos/un33k/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/un33k/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/un33k/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/un33k/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/un33k/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/un33k/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/un33k/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/un33k/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/un33k/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/un33k/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/un33k/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/un33k/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/un33k/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/un33k/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/un33k/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/un33k/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/un33k/python-slugify/merges", + "archive_url": "https://api.github.com/repos/un33k/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/un33k/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/un33k/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/un33k/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/un33k/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/un33k/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/un33k/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/un33k/python-slugify/deployments", + "created_at": "2012-10-15T01:44:50Z", + "updated_at": "2026-09-05T12:52:20Z", + "pushed_at": "2026-04-27T11:17:17Z", + "git_url": "git://github.com/un33k/python-slugify.git", + "ssh_url": "git@github.com:un33k/python-slugify.git", + "clone_url": "https://github.com/un33k/python-slugify.git", + "svn_url": "https://github.com/un33k/python-slugify", + "homepage": "", + "size": 208, + "stargazers_count": 1623, + "watchers_count": 1623, + "language": "Python", + "has_issues": true, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 134, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 17, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 134, + "open_issues": 17, + "watchers": 1623, + "default_branch": "master" + } + }, + "_links": { + "self": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/40" + }, + "html": { + "href": "https://github.com/un33k/python-slugify/pull/40" + }, + "issue": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/40" + }, + "comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/40/comments" + }, + "review_comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/40/comments" + }, + "review_comment": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}" + }, + "commits": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/40/commits" + }, + "statuses": { + "href": "https://api.github.com/repos/un33k/python-slugify/statuses/c98be5753a2c4dce2f6fcccec5c4f78ecaaf3fe8" + } + }, + "author_association": "CONTRIBUTOR", + "auto_merge": null, + "assignee": null, + "active_lock_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/42", + "id": 118171256, + "node_id": "MDExOlB1bGxSZXF1ZXN0MTE4MTcxMjU2", + "html_url": "https://github.com/un33k/python-slugify/pull/42", + "diff_url": "https://github.com/un33k/python-slugify/pull/42.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/42.patch", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/42", + "number": 42, + "state": "closed", + "locked": false, + "title": "Create MANIFEST.in", + "user": { + "login": "proinsias", + "id": 2073530, + "node_id": "MDQ6VXNlcjIwNzM1MzA=", + "avatar_url": "https://avatars.githubusercontent.com/u/2073530?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/proinsias", + "html_url": "https://github.com/proinsias", + "followers_url": "https://api.github.com/users/proinsias/followers", + "following_url": "https://api.github.com/users/proinsias/following{/other_user}", + "gists_url": "https://api.github.com/users/proinsias/gists{/gist_id}", + "starred_url": "https://api.github.com/users/proinsias/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/proinsias/subscriptions", + "organizations_url": "https://api.github.com/users/proinsias/orgs", + "repos_url": "https://api.github.com/users/proinsias/repos", + "events_url": "https://api.github.com/users/proinsias/events{/privacy}", + "received_events_url": "https://api.github.com/users/proinsias/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "body": "Add the `LICENSE` and other files to `MANIFEST.in` so that they will be included in sdists and other packages.\r\nThis came up during packaging of `python-slugify` for `conda-forge`.\r\n\r\nAlso please submit a new release to pypi so this change will be tracked.\r\n", + "created_at": "2017-04-28T14:59:09Z", + "updated_at": "2017-05-08T18:21:00Z", + "closed_at": "2017-05-08T12:06:49Z", + "merged_at": "2017-05-08T12:06:49Z", + "merge_commit_sha": "e14bde218d794869eba8d23949bf0a9de8611a46", + "assignees": [], + "requested_reviewers": [], + "requested_teams": [], + "labels": [], + "milestone": null, + "draft": false, + "commits_url": "https://api.github.com/repos/un33k/python-slugify/pulls/42/commits", + "review_comments_url": "https://api.github.com/repos/un33k/python-slugify/pulls/42/comments", + "review_comment_url": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/42/comments", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/c5f8db08919a92f59a0c245d81b9cf64f4b925a6", + "head": { + "label": "proinsias:proinsias-manifest", + "ref": "proinsias-manifest", + "sha": "c5f8db08919a92f59a0c245d81b9cf64f4b925a6", + "user": { + "login": "proinsias", + "id": 2073530, + "node_id": "MDQ6VXNlcjIwNzM1MzA=", + "avatar_url": "https://avatars.githubusercontent.com/u/2073530?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/proinsias", + "html_url": "https://github.com/proinsias", + "followers_url": "https://api.github.com/users/proinsias/followers", + "following_url": "https://api.github.com/users/proinsias/following{/other_user}", + "gists_url": "https://api.github.com/users/proinsias/gists{/gist_id}", + "starred_url": "https://api.github.com/users/proinsias/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/proinsias/subscriptions", + "organizations_url": "https://api.github.com/users/proinsias/orgs", + "repos_url": "https://api.github.com/users/proinsias/repos", + "events_url": "https://api.github.com/users/proinsias/events{/privacy}", + "received_events_url": "https://api.github.com/users/proinsias/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": null + }, + "base": { + "label": "un33k:master", + "ref": "master", + "sha": "5826d0d022b84be6419979c30a61507ba1384359", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 6220331, + "node_id": "MDEwOlJlcG9zaXRvcnk2MjIwMzMx", + "name": "python-slugify", + "full_name": "un33k/python-slugify", + "private": false, + "owner": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/un33k/python-slugify", + "description": "Returns unicode slugs", + "fork": false, + "url": "https://api.github.com/repos/un33k/python-slugify", + "forks_url": "https://api.github.com/repos/un33k/python-slugify/forks", + "keys_url": "https://api.github.com/repos/un33k/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/un33k/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/un33k/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/un33k/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/un33k/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/un33k/python-slugify/events", + "assignees_url": "https://api.github.com/repos/un33k/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/un33k/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/un33k/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/un33k/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/un33k/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/un33k/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/un33k/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/un33k/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/un33k/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/un33k/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/un33k/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/un33k/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/un33k/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/un33k/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/un33k/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/un33k/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/un33k/python-slugify/merges", + "archive_url": "https://api.github.com/repos/un33k/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/un33k/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/un33k/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/un33k/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/un33k/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/un33k/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/un33k/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/un33k/python-slugify/deployments", + "created_at": "2012-10-15T01:44:50Z", + "updated_at": "2026-09-05T12:52:20Z", + "pushed_at": "2026-04-27T11:17:17Z", + "git_url": "git://github.com/un33k/python-slugify.git", + "ssh_url": "git@github.com:un33k/python-slugify.git", + "clone_url": "https://github.com/un33k/python-slugify.git", + "svn_url": "https://github.com/un33k/python-slugify", + "homepage": "", + "size": 208, + "stargazers_count": 1623, + "watchers_count": 1623, + "language": "Python", + "has_issues": true, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 134, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 17, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 134, + "open_issues": 17, + "watchers": 1623, + "default_branch": "master" + } + }, + "_links": { + "self": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/42" + }, + "html": { + "href": "https://github.com/un33k/python-slugify/pull/42" + }, + "issue": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/42" + }, + "comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/42/comments" + }, + "review_comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/42/comments" + }, + "review_comment": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}" + }, + "commits": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/42/commits" + }, + "statuses": { + "href": "https://api.github.com/repos/un33k/python-slugify/statuses/c5f8db08919a92f59a0c245d81b9cf64f4b925a6" + } + }, + "author_association": "CONTRIBUTOR", + "auto_merge": null, + "assignee": null, + "active_lock_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/43", + "id": 118297250, + "node_id": "MDExOlB1bGxSZXF1ZXN0MTE4Mjk3MjUw", + "html_url": "https://github.com/un33k/python-slugify/pull/43", + "diff_url": "https://github.com/un33k/python-slugify/pull/43.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/43.patch", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/43", + "number": 43, + "state": "closed", + "locked": false, + "title": "[WIP] Replicate #41 in Travis build", + "user": { + "login": "sodre", + "id": 1043285, + "node_id": "MDQ6VXNlcjEwNDMyODU=", + "avatar_url": "https://avatars.githubusercontent.com/u/1043285?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/sodre", + "html_url": "https://github.com/sodre", + "followers_url": "https://api.github.com/users/sodre/followers", + "following_url": "https://api.github.com/users/sodre/following{/other_user}", + "gists_url": "https://api.github.com/users/sodre/gists{/gist_id}", + "starred_url": "https://api.github.com/users/sodre/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/sodre/subscriptions", + "organizations_url": "https://api.github.com/users/sodre/orgs", + "repos_url": "https://api.github.com/users/sodre/repos", + "events_url": "https://api.github.com/users/sodre/events{/privacy}", + "received_events_url": "https://api.github.com/users/sodre/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "body": " - Install full package during build time, i.e. not in dev mode.\r\n - Call slugify before code coverage.", + "created_at": "2017-04-30T01:46:32Z", + "updated_at": "2017-04-30T01:56:16Z", + "closed_at": "2017-04-30T01:56:16Z", + "merged_at": null, + "merge_commit_sha": "b0da51fc715198db0b61084de10aa1e43784935c", + "assignees": [], + "requested_reviewers": [], + "requested_teams": [], + "labels": [], + "milestone": null, + "draft": false, + "commits_url": "https://api.github.com/repos/un33k/python-slugify/pulls/43/commits", + "review_comments_url": "https://api.github.com/repos/un33k/python-slugify/pulls/43/comments", + "review_comment_url": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/43/comments", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/095d3ee32d1b60483995742235742f9ad128fa4b", + "head": { + "label": "sodre:slugify-cli-fails", + "ref": "slugify-cli-fails", + "sha": "095d3ee32d1b60483995742235742f9ad128fa4b", + "user": { + "login": "sodre", + "id": 1043285, + "node_id": "MDQ6VXNlcjEwNDMyODU=", + "avatar_url": "https://avatars.githubusercontent.com/u/1043285?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/sodre", + "html_url": "https://github.com/sodre", + "followers_url": "https://api.github.com/users/sodre/followers", + "following_url": "https://api.github.com/users/sodre/following{/other_user}", + "gists_url": "https://api.github.com/users/sodre/gists{/gist_id}", + "starred_url": "https://api.github.com/users/sodre/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/sodre/subscriptions", + "organizations_url": "https://api.github.com/users/sodre/orgs", + "repos_url": "https://api.github.com/users/sodre/repos", + "events_url": "https://api.github.com/users/sodre/events{/privacy}", + "received_events_url": "https://api.github.com/users/sodre/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 89665905, + "node_id": "MDEwOlJlcG9zaXRvcnk4OTY2NTkwNQ==", + "name": "python-slugify", + "full_name": "sodre/python-slugify", + "private": false, + "owner": { + "login": "sodre", + "id": 1043285, + "node_id": "MDQ6VXNlcjEwNDMyODU=", + "avatar_url": "https://avatars.githubusercontent.com/u/1043285?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/sodre", + "html_url": "https://github.com/sodre", + "followers_url": "https://api.github.com/users/sodre/followers", + "following_url": "https://api.github.com/users/sodre/following{/other_user}", + "gists_url": "https://api.github.com/users/sodre/gists{/gist_id}", + "starred_url": "https://api.github.com/users/sodre/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/sodre/subscriptions", + "organizations_url": "https://api.github.com/users/sodre/orgs", + "repos_url": "https://api.github.com/users/sodre/repos", + "events_url": "https://api.github.com/users/sodre/events{/privacy}", + "received_events_url": "https://api.github.com/users/sodre/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/sodre/python-slugify", + "description": "Returns unicode slugs", + "fork": true, + "url": "https://api.github.com/repos/sodre/python-slugify", + "forks_url": "https://api.github.com/repos/sodre/python-slugify/forks", + "keys_url": "https://api.github.com/repos/sodre/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/sodre/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/sodre/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/sodre/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/sodre/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/sodre/python-slugify/events", + "assignees_url": "https://api.github.com/repos/sodre/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/sodre/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/sodre/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/sodre/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/sodre/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/sodre/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/sodre/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/sodre/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/sodre/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/sodre/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/sodre/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/sodre/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/sodre/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/sodre/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/sodre/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/sodre/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/sodre/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/sodre/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/sodre/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/sodre/python-slugify/merges", + "archive_url": "https://api.github.com/repos/sodre/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/sodre/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/sodre/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/sodre/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/sodre/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/sodre/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/sodre/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/sodre/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/sodre/python-slugify/deployments", + "created_at": "2017-04-28T03:59:21Z", + "updated_at": "2017-04-28T03:59:23Z", + "pushed_at": "2017-04-30T01:44:37Z", + "git_url": "git://github.com/sodre/python-slugify.git", + "ssh_url": "git@github.com:sodre/python-slugify.git", + "clone_url": "https://github.com/sodre/python-slugify.git", + "svn_url": "https://github.com/sodre/python-slugify", + "homepage": "", + "size": 85, + "stargazers_count": 0, + "watchers_count": 0, + "language": "Python", + "has_issues": false, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 0, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 0, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 0, + "open_issues": 0, + "watchers": 0, + "default_branch": "master" + } + }, + "base": { + "label": "un33k:master", + "ref": "master", + "sha": "5826d0d022b84be6419979c30a61507ba1384359", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 6220331, + "node_id": "MDEwOlJlcG9zaXRvcnk2MjIwMzMx", + "name": "python-slugify", + "full_name": "un33k/python-slugify", + "private": false, + "owner": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/un33k/python-slugify", + "description": "Returns unicode slugs", + "fork": false, + "url": "https://api.github.com/repos/un33k/python-slugify", + "forks_url": "https://api.github.com/repos/un33k/python-slugify/forks", + "keys_url": "https://api.github.com/repos/un33k/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/un33k/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/un33k/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/un33k/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/un33k/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/un33k/python-slugify/events", + "assignees_url": "https://api.github.com/repos/un33k/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/un33k/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/un33k/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/un33k/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/un33k/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/un33k/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/un33k/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/un33k/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/un33k/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/un33k/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/un33k/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/un33k/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/un33k/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/un33k/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/un33k/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/un33k/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/un33k/python-slugify/merges", + "archive_url": "https://api.github.com/repos/un33k/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/un33k/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/un33k/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/un33k/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/un33k/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/un33k/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/un33k/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/un33k/python-slugify/deployments", + "created_at": "2012-10-15T01:44:50Z", + "updated_at": "2026-09-05T12:52:20Z", + "pushed_at": "2026-04-27T11:17:17Z", + "git_url": "git://github.com/un33k/python-slugify.git", + "ssh_url": "git@github.com:un33k/python-slugify.git", + "clone_url": "https://github.com/un33k/python-slugify.git", + "svn_url": "https://github.com/un33k/python-slugify", + "homepage": "", + "size": 208, + "stargazers_count": 1623, + "watchers_count": 1623, + "language": "Python", + "has_issues": true, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 134, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 17, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 134, + "open_issues": 17, + "watchers": 1623, + "default_branch": "master" + } + }, + "_links": { + "self": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/43" + }, + "html": { + "href": "https://github.com/un33k/python-slugify/pull/43" + }, + "issue": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/43" + }, + "comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/43/comments" + }, + "review_comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/43/comments" + }, + "review_comment": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}" + }, + "commits": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/43/commits" + }, + "statuses": { + "href": "https://api.github.com/repos/un33k/python-slugify/statuses/095d3ee32d1b60483995742235742f9ad128fa4b" + } + }, + "author_association": "NONE", + "auto_merge": null, + "assignee": null, + "active_lock_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/46", + "id": 144526778, + "node_id": "MDExOlB1bGxSZXF1ZXN0MTQ0NTI2Nzc4", + "html_url": "https://github.com/un33k/python-slugify/pull/46", + "diff_url": "https://github.com/un33k/python-slugify/pull/46.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/46.patch", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/46", + "number": 46, + "state": "closed", + "locked": false, + "title": "Use text-unidecode instead of Unidecode to avoid GPL", + "user": { + "login": "smblackburn", + "id": 611282, + "node_id": "MDQ6VXNlcjYxMTI4Mg==", + "avatar_url": "https://avatars.githubusercontent.com/u/611282?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/smblackburn", + "html_url": "https://github.com/smblackburn", + "followers_url": "https://api.github.com/users/smblackburn/followers", + "following_url": "https://api.github.com/users/smblackburn/following{/other_user}", + "gists_url": "https://api.github.com/users/smblackburn/gists{/gist_id}", + "starred_url": "https://api.github.com/users/smblackburn/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/smblackburn/subscriptions", + "organizations_url": "https://api.github.com/users/smblackburn/orgs", + "repos_url": "https://api.github.com/users/smblackburn/repos", + "events_url": "https://api.github.com/users/smblackburn/events{/privacy}", + "received_events_url": "https://api.github.com/users/smblackburn/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "body": "", + "created_at": "2017-10-03T20:56:23Z", + "updated_at": "2017-10-03T20:59:38Z", + "closed_at": "2017-10-03T20:56:39Z", + "merged_at": null, + "merge_commit_sha": "3d19b1a391933b674c84056081890e63e5c99bd4", + "assignees": [], + "requested_reviewers": [], + "requested_teams": [], + "labels": [], + "milestone": null, + "draft": false, + "commits_url": "https://api.github.com/repos/un33k/python-slugify/pulls/46/commits", + "review_comments_url": "https://api.github.com/repos/un33k/python-slugify/pulls/46/comments", + "review_comment_url": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/46/comments", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/1a2078646a54d4aee921e114e74621f19afd5130", + "head": { + "label": "smblackburn:text-unidecode", + "ref": "text-unidecode", + "sha": "1a2078646a54d4aee921e114e74621f19afd5130", + "user": { + "login": "smblackburn", + "id": 611282, + "node_id": "MDQ6VXNlcjYxMTI4Mg==", + "avatar_url": "https://avatars.githubusercontent.com/u/611282?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/smblackburn", + "html_url": "https://github.com/smblackburn", + "followers_url": "https://api.github.com/users/smblackburn/followers", + "following_url": "https://api.github.com/users/smblackburn/following{/other_user}", + "gists_url": "https://api.github.com/users/smblackburn/gists{/gist_id}", + "starred_url": "https://api.github.com/users/smblackburn/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/smblackburn/subscriptions", + "organizations_url": "https://api.github.com/users/smblackburn/orgs", + "repos_url": "https://api.github.com/users/smblackburn/repos", + "events_url": "https://api.github.com/users/smblackburn/events{/privacy}", + "received_events_url": "https://api.github.com/users/smblackburn/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 105702033, + "node_id": "MDEwOlJlcG9zaXRvcnkxMDU3MDIwMzM=", + "name": "python-slugify", + "full_name": "smblackburn/python-slugify", + "private": false, + "owner": { + "login": "smblackburn", + "id": 611282, + "node_id": "MDQ6VXNlcjYxMTI4Mg==", + "avatar_url": "https://avatars.githubusercontent.com/u/611282?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/smblackburn", + "html_url": "https://github.com/smblackburn", + "followers_url": "https://api.github.com/users/smblackburn/followers", + "following_url": "https://api.github.com/users/smblackburn/following{/other_user}", + "gists_url": "https://api.github.com/users/smblackburn/gists{/gist_id}", + "starred_url": "https://api.github.com/users/smblackburn/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/smblackburn/subscriptions", + "organizations_url": "https://api.github.com/users/smblackburn/orgs", + "repos_url": "https://api.github.com/users/smblackburn/repos", + "events_url": "https://api.github.com/users/smblackburn/events{/privacy}", + "received_events_url": "https://api.github.com/users/smblackburn/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/smblackburn/python-slugify", + "description": "Returns unicode slugs", + "fork": true, + "url": "https://api.github.com/repos/smblackburn/python-slugify", + "forks_url": "https://api.github.com/repos/smblackburn/python-slugify/forks", + "keys_url": "https://api.github.com/repos/smblackburn/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/smblackburn/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/smblackburn/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/smblackburn/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/smblackburn/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/smblackburn/python-slugify/events", + "assignees_url": "https://api.github.com/repos/smblackburn/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/smblackburn/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/smblackburn/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/smblackburn/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/smblackburn/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/smblackburn/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/smblackburn/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/smblackburn/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/smblackburn/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/smblackburn/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/smblackburn/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/smblackburn/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/smblackburn/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/smblackburn/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/smblackburn/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/smblackburn/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/smblackburn/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/smblackburn/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/smblackburn/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/smblackburn/python-slugify/merges", + "archive_url": "https://api.github.com/repos/smblackburn/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/smblackburn/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/smblackburn/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/smblackburn/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/smblackburn/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/smblackburn/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/smblackburn/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/smblackburn/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/smblackburn/python-slugify/deployments", + "created_at": "2017-10-03T20:52:14Z", + "updated_at": "2017-10-03T20:52:16Z", + "pushed_at": "2017-10-03T20:59:37Z", + "git_url": "git://github.com/smblackburn/python-slugify.git", + "ssh_url": "git@github.com:smblackburn/python-slugify.git", + "clone_url": "https://github.com/smblackburn/python-slugify.git", + "svn_url": "https://github.com/smblackburn/python-slugify", + "homepage": "", + "size": 83, + "stargazers_count": 0, + "watchers_count": 0, + "language": "Python", + "has_issues": false, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 1, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 0, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 1, + "open_issues": 0, + "watchers": 0, + "default_branch": "master" + } + }, + "base": { + "label": "un33k:master", + "ref": "master", + "sha": "e14bde218d794869eba8d23949bf0a9de8611a46", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 6220331, + "node_id": "MDEwOlJlcG9zaXRvcnk2MjIwMzMx", + "name": "python-slugify", + "full_name": "un33k/python-slugify", + "private": false, + "owner": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/un33k/python-slugify", + "description": "Returns unicode slugs", + "fork": false, + "url": "https://api.github.com/repos/un33k/python-slugify", + "forks_url": "https://api.github.com/repos/un33k/python-slugify/forks", + "keys_url": "https://api.github.com/repos/un33k/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/un33k/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/un33k/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/un33k/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/un33k/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/un33k/python-slugify/events", + "assignees_url": "https://api.github.com/repos/un33k/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/un33k/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/un33k/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/un33k/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/un33k/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/un33k/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/un33k/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/un33k/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/un33k/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/un33k/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/un33k/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/un33k/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/un33k/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/un33k/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/un33k/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/un33k/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/un33k/python-slugify/merges", + "archive_url": "https://api.github.com/repos/un33k/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/un33k/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/un33k/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/un33k/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/un33k/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/un33k/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/un33k/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/un33k/python-slugify/deployments", + "created_at": "2012-10-15T01:44:50Z", + "updated_at": "2026-09-05T12:52:20Z", + "pushed_at": "2026-04-27T11:17:17Z", + "git_url": "git://github.com/un33k/python-slugify.git", + "ssh_url": "git@github.com:un33k/python-slugify.git", + "clone_url": "https://github.com/un33k/python-slugify.git", + "svn_url": "https://github.com/un33k/python-slugify", + "homepage": "", + "size": 208, + "stargazers_count": 1623, + "watchers_count": 1623, + "language": "Python", + "has_issues": true, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 134, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 17, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 134, + "open_issues": 17, + "watchers": 1623, + "default_branch": "master" + } + }, + "_links": { + "self": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/46" + }, + "html": { + "href": "https://github.com/un33k/python-slugify/pull/46" + }, + "issue": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/46" + }, + "comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/46/comments" + }, + "review_comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/46/comments" + }, + "review_comment": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}" + }, + "commits": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/46/commits" + }, + "statuses": { + "href": "https://api.github.com/repos/un33k/python-slugify/statuses/1a2078646a54d4aee921e114e74621f19afd5130" + } + }, + "author_association": "NONE", + "auto_merge": null, + "assignee": null, + "active_lock_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/47", + "id": 147922107, + "node_id": "MDExOlB1bGxSZXF1ZXN0MTQ3OTIyMTA3", + "html_url": "https://github.com/un33k/python-slugify/pull/47", + "diff_url": "https://github.com/un33k/python-slugify/pull/47.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/47.patch", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/47", + "number": 47, + "state": "closed", + "locked": false, + "title": "Use the actual separator in code", + "user": { + "login": "KlaasH", + "id": 6598836, + "node_id": "MDQ6VXNlcjY1OTg4MzY=", + "avatar_url": "https://avatars.githubusercontent.com/u/6598836?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/KlaasH", + "html_url": "https://github.com/KlaasH", + "followers_url": "https://api.github.com/users/KlaasH/followers", + "following_url": "https://api.github.com/users/KlaasH/following{/other_user}", + "gists_url": "https://api.github.com/users/KlaasH/gists{/gist_id}", + "starred_url": "https://api.github.com/users/KlaasH/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/KlaasH/subscriptions", + "organizations_url": "https://api.github.com/users/KlaasH/orgs", + "repos_url": "https://api.github.com/users/KlaasH/repos", + "events_url": "https://api.github.com/users/KlaasH/events{/privacy}", + "received_events_url": "https://api.github.com/users/KlaasH/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "body": "The underlying motivation for this is that I wanted to be able to slugify text that contains hyphens and keep the hyphens. It seemed like that should work with\r\n```\r\nslugify('hyphen-having text FTW!', separator='_', regex_pattern=r'[^-a-z0-9]')\r\n```\r\ni.e. that that should produce 'hyphen-having_text_ftw'. In fact it produced 'hyphen_having_text_ftw' because, behind the scenes, this was always using hyphen as the separator, just switching it out and the end if the separator was overridden, which means hyphen couldn't be an allowed character.\r\n\r\nThis changes it to use the specified separator from the beginning.\r\n\r\nOne side effect of this is that the test with a multi-character separator and `max_length=20` produces a different result, because the multi-character separator counts against the length. This seems like an improvement to me.", + "created_at": "2017-10-21T01:32:08Z", + "updated_at": "2018-02-19T15:04:00Z", + "closed_at": "2018-02-19T13:46:18Z", + "merged_at": null, + "merge_commit_sha": "667926cd2a688b784598e1816e88edf91a69d3ea", + "assignees": [], + "requested_reviewers": [], + "requested_teams": [], + "labels": [], + "milestone": null, + "draft": false, + "commits_url": "https://api.github.com/repos/un33k/python-slugify/pulls/47/commits", + "review_comments_url": "https://api.github.com/repos/un33k/python-slugify/pulls/47/comments", + "review_comment_url": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/47/comments", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/0bff01fffc7d9f6c26b67f1c96e449ec0820c4c8", + "head": { + "label": "KlaasH:feature/use-separator-in-code", + "ref": "feature/use-separator-in-code", + "sha": "0bff01fffc7d9f6c26b67f1c96e449ec0820c4c8", + "user": { + "login": "KlaasH", + "id": 6598836, + "node_id": "MDQ6VXNlcjY1OTg4MzY=", + "avatar_url": "https://avatars.githubusercontent.com/u/6598836?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/KlaasH", + "html_url": "https://github.com/KlaasH", + "followers_url": "https://api.github.com/users/KlaasH/followers", + "following_url": "https://api.github.com/users/KlaasH/following{/other_user}", + "gists_url": "https://api.github.com/users/KlaasH/gists{/gist_id}", + "starred_url": "https://api.github.com/users/KlaasH/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/KlaasH/subscriptions", + "organizations_url": "https://api.github.com/users/KlaasH/orgs", + "repos_url": "https://api.github.com/users/KlaasH/repos", + "events_url": "https://api.github.com/users/KlaasH/events{/privacy}", + "received_events_url": "https://api.github.com/users/KlaasH/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 106322095, + "node_id": "MDEwOlJlcG9zaXRvcnkxMDYzMjIwOTU=", + "name": "python-slugify", + "full_name": "KlaasH/python-slugify", + "private": false, + "owner": { + "login": "KlaasH", + "id": 6598836, + "node_id": "MDQ6VXNlcjY1OTg4MzY=", + "avatar_url": "https://avatars.githubusercontent.com/u/6598836?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/KlaasH", + "html_url": "https://github.com/KlaasH", + "followers_url": "https://api.github.com/users/KlaasH/followers", + "following_url": "https://api.github.com/users/KlaasH/following{/other_user}", + "gists_url": "https://api.github.com/users/KlaasH/gists{/gist_id}", + "starred_url": "https://api.github.com/users/KlaasH/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/KlaasH/subscriptions", + "organizations_url": "https://api.github.com/users/KlaasH/orgs", + "repos_url": "https://api.github.com/users/KlaasH/repos", + "events_url": "https://api.github.com/users/KlaasH/events{/privacy}", + "received_events_url": "https://api.github.com/users/KlaasH/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/KlaasH/python-slugify", + "description": "Returns unicode slugs", + "fork": true, + "url": "https://api.github.com/repos/KlaasH/python-slugify", + "forks_url": "https://api.github.com/repos/KlaasH/python-slugify/forks", + "keys_url": "https://api.github.com/repos/KlaasH/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/KlaasH/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/KlaasH/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/KlaasH/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/KlaasH/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/KlaasH/python-slugify/events", + "assignees_url": "https://api.github.com/repos/KlaasH/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/KlaasH/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/KlaasH/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/KlaasH/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/KlaasH/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/KlaasH/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/KlaasH/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/KlaasH/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/KlaasH/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/KlaasH/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/KlaasH/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/KlaasH/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/KlaasH/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/KlaasH/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/KlaasH/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/KlaasH/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/KlaasH/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/KlaasH/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/KlaasH/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/KlaasH/python-slugify/merges", + "archive_url": "https://api.github.com/repos/KlaasH/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/KlaasH/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/KlaasH/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/KlaasH/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/KlaasH/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/KlaasH/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/KlaasH/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/KlaasH/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/KlaasH/python-slugify/deployments", + "created_at": "2017-10-09T18:45:06Z", + "updated_at": "2017-10-09T18:45:08Z", + "pushed_at": "2017-10-21T01:42:54Z", + "git_url": "git://github.com/KlaasH/python-slugify.git", + "ssh_url": "git@github.com:KlaasH/python-slugify.git", + "clone_url": "https://github.com/KlaasH/python-slugify.git", + "svn_url": "https://github.com/KlaasH/python-slugify", + "homepage": "", + "size": 88, + "stargazers_count": 0, + "watchers_count": 0, + "language": "Python", + "has_issues": false, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 0, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 0, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 0, + "open_issues": 0, + "watchers": 0, + "default_branch": "master" + } + }, + "base": { + "label": "un33k:master", + "ref": "master", + "sha": "e14bde218d794869eba8d23949bf0a9de8611a46", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 6220331, + "node_id": "MDEwOlJlcG9zaXRvcnk2MjIwMzMx", + "name": "python-slugify", + "full_name": "un33k/python-slugify", + "private": false, + "owner": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/un33k/python-slugify", + "description": "Returns unicode slugs", + "fork": false, + "url": "https://api.github.com/repos/un33k/python-slugify", + "forks_url": "https://api.github.com/repos/un33k/python-slugify/forks", + "keys_url": "https://api.github.com/repos/un33k/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/un33k/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/un33k/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/un33k/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/un33k/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/un33k/python-slugify/events", + "assignees_url": "https://api.github.com/repos/un33k/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/un33k/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/un33k/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/un33k/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/un33k/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/un33k/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/un33k/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/un33k/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/un33k/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/un33k/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/un33k/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/un33k/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/un33k/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/un33k/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/un33k/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/un33k/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/un33k/python-slugify/merges", + "archive_url": "https://api.github.com/repos/un33k/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/un33k/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/un33k/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/un33k/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/un33k/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/un33k/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/un33k/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/un33k/python-slugify/deployments", + "created_at": "2012-10-15T01:44:50Z", + "updated_at": "2026-09-05T12:52:20Z", + "pushed_at": "2026-04-27T11:17:17Z", + "git_url": "git://github.com/un33k/python-slugify.git", + "ssh_url": "git@github.com:un33k/python-slugify.git", + "clone_url": "https://github.com/un33k/python-slugify.git", + "svn_url": "https://github.com/un33k/python-slugify", + "homepage": "", + "size": 208, + "stargazers_count": 1623, + "watchers_count": 1623, + "language": "Python", + "has_issues": true, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 134, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 17, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 134, + "open_issues": 17, + "watchers": 1623, + "default_branch": "master" + } + }, + "_links": { + "self": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/47" + }, + "html": { + "href": "https://github.com/un33k/python-slugify/pull/47" + }, + "issue": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/47" + }, + "comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/47/comments" + }, + "review_comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/47/comments" + }, + "review_comment": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}" + }, + "commits": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/47/commits" + }, + "statuses": { + "href": "https://api.github.com/repos/un33k/python-slugify/statuses/0bff01fffc7d9f6c26b67f1c96e449ec0820c4c8" + } + }, + "author_association": "NONE", + "auto_merge": null, + "assignee": null, + "active_lock_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/48", + "id": 147922745, + "node_id": "MDExOlB1bGxSZXF1ZXN0MTQ3OTIyNzQ1", + "html_url": "https://github.com/un33k/python-slugify/pull/48", + "diff_url": "https://github.com/un33k/python-slugify/pull/48.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/48.patch", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/48", + "number": 48, + "state": "closed", + "locked": false, + "title": "Shorten usage to one code and one shell example", + "user": { + "login": "KlaasH", + "id": 6598836, + "node_id": "MDQ6VXNlcjY1OTg4MzY=", + "avatar_url": "https://avatars.githubusercontent.com/u/6598836?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/KlaasH", + "html_url": "https://github.com/KlaasH", + "followers_url": "https://api.github.com/users/KlaasH/followers", + "following_url": "https://api.github.com/users/KlaasH/following{/other_user}", + "gists_url": "https://api.github.com/users/KlaasH/gists{/gist_id}", + "starred_url": "https://api.github.com/users/KlaasH/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/KlaasH/subscriptions", + "organizations_url": "https://api.github.com/users/KlaasH/orgs", + "repos_url": "https://api.github.com/users/KlaasH/repos", + "events_url": "https://api.github.com/users/KlaasH/events{/privacy}", + "received_events_url": "https://api.github.com/users/KlaasH/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "body": "Rather than having a copy of the whole `test.py` file in the README, which is not super readable and tends to make the eyes glaze over, give one example of an invocation in code and one on the command line then link to the tests file.", + "created_at": "2017-10-21T01:47:36Z", + "updated_at": "2018-02-19T13:54:20Z", + "closed_at": "2018-02-19T13:54:20Z", + "merged_at": null, + "merge_commit_sha": "15e6bda49becedc7f3812dafc5a2f4f0022c57aa", + "assignees": [], + "requested_reviewers": [], + "requested_teams": [], + "labels": [], + "milestone": null, + "draft": false, + "commits_url": "https://api.github.com/repos/un33k/python-slugify/pulls/48/commits", + "review_comments_url": "https://api.github.com/repos/un33k/python-slugify/pulls/48/comments", + "review_comment_url": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/48/comments", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/77f4de02e93fb9e15b717235a2916e52f96f8f79", + "head": { + "label": "KlaasH:feature/remove-tests-from-readme", + "ref": "feature/remove-tests-from-readme", + "sha": "77f4de02e93fb9e15b717235a2916e52f96f8f79", + "user": { + "login": "KlaasH", + "id": 6598836, + "node_id": "MDQ6VXNlcjY1OTg4MzY=", + "avatar_url": "https://avatars.githubusercontent.com/u/6598836?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/KlaasH", + "html_url": "https://github.com/KlaasH", + "followers_url": "https://api.github.com/users/KlaasH/followers", + "following_url": "https://api.github.com/users/KlaasH/following{/other_user}", + "gists_url": "https://api.github.com/users/KlaasH/gists{/gist_id}", + "starred_url": "https://api.github.com/users/KlaasH/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/KlaasH/subscriptions", + "organizations_url": "https://api.github.com/users/KlaasH/orgs", + "repos_url": "https://api.github.com/users/KlaasH/repos", + "events_url": "https://api.github.com/users/KlaasH/events{/privacy}", + "received_events_url": "https://api.github.com/users/KlaasH/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 106322095, + "node_id": "MDEwOlJlcG9zaXRvcnkxMDYzMjIwOTU=", + "name": "python-slugify", + "full_name": "KlaasH/python-slugify", + "private": false, + "owner": { + "login": "KlaasH", + "id": 6598836, + "node_id": "MDQ6VXNlcjY1OTg4MzY=", + "avatar_url": "https://avatars.githubusercontent.com/u/6598836?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/KlaasH", + "html_url": "https://github.com/KlaasH", + "followers_url": "https://api.github.com/users/KlaasH/followers", + "following_url": "https://api.github.com/users/KlaasH/following{/other_user}", + "gists_url": "https://api.github.com/users/KlaasH/gists{/gist_id}", + "starred_url": "https://api.github.com/users/KlaasH/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/KlaasH/subscriptions", + "organizations_url": "https://api.github.com/users/KlaasH/orgs", + "repos_url": "https://api.github.com/users/KlaasH/repos", + "events_url": "https://api.github.com/users/KlaasH/events{/privacy}", + "received_events_url": "https://api.github.com/users/KlaasH/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/KlaasH/python-slugify", + "description": "Returns unicode slugs", + "fork": true, + "url": "https://api.github.com/repos/KlaasH/python-slugify", + "forks_url": "https://api.github.com/repos/KlaasH/python-slugify/forks", + "keys_url": "https://api.github.com/repos/KlaasH/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/KlaasH/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/KlaasH/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/KlaasH/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/KlaasH/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/KlaasH/python-slugify/events", + "assignees_url": "https://api.github.com/repos/KlaasH/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/KlaasH/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/KlaasH/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/KlaasH/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/KlaasH/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/KlaasH/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/KlaasH/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/KlaasH/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/KlaasH/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/KlaasH/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/KlaasH/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/KlaasH/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/KlaasH/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/KlaasH/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/KlaasH/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/KlaasH/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/KlaasH/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/KlaasH/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/KlaasH/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/KlaasH/python-slugify/merges", + "archive_url": "https://api.github.com/repos/KlaasH/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/KlaasH/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/KlaasH/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/KlaasH/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/KlaasH/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/KlaasH/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/KlaasH/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/KlaasH/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/KlaasH/python-slugify/deployments", + "created_at": "2017-10-09T18:45:06Z", + "updated_at": "2017-10-09T18:45:08Z", + "pushed_at": "2017-10-21T01:42:54Z", + "git_url": "git://github.com/KlaasH/python-slugify.git", + "ssh_url": "git@github.com:KlaasH/python-slugify.git", + "clone_url": "https://github.com/KlaasH/python-slugify.git", + "svn_url": "https://github.com/KlaasH/python-slugify", + "homepage": "", + "size": 88, + "stargazers_count": 0, + "watchers_count": 0, + "language": "Python", + "has_issues": false, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 0, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 0, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 0, + "open_issues": 0, + "watchers": 0, + "default_branch": "master" + } + }, + "base": { + "label": "un33k:master", + "ref": "master", + "sha": "e14bde218d794869eba8d23949bf0a9de8611a46", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 6220331, + "node_id": "MDEwOlJlcG9zaXRvcnk2MjIwMzMx", + "name": "python-slugify", + "full_name": "un33k/python-slugify", + "private": false, + "owner": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/un33k/python-slugify", + "description": "Returns unicode slugs", + "fork": false, + "url": "https://api.github.com/repos/un33k/python-slugify", + "forks_url": "https://api.github.com/repos/un33k/python-slugify/forks", + "keys_url": "https://api.github.com/repos/un33k/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/un33k/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/un33k/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/un33k/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/un33k/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/un33k/python-slugify/events", + "assignees_url": "https://api.github.com/repos/un33k/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/un33k/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/un33k/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/un33k/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/un33k/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/un33k/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/un33k/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/un33k/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/un33k/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/un33k/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/un33k/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/un33k/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/un33k/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/un33k/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/un33k/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/un33k/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/un33k/python-slugify/merges", + "archive_url": "https://api.github.com/repos/un33k/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/un33k/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/un33k/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/un33k/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/un33k/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/un33k/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/un33k/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/un33k/python-slugify/deployments", + "created_at": "2012-10-15T01:44:50Z", + "updated_at": "2026-09-05T12:52:20Z", + "pushed_at": "2026-04-27T11:17:17Z", + "git_url": "git://github.com/un33k/python-slugify.git", + "ssh_url": "git@github.com:un33k/python-slugify.git", + "clone_url": "https://github.com/un33k/python-slugify.git", + "svn_url": "https://github.com/un33k/python-slugify", + "homepage": "", + "size": 208, + "stargazers_count": 1623, + "watchers_count": 1623, + "language": "Python", + "has_issues": true, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 134, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 17, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 134, + "open_issues": 17, + "watchers": 1623, + "default_branch": "master" + } + }, + "_links": { + "self": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/48" + }, + "html": { + "href": "https://github.com/un33k/python-slugify/pull/48" + }, + "issue": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/48" + }, + "comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/48/comments" + }, + "review_comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/48/comments" + }, + "review_comment": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}" + }, + "commits": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/48/commits" + }, + "statuses": { + "href": "https://api.github.com/repos/un33k/python-slugify/statuses/77f4de02e93fb9e15b717235a2916e52f96f8f79" + } + }, + "author_association": "NONE", + "auto_merge": null, + "assignee": null, + "active_lock_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/53", + "id": 177013183, + "node_id": "MDExOlB1bGxSZXF1ZXN0MTc3MDEzMTgz", + "html_url": "https://github.com/un33k/python-slugify/pull/53", + "diff_url": "https://github.com/un33k/python-slugify/pull/53.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/53.patch", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/53", + "number": 53, + "state": "closed", + "locked": false, + "title": "Use unidecode as an API and allow alternatives", + "user": { + "login": "bolkedebruin", + "id": 4282712, + "node_id": "MDQ6VXNlcjQyODI3MTI=", + "avatar_url": "https://avatars.githubusercontent.com/u/4282712?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/bolkedebruin", + "html_url": "https://github.com/bolkedebruin", + "followers_url": "https://api.github.com/users/bolkedebruin/followers", + "following_url": "https://api.github.com/users/bolkedebruin/following{/other_user}", + "gists_url": "https://api.github.com/users/bolkedebruin/gists{/gist_id}", + "starred_url": "https://api.github.com/users/bolkedebruin/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/bolkedebruin/subscriptions", + "organizations_url": "https://api.github.com/users/bolkedebruin/orgs", + "repos_url": "https://api.github.com/users/bolkedebruin/repos", + "events_url": "https://api.github.com/users/bolkedebruin/events{/privacy}", + "received_events_url": "https://api.github.com/users/bolkedebruin/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "body": "Please see: https://github.com/un33k/python-slugify/issues/52 for an explanation.", + "created_at": "2018-03-23T09:28:33Z", + "updated_at": "2018-03-25T01:48:48Z", + "closed_at": "2018-03-25T01:48:48Z", + "merged_at": "2018-03-25T01:48:48Z", + "merge_commit_sha": "874fe140aa68ee1065e2170385f8c4ace5ac644a", + "assignees": [], + "requested_reviewers": [], + "requested_teams": [], + "labels": [], + "milestone": null, + "draft": false, + "commits_url": "https://api.github.com/repos/un33k/python-slugify/pulls/53/commits", + "review_comments_url": "https://api.github.com/repos/un33k/python-slugify/pulls/53/comments", + "review_comment_url": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/53/comments", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/f1656755355f16794d44725d988be76d637e58f1", + "head": { + "label": "bolkedebruin:master", + "ref": "master", + "sha": "f1656755355f16794d44725d988be76d637e58f1", + "user": { + "login": "bolkedebruin", + "id": 4282712, + "node_id": "MDQ6VXNlcjQyODI3MTI=", + "avatar_url": "https://avatars.githubusercontent.com/u/4282712?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/bolkedebruin", + "html_url": "https://github.com/bolkedebruin", + "followers_url": "https://api.github.com/users/bolkedebruin/followers", + "following_url": "https://api.github.com/users/bolkedebruin/following{/other_user}", + "gists_url": "https://api.github.com/users/bolkedebruin/gists{/gist_id}", + "starred_url": "https://api.github.com/users/bolkedebruin/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/bolkedebruin/subscriptions", + "organizations_url": "https://api.github.com/users/bolkedebruin/orgs", + "repos_url": "https://api.github.com/users/bolkedebruin/repos", + "events_url": "https://api.github.com/users/bolkedebruin/events{/privacy}", + "received_events_url": "https://api.github.com/users/bolkedebruin/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 126458273, + "node_id": "MDEwOlJlcG9zaXRvcnkxMjY0NTgyNzM=", + "name": "python-slugify", + "full_name": "bolkedebruin/python-slugify", + "private": false, + "owner": { + "login": "bolkedebruin", + "id": 4282712, + "node_id": "MDQ6VXNlcjQyODI3MTI=", + "avatar_url": "https://avatars.githubusercontent.com/u/4282712?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/bolkedebruin", + "html_url": "https://github.com/bolkedebruin", + "followers_url": "https://api.github.com/users/bolkedebruin/followers", + "following_url": "https://api.github.com/users/bolkedebruin/following{/other_user}", + "gists_url": "https://api.github.com/users/bolkedebruin/gists{/gist_id}", + "starred_url": "https://api.github.com/users/bolkedebruin/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/bolkedebruin/subscriptions", + "organizations_url": "https://api.github.com/users/bolkedebruin/orgs", + "repos_url": "https://api.github.com/users/bolkedebruin/repos", + "events_url": "https://api.github.com/users/bolkedebruin/events{/privacy}", + "received_events_url": "https://api.github.com/users/bolkedebruin/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/bolkedebruin/python-slugify", + "description": "Returns unicode slugs", + "fork": true, + "url": "https://api.github.com/repos/bolkedebruin/python-slugify", + "forks_url": "https://api.github.com/repos/bolkedebruin/python-slugify/forks", + "keys_url": "https://api.github.com/repos/bolkedebruin/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/bolkedebruin/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/bolkedebruin/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/bolkedebruin/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/bolkedebruin/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/bolkedebruin/python-slugify/events", + "assignees_url": "https://api.github.com/repos/bolkedebruin/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/bolkedebruin/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/bolkedebruin/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/bolkedebruin/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/bolkedebruin/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/bolkedebruin/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/bolkedebruin/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/bolkedebruin/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/bolkedebruin/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/bolkedebruin/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/bolkedebruin/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/bolkedebruin/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/bolkedebruin/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/bolkedebruin/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/bolkedebruin/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/bolkedebruin/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/bolkedebruin/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/bolkedebruin/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/bolkedebruin/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/bolkedebruin/python-slugify/merges", + "archive_url": "https://api.github.com/repos/bolkedebruin/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/bolkedebruin/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/bolkedebruin/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/bolkedebruin/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/bolkedebruin/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/bolkedebruin/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/bolkedebruin/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/bolkedebruin/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/bolkedebruin/python-slugify/deployments", + "created_at": "2018-03-23T08:51:37Z", + "updated_at": "2018-08-01T07:00:37Z", + "pushed_at": "2018-08-01T07:00:35Z", + "git_url": "git://github.com/bolkedebruin/python-slugify.git", + "ssh_url": "git@github.com:bolkedebruin/python-slugify.git", + "clone_url": "https://github.com/bolkedebruin/python-slugify.git", + "svn_url": "https://github.com/bolkedebruin/python-slugify", + "homepage": "", + "size": 90, + "stargazers_count": 0, + "watchers_count": 0, + "language": "Python", + "has_issues": false, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 0, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 0, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 0, + "open_issues": 0, + "watchers": 0, + "default_branch": "master" + } + }, + "base": { + "label": "un33k:master", + "ref": "master", + "sha": "e14bde218d794869eba8d23949bf0a9de8611a46", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 6220331, + "node_id": "MDEwOlJlcG9zaXRvcnk2MjIwMzMx", + "name": "python-slugify", + "full_name": "un33k/python-slugify", + "private": false, + "owner": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/un33k/python-slugify", + "description": "Returns unicode slugs", + "fork": false, + "url": "https://api.github.com/repos/un33k/python-slugify", + "forks_url": "https://api.github.com/repos/un33k/python-slugify/forks", + "keys_url": "https://api.github.com/repos/un33k/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/un33k/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/un33k/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/un33k/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/un33k/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/un33k/python-slugify/events", + "assignees_url": "https://api.github.com/repos/un33k/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/un33k/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/un33k/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/un33k/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/un33k/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/un33k/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/un33k/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/un33k/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/un33k/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/un33k/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/un33k/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/un33k/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/un33k/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/un33k/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/un33k/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/un33k/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/un33k/python-slugify/merges", + "archive_url": "https://api.github.com/repos/un33k/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/un33k/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/un33k/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/un33k/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/un33k/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/un33k/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/un33k/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/un33k/python-slugify/deployments", + "created_at": "2012-10-15T01:44:50Z", + "updated_at": "2026-09-05T12:52:20Z", + "pushed_at": "2026-04-27T11:17:17Z", + "git_url": "git://github.com/un33k/python-slugify.git", + "ssh_url": "git@github.com:un33k/python-slugify.git", + "clone_url": "https://github.com/un33k/python-slugify.git", + "svn_url": "https://github.com/un33k/python-slugify", + "homepage": "", + "size": 208, + "stargazers_count": 1623, + "watchers_count": 1623, + "language": "Python", + "has_issues": true, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 134, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 17, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 134, + "open_issues": 17, + "watchers": 1623, + "default_branch": "master" + } + }, + "_links": { + "self": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/53" + }, + "html": { + "href": "https://github.com/un33k/python-slugify/pull/53" + }, + "issue": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/53" + }, + "comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/53/comments" + }, + "review_comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/53/comments" + }, + "review_comment": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}" + }, + "commits": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/53/commits" + }, + "statuses": { + "href": "https://api.github.com/repos/un33k/python-slugify/statuses/f1656755355f16794d44725d988be76d637e58f1" + } + }, + "author_association": "CONTRIBUTOR", + "auto_merge": null, + "assignee": null, + "active_lock_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/54", + "id": 184084996, + "node_id": "MDExOlB1bGxSZXF1ZXN0MTg0MDg0OTk2", + "html_url": "https://github.com/un33k/python-slugify/pull/54", + "diff_url": "https://github.com/un33k/python-slugify/pull/54.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/54.patch", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/54", + "number": 54, + "state": "closed", + "locked": false, + "title": "Support for case sensitivity", + "user": { + "login": "s-m-e", + "id": 16851110, + "node_id": "MDQ6VXNlcjE2ODUxMTEw", + "avatar_url": "https://avatars.githubusercontent.com/u/16851110?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/s-m-e", + "html_url": "https://github.com/s-m-e", + "followers_url": "https://api.github.com/users/s-m-e/followers", + "following_url": "https://api.github.com/users/s-m-e/following{/other_user}", + "gists_url": "https://api.github.com/users/s-m-e/gists{/gist_id}", + "starred_url": "https://api.github.com/users/s-m-e/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/s-m-e/subscriptions", + "organizations_url": "https://api.github.com/users/s-m-e/orgs", + "repos_url": "https://api.github.com/users/s-m-e/repos", + "events_url": "https://api.github.com/users/s-m-e/events{/privacy}", + "received_events_url": "https://api.github.com/users/s-m-e/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "body": "`slugify.slugify` receives a new keyword argument, `lowercase`. It's set to `True` by default, preserving the original behavior. If set to `False`, slugify will preserve uppercase letters. This functionality also extends to the `stopwords` keyword argument.\r\n\r\n```python\r\nout_str = slugify(slug_str, lowercase = False)\r\n```\r\n\r\nI added one new test ... it could probably be more.", + "created_at": "2018-04-25T15:59:08Z", + "updated_at": "2018-04-26T03:20:44Z", + "closed_at": "2018-04-26T03:20:36Z", + "merged_at": "2018-04-26T03:20:36Z", + "merge_commit_sha": "5c766dd99d5675f70b34cfabc3a8b8556a0065f1", + "assignees": [], + "requested_reviewers": [], + "requested_teams": [], + "labels": [], + "milestone": null, + "draft": false, + "commits_url": "https://api.github.com/repos/un33k/python-slugify/pulls/54/commits", + "review_comments_url": "https://api.github.com/repos/un33k/python-slugify/pulls/54/comments", + "review_comment_url": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/54/comments", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/8f7a97f8a17589db9ec64260c8828280ce2e0f3d", + "head": { + "label": "s-m-e:lowercase", + "ref": "lowercase", + "sha": "8f7a97f8a17589db9ec64260c8828280ce2e0f3d", + "user": { + "login": "s-m-e", + "id": 16851110, + "node_id": "MDQ6VXNlcjE2ODUxMTEw", + "avatar_url": "https://avatars.githubusercontent.com/u/16851110?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/s-m-e", + "html_url": "https://github.com/s-m-e", + "followers_url": "https://api.github.com/users/s-m-e/followers", + "following_url": "https://api.github.com/users/s-m-e/following{/other_user}", + "gists_url": "https://api.github.com/users/s-m-e/gists{/gist_id}", + "starred_url": "https://api.github.com/users/s-m-e/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/s-m-e/subscriptions", + "organizations_url": "https://api.github.com/users/s-m-e/orgs", + "repos_url": "https://api.github.com/users/s-m-e/repos", + "events_url": "https://api.github.com/users/s-m-e/events{/privacy}", + "received_events_url": "https://api.github.com/users/s-m-e/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 131025537, + "node_id": "MDEwOlJlcG9zaXRvcnkxMzEwMjU1Mzc=", + "name": "python-slugify", + "full_name": "s-m-e/python-slugify", + "private": false, + "owner": { + "login": "s-m-e", + "id": 16851110, + "node_id": "MDQ6VXNlcjE2ODUxMTEw", + "avatar_url": "https://avatars.githubusercontent.com/u/16851110?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/s-m-e", + "html_url": "https://github.com/s-m-e", + "followers_url": "https://api.github.com/users/s-m-e/followers", + "following_url": "https://api.github.com/users/s-m-e/following{/other_user}", + "gists_url": "https://api.github.com/users/s-m-e/gists{/gist_id}", + "starred_url": "https://api.github.com/users/s-m-e/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/s-m-e/subscriptions", + "organizations_url": "https://api.github.com/users/s-m-e/orgs", + "repos_url": "https://api.github.com/users/s-m-e/repos", + "events_url": "https://api.github.com/users/s-m-e/events{/privacy}", + "received_events_url": "https://api.github.com/users/s-m-e/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/s-m-e/python-slugify", + "description": "Returns unicode slugs", + "fork": true, + "url": "https://api.github.com/repos/s-m-e/python-slugify", + "forks_url": "https://api.github.com/repos/s-m-e/python-slugify/forks", + "keys_url": "https://api.github.com/repos/s-m-e/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/s-m-e/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/s-m-e/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/s-m-e/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/s-m-e/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/s-m-e/python-slugify/events", + "assignees_url": "https://api.github.com/repos/s-m-e/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/s-m-e/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/s-m-e/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/s-m-e/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/s-m-e/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/s-m-e/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/s-m-e/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/s-m-e/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/s-m-e/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/s-m-e/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/s-m-e/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/s-m-e/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/s-m-e/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/s-m-e/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/s-m-e/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/s-m-e/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/s-m-e/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/s-m-e/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/s-m-e/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/s-m-e/python-slugify/merges", + "archive_url": "https://api.github.com/repos/s-m-e/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/s-m-e/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/s-m-e/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/s-m-e/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/s-m-e/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/s-m-e/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/s-m-e/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/s-m-e/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/s-m-e/python-slugify/deployments", + "created_at": "2018-04-25T15:17:39Z", + "updated_at": "2018-04-25T15:17:40Z", + "pushed_at": "2018-07-17T11:11:09Z", + "git_url": "git://github.com/s-m-e/python-slugify.git", + "ssh_url": "git@github.com:s-m-e/python-slugify.git", + "clone_url": "https://github.com/s-m-e/python-slugify.git", + "svn_url": "https://github.com/s-m-e/python-slugify", + "homepage": "", + "size": 105, + "stargazers_count": 0, + "watchers_count": 0, + "language": "Python", + "has_issues": false, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 0, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 0, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 0, + "open_issues": 0, + "watchers": 0, + "default_branch": "master" + } + }, + "base": { + "label": "un33k:development", + "ref": "development", + "sha": "4c1a344652dfef32f786a96d94b351f4277da964", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 6220331, + "node_id": "MDEwOlJlcG9zaXRvcnk2MjIwMzMx", + "name": "python-slugify", + "full_name": "un33k/python-slugify", + "private": false, + "owner": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/un33k/python-slugify", + "description": "Returns unicode slugs", + "fork": false, + "url": "https://api.github.com/repos/un33k/python-slugify", + "forks_url": "https://api.github.com/repos/un33k/python-slugify/forks", + "keys_url": "https://api.github.com/repos/un33k/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/un33k/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/un33k/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/un33k/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/un33k/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/un33k/python-slugify/events", + "assignees_url": "https://api.github.com/repos/un33k/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/un33k/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/un33k/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/un33k/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/un33k/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/un33k/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/un33k/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/un33k/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/un33k/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/un33k/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/un33k/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/un33k/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/un33k/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/un33k/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/un33k/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/un33k/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/un33k/python-slugify/merges", + "archive_url": "https://api.github.com/repos/un33k/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/un33k/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/un33k/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/un33k/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/un33k/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/un33k/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/un33k/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/un33k/python-slugify/deployments", + "created_at": "2012-10-15T01:44:50Z", + "updated_at": "2026-09-05T12:52:20Z", + "pushed_at": "2026-04-27T11:17:17Z", + "git_url": "git://github.com/un33k/python-slugify.git", + "ssh_url": "git@github.com:un33k/python-slugify.git", + "clone_url": "https://github.com/un33k/python-slugify.git", + "svn_url": "https://github.com/un33k/python-slugify", + "homepage": "", + "size": 208, + "stargazers_count": 1623, + "watchers_count": 1623, + "language": "Python", + "has_issues": true, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 134, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 17, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 134, + "open_issues": 17, + "watchers": 1623, + "default_branch": "master" + } + }, + "_links": { + "self": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/54" + }, + "html": { + "href": "https://github.com/un33k/python-slugify/pull/54" + }, + "issue": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/54" + }, + "comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/54/comments" + }, + "review_comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/54/comments" + }, + "review_comment": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}" + }, + "commits": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/54/commits" + }, + "statuses": { + "href": "https://api.github.com/repos/un33k/python-slugify/statuses/8f7a97f8a17589db9ec64260c8828280ce2e0f3d" + } + }, + "author_association": "CONTRIBUTOR", + "auto_merge": null, + "assignee": null, + "active_lock_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/57", + "id": 201914402, + "node_id": "MDExOlB1bGxSZXF1ZXN0MjAxOTE0NDAy", + "html_url": "https://github.com/un33k/python-slugify/pull/57", + "diff_url": "https://github.com/un33k/python-slugify/pull/57.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/57.patch", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/57", + "number": 57, + "state": "closed", + "locked": false, + "title": "Adding Python 3.7 support", + "user": { + "login": "s-m-e", + "id": 16851110, + "node_id": "MDQ6VXNlcjE2ODUxMTEw", + "avatar_url": "https://avatars.githubusercontent.com/u/16851110?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/s-m-e", + "html_url": "https://github.com/s-m-e", + "followers_url": "https://api.github.com/users/s-m-e/followers", + "following_url": "https://api.github.com/users/s-m-e/following{/other_user}", + "gists_url": "https://api.github.com/users/s-m-e/gists{/gist_id}", + "starred_url": "https://api.github.com/users/s-m-e/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/s-m-e/subscriptions", + "organizations_url": "https://api.github.com/users/s-m-e/orgs", + "repos_url": "https://api.github.com/users/s-m-e/repos", + "events_url": "https://api.github.com/users/s-m-e/events{/privacy}", + "received_events_url": "https://api.github.com/users/s-m-e/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "body": "Addressing #56 based on Travis' currently a little incomplete support for Python 3.7.", + "created_at": "2018-07-17T11:48:04Z", + "updated_at": "2018-08-04T11:00:52Z", + "closed_at": "2018-08-04T01:32:19Z", + "merged_at": null, + "merge_commit_sha": "12ccd4585f48b2f05d9ecdb195fb03ea49eb660a", + "assignees": [], + "requested_reviewers": [], + "requested_teams": [], + "labels": [], + "milestone": null, + "draft": false, + "commits_url": "https://api.github.com/repos/un33k/python-slugify/pulls/57/commits", + "review_comments_url": "https://api.github.com/repos/un33k/python-slugify/pulls/57/comments", + "review_comment_url": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/57/comments", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/8c6f94d558f798486d510120f3cdea04fa05cce3", + "head": { + "label": "s-m-e:python37", + "ref": "python37", + "sha": "8c6f94d558f798486d510120f3cdea04fa05cce3", + "user": { + "login": "s-m-e", + "id": 16851110, + "node_id": "MDQ6VXNlcjE2ODUxMTEw", + "avatar_url": "https://avatars.githubusercontent.com/u/16851110?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/s-m-e", + "html_url": "https://github.com/s-m-e", + "followers_url": "https://api.github.com/users/s-m-e/followers", + "following_url": "https://api.github.com/users/s-m-e/following{/other_user}", + "gists_url": "https://api.github.com/users/s-m-e/gists{/gist_id}", + "starred_url": "https://api.github.com/users/s-m-e/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/s-m-e/subscriptions", + "organizations_url": "https://api.github.com/users/s-m-e/orgs", + "repos_url": "https://api.github.com/users/s-m-e/repos", + "events_url": "https://api.github.com/users/s-m-e/events{/privacy}", + "received_events_url": "https://api.github.com/users/s-m-e/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 131025537, + "node_id": "MDEwOlJlcG9zaXRvcnkxMzEwMjU1Mzc=", + "name": "python-slugify", + "full_name": "s-m-e/python-slugify", + "private": false, + "owner": { + "login": "s-m-e", + "id": 16851110, + "node_id": "MDQ6VXNlcjE2ODUxMTEw", + "avatar_url": "https://avatars.githubusercontent.com/u/16851110?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/s-m-e", + "html_url": "https://github.com/s-m-e", + "followers_url": "https://api.github.com/users/s-m-e/followers", + "following_url": "https://api.github.com/users/s-m-e/following{/other_user}", + "gists_url": "https://api.github.com/users/s-m-e/gists{/gist_id}", + "starred_url": "https://api.github.com/users/s-m-e/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/s-m-e/subscriptions", + "organizations_url": "https://api.github.com/users/s-m-e/orgs", + "repos_url": "https://api.github.com/users/s-m-e/repos", + "events_url": "https://api.github.com/users/s-m-e/events{/privacy}", + "received_events_url": "https://api.github.com/users/s-m-e/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/s-m-e/python-slugify", + "description": "Returns unicode slugs", + "fork": true, + "url": "https://api.github.com/repos/s-m-e/python-slugify", + "forks_url": "https://api.github.com/repos/s-m-e/python-slugify/forks", + "keys_url": "https://api.github.com/repos/s-m-e/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/s-m-e/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/s-m-e/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/s-m-e/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/s-m-e/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/s-m-e/python-slugify/events", + "assignees_url": "https://api.github.com/repos/s-m-e/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/s-m-e/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/s-m-e/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/s-m-e/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/s-m-e/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/s-m-e/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/s-m-e/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/s-m-e/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/s-m-e/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/s-m-e/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/s-m-e/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/s-m-e/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/s-m-e/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/s-m-e/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/s-m-e/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/s-m-e/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/s-m-e/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/s-m-e/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/s-m-e/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/s-m-e/python-slugify/merges", + "archive_url": "https://api.github.com/repos/s-m-e/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/s-m-e/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/s-m-e/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/s-m-e/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/s-m-e/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/s-m-e/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/s-m-e/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/s-m-e/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/s-m-e/python-slugify/deployments", + "created_at": "2018-04-25T15:17:39Z", + "updated_at": "2018-04-25T15:17:40Z", + "pushed_at": "2018-07-17T11:11:09Z", + "git_url": "git://github.com/s-m-e/python-slugify.git", + "ssh_url": "git@github.com:s-m-e/python-slugify.git", + "clone_url": "https://github.com/s-m-e/python-slugify.git", + "svn_url": "https://github.com/s-m-e/python-slugify", + "homepage": "", + "size": 105, + "stargazers_count": 0, + "watchers_count": 0, + "language": "Python", + "has_issues": false, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 0, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 0, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 0, + "open_issues": 0, + "watchers": 0, + "default_branch": "master" + } + }, + "base": { + "label": "un33k:development", + "ref": "development", + "sha": "5c766dd99d5675f70b34cfabc3a8b8556a0065f1", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 6220331, + "node_id": "MDEwOlJlcG9zaXRvcnk2MjIwMzMx", + "name": "python-slugify", + "full_name": "un33k/python-slugify", + "private": false, + "owner": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/un33k/python-slugify", + "description": "Returns unicode slugs", + "fork": false, + "url": "https://api.github.com/repos/un33k/python-slugify", + "forks_url": "https://api.github.com/repos/un33k/python-slugify/forks", + "keys_url": "https://api.github.com/repos/un33k/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/un33k/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/un33k/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/un33k/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/un33k/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/un33k/python-slugify/events", + "assignees_url": "https://api.github.com/repos/un33k/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/un33k/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/un33k/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/un33k/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/un33k/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/un33k/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/un33k/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/un33k/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/un33k/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/un33k/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/un33k/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/un33k/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/un33k/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/un33k/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/un33k/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/un33k/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/un33k/python-slugify/merges", + "archive_url": "https://api.github.com/repos/un33k/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/un33k/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/un33k/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/un33k/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/un33k/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/un33k/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/un33k/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/un33k/python-slugify/deployments", + "created_at": "2012-10-15T01:44:50Z", + "updated_at": "2026-09-05T12:52:20Z", + "pushed_at": "2026-04-27T11:17:17Z", + "git_url": "git://github.com/un33k/python-slugify.git", + "ssh_url": "git@github.com:un33k/python-slugify.git", + "clone_url": "https://github.com/un33k/python-slugify.git", + "svn_url": "https://github.com/un33k/python-slugify", + "homepage": "", + "size": 208, + "stargazers_count": 1623, + "watchers_count": 1623, + "language": "Python", + "has_issues": true, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 134, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 17, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 134, + "open_issues": 17, + "watchers": 1623, + "default_branch": "master" + } + }, + "_links": { + "self": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/57" + }, + "html": { + "href": "https://github.com/un33k/python-slugify/pull/57" + }, + "issue": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/57" + }, + "comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/57/comments" + }, + "review_comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/57/comments" + }, + "review_comment": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}" + }, + "commits": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/57/commits" + }, + "statuses": { + "href": "https://api.github.com/repos/un33k/python-slugify/statuses/8c6f94d558f798486d510120f3cdea04fa05cce3" + } + }, + "author_association": "CONTRIBUTOR", + "auto_merge": null, + "assignee": null, + "active_lock_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/61", + "id": 220878623, + "node_id": "MDExOlB1bGxSZXF1ZXN0MjIwODc4NjIz", + "html_url": "https://github.com/un33k/python-slugify/pull/61", + "diff_url": "https://github.com/un33k/python-slugify/pull/61.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/61.patch", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/61", + "number": 61, + "state": "closed", + "locked": false, + "title": "add .vscode to .gitingore", + "user": { + "login": "vaibhavmule", + "id": 6290791, + "node_id": "MDQ6VXNlcjYyOTA3OTE=", + "avatar_url": "https://avatars.githubusercontent.com/u/6290791?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/vaibhavmule", + "html_url": "https://github.com/vaibhavmule", + "followers_url": "https://api.github.com/users/vaibhavmule/followers", + "following_url": "https://api.github.com/users/vaibhavmule/following{/other_user}", + "gists_url": "https://api.github.com/users/vaibhavmule/gists{/gist_id}", + "starred_url": "https://api.github.com/users/vaibhavmule/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/vaibhavmule/subscriptions", + "organizations_url": "https://api.github.com/users/vaibhavmule/orgs", + "repos_url": "https://api.github.com/users/vaibhavmule/repos", + "events_url": "https://api.github.com/users/vaibhavmule/events{/privacy}", + "received_events_url": "https://api.github.com/users/vaibhavmule/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "body": "", + "created_at": "2018-10-06T10:32:15Z", + "updated_at": "2018-10-14T14:57:13Z", + "closed_at": "2018-10-14T14:57:13Z", + "merged_at": null, + "merge_commit_sha": "2f91386d52f72d50067db986cabd2f7db08f4023", + "assignees": [], + "requested_reviewers": [], + "requested_teams": [], + "labels": [], + "milestone": null, + "draft": false, + "commits_url": "https://api.github.com/repos/un33k/python-slugify/pulls/61/commits", + "review_comments_url": "https://api.github.com/repos/un33k/python-slugify/pulls/61/comments", + "review_comment_url": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/61/comments", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/474080ba8d3bc232302d817db4691c793ff5e71e", + "head": { + "label": "vaibhavmule:patch-1", + "ref": "patch-1", + "sha": "474080ba8d3bc232302d817db4691c793ff5e71e", + "user": { + "login": "vaibhavmule", + "id": 6290791, + "node_id": "MDQ6VXNlcjYyOTA3OTE=", + "avatar_url": "https://avatars.githubusercontent.com/u/6290791?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/vaibhavmule", + "html_url": "https://github.com/vaibhavmule", + "followers_url": "https://api.github.com/users/vaibhavmule/followers", + "following_url": "https://api.github.com/users/vaibhavmule/following{/other_user}", + "gists_url": "https://api.github.com/users/vaibhavmule/gists{/gist_id}", + "starred_url": "https://api.github.com/users/vaibhavmule/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/vaibhavmule/subscriptions", + "organizations_url": "https://api.github.com/users/vaibhavmule/orgs", + "repos_url": "https://api.github.com/users/vaibhavmule/repos", + "events_url": "https://api.github.com/users/vaibhavmule/events{/privacy}", + "received_events_url": "https://api.github.com/users/vaibhavmule/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 151829144, + "node_id": "MDEwOlJlcG9zaXRvcnkxNTE4MjkxNDQ=", + "name": "python-slugify", + "full_name": "vaibhavmule/python-slugify", + "private": false, + "owner": { + "login": "vaibhavmule", + "id": 6290791, + "node_id": "MDQ6VXNlcjYyOTA3OTE=", + "avatar_url": "https://avatars.githubusercontent.com/u/6290791?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/vaibhavmule", + "html_url": "https://github.com/vaibhavmule", + "followers_url": "https://api.github.com/users/vaibhavmule/followers", + "following_url": "https://api.github.com/users/vaibhavmule/following{/other_user}", + "gists_url": "https://api.github.com/users/vaibhavmule/gists{/gist_id}", + "starred_url": "https://api.github.com/users/vaibhavmule/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/vaibhavmule/subscriptions", + "organizations_url": "https://api.github.com/users/vaibhavmule/orgs", + "repos_url": "https://api.github.com/users/vaibhavmule/repos", + "events_url": "https://api.github.com/users/vaibhavmule/events{/privacy}", + "received_events_url": "https://api.github.com/users/vaibhavmule/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/vaibhavmule/python-slugify", + "description": "Returns unicode slugs", + "fork": true, + "url": "https://api.github.com/repos/vaibhavmule/python-slugify", + "forks_url": "https://api.github.com/repos/vaibhavmule/python-slugify/forks", + "keys_url": "https://api.github.com/repos/vaibhavmule/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/vaibhavmule/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/vaibhavmule/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/vaibhavmule/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/vaibhavmule/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/vaibhavmule/python-slugify/events", + "assignees_url": "https://api.github.com/repos/vaibhavmule/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/vaibhavmule/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/vaibhavmule/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/vaibhavmule/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/vaibhavmule/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/vaibhavmule/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/vaibhavmule/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/vaibhavmule/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/vaibhavmule/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/vaibhavmule/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/vaibhavmule/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/vaibhavmule/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/vaibhavmule/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/vaibhavmule/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/vaibhavmule/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/vaibhavmule/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/vaibhavmule/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/vaibhavmule/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/vaibhavmule/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/vaibhavmule/python-slugify/merges", + "archive_url": "https://api.github.com/repos/vaibhavmule/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/vaibhavmule/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/vaibhavmule/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/vaibhavmule/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/vaibhavmule/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/vaibhavmule/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/vaibhavmule/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/vaibhavmule/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/vaibhavmule/python-slugify/deployments", + "created_at": "2018-10-06T10:31:24Z", + "updated_at": "2018-10-06T10:31:26Z", + "pushed_at": "2018-10-06T10:32:44Z", + "git_url": "git://github.com/vaibhavmule/python-slugify.git", + "ssh_url": "git@github.com:vaibhavmule/python-slugify.git", + "clone_url": "https://github.com/vaibhavmule/python-slugify.git", + "svn_url": "https://github.com/vaibhavmule/python-slugify", + "homepage": "", + "size": 102, + "stargazers_count": 0, + "watchers_count": 0, + "language": "Python", + "has_issues": false, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 0, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 0, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 0, + "open_issues": 0, + "watchers": 0, + "default_branch": "master" + } + }, + "base": { + "label": "un33k:master", + "ref": "master", + "sha": "f4462bb64278e091011e6612feac295bf46d1136", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 6220331, + "node_id": "MDEwOlJlcG9zaXRvcnk2MjIwMzMx", + "name": "python-slugify", + "full_name": "un33k/python-slugify", + "private": false, + "owner": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/un33k/python-slugify", + "description": "Returns unicode slugs", + "fork": false, + "url": "https://api.github.com/repos/un33k/python-slugify", + "forks_url": "https://api.github.com/repos/un33k/python-slugify/forks", + "keys_url": "https://api.github.com/repos/un33k/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/un33k/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/un33k/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/un33k/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/un33k/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/un33k/python-slugify/events", + "assignees_url": "https://api.github.com/repos/un33k/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/un33k/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/un33k/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/un33k/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/un33k/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/un33k/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/un33k/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/un33k/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/un33k/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/un33k/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/un33k/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/un33k/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/un33k/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/un33k/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/un33k/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/un33k/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/un33k/python-slugify/merges", + "archive_url": "https://api.github.com/repos/un33k/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/un33k/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/un33k/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/un33k/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/un33k/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/un33k/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/un33k/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/un33k/python-slugify/deployments", + "created_at": "2012-10-15T01:44:50Z", + "updated_at": "2026-09-05T12:52:20Z", + "pushed_at": "2026-04-27T11:17:17Z", + "git_url": "git://github.com/un33k/python-slugify.git", + "ssh_url": "git@github.com:un33k/python-slugify.git", + "clone_url": "https://github.com/un33k/python-slugify.git", + "svn_url": "https://github.com/un33k/python-slugify", + "homepage": "", + "size": 208, + "stargazers_count": 1623, + "watchers_count": 1623, + "language": "Python", + "has_issues": true, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 134, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 17, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 134, + "open_issues": 17, + "watchers": 1623, + "default_branch": "master" + } + }, + "_links": { + "self": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/61" + }, + "html": { + "href": "https://github.com/un33k/python-slugify/pull/61" + }, + "issue": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/61" + }, + "comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/61/comments" + }, + "review_comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/61/comments" + }, + "review_comment": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}" + }, + "commits": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/61/commits" + }, + "statuses": { + "href": "https://api.github.com/repos/un33k/python-slugify/statuses/474080ba8d3bc232302d817db4691c793ff5e71e" + } + }, + "author_association": "NONE", + "auto_merge": null, + "assignee": null, + "active_lock_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/63", + "id": 240896108, + "node_id": "MDExOlB1bGxSZXF1ZXN0MjQwODk2MTA4", + "html_url": "https://github.com/un33k/python-slugify/pull/63", + "diff_url": "https://github.com/un33k/python-slugify/pull/63.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/63.patch", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/63", + "number": 63, + "state": "closed", + "locked": false, + "title": "Proper fallback to text-unidecode, favoring Unidecode, drop support for py 2.6, 3.3.", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "body": "- Default to Unidecode as decoding module\r\n- Allow easy fallback to text-unidecode\r\n- Drop python 2.6, 3.3\r\n- Clean up\r\n- Up version to 2.0.0", + "created_at": "2018-12-25T22:54:52Z", + "updated_at": "2018-12-25T23:00:44Z", + "closed_at": "2018-12-25T23:00:44Z", + "merged_at": "2018-12-25T23:00:44Z", + "merge_commit_sha": "76f4eabe323653555d11702c3e53b66ebf352683", + "assignees": [], + "requested_reviewers": [], + "requested_teams": [], + "labels": [], + "milestone": null, + "draft": false, + "commits_url": "https://api.github.com/repos/un33k/python-slugify/pulls/63/commits", + "review_comments_url": "https://api.github.com/repos/un33k/python-slugify/pulls/63/comments", + "review_comment_url": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/63/comments", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/66d856996073b015e111e337eb6b604d6bc08b5b", + "head": { + "label": "un33k:staging", + "ref": "staging", + "sha": "66d856996073b015e111e337eb6b604d6bc08b5b", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 6220331, + "node_id": "MDEwOlJlcG9zaXRvcnk2MjIwMzMx", + "name": "python-slugify", + "full_name": "un33k/python-slugify", + "private": false, + "owner": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/un33k/python-slugify", + "description": "Returns unicode slugs", + "fork": false, + "url": "https://api.github.com/repos/un33k/python-slugify", + "forks_url": "https://api.github.com/repos/un33k/python-slugify/forks", + "keys_url": "https://api.github.com/repos/un33k/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/un33k/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/un33k/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/un33k/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/un33k/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/un33k/python-slugify/events", + "assignees_url": "https://api.github.com/repos/un33k/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/un33k/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/un33k/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/un33k/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/un33k/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/un33k/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/un33k/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/un33k/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/un33k/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/un33k/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/un33k/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/un33k/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/un33k/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/un33k/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/un33k/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/un33k/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/un33k/python-slugify/merges", + "archive_url": "https://api.github.com/repos/un33k/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/un33k/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/un33k/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/un33k/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/un33k/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/un33k/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/un33k/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/un33k/python-slugify/deployments", + "created_at": "2012-10-15T01:44:50Z", + "updated_at": "2026-09-05T12:52:20Z", + "pushed_at": "2026-04-27T11:17:17Z", + "git_url": "git://github.com/un33k/python-slugify.git", + "ssh_url": "git@github.com:un33k/python-slugify.git", + "clone_url": "https://github.com/un33k/python-slugify.git", + "svn_url": "https://github.com/un33k/python-slugify", + "homepage": "", + "size": 208, + "stargazers_count": 1623, + "watchers_count": 1623, + "language": "Python", + "has_issues": true, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 134, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 17, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 134, + "open_issues": 17, + "watchers": 1623, + "default_branch": "master" + } + }, + "base": { + "label": "un33k:master", + "ref": "master", + "sha": "f4462bb64278e091011e6612feac295bf46d1136", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 6220331, + "node_id": "MDEwOlJlcG9zaXRvcnk2MjIwMzMx", + "name": "python-slugify", + "full_name": "un33k/python-slugify", + "private": false, + "owner": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/un33k/python-slugify", + "description": "Returns unicode slugs", + "fork": false, + "url": "https://api.github.com/repos/un33k/python-slugify", + "forks_url": "https://api.github.com/repos/un33k/python-slugify/forks", + "keys_url": "https://api.github.com/repos/un33k/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/un33k/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/un33k/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/un33k/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/un33k/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/un33k/python-slugify/events", + "assignees_url": "https://api.github.com/repos/un33k/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/un33k/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/un33k/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/un33k/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/un33k/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/un33k/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/un33k/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/un33k/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/un33k/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/un33k/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/un33k/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/un33k/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/un33k/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/un33k/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/un33k/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/un33k/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/un33k/python-slugify/merges", + "archive_url": "https://api.github.com/repos/un33k/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/un33k/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/un33k/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/un33k/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/un33k/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/un33k/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/un33k/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/un33k/python-slugify/deployments", + "created_at": "2012-10-15T01:44:50Z", + "updated_at": "2026-09-05T12:52:20Z", + "pushed_at": "2026-04-27T11:17:17Z", + "git_url": "git://github.com/un33k/python-slugify.git", + "ssh_url": "git@github.com:un33k/python-slugify.git", + "clone_url": "https://github.com/un33k/python-slugify.git", + "svn_url": "https://github.com/un33k/python-slugify", + "homepage": "", + "size": 208, + "stargazers_count": 1623, + "watchers_count": 1623, + "language": "Python", + "has_issues": true, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 134, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 17, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 134, + "open_issues": 17, + "watchers": 1623, + "default_branch": "master" + } + }, + "_links": { + "self": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/63" + }, + "html": { + "href": "https://github.com/un33k/python-slugify/pull/63" + }, + "issue": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/63" + }, + "comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/63/comments" + }, + "review_comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/63/comments" + }, + "review_comment": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}" + }, + "commits": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/63/commits" + }, + "statuses": { + "href": "https://api.github.com/repos/un33k/python-slugify/statuses/66d856996073b015e111e337eb6b604d6bc08b5b" + } + }, + "author_association": "OWNER", + "auto_merge": null, + "assignee": null, + "active_lock_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/64", + "id": 241472809, + "node_id": "MDExOlB1bGxSZXF1ZXN0MjQxNDcyODA5", + "html_url": "https://github.com/un33k/python-slugify/pull/64", + "diff_url": "https://github.com/un33k/python-slugify/pull/64.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/64.patch", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/64", + "number": 64, + "state": "closed", + "locked": false, + "title": "Rename word_boundaries: more consistent naming", + "user": { + "login": "theotheo", + "id": 1499744, + "node_id": "MDQ6VXNlcjE0OTk3NDQ=", + "avatar_url": "https://avatars.githubusercontent.com/u/1499744?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/theotheo", + "html_url": "https://github.com/theotheo", + "followers_url": "https://api.github.com/users/theotheo/followers", + "following_url": "https://api.github.com/users/theotheo/following{/other_user}", + "gists_url": "https://api.github.com/users/theotheo/gists{/gist_id}", + "starred_url": "https://api.github.com/users/theotheo/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/theotheo/subscriptions", + "organizations_url": "https://api.github.com/users/theotheo/orgs", + "repos_url": "https://api.github.com/users/theotheo/repos", + "events_url": "https://api.github.com/users/theotheo/events{/privacy}", + "received_events_url": "https://api.github.com/users/theotheo/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "body": "", + "created_at": "2018-12-30T02:24:27Z", + "updated_at": "2018-12-30T02:57:53Z", + "closed_at": "2018-12-30T02:57:40Z", + "merged_at": "2018-12-30T02:57:40Z", + "merge_commit_sha": "683364ea0f4637364b84486ef24124ece0e0597c", + "assignees": [], + "requested_reviewers": [], + "requested_teams": [], + "labels": [], + "milestone": null, + "draft": false, + "commits_url": "https://api.github.com/repos/un33k/python-slugify/pulls/64/commits", + "review_comments_url": "https://api.github.com/repos/un33k/python-slugify/pulls/64/comments", + "review_comment_url": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/64/comments", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/334142359ad9ba666fd9d2e3b56555d4058a35e5", + "head": { + "label": "theotheo:patch-1", + "ref": "patch-1", + "sha": "334142359ad9ba666fd9d2e3b56555d4058a35e5", + "user": { + "login": "theotheo", + "id": 1499744, + "node_id": "MDQ6VXNlcjE0OTk3NDQ=", + "avatar_url": "https://avatars.githubusercontent.com/u/1499744?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/theotheo", + "html_url": "https://github.com/theotheo", + "followers_url": "https://api.github.com/users/theotheo/followers", + "following_url": "https://api.github.com/users/theotheo/following{/other_user}", + "gists_url": "https://api.github.com/users/theotheo/gists{/gist_id}", + "starred_url": "https://api.github.com/users/theotheo/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/theotheo/subscriptions", + "organizations_url": "https://api.github.com/users/theotheo/orgs", + "repos_url": "https://api.github.com/users/theotheo/repos", + "events_url": "https://api.github.com/users/theotheo/events{/privacy}", + "received_events_url": "https://api.github.com/users/theotheo/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 163555392, + "node_id": "MDEwOlJlcG9zaXRvcnkxNjM1NTUzOTI=", + "name": "python-slugify", + "full_name": "theotheo/python-slugify", + "private": false, + "owner": { + "login": "theotheo", + "id": 1499744, + "node_id": "MDQ6VXNlcjE0OTk3NDQ=", + "avatar_url": "https://avatars.githubusercontent.com/u/1499744?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/theotheo", + "html_url": "https://github.com/theotheo", + "followers_url": "https://api.github.com/users/theotheo/followers", + "following_url": "https://api.github.com/users/theotheo/following{/other_user}", + "gists_url": "https://api.github.com/users/theotheo/gists{/gist_id}", + "starred_url": "https://api.github.com/users/theotheo/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/theotheo/subscriptions", + "organizations_url": "https://api.github.com/users/theotheo/orgs", + "repos_url": "https://api.github.com/users/theotheo/repos", + "events_url": "https://api.github.com/users/theotheo/events{/privacy}", + "received_events_url": "https://api.github.com/users/theotheo/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/theotheo/python-slugify", + "description": "Returns unicode slugs", + "fork": true, + "url": "https://api.github.com/repos/theotheo/python-slugify", + "forks_url": "https://api.github.com/repos/theotheo/python-slugify/forks", + "keys_url": "https://api.github.com/repos/theotheo/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/theotheo/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/theotheo/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/theotheo/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/theotheo/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/theotheo/python-slugify/events", + "assignees_url": "https://api.github.com/repos/theotheo/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/theotheo/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/theotheo/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/theotheo/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/theotheo/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/theotheo/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/theotheo/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/theotheo/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/theotheo/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/theotheo/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/theotheo/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/theotheo/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/theotheo/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/theotheo/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/theotheo/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/theotheo/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/theotheo/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/theotheo/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/theotheo/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/theotheo/python-slugify/merges", + "archive_url": "https://api.github.com/repos/theotheo/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/theotheo/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/theotheo/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/theotheo/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/theotheo/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/theotheo/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/theotheo/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/theotheo/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/theotheo/python-slugify/deployments", + "created_at": "2018-12-30T02:20:45Z", + "updated_at": "2018-12-30T02:20:47Z", + "pushed_at": "2018-12-30T02:24:20Z", + "git_url": "git://github.com/theotheo/python-slugify.git", + "ssh_url": "git@github.com:theotheo/python-slugify.git", + "clone_url": "https://github.com/theotheo/python-slugify.git", + "svn_url": "https://github.com/theotheo/python-slugify", + "homepage": "", + "size": 112, + "stargazers_count": 0, + "watchers_count": 0, + "language": "Python", + "has_issues": false, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 0, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 0, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 0, + "open_issues": 0, + "watchers": 0, + "default_branch": "master" + } + }, + "base": { + "label": "un33k:master", + "ref": "master", + "sha": "fb869bdad9023916eede6cf0215bb90893df0dcf", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 6220331, + "node_id": "MDEwOlJlcG9zaXRvcnk2MjIwMzMx", + "name": "python-slugify", + "full_name": "un33k/python-slugify", + "private": false, + "owner": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/un33k/python-slugify", + "description": "Returns unicode slugs", + "fork": false, + "url": "https://api.github.com/repos/un33k/python-slugify", + "forks_url": "https://api.github.com/repos/un33k/python-slugify/forks", + "keys_url": "https://api.github.com/repos/un33k/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/un33k/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/un33k/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/un33k/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/un33k/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/un33k/python-slugify/events", + "assignees_url": "https://api.github.com/repos/un33k/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/un33k/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/un33k/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/un33k/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/un33k/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/un33k/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/un33k/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/un33k/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/un33k/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/un33k/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/un33k/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/un33k/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/un33k/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/un33k/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/un33k/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/un33k/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/un33k/python-slugify/merges", + "archive_url": "https://api.github.com/repos/un33k/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/un33k/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/un33k/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/un33k/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/un33k/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/un33k/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/un33k/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/un33k/python-slugify/deployments", + "created_at": "2012-10-15T01:44:50Z", + "updated_at": "2026-09-05T12:52:20Z", + "pushed_at": "2026-04-27T11:17:17Z", + "git_url": "git://github.com/un33k/python-slugify.git", + "ssh_url": "git@github.com:un33k/python-slugify.git", + "clone_url": "https://github.com/un33k/python-slugify.git", + "svn_url": "https://github.com/un33k/python-slugify", + "homepage": "", + "size": 208, + "stargazers_count": 1623, + "watchers_count": 1623, + "language": "Python", + "has_issues": true, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 134, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 17, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 134, + "open_issues": 17, + "watchers": 1623, + "default_branch": "master" + } + }, + "_links": { + "self": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/64" + }, + "html": { + "href": "https://github.com/un33k/python-slugify/pull/64" + }, + "issue": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/64" + }, + "comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/64/comments" + }, + "review_comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/64/comments" + }, + "review_comment": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}" + }, + "commits": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/64/commits" + }, + "statuses": { + "href": "https://api.github.com/repos/un33k/python-slugify/statuses/334142359ad9ba666fd9d2e3b56555d4058a35e5" + } + }, + "author_association": "CONTRIBUTOR", + "auto_merge": null, + "assignee": null, + "active_lock_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/65", + "id": 241797439, + "node_id": "MDExOlB1bGxSZXF1ZXN0MjQxNzk3NDM5", + "html_url": "https://github.com/un33k/python-slugify/pull/65", + "diff_url": "https://github.com/un33k/python-slugify/pull/65.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/65.patch", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/65", + "number": 65, + "state": "closed", + "locked": false, + "title": "Add custom_replacements to option", + "user": { + "login": "andriyor", + "id": 11459840, + "node_id": "MDQ6VXNlcjExNDU5ODQw", + "avatar_url": "https://avatars.githubusercontent.com/u/11459840?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/andriyor", + "html_url": "https://github.com/andriyor", + "followers_url": "https://api.github.com/users/andriyor/followers", + "following_url": "https://api.github.com/users/andriyor/following{/other_user}", + "gists_url": "https://api.github.com/users/andriyor/gists{/gist_id}", + "starred_url": "https://api.github.com/users/andriyor/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/andriyor/subscriptions", + "organizations_url": "https://api.github.com/users/andriyor/orgs", + "repos_url": "https://api.github.com/users/andriyor/repos", + "events_url": "https://api.github.com/users/andriyor/events{/privacy}", + "received_events_url": "https://api.github.com/users/andriyor/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "body": "With this option, user can add his own custom replacements.", + "created_at": "2019-01-02T17:01:13Z", + "updated_at": "2019-01-03T16:28:22Z", + "closed_at": "2019-01-03T16:28:22Z", + "merged_at": null, + "merge_commit_sha": "22ee6964079046da30eee68571ca2a5bcd85aa75", + "assignees": [], + "requested_reviewers": [], + "requested_teams": [], + "labels": [], + "milestone": null, + "draft": false, + "commits_url": "https://api.github.com/repos/un33k/python-slugify/pulls/65/commits", + "review_comments_url": "https://api.github.com/repos/un33k/python-slugify/pulls/65/comments", + "review_comment_url": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/65/comments", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/87e0d11734b135db3cf109e35409a5863c389ea0", + "head": { + "label": "andriyor:master", + "ref": "master", + "sha": "87e0d11734b135db3cf109e35409a5863c389ea0", + "user": { + "login": "andriyor", + "id": 11459840, + "node_id": "MDQ6VXNlcjExNDU5ODQw", + "avatar_url": "https://avatars.githubusercontent.com/u/11459840?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/andriyor", + "html_url": "https://github.com/andriyor", + "followers_url": "https://api.github.com/users/andriyor/followers", + "following_url": "https://api.github.com/users/andriyor/following{/other_user}", + "gists_url": "https://api.github.com/users/andriyor/gists{/gist_id}", + "starred_url": "https://api.github.com/users/andriyor/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/andriyor/subscriptions", + "organizations_url": "https://api.github.com/users/andriyor/orgs", + "repos_url": "https://api.github.com/users/andriyor/repos", + "events_url": "https://api.github.com/users/andriyor/events{/privacy}", + "received_events_url": "https://api.github.com/users/andriyor/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": null + }, + "base": { + "label": "un33k:master", + "ref": "master", + "sha": "683364ea0f4637364b84486ef24124ece0e0597c", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 6220331, + "node_id": "MDEwOlJlcG9zaXRvcnk2MjIwMzMx", + "name": "python-slugify", + "full_name": "un33k/python-slugify", + "private": false, + "owner": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/un33k/python-slugify", + "description": "Returns unicode slugs", + "fork": false, + "url": "https://api.github.com/repos/un33k/python-slugify", + "forks_url": "https://api.github.com/repos/un33k/python-slugify/forks", + "keys_url": "https://api.github.com/repos/un33k/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/un33k/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/un33k/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/un33k/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/un33k/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/un33k/python-slugify/events", + "assignees_url": "https://api.github.com/repos/un33k/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/un33k/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/un33k/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/un33k/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/un33k/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/un33k/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/un33k/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/un33k/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/un33k/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/un33k/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/un33k/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/un33k/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/un33k/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/un33k/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/un33k/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/un33k/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/un33k/python-slugify/merges", + "archive_url": "https://api.github.com/repos/un33k/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/un33k/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/un33k/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/un33k/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/un33k/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/un33k/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/un33k/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/un33k/python-slugify/deployments", + "created_at": "2012-10-15T01:44:50Z", + "updated_at": "2026-09-05T12:52:20Z", + "pushed_at": "2026-04-27T11:17:17Z", + "git_url": "git://github.com/un33k/python-slugify.git", + "ssh_url": "git@github.com:un33k/python-slugify.git", + "clone_url": "https://github.com/un33k/python-slugify.git", + "svn_url": "https://github.com/un33k/python-slugify", + "homepage": "", + "size": 208, + "stargazers_count": 1623, + "watchers_count": 1623, + "language": "Python", + "has_issues": true, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 134, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 17, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 134, + "open_issues": 17, + "watchers": 1623, + "default_branch": "master" + } + }, + "_links": { + "self": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/65" + }, + "html": { + "href": "https://github.com/un33k/python-slugify/pull/65" + }, + "issue": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/65" + }, + "comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/65/comments" + }, + "review_comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/65/comments" + }, + "review_comment": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}" + }, + "commits": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/65/commits" + }, + "statuses": { + "href": "https://api.github.com/repos/un33k/python-slugify/statuses/87e0d11734b135db3cf109e35409a5863c389ea0" + } + }, + "author_association": "CONTRIBUTOR", + "auto_merge": null, + "assignee": null, + "active_lock_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/66", + "id": 242021681, + "node_id": "MDExOlB1bGxSZXF1ZXN0MjQyMDIxNjgx", + "html_url": "https://github.com/un33k/python-slugify/pull/66", + "diff_url": "https://github.com/un33k/python-slugify/pull/66.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/66.patch", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/66", + "number": 66, + "state": "closed", + "locked": false, + "title": "Add support user-specific replacements", + "user": { + "login": "andriyor", + "id": 11459840, + "node_id": "MDQ6VXNlcjExNDU5ODQw", + "avatar_url": "https://avatars.githubusercontent.com/u/11459840?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/andriyor", + "html_url": "https://github.com/andriyor", + "followers_url": "https://api.github.com/users/andriyor/followers", + "following_url": "https://api.github.com/users/andriyor/following{/other_user}", + "gists_url": "https://api.github.com/users/andriyor/gists{/gist_id}", + "starred_url": "https://api.github.com/users/andriyor/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/andriyor/subscriptions", + "organizations_url": "https://api.github.com/users/andriyor/orgs", + "repos_url": "https://api.github.com/users/andriyor/repos", + "events_url": "https://api.github.com/users/andriyor/events{/privacy}", + "received_events_url": "https://api.github.com/users/andriyor/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "body": "", + "created_at": "2019-01-03T15:11:18Z", + "updated_at": "2019-01-03T16:29:52Z", + "closed_at": "2019-01-03T16:28:02Z", + "merged_at": "2019-01-03T16:28:02Z", + "merge_commit_sha": "646761e5b4c73b9be7285c60eab4e10c30fe32f4", + "assignees": [], + "requested_reviewers": [], + "requested_teams": [], + "labels": [], + "milestone": null, + "draft": false, + "commits_url": "https://api.github.com/repos/un33k/python-slugify/pulls/66/commits", + "review_comments_url": "https://api.github.com/repos/un33k/python-slugify/pulls/66/comments", + "review_comment_url": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/66/comments", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/74288eb0a84ea6526a21f0d148c5c6cf6a12fb3a", + "head": { + "label": "andriyor:development", + "ref": "development", + "sha": "74288eb0a84ea6526a21f0d148c5c6cf6a12fb3a", + "user": { + "login": "andriyor", + "id": 11459840, + "node_id": "MDQ6VXNlcjExNDU5ODQw", + "avatar_url": "https://avatars.githubusercontent.com/u/11459840?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/andriyor", + "html_url": "https://github.com/andriyor", + "followers_url": "https://api.github.com/users/andriyor/followers", + "following_url": "https://api.github.com/users/andriyor/following{/other_user}", + "gists_url": "https://api.github.com/users/andriyor/gists{/gist_id}", + "starred_url": "https://api.github.com/users/andriyor/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/andriyor/subscriptions", + "organizations_url": "https://api.github.com/users/andriyor/orgs", + "repos_url": "https://api.github.com/users/andriyor/repos", + "events_url": "https://api.github.com/users/andriyor/events{/privacy}", + "received_events_url": "https://api.github.com/users/andriyor/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": null + }, + "base": { + "label": "un33k:development", + "ref": "development", + "sha": "c357ee590b2e799e62229e656e566cc9b7298498", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 6220331, + "node_id": "MDEwOlJlcG9zaXRvcnk2MjIwMzMx", + "name": "python-slugify", + "full_name": "un33k/python-slugify", + "private": false, + "owner": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/un33k/python-slugify", + "description": "Returns unicode slugs", + "fork": false, + "url": "https://api.github.com/repos/un33k/python-slugify", + "forks_url": "https://api.github.com/repos/un33k/python-slugify/forks", + "keys_url": "https://api.github.com/repos/un33k/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/un33k/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/un33k/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/un33k/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/un33k/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/un33k/python-slugify/events", + "assignees_url": "https://api.github.com/repos/un33k/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/un33k/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/un33k/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/un33k/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/un33k/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/un33k/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/un33k/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/un33k/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/un33k/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/un33k/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/un33k/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/un33k/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/un33k/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/un33k/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/un33k/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/un33k/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/un33k/python-slugify/merges", + "archive_url": "https://api.github.com/repos/un33k/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/un33k/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/un33k/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/un33k/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/un33k/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/un33k/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/un33k/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/un33k/python-slugify/deployments", + "created_at": "2012-10-15T01:44:50Z", + "updated_at": "2026-09-05T12:52:20Z", + "pushed_at": "2026-04-27T11:17:17Z", + "git_url": "git://github.com/un33k/python-slugify.git", + "ssh_url": "git@github.com:un33k/python-slugify.git", + "clone_url": "https://github.com/un33k/python-slugify.git", + "svn_url": "https://github.com/un33k/python-slugify", + "homepage": "", + "size": 208, + "stargazers_count": 1623, + "watchers_count": 1623, + "language": "Python", + "has_issues": true, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 134, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 17, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 134, + "open_issues": 17, + "watchers": 1623, + "default_branch": "master" + } + }, + "_links": { + "self": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/66" + }, + "html": { + "href": "https://github.com/un33k/python-slugify/pull/66" + }, + "issue": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/66" + }, + "comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/66/comments" + }, + "review_comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/66/comments" + }, + "review_comment": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}" + }, + "commits": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/66/commits" + }, + "statuses": { + "href": "https://api.github.com/repos/un33k/python-slugify/statuses/74288eb0a84ea6526a21f0d148c5c6cf6a12fb3a" + } + }, + "author_association": "CONTRIBUTOR", + "auto_merge": null, + "assignee": null, + "active_lock_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/67", + "id": 242134844, + "node_id": "MDExOlB1bGxSZXF1ZXN0MjQyMTM0ODQ0", + "html_url": "https://github.com/un33k/python-slugify/pull/67", + "diff_url": "https://github.com/un33k/python-slugify/pull/67.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/67.patch", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/67", + "number": 67, + "state": "closed", + "locked": false, + "title": "Add replacements option", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "body": "- Add replacements option e.g. [['|', 'or'], ['%', 'percent'], ['-', '_']]\r\n- Clean up\r\n- Bump version\r\n- Ensure fully backward compatible \r\n", + "created_at": "2019-01-03T23:00:26Z", + "updated_at": "2019-01-03T23:21:54Z", + "closed_at": "2019-01-03T23:03:36Z", + "merged_at": "2019-01-03T23:03:36Z", + "merge_commit_sha": "1340320455f7201117ac3970c0facf5d1e0f8767", + "assignees": [], + "requested_reviewers": [], + "requested_teams": [], + "labels": [], + "milestone": null, + "draft": false, + "commits_url": "https://api.github.com/repos/un33k/python-slugify/pulls/67/commits", + "review_comments_url": "https://api.github.com/repos/un33k/python-slugify/pulls/67/comments", + "review_comment_url": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/67/comments", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/8aea5c49b960b66e5c81bf20f17ec23e41c8d157", + "head": { + "label": "un33k:staging", + "ref": "staging", + "sha": "8aea5c49b960b66e5c81bf20f17ec23e41c8d157", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 6220331, + "node_id": "MDEwOlJlcG9zaXRvcnk2MjIwMzMx", + "name": "python-slugify", + "full_name": "un33k/python-slugify", + "private": false, + "owner": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/un33k/python-slugify", + "description": "Returns unicode slugs", + "fork": false, + "url": "https://api.github.com/repos/un33k/python-slugify", + "forks_url": "https://api.github.com/repos/un33k/python-slugify/forks", + "keys_url": "https://api.github.com/repos/un33k/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/un33k/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/un33k/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/un33k/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/un33k/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/un33k/python-slugify/events", + "assignees_url": "https://api.github.com/repos/un33k/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/un33k/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/un33k/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/un33k/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/un33k/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/un33k/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/un33k/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/un33k/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/un33k/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/un33k/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/un33k/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/un33k/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/un33k/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/un33k/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/un33k/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/un33k/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/un33k/python-slugify/merges", + "archive_url": "https://api.github.com/repos/un33k/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/un33k/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/un33k/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/un33k/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/un33k/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/un33k/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/un33k/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/un33k/python-slugify/deployments", + "created_at": "2012-10-15T01:44:50Z", + "updated_at": "2026-09-05T12:52:20Z", + "pushed_at": "2026-04-27T11:17:17Z", + "git_url": "git://github.com/un33k/python-slugify.git", + "ssh_url": "git@github.com:un33k/python-slugify.git", + "clone_url": "https://github.com/un33k/python-slugify.git", + "svn_url": "https://github.com/un33k/python-slugify", + "homepage": "", + "size": 208, + "stargazers_count": 1623, + "watchers_count": 1623, + "language": "Python", + "has_issues": true, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 134, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 17, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 134, + "open_issues": 17, + "watchers": 1623, + "default_branch": "master" + } + }, + "base": { + "label": "un33k:master", + "ref": "master", + "sha": "683364ea0f4637364b84486ef24124ece0e0597c", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 6220331, + "node_id": "MDEwOlJlcG9zaXRvcnk2MjIwMzMx", + "name": "python-slugify", + "full_name": "un33k/python-slugify", + "private": false, + "owner": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/un33k/python-slugify", + "description": "Returns unicode slugs", + "fork": false, + "url": "https://api.github.com/repos/un33k/python-slugify", + "forks_url": "https://api.github.com/repos/un33k/python-slugify/forks", + "keys_url": "https://api.github.com/repos/un33k/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/un33k/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/un33k/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/un33k/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/un33k/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/un33k/python-slugify/events", + "assignees_url": "https://api.github.com/repos/un33k/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/un33k/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/un33k/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/un33k/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/un33k/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/un33k/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/un33k/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/un33k/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/un33k/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/un33k/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/un33k/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/un33k/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/un33k/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/un33k/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/un33k/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/un33k/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/un33k/python-slugify/merges", + "archive_url": "https://api.github.com/repos/un33k/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/un33k/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/un33k/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/un33k/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/un33k/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/un33k/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/un33k/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/un33k/python-slugify/deployments", + "created_at": "2012-10-15T01:44:50Z", + "updated_at": "2026-09-05T12:52:20Z", + "pushed_at": "2026-04-27T11:17:17Z", + "git_url": "git://github.com/un33k/python-slugify.git", + "ssh_url": "git@github.com:un33k/python-slugify.git", + "clone_url": "https://github.com/un33k/python-slugify.git", + "svn_url": "https://github.com/un33k/python-slugify", + "homepage": "", + "size": 208, + "stargazers_count": 1623, + "watchers_count": 1623, + "language": "Python", + "has_issues": true, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 134, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 17, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 134, + "open_issues": 17, + "watchers": 1623, + "default_branch": "master" + } + }, + "_links": { + "self": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/67" + }, + "html": { + "href": "https://github.com/un33k/python-slugify/pull/67" + }, + "issue": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/67" + }, + "comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/67/comments" + }, + "review_comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/67/comments" + }, + "review_comment": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}" + }, + "commits": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/67/commits" + }, + "statuses": { + "href": "https://api.github.com/repos/un33k/python-slugify/statuses/8aea5c49b960b66e5c81bf20f17ec23e41c8d157" + } + }, + "author_association": "OWNER", + "auto_merge": null, + "assignee": null, + "active_lock_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/71", + "id": 255559290, + "node_id": "MDExOlB1bGxSZXF1ZXN0MjU1NTU5Mjkw", + "html_url": "https://github.com/un33k/python-slugify/pull/71", + "diff_url": "https://github.com/un33k/python-slugify/pull/71.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/71.patch", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/71", + "number": 71, + "state": "closed", + "locked": false, + "title": "Upgrade Unidecode, add text-unidecode as extra option", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "body": " - Allow install of text-unidecode as extra. \"pip install python-slugify[text-unidecode]\"\r\n - Upgrade Unidecode\r\n", + "created_at": "2019-02-22T23:00:19Z", + "updated_at": "2019-02-25T23:29:32Z", + "closed_at": "2019-02-25T23:29:32Z", + "merged_at": "2019-02-25T23:29:32Z", + "merge_commit_sha": "00e43c6b49a79ecf9acf35ec3cc606538d5b732a", + "assignees": [], + "requested_reviewers": [], + "requested_teams": [], + "labels": [], + "milestone": null, + "draft": false, + "commits_url": "https://api.github.com/repos/un33k/python-slugify/pulls/71/commits", + "review_comments_url": "https://api.github.com/repos/un33k/python-slugify/pulls/71/comments", + "review_comment_url": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/71/comments", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/7addc366c4187d558bce3c719333936a6974fcc1", + "head": { + "label": "un33k:sandbox", + "ref": "sandbox", + "sha": "7addc366c4187d558bce3c719333936a6974fcc1", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 6220331, + "node_id": "MDEwOlJlcG9zaXRvcnk2MjIwMzMx", + "name": "python-slugify", + "full_name": "un33k/python-slugify", + "private": false, + "owner": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/un33k/python-slugify", + "description": "Returns unicode slugs", + "fork": false, + "url": "https://api.github.com/repos/un33k/python-slugify", + "forks_url": "https://api.github.com/repos/un33k/python-slugify/forks", + "keys_url": "https://api.github.com/repos/un33k/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/un33k/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/un33k/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/un33k/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/un33k/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/un33k/python-slugify/events", + "assignees_url": "https://api.github.com/repos/un33k/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/un33k/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/un33k/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/un33k/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/un33k/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/un33k/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/un33k/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/un33k/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/un33k/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/un33k/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/un33k/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/un33k/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/un33k/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/un33k/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/un33k/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/un33k/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/un33k/python-slugify/merges", + "archive_url": "https://api.github.com/repos/un33k/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/un33k/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/un33k/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/un33k/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/un33k/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/un33k/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/un33k/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/un33k/python-slugify/deployments", + "created_at": "2012-10-15T01:44:50Z", + "updated_at": "2026-09-05T12:52:20Z", + "pushed_at": "2026-04-27T11:17:17Z", + "git_url": "git://github.com/un33k/python-slugify.git", + "ssh_url": "git@github.com:un33k/python-slugify.git", + "clone_url": "https://github.com/un33k/python-slugify.git", + "svn_url": "https://github.com/un33k/python-slugify", + "homepage": "", + "size": 208, + "stargazers_count": 1623, + "watchers_count": 1623, + "language": "Python", + "has_issues": true, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 134, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 17, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 134, + "open_issues": 17, + "watchers": 1623, + "default_branch": "master" + } + }, + "base": { + "label": "un33k:development", + "ref": "development", + "sha": "8aea5c49b960b66e5c81bf20f17ec23e41c8d157", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 6220331, + "node_id": "MDEwOlJlcG9zaXRvcnk2MjIwMzMx", + "name": "python-slugify", + "full_name": "un33k/python-slugify", + "private": false, + "owner": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/un33k/python-slugify", + "description": "Returns unicode slugs", + "fork": false, + "url": "https://api.github.com/repos/un33k/python-slugify", + "forks_url": "https://api.github.com/repos/un33k/python-slugify/forks", + "keys_url": "https://api.github.com/repos/un33k/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/un33k/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/un33k/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/un33k/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/un33k/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/un33k/python-slugify/events", + "assignees_url": "https://api.github.com/repos/un33k/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/un33k/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/un33k/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/un33k/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/un33k/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/un33k/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/un33k/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/un33k/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/un33k/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/un33k/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/un33k/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/un33k/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/un33k/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/un33k/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/un33k/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/un33k/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/un33k/python-slugify/merges", + "archive_url": "https://api.github.com/repos/un33k/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/un33k/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/un33k/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/un33k/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/un33k/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/un33k/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/un33k/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/un33k/python-slugify/deployments", + "created_at": "2012-10-15T01:44:50Z", + "updated_at": "2026-09-05T12:52:20Z", + "pushed_at": "2026-04-27T11:17:17Z", + "git_url": "git://github.com/un33k/python-slugify.git", + "ssh_url": "git@github.com:un33k/python-slugify.git", + "clone_url": "https://github.com/un33k/python-slugify.git", + "svn_url": "https://github.com/un33k/python-slugify", + "homepage": "", + "size": 208, + "stargazers_count": 1623, + "watchers_count": 1623, + "language": "Python", + "has_issues": true, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 134, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 17, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 134, + "open_issues": 17, + "watchers": 1623, + "default_branch": "master" + } + }, + "_links": { + "self": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/71" + }, + "html": { + "href": "https://github.com/un33k/python-slugify/pull/71" + }, + "issue": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/71" + }, + "comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/71/comments" + }, + "review_comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/71/comments" + }, + "review_comment": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}" + }, + "commits": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/71/commits" + }, + "statuses": { + "href": "https://api.github.com/repos/un33k/python-slugify/statuses/7addc366c4187d558bce3c719333936a6974fcc1" + } + }, + "author_association": "OWNER", + "auto_merge": null, + "assignee": null, + "active_lock_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/72", + "id": 256093650, + "node_id": "MDExOlB1bGxSZXF1ZXN0MjU2MDkzNjUw", + "html_url": "https://github.com/un33k/python-slugify/pull/72", + "diff_url": "https://github.com/un33k/python-slugify/pull/72.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/72.patch", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/72", + "number": 72, + "state": "closed", + "locked": false, + "title": "Optional Extra Requirements", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "body": "Add extra requirement\r\nRemove old requirement file.s", + "created_at": "2019-02-26T00:04:18Z", + "updated_at": "2019-02-26T14:44:27Z", + "closed_at": "2019-02-26T14:44:26Z", + "merged_at": "2019-02-26T14:44:26Z", + "merge_commit_sha": "33d45a6c7ec3e3629bd45582cf65677beea1cf6c", + "assignees": [], + "requested_reviewers": [], + "requested_teams": [], + "labels": [], + "milestone": null, + "draft": false, + "commits_url": "https://api.github.com/repos/un33k/python-slugify/pulls/72/commits", + "review_comments_url": "https://api.github.com/repos/un33k/python-slugify/pulls/72/comments", + "review_comment_url": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/72/comments", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/f6c7ead98a65bcf4047e629f0071591b18e70d99", + "head": { + "label": "un33k:development", + "ref": "development", + "sha": "f6c7ead98a65bcf4047e629f0071591b18e70d99", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 6220331, + "node_id": "MDEwOlJlcG9zaXRvcnk2MjIwMzMx", + "name": "python-slugify", + "full_name": "un33k/python-slugify", + "private": false, + "owner": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/un33k/python-slugify", + "description": "Returns unicode slugs", + "fork": false, + "url": "https://api.github.com/repos/un33k/python-slugify", + "forks_url": "https://api.github.com/repos/un33k/python-slugify/forks", + "keys_url": "https://api.github.com/repos/un33k/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/un33k/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/un33k/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/un33k/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/un33k/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/un33k/python-slugify/events", + "assignees_url": "https://api.github.com/repos/un33k/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/un33k/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/un33k/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/un33k/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/un33k/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/un33k/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/un33k/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/un33k/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/un33k/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/un33k/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/un33k/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/un33k/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/un33k/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/un33k/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/un33k/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/un33k/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/un33k/python-slugify/merges", + "archive_url": "https://api.github.com/repos/un33k/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/un33k/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/un33k/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/un33k/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/un33k/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/un33k/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/un33k/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/un33k/python-slugify/deployments", + "created_at": "2012-10-15T01:44:50Z", + "updated_at": "2026-09-05T12:52:20Z", + "pushed_at": "2026-04-27T11:17:17Z", + "git_url": "git://github.com/un33k/python-slugify.git", + "ssh_url": "git@github.com:un33k/python-slugify.git", + "clone_url": "https://github.com/un33k/python-slugify.git", + "svn_url": "https://github.com/un33k/python-slugify", + "homepage": "", + "size": 208, + "stargazers_count": 1623, + "watchers_count": 1623, + "language": "Python", + "has_issues": true, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 134, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 17, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 134, + "open_issues": 17, + "watchers": 1623, + "default_branch": "master" + } + }, + "base": { + "label": "un33k:staging", + "ref": "staging", + "sha": "8aea5c49b960b66e5c81bf20f17ec23e41c8d157", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 6220331, + "node_id": "MDEwOlJlcG9zaXRvcnk2MjIwMzMx", + "name": "python-slugify", + "full_name": "un33k/python-slugify", + "private": false, + "owner": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/un33k/python-slugify", + "description": "Returns unicode slugs", + "fork": false, + "url": "https://api.github.com/repos/un33k/python-slugify", + "forks_url": "https://api.github.com/repos/un33k/python-slugify/forks", + "keys_url": "https://api.github.com/repos/un33k/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/un33k/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/un33k/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/un33k/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/un33k/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/un33k/python-slugify/events", + "assignees_url": "https://api.github.com/repos/un33k/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/un33k/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/un33k/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/un33k/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/un33k/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/un33k/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/un33k/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/un33k/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/un33k/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/un33k/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/un33k/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/un33k/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/un33k/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/un33k/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/un33k/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/un33k/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/un33k/python-slugify/merges", + "archive_url": "https://api.github.com/repos/un33k/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/un33k/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/un33k/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/un33k/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/un33k/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/un33k/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/un33k/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/un33k/python-slugify/deployments", + "created_at": "2012-10-15T01:44:50Z", + "updated_at": "2026-09-05T12:52:20Z", + "pushed_at": "2026-04-27T11:17:17Z", + "git_url": "git://github.com/un33k/python-slugify.git", + "ssh_url": "git@github.com:un33k/python-slugify.git", + "clone_url": "https://github.com/un33k/python-slugify.git", + "svn_url": "https://github.com/un33k/python-slugify", + "homepage": "", + "size": 208, + "stargazers_count": 1623, + "watchers_count": 1623, + "language": "Python", + "has_issues": true, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 134, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 17, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 134, + "open_issues": 17, + "watchers": 1623, + "default_branch": "master" + } + }, + "_links": { + "self": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/72" + }, + "html": { + "href": "https://github.com/un33k/python-slugify/pull/72" + }, + "issue": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/72" + }, + "comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/72/comments" + }, + "review_comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/72/comments" + }, + "review_comment": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}" + }, + "commits": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/72/commits" + }, + "statuses": { + "href": "https://api.github.com/repos/un33k/python-slugify/statuses/f6c7ead98a65bcf4047e629f0071591b18e70d99" + } + }, + "author_association": "OWNER", + "auto_merge": null, + "assignee": null, + "active_lock_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/73", + "id": 257749136, + "node_id": "MDExOlB1bGxSZXF1ZXN0MjU3NzQ5MTM2", + "html_url": "https://github.com/un33k/python-slugify/pull/73", + "diff_url": "https://github.com/un33k/python-slugify/pull/73.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/73.patch", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/73", + "number": 73, + "state": "closed", + "locked": false, + "title": "Promote text-unidecode to primary decoding api", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "body": "- Upgrade deps\r\n- Use text-decode as primary decoder\r\n- Clean up", + "created_at": "2019-03-03T16:39:00Z", + "updated_at": "2019-03-03T17:40:57Z", + "closed_at": "2019-03-03T17:40:57Z", + "merged_at": "2019-03-03T17:40:57Z", + "merge_commit_sha": "b8be7d69119dcceb9a3e0ce64a509415737190ac", + "assignees": [], + "requested_reviewers": [], + "requested_teams": [], + "labels": [], + "milestone": null, + "draft": false, + "commits_url": "https://api.github.com/repos/un33k/python-slugify/pulls/73/commits", + "review_comments_url": "https://api.github.com/repos/un33k/python-slugify/pulls/73/comments", + "review_comment_url": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/73/comments", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/cbfd00c343c7b4216248f9d8392d688ae61f29be", + "head": { + "label": "un33k:staging", + "ref": "staging", + "sha": "cbfd00c343c7b4216248f9d8392d688ae61f29be", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 6220331, + "node_id": "MDEwOlJlcG9zaXRvcnk2MjIwMzMx", + "name": "python-slugify", + "full_name": "un33k/python-slugify", + "private": false, + "owner": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/un33k/python-slugify", + "description": "Returns unicode slugs", + "fork": false, + "url": "https://api.github.com/repos/un33k/python-slugify", + "forks_url": "https://api.github.com/repos/un33k/python-slugify/forks", + "keys_url": "https://api.github.com/repos/un33k/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/un33k/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/un33k/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/un33k/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/un33k/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/un33k/python-slugify/events", + "assignees_url": "https://api.github.com/repos/un33k/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/un33k/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/un33k/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/un33k/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/un33k/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/un33k/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/un33k/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/un33k/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/un33k/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/un33k/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/un33k/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/un33k/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/un33k/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/un33k/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/un33k/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/un33k/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/un33k/python-slugify/merges", + "archive_url": "https://api.github.com/repos/un33k/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/un33k/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/un33k/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/un33k/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/un33k/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/un33k/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/un33k/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/un33k/python-slugify/deployments", + "created_at": "2012-10-15T01:44:50Z", + "updated_at": "2026-09-05T12:52:20Z", + "pushed_at": "2026-04-27T11:17:17Z", + "git_url": "git://github.com/un33k/python-slugify.git", + "ssh_url": "git@github.com:un33k/python-slugify.git", + "clone_url": "https://github.com/un33k/python-slugify.git", + "svn_url": "https://github.com/un33k/python-slugify", + "homepage": "", + "size": 208, + "stargazers_count": 1623, + "watchers_count": 1623, + "language": "Python", + "has_issues": true, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 134, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 17, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 134, + "open_issues": 17, + "watchers": 1623, + "default_branch": "master" + } + }, + "base": { + "label": "un33k:master", + "ref": "master", + "sha": "1340320455f7201117ac3970c0facf5d1e0f8767", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 6220331, + "node_id": "MDEwOlJlcG9zaXRvcnk2MjIwMzMx", + "name": "python-slugify", + "full_name": "un33k/python-slugify", + "private": false, + "owner": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/un33k/python-slugify", + "description": "Returns unicode slugs", + "fork": false, + "url": "https://api.github.com/repos/un33k/python-slugify", + "forks_url": "https://api.github.com/repos/un33k/python-slugify/forks", + "keys_url": "https://api.github.com/repos/un33k/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/un33k/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/un33k/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/un33k/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/un33k/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/un33k/python-slugify/events", + "assignees_url": "https://api.github.com/repos/un33k/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/un33k/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/un33k/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/un33k/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/un33k/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/un33k/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/un33k/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/un33k/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/un33k/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/un33k/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/un33k/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/un33k/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/un33k/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/un33k/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/un33k/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/un33k/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/un33k/python-slugify/merges", + "archive_url": "https://api.github.com/repos/un33k/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/un33k/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/un33k/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/un33k/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/un33k/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/un33k/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/un33k/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/un33k/python-slugify/deployments", + "created_at": "2012-10-15T01:44:50Z", + "updated_at": "2026-09-05T12:52:20Z", + "pushed_at": "2026-04-27T11:17:17Z", + "git_url": "git://github.com/un33k/python-slugify.git", + "ssh_url": "git@github.com:un33k/python-slugify.git", + "clone_url": "https://github.com/un33k/python-slugify.git", + "svn_url": "https://github.com/un33k/python-slugify", + "homepage": "", + "size": 208, + "stargazers_count": 1623, + "watchers_count": 1623, + "language": "Python", + "has_issues": true, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 134, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 17, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 134, + "open_issues": 17, + "watchers": 1623, + "default_branch": "master" + } + }, + "_links": { + "self": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/73" + }, + "html": { + "href": "https://github.com/un33k/python-slugify/pull/73" + }, + "issue": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/73" + }, + "comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/73/comments" + }, + "review_comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/73/comments" + }, + "review_comment": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}" + }, + "commits": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/73/commits" + }, + "statuses": { + "href": "https://api.github.com/repos/un33k/python-slugify/statuses/cbfd00c343c7b4216248f9d8392d688ae61f29be" + } + }, + "author_association": "OWNER", + "auto_merge": null, + "assignee": null, + "active_lock_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/74", + "id": 260194911, + "node_id": "MDExOlB1bGxSZXF1ZXN0MjYwMTk0OTEx", + "html_url": "https://github.com/un33k/python-slugify/pull/74", + "diff_url": "https://github.com/un33k/python-slugify/pull/74.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/74.patch", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/74", + "number": 74, + "state": "closed", + "locked": false, + "title": "MANIFEST.in: Add test.py to sdist", + "user": { + "login": "jayvdb", + "id": 15092, + "node_id": "MDQ6VXNlcjE1MDky", + "avatar_url": "https://avatars.githubusercontent.com/u/15092?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/jayvdb", + "html_url": "https://github.com/jayvdb", + "followers_url": "https://api.github.com/users/jayvdb/followers", + "following_url": "https://api.github.com/users/jayvdb/following{/other_user}", + "gists_url": "https://api.github.com/users/jayvdb/gists{/gist_id}", + "starred_url": "https://api.github.com/users/jayvdb/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/jayvdb/subscriptions", + "organizations_url": "https://api.github.com/users/jayvdb/orgs", + "repos_url": "https://api.github.com/users/jayvdb/repos", + "events_url": "https://api.github.com/users/jayvdb/events{/privacy}", + "received_events_url": "https://api.github.com/users/jayvdb/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "body": "", + "created_at": "2019-03-12T02:06:29Z", + "updated_at": "2019-03-26T04:38:38Z", + "closed_at": "2019-03-25T22:21:42Z", + "merged_at": "2019-03-25T22:21:42Z", + "merge_commit_sha": "ee1741bede09cf712dcdc3d6d213f8b4d00d3688", + "assignees": [], + "requested_reviewers": [], + "requested_teams": [], + "labels": [], + "milestone": null, + "draft": false, + "commits_url": "https://api.github.com/repos/un33k/python-slugify/pulls/74/commits", + "review_comments_url": "https://api.github.com/repos/un33k/python-slugify/pulls/74/comments", + "review_comment_url": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/74/comments", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/be2ea483d847831d4cd5d11ca6f31e806dde5a37", + "head": { + "label": "jayvdb:patch-1", + "ref": "patch-1", + "sha": "be2ea483d847831d4cd5d11ca6f31e806dde5a37", + "user": { + "login": "jayvdb", + "id": 15092, + "node_id": "MDQ6VXNlcjE1MDky", + "avatar_url": "https://avatars.githubusercontent.com/u/15092?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/jayvdb", + "html_url": "https://github.com/jayvdb", + "followers_url": "https://api.github.com/users/jayvdb/followers", + "following_url": "https://api.github.com/users/jayvdb/following{/other_user}", + "gists_url": "https://api.github.com/users/jayvdb/gists{/gist_id}", + "starred_url": "https://api.github.com/users/jayvdb/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/jayvdb/subscriptions", + "organizations_url": "https://api.github.com/users/jayvdb/orgs", + "repos_url": "https://api.github.com/users/jayvdb/repos", + "events_url": "https://api.github.com/users/jayvdb/events{/privacy}", + "received_events_url": "https://api.github.com/users/jayvdb/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 175116538, + "node_id": "MDEwOlJlcG9zaXRvcnkxNzUxMTY1Mzg=", + "name": "python-slugify", + "full_name": "jayvdb/python-slugify", + "private": false, + "owner": { + "login": "jayvdb", + "id": 15092, + "node_id": "MDQ6VXNlcjE1MDky", + "avatar_url": "https://avatars.githubusercontent.com/u/15092?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/jayvdb", + "html_url": "https://github.com/jayvdb", + "followers_url": "https://api.github.com/users/jayvdb/followers", + "following_url": "https://api.github.com/users/jayvdb/following{/other_user}", + "gists_url": "https://api.github.com/users/jayvdb/gists{/gist_id}", + "starred_url": "https://api.github.com/users/jayvdb/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/jayvdb/subscriptions", + "organizations_url": "https://api.github.com/users/jayvdb/orgs", + "repos_url": "https://api.github.com/users/jayvdb/repos", + "events_url": "https://api.github.com/users/jayvdb/events{/privacy}", + "received_events_url": "https://api.github.com/users/jayvdb/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/jayvdb/python-slugify", + "description": "Returns unicode slugs", + "fork": true, + "url": "https://api.github.com/repos/jayvdb/python-slugify", + "forks_url": "https://api.github.com/repos/jayvdb/python-slugify/forks", + "keys_url": "https://api.github.com/repos/jayvdb/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/jayvdb/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/jayvdb/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/jayvdb/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/jayvdb/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/jayvdb/python-slugify/events", + "assignees_url": "https://api.github.com/repos/jayvdb/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/jayvdb/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/jayvdb/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/jayvdb/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/jayvdb/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/jayvdb/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/jayvdb/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/jayvdb/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/jayvdb/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/jayvdb/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/jayvdb/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/jayvdb/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/jayvdb/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/jayvdb/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/jayvdb/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/jayvdb/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/jayvdb/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/jayvdb/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/jayvdb/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/jayvdb/python-slugify/merges", + "archive_url": "https://api.github.com/repos/jayvdb/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/jayvdb/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/jayvdb/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/jayvdb/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/jayvdb/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/jayvdb/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/jayvdb/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/jayvdb/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/jayvdb/python-slugify/deployments", + "created_at": "2019-03-12T02:05:49Z", + "updated_at": "2019-03-12T02:05:51Z", + "pushed_at": "2019-03-26T04:38:38Z", + "git_url": "git://github.com/jayvdb/python-slugify.git", + "ssh_url": "git@github.com:jayvdb/python-slugify.git", + "clone_url": "https://github.com/jayvdb/python-slugify.git", + "svn_url": "https://github.com/jayvdb/python-slugify", + "homepage": "", + "size": 117, + "stargazers_count": 0, + "watchers_count": 0, + "language": "Python", + "has_issues": false, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 0, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 0, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 0, + "open_issues": 0, + "watchers": 0, + "default_branch": "master" + } + }, + "base": { + "label": "un33k:master", + "ref": "master", + "sha": "b8be7d69119dcceb9a3e0ce64a509415737190ac", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 6220331, + "node_id": "MDEwOlJlcG9zaXRvcnk2MjIwMzMx", + "name": "python-slugify", + "full_name": "un33k/python-slugify", + "private": false, + "owner": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/un33k/python-slugify", + "description": "Returns unicode slugs", + "fork": false, + "url": "https://api.github.com/repos/un33k/python-slugify", + "forks_url": "https://api.github.com/repos/un33k/python-slugify/forks", + "keys_url": "https://api.github.com/repos/un33k/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/un33k/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/un33k/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/un33k/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/un33k/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/un33k/python-slugify/events", + "assignees_url": "https://api.github.com/repos/un33k/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/un33k/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/un33k/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/un33k/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/un33k/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/un33k/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/un33k/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/un33k/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/un33k/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/un33k/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/un33k/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/un33k/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/un33k/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/un33k/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/un33k/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/un33k/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/un33k/python-slugify/merges", + "archive_url": "https://api.github.com/repos/un33k/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/un33k/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/un33k/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/un33k/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/un33k/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/un33k/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/un33k/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/un33k/python-slugify/deployments", + "created_at": "2012-10-15T01:44:50Z", + "updated_at": "2026-09-05T12:52:20Z", + "pushed_at": "2026-04-27T11:17:17Z", + "git_url": "git://github.com/un33k/python-slugify.git", + "ssh_url": "git@github.com:un33k/python-slugify.git", + "clone_url": "https://github.com/un33k/python-slugify.git", + "svn_url": "https://github.com/un33k/python-slugify", + "homepage": "", + "size": 208, + "stargazers_count": 1623, + "watchers_count": 1623, + "language": "Python", + "has_issues": true, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 134, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 17, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 134, + "open_issues": 17, + "watchers": 1623, + "default_branch": "master" + } + }, + "_links": { + "self": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/74" + }, + "html": { + "href": "https://github.com/un33k/python-slugify/pull/74" + }, + "issue": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/74" + }, + "comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/74/comments" + }, + "review_comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/74/comments" + }, + "review_comment": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}" + }, + "commits": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/74/commits" + }, + "statuses": { + "href": "https://api.github.com/repos/un33k/python-slugify/statuses/be2ea483d847831d4cd5d11ca6f31e806dde5a37" + } + }, + "author_association": "CONTRIBUTOR", + "auto_merge": null, + "assignee": null, + "active_lock_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/75", + "id": 265985568, + "node_id": "MDExOlB1bGxSZXF1ZXN0MjY1OTg1NTY4", + "html_url": "https://github.com/un33k/python-slugify/pull/75", + "diff_url": "https://github.com/un33k/python-slugify/pull/75.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/75.patch", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/75", + "number": 75, + "state": "closed", + "locked": false, + "title": "Test against Python 3.7", + "user": { + "login": "sloria", + "id": 2379650, + "node_id": "MDQ6VXNlcjIzNzk2NTA=", + "avatar_url": "https://avatars.githubusercontent.com/u/2379650?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/sloria", + "html_url": "https://github.com/sloria", + "followers_url": "https://api.github.com/users/sloria/followers", + "following_url": "https://api.github.com/users/sloria/following{/other_user}", + "gists_url": "https://api.github.com/users/sloria/gists{/gist_id}", + "starred_url": "https://api.github.com/users/sloria/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/sloria/subscriptions", + "organizations_url": "https://api.github.com/users/sloria/orgs", + "repos_url": "https://api.github.com/users/sloria/repos", + "events_url": "https://api.github.com/users/sloria/events{/privacy}", + "received_events_url": "https://api.github.com/users/sloria/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "body": "Also, remove `sudo: false` because TravisCI has\r\nmigrated to their VM-based infrastructure:\r\n\r\nhttps://blog.travis-ci.com/2018-11-19-required-linux-infrastructure-migration", + "created_at": "2019-03-31T03:35:16Z", + "updated_at": "2019-03-31T13:43:39Z", + "closed_at": "2019-03-31T13:43:39Z", + "merged_at": "2019-03-31T13:43:39Z", + "merge_commit_sha": "cab1c969e8bed86ab03f61dd04c90c376267988d", + "assignees": [], + "requested_reviewers": [], + "requested_teams": [], + "labels": [], + "milestone": null, + "draft": false, + "commits_url": "https://api.github.com/repos/un33k/python-slugify/pulls/75/commits", + "review_comments_url": "https://api.github.com/repos/un33k/python-slugify/pulls/75/comments", + "review_comment_url": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/75/comments", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/fbc69c1253c4363b10807a8ed42651cf1e1ee9ae", + "head": { + "label": "sloria:py37", + "ref": "py37", + "sha": "fbc69c1253c4363b10807a8ed42651cf1e1ee9ae", + "user": { + "login": "sloria", + "id": 2379650, + "node_id": "MDQ6VXNlcjIzNzk2NTA=", + "avatar_url": "https://avatars.githubusercontent.com/u/2379650?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/sloria", + "html_url": "https://github.com/sloria", + "followers_url": "https://api.github.com/users/sloria/followers", + "following_url": "https://api.github.com/users/sloria/following{/other_user}", + "gists_url": "https://api.github.com/users/sloria/gists{/gist_id}", + "starred_url": "https://api.github.com/users/sloria/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/sloria/subscriptions", + "organizations_url": "https://api.github.com/users/sloria/orgs", + "repos_url": "https://api.github.com/users/sloria/repos", + "events_url": "https://api.github.com/users/sloria/events{/privacy}", + "received_events_url": "https://api.github.com/users/sloria/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": null + }, + "base": { + "label": "un33k:master", + "ref": "master", + "sha": "98c83bee0900751d37fd70c1a048cdd85ca034c4", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 6220331, + "node_id": "MDEwOlJlcG9zaXRvcnk2MjIwMzMx", + "name": "python-slugify", + "full_name": "un33k/python-slugify", + "private": false, + "owner": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/un33k/python-slugify", + "description": "Returns unicode slugs", + "fork": false, + "url": "https://api.github.com/repos/un33k/python-slugify", + "forks_url": "https://api.github.com/repos/un33k/python-slugify/forks", + "keys_url": "https://api.github.com/repos/un33k/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/un33k/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/un33k/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/un33k/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/un33k/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/un33k/python-slugify/events", + "assignees_url": "https://api.github.com/repos/un33k/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/un33k/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/un33k/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/un33k/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/un33k/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/un33k/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/un33k/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/un33k/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/un33k/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/un33k/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/un33k/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/un33k/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/un33k/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/un33k/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/un33k/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/un33k/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/un33k/python-slugify/merges", + "archive_url": "https://api.github.com/repos/un33k/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/un33k/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/un33k/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/un33k/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/un33k/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/un33k/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/un33k/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/un33k/python-slugify/deployments", + "created_at": "2012-10-15T01:44:50Z", + "updated_at": "2026-09-05T12:52:20Z", + "pushed_at": "2026-04-27T11:17:17Z", + "git_url": "git://github.com/un33k/python-slugify.git", + "ssh_url": "git@github.com:un33k/python-slugify.git", + "clone_url": "https://github.com/un33k/python-slugify.git", + "svn_url": "https://github.com/un33k/python-slugify", + "homepage": "", + "size": 208, + "stargazers_count": 1623, + "watchers_count": 1623, + "language": "Python", + "has_issues": true, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 134, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 17, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 134, + "open_issues": 17, + "watchers": 1623, + "default_branch": "master" + } + }, + "_links": { + "self": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/75" + }, + "html": { + "href": "https://github.com/un33k/python-slugify/pull/75" + }, + "issue": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/75" + }, + "comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/75/comments" + }, + "review_comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/75/comments" + }, + "review_comment": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}" + }, + "commits": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/75/commits" + }, + "statuses": { + "href": "https://api.github.com/repos/un33k/python-slugify/statuses/fbc69c1253c4363b10807a8ed42651cf1e1ee9ae" + } + }, + "author_association": "CONTRIBUTOR", + "auto_merge": null, + "assignee": null, + "active_lock_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/76", + "id": 265986473, + "node_id": "MDExOlB1bGxSZXF1ZXN0MjY1OTg2NDcz", + "html_url": "https://github.com/un33k/python-slugify/pull/76", + "diff_url": "https://github.com/un33k/python-slugify/pull/76.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/76.patch", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/76", + "number": 76, + "state": "closed", + "locked": false, + "title": "Add UniqueSlugify for generating unique slugs", + "user": { + "login": "sloria", + "id": 2379650, + "node_id": "MDQ6VXNlcjIzNzk2NTA=", + "avatar_url": "https://avatars.githubusercontent.com/u/2379650?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/sloria", + "html_url": "https://github.com/sloria", + "followers_url": "https://api.github.com/users/sloria/followers", + "following_url": "https://api.github.com/users/sloria/following{/other_user}", + "gists_url": "https://api.github.com/users/sloria/gists{/gist_id}", + "starred_url": "https://api.github.com/users/sloria/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/sloria/subscriptions", + "organizations_url": "https://api.github.com/users/sloria/orgs", + "repos_url": "https://api.github.com/users/sloria/repos", + "events_url": "https://api.github.com/users/sloria/events{/privacy}", + "received_events_url": "https://api.github.com/users/sloria/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "body": "", + "created_at": "2019-03-31T04:01:01Z", + "updated_at": "2019-03-31T15:54:41Z", + "closed_at": "2019-03-31T13:46:26Z", + "merged_at": null, + "merge_commit_sha": "3f7005ed56b2fe79affba9b2e1695bf29eddb657", + "assignees": [], + "requested_reviewers": [], + "requested_teams": [], + "labels": [], + "milestone": null, + "draft": false, + "commits_url": "https://api.github.com/repos/un33k/python-slugify/pulls/76/commits", + "review_comments_url": "https://api.github.com/repos/un33k/python-slugify/pulls/76/comments", + "review_comment_url": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/76/comments", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/c7c85269876c99d9a5d9fd6922f3b70ab268a52c", + "head": { + "label": "sloria:unique-slugify", + "ref": "unique-slugify", + "sha": "c7c85269876c99d9a5d9fd6922f3b70ab268a52c", + "user": { + "login": "sloria", + "id": 2379650, + "node_id": "MDQ6VXNlcjIzNzk2NTA=", + "avatar_url": "https://avatars.githubusercontent.com/u/2379650?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/sloria", + "html_url": "https://github.com/sloria", + "followers_url": "https://api.github.com/users/sloria/followers", + "following_url": "https://api.github.com/users/sloria/following{/other_user}", + "gists_url": "https://api.github.com/users/sloria/gists{/gist_id}", + "starred_url": "https://api.github.com/users/sloria/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/sloria/subscriptions", + "organizations_url": "https://api.github.com/users/sloria/orgs", + "repos_url": "https://api.github.com/users/sloria/repos", + "events_url": "https://api.github.com/users/sloria/events{/privacy}", + "received_events_url": "https://api.github.com/users/sloria/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": null + }, + "base": { + "label": "un33k:master", + "ref": "master", + "sha": "98c83bee0900751d37fd70c1a048cdd85ca034c4", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 6220331, + "node_id": "MDEwOlJlcG9zaXRvcnk2MjIwMzMx", + "name": "python-slugify", + "full_name": "un33k/python-slugify", + "private": false, + "owner": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/un33k/python-slugify", + "description": "Returns unicode slugs", + "fork": false, + "url": "https://api.github.com/repos/un33k/python-slugify", + "forks_url": "https://api.github.com/repos/un33k/python-slugify/forks", + "keys_url": "https://api.github.com/repos/un33k/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/un33k/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/un33k/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/un33k/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/un33k/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/un33k/python-slugify/events", + "assignees_url": "https://api.github.com/repos/un33k/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/un33k/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/un33k/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/un33k/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/un33k/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/un33k/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/un33k/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/un33k/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/un33k/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/un33k/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/un33k/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/un33k/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/un33k/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/un33k/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/un33k/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/un33k/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/un33k/python-slugify/merges", + "archive_url": "https://api.github.com/repos/un33k/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/un33k/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/un33k/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/un33k/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/un33k/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/un33k/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/un33k/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/un33k/python-slugify/deployments", + "created_at": "2012-10-15T01:44:50Z", + "updated_at": "2026-09-05T12:52:20Z", + "pushed_at": "2026-04-27T11:17:17Z", + "git_url": "git://github.com/un33k/python-slugify.git", + "ssh_url": "git@github.com:un33k/python-slugify.git", + "clone_url": "https://github.com/un33k/python-slugify.git", + "svn_url": "https://github.com/un33k/python-slugify", + "homepage": "", + "size": 208, + "stargazers_count": 1623, + "watchers_count": 1623, + "language": "Python", + "has_issues": true, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 134, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 17, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 134, + "open_issues": 17, + "watchers": 1623, + "default_branch": "master" + } + }, + "_links": { + "self": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/76" + }, + "html": { + "href": "https://github.com/un33k/python-slugify/pull/76" + }, + "issue": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/76" + }, + "comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/76/comments" + }, + "review_comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/76/comments" + }, + "review_comment": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}" + }, + "commits": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/76/commits" + }, + "statuses": { + "href": "https://api.github.com/repos/un33k/python-slugify/statuses/c7c85269876c99d9a5d9fd6922f3b70ab268a52c" + } + }, + "author_association": "CONTRIBUTOR", + "auto_merge": null, + "assignee": null, + "active_lock_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/77", + "id": 266016728, + "node_id": "MDExOlB1bGxSZXF1ZXN0MjY2MDE2NzI4", + "html_url": "https://github.com/un33k/python-slugify/pull/77", + "diff_url": "https://github.com/un33k/python-slugify/pull/77.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/77.patch", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/77", + "number": 77, + "state": "closed", + "locked": false, + "title": "Add Python 3.7 Support", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "body": "Add Py 3.7 support\r\nAdd Pypy2.7 support\r\nAdd pypy3.5 support\r\nUpdate travis.yml", + "created_at": "2019-03-31T14:11:28Z", + "updated_at": "2019-03-31T14:15:21Z", + "closed_at": "2019-03-31T14:14:44Z", + "merged_at": "2019-03-31T14:14:44Z", + "merge_commit_sha": "4ed9500f00c02d2429f1e0aaa236c28db0d23a8b", + "assignees": [], + "requested_reviewers": [], + "requested_teams": [], + "labels": [], + "milestone": null, + "draft": false, + "commits_url": "https://api.github.com/repos/un33k/python-slugify/pulls/77/commits", + "review_comments_url": "https://api.github.com/repos/un33k/python-slugify/pulls/77/comments", + "review_comment_url": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/77/comments", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/f70d438067df8e3a50d37e27ff1236e2cf69b6fb", + "head": { + "label": "un33k:staging", + "ref": "staging", + "sha": "f70d438067df8e3a50d37e27ff1236e2cf69b6fb", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 6220331, + "node_id": "MDEwOlJlcG9zaXRvcnk2MjIwMzMx", + "name": "python-slugify", + "full_name": "un33k/python-slugify", + "private": false, + "owner": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/un33k/python-slugify", + "description": "Returns unicode slugs", + "fork": false, + "url": "https://api.github.com/repos/un33k/python-slugify", + "forks_url": "https://api.github.com/repos/un33k/python-slugify/forks", + "keys_url": "https://api.github.com/repos/un33k/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/un33k/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/un33k/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/un33k/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/un33k/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/un33k/python-slugify/events", + "assignees_url": "https://api.github.com/repos/un33k/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/un33k/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/un33k/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/un33k/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/un33k/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/un33k/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/un33k/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/un33k/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/un33k/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/un33k/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/un33k/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/un33k/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/un33k/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/un33k/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/un33k/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/un33k/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/un33k/python-slugify/merges", + "archive_url": "https://api.github.com/repos/un33k/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/un33k/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/un33k/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/un33k/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/un33k/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/un33k/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/un33k/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/un33k/python-slugify/deployments", + "created_at": "2012-10-15T01:44:50Z", + "updated_at": "2026-09-05T12:52:20Z", + "pushed_at": "2026-04-27T11:17:17Z", + "git_url": "git://github.com/un33k/python-slugify.git", + "ssh_url": "git@github.com:un33k/python-slugify.git", + "clone_url": "https://github.com/un33k/python-slugify.git", + "svn_url": "https://github.com/un33k/python-slugify", + "homepage": "", + "size": 208, + "stargazers_count": 1623, + "watchers_count": 1623, + "language": "Python", + "has_issues": true, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 134, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 17, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 134, + "open_issues": 17, + "watchers": 1623, + "default_branch": "master" + } + }, + "base": { + "label": "un33k:master", + "ref": "master", + "sha": "cab1c969e8bed86ab03f61dd04c90c376267988d", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 6220331, + "node_id": "MDEwOlJlcG9zaXRvcnk2MjIwMzMx", + "name": "python-slugify", + "full_name": "un33k/python-slugify", + "private": false, + "owner": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/un33k/python-slugify", + "description": "Returns unicode slugs", + "fork": false, + "url": "https://api.github.com/repos/un33k/python-slugify", + "forks_url": "https://api.github.com/repos/un33k/python-slugify/forks", + "keys_url": "https://api.github.com/repos/un33k/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/un33k/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/un33k/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/un33k/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/un33k/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/un33k/python-slugify/events", + "assignees_url": "https://api.github.com/repos/un33k/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/un33k/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/un33k/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/un33k/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/un33k/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/un33k/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/un33k/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/un33k/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/un33k/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/un33k/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/un33k/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/un33k/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/un33k/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/un33k/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/un33k/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/un33k/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/un33k/python-slugify/merges", + "archive_url": "https://api.github.com/repos/un33k/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/un33k/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/un33k/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/un33k/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/un33k/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/un33k/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/un33k/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/un33k/python-slugify/deployments", + "created_at": "2012-10-15T01:44:50Z", + "updated_at": "2026-09-05T12:52:20Z", + "pushed_at": "2026-04-27T11:17:17Z", + "git_url": "git://github.com/un33k/python-slugify.git", + "ssh_url": "git@github.com:un33k/python-slugify.git", + "clone_url": "https://github.com/un33k/python-slugify.git", + "svn_url": "https://github.com/un33k/python-slugify", + "homepage": "", + "size": 208, + "stargazers_count": 1623, + "watchers_count": 1623, + "language": "Python", + "has_issues": true, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 134, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 17, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 134, + "open_issues": 17, + "watchers": 1623, + "default_branch": "master" + } + }, + "_links": { + "self": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/77" + }, + "html": { + "href": "https://github.com/un33k/python-slugify/pull/77" + }, + "issue": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/77" + }, + "comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/77/comments" + }, + "review_comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/77/comments" + }, + "review_comment": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}" + }, + "commits": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/77/commits" + }, + "statuses": { + "href": "https://api.github.com/repos/un33k/python-slugify/statuses/f70d438067df8e3a50d37e27ff1236e2cf69b6fb" + } + }, + "author_association": "OWNER", + "auto_merge": null, + "assignee": null, + "active_lock_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/83", + "id": 319184906, + "node_id": "MDExOlB1bGxSZXF1ZXN0MzE5MTg0OTA2", + "html_url": "https://github.com/un33k/python-slugify/pull/83", + "diff_url": "https://github.com/un33k/python-slugify/pull/83.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/83.patch", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/83", + "number": 83, + "state": "closed", + "locked": false, + "title": "BF(dependencies)| Bump `text_unidecode` version", + "user": { + "login": "koolfunky", + "id": 14309762, + "node_id": "MDQ6VXNlcjE0MzA5NzYy", + "avatar_url": "https://avatars.githubusercontent.com/u/14309762?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/koolfunky", + "html_url": "https://github.com/koolfunky", + "followers_url": "https://api.github.com/users/koolfunky/followers", + "following_url": "https://api.github.com/users/koolfunky/following{/other_user}", + "gists_url": "https://api.github.com/users/koolfunky/gists{/gist_id}", + "starred_url": "https://api.github.com/users/koolfunky/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/koolfunky/subscriptions", + "organizations_url": "https://api.github.com/users/koolfunky/orgs", + "repos_url": "https://api.github.com/users/koolfunky/repos", + "events_url": "https://api.github.com/users/koolfunky/events{/privacy}", + "received_events_url": "https://api.github.com/users/koolfunky/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "body": "1.2 -> 1.3", + "created_at": "2019-09-19T09:39:05Z", + "updated_at": "2019-09-20T16:49:58Z", + "closed_at": "2019-09-19T15:12:08Z", + "merged_at": "2019-09-19T15:12:08Z", + "merge_commit_sha": "413ac35c0859bf9c6e1024c993c77cb980f9645e", + "assignees": [], + "requested_reviewers": [], + "requested_teams": [], + "labels": [], + "milestone": null, + "draft": false, + "commits_url": "https://api.github.com/repos/un33k/python-slugify/pulls/83/commits", + "review_comments_url": "https://api.github.com/repos/un33k/python-slugify/pulls/83/comments", + "review_comment_url": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/83/comments", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/66129dc6003a3bc4d8ceff7e6f38cc5d241ecf4d", + "head": { + "label": "koolfunky:fixes/bump_text_unidecode_version", + "ref": "fixes/bump_text_unidecode_version", + "sha": "66129dc6003a3bc4d8ceff7e6f38cc5d241ecf4d", + "user": { + "login": "koolfunky", + "id": 14309762, + "node_id": "MDQ6VXNlcjE0MzA5NzYy", + "avatar_url": "https://avatars.githubusercontent.com/u/14309762?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/koolfunky", + "html_url": "https://github.com/koolfunky", + "followers_url": "https://api.github.com/users/koolfunky/followers", + "following_url": "https://api.github.com/users/koolfunky/following{/other_user}", + "gists_url": "https://api.github.com/users/koolfunky/gists{/gist_id}", + "starred_url": "https://api.github.com/users/koolfunky/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/koolfunky/subscriptions", + "organizations_url": "https://api.github.com/users/koolfunky/orgs", + "repos_url": "https://api.github.com/users/koolfunky/repos", + "events_url": "https://api.github.com/users/koolfunky/events{/privacy}", + "received_events_url": "https://api.github.com/users/koolfunky/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": null + }, + "base": { + "label": "un33k:staging", + "ref": "staging", + "sha": "228de59ade00e1de933d9804ad948ad77841a3fb", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 6220331, + "node_id": "MDEwOlJlcG9zaXRvcnk2MjIwMzMx", + "name": "python-slugify", + "full_name": "un33k/python-slugify", + "private": false, + "owner": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/un33k/python-slugify", + "description": "Returns unicode slugs", + "fork": false, + "url": "https://api.github.com/repos/un33k/python-slugify", + "forks_url": "https://api.github.com/repos/un33k/python-slugify/forks", + "keys_url": "https://api.github.com/repos/un33k/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/un33k/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/un33k/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/un33k/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/un33k/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/un33k/python-slugify/events", + "assignees_url": "https://api.github.com/repos/un33k/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/un33k/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/un33k/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/un33k/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/un33k/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/un33k/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/un33k/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/un33k/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/un33k/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/un33k/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/un33k/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/un33k/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/un33k/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/un33k/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/un33k/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/un33k/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/un33k/python-slugify/merges", + "archive_url": "https://api.github.com/repos/un33k/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/un33k/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/un33k/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/un33k/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/un33k/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/un33k/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/un33k/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/un33k/python-slugify/deployments", + "created_at": "2012-10-15T01:44:50Z", + "updated_at": "2026-09-05T12:52:20Z", + "pushed_at": "2026-04-27T11:17:17Z", + "git_url": "git://github.com/un33k/python-slugify.git", + "ssh_url": "git@github.com:un33k/python-slugify.git", + "clone_url": "https://github.com/un33k/python-slugify.git", + "svn_url": "https://github.com/un33k/python-slugify", + "homepage": "", + "size": 208, + "stargazers_count": 1623, + "watchers_count": 1623, + "language": "Python", + "has_issues": true, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 134, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 17, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 134, + "open_issues": 17, + "watchers": 1623, + "default_branch": "master" + } + }, + "_links": { + "self": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/83" + }, + "html": { + "href": "https://github.com/un33k/python-slugify/pull/83" + }, + "issue": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/83" + }, + "comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/83/comments" + }, + "review_comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/83/comments" + }, + "review_comment": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}" + }, + "commits": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/83/commits" + }, + "statuses": { + "href": "https://api.github.com/repos/un33k/python-slugify/statuses/66129dc6003a3bc4d8ceff7e6f38cc5d241ecf4d" + } + }, + "author_association": "CONTRIBUTOR", + "auto_merge": null, + "assignee": null, + "active_lock_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/84", + "id": 319681580, + "node_id": "MDExOlB1bGxSZXF1ZXN0MzE5NjgxNTgw", + "html_url": "https://github.com/un33k/python-slugify/pull/84", + "diff_url": "https://github.com/un33k/python-slugify/pull/84.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/84.patch", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/84", + "number": 84, + "state": "closed", + "locked": false, + "title": "bumped dependency text-unidecode to v1.3", + "user": { + "login": "VKen", + "id": 124760, + "node_id": "MDQ6VXNlcjEyNDc2MA==", + "avatar_url": "https://avatars.githubusercontent.com/u/124760?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/VKen", + "html_url": "https://github.com/VKen", + "followers_url": "https://api.github.com/users/VKen/followers", + "following_url": "https://api.github.com/users/VKen/following{/other_user}", + "gists_url": "https://api.github.com/users/VKen/gists{/gist_id}", + "starred_url": "https://api.github.com/users/VKen/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/VKen/subscriptions", + "organizations_url": "https://api.github.com/users/VKen/orgs", + "repos_url": "https://api.github.com/users/VKen/repos", + "events_url": "https://api.github.com/users/VKen/events{/privacy}", + "received_events_url": "https://api.github.com/users/VKen/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "body": "Hi, I've enjoyed using this library.\r\n\r\nRecently, there's a version update from the text-unidecode dependency to version v1.3\r\nhttps://github.com/kmike/text-unidecode/\r\n\r\nI am also using faker https://github.com/joke2k/faker as part of my dev environment, and they have updated to using text-unidecode v1.3\r\n\r\nThis causes a clash in python-slugify's dependency text-unidecode , needing `text-unidecode==1.2` VS faker needing `text-unidecode==1.3`.\r\n\r\nI updated the dependency requirement to v1.3, and ran `python test.py`. All tests passed.\r\n\r\nCheers,\r\nVKen", + "created_at": "2019-09-20T11:36:57Z", + "updated_at": "2019-09-21T00:49:41Z", + "closed_at": "2019-09-20T16:44:08Z", + "merged_at": null, + "merge_commit_sha": "b5848f68edc19b23420c34af61d629281916acbc", + "assignees": [], + "requested_reviewers": [], + "requested_teams": [], + "labels": [], + "milestone": null, + "draft": false, + "commits_url": "https://api.github.com/repos/un33k/python-slugify/pulls/84/commits", + "review_comments_url": "https://api.github.com/repos/un33k/python-slugify/pulls/84/comments", + "review_comment_url": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/84/comments", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/0bd768f2729af96dffe7d3497295eefc6cb9c228", + "head": { + "label": "VKen:master", + "ref": "master", + "sha": "0bd768f2729af96dffe7d3497295eefc6cb9c228", + "user": { + "login": "VKen", + "id": 124760, + "node_id": "MDQ6VXNlcjEyNDc2MA==", + "avatar_url": "https://avatars.githubusercontent.com/u/124760?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/VKen", + "html_url": "https://github.com/VKen", + "followers_url": "https://api.github.com/users/VKen/followers", + "following_url": "https://api.github.com/users/VKen/following{/other_user}", + "gists_url": "https://api.github.com/users/VKen/gists{/gist_id}", + "starred_url": "https://api.github.com/users/VKen/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/VKen/subscriptions", + "organizations_url": "https://api.github.com/users/VKen/orgs", + "repos_url": "https://api.github.com/users/VKen/repos", + "events_url": "https://api.github.com/users/VKen/events{/privacy}", + "received_events_url": "https://api.github.com/users/VKen/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": null + }, + "base": { + "label": "un33k:master", + "ref": "master", + "sha": "e7b036089a0eb1021fea74c70f34c5fae4d03885", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 6220331, + "node_id": "MDEwOlJlcG9zaXRvcnk2MjIwMzMx", + "name": "python-slugify", + "full_name": "un33k/python-slugify", + "private": false, + "owner": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/un33k/python-slugify", + "description": "Returns unicode slugs", + "fork": false, + "url": "https://api.github.com/repos/un33k/python-slugify", + "forks_url": "https://api.github.com/repos/un33k/python-slugify/forks", + "keys_url": "https://api.github.com/repos/un33k/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/un33k/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/un33k/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/un33k/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/un33k/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/un33k/python-slugify/events", + "assignees_url": "https://api.github.com/repos/un33k/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/un33k/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/un33k/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/un33k/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/un33k/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/un33k/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/un33k/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/un33k/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/un33k/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/un33k/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/un33k/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/un33k/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/un33k/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/un33k/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/un33k/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/un33k/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/un33k/python-slugify/merges", + "archive_url": "https://api.github.com/repos/un33k/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/un33k/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/un33k/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/un33k/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/un33k/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/un33k/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/un33k/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/un33k/python-slugify/deployments", + "created_at": "2012-10-15T01:44:50Z", + "updated_at": "2026-09-05T12:52:20Z", + "pushed_at": "2026-04-27T11:17:17Z", + "git_url": "git://github.com/un33k/python-slugify.git", + "ssh_url": "git@github.com:un33k/python-slugify.git", + "clone_url": "https://github.com/un33k/python-slugify.git", + "svn_url": "https://github.com/un33k/python-slugify", + "homepage": "", + "size": 208, + "stargazers_count": 1623, + "watchers_count": 1623, + "language": "Python", + "has_issues": true, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 134, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 17, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 134, + "open_issues": 17, + "watchers": 1623, + "default_branch": "master" + } + }, + "_links": { + "self": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/84" + }, + "html": { + "href": "https://github.com/un33k/python-slugify/pull/84" + }, + "issue": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/84" + }, + "comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/84/comments" + }, + "review_comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/84/comments" + }, + "review_comment": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}" + }, + "commits": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/84/commits" + }, + "statuses": { + "href": "https://api.github.com/repos/un33k/python-slugify/statuses/0bd768f2729af96dffe7d3497295eefc6cb9c228" + } + }, + "author_association": "NONE", + "auto_merge": null, + "assignee": null, + "active_lock_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/87", + "id": 327576297, + "node_id": "MDExOlB1bGxSZXF1ZXN0MzI3NTc2Mjk3", + "html_url": "https://github.com/un33k/python-slugify/pull/87", + "diff_url": "https://github.com/un33k/python-slugify/pull/87.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/87.patch", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/87", + "number": 87, + "state": "closed", + "locked": false, + "title": "Drop support for EOL Python 2.6 and 3.2-2.4", + "user": { + "login": "hugovk", + "id": 1324225, + "node_id": "MDQ6VXNlcjEzMjQyMjU=", + "avatar_url": "https://avatars.githubusercontent.com/u/1324225?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/hugovk", + "html_url": "https://github.com/hugovk", + "followers_url": "https://api.github.com/users/hugovk/followers", + "following_url": "https://api.github.com/users/hugovk/following{/other_user}", + "gists_url": "https://api.github.com/users/hugovk/gists{/gist_id}", + "starred_url": "https://api.github.com/users/hugovk/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/hugovk/subscriptions", + "organizations_url": "https://api.github.com/users/hugovk/orgs", + "repos_url": "https://api.github.com/users/hugovk/repos", + "events_url": "https://api.github.com/users/hugovk/events{/privacy}", + "received_events_url": "https://api.github.com/users/hugovk/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "body": "Python 2.6 and 3.3 were removed in https://github.com/un33k/python-slugify/pull/63, so this removes their Trove classifiers.\r\n\r\nThis also:\r\n\r\n* Removes a duplicate test class\r\n\r\n* Upgrade Python syntax with [pyupgrade](https://github.com/asottile/pyupgrade)\r\n\r\n* Upgrade PyPy and PyPy3 (6.0.0 to 7.1.1) and test 3.8 beta on the CI\r\n\r\n* Add `python_requires` to help pip\r\n\r\n\r\n", + "created_at": "2019-10-13T17:39:55Z", + "updated_at": "2019-10-20T17:47:51Z", + "closed_at": "2019-10-14T21:11:14Z", + "merged_at": "2019-10-14T21:11:14Z", + "merge_commit_sha": "588372d9e68979c2990873e9562d203ce3098442", + "assignees": [], + "requested_reviewers": [], + "requested_teams": [], + "labels": [], + "milestone": null, + "draft": false, + "commits_url": "https://api.github.com/repos/un33k/python-slugify/pulls/87/commits", + "review_comments_url": "https://api.github.com/repos/un33k/python-slugify/pulls/87/comments", + "review_comment_url": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/87/comments", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/b618ad407c9ebc03ee70ae9d256ecc39c7afc826", + "head": { + "label": "hugovk:rm-eol", + "ref": "rm-eol", + "sha": "b618ad407c9ebc03ee70ae9d256ecc39c7afc826", + "user": { + "login": "hugovk", + "id": 1324225, + "node_id": "MDQ6VXNlcjEzMjQyMjU=", + "avatar_url": "https://avatars.githubusercontent.com/u/1324225?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/hugovk", + "html_url": "https://github.com/hugovk", + "followers_url": "https://api.github.com/users/hugovk/followers", + "following_url": "https://api.github.com/users/hugovk/following{/other_user}", + "gists_url": "https://api.github.com/users/hugovk/gists{/gist_id}", + "starred_url": "https://api.github.com/users/hugovk/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/hugovk/subscriptions", + "organizations_url": "https://api.github.com/users/hugovk/orgs", + "repos_url": "https://api.github.com/users/hugovk/repos", + "events_url": "https://api.github.com/users/hugovk/events{/privacy}", + "received_events_url": "https://api.github.com/users/hugovk/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 214861915, + "node_id": "MDEwOlJlcG9zaXRvcnkyMTQ4NjE5MTU=", + "name": "python-slugify", + "full_name": "hugovk/python-slugify", + "private": false, + "owner": { + "login": "hugovk", + "id": 1324225, + "node_id": "MDQ6VXNlcjEzMjQyMjU=", + "avatar_url": "https://avatars.githubusercontent.com/u/1324225?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/hugovk", + "html_url": "https://github.com/hugovk", + "followers_url": "https://api.github.com/users/hugovk/followers", + "following_url": "https://api.github.com/users/hugovk/following{/other_user}", + "gists_url": "https://api.github.com/users/hugovk/gists{/gist_id}", + "starred_url": "https://api.github.com/users/hugovk/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/hugovk/subscriptions", + "organizations_url": "https://api.github.com/users/hugovk/orgs", + "repos_url": "https://api.github.com/users/hugovk/repos", + "events_url": "https://api.github.com/users/hugovk/events{/privacy}", + "received_events_url": "https://api.github.com/users/hugovk/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/hugovk/python-slugify", + "description": "Returns unicode slugs", + "fork": true, + "url": "https://api.github.com/repos/hugovk/python-slugify", + "forks_url": "https://api.github.com/repos/hugovk/python-slugify/forks", + "keys_url": "https://api.github.com/repos/hugovk/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/hugovk/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/hugovk/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/hugovk/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/hugovk/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/hugovk/python-slugify/events", + "assignees_url": "https://api.github.com/repos/hugovk/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/hugovk/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/hugovk/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/hugovk/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/hugovk/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/hugovk/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/hugovk/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/hugovk/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/hugovk/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/hugovk/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/hugovk/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/hugovk/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/hugovk/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/hugovk/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/hugovk/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/hugovk/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/hugovk/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/hugovk/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/hugovk/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/hugovk/python-slugify/merges", + "archive_url": "https://api.github.com/repos/hugovk/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/hugovk/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/hugovk/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/hugovk/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/hugovk/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/hugovk/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/hugovk/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/hugovk/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/hugovk/python-slugify/deployments", + "created_at": "2019-10-13T17:20:09Z", + "updated_at": "2022-11-16T21:00:13Z", + "pushed_at": "2022-11-16T21:07:28Z", + "git_url": "git://github.com/hugovk/python-slugify.git", + "ssh_url": "git@github.com:hugovk/python-slugify.git", + "clone_url": "https://github.com/hugovk/python-slugify.git", + "svn_url": "https://github.com/hugovk/python-slugify", + "homepage": "", + "size": 177, + "stargazers_count": 0, + "watchers_count": 0, + "language": "Python", + "has_issues": false, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 0, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 0, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 0, + "open_issues": 0, + "watchers": 0, + "default_branch": "master" + } + }, + "base": { + "label": "un33k:staging", + "ref": "staging", + "sha": "b9db1bc87e3b19c5c63ab7a00b19685b7996de5d", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 6220331, + "node_id": "MDEwOlJlcG9zaXRvcnk2MjIwMzMx", + "name": "python-slugify", + "full_name": "un33k/python-slugify", + "private": false, + "owner": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/un33k/python-slugify", + "description": "Returns unicode slugs", + "fork": false, + "url": "https://api.github.com/repos/un33k/python-slugify", + "forks_url": "https://api.github.com/repos/un33k/python-slugify/forks", + "keys_url": "https://api.github.com/repos/un33k/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/un33k/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/un33k/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/un33k/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/un33k/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/un33k/python-slugify/events", + "assignees_url": "https://api.github.com/repos/un33k/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/un33k/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/un33k/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/un33k/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/un33k/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/un33k/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/un33k/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/un33k/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/un33k/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/un33k/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/un33k/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/un33k/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/un33k/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/un33k/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/un33k/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/un33k/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/un33k/python-slugify/merges", + "archive_url": "https://api.github.com/repos/un33k/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/un33k/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/un33k/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/un33k/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/un33k/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/un33k/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/un33k/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/un33k/python-slugify/deployments", + "created_at": "2012-10-15T01:44:50Z", + "updated_at": "2026-09-05T12:52:20Z", + "pushed_at": "2026-04-27T11:17:17Z", + "git_url": "git://github.com/un33k/python-slugify.git", + "ssh_url": "git@github.com:un33k/python-slugify.git", + "clone_url": "https://github.com/un33k/python-slugify.git", + "svn_url": "https://github.com/un33k/python-slugify", + "homepage": "", + "size": 208, + "stargazers_count": 1623, + "watchers_count": 1623, + "language": "Python", + "has_issues": true, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 134, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 17, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 134, + "open_issues": 17, + "watchers": 1623, + "default_branch": "master" + } + }, + "_links": { + "self": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/87" + }, + "html": { + "href": "https://github.com/un33k/python-slugify/pull/87" + }, + "issue": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/87" + }, + "comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/87/comments" + }, + "review_comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/87/comments" + }, + "review_comment": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}" + }, + "commits": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/87/commits" + }, + "statuses": { + "href": "https://api.github.com/repos/un33k/python-slugify/statuses/b618ad407c9ebc03ee70ae9d256ecc39c7afc826" + } + }, + "author_association": "CONTRIBUTOR", + "auto_merge": null, + "assignee": null, + "active_lock_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/88", + "id": 330138622, + "node_id": "MDExOlB1bGxSZXF1ZXN0MzMwMTM4NjIy", + "html_url": "https://github.com/un33k/python-slugify/pull/88", + "diff_url": "https://github.com/un33k/python-slugify/pull/88.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/88.patch", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/88", + "number": 88, + "state": "closed", + "locked": false, + "title": "Drop support for old python - cleanup - up version ", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "body": "With version 4.0.0\r\n\r\n- Drop support for python 2.6 & < 3.4.5\r\n- Clean up \r\n- Up version ", + "created_at": "2019-10-20T17:35:34Z", + "updated_at": "2019-10-20T17:47:49Z", + "closed_at": "2019-10-20T17:39:52Z", + "merged_at": "2019-10-20T17:39:52Z", + "merge_commit_sha": "76f327216bc52adc6115eb6d1483405958810c5c", + "assignees": [], + "requested_reviewers": [], + "requested_teams": [], + "labels": [], + "milestone": null, + "draft": false, + "commits_url": "https://api.github.com/repos/un33k/python-slugify/pulls/88/commits", + "review_comments_url": "https://api.github.com/repos/un33k/python-slugify/pulls/88/comments", + "review_comment_url": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/88/comments", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/26f96d78ddd9686c15f685d407dae42a757eec35", + "head": { + "label": "un33k:staging", + "ref": "staging", + "sha": "26f96d78ddd9686c15f685d407dae42a757eec35", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 6220331, + "node_id": "MDEwOlJlcG9zaXRvcnk2MjIwMzMx", + "name": "python-slugify", + "full_name": "un33k/python-slugify", + "private": false, + "owner": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/un33k/python-slugify", + "description": "Returns unicode slugs", + "fork": false, + "url": "https://api.github.com/repos/un33k/python-slugify", + "forks_url": "https://api.github.com/repos/un33k/python-slugify/forks", + "keys_url": "https://api.github.com/repos/un33k/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/un33k/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/un33k/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/un33k/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/un33k/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/un33k/python-slugify/events", + "assignees_url": "https://api.github.com/repos/un33k/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/un33k/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/un33k/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/un33k/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/un33k/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/un33k/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/un33k/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/un33k/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/un33k/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/un33k/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/un33k/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/un33k/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/un33k/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/un33k/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/un33k/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/un33k/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/un33k/python-slugify/merges", + "archive_url": "https://api.github.com/repos/un33k/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/un33k/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/un33k/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/un33k/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/un33k/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/un33k/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/un33k/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/un33k/python-slugify/deployments", + "created_at": "2012-10-15T01:44:50Z", + "updated_at": "2026-09-05T12:52:20Z", + "pushed_at": "2026-04-27T11:17:17Z", + "git_url": "git://github.com/un33k/python-slugify.git", + "ssh_url": "git@github.com:un33k/python-slugify.git", + "clone_url": "https://github.com/un33k/python-slugify.git", + "svn_url": "https://github.com/un33k/python-slugify", + "homepage": "", + "size": 208, + "stargazers_count": 1623, + "watchers_count": 1623, + "language": "Python", + "has_issues": true, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 134, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 17, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 134, + "open_issues": 17, + "watchers": 1623, + "default_branch": "master" + } + }, + "base": { + "label": "un33k:master", + "ref": "master", + "sha": "b9db1bc87e3b19c5c63ab7a00b19685b7996de5d", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 6220331, + "node_id": "MDEwOlJlcG9zaXRvcnk2MjIwMzMx", + "name": "python-slugify", + "full_name": "un33k/python-slugify", + "private": false, + "owner": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/un33k/python-slugify", + "description": "Returns unicode slugs", + "fork": false, + "url": "https://api.github.com/repos/un33k/python-slugify", + "forks_url": "https://api.github.com/repos/un33k/python-slugify/forks", + "keys_url": "https://api.github.com/repos/un33k/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/un33k/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/un33k/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/un33k/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/un33k/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/un33k/python-slugify/events", + "assignees_url": "https://api.github.com/repos/un33k/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/un33k/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/un33k/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/un33k/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/un33k/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/un33k/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/un33k/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/un33k/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/un33k/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/un33k/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/un33k/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/un33k/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/un33k/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/un33k/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/un33k/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/un33k/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/un33k/python-slugify/merges", + "archive_url": "https://api.github.com/repos/un33k/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/un33k/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/un33k/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/un33k/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/un33k/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/un33k/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/un33k/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/un33k/python-slugify/deployments", + "created_at": "2012-10-15T01:44:50Z", + "updated_at": "2026-09-05T12:52:20Z", + "pushed_at": "2026-04-27T11:17:17Z", + "git_url": "git://github.com/un33k/python-slugify.git", + "ssh_url": "git@github.com:un33k/python-slugify.git", + "clone_url": "https://github.com/un33k/python-slugify.git", + "svn_url": "https://github.com/un33k/python-slugify", + "homepage": "", + "size": 208, + "stargazers_count": 1623, + "watchers_count": 1623, + "language": "Python", + "has_issues": true, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 134, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 17, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 134, + "open_issues": 17, + "watchers": 1623, + "default_branch": "master" + } + }, + "_links": { + "self": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/88" + }, + "html": { + "href": "https://github.com/un33k/python-slugify/pull/88" + }, + "issue": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/88" + }, + "comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/88/comments" + }, + "review_comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/88/comments" + }, + "review_comment": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}" + }, + "commits": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/88/commits" + }, + "statuses": { + "href": "https://api.github.com/repos/un33k/python-slugify/statuses/26f96d78ddd9686c15f685d407dae42a757eec35" + } + }, + "author_association": "OWNER", + "auto_merge": null, + "assignee": null, + "active_lock_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/89", + "id": 330139817, + "node_id": "MDExOlB1bGxSZXF1ZXN0MzMwMTM5ODE3", + "html_url": "https://github.com/un33k/python-slugify/pull/89", + "diff_url": "https://github.com/un33k/python-slugify/pull/89.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/89.patch", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/89", + "number": 89, + "state": "closed", + "locked": false, + "title": "README: Use SVG badge for consistency", + "user": { + "login": "hugovk", + "id": 1324225, + "node_id": "MDQ6VXNlcjEzMjQyMjU=", + "avatar_url": "https://avatars.githubusercontent.com/u/1324225?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/hugovk", + "html_url": "https://github.com/hugovk", + "followers_url": "https://api.github.com/users/hugovk/followers", + "following_url": "https://api.github.com/users/hugovk/following{/other_user}", + "gists_url": "https://api.github.com/users/hugovk/gists{/gist_id}", + "starred_url": "https://api.github.com/users/hugovk/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/hugovk/subscriptions", + "organizations_url": "https://api.github.com/users/hugovk/orgs", + "repos_url": "https://api.github.com/users/hugovk/repos", + "events_url": "https://api.github.com/users/hugovk/events{/privacy}", + "received_events_url": "https://api.github.com/users/hugovk/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "body": "And HTTPS link.\r\n\r\nThe PNG looks a bit fuzzy on Retina screens:\r\n\r\n![image](https://user-images.githubusercontent.com/1324225/67163737-2cd20880-f37b-11e9-88c8-6409e1c2f1f9.png)\r\n", + "created_at": "2019-10-20T17:50:41Z", + "updated_at": "2019-11-09T22:10:59Z", + "closed_at": "2019-11-09T21:25:43Z", + "merged_at": "2019-11-09T21:25:43Z", + "merge_commit_sha": "e785874f0ea053cea393d396b615235e7c0ad179", + "assignees": [], + "requested_reviewers": [], + "requested_teams": [], + "labels": [], + "milestone": null, + "draft": false, + "commits_url": "https://api.github.com/repos/un33k/python-slugify/pulls/89/commits", + "review_comments_url": "https://api.github.com/repos/un33k/python-slugify/pulls/89/comments", + "review_comment_url": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/89/comments", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/bda4f498e066b9408e1100e36adaf18b40040979", + "head": { + "label": "hugovk:patch-1", + "ref": "patch-1", + "sha": "bda4f498e066b9408e1100e36adaf18b40040979", + "user": { + "login": "hugovk", + "id": 1324225, + "node_id": "MDQ6VXNlcjEzMjQyMjU=", + "avatar_url": "https://avatars.githubusercontent.com/u/1324225?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/hugovk", + "html_url": "https://github.com/hugovk", + "followers_url": "https://api.github.com/users/hugovk/followers", + "following_url": "https://api.github.com/users/hugovk/following{/other_user}", + "gists_url": "https://api.github.com/users/hugovk/gists{/gist_id}", + "starred_url": "https://api.github.com/users/hugovk/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/hugovk/subscriptions", + "organizations_url": "https://api.github.com/users/hugovk/orgs", + "repos_url": "https://api.github.com/users/hugovk/repos", + "events_url": "https://api.github.com/users/hugovk/events{/privacy}", + "received_events_url": "https://api.github.com/users/hugovk/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 214861915, + "node_id": "MDEwOlJlcG9zaXRvcnkyMTQ4NjE5MTU=", + "name": "python-slugify", + "full_name": "hugovk/python-slugify", + "private": false, + "owner": { + "login": "hugovk", + "id": 1324225, + "node_id": "MDQ6VXNlcjEzMjQyMjU=", + "avatar_url": "https://avatars.githubusercontent.com/u/1324225?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/hugovk", + "html_url": "https://github.com/hugovk", + "followers_url": "https://api.github.com/users/hugovk/followers", + "following_url": "https://api.github.com/users/hugovk/following{/other_user}", + "gists_url": "https://api.github.com/users/hugovk/gists{/gist_id}", + "starred_url": "https://api.github.com/users/hugovk/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/hugovk/subscriptions", + "organizations_url": "https://api.github.com/users/hugovk/orgs", + "repos_url": "https://api.github.com/users/hugovk/repos", + "events_url": "https://api.github.com/users/hugovk/events{/privacy}", + "received_events_url": "https://api.github.com/users/hugovk/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/hugovk/python-slugify", + "description": "Returns unicode slugs", + "fork": true, + "url": "https://api.github.com/repos/hugovk/python-slugify", + "forks_url": "https://api.github.com/repos/hugovk/python-slugify/forks", + "keys_url": "https://api.github.com/repos/hugovk/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/hugovk/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/hugovk/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/hugovk/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/hugovk/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/hugovk/python-slugify/events", + "assignees_url": "https://api.github.com/repos/hugovk/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/hugovk/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/hugovk/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/hugovk/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/hugovk/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/hugovk/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/hugovk/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/hugovk/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/hugovk/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/hugovk/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/hugovk/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/hugovk/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/hugovk/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/hugovk/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/hugovk/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/hugovk/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/hugovk/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/hugovk/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/hugovk/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/hugovk/python-slugify/merges", + "archive_url": "https://api.github.com/repos/hugovk/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/hugovk/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/hugovk/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/hugovk/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/hugovk/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/hugovk/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/hugovk/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/hugovk/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/hugovk/python-slugify/deployments", + "created_at": "2019-10-13T17:20:09Z", + "updated_at": "2022-11-16T21:00:13Z", + "pushed_at": "2022-11-16T21:07:28Z", + "git_url": "git://github.com/hugovk/python-slugify.git", + "ssh_url": "git@github.com:hugovk/python-slugify.git", + "clone_url": "https://github.com/hugovk/python-slugify.git", + "svn_url": "https://github.com/hugovk/python-slugify", + "homepage": "", + "size": 177, + "stargazers_count": 0, + "watchers_count": 0, + "language": "Python", + "has_issues": false, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 0, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 0, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 0, + "open_issues": 0, + "watchers": 0, + "default_branch": "master" + } + }, + "base": { + "label": "un33k:master", + "ref": "master", + "sha": "2889262308f3fba2b50d8ff7ce404a09353a9568", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 6220331, + "node_id": "MDEwOlJlcG9zaXRvcnk2MjIwMzMx", + "name": "python-slugify", + "full_name": "un33k/python-slugify", + "private": false, + "owner": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/un33k/python-slugify", + "description": "Returns unicode slugs", + "fork": false, + "url": "https://api.github.com/repos/un33k/python-slugify", + "forks_url": "https://api.github.com/repos/un33k/python-slugify/forks", + "keys_url": "https://api.github.com/repos/un33k/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/un33k/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/un33k/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/un33k/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/un33k/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/un33k/python-slugify/events", + "assignees_url": "https://api.github.com/repos/un33k/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/un33k/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/un33k/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/un33k/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/un33k/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/un33k/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/un33k/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/un33k/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/un33k/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/un33k/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/un33k/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/un33k/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/un33k/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/un33k/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/un33k/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/un33k/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/un33k/python-slugify/merges", + "archive_url": "https://api.github.com/repos/un33k/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/un33k/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/un33k/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/un33k/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/un33k/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/un33k/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/un33k/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/un33k/python-slugify/deployments", + "created_at": "2012-10-15T01:44:50Z", + "updated_at": "2026-09-05T12:52:20Z", + "pushed_at": "2026-04-27T11:17:17Z", + "git_url": "git://github.com/un33k/python-slugify.git", + "ssh_url": "git@github.com:un33k/python-slugify.git", + "clone_url": "https://github.com/un33k/python-slugify.git", + "svn_url": "https://github.com/un33k/python-slugify", + "homepage": "", + "size": 208, + "stargazers_count": 1623, + "watchers_count": 1623, + "language": "Python", + "has_issues": true, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 134, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 17, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 134, + "open_issues": 17, + "watchers": 1623, + "default_branch": "master" + } + }, + "_links": { + "self": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/89" + }, + "html": { + "href": "https://github.com/un33k/python-slugify/pull/89" + }, + "issue": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/89" + }, + "comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/89/comments" + }, + "review_comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/89/comments" + }, + "review_comment": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}" + }, + "commits": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/89/commits" + }, + "statuses": { + "href": "https://api.github.com/repos/un33k/python-slugify/statuses/bda4f498e066b9408e1100e36adaf18b40040979" + } + }, + "author_association": "CONTRIBUTOR", + "auto_merge": null, + "assignee": null, + "active_lock_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/92", + "id": 388114885, + "node_id": "MDExOlB1bGxSZXF1ZXN0Mzg4MTE0ODg1", + "html_url": "https://github.com/un33k/python-slugify/pull/92", + "diff_url": "https://github.com/un33k/python-slugify/pull/92.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/92.patch", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/92", + "number": 92, + "state": "closed", + "locked": false, + "title": "Create command line tool that can set all parameters", + "user": { + "login": "jdevera", + "id": 73069, + "node_id": "MDQ6VXNlcjczMDY5", + "avatar_url": "https://avatars.githubusercontent.com/u/73069?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/jdevera", + "html_url": "https://github.com/jdevera", + "followers_url": "https://api.github.com/users/jdevera/followers", + "following_url": "https://api.github.com/users/jdevera/following{/other_user}", + "gists_url": "https://api.github.com/users/jdevera/gists{/gist_id}", + "starred_url": "https://api.github.com/users/jdevera/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/jdevera/subscriptions", + "organizations_url": "https://api.github.com/users/jdevera/orgs", + "repos_url": "https://api.github.com/users/jdevera/repos", + "events_url": "https://api.github.com/users/jdevera/events{/privacy}", + "received_events_url": "https://api.github.com/users/jdevera/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "body": "I was in need of a CLI tool that did what the original _entrypoint_ did but with some specific parameters different from defaults. So I decided to make it available for anybody and contribute it back.\r\n\r\nThis PR adds a `slugify` command that can take as arguments any of the parameters of the function with the same name.\r\n\r\nI've added tests that verify that different combinations of command-line arguments result in the expected parameters passed to the function. They do not re-test the functionality.", + "created_at": "2020-03-14T02:20:56Z", + "updated_at": "2020-04-09T15:42:22Z", + "closed_at": "2020-04-09T15:41:42Z", + "merged_at": "2020-04-09T15:41:42Z", + "merge_commit_sha": "d1599a799d551d6bf57b1a727af10c125fc6a257", + "assignees": [], + "requested_reviewers": [], + "requested_teams": [], + "labels": [], + "milestone": null, + "draft": false, + "commits_url": "https://api.github.com/repos/un33k/python-slugify/pulls/92/commits", + "review_comments_url": "https://api.github.com/repos/un33k/python-slugify/pulls/92/comments", + "review_comment_url": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/92/comments", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/abfd30e2067bcdfb624d4470f714c60f72d8c222", + "head": { + "label": "jdevera:full_cli", + "ref": "full_cli", + "sha": "abfd30e2067bcdfb624d4470f714c60f72d8c222", + "user": { + "login": "jdevera", + "id": 73069, + "node_id": "MDQ6VXNlcjczMDY5", + "avatar_url": "https://avatars.githubusercontent.com/u/73069?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/jdevera", + "html_url": "https://github.com/jdevera", + "followers_url": "https://api.github.com/users/jdevera/followers", + "following_url": "https://api.github.com/users/jdevera/following{/other_user}", + "gists_url": "https://api.github.com/users/jdevera/gists{/gist_id}", + "starred_url": "https://api.github.com/users/jdevera/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/jdevera/subscriptions", + "organizations_url": "https://api.github.com/users/jdevera/orgs", + "repos_url": "https://api.github.com/users/jdevera/repos", + "events_url": "https://api.github.com/users/jdevera/events{/privacy}", + "received_events_url": "https://api.github.com/users/jdevera/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": null + }, + "base": { + "label": "un33k:master", + "ref": "master", + "sha": "e785874f0ea053cea393d396b615235e7c0ad179", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 6220331, + "node_id": "MDEwOlJlcG9zaXRvcnk2MjIwMzMx", + "name": "python-slugify", + "full_name": "un33k/python-slugify", + "private": false, + "owner": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/un33k/python-slugify", + "description": "Returns unicode slugs", + "fork": false, + "url": "https://api.github.com/repos/un33k/python-slugify", + "forks_url": "https://api.github.com/repos/un33k/python-slugify/forks", + "keys_url": "https://api.github.com/repos/un33k/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/un33k/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/un33k/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/un33k/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/un33k/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/un33k/python-slugify/events", + "assignees_url": "https://api.github.com/repos/un33k/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/un33k/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/un33k/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/un33k/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/un33k/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/un33k/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/un33k/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/un33k/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/un33k/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/un33k/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/un33k/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/un33k/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/un33k/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/un33k/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/un33k/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/un33k/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/un33k/python-slugify/merges", + "archive_url": "https://api.github.com/repos/un33k/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/un33k/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/un33k/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/un33k/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/un33k/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/un33k/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/un33k/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/un33k/python-slugify/deployments", + "created_at": "2012-10-15T01:44:50Z", + "updated_at": "2026-09-05T12:52:20Z", + "pushed_at": "2026-04-27T11:17:17Z", + "git_url": "git://github.com/un33k/python-slugify.git", + "ssh_url": "git@github.com:un33k/python-slugify.git", + "clone_url": "https://github.com/un33k/python-slugify.git", + "svn_url": "https://github.com/un33k/python-slugify", + "homepage": "", + "size": 208, + "stargazers_count": 1623, + "watchers_count": 1623, + "language": "Python", + "has_issues": true, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 134, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 17, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 134, + "open_issues": 17, + "watchers": 1623, + "default_branch": "master" + } + }, + "_links": { + "self": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/92" + }, + "html": { + "href": "https://github.com/un33k/python-slugify/pull/92" + }, + "issue": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/92" + }, + "comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/92/comments" + }, + "review_comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/92/comments" + }, + "review_comment": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}" + }, + "commits": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/92/commits" + }, + "statuses": { + "href": "https://api.github.com/repos/un33k/python-slugify/statuses/abfd30e2067bcdfb624d4470f714c60f72d8c222" + } + }, + "author_association": "COLLABORATOR", + "auto_merge": null, + "assignee": null, + "active_lock_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/98", + "id": 627845984, + "node_id": "MDExOlB1bGxSZXF1ZXN0NjI3ODQ1OTg0", + "html_url": "https://github.com/un33k/python-slugify/pull/98", + "diff_url": "https://github.com/un33k/python-slugify/pull/98.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/98.patch", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/98", + "number": 98, + "state": "closed", + "locked": false, + "title": "Add a tox file to automatically run the tests and add Python 3.9", + "user": { + "login": "jon-betts", + "id": 7131143, + "node_id": "MDQ6VXNlcjcxMzExNDM=", + "avatar_url": "https://avatars.githubusercontent.com/u/7131143?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/jon-betts", + "html_url": "https://github.com/jon-betts", + "followers_url": "https://api.github.com/users/jon-betts/followers", + "following_url": "https://api.github.com/users/jon-betts/following{/other_user}", + "gists_url": "https://api.github.com/users/jon-betts/gists{/gist_id}", + "starred_url": "https://api.github.com/users/jon-betts/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/jon-betts/subscriptions", + "organizations_url": "https://api.github.com/users/jon-betts/orgs", + "repos_url": "https://api.github.com/users/jon-betts/repos", + "events_url": "https://api.github.com/users/jon-betts/events{/privacy}", + "received_events_url": "https://api.github.com/users/jon-betts/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "body": "This adds a `tox.ini` config file to allow automatic running of the tests. This also:\r\n\r\n * Adds tox environments to run formatting and coverage\r\n * Advertises the existing Python 3.8 support which was being run against Travis\r\n * Also adds Python 3.9 support\r\n\r\n## Testing notes\r\n\r\nYou can run the tests against all of the versions of Python by running:\r\n\r\n * `pip install tox`\r\n * `tox`\r\n \r\nAfter much task running you should get a summary like this:\r\n\r\n```\r\n py39: commands succeeded\r\n py38: commands succeeded\r\n py37: commands succeeded\r\n py36: commands succeeded\r\n py35: commands succeeded\r\n py27: commands succeeded\r\n pypy: commands succeeded\r\n pypy3: commands succeeded\r\n congratulations :)\r\n```\r\n \r\nYou can also run the formatting and coverage through tox with:\r\n\r\n * `tox -e format`\r\n * `tox- e coverage`\r\n \r\nI'm not sure how far / if you'd like to transit these functions to `tox` at all, so for the moment they either replicate or call out to the external functions, but it might be a nice idea to swap it around and let `tox` manage all the dependencies and tasks etc. ", + "created_at": "2021-04-30T18:03:02Z", + "updated_at": "2021-05-05T17:47:45Z", + "closed_at": "2021-04-30T19:11:54Z", + "merged_at": "2021-04-30T19:11:54Z", + "merge_commit_sha": "3cc1069d37431efd366a0894067aa4c3293dca3e", + "assignees": [], + "requested_reviewers": [], + "requested_teams": [], + "labels": [], + "milestone": null, + "draft": false, + "commits_url": "https://api.github.com/repos/un33k/python-slugify/pulls/98/commits", + "review_comments_url": "https://api.github.com/repos/un33k/python-slugify/pulls/98/comments", + "review_comment_url": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/98/comments", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/ce8361aaa916cd2fef7518c7169d874b44f7fc1e", + "head": { + "label": "jon-betts:add-tox", + "ref": "add-tox", + "sha": "ce8361aaa916cd2fef7518c7169d874b44f7fc1e", + "user": { + "login": "jon-betts", + "id": 7131143, + "node_id": "MDQ6VXNlcjcxMzExNDM=", + "avatar_url": "https://avatars.githubusercontent.com/u/7131143?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/jon-betts", + "html_url": "https://github.com/jon-betts", + "followers_url": "https://api.github.com/users/jon-betts/followers", + "following_url": "https://api.github.com/users/jon-betts/following{/other_user}", + "gists_url": "https://api.github.com/users/jon-betts/gists{/gist_id}", + "starred_url": "https://api.github.com/users/jon-betts/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/jon-betts/subscriptions", + "organizations_url": "https://api.github.com/users/jon-betts/orgs", + "repos_url": "https://api.github.com/users/jon-betts/repos", + "events_url": "https://api.github.com/users/jon-betts/events{/privacy}", + "received_events_url": "https://api.github.com/users/jon-betts/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 363190445, + "node_id": "MDEwOlJlcG9zaXRvcnkzNjMxOTA0NDU=", + "name": "python-slugify", + "full_name": "jon-betts/python-slugify", + "private": false, + "owner": { + "login": "jon-betts", + "id": 7131143, + "node_id": "MDQ6VXNlcjcxMzExNDM=", + "avatar_url": "https://avatars.githubusercontent.com/u/7131143?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/jon-betts", + "html_url": "https://github.com/jon-betts", + "followers_url": "https://api.github.com/users/jon-betts/followers", + "following_url": "https://api.github.com/users/jon-betts/following{/other_user}", + "gists_url": "https://api.github.com/users/jon-betts/gists{/gist_id}", + "starred_url": "https://api.github.com/users/jon-betts/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/jon-betts/subscriptions", + "organizations_url": "https://api.github.com/users/jon-betts/orgs", + "repos_url": "https://api.github.com/users/jon-betts/repos", + "events_url": "https://api.github.com/users/jon-betts/events{/privacy}", + "received_events_url": "https://api.github.com/users/jon-betts/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/jon-betts/python-slugify", + "description": "Returns unicode slugs", + "fork": true, + "url": "https://api.github.com/repos/jon-betts/python-slugify", + "forks_url": "https://api.github.com/repos/jon-betts/python-slugify/forks", + "keys_url": "https://api.github.com/repos/jon-betts/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/jon-betts/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/jon-betts/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/jon-betts/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/jon-betts/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/jon-betts/python-slugify/events", + "assignees_url": "https://api.github.com/repos/jon-betts/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/jon-betts/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/jon-betts/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/jon-betts/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/jon-betts/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/jon-betts/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/jon-betts/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/jon-betts/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/jon-betts/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/jon-betts/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/jon-betts/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/jon-betts/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/jon-betts/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/jon-betts/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/jon-betts/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/jon-betts/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/jon-betts/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/jon-betts/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/jon-betts/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/jon-betts/python-slugify/merges", + "archive_url": "https://api.github.com/repos/jon-betts/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/jon-betts/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/jon-betts/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/jon-betts/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/jon-betts/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/jon-betts/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/jon-betts/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/jon-betts/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/jon-betts/python-slugify/deployments", + "created_at": "2021-04-30T15:56:56Z", + "updated_at": "2021-04-30T15:56:57Z", + "pushed_at": "2021-05-05T17:47:45Z", + "git_url": "git://github.com/jon-betts/python-slugify.git", + "ssh_url": "git@github.com:jon-betts/python-slugify.git", + "clone_url": "https://github.com/jon-betts/python-slugify.git", + "svn_url": "https://github.com/jon-betts/python-slugify", + "homepage": "", + "size": 141, + "stargazers_count": 0, + "watchers_count": 0, + "language": null, + "has_issues": false, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 0, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 0, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 0, + "open_issues": 0, + "watchers": 0, + "default_branch": "master" + } + }, + "base": { + "label": "un33k:master", + "ref": "master", + "sha": "c340834bb2afb24d78151c018496f4273fb7be37", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 6220331, + "node_id": "MDEwOlJlcG9zaXRvcnk2MjIwMzMx", + "name": "python-slugify", + "full_name": "un33k/python-slugify", + "private": false, + "owner": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/un33k/python-slugify", + "description": "Returns unicode slugs", + "fork": false, + "url": "https://api.github.com/repos/un33k/python-slugify", + "forks_url": "https://api.github.com/repos/un33k/python-slugify/forks", + "keys_url": "https://api.github.com/repos/un33k/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/un33k/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/un33k/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/un33k/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/un33k/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/un33k/python-slugify/events", + "assignees_url": "https://api.github.com/repos/un33k/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/un33k/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/un33k/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/un33k/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/un33k/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/un33k/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/un33k/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/un33k/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/un33k/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/un33k/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/un33k/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/un33k/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/un33k/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/un33k/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/un33k/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/un33k/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/un33k/python-slugify/merges", + "archive_url": "https://api.github.com/repos/un33k/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/un33k/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/un33k/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/un33k/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/un33k/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/un33k/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/un33k/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/un33k/python-slugify/deployments", + "created_at": "2012-10-15T01:44:50Z", + "updated_at": "2026-09-05T12:52:20Z", + "pushed_at": "2026-04-27T11:17:17Z", + "git_url": "git://github.com/un33k/python-slugify.git", + "ssh_url": "git@github.com:un33k/python-slugify.git", + "clone_url": "https://github.com/un33k/python-slugify.git", + "svn_url": "https://github.com/un33k/python-slugify", + "homepage": "", + "size": 208, + "stargazers_count": 1623, + "watchers_count": 1623, + "language": "Python", + "has_issues": true, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 134, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 17, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 134, + "open_issues": 17, + "watchers": 1623, + "default_branch": "master" + } + }, + "_links": { + "self": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/98" + }, + "html": { + "href": "https://github.com/un33k/python-slugify/pull/98" + }, + "issue": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/98" + }, + "comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/98/comments" + }, + "review_comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/98/comments" + }, + "review_comment": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}" + }, + "commits": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/98/commits" + }, + "statuses": { + "href": "https://api.github.com/repos/un33k/python-slugify/statuses/ce8361aaa916cd2fef7518c7169d874b44f7fc1e" + } + }, + "author_association": "CONTRIBUTOR", + "auto_merge": null, + "assignee": null, + "active_lock_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/99", + "id": 628461783, + "node_id": "MDExOlB1bGxSZXF1ZXN0NjI4NDYxNzgz", + "html_url": "https://github.com/un33k/python-slugify/pull/99", + "diff_url": "https://github.com/un33k/python-slugify/pull/99.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/99.patch", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/99", + "number": 99, + "state": "closed", + "locked": false, + "title": "Update tox.ini", + "user": { + "login": "DmytroLitvinov", + "id": 16066485, + "node_id": "MDQ6VXNlcjE2MDY2NDg1", + "avatar_url": "https://avatars.githubusercontent.com/u/16066485?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/DmytroLitvinov", + "html_url": "https://github.com/DmytroLitvinov", + "followers_url": "https://api.github.com/users/DmytroLitvinov/followers", + "following_url": "https://api.github.com/users/DmytroLitvinov/following{/other_user}", + "gists_url": "https://api.github.com/users/DmytroLitvinov/gists{/gist_id}", + "starred_url": "https://api.github.com/users/DmytroLitvinov/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/DmytroLitvinov/subscriptions", + "organizations_url": "https://api.github.com/users/DmytroLitvinov/orgs", + "repos_url": "https://api.github.com/users/DmytroLitvinov/repos", + "events_url": "https://api.github.com/users/DmytroLitvinov/events{/privacy}", + "received_events_url": "https://api.github.com/users/DmytroLitvinov/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "body": "Drop completly from tox.ini file Python3.5 for testing according to [CHANGELOG](https://github.com/un33k/python-slugify/blob/master/CHANGELOG.md#500).\r\nMore information about it at [commit which should drop Python 3.5](https://github.com/un33k/python-slugify/commit/319559cb43f239ac0d3bc7b975a78059bf4a1086)", + "created_at": "2021-05-01T16:46:05Z", + "updated_at": "2021-05-05T23:11:16Z", + "closed_at": "2021-05-05T23:11:16Z", + "merged_at": "2021-05-05T23:11:16Z", + "merge_commit_sha": "f849a685cc7dacd13fb7b9d935fe5ca83b7130e9", + "assignees": [], + "requested_reviewers": [], + "requested_teams": [], + "labels": [], + "milestone": null, + "draft": false, + "commits_url": "https://api.github.com/repos/un33k/python-slugify/pulls/99/commits", + "review_comments_url": "https://api.github.com/repos/un33k/python-slugify/pulls/99/comments", + "review_comment_url": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/99/comments", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/ab3bd4ac9acab32a36b31a33409aba1f07c6503c", + "head": { + "label": "DmytroLitvinov:patch-1", + "ref": "patch-1", + "sha": "ab3bd4ac9acab32a36b31a33409aba1f07c6503c", + "user": { + "login": "DmytroLitvinov", + "id": 16066485, + "node_id": "MDQ6VXNlcjE2MDY2NDg1", + "avatar_url": "https://avatars.githubusercontent.com/u/16066485?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/DmytroLitvinov", + "html_url": "https://github.com/DmytroLitvinov", + "followers_url": "https://api.github.com/users/DmytroLitvinov/followers", + "following_url": "https://api.github.com/users/DmytroLitvinov/following{/other_user}", + "gists_url": "https://api.github.com/users/DmytroLitvinov/gists{/gist_id}", + "starred_url": "https://api.github.com/users/DmytroLitvinov/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/DmytroLitvinov/subscriptions", + "organizations_url": "https://api.github.com/users/DmytroLitvinov/orgs", + "repos_url": "https://api.github.com/users/DmytroLitvinov/repos", + "events_url": "https://api.github.com/users/DmytroLitvinov/events{/privacy}", + "received_events_url": "https://api.github.com/users/DmytroLitvinov/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": null + }, + "base": { + "label": "un33k:master", + "ref": "master", + "sha": "319559cb43f239ac0d3bc7b975a78059bf4a1086", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 6220331, + "node_id": "MDEwOlJlcG9zaXRvcnk2MjIwMzMx", + "name": "python-slugify", + "full_name": "un33k/python-slugify", + "private": false, + "owner": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/un33k/python-slugify", + "description": "Returns unicode slugs", + "fork": false, + "url": "https://api.github.com/repos/un33k/python-slugify", + "forks_url": "https://api.github.com/repos/un33k/python-slugify/forks", + "keys_url": "https://api.github.com/repos/un33k/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/un33k/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/un33k/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/un33k/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/un33k/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/un33k/python-slugify/events", + "assignees_url": "https://api.github.com/repos/un33k/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/un33k/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/un33k/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/un33k/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/un33k/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/un33k/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/un33k/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/un33k/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/un33k/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/un33k/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/un33k/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/un33k/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/un33k/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/un33k/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/un33k/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/un33k/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/un33k/python-slugify/merges", + "archive_url": "https://api.github.com/repos/un33k/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/un33k/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/un33k/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/un33k/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/un33k/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/un33k/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/un33k/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/un33k/python-slugify/deployments", + "created_at": "2012-10-15T01:44:50Z", + "updated_at": "2026-09-05T12:52:20Z", + "pushed_at": "2026-04-27T11:17:17Z", + "git_url": "git://github.com/un33k/python-slugify.git", + "ssh_url": "git@github.com:un33k/python-slugify.git", + "clone_url": "https://github.com/un33k/python-slugify.git", + "svn_url": "https://github.com/un33k/python-slugify", + "homepage": "", + "size": 208, + "stargazers_count": 1623, + "watchers_count": 1623, + "language": "Python", + "has_issues": true, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 134, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 17, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 134, + "open_issues": 17, + "watchers": 1623, + "default_branch": "master" + } + }, + "_links": { + "self": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/99" + }, + "html": { + "href": "https://github.com/un33k/python-slugify/pull/99" + }, + "issue": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/99" + }, + "comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/99/comments" + }, + "review_comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/99/comments" + }, + "review_comment": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}" + }, + "commits": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/99/commits" + }, + "statuses": { + "href": "https://api.github.com/repos/un33k/python-slugify/statuses/ab3bd4ac9acab32a36b31a33409aba1f07c6503c" + } + }, + "author_association": "CONTRIBUTOR", + "auto_merge": null, + "assignee": null, + "active_lock_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/100", + "id": 628462360, + "node_id": "MDExOlB1bGxSZXF1ZXN0NjI4NDYyMzYw", + "html_url": "https://github.com/un33k/python-slugify/pull/100", + "diff_url": "https://github.com/un33k/python-slugify/pull/100.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/100.patch", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/100", + "number": 100, + "state": "closed", + "locked": false, + "title": "Simplify python_requires", + "user": { + "login": "DmytroLitvinov", + "id": 16066485, + "node_id": "MDQ6VXNlcjE2MDY2NDg1", + "avatar_url": "https://avatars.githubusercontent.com/u/16066485?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/DmytroLitvinov", + "html_url": "https://github.com/DmytroLitvinov", + "followers_url": "https://api.github.com/users/DmytroLitvinov/followers", + "following_url": "https://api.github.com/users/DmytroLitvinov/following{/other_user}", + "gists_url": "https://api.github.com/users/DmytroLitvinov/gists{/gist_id}", + "starred_url": "https://api.github.com/users/DmytroLitvinov/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/DmytroLitvinov/subscriptions", + "organizations_url": "https://api.github.com/users/DmytroLitvinov/orgs", + "repos_url": "https://api.github.com/users/DmytroLitvinov/repos", + "events_url": "https://api.github.com/users/DmytroLitvinov/events{/privacy}", + "received_events_url": "https://api.github.com/users/DmytroLitvinov/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "body": "Related for dropping support for Python 2 and Python <3.6\r\nMore information about it at [commit which should drop Python 3.5](https://github.com/un33k/python-slugify/commit/319559cb43f239ac0d3bc7b975a78059bf4a1086)", + "created_at": "2021-05-01T16:50:22Z", + "updated_at": "2021-05-05T23:12:05Z", + "closed_at": "2021-05-05T23:12:05Z", + "merged_at": "2021-05-05T23:12:05Z", + "merge_commit_sha": "663668942eed647957b0ddb8914ca152128418b2", + "assignees": [], + "requested_reviewers": [], + "requested_teams": [], + "labels": [], + "milestone": null, + "draft": false, + "commits_url": "https://api.github.com/repos/un33k/python-slugify/pulls/100/commits", + "review_comments_url": "https://api.github.com/repos/un33k/python-slugify/pulls/100/comments", + "review_comment_url": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/100/comments", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/df352cc6fb64dcbf52f8faa6238d119f6b424e4e", + "head": { + "label": "DmytroLitvinov:patch-2", + "ref": "patch-2", + "sha": "df352cc6fb64dcbf52f8faa6238d119f6b424e4e", + "user": { + "login": "DmytroLitvinov", + "id": 16066485, + "node_id": "MDQ6VXNlcjE2MDY2NDg1", + "avatar_url": "https://avatars.githubusercontent.com/u/16066485?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/DmytroLitvinov", + "html_url": "https://github.com/DmytroLitvinov", + "followers_url": "https://api.github.com/users/DmytroLitvinov/followers", + "following_url": "https://api.github.com/users/DmytroLitvinov/following{/other_user}", + "gists_url": "https://api.github.com/users/DmytroLitvinov/gists{/gist_id}", + "starred_url": "https://api.github.com/users/DmytroLitvinov/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/DmytroLitvinov/subscriptions", + "organizations_url": "https://api.github.com/users/DmytroLitvinov/orgs", + "repos_url": "https://api.github.com/users/DmytroLitvinov/repos", + "events_url": "https://api.github.com/users/DmytroLitvinov/events{/privacy}", + "received_events_url": "https://api.github.com/users/DmytroLitvinov/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": null + }, + "base": { + "label": "un33k:master", + "ref": "master", + "sha": "319559cb43f239ac0d3bc7b975a78059bf4a1086", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 6220331, + "node_id": "MDEwOlJlcG9zaXRvcnk2MjIwMzMx", + "name": "python-slugify", + "full_name": "un33k/python-slugify", + "private": false, + "owner": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/un33k/python-slugify", + "description": "Returns unicode slugs", + "fork": false, + "url": "https://api.github.com/repos/un33k/python-slugify", + "forks_url": "https://api.github.com/repos/un33k/python-slugify/forks", + "keys_url": "https://api.github.com/repos/un33k/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/un33k/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/un33k/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/un33k/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/un33k/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/un33k/python-slugify/events", + "assignees_url": "https://api.github.com/repos/un33k/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/un33k/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/un33k/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/un33k/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/un33k/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/un33k/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/un33k/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/un33k/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/un33k/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/un33k/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/un33k/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/un33k/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/un33k/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/un33k/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/un33k/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/un33k/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/un33k/python-slugify/merges", + "archive_url": "https://api.github.com/repos/un33k/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/un33k/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/un33k/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/un33k/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/un33k/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/un33k/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/un33k/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/un33k/python-slugify/deployments", + "created_at": "2012-10-15T01:44:50Z", + "updated_at": "2026-09-05T12:52:20Z", + "pushed_at": "2026-04-27T11:17:17Z", + "git_url": "git://github.com/un33k/python-slugify.git", + "ssh_url": "git@github.com:un33k/python-slugify.git", + "clone_url": "https://github.com/un33k/python-slugify.git", + "svn_url": "https://github.com/un33k/python-slugify", + "homepage": "", + "size": 208, + "stargazers_count": 1623, + "watchers_count": 1623, + "language": "Python", + "has_issues": true, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 134, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 17, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 134, + "open_issues": 17, + "watchers": 1623, + "default_branch": "master" + } + }, + "_links": { + "self": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/100" + }, + "html": { + "href": "https://github.com/un33k/python-slugify/pull/100" + }, + "issue": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/100" + }, + "comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/100/comments" + }, + "review_comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/100/comments" + }, + "review_comment": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}" + }, + "commits": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/100/commits" + }, + "statuses": { + "href": "https://api.github.com/repos/un33k/python-slugify/statuses/df352cc6fb64dcbf52f8faa6238d119f6b424e4e" + } + }, + "author_association": "CONTRIBUTOR", + "auto_merge": null, + "assignee": null, + "active_lock_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/102", + "id": 638811611, + "node_id": "MDExOlB1bGxSZXF1ZXN0NjM4ODExNjEx", + "html_url": "https://github.com/un33k/python-slugify/pull/102", + "diff_url": "https://github.com/un33k/python-slugify/pull/102.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/102.patch", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/102", + "number": 102, + "state": "closed", + "locked": false, + "title": "Add better typing for slugify.slugify", + "user": { + "login": "fahhem", + "id": 306100, + "node_id": "MDQ6VXNlcjMwNjEwMA==", + "avatar_url": "https://avatars.githubusercontent.com/u/306100?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/fahhem", + "html_url": "https://github.com/fahhem", + "followers_url": "https://api.github.com/users/fahhem/followers", + "following_url": "https://api.github.com/users/fahhem/following{/other_user}", + "gists_url": "https://api.github.com/users/fahhem/gists{/gist_id}", + "starred_url": "https://api.github.com/users/fahhem/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/fahhem/subscriptions", + "organizations_url": "https://api.github.com/users/fahhem/orgs", + "repos_url": "https://api.github.com/users/fahhem/repos", + "events_url": "https://api.github.com/users/fahhem/events{/privacy}", + "received_events_url": "https://api.github.com/users/fahhem/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "body": "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]]`", + "created_at": "2021-05-11T00:44:17Z", + "updated_at": "2021-06-04T07:04:12Z", + "closed_at": "2021-05-12T17:25:01Z", + "merged_at": "2021-05-12T17:25:01Z", + "merge_commit_sha": "a90d96778a004a9f2fdc232debcd72fdb5bbf085", + "assignees": [], + "requested_reviewers": [], + "requested_teams": [], + "labels": [], + "milestone": null, + "draft": false, + "commits_url": "https://api.github.com/repos/un33k/python-slugify/pulls/102/commits", + "review_comments_url": "https://api.github.com/repos/un33k/python-slugify/pulls/102/comments", + "review_comment_url": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/102/comments", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/b9ee8754c31736f8ad5db975497f86757890fc86", + "head": { + "label": "fahhem:patch-1", + "ref": "patch-1", + "sha": "b9ee8754c31736f8ad5db975497f86757890fc86", + "user": { + "login": "fahhem", + "id": 306100, + "node_id": "MDQ6VXNlcjMwNjEwMA==", + "avatar_url": "https://avatars.githubusercontent.com/u/306100?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/fahhem", + "html_url": "https://github.com/fahhem", + "followers_url": "https://api.github.com/users/fahhem/followers", + "following_url": "https://api.github.com/users/fahhem/following{/other_user}", + "gists_url": "https://api.github.com/users/fahhem/gists{/gist_id}", + "starred_url": "https://api.github.com/users/fahhem/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/fahhem/subscriptions", + "organizations_url": "https://api.github.com/users/fahhem/orgs", + "repos_url": "https://api.github.com/users/fahhem/repos", + "events_url": "https://api.github.com/users/fahhem/events{/privacy}", + "received_events_url": "https://api.github.com/users/fahhem/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 366212992, + "node_id": "MDEwOlJlcG9zaXRvcnkzNjYyMTI5OTI=", + "name": "python-slugify", + "full_name": "fahhem/python-slugify", + "private": false, + "owner": { + "login": "fahhem", + "id": 306100, + "node_id": "MDQ6VXNlcjMwNjEwMA==", + "avatar_url": "https://avatars.githubusercontent.com/u/306100?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/fahhem", + "html_url": "https://github.com/fahhem", + "followers_url": "https://api.github.com/users/fahhem/followers", + "following_url": "https://api.github.com/users/fahhem/following{/other_user}", + "gists_url": "https://api.github.com/users/fahhem/gists{/gist_id}", + "starred_url": "https://api.github.com/users/fahhem/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/fahhem/subscriptions", + "organizations_url": "https://api.github.com/users/fahhem/orgs", + "repos_url": "https://api.github.com/users/fahhem/repos", + "events_url": "https://api.github.com/users/fahhem/events{/privacy}", + "received_events_url": "https://api.github.com/users/fahhem/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/fahhem/python-slugify", + "description": "Returns unicode slugs", + "fork": true, + "url": "https://api.github.com/repos/fahhem/python-slugify", + "forks_url": "https://api.github.com/repos/fahhem/python-slugify/forks", + "keys_url": "https://api.github.com/repos/fahhem/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/fahhem/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/fahhem/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/fahhem/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/fahhem/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/fahhem/python-slugify/events", + "assignees_url": "https://api.github.com/repos/fahhem/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/fahhem/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/fahhem/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/fahhem/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/fahhem/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/fahhem/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/fahhem/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/fahhem/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/fahhem/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/fahhem/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/fahhem/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/fahhem/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/fahhem/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/fahhem/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/fahhem/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/fahhem/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/fahhem/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/fahhem/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/fahhem/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/fahhem/python-slugify/merges", + "archive_url": "https://api.github.com/repos/fahhem/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/fahhem/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/fahhem/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/fahhem/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/fahhem/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/fahhem/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/fahhem/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/fahhem/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/fahhem/python-slugify/deployments", + "created_at": "2021-05-11T00:41:32Z", + "updated_at": "2021-05-11T00:41:33Z", + "pushed_at": "2021-06-04T07:04:12Z", + "git_url": "git://github.com/fahhem/python-slugify.git", + "ssh_url": "git@github.com:fahhem/python-slugify.git", + "clone_url": "https://github.com/fahhem/python-slugify.git", + "svn_url": "https://github.com/fahhem/python-slugify", + "homepage": "", + "size": 151, + "stargazers_count": 0, + "watchers_count": 0, + "language": null, + "has_issues": false, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 0, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 0, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 0, + "open_issues": 0, + "watchers": 0, + "default_branch": "master" + } + }, + "base": { + "label": "un33k:master", + "ref": "master", + "sha": "937779c77420f4acb8acd775bc2c35ed94f1393d", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 6220331, + "node_id": "MDEwOlJlcG9zaXRvcnk2MjIwMzMx", + "name": "python-slugify", + "full_name": "un33k/python-slugify", + "private": false, + "owner": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/un33k/python-slugify", + "description": "Returns unicode slugs", + "fork": false, + "url": "https://api.github.com/repos/un33k/python-slugify", + "forks_url": "https://api.github.com/repos/un33k/python-slugify/forks", + "keys_url": "https://api.github.com/repos/un33k/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/un33k/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/un33k/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/un33k/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/un33k/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/un33k/python-slugify/events", + "assignees_url": "https://api.github.com/repos/un33k/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/un33k/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/un33k/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/un33k/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/un33k/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/un33k/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/un33k/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/un33k/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/un33k/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/un33k/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/un33k/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/un33k/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/un33k/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/un33k/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/un33k/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/un33k/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/un33k/python-slugify/merges", + "archive_url": "https://api.github.com/repos/un33k/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/un33k/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/un33k/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/un33k/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/un33k/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/un33k/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/un33k/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/un33k/python-slugify/deployments", + "created_at": "2012-10-15T01:44:50Z", + "updated_at": "2026-09-05T12:52:20Z", + "pushed_at": "2026-04-27T11:17:17Z", + "git_url": "git://github.com/un33k/python-slugify.git", + "ssh_url": "git@github.com:un33k/python-slugify.git", + "clone_url": "https://github.com/un33k/python-slugify.git", + "svn_url": "https://github.com/un33k/python-slugify", + "homepage": "", + "size": 208, + "stargazers_count": 1623, + "watchers_count": 1623, + "language": "Python", + "has_issues": true, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 134, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 17, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 134, + "open_issues": 17, + "watchers": 1623, + "default_branch": "master" + } + }, + "_links": { + "self": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/102" + }, + "html": { + "href": "https://github.com/un33k/python-slugify/pull/102" + }, + "issue": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/102" + }, + "comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/102/comments" + }, + "review_comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/102/comments" + }, + "review_comment": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}" + }, + "commits": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/102/commits" + }, + "statuses": { + "href": "https://api.github.com/repos/un33k/python-slugify/statuses/b9ee8754c31736f8ad5db975497f86757890fc86" + } + }, + "author_association": "CONTRIBUTOR", + "auto_merge": null, + "assignee": null, + "active_lock_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/104", + "id": 652662099, + "node_id": "MDExOlB1bGxSZXF1ZXN0NjUyNjYyMDk5", + "html_url": "https://github.com/un33k/python-slugify/pull/104", + "diff_url": "https://github.com/un33k/python-slugify/pull/104.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/104.patch", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/104", + "number": 104, + "state": "closed", + "locked": true, + "title": "Clarify `regex_pattern` docs.", + "user": { + "login": "yyyyyyyan", + "id": 24644216, + "node_id": "MDQ6VXNlcjI0NjQ0MjE2", + "avatar_url": "https://avatars.githubusercontent.com/u/24644216?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/yyyyyyyan", + "html_url": "https://github.com/yyyyyyyan", + "followers_url": "https://api.github.com/users/yyyyyyyan/followers", + "following_url": "https://api.github.com/users/yyyyyyyan/following{/other_user}", + "gists_url": "https://api.github.com/users/yyyyyyyan/gists{/gist_id}", + "starred_url": "https://api.github.com/users/yyyyyyyan/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/yyyyyyyan/subscriptions", + "organizations_url": "https://api.github.com/users/yyyyyyyan/orgs", + "repos_url": "https://api.github.com/users/yyyyyyyan/repos", + "events_url": "https://api.github.com/users/yyyyyyyan/events{/privacy}", + "received_events_url": "https://api.github.com/users/yyyyyyyan/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "body": "The description of `regex_pattern` parameter is the opposite of how the parameter actually works.\r\nThe docs say the regex is for allowed characters, but it's for disallowed characters instead.\r\n\r\nThis PR simply changes from \"allowed characters\" to \"disallowed characters\" in order to clarify the use of this parameter.", + "created_at": "2021-05-25T18:11:56Z", + "updated_at": "2021-05-26T15:41:00Z", + "closed_at": "2021-05-25T18:48:18Z", + "merged_at": null, + "merge_commit_sha": "df263b627f1c600d243e6d18699f6b4efdfaf85c", + "assignees": [], + "requested_reviewers": [], + "requested_teams": [], + "labels": [], + "milestone": null, + "draft": false, + "commits_url": "https://api.github.com/repos/un33k/python-slugify/pulls/104/commits", + "review_comments_url": "https://api.github.com/repos/un33k/python-slugify/pulls/104/comments", + "review_comment_url": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/104/comments", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/6c27fd835cf7a34b6be79d4a8a3e6d0ec154829a", + "head": { + "label": "yyyyyyyan:clarify-regex-docs", + "ref": "clarify-regex-docs", + "sha": "6c27fd835cf7a34b6be79d4a8a3e6d0ec154829a", + "user": { + "login": "yyyyyyyan", + "id": 24644216, + "node_id": "MDQ6VXNlcjI0NjQ0MjE2", + "avatar_url": "https://avatars.githubusercontent.com/u/24644216?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/yyyyyyyan", + "html_url": "https://github.com/yyyyyyyan", + "followers_url": "https://api.github.com/users/yyyyyyyan/followers", + "following_url": "https://api.github.com/users/yyyyyyyan/following{/other_user}", + "gists_url": "https://api.github.com/users/yyyyyyyan/gists{/gist_id}", + "starred_url": "https://api.github.com/users/yyyyyyyan/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/yyyyyyyan/subscriptions", + "organizations_url": "https://api.github.com/users/yyyyyyyan/orgs", + "repos_url": "https://api.github.com/users/yyyyyyyan/repos", + "events_url": "https://api.github.com/users/yyyyyyyan/events{/privacy}", + "received_events_url": "https://api.github.com/users/yyyyyyyan/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 370785138, + "node_id": "MDEwOlJlcG9zaXRvcnkzNzA3ODUxMzg=", + "name": "python-slugify", + "full_name": "yyyyyyyan/python-slugify", + "private": false, + "owner": { + "login": "yyyyyyyan", + "id": 24644216, + "node_id": "MDQ6VXNlcjI0NjQ0MjE2", + "avatar_url": "https://avatars.githubusercontent.com/u/24644216?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/yyyyyyyan", + "html_url": "https://github.com/yyyyyyyan", + "followers_url": "https://api.github.com/users/yyyyyyyan/followers", + "following_url": "https://api.github.com/users/yyyyyyyan/following{/other_user}", + "gists_url": "https://api.github.com/users/yyyyyyyan/gists{/gist_id}", + "starred_url": "https://api.github.com/users/yyyyyyyan/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/yyyyyyyan/subscriptions", + "organizations_url": "https://api.github.com/users/yyyyyyyan/orgs", + "repos_url": "https://api.github.com/users/yyyyyyyan/repos", + "events_url": "https://api.github.com/users/yyyyyyyan/events{/privacy}", + "received_events_url": "https://api.github.com/users/yyyyyyyan/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/yyyyyyyan/python-slugify", + "description": "Returns unicode slugs", + "fork": true, + "url": "https://api.github.com/repos/yyyyyyyan/python-slugify", + "forks_url": "https://api.github.com/repos/yyyyyyyan/python-slugify/forks", + "keys_url": "https://api.github.com/repos/yyyyyyyan/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/yyyyyyyan/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/yyyyyyyan/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/yyyyyyyan/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/yyyyyyyan/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/yyyyyyyan/python-slugify/events", + "assignees_url": "https://api.github.com/repos/yyyyyyyan/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/yyyyyyyan/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/yyyyyyyan/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/yyyyyyyan/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/yyyyyyyan/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/yyyyyyyan/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/yyyyyyyan/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/yyyyyyyan/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/yyyyyyyan/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/yyyyyyyan/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/yyyyyyyan/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/yyyyyyyan/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/yyyyyyyan/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/yyyyyyyan/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/yyyyyyyan/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/yyyyyyyan/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/yyyyyyyan/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/yyyyyyyan/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/yyyyyyyan/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/yyyyyyyan/python-slugify/merges", + "archive_url": "https://api.github.com/repos/yyyyyyyan/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/yyyyyyyan/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/yyyyyyyan/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/yyyyyyyan/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/yyyyyyyan/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/yyyyyyyan/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/yyyyyyyan/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/yyyyyyyan/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/yyyyyyyan/python-slugify/deployments", + "created_at": "2021-05-25T18:04:08Z", + "updated_at": "2021-05-25T18:04:09Z", + "pushed_at": "2021-05-25T18:06:25Z", + "git_url": "git://github.com/yyyyyyyan/python-slugify.git", + "ssh_url": "git@github.com:yyyyyyyan/python-slugify.git", + "clone_url": "https://github.com/yyyyyyyan/python-slugify.git", + "svn_url": "https://github.com/yyyyyyyan/python-slugify", + "homepage": "", + "size": 158, + "stargazers_count": 0, + "watchers_count": 0, + "language": null, + "has_issues": false, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 0, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 0, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 0, + "open_issues": 0, + "watchers": 0, + "default_branch": "master" + } + }, + "base": { + "label": "un33k:staging", + "ref": "staging", + "sha": "937779c77420f4acb8acd775bc2c35ed94f1393d", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 6220331, + "node_id": "MDEwOlJlcG9zaXRvcnk2MjIwMzMx", + "name": "python-slugify", + "full_name": "un33k/python-slugify", + "private": false, + "owner": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/un33k/python-slugify", + "description": "Returns unicode slugs", + "fork": false, + "url": "https://api.github.com/repos/un33k/python-slugify", + "forks_url": "https://api.github.com/repos/un33k/python-slugify/forks", + "keys_url": "https://api.github.com/repos/un33k/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/un33k/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/un33k/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/un33k/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/un33k/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/un33k/python-slugify/events", + "assignees_url": "https://api.github.com/repos/un33k/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/un33k/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/un33k/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/un33k/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/un33k/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/un33k/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/un33k/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/un33k/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/un33k/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/un33k/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/un33k/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/un33k/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/un33k/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/un33k/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/un33k/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/un33k/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/un33k/python-slugify/merges", + "archive_url": "https://api.github.com/repos/un33k/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/un33k/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/un33k/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/un33k/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/un33k/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/un33k/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/un33k/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/un33k/python-slugify/deployments", + "created_at": "2012-10-15T01:44:50Z", + "updated_at": "2026-09-05T12:52:20Z", + "pushed_at": "2026-04-27T11:17:17Z", + "git_url": "git://github.com/un33k/python-slugify.git", + "ssh_url": "git@github.com:un33k/python-slugify.git", + "clone_url": "https://github.com/un33k/python-slugify.git", + "svn_url": "https://github.com/un33k/python-slugify", + "homepage": "", + "size": 208, + "stargazers_count": 1623, + "watchers_count": 1623, + "language": "Python", + "has_issues": true, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 134, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 17, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 134, + "open_issues": 17, + "watchers": 1623, + "default_branch": "master" + } + }, + "_links": { + "self": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/104" + }, + "html": { + "href": "https://github.com/un33k/python-slugify/pull/104" + }, + "issue": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/104" + }, + "comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/104/comments" + }, + "review_comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/104/comments" + }, + "review_comment": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}" + }, + "commits": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/104/commits" + }, + "statuses": { + "href": "https://api.github.com/repos/un33k/python-slugify/statuses/6c27fd835cf7a34b6be79d4a8a3e6d0ec154829a" + } + }, + "author_association": "NONE", + "auto_merge": null, + "assignee": null, + "active_lock_reason": "too heated" + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/109", + "id": 854256990, + "node_id": "PR_kwDOAF7qK84y6u1e", + "html_url": "https://github.com/un33k/python-slugify/pull/109", + "diff_url": "https://github.com/un33k/python-slugify/pull/109.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/109.patch", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/109", + "number": 109, + "state": "closed", + "locked": false, + "title": "Fix misleading pattern name and documentation", + "user": { + "login": "mrezzamoradi", + "id": 6003890, + "node_id": "MDQ6VXNlcjYwMDM4OTA=", + "avatar_url": "https://avatars.githubusercontent.com/u/6003890?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/mrezzamoradi", + "html_url": "https://github.com/mrezzamoradi", + "followers_url": "https://api.github.com/users/mrezzamoradi/followers", + "following_url": "https://api.github.com/users/mrezzamoradi/following{/other_user}", + "gists_url": "https://api.github.com/users/mrezzamoradi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/mrezzamoradi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/mrezzamoradi/subscriptions", + "organizations_url": "https://api.github.com/users/mrezzamoradi/orgs", + "repos_url": "https://api.github.com/users/mrezzamoradi/repos", + "events_url": "https://api.github.com/users/mrezzamoradi/events{/privacy}", + "received_events_url": "https://api.github.com/users/mrezzamoradi/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "body": "The `ALLOWED_CHARS_PATTERN` and `regex_pattern` are actually disallowed characters in the final slug.\r\n Also since the code lowers the case in line 141, there's no need for a separate regex pattern for lowercase strings", + "created_at": "2022-02-16T10:54:18Z", + "updated_at": "2022-02-16T22:52:54Z", + "closed_at": "2022-02-16T22:36:00Z", + "merged_at": "2022-02-16T22:36:00Z", + "merge_commit_sha": "dce218991ddf16d916501fb6f72980f9ca0c892a", + "assignees": [], + "requested_reviewers": [], + "requested_teams": [], + "labels": [], + "milestone": null, + "draft": false, + "commits_url": "https://api.github.com/repos/un33k/python-slugify/pulls/109/commits", + "review_comments_url": "https://api.github.com/repos/un33k/python-slugify/pulls/109/comments", + "review_comment_url": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/109/comments", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/96400691e1b4301bca8b3563d485841cfcba4060", + "head": { + "label": "mrezzamoradi:master", + "ref": "master", + "sha": "96400691e1b4301bca8b3563d485841cfcba4060", + "user": { + "login": "mrezzamoradi", + "id": 6003890, + "node_id": "MDQ6VXNlcjYwMDM4OTA=", + "avatar_url": "https://avatars.githubusercontent.com/u/6003890?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/mrezzamoradi", + "html_url": "https://github.com/mrezzamoradi", + "followers_url": "https://api.github.com/users/mrezzamoradi/followers", + "following_url": "https://api.github.com/users/mrezzamoradi/following{/other_user}", + "gists_url": "https://api.github.com/users/mrezzamoradi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/mrezzamoradi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/mrezzamoradi/subscriptions", + "organizations_url": "https://api.github.com/users/mrezzamoradi/orgs", + "repos_url": "https://api.github.com/users/mrezzamoradi/repos", + "events_url": "https://api.github.com/users/mrezzamoradi/events{/privacy}", + "received_events_url": "https://api.github.com/users/mrezzamoradi/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": null + }, + "base": { + "label": "un33k:staging", + "ref": "staging", + "sha": "b2aaccd0b0e8ac4780ff29221d7d0fe915aa3f0d", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 6220331, + "node_id": "MDEwOlJlcG9zaXRvcnk2MjIwMzMx", + "name": "python-slugify", + "full_name": "un33k/python-slugify", + "private": false, + "owner": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/un33k/python-slugify", + "description": "Returns unicode slugs", + "fork": false, + "url": "https://api.github.com/repos/un33k/python-slugify", + "forks_url": "https://api.github.com/repos/un33k/python-slugify/forks", + "keys_url": "https://api.github.com/repos/un33k/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/un33k/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/un33k/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/un33k/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/un33k/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/un33k/python-slugify/events", + "assignees_url": "https://api.github.com/repos/un33k/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/un33k/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/un33k/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/un33k/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/un33k/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/un33k/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/un33k/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/un33k/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/un33k/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/un33k/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/un33k/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/un33k/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/un33k/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/un33k/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/un33k/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/un33k/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/un33k/python-slugify/merges", + "archive_url": "https://api.github.com/repos/un33k/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/un33k/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/un33k/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/un33k/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/un33k/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/un33k/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/un33k/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/un33k/python-slugify/deployments", + "created_at": "2012-10-15T01:44:50Z", + "updated_at": "2026-09-05T12:52:20Z", + "pushed_at": "2026-04-27T11:17:17Z", + "git_url": "git://github.com/un33k/python-slugify.git", + "ssh_url": "git@github.com:un33k/python-slugify.git", + "clone_url": "https://github.com/un33k/python-slugify.git", + "svn_url": "https://github.com/un33k/python-slugify", + "homepage": "", + "size": 208, + "stargazers_count": 1623, + "watchers_count": 1623, + "language": "Python", + "has_issues": true, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 134, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 17, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 134, + "open_issues": 17, + "watchers": 1623, + "default_branch": "master" + } + }, + "_links": { + "self": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/109" + }, + "html": { + "href": "https://github.com/un33k/python-slugify/pull/109" + }, + "issue": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/109" + }, + "comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/109/comments" + }, + "review_comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/109/comments" + }, + "review_comment": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}" + }, + "commits": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/109/commits" + }, + "statuses": { + "href": "https://api.github.com/repos/un33k/python-slugify/statuses/96400691e1b4301bca8b3563d485841cfcba4060" + } + }, + "author_association": "COLLABORATOR", + "auto_merge": null, + "assignee": null, + "active_lock_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/111", + "id": 860360943, + "node_id": "PR_kwDOAF7qK84zSBDv", + "html_url": "https://github.com/un33k/python-slugify/pull/111", + "diff_url": "https://github.com/un33k/python-slugify/pull/111.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/111.patch", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/111", + "number": 111, + "state": "closed", + "locked": false, + "title": "allow unicode", + "user": { + "login": "mrezzamoradi", + "id": 6003890, + "node_id": "MDQ6VXNlcjYwMDM4OTA=", + "avatar_url": "https://avatars.githubusercontent.com/u/6003890?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/mrezzamoradi", + "html_url": "https://github.com/mrezzamoradi", + "followers_url": "https://api.github.com/users/mrezzamoradi/followers", + "following_url": "https://api.github.com/users/mrezzamoradi/following{/other_user}", + "gists_url": "https://api.github.com/users/mrezzamoradi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/mrezzamoradi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/mrezzamoradi/subscriptions", + "organizations_url": "https://api.github.com/users/mrezzamoradi/orgs", + "repos_url": "https://api.github.com/users/mrezzamoradi/repos", + "events_url": "https://api.github.com/users/mrezzamoradi/events{/privacy}", + "received_events_url": "https://api.github.com/users/mrezzamoradi/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "body": "This non-intrusive change gives users the choice to allow Unicode characters in the final slug. I understand it might not be aligned with the initial goal of this project (URL path slugification), still I think it has valid use cases like when applications use slugified strings as filenames, e.g. exporting a google doc to PDF. The filename can contain Unicode. Some popular projects like Djange have [this feature](https://docs.djangoproject.com/en/4.0/ref/utils/#django.utils.text.slugify)\r\n\r\nChanges:\r\n- Added `allow_unicode` parameter with default to False.\r\n- Added `DISALLOWED_UNICODE_CHARS_PATTERN` regex pattern to filter out non-words.\r\n- Duplicated all previous tests and let them run with `allow_unicode` flag on to make sure the behaviour is unchanged.\r\n- Added/updated tests to test unicode strings.\r\n- Make sure emojis are not allowed\r\n\r\nIf you approve this proposal, then I or you can update the README file accordingly. We then need to modify the Wiki a bit as well.\r\n\r\nsolves https://github.com/un33k/python-slugify/issues/78\r\nsolves https://github.com/un33k/python-slugify/issues/24", + "created_at": "2022-02-22T12:11:57Z", + "updated_at": "2022-02-28T08:36:29Z", + "closed_at": "2022-02-22T19:05:08Z", + "merged_at": "2022-02-22T19:05:08Z", + "merge_commit_sha": "d968ca7419e6f4e40685888c56d03bea50fd39d7", + "assignees": [], + "requested_reviewers": [], + "requested_teams": [], + "labels": [], + "milestone": null, + "draft": false, + "commits_url": "https://api.github.com/repos/un33k/python-slugify/pulls/111/commits", + "review_comments_url": "https://api.github.com/repos/un33k/python-slugify/pulls/111/comments", + "review_comment_url": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/111/comments", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/35d809acc2510c2490d2667b739bd3e20b3ebafd", + "head": { + "label": "un33k:feature/add-a-falg-to-support-unicode", + "ref": "feature/add-a-falg-to-support-unicode", + "sha": "35d809acc2510c2490d2667b739bd3e20b3ebafd", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 6220331, + "node_id": "MDEwOlJlcG9zaXRvcnk2MjIwMzMx", + "name": "python-slugify", + "full_name": "un33k/python-slugify", + "private": false, + "owner": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/un33k/python-slugify", + "description": "Returns unicode slugs", + "fork": false, + "url": "https://api.github.com/repos/un33k/python-slugify", + "forks_url": "https://api.github.com/repos/un33k/python-slugify/forks", + "keys_url": "https://api.github.com/repos/un33k/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/un33k/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/un33k/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/un33k/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/un33k/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/un33k/python-slugify/events", + "assignees_url": "https://api.github.com/repos/un33k/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/un33k/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/un33k/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/un33k/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/un33k/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/un33k/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/un33k/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/un33k/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/un33k/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/un33k/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/un33k/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/un33k/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/un33k/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/un33k/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/un33k/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/un33k/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/un33k/python-slugify/merges", + "archive_url": "https://api.github.com/repos/un33k/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/un33k/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/un33k/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/un33k/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/un33k/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/un33k/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/un33k/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/un33k/python-slugify/deployments", + "created_at": "2012-10-15T01:44:50Z", + "updated_at": "2026-09-05T12:52:20Z", + "pushed_at": "2026-04-27T11:17:17Z", + "git_url": "git://github.com/un33k/python-slugify.git", + "ssh_url": "git@github.com:un33k/python-slugify.git", + "clone_url": "https://github.com/un33k/python-slugify.git", + "svn_url": "https://github.com/un33k/python-slugify", + "homepage": "", + "size": 208, + "stargazers_count": 1623, + "watchers_count": 1623, + "language": "Python", + "has_issues": true, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 134, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 17, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 134, + "open_issues": 17, + "watchers": 1623, + "default_branch": "master" + } + }, + "base": { + "label": "un33k:staging", + "ref": "staging", + "sha": "07b87da81140cf51e4a585e43d4fe9113f4c2ad5", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 6220331, + "node_id": "MDEwOlJlcG9zaXRvcnk2MjIwMzMx", + "name": "python-slugify", + "full_name": "un33k/python-slugify", + "private": false, + "owner": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/un33k/python-slugify", + "description": "Returns unicode slugs", + "fork": false, + "url": "https://api.github.com/repos/un33k/python-slugify", + "forks_url": "https://api.github.com/repos/un33k/python-slugify/forks", + "keys_url": "https://api.github.com/repos/un33k/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/un33k/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/un33k/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/un33k/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/un33k/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/un33k/python-slugify/events", + "assignees_url": "https://api.github.com/repos/un33k/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/un33k/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/un33k/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/un33k/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/un33k/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/un33k/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/un33k/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/un33k/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/un33k/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/un33k/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/un33k/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/un33k/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/un33k/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/un33k/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/un33k/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/un33k/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/un33k/python-slugify/merges", + "archive_url": "https://api.github.com/repos/un33k/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/un33k/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/un33k/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/un33k/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/un33k/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/un33k/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/un33k/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/un33k/python-slugify/deployments", + "created_at": "2012-10-15T01:44:50Z", + "updated_at": "2026-09-05T12:52:20Z", + "pushed_at": "2026-04-27T11:17:17Z", + "git_url": "git://github.com/un33k/python-slugify.git", + "ssh_url": "git@github.com:un33k/python-slugify.git", + "clone_url": "https://github.com/un33k/python-slugify.git", + "svn_url": "https://github.com/un33k/python-slugify", + "homepage": "", + "size": 208, + "stargazers_count": 1623, + "watchers_count": 1623, + "language": "Python", + "has_issues": true, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 134, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 17, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 134, + "open_issues": 17, + "watchers": 1623, + "default_branch": "master" + } + }, + "_links": { + "self": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/111" + }, + "html": { + "href": "https://github.com/un33k/python-slugify/pull/111" + }, + "issue": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/111" + }, + "comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/111/comments" + }, + "review_comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/111/comments" + }, + "review_comment": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}" + }, + "commits": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/111/commits" + }, + "statuses": { + "href": "https://api.github.com/repos/un33k/python-slugify/statuses/35d809acc2510c2490d2667b739bd3e20b3ebafd" + } + }, + "author_association": "COLLABORATOR", + "auto_merge": null, + "assignee": null, + "active_lock_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/113", + "id": 863285238, + "node_id": "PR_kwDOAF7qK84zdK_2", + "html_url": "https://github.com/un33k/python-slugify/pull/113", + "diff_url": "https://github.com/un33k/python-slugify/pull/113.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/113.patch", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/113", + "number": 113, + "state": "closed", + "locked": false, + "title": "remove type hinting", + "user": { + "login": "mrezzamoradi", + "id": 6003890, + "node_id": "MDQ6VXNlcjYwMDM4OTA=", + "avatar_url": "https://avatars.githubusercontent.com/u/6003890?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/mrezzamoradi", + "html_url": "https://github.com/mrezzamoradi", + "followers_url": "https://api.github.com/users/mrezzamoradi/followers", + "following_url": "https://api.github.com/users/mrezzamoradi/following{/other_user}", + "gists_url": "https://api.github.com/users/mrezzamoradi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/mrezzamoradi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/mrezzamoradi/subscriptions", + "organizations_url": "https://api.github.com/users/mrezzamoradi/orgs", + "repos_url": "https://api.github.com/users/mrezzamoradi/repos", + "events_url": "https://api.github.com/users/mrezzamoradi/events{/privacy}", + "received_events_url": "https://api.github.com/users/mrezzamoradi/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "body": "Temporarily remove type hinting.\r\nThis will solve https://github.com/un33k/python-slugify/issues/110 and https://github.com/un33k/python-slugify/issues/112", + "created_at": "2022-02-25T10:05:39Z", + "updated_at": "2022-02-28T08:36:26Z", + "closed_at": "2022-02-26T18:55:55Z", + "merged_at": "2022-02-26T18:55:55Z", + "merge_commit_sha": "0bf1b8761f695e5ae14d9c439a05b151b4a1093d", + "assignees": [], + "requested_reviewers": [], + "requested_teams": [], + "labels": [], + "milestone": null, + "draft": false, + "commits_url": "https://api.github.com/repos/un33k/python-slugify/pulls/113/commits", + "review_comments_url": "https://api.github.com/repos/un33k/python-slugify/pulls/113/comments", + "review_comment_url": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/113/comments", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/43e2549afedc586c0730d63eeadc2410d9e945f5", + "head": { + "label": "un33k:fix/remove-type-hinting", + "ref": "fix/remove-type-hinting", + "sha": "43e2549afedc586c0730d63eeadc2410d9e945f5", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 6220331, + "node_id": "MDEwOlJlcG9zaXRvcnk2MjIwMzMx", + "name": "python-slugify", + "full_name": "un33k/python-slugify", + "private": false, + "owner": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/un33k/python-slugify", + "description": "Returns unicode slugs", + "fork": false, + "url": "https://api.github.com/repos/un33k/python-slugify", + "forks_url": "https://api.github.com/repos/un33k/python-slugify/forks", + "keys_url": "https://api.github.com/repos/un33k/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/un33k/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/un33k/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/un33k/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/un33k/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/un33k/python-slugify/events", + "assignees_url": "https://api.github.com/repos/un33k/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/un33k/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/un33k/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/un33k/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/un33k/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/un33k/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/un33k/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/un33k/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/un33k/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/un33k/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/un33k/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/un33k/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/un33k/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/un33k/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/un33k/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/un33k/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/un33k/python-slugify/merges", + "archive_url": "https://api.github.com/repos/un33k/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/un33k/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/un33k/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/un33k/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/un33k/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/un33k/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/un33k/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/un33k/python-slugify/deployments", + "created_at": "2012-10-15T01:44:50Z", + "updated_at": "2026-09-05T12:52:20Z", + "pushed_at": "2026-04-27T11:17:17Z", + "git_url": "git://github.com/un33k/python-slugify.git", + "ssh_url": "git@github.com:un33k/python-slugify.git", + "clone_url": "https://github.com/un33k/python-slugify.git", + "svn_url": "https://github.com/un33k/python-slugify", + "homepage": "", + "size": 208, + "stargazers_count": 1623, + "watchers_count": 1623, + "language": "Python", + "has_issues": true, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 134, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 17, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 134, + "open_issues": 17, + "watchers": 1623, + "default_branch": "master" + } + }, + "base": { + "label": "un33k:staging", + "ref": "staging", + "sha": "d968ca7419e6f4e40685888c56d03bea50fd39d7", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 6220331, + "node_id": "MDEwOlJlcG9zaXRvcnk2MjIwMzMx", + "name": "python-slugify", + "full_name": "un33k/python-slugify", + "private": false, + "owner": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/un33k/python-slugify", + "description": "Returns unicode slugs", + "fork": false, + "url": "https://api.github.com/repos/un33k/python-slugify", + "forks_url": "https://api.github.com/repos/un33k/python-slugify/forks", + "keys_url": "https://api.github.com/repos/un33k/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/un33k/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/un33k/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/un33k/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/un33k/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/un33k/python-slugify/events", + "assignees_url": "https://api.github.com/repos/un33k/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/un33k/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/un33k/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/un33k/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/un33k/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/un33k/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/un33k/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/un33k/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/un33k/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/un33k/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/un33k/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/un33k/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/un33k/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/un33k/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/un33k/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/un33k/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/un33k/python-slugify/merges", + "archive_url": "https://api.github.com/repos/un33k/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/un33k/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/un33k/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/un33k/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/un33k/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/un33k/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/un33k/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/un33k/python-slugify/deployments", + "created_at": "2012-10-15T01:44:50Z", + "updated_at": "2026-09-05T12:52:20Z", + "pushed_at": "2026-04-27T11:17:17Z", + "git_url": "git://github.com/un33k/python-slugify.git", + "ssh_url": "git@github.com:un33k/python-slugify.git", + "clone_url": "https://github.com/un33k/python-slugify.git", + "svn_url": "https://github.com/un33k/python-slugify", + "homepage": "", + "size": 208, + "stargazers_count": 1623, + "watchers_count": 1623, + "language": "Python", + "has_issues": true, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 134, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 17, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 134, + "open_issues": 17, + "watchers": 1623, + "default_branch": "master" + } + }, + "_links": { + "self": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/113" + }, + "html": { + "href": "https://github.com/un33k/python-slugify/pull/113" + }, + "issue": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/113" + }, + "comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/113/comments" + }, + "review_comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/113/comments" + }, + "review_comment": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}" + }, + "commits": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/113/commits" + }, + "statuses": { + "href": "https://api.github.com/repos/un33k/python-slugify/statuses/43e2549afedc586c0730d63eeadc2410d9e945f5" + } + }, + "author_association": "COLLABORATOR", + "auto_merge": null, + "assignee": null, + "active_lock_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/116", + "id": 949112940, + "node_id": "PR_kwDOAF7qK844klBs", + "html_url": "https://github.com/un33k/python-slugify/pull/116", + "diff_url": "https://github.com/un33k/python-slugify/pull/116.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/116.patch", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/116", + "number": 116, + "state": "closed", + "locked": false, + "title": "Update __init__.py to have __version__ variables.", + "user": { + "login": "eNV25", + "id": 61089994, + "node_id": "MDQ6VXNlcjYxMDg5OTk0", + "avatar_url": "https://avatars.githubusercontent.com/u/61089994?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/eNV25", + "html_url": "https://github.com/eNV25", + "followers_url": "https://api.github.com/users/eNV25/followers", + "following_url": "https://api.github.com/users/eNV25/following{/other_user}", + "gists_url": "https://api.github.com/users/eNV25/gists{/gist_id}", + "starred_url": "https://api.github.com/users/eNV25/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/eNV25/subscriptions", + "organizations_url": "https://api.github.com/users/eNV25/orgs", + "repos_url": "https://api.github.com/users/eNV25/repos", + "events_url": "https://api.github.com/users/eNV25/events{/privacy}", + "received_events_url": "https://api.github.com/users/eNV25/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "body": "This allows you to use `from slugify import __version__ as slugifyVersion`, while `from slugify.__version__ import __version__ as slugifyVersion` continues to work.", + "created_at": "2022-05-27T09:25:34Z", + "updated_at": "2022-09-27T11:58:31Z", + "closed_at": "2022-09-27T11:58:23Z", + "merged_at": "2022-09-27T11:58:23Z", + "merge_commit_sha": "dbe74897764eb8338151e09cfc611e90cef12280", + "assignees": [], + "requested_reviewers": [], + "requested_teams": [], + "labels": [], + "milestone": null, + "draft": false, + "commits_url": "https://api.github.com/repos/un33k/python-slugify/pulls/116/commits", + "review_comments_url": "https://api.github.com/repos/un33k/python-slugify/pulls/116/comments", + "review_comment_url": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/116/comments", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/afce3ff04b3344220e3aed8371d43f7a25a7f24e", + "head": { + "label": "eNV25:patch-1", + "ref": "patch-1", + "sha": "afce3ff04b3344220e3aed8371d43f7a25a7f24e", + "user": { + "login": "eNV25", + "id": 61089994, + "node_id": "MDQ6VXNlcjYxMDg5OTk0", + "avatar_url": "https://avatars.githubusercontent.com/u/61089994?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/eNV25", + "html_url": "https://github.com/eNV25", + "followers_url": "https://api.github.com/users/eNV25/followers", + "following_url": "https://api.github.com/users/eNV25/following{/other_user}", + "gists_url": "https://api.github.com/users/eNV25/gists{/gist_id}", + "starred_url": "https://api.github.com/users/eNV25/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/eNV25/subscriptions", + "organizations_url": "https://api.github.com/users/eNV25/orgs", + "repos_url": "https://api.github.com/users/eNV25/repos", + "events_url": "https://api.github.com/users/eNV25/events{/privacy}", + "received_events_url": "https://api.github.com/users/eNV25/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": null + }, + "base": { + "label": "un33k:master", + "ref": "master", + "sha": "3f1a0fe7c5775a72141163ccdd593272e512898c", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 6220331, + "node_id": "MDEwOlJlcG9zaXRvcnk2MjIwMzMx", + "name": "python-slugify", + "full_name": "un33k/python-slugify", + "private": false, + "owner": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/un33k/python-slugify", + "description": "Returns unicode slugs", + "fork": false, + "url": "https://api.github.com/repos/un33k/python-slugify", + "forks_url": "https://api.github.com/repos/un33k/python-slugify/forks", + "keys_url": "https://api.github.com/repos/un33k/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/un33k/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/un33k/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/un33k/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/un33k/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/un33k/python-slugify/events", + "assignees_url": "https://api.github.com/repos/un33k/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/un33k/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/un33k/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/un33k/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/un33k/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/un33k/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/un33k/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/un33k/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/un33k/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/un33k/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/un33k/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/un33k/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/un33k/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/un33k/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/un33k/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/un33k/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/un33k/python-slugify/merges", + "archive_url": "https://api.github.com/repos/un33k/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/un33k/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/un33k/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/un33k/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/un33k/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/un33k/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/un33k/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/un33k/python-slugify/deployments", + "created_at": "2012-10-15T01:44:50Z", + "updated_at": "2026-09-05T12:52:20Z", + "pushed_at": "2026-04-27T11:17:17Z", + "git_url": "git://github.com/un33k/python-slugify.git", + "ssh_url": "git@github.com:un33k/python-slugify.git", + "clone_url": "https://github.com/un33k/python-slugify.git", + "svn_url": "https://github.com/un33k/python-slugify", + "homepage": "", + "size": 208, + "stargazers_count": 1623, + "watchers_count": 1623, + "language": "Python", + "has_issues": true, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 134, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 17, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 134, + "open_issues": 17, + "watchers": 1623, + "default_branch": "master" + } + }, + "_links": { + "self": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/116" + }, + "html": { + "href": "https://github.com/un33k/python-slugify/pull/116" + }, + "issue": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/116" + }, + "comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/116/comments" + }, + "review_comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/116/comments" + }, + "review_comment": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}" + }, + "commits": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/116/commits" + }, + "statuses": { + "href": "https://api.github.com/repos/un33k/python-slugify/statuses/afce3ff04b3344220e3aed8371d43f7a25a7f24e" + } + }, + "author_association": "CONTRIBUTOR", + "auto_merge": null, + "assignee": null, + "active_lock_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/121", + "id": 1125079030, + "node_id": "PR_kwDOAF7qK85DD1f2", + "html_url": "https://github.com/un33k/python-slugify/pull/121", + "diff_url": "https://github.com/un33k/python-slugify/pull/121.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/121.patch", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/121", + "number": 121, + "state": "closed", + "locked": false, + "title": "Add support for Python 3.11", + "user": { + "login": "hugovk", + "id": 1324225, + "node_id": "MDQ6VXNlcjEzMjQyMjU=", + "avatar_url": "https://avatars.githubusercontent.com/u/1324225?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/hugovk", + "html_url": "https://github.com/hugovk", + "followers_url": "https://api.github.com/users/hugovk/followers", + "following_url": "https://api.github.com/users/hugovk/following{/other_user}", + "gists_url": "https://api.github.com/users/hugovk/gists{/gist_id}", + "starred_url": "https://api.github.com/users/hugovk/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/hugovk/subscriptions", + "organizations_url": "https://api.github.com/users/hugovk/orgs", + "repos_url": "https://api.github.com/users/hugovk/repos", + "events_url": "https://api.github.com/users/hugovk/events{/privacy}", + "received_events_url": "https://api.github.com/users/hugovk/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "body": "Python 3.11 was [released on 2022-10-24](https://discuss.python.org/t/python-3-11-0-final-is-now-available/20291?u=hugovk) 🚀 \r\n\r\n[![image](https://user-images.githubusercontent.com/1324225/198233993-5b79523b-370f-4316-a4be-9403c8209068.png)](https://discuss.python.org/t/python-3-11-0-final-is-now-available/20291?u=hugovk)\r\n\r\nAnd drop EOL 3.6.", + "created_at": "2022-11-16T21:08:52Z", + "updated_at": "2022-11-18T20:33:41Z", + "closed_at": "2022-11-18T18:36:21Z", + "merged_at": "2022-11-18T18:36:21Z", + "merge_commit_sha": "a229e483b6f82f36600e73e7a2fb62dc2f5e7ed3", + "assignees": [], + "requested_reviewers": [], + "requested_teams": [], + "labels": [], + "milestone": null, + "draft": false, + "commits_url": "https://api.github.com/repos/un33k/python-slugify/pulls/121/commits", + "review_comments_url": "https://api.github.com/repos/un33k/python-slugify/pulls/121/comments", + "review_comment_url": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/121/comments", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/5e1fd59419bd490e13dfded1335cead632522dc2", + "head": { + "label": "hugovk:master", + "ref": "master", + "sha": "5e1fd59419bd490e13dfded1335cead632522dc2", + "user": { + "login": "hugovk", + "id": 1324225, + "node_id": "MDQ6VXNlcjEzMjQyMjU=", + "avatar_url": "https://avatars.githubusercontent.com/u/1324225?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/hugovk", + "html_url": "https://github.com/hugovk", + "followers_url": "https://api.github.com/users/hugovk/followers", + "following_url": "https://api.github.com/users/hugovk/following{/other_user}", + "gists_url": "https://api.github.com/users/hugovk/gists{/gist_id}", + "starred_url": "https://api.github.com/users/hugovk/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/hugovk/subscriptions", + "organizations_url": "https://api.github.com/users/hugovk/orgs", + "repos_url": "https://api.github.com/users/hugovk/repos", + "events_url": "https://api.github.com/users/hugovk/events{/privacy}", + "received_events_url": "https://api.github.com/users/hugovk/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 214861915, + "node_id": "MDEwOlJlcG9zaXRvcnkyMTQ4NjE5MTU=", + "name": "python-slugify", + "full_name": "hugovk/python-slugify", + "private": false, + "owner": { + "login": "hugovk", + "id": 1324225, + "node_id": "MDQ6VXNlcjEzMjQyMjU=", + "avatar_url": "https://avatars.githubusercontent.com/u/1324225?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/hugovk", + "html_url": "https://github.com/hugovk", + "followers_url": "https://api.github.com/users/hugovk/followers", + "following_url": "https://api.github.com/users/hugovk/following{/other_user}", + "gists_url": "https://api.github.com/users/hugovk/gists{/gist_id}", + "starred_url": "https://api.github.com/users/hugovk/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/hugovk/subscriptions", + "organizations_url": "https://api.github.com/users/hugovk/orgs", + "repos_url": "https://api.github.com/users/hugovk/repos", + "events_url": "https://api.github.com/users/hugovk/events{/privacy}", + "received_events_url": "https://api.github.com/users/hugovk/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/hugovk/python-slugify", + "description": "Returns unicode slugs", + "fork": true, + "url": "https://api.github.com/repos/hugovk/python-slugify", + "forks_url": "https://api.github.com/repos/hugovk/python-slugify/forks", + "keys_url": "https://api.github.com/repos/hugovk/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/hugovk/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/hugovk/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/hugovk/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/hugovk/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/hugovk/python-slugify/events", + "assignees_url": "https://api.github.com/repos/hugovk/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/hugovk/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/hugovk/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/hugovk/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/hugovk/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/hugovk/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/hugovk/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/hugovk/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/hugovk/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/hugovk/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/hugovk/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/hugovk/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/hugovk/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/hugovk/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/hugovk/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/hugovk/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/hugovk/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/hugovk/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/hugovk/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/hugovk/python-slugify/merges", + "archive_url": "https://api.github.com/repos/hugovk/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/hugovk/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/hugovk/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/hugovk/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/hugovk/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/hugovk/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/hugovk/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/hugovk/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/hugovk/python-slugify/deployments", + "created_at": "2019-10-13T17:20:09Z", + "updated_at": "2022-11-16T21:00:13Z", + "pushed_at": "2022-11-16T21:07:28Z", + "git_url": "git://github.com/hugovk/python-slugify.git", + "ssh_url": "git@github.com:hugovk/python-slugify.git", + "clone_url": "https://github.com/hugovk/python-slugify.git", + "svn_url": "https://github.com/hugovk/python-slugify", + "homepage": "", + "size": 177, + "stargazers_count": 0, + "watchers_count": 0, + "language": "Python", + "has_issues": false, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 0, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 0, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 0, + "open_issues": 0, + "watchers": 0, + "default_branch": "master" + } + }, + "base": { + "label": "un33k:master", + "ref": "master", + "sha": "dbe74897764eb8338151e09cfc611e90cef12280", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 6220331, + "node_id": "MDEwOlJlcG9zaXRvcnk2MjIwMzMx", + "name": "python-slugify", + "full_name": "un33k/python-slugify", + "private": false, + "owner": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/un33k/python-slugify", + "description": "Returns unicode slugs", + "fork": false, + "url": "https://api.github.com/repos/un33k/python-slugify", + "forks_url": "https://api.github.com/repos/un33k/python-slugify/forks", + "keys_url": "https://api.github.com/repos/un33k/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/un33k/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/un33k/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/un33k/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/un33k/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/un33k/python-slugify/events", + "assignees_url": "https://api.github.com/repos/un33k/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/un33k/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/un33k/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/un33k/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/un33k/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/un33k/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/un33k/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/un33k/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/un33k/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/un33k/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/un33k/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/un33k/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/un33k/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/un33k/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/un33k/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/un33k/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/un33k/python-slugify/merges", + "archive_url": "https://api.github.com/repos/un33k/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/un33k/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/un33k/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/un33k/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/un33k/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/un33k/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/un33k/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/un33k/python-slugify/deployments", + "created_at": "2012-10-15T01:44:50Z", + "updated_at": "2026-09-05T12:52:20Z", + "pushed_at": "2026-04-27T11:17:17Z", + "git_url": "git://github.com/un33k/python-slugify.git", + "ssh_url": "git@github.com:un33k/python-slugify.git", + "clone_url": "https://github.com/un33k/python-slugify.git", + "svn_url": "https://github.com/un33k/python-slugify", + "homepage": "", + "size": 208, + "stargazers_count": 1623, + "watchers_count": 1623, + "language": "Python", + "has_issues": true, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 134, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 17, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 134, + "open_issues": 17, + "watchers": 1623, + "default_branch": "master" + } + }, + "_links": { + "self": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/121" + }, + "html": { + "href": "https://github.com/un33k/python-slugify/pull/121" + }, + "issue": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/121" + }, + "comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/121/comments" + }, + "review_comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/121/comments" + }, + "review_comment": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}" + }, + "commits": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/121/commits" + }, + "statuses": { + "href": "https://api.github.com/repos/un33k/python-slugify/statuses/5e1fd59419bd490e13dfded1335cead632522dc2" + } + }, + "author_association": "CONTRIBUTOR", + "auto_merge": null, + "assignee": null, + "active_lock_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/125", + "id": 1194219631, + "node_id": "PR_kwDOAF7qK85HLlhv", + "html_url": "https://github.com/un33k/python-slugify/pull/125", + "diff_url": "https://github.com/un33k/python-slugify/pull/125.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/125.patch", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/125", + "number": 125, + "state": "closed", + "locked": false, + "title": "added option to replace ambiguous characters", + "user": { + "login": "xnetcat", + "id": 42355410, + "node_id": "MDQ6VXNlcjQyMzU1NDEw", + "avatar_url": "https://avatars.githubusercontent.com/u/42355410?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xnetcat", + "html_url": "https://github.com/xnetcat", + "followers_url": "https://api.github.com/users/xnetcat/followers", + "following_url": "https://api.github.com/users/xnetcat/following{/other_user}", + "gists_url": "https://api.github.com/users/xnetcat/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xnetcat/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xnetcat/subscriptions", + "organizations_url": "https://api.github.com/users/xnetcat/orgs", + "repos_url": "https://api.github.com/users/xnetcat/repos", + "events_url": "https://api.github.com/users/xnetcat/events{/privacy}", + "received_events_url": "https://api.github.com/users/xnetcat/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "body": "as in title, this option replaces similar characters to their closest ASCII equivalent\r\n\r\nfor example:\r\n`𝙎` -> `s`\r\n`𝘽` -> `b`\r\n`Drake - WizKid Kyla - One Dance (𝙎𝙇𝙊𝙒𝙀𝘿 + 𝙍𝙀𝙑𝙀𝙍𝘽)` -> `drake-wizkid-kyla-one-dance-slowed-reverb`\r\n\r\nbefore:\r\n`𝙎` -> ` `\r\n`𝘽` -> ` `\r\n`Drake - WizKid Kyla - One Dance (𝙎𝙇𝙊𝙒𝙀𝘿 + 𝙍𝙀𝙑𝙀𝙍𝘽)` -> `drake-wizkid-kyla-one-dance`\r\n\r\nfull list: https://pastebin.com/yY9UmByb\r\n\r\nbased on the: https://github.com/hediet/vscode-unicode-data/", + "created_at": "2023-01-11T18:28:16Z", + "updated_at": "2023-02-24T16:21:20Z", + "closed_at": "2023-01-11T20:16:05Z", + "merged_at": null, + "merge_commit_sha": "f008edd274183d96608c570e6394d217e86e3599", + "assignees": [], + "requested_reviewers": [], + "requested_teams": [], + "labels": [], + "milestone": null, + "draft": false, + "commits_url": "https://api.github.com/repos/un33k/python-slugify/pulls/125/commits", + "review_comments_url": "https://api.github.com/repos/un33k/python-slugify/pulls/125/comments", + "review_comment_url": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/125/comments", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/45b2915785b4754158d1fbab7d67567de98e473a", + "head": { + "label": "xnetcat:patch-1", + "ref": "patch-1", + "sha": "45b2915785b4754158d1fbab7d67567de98e473a", + "user": { + "login": "xnetcat", + "id": 42355410, + "node_id": "MDQ6VXNlcjQyMzU1NDEw", + "avatar_url": "https://avatars.githubusercontent.com/u/42355410?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xnetcat", + "html_url": "https://github.com/xnetcat", + "followers_url": "https://api.github.com/users/xnetcat/followers", + "following_url": "https://api.github.com/users/xnetcat/following{/other_user}", + "gists_url": "https://api.github.com/users/xnetcat/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xnetcat/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xnetcat/subscriptions", + "organizations_url": "https://api.github.com/users/xnetcat/orgs", + "repos_url": "https://api.github.com/users/xnetcat/repos", + "events_url": "https://api.github.com/users/xnetcat/events{/privacy}", + "received_events_url": "https://api.github.com/users/xnetcat/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": null + }, + "base": { + "label": "un33k:master", + "ref": "master", + "sha": "93d15b7f07c748e86d831f9268e04e80f807224a", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 6220331, + "node_id": "MDEwOlJlcG9zaXRvcnk2MjIwMzMx", + "name": "python-slugify", + "full_name": "un33k/python-slugify", + "private": false, + "owner": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/un33k/python-slugify", + "description": "Returns unicode slugs", + "fork": false, + "url": "https://api.github.com/repos/un33k/python-slugify", + "forks_url": "https://api.github.com/repos/un33k/python-slugify/forks", + "keys_url": "https://api.github.com/repos/un33k/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/un33k/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/un33k/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/un33k/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/un33k/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/un33k/python-slugify/events", + "assignees_url": "https://api.github.com/repos/un33k/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/un33k/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/un33k/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/un33k/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/un33k/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/un33k/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/un33k/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/un33k/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/un33k/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/un33k/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/un33k/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/un33k/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/un33k/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/un33k/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/un33k/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/un33k/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/un33k/python-slugify/merges", + "archive_url": "https://api.github.com/repos/un33k/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/un33k/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/un33k/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/un33k/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/un33k/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/un33k/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/un33k/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/un33k/python-slugify/deployments", + "created_at": "2012-10-15T01:44:50Z", + "updated_at": "2026-09-05T12:52:20Z", + "pushed_at": "2026-04-27T11:17:17Z", + "git_url": "git://github.com/un33k/python-slugify.git", + "ssh_url": "git@github.com:un33k/python-slugify.git", + "clone_url": "https://github.com/un33k/python-slugify.git", + "svn_url": "https://github.com/un33k/python-slugify", + "homepage": "", + "size": 208, + "stargazers_count": 1623, + "watchers_count": 1623, + "language": "Python", + "has_issues": true, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 134, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 17, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 134, + "open_issues": 17, + "watchers": 1623, + "default_branch": "master" + } + }, + "_links": { + "self": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/125" + }, + "html": { + "href": "https://github.com/un33k/python-slugify/pull/125" + }, + "issue": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/125" + }, + "comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/125/comments" + }, + "review_comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/125/comments" + }, + "review_comment": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}" + }, + "commits": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/125/commits" + }, + "statuses": { + "href": "https://api.github.com/repos/un33k/python-slugify/statuses/45b2915785b4754158d1fbab7d67567de98e473a" + } + }, + "author_association": "NONE", + "auto_merge": null, + "assignee": null, + "active_lock_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/126", + "id": 1219985903, + "node_id": "PR_kwDOAF7qK85It4Hv", + "html_url": "https://github.com/un33k/python-slugify/pull/126", + "diff_url": "https://github.com/un33k/python-slugify/pull/126.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/126.patch", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/126", + "number": 126, + "state": "closed", + "locked": false, + "title": "`unidecode` vs `text_unidecode` import resolution order", + "user": { + "login": "enkidulan", + "id": 963412, + "node_id": "MDQ6VXNlcjk2MzQxMg==", + "avatar_url": "https://avatars.githubusercontent.com/u/963412?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/enkidulan", + "html_url": "https://github.com/enkidulan", + "followers_url": "https://api.github.com/users/enkidulan/followers", + "following_url": "https://api.github.com/users/enkidulan/following{/other_user}", + "gists_url": "https://api.github.com/users/enkidulan/gists{/gist_id}", + "starred_url": "https://api.github.com/users/enkidulan/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/enkidulan/subscriptions", + "organizations_url": "https://api.github.com/users/enkidulan/orgs", + "repos_url": "https://api.github.com/users/enkidulan/repos", + "events_url": "https://api.github.com/users/enkidulan/events{/privacy}", + "received_events_url": "https://api.github.com/users/enkidulan/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "body": "The way the code is now `unidecode` library is just getting ignored. \r\n`text_unidecode` is install_requires and is always present in the python environment, so it makes sense to try importing the optional dependency `unidecode` first and only then fallback to `text_unidecode`.\r\n", + "created_at": "2023-01-27T22:29:27Z", + "updated_at": "2023-01-30T20:43:28Z", + "closed_at": "2023-01-27T22:47:05Z", + "merged_at": "2023-01-27T22:47:05Z", + "merge_commit_sha": "22d7e84b95869dd4300952b88113dd00e53e9ec7", + "assignees": [], + "requested_reviewers": [], + "requested_teams": [], + "labels": [], + "milestone": null, + "draft": false, + "commits_url": "https://api.github.com/repos/un33k/python-slugify/pulls/126/commits", + "review_comments_url": "https://api.github.com/repos/un33k/python-slugify/pulls/126/comments", + "review_comment_url": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/126/comments", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/67805683b6d4fb3c1266ddd492e4de51a32c0709", + "head": { + "label": "enkidulan:patch-1", + "ref": "patch-1", + "sha": "67805683b6d4fb3c1266ddd492e4de51a32c0709", + "user": { + "login": "enkidulan", + "id": 963412, + "node_id": "MDQ6VXNlcjk2MzQxMg==", + "avatar_url": "https://avatars.githubusercontent.com/u/963412?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/enkidulan", + "html_url": "https://github.com/enkidulan", + "followers_url": "https://api.github.com/users/enkidulan/followers", + "following_url": "https://api.github.com/users/enkidulan/following{/other_user}", + "gists_url": "https://api.github.com/users/enkidulan/gists{/gist_id}", + "starred_url": "https://api.github.com/users/enkidulan/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/enkidulan/subscriptions", + "organizations_url": "https://api.github.com/users/enkidulan/orgs", + "repos_url": "https://api.github.com/users/enkidulan/repos", + "events_url": "https://api.github.com/users/enkidulan/events{/privacy}", + "received_events_url": "https://api.github.com/users/enkidulan/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 594224336, + "node_id": "R_kgDOI2sk0A", + "name": "python-slugify", + "full_name": "enkidulan/python-slugify", + "private": false, + "owner": { + "login": "enkidulan", + "id": 963412, + "node_id": "MDQ6VXNlcjk2MzQxMg==", + "avatar_url": "https://avatars.githubusercontent.com/u/963412?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/enkidulan", + "html_url": "https://github.com/enkidulan", + "followers_url": "https://api.github.com/users/enkidulan/followers", + "following_url": "https://api.github.com/users/enkidulan/following{/other_user}", + "gists_url": "https://api.github.com/users/enkidulan/gists{/gist_id}", + "starred_url": "https://api.github.com/users/enkidulan/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/enkidulan/subscriptions", + "organizations_url": "https://api.github.com/users/enkidulan/orgs", + "repos_url": "https://api.github.com/users/enkidulan/repos", + "events_url": "https://api.github.com/users/enkidulan/events{/privacy}", + "received_events_url": "https://api.github.com/users/enkidulan/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/enkidulan/python-slugify", + "description": "Returns unicode slugs", + "fork": true, + "url": "https://api.github.com/repos/enkidulan/python-slugify", + "forks_url": "https://api.github.com/repos/enkidulan/python-slugify/forks", + "keys_url": "https://api.github.com/repos/enkidulan/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/enkidulan/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/enkidulan/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/enkidulan/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/enkidulan/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/enkidulan/python-slugify/events", + "assignees_url": "https://api.github.com/repos/enkidulan/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/enkidulan/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/enkidulan/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/enkidulan/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/enkidulan/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/enkidulan/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/enkidulan/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/enkidulan/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/enkidulan/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/enkidulan/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/enkidulan/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/enkidulan/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/enkidulan/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/enkidulan/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/enkidulan/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/enkidulan/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/enkidulan/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/enkidulan/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/enkidulan/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/enkidulan/python-slugify/merges", + "archive_url": "https://api.github.com/repos/enkidulan/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/enkidulan/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/enkidulan/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/enkidulan/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/enkidulan/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/enkidulan/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/enkidulan/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/enkidulan/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/enkidulan/python-slugify/deployments", + "created_at": "2023-01-27T22:24:09Z", + "updated_at": "2023-01-18T13:07:20Z", + "pushed_at": "2023-01-27T22:28:50Z", + "git_url": "git://github.com/enkidulan/python-slugify.git", + "ssh_url": "git@github.com:enkidulan/python-slugify.git", + "clone_url": "https://github.com/enkidulan/python-slugify.git", + "svn_url": "https://github.com/enkidulan/python-slugify", + "homepage": "", + "size": 181, + "stargazers_count": 0, + "watchers_count": 0, + "language": null, + "has_issues": false, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 0, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 0, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 0, + "open_issues": 0, + "watchers": 0, + "default_branch": "master" + } + }, + "base": { + "label": "un33k:master", + "ref": "master", + "sha": "93d15b7f07c748e86d831f9268e04e80f807224a", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 6220331, + "node_id": "MDEwOlJlcG9zaXRvcnk2MjIwMzMx", + "name": "python-slugify", + "full_name": "un33k/python-slugify", + "private": false, + "owner": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/un33k/python-slugify", + "description": "Returns unicode slugs", + "fork": false, + "url": "https://api.github.com/repos/un33k/python-slugify", + "forks_url": "https://api.github.com/repos/un33k/python-slugify/forks", + "keys_url": "https://api.github.com/repos/un33k/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/un33k/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/un33k/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/un33k/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/un33k/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/un33k/python-slugify/events", + "assignees_url": "https://api.github.com/repos/un33k/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/un33k/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/un33k/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/un33k/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/un33k/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/un33k/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/un33k/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/un33k/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/un33k/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/un33k/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/un33k/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/un33k/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/un33k/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/un33k/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/un33k/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/un33k/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/un33k/python-slugify/merges", + "archive_url": "https://api.github.com/repos/un33k/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/un33k/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/un33k/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/un33k/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/un33k/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/un33k/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/un33k/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/un33k/python-slugify/deployments", + "created_at": "2012-10-15T01:44:50Z", + "updated_at": "2026-09-05T12:52:20Z", + "pushed_at": "2026-04-27T11:17:17Z", + "git_url": "git://github.com/un33k/python-slugify.git", + "ssh_url": "git@github.com:un33k/python-slugify.git", + "clone_url": "https://github.com/un33k/python-slugify.git", + "svn_url": "https://github.com/un33k/python-slugify", + "homepage": "", + "size": 208, + "stargazers_count": 1623, + "watchers_count": 1623, + "language": "Python", + "has_issues": true, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 134, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 17, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 134, + "open_issues": 17, + "watchers": 1623, + "default_branch": "master" + } + }, + "_links": { + "self": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/126" + }, + "html": { + "href": "https://github.com/un33k/python-slugify/pull/126" + }, + "issue": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/126" + }, + "comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/126/comments" + }, + "review_comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/126/comments" + }, + "review_comment": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}" + }, + "commits": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/126/commits" + }, + "statuses": { + "href": "https://api.github.com/repos/un33k/python-slugify/statuses/67805683b6d4fb3c1266ddd492e4de51a32c0709" + } + }, + "author_association": "CONTRIBUTOR", + "auto_merge": null, + "assignee": null, + "active_lock_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/129", + "id": 1251866226, + "node_id": "PR_kwDOAF7qK85KnfZy", + "html_url": "https://github.com/un33k/python-slugify/pull/129", + "diff_url": "https://github.com/un33k/python-slugify/pull/129.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/129.patch", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/129", + "number": 129, + "state": "closed", + "locked": false, + "title": "Notes on GPL dependencies", + "user": { + "login": "C-nit", + "id": 11009167, + "node_id": "MDQ6VXNlcjExMDA5MTY3", + "avatar_url": "https://avatars.githubusercontent.com/u/11009167?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/C-nit", + "html_url": "https://github.com/C-nit", + "followers_url": "https://api.github.com/users/C-nit/followers", + "following_url": "https://api.github.com/users/C-nit/following{/other_user}", + "gists_url": "https://api.github.com/users/C-nit/gists{/gist_id}", + "starred_url": "https://api.github.com/users/C-nit/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/C-nit/subscriptions", + "organizations_url": "https://api.github.com/users/C-nit/orgs", + "repos_url": "https://api.github.com/users/C-nit/repos", + "events_url": "https://api.github.com/users/C-nit/events{/privacy}", + "received_events_url": "https://api.github.com/users/C-nit/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "body": "Since there are continued inquiries on the topic of licensing,\nan addition to the README.md seems worthwhile to me.\n\nHopefully this makes the conclusions reached in various previous issues more accessible for the next person.", + "created_at": "2023-02-23T15:21:01Z", + "updated_at": "2023-02-24T15:51:55Z", + "closed_at": "2023-02-24T15:51:54Z", + "merged_at": null, + "merge_commit_sha": "004ebe8c4a2fc4bb69bbd44b32824ed2640610ae", + "assignees": [], + "requested_reviewers": [], + "requested_teams": [], + "labels": [], + "milestone": null, + "draft": false, + "commits_url": "https://api.github.com/repos/un33k/python-slugify/pulls/129/commits", + "review_comments_url": "https://api.github.com/repos/un33k/python-slugify/pulls/129/comments", + "review_comment_url": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/129/comments", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/5eaaea2fe267861aa508d8c683855c4e9bc1cc6b", + "head": { + "label": "C-nit:master", + "ref": "master", + "sha": "5eaaea2fe267861aa508d8c683855c4e9bc1cc6b", + "user": { + "login": "C-nit", + "id": 11009167, + "node_id": "MDQ6VXNlcjExMDA5MTY3", + "avatar_url": "https://avatars.githubusercontent.com/u/11009167?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/C-nit", + "html_url": "https://github.com/C-nit", + "followers_url": "https://api.github.com/users/C-nit/followers", + "following_url": "https://api.github.com/users/C-nit/following{/other_user}", + "gists_url": "https://api.github.com/users/C-nit/gists{/gist_id}", + "starred_url": "https://api.github.com/users/C-nit/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/C-nit/subscriptions", + "organizations_url": "https://api.github.com/users/C-nit/orgs", + "repos_url": "https://api.github.com/users/C-nit/repos", + "events_url": "https://api.github.com/users/C-nit/events{/privacy}", + "received_events_url": "https://api.github.com/users/C-nit/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 605631018, + "node_id": "R_kgDOJBkyKg", + "name": "python-slugify", + "full_name": "C-nit/python-slugify", + "private": false, + "owner": { + "login": "C-nit", + "id": 11009167, + "node_id": "MDQ6VXNlcjExMDA5MTY3", + "avatar_url": "https://avatars.githubusercontent.com/u/11009167?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/C-nit", + "html_url": "https://github.com/C-nit", + "followers_url": "https://api.github.com/users/C-nit/followers", + "following_url": "https://api.github.com/users/C-nit/following{/other_user}", + "gists_url": "https://api.github.com/users/C-nit/gists{/gist_id}", + "starred_url": "https://api.github.com/users/C-nit/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/C-nit/subscriptions", + "organizations_url": "https://api.github.com/users/C-nit/orgs", + "repos_url": "https://api.github.com/users/C-nit/repos", + "events_url": "https://api.github.com/users/C-nit/events{/privacy}", + "received_events_url": "https://api.github.com/users/C-nit/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/C-nit/python-slugify", + "description": "Returns unicode slugs", + "fork": true, + "url": "https://api.github.com/repos/C-nit/python-slugify", + "forks_url": "https://api.github.com/repos/C-nit/python-slugify/forks", + "keys_url": "https://api.github.com/repos/C-nit/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/C-nit/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/C-nit/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/C-nit/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/C-nit/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/C-nit/python-slugify/events", + "assignees_url": "https://api.github.com/repos/C-nit/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/C-nit/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/C-nit/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/C-nit/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/C-nit/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/C-nit/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/C-nit/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/C-nit/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/C-nit/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/C-nit/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/C-nit/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/C-nit/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/C-nit/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/C-nit/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/C-nit/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/C-nit/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/C-nit/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/C-nit/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/C-nit/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/C-nit/python-slugify/merges", + "archive_url": "https://api.github.com/repos/C-nit/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/C-nit/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/C-nit/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/C-nit/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/C-nit/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/C-nit/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/C-nit/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/C-nit/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/C-nit/python-slugify/deployments", + "created_at": "2023-02-23T15:12:13Z", + "updated_at": "2023-02-23T15:16:29Z", + "pushed_at": "2023-02-24T11:52:44Z", + "git_url": "git://github.com/C-nit/python-slugify.git", + "ssh_url": "git@github.com:C-nit/python-slugify.git", + "clone_url": "https://github.com/C-nit/python-slugify.git", + "svn_url": "https://github.com/C-nit/python-slugify", + "homepage": "", + "size": 182, + "stargazers_count": 0, + "watchers_count": 0, + "language": "Python", + "has_issues": false, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 0, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 0, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 0, + "open_issues": 0, + "watchers": 0, + "default_branch": "master" + } + }, + "base": { + "label": "un33k:staging", + "ref": "staging", + "sha": "0bf1b8761f695e5ae14d9c439a05b151b4a1093d", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 6220331, + "node_id": "MDEwOlJlcG9zaXRvcnk2MjIwMzMx", + "name": "python-slugify", + "full_name": "un33k/python-slugify", + "private": false, + "owner": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/un33k/python-slugify", + "description": "Returns unicode slugs", + "fork": false, + "url": "https://api.github.com/repos/un33k/python-slugify", + "forks_url": "https://api.github.com/repos/un33k/python-slugify/forks", + "keys_url": "https://api.github.com/repos/un33k/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/un33k/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/un33k/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/un33k/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/un33k/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/un33k/python-slugify/events", + "assignees_url": "https://api.github.com/repos/un33k/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/un33k/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/un33k/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/un33k/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/un33k/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/un33k/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/un33k/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/un33k/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/un33k/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/un33k/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/un33k/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/un33k/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/un33k/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/un33k/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/un33k/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/un33k/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/un33k/python-slugify/merges", + "archive_url": "https://api.github.com/repos/un33k/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/un33k/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/un33k/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/un33k/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/un33k/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/un33k/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/un33k/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/un33k/python-slugify/deployments", + "created_at": "2012-10-15T01:44:50Z", + "updated_at": "2026-09-05T12:52:20Z", + "pushed_at": "2026-04-27T11:17:17Z", + "git_url": "git://github.com/un33k/python-slugify.git", + "ssh_url": "git@github.com:un33k/python-slugify.git", + "clone_url": "https://github.com/un33k/python-slugify.git", + "svn_url": "https://github.com/un33k/python-slugify", + "homepage": "", + "size": 208, + "stargazers_count": 1623, + "watchers_count": 1623, + "language": "Python", + "has_issues": true, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 134, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 17, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 134, + "open_issues": 17, + "watchers": 1623, + "default_branch": "master" + } + }, + "_links": { + "self": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/129" + }, + "html": { + "href": "https://github.com/un33k/python-slugify/pull/129" + }, + "issue": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/129" + }, + "comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/129/comments" + }, + "review_comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/129/comments" + }, + "review_comment": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}" + }, + "commits": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/129/commits" + }, + "statuses": { + "href": "https://api.github.com/repos/un33k/python-slugify/statuses/5eaaea2fe267861aa508d8c683855c4e9bc1cc6b" + } + }, + "author_association": "CONTRIBUTOR", + "auto_merge": null, + "assignee": null, + "active_lock_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/130", + "id": 1253147176, + "node_id": "PR_kwDOAF7qK85KsYIo", + "html_url": "https://github.com/un33k/python-slugify/pull/130", + "diff_url": "https://github.com/un33k/python-slugify/pull/130.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/130.patch", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/130", + "number": 130, + "state": "closed", + "locked": false, + "title": "Add note on licensing", + "user": { + "login": "C-nit", + "id": 11009167, + "node_id": "MDQ6VXNlcjExMDA5MTY3", + "avatar_url": "https://avatars.githubusercontent.com/u/11009167?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/C-nit", + "html_url": "https://github.com/C-nit", + "followers_url": "https://api.github.com/users/C-nit/followers", + "following_url": "https://api.github.com/users/C-nit/following{/other_user}", + "gists_url": "https://api.github.com/users/C-nit/gists{/gist_id}", + "starred_url": "https://api.github.com/users/C-nit/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/C-nit/subscriptions", + "organizations_url": "https://api.github.com/users/C-nit/orgs", + "repos_url": "https://api.github.com/users/C-nit/repos", + "events_url": "https://api.github.com/users/C-nit/events{/privacy}", + "received_events_url": "https://api.github.com/users/C-nit/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "body": "closes #129, which is the same commit but based on the staging branch.", + "created_at": "2023-02-24T11:54:39Z", + "updated_at": "2023-02-24T15:51:20Z", + "closed_at": "2023-02-24T15:51:02Z", + "merged_at": "2023-02-24T15:51:01Z", + "merge_commit_sha": "b9b8b96430dcdd06d7cc888b04485be075a960a4", + "assignees": [], + "requested_reviewers": [], + "requested_teams": [], + "labels": [], + "milestone": null, + "draft": false, + "commits_url": "https://api.github.com/repos/un33k/python-slugify/pulls/130/commits", + "review_comments_url": "https://api.github.com/repos/un33k/python-slugify/pulls/130/comments", + "review_comment_url": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/130/comments", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/a21322c29170264162c3afe7d3eb9905966680cd", + "head": { + "label": "C-nit:staging", + "ref": "staging", + "sha": "a21322c29170264162c3afe7d3eb9905966680cd", + "user": { + "login": "C-nit", + "id": 11009167, + "node_id": "MDQ6VXNlcjExMDA5MTY3", + "avatar_url": "https://avatars.githubusercontent.com/u/11009167?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/C-nit", + "html_url": "https://github.com/C-nit", + "followers_url": "https://api.github.com/users/C-nit/followers", + "following_url": "https://api.github.com/users/C-nit/following{/other_user}", + "gists_url": "https://api.github.com/users/C-nit/gists{/gist_id}", + "starred_url": "https://api.github.com/users/C-nit/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/C-nit/subscriptions", + "organizations_url": "https://api.github.com/users/C-nit/orgs", + "repos_url": "https://api.github.com/users/C-nit/repos", + "events_url": "https://api.github.com/users/C-nit/events{/privacy}", + "received_events_url": "https://api.github.com/users/C-nit/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 605631018, + "node_id": "R_kgDOJBkyKg", + "name": "python-slugify", + "full_name": "C-nit/python-slugify", + "private": false, + "owner": { + "login": "C-nit", + "id": 11009167, + "node_id": "MDQ6VXNlcjExMDA5MTY3", + "avatar_url": "https://avatars.githubusercontent.com/u/11009167?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/C-nit", + "html_url": "https://github.com/C-nit", + "followers_url": "https://api.github.com/users/C-nit/followers", + "following_url": "https://api.github.com/users/C-nit/following{/other_user}", + "gists_url": "https://api.github.com/users/C-nit/gists{/gist_id}", + "starred_url": "https://api.github.com/users/C-nit/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/C-nit/subscriptions", + "organizations_url": "https://api.github.com/users/C-nit/orgs", + "repos_url": "https://api.github.com/users/C-nit/repos", + "events_url": "https://api.github.com/users/C-nit/events{/privacy}", + "received_events_url": "https://api.github.com/users/C-nit/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/C-nit/python-slugify", + "description": "Returns unicode slugs", + "fork": true, + "url": "https://api.github.com/repos/C-nit/python-slugify", + "forks_url": "https://api.github.com/repos/C-nit/python-slugify/forks", + "keys_url": "https://api.github.com/repos/C-nit/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/C-nit/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/C-nit/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/C-nit/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/C-nit/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/C-nit/python-slugify/events", + "assignees_url": "https://api.github.com/repos/C-nit/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/C-nit/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/C-nit/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/C-nit/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/C-nit/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/C-nit/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/C-nit/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/C-nit/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/C-nit/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/C-nit/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/C-nit/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/C-nit/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/C-nit/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/C-nit/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/C-nit/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/C-nit/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/C-nit/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/C-nit/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/C-nit/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/C-nit/python-slugify/merges", + "archive_url": "https://api.github.com/repos/C-nit/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/C-nit/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/C-nit/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/C-nit/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/C-nit/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/C-nit/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/C-nit/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/C-nit/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/C-nit/python-slugify/deployments", + "created_at": "2023-02-23T15:12:13Z", + "updated_at": "2023-02-23T15:16:29Z", + "pushed_at": "2023-02-24T11:52:44Z", + "git_url": "git://github.com/C-nit/python-slugify.git", + "ssh_url": "git@github.com:C-nit/python-slugify.git", + "clone_url": "https://github.com/C-nit/python-slugify.git", + "svn_url": "https://github.com/C-nit/python-slugify", + "homepage": "", + "size": 182, + "stargazers_count": 0, + "watchers_count": 0, + "language": "Python", + "has_issues": false, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 0, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 0, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 0, + "open_issues": 0, + "watchers": 0, + "default_branch": "master" + } + }, + "base": { + "label": "un33k:staging", + "ref": "staging", + "sha": "11e6209bba742675bda4307a65d69c8821fccaee", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 6220331, + "node_id": "MDEwOlJlcG9zaXRvcnk2MjIwMzMx", + "name": "python-slugify", + "full_name": "un33k/python-slugify", + "private": false, + "owner": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/un33k/python-slugify", + "description": "Returns unicode slugs", + "fork": false, + "url": "https://api.github.com/repos/un33k/python-slugify", + "forks_url": "https://api.github.com/repos/un33k/python-slugify/forks", + "keys_url": "https://api.github.com/repos/un33k/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/un33k/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/un33k/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/un33k/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/un33k/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/un33k/python-slugify/events", + "assignees_url": "https://api.github.com/repos/un33k/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/un33k/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/un33k/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/un33k/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/un33k/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/un33k/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/un33k/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/un33k/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/un33k/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/un33k/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/un33k/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/un33k/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/un33k/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/un33k/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/un33k/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/un33k/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/un33k/python-slugify/merges", + "archive_url": "https://api.github.com/repos/un33k/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/un33k/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/un33k/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/un33k/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/un33k/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/un33k/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/un33k/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/un33k/python-slugify/deployments", + "created_at": "2012-10-15T01:44:50Z", + "updated_at": "2026-09-05T12:52:20Z", + "pushed_at": "2026-04-27T11:17:17Z", + "git_url": "git://github.com/un33k/python-slugify.git", + "ssh_url": "git@github.com:un33k/python-slugify.git", + "clone_url": "https://github.com/un33k/python-slugify.git", + "svn_url": "https://github.com/un33k/python-slugify", + "homepage": "", + "size": 208, + "stargazers_count": 1623, + "watchers_count": 1623, + "language": "Python", + "has_issues": true, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 134, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 17, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 134, + "open_issues": 17, + "watchers": 1623, + "default_branch": "master" + } + }, + "_links": { + "self": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/130" + }, + "html": { + "href": "https://github.com/un33k/python-slugify/pull/130" + }, + "issue": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/130" + }, + "comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/130/comments" + }, + "review_comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/130/comments" + }, + "review_comment": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}" + }, + "commits": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/130/commits" + }, + "statuses": { + "href": "https://api.github.com/repos/un33k/python-slugify/statuses/a21322c29170264162c3afe7d3eb9905966680cd" + } + }, + "author_association": "CONTRIBUTOR", + "auto_merge": null, + "assignee": null, + "active_lock_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/131", + "id": 1263309252, + "node_id": "PR_kwDOAF7qK85LTJHE", + "html_url": "https://github.com/un33k/python-slugify/pull/131", + "diff_url": "https://github.com/un33k/python-slugify/pull/131.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/131.patch", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/131", + "number": 131, + "state": "closed", + "locked": false, + "title": "Replace flake8 and pycodestyle with ruff", + "user": { + "login": "cclauss", + "id": 3709715, + "node_id": "MDQ6VXNlcjM3MDk3MTU=", + "avatar_url": "https://avatars.githubusercontent.com/u/3709715?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/cclauss", + "html_url": "https://github.com/cclauss", + "followers_url": "https://api.github.com/users/cclauss/followers", + "following_url": "https://api.github.com/users/cclauss/following{/other_user}", + "gists_url": "https://api.github.com/users/cclauss/gists{/gist_id}", + "starred_url": "https://api.github.com/users/cclauss/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/cclauss/subscriptions", + "organizations_url": "https://api.github.com/users/cclauss/orgs", + "repos_url": "https://api.github.com/users/cclauss/repos", + "events_url": "https://api.github.com/users/cclauss/events{/privacy}", + "received_events_url": "https://api.github.com/users/cclauss/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "body": "[Ruff](https://beta.ruff.rs) supports [over 500 lint rules](https://beta.ruff.rs/docs/rules) including bandit, flake8, isort, pylint, and pyupgrade and is written in Rust for speed.\r\nAlso added rules for pylint conventions, pylint errors, and pylint warnings.", + "created_at": "2023-03-05T06:18:55Z", + "updated_at": "2023-10-09T14:33:48Z", + "closed_at": "2023-10-09T13:56:55Z", + "merged_at": "2023-10-09T13:56:55Z", + "merge_commit_sha": "59eb957b26b3a5049a12aad951cd7e140909d0e1", + "assignees": [], + "requested_reviewers": [], + "requested_teams": [], + "labels": [], + "milestone": null, + "draft": false, + "commits_url": "https://api.github.com/repos/un33k/python-slugify/pulls/131/commits", + "review_comments_url": "https://api.github.com/repos/un33k/python-slugify/pulls/131/comments", + "review_comment_url": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/131/comments", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/f44cf16edd7041faa95765b8d68eabf47bdb04a0", + "head": { + "label": "cclauss:ruff", + "ref": "ruff", + "sha": "f44cf16edd7041faa95765b8d68eabf47bdb04a0", + "user": { + "login": "cclauss", + "id": 3709715, + "node_id": "MDQ6VXNlcjM3MDk3MTU=", + "avatar_url": "https://avatars.githubusercontent.com/u/3709715?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/cclauss", + "html_url": "https://github.com/cclauss", + "followers_url": "https://api.github.com/users/cclauss/followers", + "following_url": "https://api.github.com/users/cclauss/following{/other_user}", + "gists_url": "https://api.github.com/users/cclauss/gists{/gist_id}", + "starred_url": "https://api.github.com/users/cclauss/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/cclauss/subscriptions", + "organizations_url": "https://api.github.com/users/cclauss/orgs", + "repos_url": "https://api.github.com/users/cclauss/repos", + "events_url": "https://api.github.com/users/cclauss/events{/privacy}", + "received_events_url": "https://api.github.com/users/cclauss/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 609755119, + "node_id": "R_kgDOJFgf7w", + "name": "python-slugify", + "full_name": "cclauss/python-slugify", + "private": false, + "owner": { + "login": "cclauss", + "id": 3709715, + "node_id": "MDQ6VXNlcjM3MDk3MTU=", + "avatar_url": "https://avatars.githubusercontent.com/u/3709715?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/cclauss", + "html_url": "https://github.com/cclauss", + "followers_url": "https://api.github.com/users/cclauss/followers", + "following_url": "https://api.github.com/users/cclauss/following{/other_user}", + "gists_url": "https://api.github.com/users/cclauss/gists{/gist_id}", + "starred_url": "https://api.github.com/users/cclauss/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/cclauss/subscriptions", + "organizations_url": "https://api.github.com/users/cclauss/orgs", + "repos_url": "https://api.github.com/users/cclauss/repos", + "events_url": "https://api.github.com/users/cclauss/events{/privacy}", + "received_events_url": "https://api.github.com/users/cclauss/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/cclauss/python-slugify", + "description": "Returns unicode slugs", + "fork": true, + "url": "https://api.github.com/repos/cclauss/python-slugify", + "forks_url": "https://api.github.com/repos/cclauss/python-slugify/forks", + "keys_url": "https://api.github.com/repos/cclauss/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/cclauss/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/cclauss/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/cclauss/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/cclauss/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/cclauss/python-slugify/events", + "assignees_url": "https://api.github.com/repos/cclauss/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/cclauss/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/cclauss/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/cclauss/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/cclauss/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/cclauss/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/cclauss/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/cclauss/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/cclauss/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/cclauss/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/cclauss/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/cclauss/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/cclauss/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/cclauss/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/cclauss/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/cclauss/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/cclauss/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/cclauss/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/cclauss/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/cclauss/python-slugify/merges", + "archive_url": "https://api.github.com/repos/cclauss/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/cclauss/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/cclauss/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/cclauss/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/cclauss/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/cclauss/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/cclauss/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/cclauss/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/cclauss/python-slugify/deployments", + "created_at": "2023-03-05T06:02:21Z", + "updated_at": "2023-02-27T16:38:48Z", + "pushed_at": "2023-10-09T14:14:53Z", + "git_url": "git://github.com/cclauss/python-slugify.git", + "ssh_url": "git@github.com:cclauss/python-slugify.git", + "clone_url": "https://github.com/cclauss/python-slugify.git", + "svn_url": "https://github.com/cclauss/python-slugify", + "homepage": "", + "size": 181, + "stargazers_count": 0, + "watchers_count": 0, + "language": null, + "has_issues": false, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 0, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 0, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 0, + "open_issues": 0, + "watchers": 0, + "default_branch": "master" + } + }, + "base": { + "label": "un33k:master", + "ref": "master", + "sha": "cab324665b19ab661421697da79ebc902e0ea57c", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 6220331, + "node_id": "MDEwOlJlcG9zaXRvcnk2MjIwMzMx", + "name": "python-slugify", + "full_name": "un33k/python-slugify", + "private": false, + "owner": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/un33k/python-slugify", + "description": "Returns unicode slugs", + "fork": false, + "url": "https://api.github.com/repos/un33k/python-slugify", + "forks_url": "https://api.github.com/repos/un33k/python-slugify/forks", + "keys_url": "https://api.github.com/repos/un33k/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/un33k/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/un33k/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/un33k/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/un33k/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/un33k/python-slugify/events", + "assignees_url": "https://api.github.com/repos/un33k/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/un33k/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/un33k/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/un33k/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/un33k/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/un33k/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/un33k/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/un33k/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/un33k/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/un33k/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/un33k/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/un33k/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/un33k/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/un33k/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/un33k/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/un33k/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/un33k/python-slugify/merges", + "archive_url": "https://api.github.com/repos/un33k/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/un33k/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/un33k/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/un33k/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/un33k/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/un33k/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/un33k/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/un33k/python-slugify/deployments", + "created_at": "2012-10-15T01:44:50Z", + "updated_at": "2026-09-05T12:52:20Z", + "pushed_at": "2026-04-27T11:17:17Z", + "git_url": "git://github.com/un33k/python-slugify.git", + "ssh_url": "git@github.com:un33k/python-slugify.git", + "clone_url": "https://github.com/un33k/python-slugify.git", + "svn_url": "https://github.com/un33k/python-slugify", + "homepage": "", + "size": 208, + "stargazers_count": 1623, + "watchers_count": 1623, + "language": "Python", + "has_issues": true, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 134, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 17, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 134, + "open_issues": 17, + "watchers": 1623, + "default_branch": "master" + } + }, + "_links": { + "self": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/131" + }, + "html": { + "href": "https://github.com/un33k/python-slugify/pull/131" + }, + "issue": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/131" + }, + "comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/131/comments" + }, + "review_comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/131/comments" + }, + "review_comment": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}" + }, + "commits": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/131/commits" + }, + "statuses": { + "href": "https://api.github.com/repos/un33k/python-slugify/statuses/f44cf16edd7041faa95765b8d68eabf47bdb04a0" + } + }, + "author_association": "CONTRIBUTOR", + "auto_merge": null, + "assignee": null, + "active_lock_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/132", + "id": 1263309999, + "node_id": "PR_kwDOAF7qK85LTJSv", + "html_url": "https://github.com/un33k/python-slugify/pull/132", + "diff_url": "https://github.com/un33k/python-slugify/pull/132.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/132.patch", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/132", + "number": 132, + "state": "closed", + "locked": false, + "title": "Fix CI to run on master without duplicate push and pull_request runs", + "user": { + "login": "cclauss", + "id": 3709715, + "node_id": "MDQ6VXNlcjM3MDk3MTU=", + "avatar_url": "https://avatars.githubusercontent.com/u/3709715?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/cclauss", + "html_url": "https://github.com/cclauss", + "followers_url": "https://api.github.com/users/cclauss/followers", + "following_url": "https://api.github.com/users/cclauss/following{/other_user}", + "gists_url": "https://api.github.com/users/cclauss/gists{/gist_id}", + "starred_url": "https://api.github.com/users/cclauss/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/cclauss/subscriptions", + "organizations_url": "https://api.github.com/users/cclauss/orgs", + "repos_url": "https://api.github.com/users/cclauss/repos", + "events_url": "https://api.github.com/users/cclauss/events{/privacy}", + "received_events_url": "https://api.github.com/users/cclauss/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "body": "That weird construct under `on:` allows the GHA to run on push OR pull_request to the `master` branch but NOT both.", + "created_at": "2023-03-05T06:23:07Z", + "updated_at": "2023-08-15T21:18:24Z", + "closed_at": "2023-08-15T21:18:21Z", + "merged_at": null, + "merge_commit_sha": "ca0d5fbb2db087a9525be61251c99a9c835fc898", + "assignees": [], + "requested_reviewers": [], + "requested_teams": [], + "labels": [], + "milestone": null, + "draft": false, + "commits_url": "https://api.github.com/repos/un33k/python-slugify/pulls/132/commits", + "review_comments_url": "https://api.github.com/repos/un33k/python-slugify/pulls/132/comments", + "review_comment_url": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/132/comments", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/0247e0548d46d7e481b98f528b5cbaf5c98eb17d", + "head": { + "label": "cclauss:patch-1", + "ref": "patch-1", + "sha": "0247e0548d46d7e481b98f528b5cbaf5c98eb17d", + "user": { + "login": "cclauss", + "id": 3709715, + "node_id": "MDQ6VXNlcjM3MDk3MTU=", + "avatar_url": "https://avatars.githubusercontent.com/u/3709715?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/cclauss", + "html_url": "https://github.com/cclauss", + "followers_url": "https://api.github.com/users/cclauss/followers", + "following_url": "https://api.github.com/users/cclauss/following{/other_user}", + "gists_url": "https://api.github.com/users/cclauss/gists{/gist_id}", + "starred_url": "https://api.github.com/users/cclauss/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/cclauss/subscriptions", + "organizations_url": "https://api.github.com/users/cclauss/orgs", + "repos_url": "https://api.github.com/users/cclauss/repos", + "events_url": "https://api.github.com/users/cclauss/events{/privacy}", + "received_events_url": "https://api.github.com/users/cclauss/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 609755119, + "node_id": "R_kgDOJFgf7w", + "name": "python-slugify", + "full_name": "cclauss/python-slugify", + "private": false, + "owner": { + "login": "cclauss", + "id": 3709715, + "node_id": "MDQ6VXNlcjM3MDk3MTU=", + "avatar_url": "https://avatars.githubusercontent.com/u/3709715?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/cclauss", + "html_url": "https://github.com/cclauss", + "followers_url": "https://api.github.com/users/cclauss/followers", + "following_url": "https://api.github.com/users/cclauss/following{/other_user}", + "gists_url": "https://api.github.com/users/cclauss/gists{/gist_id}", + "starred_url": "https://api.github.com/users/cclauss/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/cclauss/subscriptions", + "organizations_url": "https://api.github.com/users/cclauss/orgs", + "repos_url": "https://api.github.com/users/cclauss/repos", + "events_url": "https://api.github.com/users/cclauss/events{/privacy}", + "received_events_url": "https://api.github.com/users/cclauss/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/cclauss/python-slugify", + "description": "Returns unicode slugs", + "fork": true, + "url": "https://api.github.com/repos/cclauss/python-slugify", + "forks_url": "https://api.github.com/repos/cclauss/python-slugify/forks", + "keys_url": "https://api.github.com/repos/cclauss/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/cclauss/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/cclauss/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/cclauss/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/cclauss/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/cclauss/python-slugify/events", + "assignees_url": "https://api.github.com/repos/cclauss/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/cclauss/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/cclauss/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/cclauss/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/cclauss/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/cclauss/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/cclauss/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/cclauss/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/cclauss/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/cclauss/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/cclauss/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/cclauss/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/cclauss/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/cclauss/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/cclauss/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/cclauss/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/cclauss/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/cclauss/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/cclauss/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/cclauss/python-slugify/merges", + "archive_url": "https://api.github.com/repos/cclauss/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/cclauss/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/cclauss/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/cclauss/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/cclauss/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/cclauss/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/cclauss/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/cclauss/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/cclauss/python-slugify/deployments", + "created_at": "2023-03-05T06:02:21Z", + "updated_at": "2023-02-27T16:38:48Z", + "pushed_at": "2023-10-09T14:14:53Z", + "git_url": "git://github.com/cclauss/python-slugify.git", + "ssh_url": "git@github.com:cclauss/python-slugify.git", + "clone_url": "https://github.com/cclauss/python-slugify.git", + "svn_url": "https://github.com/cclauss/python-slugify", + "homepage": "", + "size": 181, + "stargazers_count": 0, + "watchers_count": 0, + "language": null, + "has_issues": false, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 0, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 0, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 0, + "open_issues": 0, + "watchers": 0, + "default_branch": "master" + } + }, + "base": { + "label": "un33k:master", + "ref": "master", + "sha": "cab324665b19ab661421697da79ebc902e0ea57c", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 6220331, + "node_id": "MDEwOlJlcG9zaXRvcnk2MjIwMzMx", + "name": "python-slugify", + "full_name": "un33k/python-slugify", + "private": false, + "owner": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/un33k/python-slugify", + "description": "Returns unicode slugs", + "fork": false, + "url": "https://api.github.com/repos/un33k/python-slugify", + "forks_url": "https://api.github.com/repos/un33k/python-slugify/forks", + "keys_url": "https://api.github.com/repos/un33k/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/un33k/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/un33k/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/un33k/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/un33k/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/un33k/python-slugify/events", + "assignees_url": "https://api.github.com/repos/un33k/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/un33k/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/un33k/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/un33k/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/un33k/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/un33k/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/un33k/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/un33k/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/un33k/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/un33k/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/un33k/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/un33k/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/un33k/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/un33k/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/un33k/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/un33k/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/un33k/python-slugify/merges", + "archive_url": "https://api.github.com/repos/un33k/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/un33k/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/un33k/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/un33k/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/un33k/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/un33k/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/un33k/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/un33k/python-slugify/deployments", + "created_at": "2012-10-15T01:44:50Z", + "updated_at": "2026-09-05T12:52:20Z", + "pushed_at": "2026-04-27T11:17:17Z", + "git_url": "git://github.com/un33k/python-slugify.git", + "ssh_url": "git@github.com:un33k/python-slugify.git", + "clone_url": "https://github.com/un33k/python-slugify.git", + "svn_url": "https://github.com/un33k/python-slugify", + "homepage": "", + "size": 208, + "stargazers_count": 1623, + "watchers_count": 1623, + "language": "Python", + "has_issues": true, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 134, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 17, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 134, + "open_issues": 17, + "watchers": 1623, + "default_branch": "master" + } + }, + "_links": { + "self": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/132" + }, + "html": { + "href": "https://github.com/un33k/python-slugify/pull/132" + }, + "issue": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/132" + }, + "comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/132/comments" + }, + "review_comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/132/comments" + }, + "review_comment": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}" + }, + "commits": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/132/commits" + }, + "statuses": { + "href": "https://api.github.com/repos/un33k/python-slugify/statuses/0247e0548d46d7e481b98f528b5cbaf5c98eb17d" + } + }, + "author_association": "CONTRIBUTOR", + "auto_merge": null, + "assignee": null, + "active_lock_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/134", + "id": 1464351799, + "node_id": "PR_kwDOAF7qK85XSDw3", + "html_url": "https://github.com/un33k/python-slugify/pull/134", + "diff_url": "https://github.com/un33k/python-slugify/pull/134.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/134.patch", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/134", + "number": 134, + "state": "closed", + "locked": false, + "title": "Enables mypy --strict and adds corresponding types", + "user": { + "login": "jmelahman", + "id": 23436978, + "node_id": "MDQ6VXNlcjIzNDM2OTc4", + "avatar_url": "https://avatars.githubusercontent.com/u/23436978?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/jmelahman", + "html_url": "https://github.com/jmelahman", + "followers_url": "https://api.github.com/users/jmelahman/followers", + "following_url": "https://api.github.com/users/jmelahman/following{/other_user}", + "gists_url": "https://api.github.com/users/jmelahman/gists{/gist_id}", + "starred_url": "https://api.github.com/users/jmelahman/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/jmelahman/subscriptions", + "organizations_url": "https://api.github.com/users/jmelahman/orgs", + "repos_url": "https://api.github.com/users/jmelahman/repos", + "events_url": "https://api.github.com/users/jmelahman/events{/privacy}", + "received_events_url": "https://api.github.com/users/jmelahman/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "body": "Enables `mypy --strict` and types everything to be mostly compliant. There are a few, internal ignores mostly because they either require refactoring or extra dependencies (like [typing-extensions](https://pypi.org/project/typing-extensions/) for older python versions).\r\n\r\nI tried to minimize behavioral changes, though there are some. Can address the TODOs introduced here to achieve stronger type-safety or I can follow up with a separate change if desired.\r\n\r\nThis is pushed to HEAD of my fork and you can observe CI approves, https://github.com/jmelahman/python-slugify/actions/runs/5779513831", + "created_at": "2023-08-06T22:15:24Z", + "updated_at": "2023-08-13T22:08:47Z", + "closed_at": "2023-08-13T19:53:50Z", + "merged_at": null, + "merge_commit_sha": "4bfd4c5cd314118789e24b0fc5bbfb503098c240", + "assignees": [], + "requested_reviewers": [], + "requested_teams": [], + "labels": [], + "milestone": null, + "draft": false, + "commits_url": "https://api.github.com/repos/un33k/python-slugify/pulls/134/commits", + "review_comments_url": "https://api.github.com/repos/un33k/python-slugify/pulls/134/comments", + "review_comment_url": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/134/comments", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/60e94b91542fd8c07942b3b76dd65a3151352b4f", + "head": { + "label": "jmelahman:jamison/strict-types", + "ref": "jamison/strict-types", + "sha": "60e94b91542fd8c07942b3b76dd65a3151352b4f", + "user": { + "login": "jmelahman", + "id": 23436978, + "node_id": "MDQ6VXNlcjIzNDM2OTc4", + "avatar_url": "https://avatars.githubusercontent.com/u/23436978?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/jmelahman", + "html_url": "https://github.com/jmelahman", + "followers_url": "https://api.github.com/users/jmelahman/followers", + "following_url": "https://api.github.com/users/jmelahman/following{/other_user}", + "gists_url": "https://api.github.com/users/jmelahman/gists{/gist_id}", + "starred_url": "https://api.github.com/users/jmelahman/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/jmelahman/subscriptions", + "organizations_url": "https://api.github.com/users/jmelahman/orgs", + "repos_url": "https://api.github.com/users/jmelahman/repos", + "events_url": "https://api.github.com/users/jmelahman/events{/privacy}", + "received_events_url": "https://api.github.com/users/jmelahman/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": null + }, + "base": { + "label": "un33k:master", + "ref": "master", + "sha": "cab324665b19ab661421697da79ebc902e0ea57c", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 6220331, + "node_id": "MDEwOlJlcG9zaXRvcnk2MjIwMzMx", + "name": "python-slugify", + "full_name": "un33k/python-slugify", + "private": false, + "owner": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/un33k/python-slugify", + "description": "Returns unicode slugs", + "fork": false, + "url": "https://api.github.com/repos/un33k/python-slugify", + "forks_url": "https://api.github.com/repos/un33k/python-slugify/forks", + "keys_url": "https://api.github.com/repos/un33k/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/un33k/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/un33k/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/un33k/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/un33k/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/un33k/python-slugify/events", + "assignees_url": "https://api.github.com/repos/un33k/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/un33k/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/un33k/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/un33k/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/un33k/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/un33k/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/un33k/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/un33k/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/un33k/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/un33k/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/un33k/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/un33k/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/un33k/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/un33k/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/un33k/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/un33k/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/un33k/python-slugify/merges", + "archive_url": "https://api.github.com/repos/un33k/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/un33k/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/un33k/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/un33k/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/un33k/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/un33k/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/un33k/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/un33k/python-slugify/deployments", + "created_at": "2012-10-15T01:44:50Z", + "updated_at": "2026-09-05T12:52:20Z", + "pushed_at": "2026-04-27T11:17:17Z", + "git_url": "git://github.com/un33k/python-slugify.git", + "ssh_url": "git@github.com:un33k/python-slugify.git", + "clone_url": "https://github.com/un33k/python-slugify.git", + "svn_url": "https://github.com/un33k/python-slugify", + "homepage": "", + "size": 208, + "stargazers_count": 1623, + "watchers_count": 1623, + "language": "Python", + "has_issues": true, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 134, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 17, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 134, + "open_issues": 17, + "watchers": 1623, + "default_branch": "master" + } + }, + "_links": { + "self": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/134" + }, + "html": { + "href": "https://github.com/un33k/python-slugify/pull/134" + }, + "issue": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/134" + }, + "comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/134/comments" + }, + "review_comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/134/comments" + }, + "review_comment": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}" + }, + "commits": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/134/commits" + }, + "statuses": { + "href": "https://api.github.com/repos/un33k/python-slugify/statuses/60e94b91542fd8c07942b3b76dd65a3151352b4f" + } + }, + "author_association": "NONE", + "auto_merge": null, + "assignee": null, + "active_lock_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/135", + "id": 1547740046, + "node_id": "PR_kwDOAF7qK85cQKOO", + "html_url": "https://github.com/un33k/python-slugify/pull/135", + "diff_url": "https://github.com/un33k/python-slugify/pull/135.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/135.patch", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/135", + "number": 135, + "state": "closed", + "locked": false, + "title": "Add typing and expose ``py.typed``", + "user": { + "login": "DanielNoord", + "id": 13665637, + "node_id": "MDQ6VXNlcjEzNjY1NjM3", + "avatar_url": "https://avatars.githubusercontent.com/u/13665637?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/DanielNoord", + "html_url": "https://github.com/DanielNoord", + "followers_url": "https://api.github.com/users/DanielNoord/followers", + "following_url": "https://api.github.com/users/DanielNoord/following{/other_user}", + "gists_url": "https://api.github.com/users/DanielNoord/gists{/gist_id}", + "starred_url": "https://api.github.com/users/DanielNoord/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/DanielNoord/subscriptions", + "organizations_url": "https://api.github.com/users/DanielNoord/orgs", + "repos_url": "https://api.github.com/users/DanielNoord/repos", + "events_url": "https://api.github.com/users/DanielNoord/events{/privacy}", + "received_events_url": "https://api.github.com/users/DanielNoord/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "body": "This adds typing to the package and exposes a `py.typed` file.\r\n\r\nThere is one change where `add_uppercase_char` returns `char_list` if the other `return` statement is never met. This seems intended, the function returning `None` doesn't seem like what is intended with the code.\r\n\r\nLet me know if I need to make any changes!\r\n\r\nThe tests passed with this change on `3.7`.", + "created_at": "2023-10-09T12:15:23Z", + "updated_at": "2023-10-09T13:50:47Z", + "closed_at": "2023-10-09T13:50:23Z", + "merged_at": "2023-10-09T13:50:23Z", + "merge_commit_sha": "c3fe5741141142f9bcc3750d095b534afba02fed", + "assignees": [], + "requested_reviewers": [], + "requested_teams": [], + "labels": [], + "milestone": null, + "draft": false, + "commits_url": "https://api.github.com/repos/un33k/python-slugify/pulls/135/commits", + "review_comments_url": "https://api.github.com/repos/un33k/python-slugify/pulls/135/comments", + "review_comment_url": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/135/comments", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/3f04de2c4aae8c5a146bab7f935e88ac6539003d", + "head": { + "label": "DanielNoord:add-typing", + "ref": "add-typing", + "sha": "3f04de2c4aae8c5a146bab7f935e88ac6539003d", + "user": { + "login": "DanielNoord", + "id": 13665637, + "node_id": "MDQ6VXNlcjEzNjY1NjM3", + "avatar_url": "https://avatars.githubusercontent.com/u/13665637?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/DanielNoord", + "html_url": "https://github.com/DanielNoord", + "followers_url": "https://api.github.com/users/DanielNoord/followers", + "following_url": "https://api.github.com/users/DanielNoord/following{/other_user}", + "gists_url": "https://api.github.com/users/DanielNoord/gists{/gist_id}", + "starred_url": "https://api.github.com/users/DanielNoord/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/DanielNoord/subscriptions", + "organizations_url": "https://api.github.com/users/DanielNoord/orgs", + "repos_url": "https://api.github.com/users/DanielNoord/repos", + "events_url": "https://api.github.com/users/DanielNoord/events{/privacy}", + "received_events_url": "https://api.github.com/users/DanielNoord/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": null + }, + "base": { + "label": "un33k:staging", + "ref": "staging", + "sha": "cab324665b19ab661421697da79ebc902e0ea57c", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 6220331, + "node_id": "MDEwOlJlcG9zaXRvcnk2MjIwMzMx", + "name": "python-slugify", + "full_name": "un33k/python-slugify", + "private": false, + "owner": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/un33k/python-slugify", + "description": "Returns unicode slugs", + "fork": false, + "url": "https://api.github.com/repos/un33k/python-slugify", + "forks_url": "https://api.github.com/repos/un33k/python-slugify/forks", + "keys_url": "https://api.github.com/repos/un33k/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/un33k/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/un33k/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/un33k/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/un33k/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/un33k/python-slugify/events", + "assignees_url": "https://api.github.com/repos/un33k/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/un33k/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/un33k/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/un33k/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/un33k/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/un33k/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/un33k/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/un33k/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/un33k/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/un33k/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/un33k/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/un33k/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/un33k/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/un33k/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/un33k/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/un33k/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/un33k/python-slugify/merges", + "archive_url": "https://api.github.com/repos/un33k/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/un33k/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/un33k/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/un33k/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/un33k/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/un33k/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/un33k/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/un33k/python-slugify/deployments", + "created_at": "2012-10-15T01:44:50Z", + "updated_at": "2026-09-05T12:52:20Z", + "pushed_at": "2026-04-27T11:17:17Z", + "git_url": "git://github.com/un33k/python-slugify.git", + "ssh_url": "git@github.com:un33k/python-slugify.git", + "clone_url": "https://github.com/un33k/python-slugify.git", + "svn_url": "https://github.com/un33k/python-slugify", + "homepage": "", + "size": 208, + "stargazers_count": 1623, + "watchers_count": 1623, + "language": "Python", + "has_issues": true, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 134, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 17, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 134, + "open_issues": 17, + "watchers": 1623, + "default_branch": "master" + } + }, + "_links": { + "self": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/135" + }, + "html": { + "href": "https://github.com/un33k/python-slugify/pull/135" + }, + "issue": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/135" + }, + "comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/135/comments" + }, + "review_comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/135/comments" + }, + "review_comment": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}" + }, + "commits": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/135/commits" + }, + "statuses": { + "href": "https://api.github.com/repos/un33k/python-slugify/statuses/3f04de2c4aae8c5a146bab7f935e88ac6539003d" + } + }, + "author_association": "CONTRIBUTOR", + "auto_merge": null, + "assignee": null, + "active_lock_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/136", + "id": 1547970594, + "node_id": "PR_kwDOAF7qK85cRCgi", + "html_url": "https://github.com/un33k/python-slugify/pull/136", + "diff_url": "https://github.com/un33k/python-slugify/pull/136.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/136.patch", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/136", + "number": 136, + "state": "closed", + "locked": false, + "title": "Revert \"Replace flake8 and pycodestyle with ruff\"", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "body": "Reverts un33k/python-slugify#131\r\n\r\nGithub Action Error:\r\n```\r\n Python 3.7\r\nNo file in /home/runner/work/python-slugify/python-slugify matched to [**/requirements.txt \r\nor **/pyproject.toml], make sure you have checked out the target repository\r\n```", + "created_at": "2023-10-09T14:14:56Z", + "updated_at": "2023-10-09T14:15:05Z", + "closed_at": "2023-10-09T14:15:05Z", + "merged_at": "2023-10-09T14:15:05Z", + "merge_commit_sha": "ef375be69f5758d3b0fb0f041ee5a11cff73ceb2", + "assignees": [], + "requested_reviewers": [], + "requested_teams": [], + "labels": [], + "milestone": null, + "draft": false, + "commits_url": "https://api.github.com/repos/un33k/python-slugify/pulls/136/commits", + "review_comments_url": "https://api.github.com/repos/un33k/python-slugify/pulls/136/comments", + "review_comment_url": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/136/comments", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/a1c3e4d266a1d2de0e696d20d9cbb73e26b1eb54", + "head": { + "label": "un33k:revert-131-ruff", + "ref": "revert-131-ruff", + "sha": "a1c3e4d266a1d2de0e696d20d9cbb73e26b1eb54", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 6220331, + "node_id": "MDEwOlJlcG9zaXRvcnk2MjIwMzMx", + "name": "python-slugify", + "full_name": "un33k/python-slugify", + "private": false, + "owner": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/un33k/python-slugify", + "description": "Returns unicode slugs", + "fork": false, + "url": "https://api.github.com/repos/un33k/python-slugify", + "forks_url": "https://api.github.com/repos/un33k/python-slugify/forks", + "keys_url": "https://api.github.com/repos/un33k/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/un33k/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/un33k/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/un33k/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/un33k/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/un33k/python-slugify/events", + "assignees_url": "https://api.github.com/repos/un33k/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/un33k/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/un33k/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/un33k/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/un33k/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/un33k/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/un33k/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/un33k/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/un33k/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/un33k/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/un33k/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/un33k/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/un33k/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/un33k/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/un33k/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/un33k/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/un33k/python-slugify/merges", + "archive_url": "https://api.github.com/repos/un33k/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/un33k/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/un33k/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/un33k/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/un33k/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/un33k/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/un33k/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/un33k/python-slugify/deployments", + "created_at": "2012-10-15T01:44:50Z", + "updated_at": "2026-09-05T12:52:20Z", + "pushed_at": "2026-04-27T11:17:17Z", + "git_url": "git://github.com/un33k/python-slugify.git", + "ssh_url": "git@github.com:un33k/python-slugify.git", + "clone_url": "https://github.com/un33k/python-slugify.git", + "svn_url": "https://github.com/un33k/python-slugify", + "homepage": "", + "size": 208, + "stargazers_count": 1623, + "watchers_count": 1623, + "language": "Python", + "has_issues": true, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 134, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 17, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 134, + "open_issues": 17, + "watchers": 1623, + "default_branch": "master" + } + }, + "base": { + "label": "un33k:master", + "ref": "master", + "sha": "59eb957b26b3a5049a12aad951cd7e140909d0e1", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 6220331, + "node_id": "MDEwOlJlcG9zaXRvcnk2MjIwMzMx", + "name": "python-slugify", + "full_name": "un33k/python-slugify", + "private": false, + "owner": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/un33k/python-slugify", + "description": "Returns unicode slugs", + "fork": false, + "url": "https://api.github.com/repos/un33k/python-slugify", + "forks_url": "https://api.github.com/repos/un33k/python-slugify/forks", + "keys_url": "https://api.github.com/repos/un33k/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/un33k/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/un33k/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/un33k/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/un33k/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/un33k/python-slugify/events", + "assignees_url": "https://api.github.com/repos/un33k/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/un33k/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/un33k/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/un33k/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/un33k/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/un33k/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/un33k/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/un33k/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/un33k/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/un33k/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/un33k/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/un33k/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/un33k/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/un33k/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/un33k/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/un33k/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/un33k/python-slugify/merges", + "archive_url": "https://api.github.com/repos/un33k/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/un33k/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/un33k/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/un33k/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/un33k/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/un33k/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/un33k/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/un33k/python-slugify/deployments", + "created_at": "2012-10-15T01:44:50Z", + "updated_at": "2026-09-05T12:52:20Z", + "pushed_at": "2026-04-27T11:17:17Z", + "git_url": "git://github.com/un33k/python-slugify.git", + "ssh_url": "git@github.com:un33k/python-slugify.git", + "clone_url": "https://github.com/un33k/python-slugify.git", + "svn_url": "https://github.com/un33k/python-slugify", + "homepage": "", + "size": 208, + "stargazers_count": 1623, + "watchers_count": 1623, + "language": "Python", + "has_issues": true, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 134, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 17, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 134, + "open_issues": 17, + "watchers": 1623, + "default_branch": "master" + } + }, + "_links": { + "self": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/136" + }, + "html": { + "href": "https://github.com/un33k/python-slugify/pull/136" + }, + "issue": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/136" + }, + "comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/136/comments" + }, + "review_comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/136/comments" + }, + "review_comment": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}" + }, + "commits": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/136/commits" + }, + "statuses": { + "href": "https://api.github.com/repos/un33k/python-slugify/statuses/a1c3e4d266a1d2de0e696d20d9cbb73e26b1eb54" + } + }, + "author_association": "OWNER", + "auto_merge": null, + "assignee": null, + "active_lock_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/137", + "id": 1547984473, + "node_id": "PR_kwDOAF7qK85cRF5Z", + "html_url": "https://github.com/un33k/python-slugify/pull/137", + "diff_url": "https://github.com/un33k/python-slugify/pull/137.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/137.patch", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/137", + "number": 137, + "state": "closed", + "locked": false, + "title": "Add typing and expose py.typed", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "body": "[Add typing and expose](https://github.com/un33k/python-slugify/commit/c3fe5741141142f9bcc3750d095b534afba02fed) [py.typed](https://github.com/un33k/python-slugify/commit/c3fe5741141142f9bcc3750d095b534afba02fed)", + "created_at": "2023-10-09T14:20:44Z", + "updated_at": "2023-10-09T14:20:55Z", + "closed_at": "2023-10-09T14:20:54Z", + "merged_at": "2023-10-09T14:20:54Z", + "merge_commit_sha": "a07254479b83e7a12fad9db1f481e1ab5fd5ce0d", + "assignees": [], + "requested_reviewers": [], + "requested_teams": [], + "labels": [], + "milestone": null, + "draft": false, + "commits_url": "https://api.github.com/repos/un33k/python-slugify/pulls/137/commits", + "review_comments_url": "https://api.github.com/repos/un33k/python-slugify/pulls/137/comments", + "review_comment_url": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/137/comments", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/02a7b2d1328b2daaf0e80674d157bf72a998bf06", + "head": { + "label": "un33k:staging", + "ref": "staging", + "sha": "02a7b2d1328b2daaf0e80674d157bf72a998bf06", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 6220331, + "node_id": "MDEwOlJlcG9zaXRvcnk2MjIwMzMx", + "name": "python-slugify", + "full_name": "un33k/python-slugify", + "private": false, + "owner": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/un33k/python-slugify", + "description": "Returns unicode slugs", + "fork": false, + "url": "https://api.github.com/repos/un33k/python-slugify", + "forks_url": "https://api.github.com/repos/un33k/python-slugify/forks", + "keys_url": "https://api.github.com/repos/un33k/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/un33k/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/un33k/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/un33k/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/un33k/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/un33k/python-slugify/events", + "assignees_url": "https://api.github.com/repos/un33k/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/un33k/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/un33k/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/un33k/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/un33k/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/un33k/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/un33k/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/un33k/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/un33k/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/un33k/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/un33k/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/un33k/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/un33k/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/un33k/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/un33k/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/un33k/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/un33k/python-slugify/merges", + "archive_url": "https://api.github.com/repos/un33k/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/un33k/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/un33k/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/un33k/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/un33k/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/un33k/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/un33k/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/un33k/python-slugify/deployments", + "created_at": "2012-10-15T01:44:50Z", + "updated_at": "2026-09-05T12:52:20Z", + "pushed_at": "2026-04-27T11:17:17Z", + "git_url": "git://github.com/un33k/python-slugify.git", + "ssh_url": "git@github.com:un33k/python-slugify.git", + "clone_url": "https://github.com/un33k/python-slugify.git", + "svn_url": "https://github.com/un33k/python-slugify", + "homepage": "", + "size": 208, + "stargazers_count": 1623, + "watchers_count": 1623, + "language": "Python", + "has_issues": true, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 134, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 17, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 134, + "open_issues": 17, + "watchers": 1623, + "default_branch": "master" + } + }, + "base": { + "label": "un33k:master", + "ref": "master", + "sha": "ef375be69f5758d3b0fb0f041ee5a11cff73ceb2", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 6220331, + "node_id": "MDEwOlJlcG9zaXRvcnk2MjIwMzMx", + "name": "python-slugify", + "full_name": "un33k/python-slugify", + "private": false, + "owner": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/un33k/python-slugify", + "description": "Returns unicode slugs", + "fork": false, + "url": "https://api.github.com/repos/un33k/python-slugify", + "forks_url": "https://api.github.com/repos/un33k/python-slugify/forks", + "keys_url": "https://api.github.com/repos/un33k/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/un33k/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/un33k/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/un33k/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/un33k/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/un33k/python-slugify/events", + "assignees_url": "https://api.github.com/repos/un33k/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/un33k/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/un33k/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/un33k/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/un33k/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/un33k/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/un33k/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/un33k/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/un33k/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/un33k/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/un33k/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/un33k/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/un33k/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/un33k/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/un33k/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/un33k/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/un33k/python-slugify/merges", + "archive_url": "https://api.github.com/repos/un33k/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/un33k/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/un33k/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/un33k/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/un33k/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/un33k/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/un33k/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/un33k/python-slugify/deployments", + "created_at": "2012-10-15T01:44:50Z", + "updated_at": "2026-09-05T12:52:20Z", + "pushed_at": "2026-04-27T11:17:17Z", + "git_url": "git://github.com/un33k/python-slugify.git", + "ssh_url": "git@github.com:un33k/python-slugify.git", + "clone_url": "https://github.com/un33k/python-slugify.git", + "svn_url": "https://github.com/un33k/python-slugify", + "homepage": "", + "size": 208, + "stargazers_count": 1623, + "watchers_count": 1623, + "language": "Python", + "has_issues": true, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 134, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 17, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 134, + "open_issues": 17, + "watchers": 1623, + "default_branch": "master" + } + }, + "_links": { + "self": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/137" + }, + "html": { + "href": "https://github.com/un33k/python-slugify/pull/137" + }, + "issue": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/137" + }, + "comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/137/comments" + }, + "review_comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/137/comments" + }, + "review_comment": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}" + }, + "commits": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/137/commits" + }, + "statuses": { + "href": "https://api.github.com/repos/un33k/python-slugify/statuses/02a7b2d1328b2daaf0e80674d157bf72a998bf06" + } + }, + "author_association": "OWNER", + "auto_merge": null, + "assignee": null, + "active_lock_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/139", + "id": 1573251857, + "node_id": "PR_kwDOAF7qK85dxesR", + "html_url": "https://github.com/un33k/python-slugify/pull/139", + "diff_url": "https://github.com/un33k/python-slugify/pull/139.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/139.patch", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/139", + "number": 139, + "state": "closed", + "locked": false, + "title": "Add Python 3.12 to test matrix and add classifier to the setup", + "user": { + "login": "foarsitter", + "id": 3885256, + "node_id": "MDQ6VXNlcjM4ODUyNTY=", + "avatar_url": "https://avatars.githubusercontent.com/u/3885256?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/foarsitter", + "html_url": "https://github.com/foarsitter", + "followers_url": "https://api.github.com/users/foarsitter/followers", + "following_url": "https://api.github.com/users/foarsitter/following{/other_user}", + "gists_url": "https://api.github.com/users/foarsitter/gists{/gist_id}", + "starred_url": "https://api.github.com/users/foarsitter/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/foarsitter/subscriptions", + "organizations_url": "https://api.github.com/users/foarsitter/orgs", + "repos_url": "https://api.github.com/users/foarsitter/repos", + "events_url": "https://api.github.com/users/foarsitter/events{/privacy}", + "received_events_url": "https://api.github.com/users/foarsitter/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "body": "This PR adds Python 3.12 to the test matrix and classifiers \r\n\r\nFixes #138", + "created_at": "2023-10-25T16:05:39Z", + "updated_at": "2023-10-26T13:28:09Z", + "closed_at": "2023-10-25T16:27:19Z", + "merged_at": "2023-10-25T16:27:19Z", + "merge_commit_sha": "499112de56e19f6ef0dcee32adff3696e4ef5753", + "assignees": [], + "requested_reviewers": [], + "requested_teams": [], + "labels": [], + "milestone": null, + "draft": false, + "commits_url": "https://api.github.com/repos/un33k/python-slugify/pulls/139/commits", + "review_comments_url": "https://api.github.com/repos/un33k/python-slugify/pulls/139/comments", + "review_comment_url": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/139/comments", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/741363d056a85bd53b307079bae473c5a9b0bd52", + "head": { + "label": "foarsitter:py312", + "ref": "py312", + "sha": "741363d056a85bd53b307079bae473c5a9b0bd52", + "user": { + "login": "foarsitter", + "id": 3885256, + "node_id": "MDQ6VXNlcjM4ODUyNTY=", + "avatar_url": "https://avatars.githubusercontent.com/u/3885256?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/foarsitter", + "html_url": "https://github.com/foarsitter", + "followers_url": "https://api.github.com/users/foarsitter/followers", + "following_url": "https://api.github.com/users/foarsitter/following{/other_user}", + "gists_url": "https://api.github.com/users/foarsitter/gists{/gist_id}", + "starred_url": "https://api.github.com/users/foarsitter/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/foarsitter/subscriptions", + "organizations_url": "https://api.github.com/users/foarsitter/orgs", + "repos_url": "https://api.github.com/users/foarsitter/repos", + "events_url": "https://api.github.com/users/foarsitter/events{/privacy}", + "received_events_url": "https://api.github.com/users/foarsitter/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 709897300, + "node_id": "R_kgDOKlAsVA", + "name": "python-slugify", + "full_name": "foarsitter/python-slugify", + "private": false, + "owner": { + "login": "foarsitter", + "id": 3885256, + "node_id": "MDQ6VXNlcjM4ODUyNTY=", + "avatar_url": "https://avatars.githubusercontent.com/u/3885256?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/foarsitter", + "html_url": "https://github.com/foarsitter", + "followers_url": "https://api.github.com/users/foarsitter/followers", + "following_url": "https://api.github.com/users/foarsitter/following{/other_user}", + "gists_url": "https://api.github.com/users/foarsitter/gists{/gist_id}", + "starred_url": "https://api.github.com/users/foarsitter/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/foarsitter/subscriptions", + "organizations_url": "https://api.github.com/users/foarsitter/orgs", + "repos_url": "https://api.github.com/users/foarsitter/repos", + "events_url": "https://api.github.com/users/foarsitter/events{/privacy}", + "received_events_url": "https://api.github.com/users/foarsitter/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/foarsitter/python-slugify", + "description": "Returns unicode slugs", + "fork": true, + "url": "https://api.github.com/repos/foarsitter/python-slugify", + "forks_url": "https://api.github.com/repos/foarsitter/python-slugify/forks", + "keys_url": "https://api.github.com/repos/foarsitter/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/foarsitter/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/foarsitter/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/foarsitter/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/foarsitter/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/foarsitter/python-slugify/events", + "assignees_url": "https://api.github.com/repos/foarsitter/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/foarsitter/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/foarsitter/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/foarsitter/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/foarsitter/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/foarsitter/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/foarsitter/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/foarsitter/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/foarsitter/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/foarsitter/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/foarsitter/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/foarsitter/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/foarsitter/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/foarsitter/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/foarsitter/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/foarsitter/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/foarsitter/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/foarsitter/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/foarsitter/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/foarsitter/python-slugify/merges", + "archive_url": "https://api.github.com/repos/foarsitter/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/foarsitter/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/foarsitter/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/foarsitter/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/foarsitter/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/foarsitter/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/foarsitter/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/foarsitter/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/foarsitter/python-slugify/deployments", + "created_at": "2023-10-25T15:58:27Z", + "updated_at": "2023-10-25T15:58:27Z", + "pushed_at": "2023-10-25T16:03:21Z", + "git_url": "git://github.com/foarsitter/python-slugify.git", + "ssh_url": "git@github.com:foarsitter/python-slugify.git", + "clone_url": "https://github.com/foarsitter/python-slugify.git", + "svn_url": "https://github.com/foarsitter/python-slugify", + "homepage": "", + "size": 186, + "stargazers_count": 0, + "watchers_count": 0, + "language": null, + "has_issues": false, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 0, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 0, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 0, + "open_issues": 0, + "watchers": 0, + "default_branch": "master" + } + }, + "base": { + "label": "un33k:master", + "ref": "master", + "sha": "a07254479b83e7a12fad9db1f481e1ab5fd5ce0d", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 6220331, + "node_id": "MDEwOlJlcG9zaXRvcnk2MjIwMzMx", + "name": "python-slugify", + "full_name": "un33k/python-slugify", + "private": false, + "owner": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/un33k/python-slugify", + "description": "Returns unicode slugs", + "fork": false, + "url": "https://api.github.com/repos/un33k/python-slugify", + "forks_url": "https://api.github.com/repos/un33k/python-slugify/forks", + "keys_url": "https://api.github.com/repos/un33k/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/un33k/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/un33k/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/un33k/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/un33k/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/un33k/python-slugify/events", + "assignees_url": "https://api.github.com/repos/un33k/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/un33k/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/un33k/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/un33k/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/un33k/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/un33k/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/un33k/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/un33k/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/un33k/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/un33k/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/un33k/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/un33k/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/un33k/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/un33k/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/un33k/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/un33k/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/un33k/python-slugify/merges", + "archive_url": "https://api.github.com/repos/un33k/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/un33k/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/un33k/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/un33k/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/un33k/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/un33k/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/un33k/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/un33k/python-slugify/deployments", + "created_at": "2012-10-15T01:44:50Z", + "updated_at": "2026-09-05T12:52:20Z", + "pushed_at": "2026-04-27T11:17:17Z", + "git_url": "git://github.com/un33k/python-slugify.git", + "ssh_url": "git@github.com:un33k/python-slugify.git", + "clone_url": "https://github.com/un33k/python-slugify.git", + "svn_url": "https://github.com/un33k/python-slugify", + "homepage": "", + "size": 208, + "stargazers_count": 1623, + "watchers_count": 1623, + "language": "Python", + "has_issues": true, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 134, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 17, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 134, + "open_issues": 17, + "watchers": 1623, + "default_branch": "master" + } + }, + "_links": { + "self": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/139" + }, + "html": { + "href": "https://github.com/un33k/python-slugify/pull/139" + }, + "issue": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/139" + }, + "comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/139/comments" + }, + "review_comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/139/comments" + }, + "review_comment": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}" + }, + "commits": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/139/commits" + }, + "statuses": { + "href": "https://api.github.com/repos/un33k/python-slugify/statuses/741363d056a85bd53b307079bae473c5a9b0bd52" + } + }, + "author_association": "CONTRIBUTOR", + "auto_merge": null, + "assignee": null, + "active_lock_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/143", + "id": 1695975927, + "node_id": "PR_kwDOAF7qK85lFon3", + "html_url": "https://github.com/un33k/python-slugify/pull/143", + "diff_url": "https://github.com/un33k/python-slugify/pull/143.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/143.patch", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/143", + "number": 143, + "state": "closed", + "locked": false, + "title": "Ci - Normalize accented text twice.", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "body": "Normalize accented text twice.", + "created_at": "2024-01-25T17:04:15Z", + "updated_at": "2024-01-25T17:04:55Z", + "closed_at": "2024-01-25T17:04:55Z", + "merged_at": "2024-01-25T17:04:55Z", + "merge_commit_sha": "e52c35e34899bc21a389aa7f4fe5084423cf538c", + "assignees": [], + "requested_reviewers": [], + "requested_teams": [], + "labels": [], + "milestone": null, + "draft": false, + "commits_url": "https://api.github.com/repos/un33k/python-slugify/pulls/143/commits", + "review_comments_url": "https://api.github.com/repos/un33k/python-slugify/pulls/143/comments", + "review_comment_url": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/143/comments", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/237ccbd93244a0d435bfdb56f94ae4008a7b85b9", + "head": { + "label": "un33k:ci", + "ref": "ci", + "sha": "237ccbd93244a0d435bfdb56f94ae4008a7b85b9", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 6220331, + "node_id": "MDEwOlJlcG9zaXRvcnk2MjIwMzMx", + "name": "python-slugify", + "full_name": "un33k/python-slugify", + "private": false, + "owner": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/un33k/python-slugify", + "description": "Returns unicode slugs", + "fork": false, + "url": "https://api.github.com/repos/un33k/python-slugify", + "forks_url": "https://api.github.com/repos/un33k/python-slugify/forks", + "keys_url": "https://api.github.com/repos/un33k/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/un33k/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/un33k/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/un33k/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/un33k/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/un33k/python-slugify/events", + "assignees_url": "https://api.github.com/repos/un33k/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/un33k/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/un33k/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/un33k/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/un33k/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/un33k/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/un33k/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/un33k/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/un33k/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/un33k/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/un33k/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/un33k/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/un33k/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/un33k/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/un33k/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/un33k/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/un33k/python-slugify/merges", + "archive_url": "https://api.github.com/repos/un33k/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/un33k/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/un33k/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/un33k/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/un33k/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/un33k/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/un33k/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/un33k/python-slugify/deployments", + "created_at": "2012-10-15T01:44:50Z", + "updated_at": "2026-09-05T12:52:20Z", + "pushed_at": "2026-04-27T11:17:17Z", + "git_url": "git://github.com/un33k/python-slugify.git", + "ssh_url": "git@github.com:un33k/python-slugify.git", + "clone_url": "https://github.com/un33k/python-slugify.git", + "svn_url": "https://github.com/un33k/python-slugify", + "homepage": "", + "size": 208, + "stargazers_count": 1623, + "watchers_count": 1623, + "language": "Python", + "has_issues": true, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 134, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 17, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 134, + "open_issues": 17, + "watchers": 1623, + "default_branch": "master" + } + }, + "base": { + "label": "un33k:master", + "ref": "master", + "sha": "499112de56e19f6ef0dcee32adff3696e4ef5753", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 6220331, + "node_id": "MDEwOlJlcG9zaXRvcnk2MjIwMzMx", + "name": "python-slugify", + "full_name": "un33k/python-slugify", + "private": false, + "owner": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/un33k/python-slugify", + "description": "Returns unicode slugs", + "fork": false, + "url": "https://api.github.com/repos/un33k/python-slugify", + "forks_url": "https://api.github.com/repos/un33k/python-slugify/forks", + "keys_url": "https://api.github.com/repos/un33k/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/un33k/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/un33k/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/un33k/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/un33k/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/un33k/python-slugify/events", + "assignees_url": "https://api.github.com/repos/un33k/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/un33k/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/un33k/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/un33k/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/un33k/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/un33k/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/un33k/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/un33k/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/un33k/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/un33k/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/un33k/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/un33k/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/un33k/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/un33k/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/un33k/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/un33k/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/un33k/python-slugify/merges", + "archive_url": "https://api.github.com/repos/un33k/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/un33k/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/un33k/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/un33k/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/un33k/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/un33k/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/un33k/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/un33k/python-slugify/deployments", + "created_at": "2012-10-15T01:44:50Z", + "updated_at": "2026-09-05T12:52:20Z", + "pushed_at": "2026-04-27T11:17:17Z", + "git_url": "git://github.com/un33k/python-slugify.git", + "ssh_url": "git@github.com:un33k/python-slugify.git", + "clone_url": "https://github.com/un33k/python-slugify.git", + "svn_url": "https://github.com/un33k/python-slugify", + "homepage": "", + "size": 208, + "stargazers_count": 1623, + "watchers_count": 1623, + "language": "Python", + "has_issues": true, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 134, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 17, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 134, + "open_issues": 17, + "watchers": 1623, + "default_branch": "master" + } + }, + "_links": { + "self": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/143" + }, + "html": { + "href": "https://github.com/un33k/python-slugify/pull/143" + }, + "issue": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/143" + }, + "comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/143/comments" + }, + "review_comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/143/comments" + }, + "review_comment": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}" + }, + "commits": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/143/commits" + }, + "statuses": { + "href": "https://api.github.com/repos/un33k/python-slugify/statuses/237ccbd93244a0d435bfdb56f94ae4008a7b85b9" + } + }, + "author_association": "OWNER", + "auto_merge": null, + "assignee": null, + "active_lock_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/145", + "id": 1704020686, + "node_id": "PR_kwDOAF7qK85lkUrO", + "html_url": "https://github.com/un33k/python-slugify/pull/145", + "diff_url": "https://github.com/un33k/python-slugify/pull/145.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/145.patch", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/145", + "number": 145, + "state": "closed", + "locked": false, + "title": "Remove compatibility with unsupported Python versions", + "user": { + "login": "Viicos", + "id": 65306057, + "node_id": "MDQ6VXNlcjY1MzA2MDU3", + "avatar_url": "https://avatars.githubusercontent.com/u/65306057?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/Viicos", + "html_url": "https://github.com/Viicos", + "followers_url": "https://api.github.com/users/Viicos/followers", + "following_url": "https://api.github.com/users/Viicos/following{/other_user}", + "gists_url": "https://api.github.com/users/Viicos/gists{/gist_id}", + "starred_url": "https://api.github.com/users/Viicos/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/Viicos/subscriptions", + "organizations_url": "https://api.github.com/users/Viicos/orgs", + "repos_url": "https://api.github.com/users/Viicos/repos", + "events_url": "https://api.github.com/users/Viicos/events{/privacy}", + "received_events_url": "https://api.github.com/users/Viicos/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "body": "Also fix typing of `pattern`", + "created_at": "2024-01-31T12:56:18Z", + "updated_at": "2024-01-31T17:58:29Z", + "closed_at": "2024-01-31T17:55:11Z", + "merged_at": null, + "merge_commit_sha": "d47cf4cd4bfb21b4cd309ebdd6e515bc8f4cc74c", + "assignees": [], + "requested_reviewers": [], + "requested_teams": [], + "labels": [], + "milestone": null, + "draft": false, + "commits_url": "https://api.github.com/repos/un33k/python-slugify/pulls/145/commits", + "review_comments_url": "https://api.github.com/repos/un33k/python-slugify/pulls/145/comments", + "review_comment_url": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/145/comments", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/838052a21d506c07135f83ec8056d7167d1240e1", + "head": { + "label": "Viicos:drop-python-2-compat", + "ref": "drop-python-2-compat", + "sha": "838052a21d506c07135f83ec8056d7167d1240e1", + "user": { + "login": "Viicos", + "id": 65306057, + "node_id": "MDQ6VXNlcjY1MzA2MDU3", + "avatar_url": "https://avatars.githubusercontent.com/u/65306057?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/Viicos", + "html_url": "https://github.com/Viicos", + "followers_url": "https://api.github.com/users/Viicos/followers", + "following_url": "https://api.github.com/users/Viicos/following{/other_user}", + "gists_url": "https://api.github.com/users/Viicos/gists{/gist_id}", + "starred_url": "https://api.github.com/users/Viicos/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/Viicos/subscriptions", + "organizations_url": "https://api.github.com/users/Viicos/orgs", + "repos_url": "https://api.github.com/users/Viicos/repos", + "events_url": "https://api.github.com/users/Viicos/events{/privacy}", + "received_events_url": "https://api.github.com/users/Viicos/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 750848150, + "node_id": "R_kgDOLMEIlg", + "name": "python-slugify", + "full_name": "Viicos/python-slugify", + "private": false, + "owner": { + "login": "Viicos", + "id": 65306057, + "node_id": "MDQ6VXNlcjY1MzA2MDU3", + "avatar_url": "https://avatars.githubusercontent.com/u/65306057?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/Viicos", + "html_url": "https://github.com/Viicos", + "followers_url": "https://api.github.com/users/Viicos/followers", + "following_url": "https://api.github.com/users/Viicos/following{/other_user}", + "gists_url": "https://api.github.com/users/Viicos/gists{/gist_id}", + "starred_url": "https://api.github.com/users/Viicos/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/Viicos/subscriptions", + "organizations_url": "https://api.github.com/users/Viicos/orgs", + "repos_url": "https://api.github.com/users/Viicos/repos", + "events_url": "https://api.github.com/users/Viicos/events{/privacy}", + "received_events_url": "https://api.github.com/users/Viicos/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/Viicos/python-slugify", + "description": "Returns unicode slugs", + "fork": true, + "url": "https://api.github.com/repos/Viicos/python-slugify", + "forks_url": "https://api.github.com/repos/Viicos/python-slugify/forks", + "keys_url": "https://api.github.com/repos/Viicos/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/Viicos/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/Viicos/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/Viicos/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/Viicos/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/Viicos/python-slugify/events", + "assignees_url": "https://api.github.com/repos/Viicos/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/Viicos/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/Viicos/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/Viicos/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/Viicos/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/Viicos/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/Viicos/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/Viicos/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/Viicos/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/Viicos/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/Viicos/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/Viicos/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/Viicos/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/Viicos/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/Viicos/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/Viicos/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/Viicos/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/Viicos/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/Viicos/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/Viicos/python-slugify/merges", + "archive_url": "https://api.github.com/repos/Viicos/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/Viicos/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/Viicos/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/Viicos/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/Viicos/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/Viicos/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/Viicos/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/Viicos/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/Viicos/python-slugify/deployments", + "created_at": "2024-01-31T12:51:04Z", + "updated_at": "2024-01-31T12:51:04Z", + "pushed_at": "2024-01-31T18:05:35Z", + "git_url": "git://github.com/Viicos/python-slugify.git", + "ssh_url": "git@github.com:Viicos/python-slugify.git", + "clone_url": "https://github.com/Viicos/python-slugify.git", + "svn_url": "https://github.com/Viicos/python-slugify", + "homepage": "", + "size": 181, + "stargazers_count": 0, + "watchers_count": 0, + "language": null, + "has_issues": false, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 0, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 0, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 0, + "open_issues": 0, + "watchers": 0, + "default_branch": "master" + } + }, + "base": { + "label": "un33k:ci", + "ref": "ci", + "sha": "237ccbd93244a0d435bfdb56f94ae4008a7b85b9", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 6220331, + "node_id": "MDEwOlJlcG9zaXRvcnk2MjIwMzMx", + "name": "python-slugify", + "full_name": "un33k/python-slugify", + "private": false, + "owner": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/un33k/python-slugify", + "description": "Returns unicode slugs", + "fork": false, + "url": "https://api.github.com/repos/un33k/python-slugify", + "forks_url": "https://api.github.com/repos/un33k/python-slugify/forks", + "keys_url": "https://api.github.com/repos/un33k/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/un33k/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/un33k/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/un33k/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/un33k/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/un33k/python-slugify/events", + "assignees_url": "https://api.github.com/repos/un33k/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/un33k/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/un33k/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/un33k/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/un33k/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/un33k/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/un33k/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/un33k/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/un33k/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/un33k/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/un33k/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/un33k/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/un33k/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/un33k/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/un33k/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/un33k/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/un33k/python-slugify/merges", + "archive_url": "https://api.github.com/repos/un33k/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/un33k/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/un33k/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/un33k/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/un33k/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/un33k/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/un33k/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/un33k/python-slugify/deployments", + "created_at": "2012-10-15T01:44:50Z", + "updated_at": "2026-09-05T12:52:20Z", + "pushed_at": "2026-04-27T11:17:17Z", + "git_url": "git://github.com/un33k/python-slugify.git", + "ssh_url": "git@github.com:un33k/python-slugify.git", + "clone_url": "https://github.com/un33k/python-slugify.git", + "svn_url": "https://github.com/un33k/python-slugify", + "homepage": "", + "size": 208, + "stargazers_count": 1623, + "watchers_count": 1623, + "language": "Python", + "has_issues": true, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 134, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 17, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 134, + "open_issues": 17, + "watchers": 1623, + "default_branch": "master" + } + }, + "_links": { + "self": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/145" + }, + "html": { + "href": "https://github.com/un33k/python-slugify/pull/145" + }, + "issue": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/145" + }, + "comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/145/comments" + }, + "review_comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/145/comments" + }, + "review_comment": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}" + }, + "commits": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/145/commits" + }, + "statuses": { + "href": "https://api.github.com/repos/un33k/python-slugify/statuses/838052a21d506c07135f83ec8056d7167d1240e1" + } + }, + "author_association": "CONTRIBUTOR", + "auto_merge": null, + "assignee": null, + "active_lock_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/146", + "id": 1704588030, + "node_id": "PR_kwDOAF7qK85lmfL-", + "html_url": "https://github.com/un33k/python-slugify/pull/146", + "diff_url": "https://github.com/un33k/python-slugify/pull/146.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/146.patch", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/146", + "number": 146, + "state": "closed", + "locked": false, + "title": "Remove compatibility with unsupported Python versions", + "user": { + "login": "Viicos", + "id": 65306057, + "node_id": "MDQ6VXNlcjY1MzA2MDU3", + "avatar_url": "https://avatars.githubusercontent.com/u/65306057?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/Viicos", + "html_url": "https://github.com/Viicos", + "followers_url": "https://api.github.com/users/Viicos/followers", + "following_url": "https://api.github.com/users/Viicos/following{/other_user}", + "gists_url": "https://api.github.com/users/Viicos/gists{/gist_id}", + "starred_url": "https://api.github.com/users/Viicos/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/Viicos/subscriptions", + "organizations_url": "https://api.github.com/users/Viicos/orgs", + "repos_url": "https://api.github.com/users/Viicos/repos", + "events_url": "https://api.github.com/users/Viicos/events{/privacy}", + "received_events_url": "https://api.github.com/users/Viicos/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "body": "Also fix typing of `pattern`", + "created_at": "2024-01-31T17:58:06Z", + "updated_at": "2024-01-31T18:19:01Z", + "closed_at": "2024-01-31T18:04:19Z", + "merged_at": "2024-01-31T18:04:19Z", + "merge_commit_sha": "e4c670027755098a2b63b5ee5390b385cc6cf927", + "assignees": [], + "requested_reviewers": [], + "requested_teams": [], + "labels": [], + "milestone": null, + "draft": false, + "commits_url": "https://api.github.com/repos/un33k/python-slugify/pulls/146/commits", + "review_comments_url": "https://api.github.com/repos/un33k/python-slugify/pulls/146/comments", + "review_comment_url": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/146/comments", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/f126276dacbf111a8294b2e9befd139f88708a1c", + "head": { + "label": "Viicos:drop-python-2-compat-2", + "ref": "drop-python-2-compat-2", + "sha": "f126276dacbf111a8294b2e9befd139f88708a1c", + "user": { + "login": "Viicos", + "id": 65306057, + "node_id": "MDQ6VXNlcjY1MzA2MDU3", + "avatar_url": "https://avatars.githubusercontent.com/u/65306057?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/Viicos", + "html_url": "https://github.com/Viicos", + "followers_url": "https://api.github.com/users/Viicos/followers", + "following_url": "https://api.github.com/users/Viicos/following{/other_user}", + "gists_url": "https://api.github.com/users/Viicos/gists{/gist_id}", + "starred_url": "https://api.github.com/users/Viicos/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/Viicos/subscriptions", + "organizations_url": "https://api.github.com/users/Viicos/orgs", + "repos_url": "https://api.github.com/users/Viicos/repos", + "events_url": "https://api.github.com/users/Viicos/events{/privacy}", + "received_events_url": "https://api.github.com/users/Viicos/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 750848150, + "node_id": "R_kgDOLMEIlg", + "name": "python-slugify", + "full_name": "Viicos/python-slugify", + "private": false, + "owner": { + "login": "Viicos", + "id": 65306057, + "node_id": "MDQ6VXNlcjY1MzA2MDU3", + "avatar_url": "https://avatars.githubusercontent.com/u/65306057?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/Viicos", + "html_url": "https://github.com/Viicos", + "followers_url": "https://api.github.com/users/Viicos/followers", + "following_url": "https://api.github.com/users/Viicos/following{/other_user}", + "gists_url": "https://api.github.com/users/Viicos/gists{/gist_id}", + "starred_url": "https://api.github.com/users/Viicos/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/Viicos/subscriptions", + "organizations_url": "https://api.github.com/users/Viicos/orgs", + "repos_url": "https://api.github.com/users/Viicos/repos", + "events_url": "https://api.github.com/users/Viicos/events{/privacy}", + "received_events_url": "https://api.github.com/users/Viicos/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/Viicos/python-slugify", + "description": "Returns unicode slugs", + "fork": true, + "url": "https://api.github.com/repos/Viicos/python-slugify", + "forks_url": "https://api.github.com/repos/Viicos/python-slugify/forks", + "keys_url": "https://api.github.com/repos/Viicos/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/Viicos/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/Viicos/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/Viicos/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/Viicos/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/Viicos/python-slugify/events", + "assignees_url": "https://api.github.com/repos/Viicos/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/Viicos/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/Viicos/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/Viicos/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/Viicos/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/Viicos/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/Viicos/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/Viicos/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/Viicos/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/Viicos/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/Viicos/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/Viicos/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/Viicos/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/Viicos/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/Viicos/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/Viicos/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/Viicos/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/Viicos/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/Viicos/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/Viicos/python-slugify/merges", + "archive_url": "https://api.github.com/repos/Viicos/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/Viicos/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/Viicos/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/Viicos/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/Viicos/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/Viicos/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/Viicos/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/Viicos/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/Viicos/python-slugify/deployments", + "created_at": "2024-01-31T12:51:04Z", + "updated_at": "2024-01-31T12:51:04Z", + "pushed_at": "2024-01-31T18:05:35Z", + "git_url": "git://github.com/Viicos/python-slugify.git", + "ssh_url": "git@github.com:Viicos/python-slugify.git", + "clone_url": "https://github.com/Viicos/python-slugify.git", + "svn_url": "https://github.com/Viicos/python-slugify", + "homepage": "", + "size": 181, + "stargazers_count": 0, + "watchers_count": 0, + "language": null, + "has_issues": false, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 0, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 0, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 0, + "open_issues": 0, + "watchers": 0, + "default_branch": "master" + } + }, + "base": { + "label": "un33k:ci", + "ref": "ci", + "sha": "237ccbd93244a0d435bfdb56f94ae4008a7b85b9", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 6220331, + "node_id": "MDEwOlJlcG9zaXRvcnk2MjIwMzMx", + "name": "python-slugify", + "full_name": "un33k/python-slugify", + "private": false, + "owner": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/un33k/python-slugify", + "description": "Returns unicode slugs", + "fork": false, + "url": "https://api.github.com/repos/un33k/python-slugify", + "forks_url": "https://api.github.com/repos/un33k/python-slugify/forks", + "keys_url": "https://api.github.com/repos/un33k/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/un33k/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/un33k/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/un33k/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/un33k/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/un33k/python-slugify/events", + "assignees_url": "https://api.github.com/repos/un33k/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/un33k/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/un33k/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/un33k/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/un33k/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/un33k/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/un33k/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/un33k/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/un33k/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/un33k/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/un33k/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/un33k/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/un33k/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/un33k/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/un33k/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/un33k/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/un33k/python-slugify/merges", + "archive_url": "https://api.github.com/repos/un33k/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/un33k/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/un33k/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/un33k/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/un33k/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/un33k/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/un33k/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/un33k/python-slugify/deployments", + "created_at": "2012-10-15T01:44:50Z", + "updated_at": "2026-09-05T12:52:20Z", + "pushed_at": "2026-04-27T11:17:17Z", + "git_url": "git://github.com/un33k/python-slugify.git", + "ssh_url": "git@github.com:un33k/python-slugify.git", + "clone_url": "https://github.com/un33k/python-slugify.git", + "svn_url": "https://github.com/un33k/python-slugify", + "homepage": "", + "size": 208, + "stargazers_count": 1623, + "watchers_count": 1623, + "language": "Python", + "has_issues": true, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 134, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 17, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 134, + "open_issues": 17, + "watchers": 1623, + "default_branch": "master" + } + }, + "_links": { + "self": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/146" + }, + "html": { + "href": "https://github.com/un33k/python-slugify/pull/146" + }, + "issue": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/146" + }, + "comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/146/comments" + }, + "review_comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/146/comments" + }, + "review_comment": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}" + }, + "commits": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/146/commits" + }, + "statuses": { + "href": "https://api.github.com/repos/un33k/python-slugify/statuses/f126276dacbf111a8294b2e9befd139f88708a1c" + } + }, + "author_association": "CONTRIBUTOR", + "auto_merge": null, + "assignee": null, + "active_lock_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/147", + "id": 1704614848, + "node_id": "PR_kwDOAF7qK85lmlvA", + "html_url": "https://github.com/un33k/python-slugify/pull/147", + "diff_url": "https://github.com/un33k/python-slugify/pull/147.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/147.patch", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/147", + "number": 147, + "state": "closed", + "locked": false, + "title": "Drop compatibility for unsupported Python Version", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "body": "## 8.0.3\r\n\r\n- Drop compatibility for unsupported Python Version (@Viicos - thx)\r\n- Fix pattern types. \r\n", + "created_at": "2024-01-31T18:15:28Z", + "updated_at": "2024-01-31T18:16:35Z", + "closed_at": "2024-01-31T18:16:35Z", + "merged_at": "2024-01-31T18:16:35Z", + "merge_commit_sha": "26b81c2e224ebb65c7fba40d37d17d762be3782f", + "assignees": [], + "requested_reviewers": [], + "requested_teams": [], + "labels": [], + "milestone": null, + "draft": false, + "commits_url": "https://api.github.com/repos/un33k/python-slugify/pulls/147/commits", + "review_comments_url": "https://api.github.com/repos/un33k/python-slugify/pulls/147/comments", + "review_comment_url": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/147/comments", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/e3cd9cdf973a62bd6827a8bcc6f7d02b2df99757", + "head": { + "label": "un33k:ci", + "ref": "ci", + "sha": "e3cd9cdf973a62bd6827a8bcc6f7d02b2df99757", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 6220331, + "node_id": "MDEwOlJlcG9zaXRvcnk2MjIwMzMx", + "name": "python-slugify", + "full_name": "un33k/python-slugify", + "private": false, + "owner": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/un33k/python-slugify", + "description": "Returns unicode slugs", + "fork": false, + "url": "https://api.github.com/repos/un33k/python-slugify", + "forks_url": "https://api.github.com/repos/un33k/python-slugify/forks", + "keys_url": "https://api.github.com/repos/un33k/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/un33k/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/un33k/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/un33k/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/un33k/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/un33k/python-slugify/events", + "assignees_url": "https://api.github.com/repos/un33k/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/un33k/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/un33k/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/un33k/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/un33k/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/un33k/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/un33k/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/un33k/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/un33k/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/un33k/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/un33k/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/un33k/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/un33k/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/un33k/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/un33k/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/un33k/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/un33k/python-slugify/merges", + "archive_url": "https://api.github.com/repos/un33k/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/un33k/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/un33k/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/un33k/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/un33k/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/un33k/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/un33k/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/un33k/python-slugify/deployments", + "created_at": "2012-10-15T01:44:50Z", + "updated_at": "2026-09-05T12:52:20Z", + "pushed_at": "2026-04-27T11:17:17Z", + "git_url": "git://github.com/un33k/python-slugify.git", + "ssh_url": "git@github.com:un33k/python-slugify.git", + "clone_url": "https://github.com/un33k/python-slugify.git", + "svn_url": "https://github.com/un33k/python-slugify", + "homepage": "", + "size": 208, + "stargazers_count": 1623, + "watchers_count": 1623, + "language": "Python", + "has_issues": true, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 134, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 17, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 134, + "open_issues": 17, + "watchers": 1623, + "default_branch": "master" + } + }, + "base": { + "label": "un33k:master", + "ref": "master", + "sha": "e52c35e34899bc21a389aa7f4fe5084423cf538c", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 6220331, + "node_id": "MDEwOlJlcG9zaXRvcnk2MjIwMzMx", + "name": "python-slugify", + "full_name": "un33k/python-slugify", + "private": false, + "owner": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/un33k/python-slugify", + "description": "Returns unicode slugs", + "fork": false, + "url": "https://api.github.com/repos/un33k/python-slugify", + "forks_url": "https://api.github.com/repos/un33k/python-slugify/forks", + "keys_url": "https://api.github.com/repos/un33k/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/un33k/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/un33k/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/un33k/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/un33k/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/un33k/python-slugify/events", + "assignees_url": "https://api.github.com/repos/un33k/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/un33k/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/un33k/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/un33k/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/un33k/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/un33k/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/un33k/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/un33k/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/un33k/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/un33k/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/un33k/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/un33k/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/un33k/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/un33k/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/un33k/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/un33k/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/un33k/python-slugify/merges", + "archive_url": "https://api.github.com/repos/un33k/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/un33k/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/un33k/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/un33k/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/un33k/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/un33k/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/un33k/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/un33k/python-slugify/deployments", + "created_at": "2012-10-15T01:44:50Z", + "updated_at": "2026-09-05T12:52:20Z", + "pushed_at": "2026-04-27T11:17:17Z", + "git_url": "git://github.com/un33k/python-slugify.git", + "ssh_url": "git@github.com:un33k/python-slugify.git", + "clone_url": "https://github.com/un33k/python-slugify.git", + "svn_url": "https://github.com/un33k/python-slugify", + "homepage": "", + "size": 208, + "stargazers_count": 1623, + "watchers_count": 1623, + "language": "Python", + "has_issues": true, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 134, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 17, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 134, + "open_issues": 17, + "watchers": 1623, + "default_branch": "master" + } + }, + "_links": { + "self": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/147" + }, + "html": { + "href": "https://github.com/un33k/python-slugify/pull/147" + }, + "issue": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/147" + }, + "comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/147/comments" + }, + "review_comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/147/comments" + }, + "review_comment": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}" + }, + "commits": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/147/commits" + }, + "statuses": { + "href": "https://api.github.com/repos/un33k/python-slugify/statuses/e3cd9cdf973a62bd6827a8bcc6f7d02b2df99757" + } + }, + "author_association": "OWNER", + "auto_merge": null, + "assignee": null, + "active_lock_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/148", + "id": 1718087262, + "node_id": "PR_kwDOAF7qK85mZ-5e", + "html_url": "https://github.com/un33k/python-slugify/pull/148", + "diff_url": "https://github.com/un33k/python-slugify/pull/148.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/148.patch", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/148", + "number": 148, + "state": "closed", + "locked": false, + "title": "Fix uppercase pre-translations", + "user": { + "login": "mib1185", + "id": 35783820, + "node_id": "MDQ6VXNlcjM1NzgzODIw", + "avatar_url": "https://avatars.githubusercontent.com/u/35783820?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/mib1185", + "html_url": "https://github.com/mib1185", + "followers_url": "https://api.github.com/users/mib1185/followers", + "following_url": "https://api.github.com/users/mib1185/following{/other_user}", + "gists_url": "https://api.github.com/users/mib1185/gists{/gist_id}", + "starred_url": "https://api.github.com/users/mib1185/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/mib1185/subscriptions", + "organizations_url": "https://api.github.com/users/mib1185/orgs", + "repos_url": "https://api.github.com/users/mib1185/repos", + "events_url": "https://api.github.com/users/mib1185/events{/privacy}", + "received_events_url": "https://api.github.com/users/mib1185/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "body": "before\r\n```python\r\n>>> from slugify import PRE_TRANSLATIONS\r\n>>> print(PRE_TRANSLATIONS)\r\n[('Ё', 'E'), ('ё', 'e'), ('я', 'ya'), ('х', 'h'), ('у', 'y'), ('щ', 'sch'), ('ю', 'u'), ('Ä', 'Ae'), ('ä', 'ae'), ('ö', 'oe'), ('ü', 'ue'), ('Χ', 'Ch'), ('χ', 'ch'), ('Ξ', 'X'), ('ϒ', 'Y'), ('υ', 'y'), ('ύ', 'y'), ('ϋ', 'y'), ('ΰ', 'y')]\r\n```\r\n\r\nafter\r\n\r\n```python\r\n>>> from slugify import PRE_TRANSLATIONS\r\n>>> print(PRE_TRANSLATIONS)\r\n[('Ю', 'U'), ('Щ', 'Sch'), ('У', 'Y'), ('Х', 'H'), ('Я', 'Ya'), ('Ё', 'E'), ('ё', 'e'), ('я', 'ya'), ('х', 'h'), ('у', 'y'), ('щ', 'sch'), ('ю', 'u'), ('Ü', 'Ue'), ('Ö', 'Oe'), ('Ä', 'Ae'), ('ä', 'ae'), ('ö', 'oe'), ('ü', 'ue'), ('Ϋ́', 'Y'), ('Ϋ', 'Y'), ('Ύ', 'Y'), ('Υ', 'Y'), ('Χ', 'Ch'), ('χ', 'ch'), ('Ξ', 'X'), ('ϒ', 'Y'), ('υ', 'y'), ('ύ', 'y'), ('ϋ', 'y'), ('ΰ', 'y')]\r\n```", + "created_at": "2024-02-08T17:29:22Z", + "updated_at": "2024-02-08T18:33:07Z", + "closed_at": "2024-02-08T18:23:57Z", + "merged_at": "2024-02-08T18:23:57Z", + "merge_commit_sha": "a243ccdc6d2b650b83782e03893e8f117356aeff", + "assignees": [], + "requested_reviewers": [], + "requested_teams": [], + "labels": [], + "milestone": null, + "draft": false, + "commits_url": "https://api.github.com/repos/un33k/python-slugify/pulls/148/commits", + "review_comments_url": "https://api.github.com/repos/un33k/python-slugify/pulls/148/comments", + "review_comment_url": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/148/comments", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/83d358fb5cc4c3a2fa6dbdd400c79f7becc7c8bc", + "head": { + "label": "mib1185:fix-pre-translations", + "ref": "fix-pre-translations", + "sha": "83d358fb5cc4c3a2fa6dbdd400c79f7becc7c8bc", + "user": { + "login": "mib1185", + "id": 35783820, + "node_id": "MDQ6VXNlcjM1NzgzODIw", + "avatar_url": "https://avatars.githubusercontent.com/u/35783820?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/mib1185", + "html_url": "https://github.com/mib1185", + "followers_url": "https://api.github.com/users/mib1185/followers", + "following_url": "https://api.github.com/users/mib1185/following{/other_user}", + "gists_url": "https://api.github.com/users/mib1185/gists{/gist_id}", + "starred_url": "https://api.github.com/users/mib1185/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/mib1185/subscriptions", + "organizations_url": "https://api.github.com/users/mib1185/orgs", + "repos_url": "https://api.github.com/users/mib1185/repos", + "events_url": "https://api.github.com/users/mib1185/events{/privacy}", + "received_events_url": "https://api.github.com/users/mib1185/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 754740812, + "node_id": "R_kgDOLPxuTA", + "name": "python-slugify", + "full_name": "mib1185/python-slugify", + "private": false, + "owner": { + "login": "mib1185", + "id": 35783820, + "node_id": "MDQ6VXNlcjM1NzgzODIw", + "avatar_url": "https://avatars.githubusercontent.com/u/35783820?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/mib1185", + "html_url": "https://github.com/mib1185", + "followers_url": "https://api.github.com/users/mib1185/followers", + "following_url": "https://api.github.com/users/mib1185/following{/other_user}", + "gists_url": "https://api.github.com/users/mib1185/gists{/gist_id}", + "starred_url": "https://api.github.com/users/mib1185/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/mib1185/subscriptions", + "organizations_url": "https://api.github.com/users/mib1185/orgs", + "repos_url": "https://api.github.com/users/mib1185/repos", + "events_url": "https://api.github.com/users/mib1185/events{/privacy}", + "received_events_url": "https://api.github.com/users/mib1185/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/mib1185/python-slugify", + "description": "Returns unicode slugs", + "fork": true, + "url": "https://api.github.com/repos/mib1185/python-slugify", + "forks_url": "https://api.github.com/repos/mib1185/python-slugify/forks", + "keys_url": "https://api.github.com/repos/mib1185/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/mib1185/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/mib1185/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/mib1185/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/mib1185/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/mib1185/python-slugify/events", + "assignees_url": "https://api.github.com/repos/mib1185/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/mib1185/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/mib1185/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/mib1185/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/mib1185/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/mib1185/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/mib1185/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/mib1185/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/mib1185/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/mib1185/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/mib1185/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/mib1185/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/mib1185/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/mib1185/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/mib1185/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/mib1185/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/mib1185/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/mib1185/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/mib1185/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/mib1185/python-slugify/merges", + "archive_url": "https://api.github.com/repos/mib1185/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/mib1185/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/mib1185/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/mib1185/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/mib1185/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/mib1185/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/mib1185/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/mib1185/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/mib1185/python-slugify/deployments", + "created_at": "2024-02-08T17:18:19Z", + "updated_at": "2024-02-08T17:18:20Z", + "pushed_at": "2024-02-08T18:24:16Z", + "git_url": "git://github.com/mib1185/python-slugify.git", + "ssh_url": "git@github.com:mib1185/python-slugify.git", + "clone_url": "https://github.com/mib1185/python-slugify.git", + "svn_url": "https://github.com/mib1185/python-slugify", + "homepage": "", + "size": 184, + "stargazers_count": 0, + "watchers_count": 0, + "language": null, + "has_issues": false, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 0, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 0, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 0, + "open_issues": 0, + "watchers": 0, + "default_branch": "master" + } + }, + "base": { + "label": "un33k:ci", + "ref": "ci", + "sha": "0116509edb107e503443bb4cdbeb088ee71e40cc", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 6220331, + "node_id": "MDEwOlJlcG9zaXRvcnk2MjIwMzMx", + "name": "python-slugify", + "full_name": "un33k/python-slugify", + "private": false, + "owner": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/un33k/python-slugify", + "description": "Returns unicode slugs", + "fork": false, + "url": "https://api.github.com/repos/un33k/python-slugify", + "forks_url": "https://api.github.com/repos/un33k/python-slugify/forks", + "keys_url": "https://api.github.com/repos/un33k/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/un33k/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/un33k/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/un33k/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/un33k/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/un33k/python-slugify/events", + "assignees_url": "https://api.github.com/repos/un33k/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/un33k/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/un33k/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/un33k/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/un33k/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/un33k/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/un33k/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/un33k/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/un33k/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/un33k/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/un33k/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/un33k/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/un33k/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/un33k/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/un33k/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/un33k/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/un33k/python-slugify/merges", + "archive_url": "https://api.github.com/repos/un33k/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/un33k/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/un33k/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/un33k/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/un33k/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/un33k/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/un33k/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/un33k/python-slugify/deployments", + "created_at": "2012-10-15T01:44:50Z", + "updated_at": "2026-09-05T12:52:20Z", + "pushed_at": "2026-04-27T11:17:17Z", + "git_url": "git://github.com/un33k/python-slugify.git", + "ssh_url": "git@github.com:un33k/python-slugify.git", + "clone_url": "https://github.com/un33k/python-slugify.git", + "svn_url": "https://github.com/un33k/python-slugify", + "homepage": "", + "size": 208, + "stargazers_count": 1623, + "watchers_count": 1623, + "language": "Python", + "has_issues": true, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 134, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 17, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 134, + "open_issues": 17, + "watchers": 1623, + "default_branch": "master" + } + }, + "_links": { + "self": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/148" + }, + "html": { + "href": "https://github.com/un33k/python-slugify/pull/148" + }, + "issue": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/148" + }, + "comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/148/comments" + }, + "review_comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/148/comments" + }, + "review_comment": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}" + }, + "commits": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/148/commits" + }, + "statuses": { + "href": "https://api.github.com/repos/un33k/python-slugify/statuses/83d358fb5cc4c3a2fa6dbdd400c79f7becc7c8bc" + } + }, + "author_association": "CONTRIBUTOR", + "auto_merge": null, + "assignee": null, + "active_lock_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/149", + "id": 1718179965, + "node_id": "PR_kwDOAF7qK85maVh9", + "html_url": "https://github.com/un33k/python-slugify/pull/149", + "diff_url": "https://github.com/un33k/python-slugify/pull/149.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/149.patch", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/149", + "number": 149, + "state": "closed", + "locked": false, + "title": "Uppercase handling of special chars", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "body": "Uppercase handling of special chars", + "created_at": "2024-02-08T18:30:02Z", + "updated_at": "2024-02-08T18:31:20Z", + "closed_at": "2024-02-08T18:31:20Z", + "merged_at": "2024-02-08T18:31:20Z", + "merge_commit_sha": "243354893ee8cc270aaae82eff5fe3ae37481439", + "assignees": [], + "requested_reviewers": [], + "requested_teams": [], + "labels": [], + "milestone": null, + "draft": false, + "commits_url": "https://api.github.com/repos/un33k/python-slugify/pulls/149/commits", + "review_comments_url": "https://api.github.com/repos/un33k/python-slugify/pulls/149/comments", + "review_comment_url": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/149/comments", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/8fd20c6751255164ebb62ca01382abce8c1b5cff", + "head": { + "label": "un33k:ci", + "ref": "ci", + "sha": "8fd20c6751255164ebb62ca01382abce8c1b5cff", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 6220331, + "node_id": "MDEwOlJlcG9zaXRvcnk2MjIwMzMx", + "name": "python-slugify", + "full_name": "un33k/python-slugify", + "private": false, + "owner": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/un33k/python-slugify", + "description": "Returns unicode slugs", + "fork": false, + "url": "https://api.github.com/repos/un33k/python-slugify", + "forks_url": "https://api.github.com/repos/un33k/python-slugify/forks", + "keys_url": "https://api.github.com/repos/un33k/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/un33k/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/un33k/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/un33k/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/un33k/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/un33k/python-slugify/events", + "assignees_url": "https://api.github.com/repos/un33k/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/un33k/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/un33k/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/un33k/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/un33k/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/un33k/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/un33k/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/un33k/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/un33k/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/un33k/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/un33k/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/un33k/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/un33k/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/un33k/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/un33k/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/un33k/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/un33k/python-slugify/merges", + "archive_url": "https://api.github.com/repos/un33k/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/un33k/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/un33k/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/un33k/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/un33k/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/un33k/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/un33k/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/un33k/python-slugify/deployments", + "created_at": "2012-10-15T01:44:50Z", + "updated_at": "2026-09-05T12:52:20Z", + "pushed_at": "2026-04-27T11:17:17Z", + "git_url": "git://github.com/un33k/python-slugify.git", + "ssh_url": "git@github.com:un33k/python-slugify.git", + "clone_url": "https://github.com/un33k/python-slugify.git", + "svn_url": "https://github.com/un33k/python-slugify", + "homepage": "", + "size": 208, + "stargazers_count": 1623, + "watchers_count": 1623, + "language": "Python", + "has_issues": true, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 134, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 17, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 134, + "open_issues": 17, + "watchers": 1623, + "default_branch": "master" + } + }, + "base": { + "label": "un33k:master", + "ref": "master", + "sha": "26b81c2e224ebb65c7fba40d37d17d762be3782f", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 6220331, + "node_id": "MDEwOlJlcG9zaXRvcnk2MjIwMzMx", + "name": "python-slugify", + "full_name": "un33k/python-slugify", + "private": false, + "owner": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/un33k/python-slugify", + "description": "Returns unicode slugs", + "fork": false, + "url": "https://api.github.com/repos/un33k/python-slugify", + "forks_url": "https://api.github.com/repos/un33k/python-slugify/forks", + "keys_url": "https://api.github.com/repos/un33k/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/un33k/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/un33k/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/un33k/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/un33k/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/un33k/python-slugify/events", + "assignees_url": "https://api.github.com/repos/un33k/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/un33k/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/un33k/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/un33k/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/un33k/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/un33k/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/un33k/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/un33k/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/un33k/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/un33k/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/un33k/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/un33k/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/un33k/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/un33k/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/un33k/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/un33k/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/un33k/python-slugify/merges", + "archive_url": "https://api.github.com/repos/un33k/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/un33k/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/un33k/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/un33k/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/un33k/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/un33k/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/un33k/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/un33k/python-slugify/deployments", + "created_at": "2012-10-15T01:44:50Z", + "updated_at": "2026-09-05T12:52:20Z", + "pushed_at": "2026-04-27T11:17:17Z", + "git_url": "git://github.com/un33k/python-slugify.git", + "ssh_url": "git@github.com:un33k/python-slugify.git", + "clone_url": "https://github.com/un33k/python-slugify.git", + "svn_url": "https://github.com/un33k/python-slugify", + "homepage": "", + "size": 208, + "stargazers_count": 1623, + "watchers_count": 1623, + "language": "Python", + "has_issues": true, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 134, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 17, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 134, + "open_issues": 17, + "watchers": 1623, + "default_branch": "master" + } + }, + "_links": { + "self": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/149" + }, + "html": { + "href": "https://github.com/un33k/python-slugify/pull/149" + }, + "issue": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/149" + }, + "comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/149/comments" + }, + "review_comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/149/comments" + }, + "review_comment": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}" + }, + "commits": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/149/commits" + }, + "statuses": { + "href": "https://api.github.com/repos/un33k/python-slugify/statuses/8fd20c6751255164ebb62ca01382abce8c1b5cff" + } + }, + "author_association": "OWNER", + "auto_merge": null, + "assignee": null, + "active_lock_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/152", + "id": 2079421030, + "node_id": "PR_kwDOAF7qK8578XJm", + "html_url": "https://github.com/un33k/python-slugify/pull/152", + "diff_url": "https://github.com/un33k/python-slugify/pull/152.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/152.patch", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/152", + "number": 152, + "state": "closed", + "locked": false, + "title": "Fix wiki URLs in README.md", + "user": { + "login": "sagesharp", + "id": 270108, + "node_id": "MDQ6VXNlcjI3MDEwOA==", + "avatar_url": "https://avatars.githubusercontent.com/u/270108?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/sagesharp", + "html_url": "https://github.com/sagesharp", + "followers_url": "https://api.github.com/users/sagesharp/followers", + "following_url": "https://api.github.com/users/sagesharp/following{/other_user}", + "gists_url": "https://api.github.com/users/sagesharp/gists{/gist_id}", + "starred_url": "https://api.github.com/users/sagesharp/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/sagesharp/subscriptions", + "organizations_url": "https://api.github.com/users/sagesharp/orgs", + "repos_url": "https://api.github.com/users/sagesharp/repos", + "events_url": "https://api.github.com/users/sagesharp/events{/privacy}", + "received_events_url": "https://api.github.com/users/sagesharp/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "body": "See commit description.", + "created_at": "2024-09-18T19:33:57Z", + "updated_at": "2025-11-20T20:37:03Z", + "closed_at": "2025-11-20T20:37:03Z", + "merged_at": "2025-11-20T20:37:03Z", + "merge_commit_sha": "a243eaec853c220a287d8a0c928ca37c1114ed8c", + "assignees": [], + "requested_reviewers": [], + "requested_teams": [], + "labels": [], + "milestone": null, + "draft": false, + "commits_url": "https://api.github.com/repos/un33k/python-slugify/pulls/152/commits", + "review_comments_url": "https://api.github.com/repos/un33k/python-slugify/pulls/152/comments", + "review_comment_url": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/152/comments", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/d8beb973ecf9f68a96d6efc451cda7f5edd10288", + "head": { + "label": "sagesharp:patch-1", + "ref": "patch-1", + "sha": "d8beb973ecf9f68a96d6efc451cda7f5edd10288", + "user": { + "login": "sagesharp", + "id": 270108, + "node_id": "MDQ6VXNlcjI3MDEwOA==", + "avatar_url": "https://avatars.githubusercontent.com/u/270108?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/sagesharp", + "html_url": "https://github.com/sagesharp", + "followers_url": "https://api.github.com/users/sagesharp/followers", + "following_url": "https://api.github.com/users/sagesharp/following{/other_user}", + "gists_url": "https://api.github.com/users/sagesharp/gists{/gist_id}", + "starred_url": "https://api.github.com/users/sagesharp/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/sagesharp/subscriptions", + "organizations_url": "https://api.github.com/users/sagesharp/orgs", + "repos_url": "https://api.github.com/users/sagesharp/repos", + "events_url": "https://api.github.com/users/sagesharp/events{/privacy}", + "received_events_url": "https://api.github.com/users/sagesharp/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 859503924, + "node_id": "R_kgDOMzr9NA", + "name": "python-slugify", + "full_name": "sagesharp/python-slugify", + "private": false, + "owner": { + "login": "sagesharp", + "id": 270108, + "node_id": "MDQ6VXNlcjI3MDEwOA==", + "avatar_url": "https://avatars.githubusercontent.com/u/270108?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/sagesharp", + "html_url": "https://github.com/sagesharp", + "followers_url": "https://api.github.com/users/sagesharp/followers", + "following_url": "https://api.github.com/users/sagesharp/following{/other_user}", + "gists_url": "https://api.github.com/users/sagesharp/gists{/gist_id}", + "starred_url": "https://api.github.com/users/sagesharp/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/sagesharp/subscriptions", + "organizations_url": "https://api.github.com/users/sagesharp/orgs", + "repos_url": "https://api.github.com/users/sagesharp/repos", + "events_url": "https://api.github.com/users/sagesharp/events{/privacy}", + "received_events_url": "https://api.github.com/users/sagesharp/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/sagesharp/python-slugify", + "description": "Returns unicode slugs", + "fork": true, + "url": "https://api.github.com/repos/sagesharp/python-slugify", + "forks_url": "https://api.github.com/repos/sagesharp/python-slugify/forks", + "keys_url": "https://api.github.com/repos/sagesharp/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/sagesharp/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/sagesharp/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/sagesharp/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/sagesharp/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/sagesharp/python-slugify/events", + "assignees_url": "https://api.github.com/repos/sagesharp/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/sagesharp/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/sagesharp/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/sagesharp/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/sagesharp/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/sagesharp/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/sagesharp/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/sagesharp/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/sagesharp/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/sagesharp/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/sagesharp/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/sagesharp/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/sagesharp/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/sagesharp/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/sagesharp/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/sagesharp/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/sagesharp/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/sagesharp/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/sagesharp/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/sagesharp/python-slugify/merges", + "archive_url": "https://api.github.com/repos/sagesharp/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/sagesharp/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/sagesharp/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/sagesharp/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/sagesharp/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/sagesharp/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/sagesharp/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/sagesharp/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/sagesharp/python-slugify/deployments", + "created_at": "2024-09-18T19:17:13Z", + "updated_at": "2024-09-18T19:17:14Z", + "pushed_at": "2024-09-18T19:32:34Z", + "git_url": "git://github.com/sagesharp/python-slugify.git", + "ssh_url": "git@github.com:sagesharp/python-slugify.git", + "clone_url": "https://github.com/sagesharp/python-slugify.git", + "svn_url": "https://github.com/sagesharp/python-slugify", + "homepage": "", + "size": 204, + "stargazers_count": 0, + "watchers_count": 0, + "language": null, + "has_issues": false, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 0, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 0, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 0, + "open_issues": 0, + "watchers": 0, + "default_branch": "master" + } + }, + "base": { + "label": "un33k:ci", + "ref": "ci", + "sha": "f85f9488520148d5f6899b5639199882b605e30a", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 6220331, + "node_id": "MDEwOlJlcG9zaXRvcnk2MjIwMzMx", + "name": "python-slugify", + "full_name": "un33k/python-slugify", + "private": false, + "owner": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/un33k/python-slugify", + "description": "Returns unicode slugs", + "fork": false, + "url": "https://api.github.com/repos/un33k/python-slugify", + "forks_url": "https://api.github.com/repos/un33k/python-slugify/forks", + "keys_url": "https://api.github.com/repos/un33k/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/un33k/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/un33k/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/un33k/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/un33k/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/un33k/python-slugify/events", + "assignees_url": "https://api.github.com/repos/un33k/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/un33k/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/un33k/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/un33k/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/un33k/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/un33k/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/un33k/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/un33k/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/un33k/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/un33k/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/un33k/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/un33k/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/un33k/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/un33k/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/un33k/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/un33k/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/un33k/python-slugify/merges", + "archive_url": "https://api.github.com/repos/un33k/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/un33k/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/un33k/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/un33k/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/un33k/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/un33k/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/un33k/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/un33k/python-slugify/deployments", + "created_at": "2012-10-15T01:44:50Z", + "updated_at": "2026-09-05T12:52:20Z", + "pushed_at": "2026-04-27T11:17:17Z", + "git_url": "git://github.com/un33k/python-slugify.git", + "ssh_url": "git@github.com:un33k/python-slugify.git", + "clone_url": "https://github.com/un33k/python-slugify.git", + "svn_url": "https://github.com/un33k/python-slugify", + "homepage": "", + "size": 208, + "stargazers_count": 1623, + "watchers_count": 1623, + "language": "Python", + "has_issues": true, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 134, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 17, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 134, + "open_issues": 17, + "watchers": 1623, + "default_branch": "master" + } + }, + "_links": { + "self": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/152" + }, + "html": { + "href": "https://github.com/un33k/python-slugify/pull/152" + }, + "issue": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/152" + }, + "comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/152/comments" + }, + "review_comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/152/comments" + }, + "review_comment": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}" + }, + "commits": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/152/commits" + }, + "statuses": { + "href": "https://api.github.com/repos/un33k/python-slugify/statuses/d8beb973ecf9f68a96d6efc451cda7f5edd10288" + } + }, + "author_association": "NONE", + "auto_merge": null, + "assignee": null, + "active_lock_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/154", + "id": 2115455560, + "node_id": "PR_kwDOAF7qK85-F0pI", + "html_url": "https://github.com/un33k/python-slugify/pull/154", + "diff_url": "https://github.com/un33k/python-slugify/pull/154.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/154.patch", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/154", + "number": 154, + "state": "closed", + "locked": false, + "title": "Add Python 3.13 to test matrix and add classifier to the setup", + "user": { + "login": "edgarrmondragon", + "id": 16805946, + "node_id": "MDQ6VXNlcjE2ODA1OTQ2", + "avatar_url": "https://avatars.githubusercontent.com/u/16805946?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/edgarrmondragon", + "html_url": "https://github.com/edgarrmondragon", + "followers_url": "https://api.github.com/users/edgarrmondragon/followers", + "following_url": "https://api.github.com/users/edgarrmondragon/following{/other_user}", + "gists_url": "https://api.github.com/users/edgarrmondragon/gists{/gist_id}", + "starred_url": "https://api.github.com/users/edgarrmondragon/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/edgarrmondragon/subscriptions", + "organizations_url": "https://api.github.com/users/edgarrmondragon/orgs", + "repos_url": "https://api.github.com/users/edgarrmondragon/repos", + "events_url": "https://api.github.com/users/edgarrmondragon/events{/privacy}", + "received_events_url": "https://api.github.com/users/edgarrmondragon/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "body": "I also updated the test matrix to use `pypy3.10` cause it's the only currently supported `pypy3.*`.", + "created_at": "2024-10-09T14:31:35Z", + "updated_at": "2025-09-26T15:35:28Z", + "closed_at": "2025-09-26T15:20:37Z", + "merged_at": "2025-09-26T15:20:37Z", + "merge_commit_sha": "d5643b16caf3f312d39574dccf49763da0908eb1", + "assignees": [], + "requested_reviewers": [], + "requested_teams": [], + "labels": [], + "milestone": null, + "draft": false, + "commits_url": "https://api.github.com/repos/un33k/python-slugify/pulls/154/commits", + "review_comments_url": "https://api.github.com/repos/un33k/python-slugify/pulls/154/comments", + "review_comment_url": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/154/comments", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/123ba1e8a7e75bea0496302d7414cbac00eda178", + "head": { + "label": "edgarrmondragon:py313", + "ref": "py313", + "sha": "123ba1e8a7e75bea0496302d7414cbac00eda178", + "user": { + "login": "edgarrmondragon", + "id": 16805946, + "node_id": "MDQ6VXNlcjE2ODA1OTQ2", + "avatar_url": "https://avatars.githubusercontent.com/u/16805946?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/edgarrmondragon", + "html_url": "https://github.com/edgarrmondragon", + "followers_url": "https://api.github.com/users/edgarrmondragon/followers", + "following_url": "https://api.github.com/users/edgarrmondragon/following{/other_user}", + "gists_url": "https://api.github.com/users/edgarrmondragon/gists{/gist_id}", + "starred_url": "https://api.github.com/users/edgarrmondragon/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/edgarrmondragon/subscriptions", + "organizations_url": "https://api.github.com/users/edgarrmondragon/orgs", + "repos_url": "https://api.github.com/users/edgarrmondragon/repos", + "events_url": "https://api.github.com/users/edgarrmondragon/events{/privacy}", + "received_events_url": "https://api.github.com/users/edgarrmondragon/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 870151746, + "node_id": "R_kgDOM912Qg", + "name": "python-slugify", + "full_name": "edgarrmondragon/python-slugify", + "private": false, + "owner": { + "login": "edgarrmondragon", + "id": 16805946, + "node_id": "MDQ6VXNlcjE2ODA1OTQ2", + "avatar_url": "https://avatars.githubusercontent.com/u/16805946?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/edgarrmondragon", + "html_url": "https://github.com/edgarrmondragon", + "followers_url": "https://api.github.com/users/edgarrmondragon/followers", + "following_url": "https://api.github.com/users/edgarrmondragon/following{/other_user}", + "gists_url": "https://api.github.com/users/edgarrmondragon/gists{/gist_id}", + "starred_url": "https://api.github.com/users/edgarrmondragon/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/edgarrmondragon/subscriptions", + "organizations_url": "https://api.github.com/users/edgarrmondragon/orgs", + "repos_url": "https://api.github.com/users/edgarrmondragon/repos", + "events_url": "https://api.github.com/users/edgarrmondragon/events{/privacy}", + "received_events_url": "https://api.github.com/users/edgarrmondragon/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/edgarrmondragon/python-slugify", + "description": "Returns unicode slugs", + "fork": true, + "url": "https://api.github.com/repos/edgarrmondragon/python-slugify", + "forks_url": "https://api.github.com/repos/edgarrmondragon/python-slugify/forks", + "keys_url": "https://api.github.com/repos/edgarrmondragon/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/edgarrmondragon/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/edgarrmondragon/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/edgarrmondragon/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/edgarrmondragon/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/edgarrmondragon/python-slugify/events", + "assignees_url": "https://api.github.com/repos/edgarrmondragon/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/edgarrmondragon/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/edgarrmondragon/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/edgarrmondragon/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/edgarrmondragon/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/edgarrmondragon/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/edgarrmondragon/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/edgarrmondragon/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/edgarrmondragon/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/edgarrmondragon/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/edgarrmondragon/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/edgarrmondragon/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/edgarrmondragon/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/edgarrmondragon/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/edgarrmondragon/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/edgarrmondragon/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/edgarrmondragon/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/edgarrmondragon/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/edgarrmondragon/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/edgarrmondragon/python-slugify/merges", + "archive_url": "https://api.github.com/repos/edgarrmondragon/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/edgarrmondragon/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/edgarrmondragon/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/edgarrmondragon/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/edgarrmondragon/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/edgarrmondragon/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/edgarrmondragon/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/edgarrmondragon/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/edgarrmondragon/python-slugify/deployments", + "created_at": "2024-10-09T14:29:56Z", + "updated_at": "2024-10-09T14:29:56Z", + "pushed_at": "2025-09-26T15:35:27Z", + "git_url": "git://github.com/edgarrmondragon/python-slugify.git", + "ssh_url": "git@github.com:edgarrmondragon/python-slugify.git", + "clone_url": "https://github.com/edgarrmondragon/python-slugify.git", + "svn_url": "https://github.com/edgarrmondragon/python-slugify", + "homepage": "", + "size": 200, + "stargazers_count": 0, + "watchers_count": 0, + "language": null, + "has_issues": false, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 0, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 0, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 0, + "open_issues": 0, + "watchers": 0, + "default_branch": "master" + } + }, + "base": { + "label": "un33k:master", + "ref": "master", + "sha": "872b37509399a7f02e53f46ad9881f63f66d334b", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 6220331, + "node_id": "MDEwOlJlcG9zaXRvcnk2MjIwMzMx", + "name": "python-slugify", + "full_name": "un33k/python-slugify", + "private": false, + "owner": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/un33k/python-slugify", + "description": "Returns unicode slugs", + "fork": false, + "url": "https://api.github.com/repos/un33k/python-slugify", + "forks_url": "https://api.github.com/repos/un33k/python-slugify/forks", + "keys_url": "https://api.github.com/repos/un33k/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/un33k/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/un33k/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/un33k/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/un33k/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/un33k/python-slugify/events", + "assignees_url": "https://api.github.com/repos/un33k/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/un33k/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/un33k/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/un33k/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/un33k/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/un33k/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/un33k/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/un33k/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/un33k/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/un33k/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/un33k/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/un33k/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/un33k/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/un33k/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/un33k/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/un33k/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/un33k/python-slugify/merges", + "archive_url": "https://api.github.com/repos/un33k/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/un33k/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/un33k/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/un33k/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/un33k/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/un33k/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/un33k/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/un33k/python-slugify/deployments", + "created_at": "2012-10-15T01:44:50Z", + "updated_at": "2026-09-05T12:52:20Z", + "pushed_at": "2026-04-27T11:17:17Z", + "git_url": "git://github.com/un33k/python-slugify.git", + "ssh_url": "git@github.com:un33k/python-slugify.git", + "clone_url": "https://github.com/un33k/python-slugify.git", + "svn_url": "https://github.com/un33k/python-slugify", + "homepage": "", + "size": 208, + "stargazers_count": 1623, + "watchers_count": 1623, + "language": "Python", + "has_issues": true, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 134, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 17, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 134, + "open_issues": 17, + "watchers": 1623, + "default_branch": "master" + } + }, + "_links": { + "self": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/154" + }, + "html": { + "href": "https://github.com/un33k/python-slugify/pull/154" + }, + "issue": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/154" + }, + "comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/154/comments" + }, + "review_comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/154/comments" + }, + "review_comment": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}" + }, + "commits": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/154/commits" + }, + "statuses": { + "href": "https://api.github.com/repos/un33k/python-slugify/statuses/123ba1e8a7e75bea0496302d7414cbac00eda178" + } + }, + "author_association": "CONTRIBUTOR", + "auto_merge": null, + "assignee": null, + "active_lock_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/155", + "id": 2544197008, + "node_id": "PR_kwDOAF7qK86XpV2Q", + "html_url": "https://github.com/un33k/python-slugify/pull/155", + "diff_url": "https://github.com/un33k/python-slugify/pull/155.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/155.patch", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/155", + "number": 155, + "state": "closed", + "locked": false, + "title": "rewrote slugify func with radon", + "user": { + "login": "IvanChumakov", + "id": 36165391, + "node_id": "MDQ6VXNlcjM2MTY1Mzkx", + "avatar_url": "https://avatars.githubusercontent.com/u/36165391?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/IvanChumakov", + "html_url": "https://github.com/IvanChumakov", + "followers_url": "https://api.github.com/users/IvanChumakov/followers", + "following_url": "https://api.github.com/users/IvanChumakov/following{/other_user}", + "gists_url": "https://api.github.com/users/IvanChumakov/gists{/gist_id}", + "starred_url": "https://api.github.com/users/IvanChumakov/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/IvanChumakov/subscriptions", + "organizations_url": "https://api.github.com/users/IvanChumakov/orgs", + "repos_url": "https://api.github.com/users/IvanChumakov/repos", + "events_url": "https://api.github.com/users/IvanChumakov/events{/privacy}", + "received_events_url": "https://api.github.com/users/IvanChumakov/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "body": "Made some changes in slugify function using the Radon utility (reduce the cyclomatic complexity of the function)", + "created_at": "2025-05-26T14:06:26Z", + "updated_at": "2025-11-20T20:37:21Z", + "closed_at": "2025-11-20T20:37:21Z", + "merged_at": null, + "merge_commit_sha": null, + "assignees": [], + "requested_reviewers": [], + "requested_teams": [], + "labels": [], + "milestone": null, + "draft": false, + "commits_url": "https://api.github.com/repos/un33k/python-slugify/pulls/155/commits", + "review_comments_url": "https://api.github.com/repos/un33k/python-slugify/pulls/155/comments", + "review_comment_url": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/155/comments", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/91c6c92b4760d9b02a01fee1dfa870646120286f", + "head": { + "label": "IvanChumakov:radon-fixes", + "ref": "radon-fixes", + "sha": "91c6c92b4760d9b02a01fee1dfa870646120286f", + "user": { + "login": "IvanChumakov", + "id": 36165391, + "node_id": "MDQ6VXNlcjM2MTY1Mzkx", + "avatar_url": "https://avatars.githubusercontent.com/u/36165391?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/IvanChumakov", + "html_url": "https://github.com/IvanChumakov", + "followers_url": "https://api.github.com/users/IvanChumakov/followers", + "following_url": "https://api.github.com/users/IvanChumakov/following{/other_user}", + "gists_url": "https://api.github.com/users/IvanChumakov/gists{/gist_id}", + "starred_url": "https://api.github.com/users/IvanChumakov/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/IvanChumakov/subscriptions", + "organizations_url": "https://api.github.com/users/IvanChumakov/orgs", + "repos_url": "https://api.github.com/users/IvanChumakov/repos", + "events_url": "https://api.github.com/users/IvanChumakov/events{/privacy}", + "received_events_url": "https://api.github.com/users/IvanChumakov/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 990679154, + "node_id": "R_kgDOOwyQcg", + "name": "python-slugify", + "full_name": "IvanChumakov/python-slugify", + "private": false, + "owner": { + "login": "IvanChumakov", + "id": 36165391, + "node_id": "MDQ6VXNlcjM2MTY1Mzkx", + "avatar_url": "https://avatars.githubusercontent.com/u/36165391?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/IvanChumakov", + "html_url": "https://github.com/IvanChumakov", + "followers_url": "https://api.github.com/users/IvanChumakov/followers", + "following_url": "https://api.github.com/users/IvanChumakov/following{/other_user}", + "gists_url": "https://api.github.com/users/IvanChumakov/gists{/gist_id}", + "starred_url": "https://api.github.com/users/IvanChumakov/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/IvanChumakov/subscriptions", + "organizations_url": "https://api.github.com/users/IvanChumakov/orgs", + "repos_url": "https://api.github.com/users/IvanChumakov/repos", + "events_url": "https://api.github.com/users/IvanChumakov/events{/privacy}", + "received_events_url": "https://api.github.com/users/IvanChumakov/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/IvanChumakov/python-slugify", + "description": "Returns unicode slugs", + "fork": true, + "url": "https://api.github.com/repos/IvanChumakov/python-slugify", + "forks_url": "https://api.github.com/repos/IvanChumakov/python-slugify/forks", + "keys_url": "https://api.github.com/repos/IvanChumakov/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/IvanChumakov/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/IvanChumakov/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/IvanChumakov/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/IvanChumakov/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/IvanChumakov/python-slugify/events", + "assignees_url": "https://api.github.com/repos/IvanChumakov/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/IvanChumakov/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/IvanChumakov/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/IvanChumakov/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/IvanChumakov/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/IvanChumakov/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/IvanChumakov/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/IvanChumakov/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/IvanChumakov/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/IvanChumakov/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/IvanChumakov/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/IvanChumakov/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/IvanChumakov/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/IvanChumakov/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/IvanChumakov/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/IvanChumakov/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/IvanChumakov/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/IvanChumakov/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/IvanChumakov/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/IvanChumakov/python-slugify/merges", + "archive_url": "https://api.github.com/repos/IvanChumakov/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/IvanChumakov/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/IvanChumakov/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/IvanChumakov/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/IvanChumakov/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/IvanChumakov/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/IvanChumakov/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/IvanChumakov/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/IvanChumakov/python-slugify/deployments", + "created_at": "2025-05-26T13:20:47Z", + "updated_at": "2025-05-26T13:20:47Z", + "pushed_at": "2025-05-26T14:04:21Z", + "git_url": "git://github.com/IvanChumakov/python-slugify.git", + "ssh_url": "git@github.com:IvanChumakov/python-slugify.git", + "clone_url": "https://github.com/IvanChumakov/python-slugify.git", + "svn_url": "https://github.com/IvanChumakov/python-slugify", + "homepage": "", + "size": 186, + "stargazers_count": 0, + "watchers_count": 0, + "language": null, + "has_issues": false, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 0, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 0, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 0, + "open_issues": 0, + "watchers": 0, + "default_branch": "master" + } + }, + "base": { + "label": "un33k:master", + "ref": "master", + "sha": "872b37509399a7f02e53f46ad9881f63f66d334b", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 6220331, + "node_id": "MDEwOlJlcG9zaXRvcnk2MjIwMzMx", + "name": "python-slugify", + "full_name": "un33k/python-slugify", + "private": false, + "owner": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/un33k/python-slugify", + "description": "Returns unicode slugs", + "fork": false, + "url": "https://api.github.com/repos/un33k/python-slugify", + "forks_url": "https://api.github.com/repos/un33k/python-slugify/forks", + "keys_url": "https://api.github.com/repos/un33k/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/un33k/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/un33k/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/un33k/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/un33k/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/un33k/python-slugify/events", + "assignees_url": "https://api.github.com/repos/un33k/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/un33k/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/un33k/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/un33k/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/un33k/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/un33k/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/un33k/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/un33k/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/un33k/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/un33k/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/un33k/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/un33k/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/un33k/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/un33k/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/un33k/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/un33k/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/un33k/python-slugify/merges", + "archive_url": "https://api.github.com/repos/un33k/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/un33k/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/un33k/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/un33k/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/un33k/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/un33k/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/un33k/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/un33k/python-slugify/deployments", + "created_at": "2012-10-15T01:44:50Z", + "updated_at": "2026-09-05T12:52:20Z", + "pushed_at": "2026-04-27T11:17:17Z", + "git_url": "git://github.com/un33k/python-slugify.git", + "ssh_url": "git@github.com:un33k/python-slugify.git", + "clone_url": "https://github.com/un33k/python-slugify.git", + "svn_url": "https://github.com/un33k/python-slugify", + "homepage": "", + "size": 208, + "stargazers_count": 1623, + "watchers_count": 1623, + "language": "Python", + "has_issues": true, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 134, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 17, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 134, + "open_issues": 17, + "watchers": 1623, + "default_branch": "master" + } + }, + "_links": { + "self": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/155" + }, + "html": { + "href": "https://github.com/un33k/python-slugify/pull/155" + }, + "issue": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/155" + }, + "comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/155/comments" + }, + "review_comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/155/comments" + }, + "review_comment": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}" + }, + "commits": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/155/commits" + }, + "statuses": { + "href": "https://api.github.com/repos/un33k/python-slugify/statuses/91c6c92b4760d9b02a01fee1dfa870646120286f" + } + }, + "author_association": "NONE", + "auto_merge": null, + "assignee": null, + "active_lock_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/157", + "id": 2764924037, + "node_id": "PR_kwDOAF7qK86kzWSF", + "html_url": "https://github.com/un33k/python-slugify/pull/157", + "diff_url": "https://github.com/un33k/python-slugify/pull/157.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/157.patch", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/157", + "number": 157, + "state": "closed", + "locked": false, + "title": "Explain `save_order` more clearly", + "user": { + "login": "marksteward", + "id": 121960, + "node_id": "MDQ6VXNlcjEyMTk2MA==", + "avatar_url": "https://avatars.githubusercontent.com/u/121960?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/marksteward", + "html_url": "https://github.com/marksteward", + "followers_url": "https://api.github.com/users/marksteward/followers", + "following_url": "https://api.github.com/users/marksteward/following{/other_user}", + "gists_url": "https://api.github.com/users/marksteward/gists{/gist_id}", + "starred_url": "https://api.github.com/users/marksteward/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/marksteward/subscriptions", + "organizations_url": "https://api.github.com/users/marksteward/orgs", + "repos_url": "https://api.github.com/users/marksteward/repos", + "events_url": "https://api.github.com/users/marksteward/events{/privacy}", + "received_events_url": "https://api.github.com/users/marksteward/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "body": "I had to read the code to understand what `save_order` does.", + "created_at": "2025-08-22T02:35:53Z", + "updated_at": "2025-09-26T15:20:05Z", + "closed_at": "2025-09-26T15:19:57Z", + "merged_at": "2025-09-26T15:19:57Z", + "merge_commit_sha": "6f381ac152ec1bf2ba7686cbf7d0c23b3d5d370b", + "assignees": [], + "requested_reviewers": [], + "requested_teams": [], + "labels": [], + "milestone": null, + "draft": false, + "commits_url": "https://api.github.com/repos/un33k/python-slugify/pulls/157/commits", + "review_comments_url": "https://api.github.com/repos/un33k/python-slugify/pulls/157/comments", + "review_comment_url": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/157/comments", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/436e798c6069adffcbd9c4d8688a142215033870", + "head": { + "label": "marksteward:master", + "ref": "master", + "sha": "436e798c6069adffcbd9c4d8688a142215033870", + "user": { + "login": "marksteward", + "id": 121960, + "node_id": "MDQ6VXNlcjEyMTk2MA==", + "avatar_url": "https://avatars.githubusercontent.com/u/121960?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/marksteward", + "html_url": "https://github.com/marksteward", + "followers_url": "https://api.github.com/users/marksteward/followers", + "following_url": "https://api.github.com/users/marksteward/following{/other_user}", + "gists_url": "https://api.github.com/users/marksteward/gists{/gist_id}", + "starred_url": "https://api.github.com/users/marksteward/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/marksteward/subscriptions", + "organizations_url": "https://api.github.com/users/marksteward/orgs", + "repos_url": "https://api.github.com/users/marksteward/repos", + "events_url": "https://api.github.com/users/marksteward/events{/privacy}", + "received_events_url": "https://api.github.com/users/marksteward/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 1042429739, + "node_id": "R_kgDOPiI3Kw", + "name": "python-slugify", + "full_name": "marksteward/python-slugify", + "private": false, + "owner": { + "login": "marksteward", + "id": 121960, + "node_id": "MDQ6VXNlcjEyMTk2MA==", + "avatar_url": "https://avatars.githubusercontent.com/u/121960?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/marksteward", + "html_url": "https://github.com/marksteward", + "followers_url": "https://api.github.com/users/marksteward/followers", + "following_url": "https://api.github.com/users/marksteward/following{/other_user}", + "gists_url": "https://api.github.com/users/marksteward/gists{/gist_id}", + "starred_url": "https://api.github.com/users/marksteward/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/marksteward/subscriptions", + "organizations_url": "https://api.github.com/users/marksteward/orgs", + "repos_url": "https://api.github.com/users/marksteward/repos", + "events_url": "https://api.github.com/users/marksteward/events{/privacy}", + "received_events_url": "https://api.github.com/users/marksteward/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/marksteward/python-slugify", + "description": "Returns unicode slugs", + "fork": true, + "url": "https://api.github.com/repos/marksteward/python-slugify", + "forks_url": "https://api.github.com/repos/marksteward/python-slugify/forks", + "keys_url": "https://api.github.com/repos/marksteward/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/marksteward/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/marksteward/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/marksteward/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/marksteward/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/marksteward/python-slugify/events", + "assignees_url": "https://api.github.com/repos/marksteward/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/marksteward/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/marksteward/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/marksteward/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/marksteward/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/marksteward/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/marksteward/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/marksteward/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/marksteward/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/marksteward/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/marksteward/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/marksteward/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/marksteward/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/marksteward/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/marksteward/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/marksteward/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/marksteward/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/marksteward/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/marksteward/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/marksteward/python-slugify/merges", + "archive_url": "https://api.github.com/repos/marksteward/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/marksteward/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/marksteward/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/marksteward/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/marksteward/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/marksteward/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/marksteward/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/marksteward/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/marksteward/python-slugify/deployments", + "created_at": "2025-08-22T02:24:51Z", + "updated_at": "2025-08-22T02:35:06Z", + "pushed_at": "2025-08-22T02:35:03Z", + "git_url": "git://github.com/marksteward/python-slugify.git", + "ssh_url": "git@github.com:marksteward/python-slugify.git", + "clone_url": "https://github.com/marksteward/python-slugify.git", + "svn_url": "https://github.com/marksteward/python-slugify", + "homepage": "", + "size": 186, + "stargazers_count": 0, + "watchers_count": 0, + "language": "Python", + "has_issues": false, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 0, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 0, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 0, + "open_issues": 0, + "watchers": 0, + "default_branch": "master" + } + }, + "base": { + "label": "un33k:master", + "ref": "master", + "sha": "872b37509399a7f02e53f46ad9881f63f66d334b", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 6220331, + "node_id": "MDEwOlJlcG9zaXRvcnk2MjIwMzMx", + "name": "python-slugify", + "full_name": "un33k/python-slugify", + "private": false, + "owner": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/un33k/python-slugify", + "description": "Returns unicode slugs", + "fork": false, + "url": "https://api.github.com/repos/un33k/python-slugify", + "forks_url": "https://api.github.com/repos/un33k/python-slugify/forks", + "keys_url": "https://api.github.com/repos/un33k/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/un33k/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/un33k/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/un33k/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/un33k/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/un33k/python-slugify/events", + "assignees_url": "https://api.github.com/repos/un33k/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/un33k/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/un33k/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/un33k/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/un33k/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/un33k/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/un33k/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/un33k/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/un33k/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/un33k/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/un33k/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/un33k/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/un33k/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/un33k/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/un33k/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/un33k/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/un33k/python-slugify/merges", + "archive_url": "https://api.github.com/repos/un33k/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/un33k/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/un33k/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/un33k/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/un33k/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/un33k/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/un33k/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/un33k/python-slugify/deployments", + "created_at": "2012-10-15T01:44:50Z", + "updated_at": "2026-09-05T12:52:20Z", + "pushed_at": "2026-04-27T11:17:17Z", + "git_url": "git://github.com/un33k/python-slugify.git", + "ssh_url": "git@github.com:un33k/python-slugify.git", + "clone_url": "https://github.com/un33k/python-slugify.git", + "svn_url": "https://github.com/un33k/python-slugify", + "homepage": "", + "size": 208, + "stargazers_count": 1623, + "watchers_count": 1623, + "language": "Python", + "has_issues": true, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 134, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 17, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 134, + "open_issues": 17, + "watchers": 1623, + "default_branch": "master" + } + }, + "_links": { + "self": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/157" + }, + "html": { + "href": "https://github.com/un33k/python-slugify/pull/157" + }, + "issue": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/157" + }, + "comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/157/comments" + }, + "review_comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/157/comments" + }, + "review_comment": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}" + }, + "commits": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/157/commits" + }, + "statuses": { + "href": "https://api.github.com/repos/un33k/python-slugify/statuses/436e798c6069adffcbd9c4d8688a142215033870" + } + }, + "author_association": "CONTRIBUTOR", + "auto_merge": null, + "assignee": null, + "active_lock_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/159", + "id": 2894289838, + "node_id": "PR_kwDOAF7qK86sg1uu", + "html_url": "https://github.com/un33k/python-slugify/pull/159", + "diff_url": "https://github.com/un33k/python-slugify/pull/159.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/159.patch", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/159", + "number": 159, + "state": "closed", + "locked": false, + "title": "Fix build process", + "user": { + "login": "kurtmckee", + "id": 39996, + "node_id": "MDQ6VXNlcjM5OTk2", + "avatar_url": "https://avatars.githubusercontent.com/u/39996?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/kurtmckee", + "html_url": "https://github.com/kurtmckee", + "followers_url": "https://api.github.com/users/kurtmckee/followers", + "following_url": "https://api.github.com/users/kurtmckee/following{/other_user}", + "gists_url": "https://api.github.com/users/kurtmckee/gists{/gist_id}", + "starred_url": "https://api.github.com/users/kurtmckee/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/kurtmckee/subscriptions", + "organizations_url": "https://api.github.com/users/kurtmckee/orgs", + "repos_url": "https://api.github.com/users/kurtmckee/repos", + "events_url": "https://api.github.com/users/kurtmckee/events{/privacy}", + "received_events_url": "https://api.github.com/users/kurtmckee/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "body": "Hello! Thanks for your work on python-slugify!\r\n\r\nslugify's packaging is using a number of deprecated constructs, and building and installing the package throws a number of deprecation warnings. This PR resolves all of the warnings that I was seeing.\r\n\r\n* Remove deprecated `codecs.open()` usage\r\n \r\n `codecs.open()` is deprecated and throws a `DeprecationWarning`:\r\n \r\n ```\r\n :20: DeprecationWarning: codecs.open() is deprecated. Use open() instead.\r\n :23: DeprecationWarning: codecs.open() is deprecated. Use open() instead.\r\n ```\r\n\r\n* Remove the unknown `tests_require` option\r\n \r\n The `tests_require` option throws a `UserWarning`:\r\n \r\n ```\r\n /.../site-packages/setuptools/_distutils/dist.py:289:\r\n UserWarning: Unknown distribution option: 'tests_require'\r\n warnings.warn(msg)\r\n ```\r\n\r\n* Resolve deprecated `License` trove classifier usage\r\n \r\n This resolves build warnings thrown by setuptools:\r\n \r\n ```\r\n /.../site-packages/setuptools/dist.py:759: SetuptoolsDeprecationWarning: License classifiers are deprecated.\r\n !!\r\n \r\n ********************************************************************************\r\n Please consider removing the following classifiers in favor of a SPDX license expression:\r\n \r\n License :: OSI Approved :: MIT License\r\n \r\n See https://packaging.python.org/en/latest/guides/writing-pyproject-toml/#license for details.\r\n ********************************************************************************\r\n \r\n !!\r\n ```\r\n\r\n* Resolve deprecation warnings thrown when installing in editable mode\r\n \r\n Running `pip install -e.` displays the following deprecation warnings:\r\n \r\n ```\r\n DEPRECATION: Legacy editable install of python-slugify==8.0.4\r\n from file:///.../pr-python-slugify (setup.py develop) is deprecated.\r\n pip 25.3 will enforce this behaviour change.\r\n A possible replacement is to add a pyproject.toml\r\n or enable --use-pep517, and use setuptools >= 64.\r\n If the resulting installation is not behaving as expected,\r\n try using --config-settings editable_mode=compat.\r\n Please consult the setuptools documentation for more information.\r\n Discussion can be found at https://github.com/pypa/pip/issues/11457\r\n ```\r\n\r\n----\r\n\r\nWith these changes, it's now possible to build and install the package without any warnings. Example:\r\n\r\n```\r\n# Building the package no longer throws warnings:\r\npython -m pip install build\r\npython -m build\r\n\r\n# Installing in editable mode no longer throws warnings:\r\npython -m pip install -e.\r\n```\r\n\r\n> [!WARNING]\r\n>\r\n> Running commands like `python setup.py bdist_wheel` is deprecated and _**may start failing at the end of this month**_. I strongly recommend migrating off of an executable `setup.py` file entirely, in favor of a declarative `pyproject.toml` file.\r\n> \r\n> ```\r\n> $ python setup.py bdist_wheel\r\n> ...\r\n> /.../lib/python3.13/site-packages/setuptools/_distutils/cmd.py:90: SetuptoolsDeprecationWarning: setup.py install is deprecated.\r\n> !!\r\n> \r\n> ********************************************************************************\r\n> Please avoid running ``setup.py`` directly.\r\n> Instead, use pypa/build, pypa/installer or other\r\n> standards-based tools.\r\n> \r\n> By 2025-Oct-31, you need to update your project and remove deprecated calls\r\n> or your builds will no longer be supported.\r\n> \r\n> See https://blog.ganssle.io/articles/2021/10/setup-py-deprecated.html for details.\r\n> ********************************************************************************\r\n> \r\n> !!\r\n> ```", + "created_at": "2025-10-07T14:50:29Z", + "updated_at": "2026-01-07T13:07:19Z", + "closed_at": "2026-01-07T07:09:50Z", + "merged_at": "2026-01-07T07:09:50Z", + "merge_commit_sha": "8b0ac2192d11416c51f3c98a4d0eebf8ac8387f2", + "assignees": [], + "requested_reviewers": [], + "requested_teams": [], + "labels": [], + "milestone": null, + "draft": false, + "commits_url": "https://api.github.com/repos/un33k/python-slugify/pulls/159/commits", + "review_comments_url": "https://api.github.com/repos/un33k/python-slugify/pulls/159/comments", + "review_comment_url": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/159/comments", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/733c5bbc5efd275b01799747d460447e94ef75d6", + "head": { + "label": "kurtmckee:fix-build-process", + "ref": "fix-build-process", + "sha": "733c5bbc5efd275b01799747d460447e94ef75d6", + "user": { + "login": "kurtmckee", + "id": 39996, + "node_id": "MDQ6VXNlcjM5OTk2", + "avatar_url": "https://avatars.githubusercontent.com/u/39996?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/kurtmckee", + "html_url": "https://github.com/kurtmckee", + "followers_url": "https://api.github.com/users/kurtmckee/followers", + "following_url": "https://api.github.com/users/kurtmckee/following{/other_user}", + "gists_url": "https://api.github.com/users/kurtmckee/gists{/gist_id}", + "starred_url": "https://api.github.com/users/kurtmckee/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/kurtmckee/subscriptions", + "organizations_url": "https://api.github.com/users/kurtmckee/orgs", + "repos_url": "https://api.github.com/users/kurtmckee/repos", + "events_url": "https://api.github.com/users/kurtmckee/events{/privacy}", + "received_events_url": "https://api.github.com/users/kurtmckee/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 1071543308, + "node_id": "R_kgDOP950DA", + "name": "pr-python-slugify", + "full_name": "kurtmckee/pr-python-slugify", + "private": false, + "owner": { + "login": "kurtmckee", + "id": 39996, + "node_id": "MDQ6VXNlcjM5OTk2", + "avatar_url": "https://avatars.githubusercontent.com/u/39996?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/kurtmckee", + "html_url": "https://github.com/kurtmckee", + "followers_url": "https://api.github.com/users/kurtmckee/followers", + "following_url": "https://api.github.com/users/kurtmckee/following{/other_user}", + "gists_url": "https://api.github.com/users/kurtmckee/gists{/gist_id}", + "starred_url": "https://api.github.com/users/kurtmckee/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/kurtmckee/subscriptions", + "organizations_url": "https://api.github.com/users/kurtmckee/orgs", + "repos_url": "https://api.github.com/users/kurtmckee/repos", + "events_url": "https://api.github.com/users/kurtmckee/events{/privacy}", + "received_events_url": "https://api.github.com/users/kurtmckee/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/kurtmckee/pr-python-slugify", + "description": "PR-only fork -- CHANGES MERGED 😄", + "fork": true, + "url": "https://api.github.com/repos/kurtmckee/pr-python-slugify", + "forks_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/forks", + "keys_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/teams", + "hooks_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/events", + "assignees_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/tags", + "blobs_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/subscription", + "commits_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/merges", + "archive_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/downloads", + "issues_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/deployments", + "created_at": "2025-10-07T13:43:24Z", + "updated_at": "2026-01-07T13:25:12Z", + "pushed_at": "2026-01-07T17:04:51Z", + "git_url": "git://github.com/kurtmckee/pr-python-slugify.git", + "ssh_url": "git@github.com:kurtmckee/pr-python-slugify.git", + "clone_url": "https://github.com/kurtmckee/pr-python-slugify.git", + "svn_url": "https://github.com/kurtmckee/pr-python-slugify", + "homepage": "", + "size": 191, + "stargazers_count": 0, + "watchers_count": 0, + "language": "Python", + "has_issues": false, + "has_projects": false, + "has_downloads": false, + "has_wiki": false, + "has_pages": false, + "has_discussions": false, + "forks_count": 0, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 0, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 0, + "open_issues": 0, + "watchers": 0, + "default_branch": "main" + } + }, + "base": { + "label": "un33k:master", + "ref": "master", + "sha": "c54cc57cd5338aeca97ae3520940241387295f9c", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 6220331, + "node_id": "MDEwOlJlcG9zaXRvcnk2MjIwMzMx", + "name": "python-slugify", + "full_name": "un33k/python-slugify", + "private": false, + "owner": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/un33k/python-slugify", + "description": "Returns unicode slugs", + "fork": false, + "url": "https://api.github.com/repos/un33k/python-slugify", + "forks_url": "https://api.github.com/repos/un33k/python-slugify/forks", + "keys_url": "https://api.github.com/repos/un33k/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/un33k/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/un33k/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/un33k/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/un33k/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/un33k/python-slugify/events", + "assignees_url": "https://api.github.com/repos/un33k/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/un33k/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/un33k/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/un33k/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/un33k/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/un33k/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/un33k/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/un33k/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/un33k/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/un33k/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/un33k/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/un33k/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/un33k/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/un33k/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/un33k/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/un33k/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/un33k/python-slugify/merges", + "archive_url": "https://api.github.com/repos/un33k/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/un33k/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/un33k/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/un33k/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/un33k/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/un33k/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/un33k/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/un33k/python-slugify/deployments", + "created_at": "2012-10-15T01:44:50Z", + "updated_at": "2026-09-05T12:52:20Z", + "pushed_at": "2026-04-27T11:17:17Z", + "git_url": "git://github.com/un33k/python-slugify.git", + "ssh_url": "git@github.com:un33k/python-slugify.git", + "clone_url": "https://github.com/un33k/python-slugify.git", + "svn_url": "https://github.com/un33k/python-slugify", + "homepage": "", + "size": 208, + "stargazers_count": 1623, + "watchers_count": 1623, + "language": "Python", + "has_issues": true, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 134, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 17, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 134, + "open_issues": 17, + "watchers": 1623, + "default_branch": "master" + } + }, + "_links": { + "self": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/159" + }, + "html": { + "href": "https://github.com/un33k/python-slugify/pull/159" + }, + "issue": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/159" + }, + "comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/159/comments" + }, + "review_comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/159/comments" + }, + "review_comment": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}" + }, + "commits": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/159/commits" + }, + "statuses": { + "href": "https://api.github.com/repos/un33k/python-slugify/statuses/733c5bbc5efd275b01799747d460447e94ef75d6" + } + }, + "author_association": "CONTRIBUTOR", + "auto_merge": null, + "assignee": null, + "active_lock_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/160", + "id": 2913206507, + "node_id": "PR_kwDOAF7qK86tpADr", + "html_url": "https://github.com/un33k/python-slugify/pull/160", + "diff_url": "https://github.com/un33k/python-slugify/pull/160.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/160.patch", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/160", + "number": 160, + "state": "closed", + "locked": false, + "title": "Reintroduce tox and thoroughly test the project", + "user": { + "login": "kurtmckee", + "id": 39996, + "node_id": "MDQ6VXNlcjM5OTk2", + "avatar_url": "https://avatars.githubusercontent.com/u/39996?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/kurtmckee", + "html_url": "https://github.com/kurtmckee", + "followers_url": "https://api.github.com/users/kurtmckee/followers", + "following_url": "https://api.github.com/users/kurtmckee/following{/other_user}", + "gists_url": "https://api.github.com/users/kurtmckee/gists{/gist_id}", + "starred_url": "https://api.github.com/users/kurtmckee/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/kurtmckee/subscriptions", + "organizations_url": "https://api.github.com/users/kurtmckee/orgs", + "repos_url": "https://api.github.com/users/kurtmckee/repos", + "events_url": "https://api.github.com/users/kurtmckee/events{/privacy}", + "received_events_url": "https://api.github.com/users/kurtmckee/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "body": "This commit introduces the following major changes:\r\n\r\n* Use tox.\r\n* Test the project against both `unidecode` and `text_unidecode`.\r\n Previously, `unidecode` was untested.\r\n* Drop support for Python 3.7, 3.8, and 3.9.\r\n CI was unable to run because Python 3.7 is no longer available.\r\n In addition, Python 3.9 and lower are all end-of-life.\r\n* Test against PyPy 3.11 and Python 3.14.\r\n* Test type annotations using mypy.\r\n Previously, type annotations were untested.\r\n* Install and test all supported Python interpreters in CI at once.\r\n* Use tox, and the tox-uv plugin, exclusively in CI.\r\n This eliminates differences between local and CI testing.\r\n* Run CI against pull requests.\r\n* Collect, combine, and report coverage\r\n for all Python versions and dependencies, locally and in CI.\r\n\r\nIn addition, this commit introduces the following minor changes:\r\n\r\n* Fix typing issues identified by mypy.\r\n Note that `text_unidecode` is untyped and must be type-ignored.\r\n* Remove almost all coverage `pragma: nocover` lines.\r\n* Fix incorrect copy/pasted comments in `ci.yml` and `main.yml`.\r\n* Upgrade `actions/checkout` to v5 and `actions/setup-python` to v6.\r\n\r\n----\r\n\r\nTaken together, these changes improve the health of the project by ensuring that the test suite can be run locally, tests all dependencies, runs successfully in CI, and that there is no drift between CI and local testing.\r\n\r\n[Here is an example of a CI run](https://github.com/kurtmckee/pr-python-slugify/actions/runs/18494261172/job/52694739484) using the code in this PR.", + "created_at": "2025-10-14T11:03:34Z", + "updated_at": "2026-01-06T21:23:43Z", + "closed_at": "2026-01-06T21:10:30Z", + "merged_at": "2026-01-06T21:10:30Z", + "merge_commit_sha": "c54cc57cd5338aeca97ae3520940241387295f9c", + "assignees": [], + "requested_reviewers": [], + "requested_teams": [], + "labels": [], + "milestone": null, + "draft": false, + "commits_url": "https://api.github.com/repos/un33k/python-slugify/pulls/160/commits", + "review_comments_url": "https://api.github.com/repos/un33k/python-slugify/pulls/160/comments", + "review_comment_url": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/160/comments", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/1ef698fa7a265ec8971d0b641fb6e735dcd667dc", + "head": { + "label": "kurtmckee:test-everything", + "ref": "test-everything", + "sha": "1ef698fa7a265ec8971d0b641fb6e735dcd667dc", + "user": { + "login": "kurtmckee", + "id": 39996, + "node_id": "MDQ6VXNlcjM5OTk2", + "avatar_url": "https://avatars.githubusercontent.com/u/39996?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/kurtmckee", + "html_url": "https://github.com/kurtmckee", + "followers_url": "https://api.github.com/users/kurtmckee/followers", + "following_url": "https://api.github.com/users/kurtmckee/following{/other_user}", + "gists_url": "https://api.github.com/users/kurtmckee/gists{/gist_id}", + "starred_url": "https://api.github.com/users/kurtmckee/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/kurtmckee/subscriptions", + "organizations_url": "https://api.github.com/users/kurtmckee/orgs", + "repos_url": "https://api.github.com/users/kurtmckee/repos", + "events_url": "https://api.github.com/users/kurtmckee/events{/privacy}", + "received_events_url": "https://api.github.com/users/kurtmckee/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 1071543308, + "node_id": "R_kgDOP950DA", + "name": "pr-python-slugify", + "full_name": "kurtmckee/pr-python-slugify", + "private": false, + "owner": { + "login": "kurtmckee", + "id": 39996, + "node_id": "MDQ6VXNlcjM5OTk2", + "avatar_url": "https://avatars.githubusercontent.com/u/39996?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/kurtmckee", + "html_url": "https://github.com/kurtmckee", + "followers_url": "https://api.github.com/users/kurtmckee/followers", + "following_url": "https://api.github.com/users/kurtmckee/following{/other_user}", + "gists_url": "https://api.github.com/users/kurtmckee/gists{/gist_id}", + "starred_url": "https://api.github.com/users/kurtmckee/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/kurtmckee/subscriptions", + "organizations_url": "https://api.github.com/users/kurtmckee/orgs", + "repos_url": "https://api.github.com/users/kurtmckee/repos", + "events_url": "https://api.github.com/users/kurtmckee/events{/privacy}", + "received_events_url": "https://api.github.com/users/kurtmckee/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/kurtmckee/pr-python-slugify", + "description": "PR-only fork -- CHANGES MERGED 😄", + "fork": true, + "url": "https://api.github.com/repos/kurtmckee/pr-python-slugify", + "forks_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/forks", + "keys_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/teams", + "hooks_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/events", + "assignees_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/tags", + "blobs_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/subscription", + "commits_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/merges", + "archive_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/downloads", + "issues_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/deployments", + "created_at": "2025-10-07T13:43:24Z", + "updated_at": "2026-01-07T13:25:12Z", + "pushed_at": "2026-01-07T17:04:51Z", + "git_url": "git://github.com/kurtmckee/pr-python-slugify.git", + "ssh_url": "git@github.com:kurtmckee/pr-python-slugify.git", + "clone_url": "https://github.com/kurtmckee/pr-python-slugify.git", + "svn_url": "https://github.com/kurtmckee/pr-python-slugify", + "homepage": "", + "size": 191, + "stargazers_count": 0, + "watchers_count": 0, + "language": "Python", + "has_issues": false, + "has_projects": false, + "has_downloads": false, + "has_wiki": false, + "has_pages": false, + "has_discussions": false, + "forks_count": 0, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 0, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 0, + "open_issues": 0, + "watchers": 0, + "default_branch": "main" + } + }, + "base": { + "label": "un33k:master", + "ref": "master", + "sha": "45f9d33a3a0d7302120d2dde26fa2ac6131edb6b", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 6220331, + "node_id": "MDEwOlJlcG9zaXRvcnk2MjIwMzMx", + "name": "python-slugify", + "full_name": "un33k/python-slugify", + "private": false, + "owner": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/un33k/python-slugify", + "description": "Returns unicode slugs", + "fork": false, + "url": "https://api.github.com/repos/un33k/python-slugify", + "forks_url": "https://api.github.com/repos/un33k/python-slugify/forks", + "keys_url": "https://api.github.com/repos/un33k/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/un33k/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/un33k/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/un33k/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/un33k/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/un33k/python-slugify/events", + "assignees_url": "https://api.github.com/repos/un33k/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/un33k/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/un33k/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/un33k/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/un33k/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/un33k/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/un33k/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/un33k/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/un33k/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/un33k/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/un33k/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/un33k/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/un33k/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/un33k/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/un33k/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/un33k/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/un33k/python-slugify/merges", + "archive_url": "https://api.github.com/repos/un33k/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/un33k/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/un33k/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/un33k/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/un33k/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/un33k/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/un33k/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/un33k/python-slugify/deployments", + "created_at": "2012-10-15T01:44:50Z", + "updated_at": "2026-09-05T12:52:20Z", + "pushed_at": "2026-04-27T11:17:17Z", + "git_url": "git://github.com/un33k/python-slugify.git", + "ssh_url": "git@github.com:un33k/python-slugify.git", + "clone_url": "https://github.com/un33k/python-slugify.git", + "svn_url": "https://github.com/un33k/python-slugify", + "homepage": "", + "size": 208, + "stargazers_count": 1623, + "watchers_count": 1623, + "language": "Python", + "has_issues": true, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 134, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 17, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 134, + "open_issues": 17, + "watchers": 1623, + "default_branch": "master" + } + }, + "_links": { + "self": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/160" + }, + "html": { + "href": "https://github.com/un33k/python-slugify/pull/160" + }, + "issue": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/160" + }, + "comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/160/comments" + }, + "review_comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/160/comments" + }, + "review_comment": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}" + }, + "commits": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/160/commits" + }, + "statuses": { + "href": "https://api.github.com/repos/un33k/python-slugify/statuses/1ef698fa7a265ec8971d0b641fb6e735dcd667dc" + } + }, + "author_association": "CONTRIBUTOR", + "auto_merge": null, + "assignee": null, + "active_lock_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/161", + "id": 2918775291, + "node_id": "PR_kwDOAF7qK86t-Pn7", + "html_url": "https://github.com/un33k/python-slugify/pull/161", + "diff_url": "https://github.com/un33k/python-slugify/pull/161.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/161.patch", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/161", + "number": 161, + "state": "closed", + "locked": false, + "title": "Remove references to `easy_install`, which is deprecated", + "user": { + "login": "kurtmckee", + "id": 39996, + "node_id": "MDQ6VXNlcjM5OTk2", + "avatar_url": "https://avatars.githubusercontent.com/u/39996?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/kurtmckee", + "html_url": "https://github.com/kurtmckee", + "followers_url": "https://api.github.com/users/kurtmckee/followers", + "following_url": "https://api.github.com/users/kurtmckee/following{/other_user}", + "gists_url": "https://api.github.com/users/kurtmckee/gists{/gist_id}", + "starred_url": "https://api.github.com/users/kurtmckee/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/kurtmckee/subscriptions", + "organizations_url": "https://api.github.com/users/kurtmckee/orgs", + "repos_url": "https://api.github.com/users/kurtmckee/repos", + "events_url": "https://api.github.com/users/kurtmckee/events{/privacy}", + "received_events_url": "https://api.github.com/users/kurtmckee/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "body": "This PR removes references to `easy_install` in the README.\r\n\r\n[`easy_install` is deprecated](https://setuptools.pypa.io/en/latest/deprecated/easy_install.html), and users are explicitly warned not to use it.\r\n", + "created_at": "2025-10-15T21:42:50Z", + "updated_at": "2025-11-12T15:07:24Z", + "closed_at": "2025-11-12T13:30:07Z", + "merged_at": "2025-11-12T13:30:07Z", + "merge_commit_sha": "b906c75f4579881a2896e855bb963822401b816a", + "assignees": [], + "requested_reviewers": [], + "requested_teams": [], + "labels": [], + "milestone": null, + "draft": false, + "commits_url": "https://api.github.com/repos/un33k/python-slugify/pulls/161/commits", + "review_comments_url": "https://api.github.com/repos/un33k/python-slugify/pulls/161/comments", + "review_comment_url": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/161/comments", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/32a390f5b2145b4fab2532d00f59b26f0acac132", + "head": { + "label": "kurtmckee:rm-easy_install", + "ref": "rm-easy_install", + "sha": "32a390f5b2145b4fab2532d00f59b26f0acac132", + "user": { + "login": "kurtmckee", + "id": 39996, + "node_id": "MDQ6VXNlcjM5OTk2", + "avatar_url": "https://avatars.githubusercontent.com/u/39996?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/kurtmckee", + "html_url": "https://github.com/kurtmckee", + "followers_url": "https://api.github.com/users/kurtmckee/followers", + "following_url": "https://api.github.com/users/kurtmckee/following{/other_user}", + "gists_url": "https://api.github.com/users/kurtmckee/gists{/gist_id}", + "starred_url": "https://api.github.com/users/kurtmckee/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/kurtmckee/subscriptions", + "organizations_url": "https://api.github.com/users/kurtmckee/orgs", + "repos_url": "https://api.github.com/users/kurtmckee/repos", + "events_url": "https://api.github.com/users/kurtmckee/events{/privacy}", + "received_events_url": "https://api.github.com/users/kurtmckee/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 1071543308, + "node_id": "R_kgDOP950DA", + "name": "pr-python-slugify", + "full_name": "kurtmckee/pr-python-slugify", + "private": false, + "owner": { + "login": "kurtmckee", + "id": 39996, + "node_id": "MDQ6VXNlcjM5OTk2", + "avatar_url": "https://avatars.githubusercontent.com/u/39996?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/kurtmckee", + "html_url": "https://github.com/kurtmckee", + "followers_url": "https://api.github.com/users/kurtmckee/followers", + "following_url": "https://api.github.com/users/kurtmckee/following{/other_user}", + "gists_url": "https://api.github.com/users/kurtmckee/gists{/gist_id}", + "starred_url": "https://api.github.com/users/kurtmckee/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/kurtmckee/subscriptions", + "organizations_url": "https://api.github.com/users/kurtmckee/orgs", + "repos_url": "https://api.github.com/users/kurtmckee/repos", + "events_url": "https://api.github.com/users/kurtmckee/events{/privacy}", + "received_events_url": "https://api.github.com/users/kurtmckee/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/kurtmckee/pr-python-slugify", + "description": "PR-only fork -- CHANGES MERGED 😄", + "fork": true, + "url": "https://api.github.com/repos/kurtmckee/pr-python-slugify", + "forks_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/forks", + "keys_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/teams", + "hooks_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/events", + "assignees_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/tags", + "blobs_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/subscription", + "commits_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/merges", + "archive_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/downloads", + "issues_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/deployments", + "created_at": "2025-10-07T13:43:24Z", + "updated_at": "2026-01-07T13:25:12Z", + "pushed_at": "2026-01-07T17:04:51Z", + "git_url": "git://github.com/kurtmckee/pr-python-slugify.git", + "ssh_url": "git@github.com:kurtmckee/pr-python-slugify.git", + "clone_url": "https://github.com/kurtmckee/pr-python-slugify.git", + "svn_url": "https://github.com/kurtmckee/pr-python-slugify", + "homepage": "", + "size": 191, + "stargazers_count": 0, + "watchers_count": 0, + "language": "Python", + "has_issues": false, + "has_projects": false, + "has_downloads": false, + "has_wiki": false, + "has_pages": false, + "has_discussions": false, + "forks_count": 0, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 0, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 0, + "open_issues": 0, + "watchers": 0, + "default_branch": "main" + } + }, + "base": { + "label": "un33k:master", + "ref": "master", + "sha": "d5643b16caf3f312d39574dccf49763da0908eb1", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 6220331, + "node_id": "MDEwOlJlcG9zaXRvcnk2MjIwMzMx", + "name": "python-slugify", + "full_name": "un33k/python-slugify", + "private": false, + "owner": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/un33k/python-slugify", + "description": "Returns unicode slugs", + "fork": false, + "url": "https://api.github.com/repos/un33k/python-slugify", + "forks_url": "https://api.github.com/repos/un33k/python-slugify/forks", + "keys_url": "https://api.github.com/repos/un33k/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/un33k/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/un33k/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/un33k/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/un33k/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/un33k/python-slugify/events", + "assignees_url": "https://api.github.com/repos/un33k/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/un33k/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/un33k/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/un33k/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/un33k/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/un33k/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/un33k/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/un33k/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/un33k/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/un33k/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/un33k/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/un33k/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/un33k/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/un33k/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/un33k/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/un33k/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/un33k/python-slugify/merges", + "archive_url": "https://api.github.com/repos/un33k/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/un33k/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/un33k/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/un33k/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/un33k/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/un33k/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/un33k/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/un33k/python-slugify/deployments", + "created_at": "2012-10-15T01:44:50Z", + "updated_at": "2026-09-05T12:52:20Z", + "pushed_at": "2026-04-27T11:17:17Z", + "git_url": "git://github.com/un33k/python-slugify.git", + "ssh_url": "git@github.com:un33k/python-slugify.git", + "clone_url": "https://github.com/un33k/python-slugify.git", + "svn_url": "https://github.com/un33k/python-slugify", + "homepage": "", + "size": 208, + "stargazers_count": 1623, + "watchers_count": 1623, + "language": "Python", + "has_issues": true, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 134, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 17, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 134, + "open_issues": 17, + "watchers": 1623, + "default_branch": "master" + } + }, + "_links": { + "self": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/161" + }, + "html": { + "href": "https://github.com/un33k/python-slugify/pull/161" + }, + "issue": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/161" + }, + "comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/161/comments" + }, + "review_comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/161/comments" + }, + "review_comment": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}" + }, + "commits": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/161/commits" + }, + "statuses": { + "href": "https://api.github.com/repos/un33k/python-slugify/statuses/32a390f5b2145b4fab2532d00f59b26f0acac132" + } + }, + "author_association": "CONTRIBUTOR", + "auto_merge": null, + "assignee": null, + "active_lock_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/163", + "id": 3031812193, + "node_id": "PR_kwDOAF7qK860tchh", + "html_url": "https://github.com/un33k/python-slugify/pull/163", + "diff_url": "https://github.com/un33k/python-slugify/pull/163.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/163.patch", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/163", + "number": 163, + "state": "closed", + "locked": false, + "title": "Default to anyascii decoder", + "user": { + "login": "ndrezn", + "id": 38958867, + "node_id": "MDQ6VXNlcjM4OTU4ODY3", + "avatar_url": "https://avatars.githubusercontent.com/u/38958867?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/ndrezn", + "html_url": "https://github.com/ndrezn", + "followers_url": "https://api.github.com/users/ndrezn/followers", + "following_url": "https://api.github.com/users/ndrezn/following{/other_user}", + "gists_url": "https://api.github.com/users/ndrezn/gists{/gist_id}", + "starred_url": "https://api.github.com/users/ndrezn/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/ndrezn/subscriptions", + "organizations_url": "https://api.github.com/users/ndrezn/orgs", + "repos_url": "https://api.github.com/users/ndrezn/repos", + "events_url": "https://api.github.com/users/ndrezn/events{/privacy}", + "received_events_url": "https://api.github.com/users/ndrezn/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "body": "Default to a non-GPL encoder. This encoder works for most cases, but it could be backwards incompatible.\r\n\r\nI recommend a major release as a result if this change is accepted.\r\n\r\nSee: #128 , #162, etc for more related to this issue. Providing a non-copyleft licensed default package prevents unintended misinterpretation of the package license and putting folks using this package into murky legal water.", + "created_at": "2025-11-20T22:53:42Z", + "updated_at": "2026-01-09T16:27:47Z", + "closed_at": "2026-01-08T21:56:02Z", + "merged_at": null, + "merge_commit_sha": null, + "assignees": [], + "requested_reviewers": [], + "requested_teams": [], + "labels": [], + "milestone": null, + "draft": false, + "commits_url": "https://api.github.com/repos/un33k/python-slugify/pulls/163/commits", + "review_comments_url": "https://api.github.com/repos/un33k/python-slugify/pulls/163/comments", + "review_comment_url": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/163/comments", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/c1dade63954885f1409ee40596645ee5eb8c3c34", + "head": { + "label": "ndrezn:default-anyascii-decoder", + "ref": "default-anyascii-decoder", + "sha": "c1dade63954885f1409ee40596645ee5eb8c3c34", + "user": { + "login": "ndrezn", + "id": 38958867, + "node_id": "MDQ6VXNlcjM4OTU4ODY3", + "avatar_url": "https://avatars.githubusercontent.com/u/38958867?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/ndrezn", + "html_url": "https://github.com/ndrezn", + "followers_url": "https://api.github.com/users/ndrezn/followers", + "following_url": "https://api.github.com/users/ndrezn/following{/other_user}", + "gists_url": "https://api.github.com/users/ndrezn/gists{/gist_id}", + "starred_url": "https://api.github.com/users/ndrezn/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/ndrezn/subscriptions", + "organizations_url": "https://api.github.com/users/ndrezn/orgs", + "repos_url": "https://api.github.com/users/ndrezn/repos", + "events_url": "https://api.github.com/users/ndrezn/events{/privacy}", + "received_events_url": "https://api.github.com/users/ndrezn/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 1100893941, + "node_id": "R_kgDOQZ5O9Q", + "name": "python-slugify", + "full_name": "ndrezn/python-slugify", + "private": false, + "owner": { + "login": "ndrezn", + "id": 38958867, + "node_id": "MDQ6VXNlcjM4OTU4ODY3", + "avatar_url": "https://avatars.githubusercontent.com/u/38958867?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/ndrezn", + "html_url": "https://github.com/ndrezn", + "followers_url": "https://api.github.com/users/ndrezn/followers", + "following_url": "https://api.github.com/users/ndrezn/following{/other_user}", + "gists_url": "https://api.github.com/users/ndrezn/gists{/gist_id}", + "starred_url": "https://api.github.com/users/ndrezn/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/ndrezn/subscriptions", + "organizations_url": "https://api.github.com/users/ndrezn/orgs", + "repos_url": "https://api.github.com/users/ndrezn/repos", + "events_url": "https://api.github.com/users/ndrezn/events{/privacy}", + "received_events_url": "https://api.github.com/users/ndrezn/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/ndrezn/python-slugify", + "description": "Returns unicode slugs", + "fork": true, + "url": "https://api.github.com/repos/ndrezn/python-slugify", + "forks_url": "https://api.github.com/repos/ndrezn/python-slugify/forks", + "keys_url": "https://api.github.com/repos/ndrezn/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/ndrezn/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/ndrezn/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/ndrezn/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/ndrezn/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/ndrezn/python-slugify/events", + "assignees_url": "https://api.github.com/repos/ndrezn/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/ndrezn/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/ndrezn/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/ndrezn/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/ndrezn/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/ndrezn/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/ndrezn/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/ndrezn/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/ndrezn/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/ndrezn/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/ndrezn/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/ndrezn/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/ndrezn/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/ndrezn/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/ndrezn/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/ndrezn/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/ndrezn/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/ndrezn/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/ndrezn/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/ndrezn/python-slugify/merges", + "archive_url": "https://api.github.com/repos/ndrezn/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/ndrezn/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/ndrezn/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/ndrezn/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/ndrezn/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/ndrezn/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/ndrezn/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/ndrezn/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/ndrezn/python-slugify/deployments", + "created_at": "2025-11-20T22:50:55Z", + "updated_at": "2025-11-20T22:50:55Z", + "pushed_at": "2025-11-20T22:51:46Z", + "git_url": "git://github.com/ndrezn/python-slugify.git", + "ssh_url": "git@github.com:ndrezn/python-slugify.git", + "clone_url": "https://github.com/ndrezn/python-slugify.git", + "svn_url": "https://github.com/ndrezn/python-slugify", + "homepage": "", + "size": 201, + "stargazers_count": 0, + "watchers_count": 0, + "language": null, + "has_issues": false, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 0, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 0, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 0, + "open_issues": 0, + "watchers": 0, + "default_branch": "master" + } + }, + "base": { + "label": "un33k:master", + "ref": "master", + "sha": "b906c75f4579881a2896e855bb963822401b816a", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 6220331, + "node_id": "MDEwOlJlcG9zaXRvcnk2MjIwMzMx", + "name": "python-slugify", + "full_name": "un33k/python-slugify", + "private": false, + "owner": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/un33k/python-slugify", + "description": "Returns unicode slugs", + "fork": false, + "url": "https://api.github.com/repos/un33k/python-slugify", + "forks_url": "https://api.github.com/repos/un33k/python-slugify/forks", + "keys_url": "https://api.github.com/repos/un33k/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/un33k/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/un33k/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/un33k/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/un33k/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/un33k/python-slugify/events", + "assignees_url": "https://api.github.com/repos/un33k/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/un33k/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/un33k/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/un33k/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/un33k/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/un33k/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/un33k/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/un33k/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/un33k/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/un33k/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/un33k/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/un33k/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/un33k/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/un33k/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/un33k/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/un33k/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/un33k/python-slugify/merges", + "archive_url": "https://api.github.com/repos/un33k/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/un33k/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/un33k/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/un33k/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/un33k/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/un33k/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/un33k/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/un33k/python-slugify/deployments", + "created_at": "2012-10-15T01:44:50Z", + "updated_at": "2026-09-05T12:52:20Z", + "pushed_at": "2026-04-27T11:17:17Z", + "git_url": "git://github.com/un33k/python-slugify.git", + "ssh_url": "git@github.com:un33k/python-slugify.git", + "clone_url": "https://github.com/un33k/python-slugify.git", + "svn_url": "https://github.com/un33k/python-slugify", + "homepage": "", + "size": 208, + "stargazers_count": 1623, + "watchers_count": 1623, + "language": "Python", + "has_issues": true, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 134, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 17, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 134, + "open_issues": 17, + "watchers": 1623, + "default_branch": "master" + } + }, + "_links": { + "self": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/163" + }, + "html": { + "href": "https://github.com/un33k/python-slugify/pull/163" + }, + "issue": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/163" + }, + "comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/163/comments" + }, + "review_comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/163/comments" + }, + "review_comment": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}" + }, + "commits": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/163/commits" + }, + "statuses": { + "href": "https://api.github.com/repos/un33k/python-slugify/statuses/c1dade63954885f1409ee40596645ee5eb8c3c34" + } + }, + "author_association": "NONE", + "auto_merge": null, + "assignee": null, + "active_lock_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/164", + "id": 3149656001, + "node_id": "PR_kwDOAF7qK867u-_B", + "html_url": "https://github.com/un33k/python-slugify/pull/164", + "diff_url": "https://github.com/un33k/python-slugify/pull/164.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/164.patch", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/164", + "number": 164, + "state": "closed", + "locked": false, + "title": "Fix CI by dropping EOL Python versions", + "user": { + "login": "kurtmckee", + "id": 39996, + "node_id": "MDQ6VXNlcjM5OTk2", + "avatar_url": "https://avatars.githubusercontent.com/u/39996?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/kurtmckee", + "html_url": "https://github.com/kurtmckee", + "followers_url": "https://api.github.com/users/kurtmckee/followers", + "following_url": "https://api.github.com/users/kurtmckee/following{/other_user}", + "gists_url": "https://api.github.com/users/kurtmckee/gists{/gist_id}", + "starred_url": "https://api.github.com/users/kurtmckee/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/kurtmckee/subscriptions", + "organizations_url": "https://api.github.com/users/kurtmckee/orgs", + "repos_url": "https://api.github.com/users/kurtmckee/repos", + "events_url": "https://api.github.com/users/kurtmckee/events{/privacy}", + "received_events_url": "https://api.github.com/users/kurtmckee/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "body": "This introduces the following changes:\r\n\r\n- Support Python 3.14.\r\n- Drop support for Python 3.9 and lower.\r\n\r\n@Arian-Ott, happy new year! Fixing CI, as well as fixing the build process (#159), are critical project infrastructure needs, and I hope you can take a look at both when you have an opportunity!", + "created_at": "2026-01-06T14:40:59Z", + "updated_at": "2026-01-06T15:11:20Z", + "closed_at": "2026-01-06T15:03:44Z", + "merged_at": "2026-01-06T15:03:44Z", + "merge_commit_sha": "45f9d33a3a0d7302120d2dde26fa2ac6131edb6b", + "assignees": [], + "requested_reviewers": [], + "requested_teams": [], + "labels": [], + "milestone": null, + "draft": false, + "commits_url": "https://api.github.com/repos/un33k/python-slugify/pulls/164/commits", + "review_comments_url": "https://api.github.com/repos/un33k/python-slugify/pulls/164/comments", + "review_comment_url": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/164/comments", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/b7b9fa02bb01962d47054bf6525514db1bf8a165", + "head": { + "label": "kurtmckee:drop-unsupported-pythons", + "ref": "drop-unsupported-pythons", + "sha": "b7b9fa02bb01962d47054bf6525514db1bf8a165", + "user": { + "login": "kurtmckee", + "id": 39996, + "node_id": "MDQ6VXNlcjM5OTk2", + "avatar_url": "https://avatars.githubusercontent.com/u/39996?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/kurtmckee", + "html_url": "https://github.com/kurtmckee", + "followers_url": "https://api.github.com/users/kurtmckee/followers", + "following_url": "https://api.github.com/users/kurtmckee/following{/other_user}", + "gists_url": "https://api.github.com/users/kurtmckee/gists{/gist_id}", + "starred_url": "https://api.github.com/users/kurtmckee/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/kurtmckee/subscriptions", + "organizations_url": "https://api.github.com/users/kurtmckee/orgs", + "repos_url": "https://api.github.com/users/kurtmckee/repos", + "events_url": "https://api.github.com/users/kurtmckee/events{/privacy}", + "received_events_url": "https://api.github.com/users/kurtmckee/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 1071543308, + "node_id": "R_kgDOP950DA", + "name": "pr-python-slugify", + "full_name": "kurtmckee/pr-python-slugify", + "private": false, + "owner": { + "login": "kurtmckee", + "id": 39996, + "node_id": "MDQ6VXNlcjM5OTk2", + "avatar_url": "https://avatars.githubusercontent.com/u/39996?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/kurtmckee", + "html_url": "https://github.com/kurtmckee", + "followers_url": "https://api.github.com/users/kurtmckee/followers", + "following_url": "https://api.github.com/users/kurtmckee/following{/other_user}", + "gists_url": "https://api.github.com/users/kurtmckee/gists{/gist_id}", + "starred_url": "https://api.github.com/users/kurtmckee/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/kurtmckee/subscriptions", + "organizations_url": "https://api.github.com/users/kurtmckee/orgs", + "repos_url": "https://api.github.com/users/kurtmckee/repos", + "events_url": "https://api.github.com/users/kurtmckee/events{/privacy}", + "received_events_url": "https://api.github.com/users/kurtmckee/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/kurtmckee/pr-python-slugify", + "description": "PR-only fork -- CHANGES MERGED 😄", + "fork": true, + "url": "https://api.github.com/repos/kurtmckee/pr-python-slugify", + "forks_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/forks", + "keys_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/teams", + "hooks_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/events", + "assignees_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/tags", + "blobs_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/subscription", + "commits_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/merges", + "archive_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/downloads", + "issues_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/deployments", + "created_at": "2025-10-07T13:43:24Z", + "updated_at": "2026-01-07T13:25:12Z", + "pushed_at": "2026-01-07T17:04:51Z", + "git_url": "git://github.com/kurtmckee/pr-python-slugify.git", + "ssh_url": "git@github.com:kurtmckee/pr-python-slugify.git", + "clone_url": "https://github.com/kurtmckee/pr-python-slugify.git", + "svn_url": "https://github.com/kurtmckee/pr-python-slugify", + "homepage": "", + "size": 191, + "stargazers_count": 0, + "watchers_count": 0, + "language": "Python", + "has_issues": false, + "has_projects": false, + "has_downloads": false, + "has_wiki": false, + "has_pages": false, + "has_discussions": false, + "forks_count": 0, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 0, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 0, + "open_issues": 0, + "watchers": 0, + "default_branch": "main" + } + }, + "base": { + "label": "un33k:master", + "ref": "master", + "sha": "b906c75f4579881a2896e855bb963822401b816a", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 6220331, + "node_id": "MDEwOlJlcG9zaXRvcnk2MjIwMzMx", + "name": "python-slugify", + "full_name": "un33k/python-slugify", + "private": false, + "owner": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/un33k/python-slugify", + "description": "Returns unicode slugs", + "fork": false, + "url": "https://api.github.com/repos/un33k/python-slugify", + "forks_url": "https://api.github.com/repos/un33k/python-slugify/forks", + "keys_url": "https://api.github.com/repos/un33k/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/un33k/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/un33k/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/un33k/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/un33k/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/un33k/python-slugify/events", + "assignees_url": "https://api.github.com/repos/un33k/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/un33k/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/un33k/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/un33k/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/un33k/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/un33k/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/un33k/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/un33k/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/un33k/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/un33k/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/un33k/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/un33k/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/un33k/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/un33k/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/un33k/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/un33k/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/un33k/python-slugify/merges", + "archive_url": "https://api.github.com/repos/un33k/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/un33k/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/un33k/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/un33k/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/un33k/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/un33k/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/un33k/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/un33k/python-slugify/deployments", + "created_at": "2012-10-15T01:44:50Z", + "updated_at": "2026-09-05T12:52:20Z", + "pushed_at": "2026-04-27T11:17:17Z", + "git_url": "git://github.com/un33k/python-slugify.git", + "ssh_url": "git@github.com:un33k/python-slugify.git", + "clone_url": "https://github.com/un33k/python-slugify.git", + "svn_url": "https://github.com/un33k/python-slugify", + "homepage": "", + "size": 208, + "stargazers_count": 1623, + "watchers_count": 1623, + "language": "Python", + "has_issues": true, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 134, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 17, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 134, + "open_issues": 17, + "watchers": 1623, + "default_branch": "master" + } + }, + "_links": { + "self": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/164" + }, + "html": { + "href": "https://github.com/un33k/python-slugify/pull/164" + }, + "issue": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/164" + }, + "comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/164/comments" + }, + "review_comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/164/comments" + }, + "review_comment": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}" + }, + "commits": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/164/commits" + }, + "statuses": { + "href": "https://api.github.com/repos/un33k/python-slugify/statuses/b7b9fa02bb01962d47054bf6525514db1bf8a165" + } + }, + "author_association": "CONTRIBUTOR", + "auto_merge": null, + "assignee": null, + "active_lock_reason": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/165", + "id": 3152626162, + "node_id": "PR_kwDOAF7qK8676UHy", + "html_url": "https://github.com/un33k/python-slugify/pull/165", + "diff_url": "https://github.com/un33k/python-slugify/pull/165.diff", + "patch_url": "https://github.com/un33k/python-slugify/pull/165.patch", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/165", + "number": 165, + "state": "closed", + "locked": false, + "title": "Fix the README badge to refer to the `main.yml` workflow results", + "user": { + "login": "kurtmckee", + "id": 39996, + "node_id": "MDQ6VXNlcjM5OTk2", + "avatar_url": "https://avatars.githubusercontent.com/u/39996?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/kurtmckee", + "html_url": "https://github.com/kurtmckee", + "followers_url": "https://api.github.com/users/kurtmckee/followers", + "following_url": "https://api.github.com/users/kurtmckee/following{/other_user}", + "gists_url": "https://api.github.com/users/kurtmckee/gists{/gist_id}", + "starred_url": "https://api.github.com/users/kurtmckee/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/kurtmckee/subscriptions", + "organizations_url": "https://api.github.com/users/kurtmckee/orgs", + "repos_url": "https://api.github.com/users/kurtmckee/repos", + "events_url": "https://api.github.com/users/kurtmckee/events{/privacy}", + "received_events_url": "https://api.github.com/users/kurtmckee/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "body": "This fixes the CI badge in the README, which was pointing to the CI results in the `ci` branch (which are currently failing).\r\n\r\nI generally recommend against including badges in the README, as they are permanently locked when publishing to PyPI and can cause the PyPI page to look like the project is unhealthy (for example, if the badge hosting service closes shop, or if CI starts failing).\r\n\r\n[In fact, this is currently the case](https://pypi.org/project/python-slugify/), and can only be fixed by publishing a new release of the package.\r\n\r\n> \"image\"\r\n\r\n* If the badges should be removed, let me know.\r\n* Separately, if the triplicated GitHub workflows should be unified down to just one YAML file, let me know.", + "created_at": "2026-01-07T13:39:01Z", + "updated_at": "2026-01-07T17:04:52Z", + "closed_at": "2026-01-07T16:28:09Z", + "merged_at": "2026-01-07T16:28:09Z", + "merge_commit_sha": "7b6d5d96c1995e6dccb39a19a13ba78d7d0a3ee4", + "assignees": [], + "requested_reviewers": [], + "requested_teams": [], + "labels": [], + "milestone": null, + "draft": false, + "commits_url": "https://api.github.com/repos/un33k/python-slugify/pulls/165/commits", + "review_comments_url": "https://api.github.com/repos/un33k/python-slugify/pulls/165/comments", + "review_comment_url": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/issues/165/comments", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/4faa5f996724c93ee1c4c8a06d461b98f9cd5ebf", + "head": { + "label": "kurtmckee:fix-readme-badge", + "ref": "fix-readme-badge", + "sha": "4faa5f996724c93ee1c4c8a06d461b98f9cd5ebf", + "user": { + "login": "kurtmckee", + "id": 39996, + "node_id": "MDQ6VXNlcjM5OTk2", + "avatar_url": "https://avatars.githubusercontent.com/u/39996?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/kurtmckee", + "html_url": "https://github.com/kurtmckee", + "followers_url": "https://api.github.com/users/kurtmckee/followers", + "following_url": "https://api.github.com/users/kurtmckee/following{/other_user}", + "gists_url": "https://api.github.com/users/kurtmckee/gists{/gist_id}", + "starred_url": "https://api.github.com/users/kurtmckee/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/kurtmckee/subscriptions", + "organizations_url": "https://api.github.com/users/kurtmckee/orgs", + "repos_url": "https://api.github.com/users/kurtmckee/repos", + "events_url": "https://api.github.com/users/kurtmckee/events{/privacy}", + "received_events_url": "https://api.github.com/users/kurtmckee/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 1071543308, + "node_id": "R_kgDOP950DA", + "name": "pr-python-slugify", + "full_name": "kurtmckee/pr-python-slugify", + "private": false, + "owner": { + "login": "kurtmckee", + "id": 39996, + "node_id": "MDQ6VXNlcjM5OTk2", + "avatar_url": "https://avatars.githubusercontent.com/u/39996?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/kurtmckee", + "html_url": "https://github.com/kurtmckee", + "followers_url": "https://api.github.com/users/kurtmckee/followers", + "following_url": "https://api.github.com/users/kurtmckee/following{/other_user}", + "gists_url": "https://api.github.com/users/kurtmckee/gists{/gist_id}", + "starred_url": "https://api.github.com/users/kurtmckee/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/kurtmckee/subscriptions", + "organizations_url": "https://api.github.com/users/kurtmckee/orgs", + "repos_url": "https://api.github.com/users/kurtmckee/repos", + "events_url": "https://api.github.com/users/kurtmckee/events{/privacy}", + "received_events_url": "https://api.github.com/users/kurtmckee/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/kurtmckee/pr-python-slugify", + "description": "PR-only fork -- CHANGES MERGED 😄", + "fork": true, + "url": "https://api.github.com/repos/kurtmckee/pr-python-slugify", + "forks_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/forks", + "keys_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/teams", + "hooks_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/events", + "assignees_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/tags", + "blobs_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/subscription", + "commits_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/merges", + "archive_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/downloads", + "issues_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/kurtmckee/pr-python-slugify/deployments", + "created_at": "2025-10-07T13:43:24Z", + "updated_at": "2026-01-07T13:25:12Z", + "pushed_at": "2026-01-07T17:04:51Z", + "git_url": "git://github.com/kurtmckee/pr-python-slugify.git", + "ssh_url": "git@github.com:kurtmckee/pr-python-slugify.git", + "clone_url": "https://github.com/kurtmckee/pr-python-slugify.git", + "svn_url": "https://github.com/kurtmckee/pr-python-slugify", + "homepage": "", + "size": 191, + "stargazers_count": 0, + "watchers_count": 0, + "language": "Python", + "has_issues": false, + "has_projects": false, + "has_downloads": false, + "has_wiki": false, + "has_pages": false, + "has_discussions": false, + "forks_count": 0, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 0, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 0, + "open_issues": 0, + "watchers": 0, + "default_branch": "main" + } + }, + "base": { + "label": "un33k:master", + "ref": "master", + "sha": "8b0ac2192d11416c51f3c98a4d0eebf8ac8387f2", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "repo": { + "id": 6220331, + "node_id": "MDEwOlJlcG9zaXRvcnk2MjIwMzMx", + "name": "python-slugify", + "full_name": "un33k/python-slugify", + "private": false, + "owner": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/un33k/python-slugify", + "description": "Returns unicode slugs", + "fork": false, + "url": "https://api.github.com/repos/un33k/python-slugify", + "forks_url": "https://api.github.com/repos/un33k/python-slugify/forks", + "keys_url": "https://api.github.com/repos/un33k/python-slugify/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/un33k/python-slugify/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/un33k/python-slugify/teams", + "hooks_url": "https://api.github.com/repos/un33k/python-slugify/hooks", + "issue_events_url": "https://api.github.com/repos/un33k/python-slugify/issues/events{/number}", + "events_url": "https://api.github.com/repos/un33k/python-slugify/events", + "assignees_url": "https://api.github.com/repos/un33k/python-slugify/assignees{/user}", + "branches_url": "https://api.github.com/repos/un33k/python-slugify/branches{/branch}", + "tags_url": "https://api.github.com/repos/un33k/python-slugify/tags", + "blobs_url": "https://api.github.com/repos/un33k/python-slugify/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/un33k/python-slugify/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/un33k/python-slugify/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/un33k/python-slugify/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/un33k/python-slugify/statuses/{sha}", + "languages_url": "https://api.github.com/repos/un33k/python-slugify/languages", + "stargazers_url": "https://api.github.com/repos/un33k/python-slugify/stargazers", + "contributors_url": "https://api.github.com/repos/un33k/python-slugify/contributors", + "subscribers_url": "https://api.github.com/repos/un33k/python-slugify/subscribers", + "subscription_url": "https://api.github.com/repos/un33k/python-slugify/subscription", + "commits_url": "https://api.github.com/repos/un33k/python-slugify/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/un33k/python-slugify/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/un33k/python-slugify/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/un33k/python-slugify/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/{+path}", + "compare_url": "https://api.github.com/repos/un33k/python-slugify/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/un33k/python-slugify/merges", + "archive_url": "https://api.github.com/repos/un33k/python-slugify/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/un33k/python-slugify/downloads", + "issues_url": "https://api.github.com/repos/un33k/python-slugify/issues{/number}", + "pulls_url": "https://api.github.com/repos/un33k/python-slugify/pulls{/number}", + "milestones_url": "https://api.github.com/repos/un33k/python-slugify/milestones{/number}", + "notifications_url": "https://api.github.com/repos/un33k/python-slugify/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/un33k/python-slugify/labels{/name}", + "releases_url": "https://api.github.com/repos/un33k/python-slugify/releases{/id}", + "deployments_url": "https://api.github.com/repos/un33k/python-slugify/deployments", + "created_at": "2012-10-15T01:44:50Z", + "updated_at": "2026-09-05T12:52:20Z", + "pushed_at": "2026-04-27T11:17:17Z", + "git_url": "git://github.com/un33k/python-slugify.git", + "ssh_url": "git@github.com:un33k/python-slugify.git", + "clone_url": "https://github.com/un33k/python-slugify.git", + "svn_url": "https://github.com/un33k/python-slugify", + "homepage": "", + "size": 208, + "stargazers_count": 1623, + "watchers_count": 1623, + "language": "Python", + "has_issues": true, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 134, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 17, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [], + "visibility": "public", + "forks": 134, + "open_issues": 17, + "watchers": 1623, + "default_branch": "master" + } + }, + "_links": { + "self": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/165" + }, + "html": { + "href": "https://github.com/un33k/python-slugify/pull/165" + }, + "issue": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/165" + }, + "comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/issues/165/comments" + }, + "review_comments": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/165/comments" + }, + "review_comment": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/comments{/number}" + }, + "commits": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/165/commits" + }, + "statuses": { + "href": "https://api.github.com/repos/un33k/python-slugify/statuses/4faa5f996724c93ee1c4c8a06d461b98f9cd5ebf" + } + }, + "author_association": "CONTRIBUTOR", + "auto_merge": null, + "assignee": null, + "active_lock_reason": null + } + ], + "comments": [ + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/16886710", + "html_url": "https://github.com/un33k/python-slugify/pull/1#issuecomment-16886710", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/1", + "id": 16886710, + "node_id": "MDEyOklzc3VlQ29tbWVudDE2ODg2NzEw", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2013-04-23T21:10:58Z", + "updated_at": "2013-04-23T21:11:24Z", + "body": "I think this is a very good idea. \n\nHowever, to ensure stability, I'd recommend that you only change two lines of code.\n\nFirst change is to pass the separator='-' in to the function.\nLast step is to replace '-'s with separator only if they are different just before you return the text.\n\nThis way with minimal change you achieve the optimal result.\n\nLooking forward to your pull request.\n\nVal\n", + "author_association": "OWNER", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/16886710/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/16932473", + "html_url": "https://github.com/un33k/python-slugify/pull/1#issuecomment-16932473", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/1", + "id": 16932473, + "node_id": "MDEyOklzc3VlQ29tbWVudDE2OTMyNDcz", + "user": { + "login": "fedale", + "id": 127323, + "node_id": "MDQ6VXNlcjEyNzMyMw==", + "avatar_url": "https://avatars.githubusercontent.com/u/127323?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/fedale", + "html_url": "https://github.com/fedale", + "followers_url": "https://api.github.com/users/fedale/followers", + "following_url": "https://api.github.com/users/fedale/following{/other_user}", + "gists_url": "https://api.github.com/users/fedale/gists{/gist_id}", + "starred_url": "https://api.github.com/users/fedale/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/fedale/subscriptions", + "organizations_url": "https://api.github.com/users/fedale/orgs", + "repos_url": "https://api.github.com/users/fedale/repos", + "events_url": "https://api.github.com/users/fedale/events{/privacy}", + "received_events_url": "https://api.github.com/users/fedale/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2013-04-24T14:11:16Z", + "updated_at": "2013-04-24T14:11:16Z", + "body": "Sorry, I'm new to Python... I don't understand \"Last step is to replace '-'s with separator only if they are different just before you return the text.\". You want an IF?\n", + "author_association": "NONE", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/16932473/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/16934292", + "html_url": "https://github.com/un33k/python-slugify/pull/1#issuecomment-16934292", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/1", + "id": 16934292, + "node_id": "MDEyOklzc3VlQ29tbWVudDE2OTM0Mjky", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2013-04-24T14:30:22Z", + "updated_at": "2013-04-24T14:30:22Z", + "body": "Ok, enjoy using the separator of your choice in version 0.0.4 which was just checked in. :)\n", + "author_association": "OWNER", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/16934292/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/16934834", + "html_url": "https://github.com/un33k/python-slugify/pull/1#issuecomment-16934834", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/1", + "id": 16934834, + "node_id": "MDEyOklzc3VlQ29tbWVudDE2OTM0ODM0", + "user": { + "login": "fedale", + "id": 127323, + "node_id": "MDQ6VXNlcjEyNzMyMw==", + "avatar_url": "https://avatars.githubusercontent.com/u/127323?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/fedale", + "html_url": "https://github.com/fedale", + "followers_url": "https://api.github.com/users/fedale/followers", + "following_url": "https://api.github.com/users/fedale/following{/other_user}", + "gists_url": "https://api.github.com/users/fedale/gists{/gist_id}", + "starred_url": "https://api.github.com/users/fedale/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/fedale/subscriptions", + "organizations_url": "https://api.github.com/users/fedale/orgs", + "repos_url": "https://api.github.com/users/fedale/repos", + "events_url": "https://api.github.com/users/fedale/events{/privacy}", + "received_events_url": "https://api.github.com/users/fedale/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2013-04-24T14:37:58Z", + "updated_at": "2013-04-24T14:37:58Z", + "body": "ok, thank you :)\n", + "author_association": "NONE", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/16934834/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/16935429", + "html_url": "https://github.com/un33k/python-slugify/pull/1#issuecomment-16935429", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/1", + "id": 16935429, + "node_id": "MDEyOklzc3VlQ29tbWVudDE2OTM1NDI5", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2013-04-24T14:46:36Z", + "updated_at": "2013-04-24T14:46:36Z", + "body": "Very welcome!\n", + "author_association": "OWNER", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/16935429/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/17743232", + "html_url": "https://github.com/un33k/python-slugify/pull/2#issuecomment-17743232", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/2", + "id": 17743232, + "node_id": "MDEyOklzc3VlQ29tbWVudDE3NzQzMjMy", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2013-05-10T20:39:14Z", + "updated_at": "2013-05-10T20:39:14Z", + "body": "Excellent. \n\nI will have a look and pull it in. \n\nThanks,\n\n## Val\n\nSent from my mobile device. \n\nOn 2013-05-10, at 5:38 AM, Arthur Darcet notifications@github.com wrote:\n\n> I am not very competent in 2to3 migrations, but this seems to work.\n> The tests are ok with python 2 and with python 3.\n> \n> Arthur\n> \n> You can merge this Pull Request by running\n> \n> git pull https://github.com/arthurdarcet/python-slugify master\n> Or view, comment on, or merge it at:\n> \n> https://github.com/un33k/python-slugify/pull/2\n> \n> Commit Summary\n> \n> Support python3\n> Use assertEqual instead of assertEquals in the tests (the latter is deprecated)\n> File Changes\n> \n> M .travis.yml (2)\n> M setup.py (9)\n> M slugify/**init**.py (12)\n> M test.py (28)\n> Patch Links:\n> \n> https://github.com/un33k/python-slugify/pull/2.patch\n> https://github.com/un33k/python-slugify/pull/2.diff\n", + "author_association": "OWNER", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/17743232/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/18203320", + "html_url": "https://github.com/un33k/python-slugify/pull/2#issuecomment-18203320", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/2", + "id": 18203320, + "node_id": "MDEyOklzc3VlQ29tbWVudDE4MjAzMzIw", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2013-05-21T11:39:14Z", + "updated_at": "2013-05-21T11:39:14Z", + "body": "arthurdarcet: Thank you for supporting this open source application.\n", + "author_association": "OWNER", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/18203320/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/19838001", + "html_url": "https://github.com/un33k/python-slugify/pull/3#issuecomment-19838001", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/3", + "id": 19838001, + "node_id": "MDEyOklzc3VlQ29tbWVudDE5ODM4MDAx", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2013-06-21T20:10:16Z", + "updated_at": "2013-06-21T20:10:16Z", + "body": "If you want your changes be considered, please submit unit tests for the changes. Thank you.\n", + "author_association": "OWNER", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/19838001/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/19838269", + "html_url": "https://github.com/un33k/python-slugify/pull/3#issuecomment-19838269", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/3", + "id": 19838269, + "node_id": "MDEyOklzc3VlQ29tbWVudDE5ODM4MjY5", + "user": { + "login": "voronind", + "id": 1578066, + "node_id": "MDQ6VXNlcjE1NzgwNjY=", + "avatar_url": "https://avatars.githubusercontent.com/u/1578066?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/voronind", + "html_url": "https://github.com/voronind", + "followers_url": "https://api.github.com/users/voronind/followers", + "following_url": "https://api.github.com/users/voronind/following{/other_user}", + "gists_url": "https://api.github.com/users/voronind/gists{/gist_id}", + "starred_url": "https://api.github.com/users/voronind/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/voronind/subscriptions", + "organizations_url": "https://api.github.com/users/voronind/orgs", + "repos_url": "https://api.github.com/users/voronind/repos", + "events_url": "https://api.github.com/users/voronind/events{/privacy}", + "received_events_url": "https://api.github.com/users/voronind/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2013-06-21T20:16:03Z", + "updated_at": "2013-06-21T20:16:03Z", + "body": "I don't\n\n2013/6/22 Val Neekman notifications@github.com\n\n> If you want your changes be considered, please submit unit tests for the\n> changes. Thank you.\n> \n> —\n> Reply to this email directly or view it on GitHubhttps://github.com/un33k/python-slugify/pull/3#issuecomment-19838001\n> .\n", + "author_association": "NONE", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/19838269/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/31748315", + "html_url": "https://github.com/un33k/python-slugify/pull/4#issuecomment-31748315", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/4", + "id": 31748315, + "node_id": "MDEyOklzc3VlQ29tbWVudDMxNzQ4MzE1", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2014-01-07T15:44:38Z", + "updated_at": "2014-01-07T15:44:38Z", + "body": "FYI. I will be cutting a new release very soon that includes your changes.\n", + "author_association": "OWNER", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/31748315/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/31748359", + "html_url": "https://github.com/un33k/python-slugify/pull/4#issuecomment-31748359", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/4", + "id": 31748359, + "node_id": "MDEyOklzc3VlQ29tbWVudDMxNzQ4MzU5", + "user": { + "login": "pudo", + "id": 41628, + "node_id": "MDQ6VXNlcjQxNjI4", + "avatar_url": "https://avatars.githubusercontent.com/u/41628?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/pudo", + "html_url": "https://github.com/pudo", + "followers_url": "https://api.github.com/users/pudo/followers", + "following_url": "https://api.github.com/users/pudo/following{/other_user}", + "gists_url": "https://api.github.com/users/pudo/gists{/gist_id}", + "starred_url": "https://api.github.com/users/pudo/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/pudo/subscriptions", + "organizations_url": "https://api.github.com/users/pudo/orgs", + "repos_url": "https://api.github.com/users/pudo/repos", + "events_url": "https://api.github.com/users/pudo/events{/privacy}", + "received_events_url": "https://api.github.com/users/pudo/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2014-01-07T15:45:04Z", + "updated_at": "2014-01-07T15:45:04Z", + "body": "Very cool, thanks.\n", + "author_association": "CONTRIBUTOR", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/31748359/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/31984433", + "html_url": "https://github.com/un33k/python-slugify/pull/4#issuecomment-31984433", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/4", + "id": 31984433, + "node_id": "MDEyOklzc3VlQ29tbWVudDMxOTg0NDMz", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2014-01-09T22:34:27Z", + "updated_at": "2014-01-09T22:34:27Z", + "body": "New version available.\n", + "author_association": "OWNER", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/31984433/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/51524222", + "html_url": "https://github.com/un33k/python-slugify/issues/6#issuecomment-51524222", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/6", + "id": 51524222, + "node_id": "MDEyOklzc3VlQ29tbWVudDUxNTI0MjIy", + "user": { + "login": "jleclanche", + "id": 235410, + "node_id": "MDQ6VXNlcjIzNTQxMA==", + "avatar_url": "https://avatars.githubusercontent.com/u/235410?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/jleclanche", + "html_url": "https://github.com/jleclanche", + "followers_url": "https://api.github.com/users/jleclanche/followers", + "following_url": "https://api.github.com/users/jleclanche/following{/other_user}", + "gists_url": "https://api.github.com/users/jleclanche/gists{/gist_id}", + "starred_url": "https://api.github.com/users/jleclanche/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/jleclanche/subscriptions", + "organizations_url": "https://api.github.com/users/jleclanche/orgs", + "repos_url": "https://api.github.com/users/jleclanche/repos", + "events_url": "https://api.github.com/users/jleclanche/events{/privacy}", + "received_events_url": "https://api.github.com/users/jleclanche/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2014-08-07T20:05:16Z", + "updated_at": "2014-08-07T20:05:16Z", + "body": "Actually looks like a problem with pypi. reinstalling fixed it.\n", + "author_association": "NONE", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/51524222/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/52154019", + "html_url": "https://github.com/un33k/python-slugify/issues/7#issuecomment-52154019", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/7", + "id": 52154019, + "node_id": "MDEyOklzc3VlQ29tbWVudDUyMTU0MDE5", + "user": { + "login": "miohtama", + "id": 49922, + "node_id": "MDQ6VXNlcjQ5OTIy", + "avatar_url": "https://avatars.githubusercontent.com/u/49922?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/miohtama", + "html_url": "https://github.com/miohtama", + "followers_url": "https://api.github.com/users/miohtama/followers", + "following_url": "https://api.github.com/users/miohtama/following{/other_user}", + "gists_url": "https://api.github.com/users/miohtama/gists{/gist_id}", + "starred_url": "https://api.github.com/users/miohtama/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/miohtama/subscriptions", + "organizations_url": "https://api.github.com/users/miohtama/orgs", + "repos_url": "https://api.github.com/users/miohtama/repos", + "events_url": "https://api.github.com/users/miohtama/events{/privacy}", + "received_events_url": "https://api.github.com/users/miohtama/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2014-08-14T07:57:03Z", + "updated_at": "2014-08-14T07:57:03Z", + "body": "Just nitpicking: A lot of commercial software is nowadays website like. Software-as-a-service model with GPL is totally fine, because you are not distributing the software (binaries). In fact most of the websites are built on GPL'ed system (Wordress, Plone, Drupal, etc.) - so \"unfit for commercial deployments\" should be \"redistributing the software containing python-slugify\" here.\n", + "author_association": "NONE", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/52154019/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/52410910", + "html_url": "https://github.com/un33k/python-slugify/issues/7#issuecomment-52410910", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/7", + "id": 52410910, + "node_id": "MDEyOklzc3VlQ29tbWVudDUyNDEwOTEw", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2014-08-17T01:29:34Z", + "updated_at": "2014-08-17T01:30:30Z", + "body": "python-slugify is NOT a \"derived\" work from Unidecode. It simply requires a translation API that is\ncurrently satisfied by importing Unidecode.\n\n\"The GPL is a copyleft license, which means that derived works can only be distributed under the same license terms\". ( [Wikipedia](http://en.wikipedia.org/wiki/GNU_General_Public_License) )\n\nHope this helps.\n", + "author_association": "OWNER", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/52410910/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/52411005", + "html_url": "https://github.com/un33k/python-slugify/pull/5#issuecomment-52411005", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/5", + "id": 52411005, + "node_id": "MDEyOklzc3VlQ29tbWVudDUyNDExMDA1", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2014-08-17T01:35:53Z", + "updated_at": "2014-08-17T01:35:53Z", + "body": "Thank you. It will be included in the next revision via pypi.\n", + "author_association": "OWNER", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/52411005/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/76211553", + "html_url": "https://github.com/un33k/python-slugify/pull/9#issuecomment-76211553", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/9", + "id": 76211553, + "node_id": "MDEyOklzc3VlQ29tbWVudDc2MjExNTUz", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2015-02-26T16:36:06Z", + "updated_at": "2015-02-26T16:36:06Z", + "body": "Your test cases are in Russian (I think) and I don't know what your save_order is trying to achieve?\nIf you could provide some English example of the problem and the solution, it would be great.\n", + "author_association": "OWNER", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/76211553/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/76261781", + "html_url": "https://github.com/un33k/python-slugify/pull/9#issuecomment-76261781", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/9", + "id": 76261781, + "node_id": "MDEyOklzc3VlQ29tbWVudDc2MjYxNzgx", + "user": { + "login": "dioexul", + "id": 2740961, + "node_id": "MDQ6VXNlcjI3NDA5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/2740961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dioexul", + "html_url": "https://github.com/dioexul", + "followers_url": "https://api.github.com/users/dioexul/followers", + "following_url": "https://api.github.com/users/dioexul/following{/other_user}", + "gists_url": "https://api.github.com/users/dioexul/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dioexul/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dioexul/subscriptions", + "organizations_url": "https://api.github.com/users/dioexul/orgs", + "repos_url": "https://api.github.com/users/dioexul/repos", + "events_url": "https://api.github.com/users/dioexul/events{/privacy}", + "received_events_url": "https://api.github.com/users/dioexul/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2015-02-26T20:19:40Z", + "updated_at": "2015-02-26T20:27:09Z", + "body": "Done. This parameter controls order in output string. If save_order and word_boundary are true then \"three\" (len = 5) does not change to \"four\" (len = 4) for max_length=12 and text = 'one two three four five'.\nResult will be \"one-two\", because len(\"one-two-three\") = 13 (13 >12) and it is not \"one-two-four\" because order are not same.\n", + "author_association": "CONTRIBUTOR", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/76261781/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/82955639", + "html_url": "https://github.com/un33k/python-slugify/issues/10#issuecomment-82955639", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/10", + "id": 82955639, + "node_id": "MDEyOklzc3VlQ29tbWVudDgyOTU1NjM5", + "user": { + "login": "powtac", + "id": 36167, + "node_id": "MDQ6VXNlcjM2MTY3", + "avatar_url": "https://avatars.githubusercontent.com/u/36167?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/powtac", + "html_url": "https://github.com/powtac", + "followers_url": "https://api.github.com/users/powtac/followers", + "following_url": "https://api.github.com/users/powtac/following{/other_user}", + "gists_url": "https://api.github.com/users/powtac/gists{/gist_id}", + "starred_url": "https://api.github.com/users/powtac/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/powtac/subscriptions", + "organizations_url": "https://api.github.com/users/powtac/orgs", + "repos_url": "https://api.github.com/users/powtac/repos", + "events_url": "https://api.github.com/users/powtac/events{/privacy}", + "received_events_url": "https://api.github.com/users/powtac/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2015-03-18T12:52:58Z", + "updated_at": "2015-03-18T12:52:58Z", + "body": "Hi @un33k, is the conversion of emoticons supported by python-slugify ?\n", + "author_association": "NONE", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/82955639/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/82956132", + "html_url": "https://github.com/un33k/python-slugify/issues/10#issuecomment-82956132", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/10", + "id": 82956132, + "node_id": "MDEyOklzc3VlQ29tbWVudDgyOTU2MTMy", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2015-03-18T12:54:20Z", + "updated_at": "2015-03-18T12:54:20Z", + "body": "Oh, I see. The answer is no. but it would be a cool feature if you have a pull request.\n", + "author_association": "OWNER", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/82956132/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/82957596", + "html_url": "https://github.com/un33k/python-slugify/issues/10#issuecomment-82957596", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/10", + "id": 82957596, + "node_id": "MDEyOklzc3VlQ29tbWVudDgyOTU3NTk2", + "user": { + "login": "powtac", + "id": 36167, + "node_id": "MDQ6VXNlcjM2MTY3", + "avatar_url": "https://avatars.githubusercontent.com/u/36167?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/powtac", + "html_url": "https://github.com/powtac", + "followers_url": "https://api.github.com/users/powtac/followers", + "following_url": "https://api.github.com/users/powtac/following{/other_user}", + "gists_url": "https://api.github.com/users/powtac/gists{/gist_id}", + "starred_url": "https://api.github.com/users/powtac/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/powtac/subscriptions", + "organizations_url": "https://api.github.com/users/powtac/orgs", + "repos_url": "https://api.github.com/users/powtac/repos", + "events_url": "https://api.github.com/users/powtac/events{/privacy}", + "received_events_url": "https://api.github.com/users/powtac/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2015-03-18T12:56:47Z", + "updated_at": "2015-03-18T13:27:39Z", + "body": "Sorry, I don't have a PR. I was researching on different slugify libraries and facing this emoticons problem :confused: Also it looks like there is no clear idea how to convert those as far as I can see...\n\nThis looks like a solution for Java: http://stackoverflow.com/a/5709494/22470\n\nThis seems to be a potential solution for Python: https://docs.python.org/2/library/unicodedata.html#unicodedata.name\n", + "author_association": "NONE", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/82957596/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/91973209", + "html_url": "https://github.com/un33k/python-slugify/pull/9#issuecomment-91973209", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/9", + "id": 91973209, + "node_id": "MDEyOklzc3VlQ29tbWVudDkxOTczMjA5", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2015-04-12T02:38:17Z", + "updated_at": "2015-04-12T02:38:17Z", + "body": "Pushed to pypi for your use.\nThank you for your contribution.\n", + "author_association": "OWNER", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/91973209/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/92098025", + "html_url": "https://github.com/un33k/python-slugify/pull/9#issuecomment-92098025", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/9", + "id": 92098025, + "node_id": "MDEyOklzc3VlQ29tbWVudDkyMDk4MDI1", + "user": { + "login": "dioexul", + "id": 2740961, + "node_id": "MDQ6VXNlcjI3NDA5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/2740961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dioexul", + "html_url": "https://github.com/dioexul", + "followers_url": "https://api.github.com/users/dioexul/followers", + "following_url": "https://api.github.com/users/dioexul/following{/other_user}", + "gists_url": "https://api.github.com/users/dioexul/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dioexul/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dioexul/subscriptions", + "organizations_url": "https://api.github.com/users/dioexul/orgs", + "repos_url": "https://api.github.com/users/dioexul/repos", + "events_url": "https://api.github.com/users/dioexul/events{/privacy}", + "received_events_url": "https://api.github.com/users/dioexul/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2015-04-12T18:23:24Z", + "updated_at": "2015-04-12T18:23:24Z", + "body": "Thank you for Slugify =)\n", + "author_association": "CONTRIBUTOR", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/92098025/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/93538436", + "html_url": "https://github.com/un33k/python-slugify/issues/11#issuecomment-93538436", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/11", + "id": 93538436, + "node_id": "MDEyOklzc3VlQ29tbWVudDkzNTM4NDM2", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2015-04-15T19:24:17Z", + "updated_at": "2015-04-15T19:24:17Z", + "body": "Fixed in 1.0.2.\n", + "author_association": "OWNER", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/93538436/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/93818471", + "html_url": "https://github.com/un33k/python-slugify/issues/12#issuecomment-93818471", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/12", + "id": 93818471, + "node_id": "MDEyOklzc3VlQ29tbWVudDkzODE4NDcx", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2015-04-16T19:14:03Z", + "updated_at": "2015-04-16T19:14:03Z", + "body": "You are absolutely right. I goofed around and there was no undo button. Please update to 1.0.2.\n", + "author_association": "OWNER", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/93818471/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/93818809", + "html_url": "https://github.com/un33k/python-slugify/issues/10#issuecomment-93818809", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/10", + "id": 93818809, + "node_id": "MDEyOklzc3VlQ29tbWVudDkzODE4ODA5", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2015-04-16T19:15:59Z", + "updated_at": "2015-04-16T19:15:59Z", + "body": "@powtac Could you provide a use-case. The string of some sort?\n", + "author_association": "OWNER", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/93818809/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/93957101", + "html_url": "https://github.com/un33k/python-slugify/issues/10#issuecomment-93957101", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/10", + "id": 93957101, + "node_id": "MDEyOklzc3VlQ29tbWVudDkzOTU3MTAx", + "user": { + "login": "powtac", + "id": 36167, + "node_id": "MDQ6VXNlcjM2MTY3", + "avatar_url": "https://avatars.githubusercontent.com/u/36167?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/powtac", + "html_url": "https://github.com/powtac", + "followers_url": "https://api.github.com/users/powtac/followers", + "following_url": "https://api.github.com/users/powtac/following{/other_user}", + "gists_url": "https://api.github.com/users/powtac/gists{/gist_id}", + "starred_url": "https://api.github.com/users/powtac/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/powtac/subscriptions", + "organizations_url": "https://api.github.com/users/powtac/orgs", + "repos_url": "https://api.github.com/users/powtac/repos", + "events_url": "https://api.github.com/users/powtac/events{/privacy}", + "received_events_url": "https://api.github.com/users/powtac/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2015-04-17T10:02:32Z", + "updated_at": "2015-04-17T10:02:32Z", + "body": "A test string like this: `abc🎅`. Should maybe output like this `aaa`\n", + "author_association": "NONE", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/93957101/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/93990128", + "html_url": "https://github.com/un33k/python-slugify/issues/10#issuecomment-93990128", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/10", + "id": 93990128, + "node_id": "MDEyOklzc3VlQ29tbWVudDkzOTkwMTI4", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2015-04-17T13:52:05Z", + "updated_at": "2015-07-08T14:14:18Z", + "body": "I'll let the community to come up with this feature.\n", + "author_association": "OWNER", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/93990128/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/98270136", + "html_url": "https://github.com/un33k/python-slugify/pull/13#issuecomment-98270136", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/13", + "id": 98270136, + "node_id": "MDEyOklzc3VlQ29tbWVudDk4MjcwMTM2", + "user": { + "login": "coveralls", + "id": 2354108, + "node_id": "MDQ6VXNlcjIzNTQxMDg=", + "avatar_url": "https://avatars.githubusercontent.com/u/2354108?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/coveralls", + "html_url": "https://github.com/coveralls", + "followers_url": "https://api.github.com/users/coveralls/followers", + "following_url": "https://api.github.com/users/coveralls/following{/other_user}", + "gists_url": "https://api.github.com/users/coveralls/gists{/gist_id}", + "starred_url": "https://api.github.com/users/coveralls/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/coveralls/subscriptions", + "organizations_url": "https://api.github.com/users/coveralls/orgs", + "repos_url": "https://api.github.com/users/coveralls/repos", + "events_url": "https://api.github.com/users/coveralls/events{/privacy}", + "received_events_url": "https://api.github.com/users/coveralls/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2015-05-02T00:41:27Z", + "updated_at": "2015-05-02T00:41:27Z", + "body": "[![Coverage Status](https://coveralls.io/builds/2470266/badge)](https://coveralls.io/builds/2470266)\n\nCoverage remained the same at 86.59% when pulling **38d44967eb412acfabb9ff8ca2d1a9ad40ce2f3d on kengruven:master** into **8caf2d7c3fb3eba756322bd01def2c9f4ee37644 on un33k:master**.\n", + "author_association": "NONE", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/98270136/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/99104394", + "html_url": "https://github.com/un33k/python-slugify/issues/14#issuecomment-99104394", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/14", + "id": 99104394, + "node_id": "MDEyOklzc3VlQ29tbWVudDk5MTA0Mzk0", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2015-05-05T14:56:50Z", + "updated_at": "2015-05-05T14:56:50Z", + "body": "Sounds great. You can send a pull request for it, or wait till the next minor update.\n", + "author_association": "OWNER", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/99104394/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/99373038", + "html_url": "https://github.com/un33k/python-slugify/pull/15#issuecomment-99373038", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/15", + "id": 99373038, + "node_id": "MDEyOklzc3VlQ29tbWVudDk5MzczMDM4", + "user": { + "login": "coveralls", + "id": 2354108, + "node_id": "MDQ6VXNlcjIzNTQxMDg=", + "avatar_url": "https://avatars.githubusercontent.com/u/2354108?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/coveralls", + "html_url": "https://github.com/coveralls", + "followers_url": "https://api.github.com/users/coveralls/followers", + "following_url": "https://api.github.com/users/coveralls/following{/other_user}", + "gists_url": "https://api.github.com/users/coveralls/gists{/gist_id}", + "starred_url": "https://api.github.com/users/coveralls/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/coveralls/subscriptions", + "organizations_url": "https://api.github.com/users/coveralls/orgs", + "repos_url": "https://api.github.com/users/coveralls/repos", + "events_url": "https://api.github.com/users/coveralls/events{/privacy}", + "received_events_url": "https://api.github.com/users/coveralls/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2015-05-06T08:18:35Z", + "updated_at": "2015-05-06T08:18:35Z", + "body": "[![Coverage Status](https://coveralls.io/builds/2497545/badge)](https://coveralls.io/builds/2497545)\n\nCoverage increased (+0.62%) to 87.21% when pulling **f60687c611f6ef8262870ef5f50bcd54242b904b on euangoddard:master** into **c800617dfd45608df60c9b667381801a1544ff58 on un33k:master**.\n", + "author_association": "NONE", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/99373038/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/99373045", + "html_url": "https://github.com/un33k/python-slugify/pull/15#issuecomment-99373045", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/15", + "id": 99373045, + "node_id": "MDEyOklzc3VlQ29tbWVudDk5MzczMDQ1", + "user": { + "login": "coveralls", + "id": 2354108, + "node_id": "MDQ6VXNlcjIzNTQxMDg=", + "avatar_url": "https://avatars.githubusercontent.com/u/2354108?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/coveralls", + "html_url": "https://github.com/coveralls", + "followers_url": "https://api.github.com/users/coveralls/followers", + "following_url": "https://api.github.com/users/coveralls/following{/other_user}", + "gists_url": "https://api.github.com/users/coveralls/gists{/gist_id}", + "starred_url": "https://api.github.com/users/coveralls/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/coveralls/subscriptions", + "organizations_url": "https://api.github.com/users/coveralls/orgs", + "repos_url": "https://api.github.com/users/coveralls/repos", + "events_url": "https://api.github.com/users/coveralls/events{/privacy}", + "received_events_url": "https://api.github.com/users/coveralls/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2015-05-06T08:18:35Z", + "updated_at": "2015-05-06T08:18:35Z", + "body": "[![Coverage Status](https://coveralls.io/builds/2497545/badge)](https://coveralls.io/builds/2497545)\n\nCoverage increased (+0.62%) to 87.21% when pulling **f60687c611f6ef8262870ef5f50bcd54242b904b on euangoddard:master** into **c800617dfd45608df60c9b667381801a1544ff58 on un33k:master**.\n", + "author_association": "NONE", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/99373045/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/118365863", + "html_url": "https://github.com/un33k/python-slugify/pull/16#issuecomment-118365863", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/16", + "id": 118365863, + "node_id": "MDEyOklzc3VlQ29tbWVudDExODM2NTg2Mw==", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2015-07-03T14:41:44Z", + "updated_at": "2015-07-08T13:44:46Z", + "body": "Version 1.1.3 has been published. Thanks.\n", + "author_association": "OWNER", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/118365863/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/141518781", + "html_url": "https://github.com/un33k/python-slugify/pull/18#issuecomment-141518781", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/18", + "id": 141518781, + "node_id": "MDEyOklzc3VlQ29tbWVudDE0MTUxODc4MQ==", + "user": { + "login": "nMustaki", + "id": 1023825, + "node_id": "MDQ6VXNlcjEwMjM4MjU=", + "avatar_url": "https://avatars.githubusercontent.com/u/1023825?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/nMustaki", + "html_url": "https://github.com/nMustaki", + "followers_url": "https://api.github.com/users/nMustaki/followers", + "following_url": "https://api.github.com/users/nMustaki/following{/other_user}", + "gists_url": "https://api.github.com/users/nMustaki/gists{/gist_id}", + "starred_url": "https://api.github.com/users/nMustaki/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/nMustaki/subscriptions", + "organizations_url": "https://api.github.com/users/nMustaki/orgs", + "repos_url": "https://api.github.com/users/nMustaki/repos", + "events_url": "https://api.github.com/users/nMustaki/events{/privacy}", + "received_events_url": "https://api.github.com/users/nMustaki/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2015-09-18T17:50:59Z", + "updated_at": "2015-09-18T17:50:59Z", + "body": "test_cyrillic_text is failling, but I don't understand why any letter in 'Компьютер' should match a quote, is it normal ?\n", + "author_association": "NONE", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/141518781/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/141551226", + "html_url": "https://github.com/un33k/python-slugify/pull/18#issuecomment-141551226", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/18", + "id": 141551226, + "node_id": "MDEyOklzc3VlQ29tbWVudDE0MTU1MTIyNg==", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2015-09-18T19:55:14Z", + "updated_at": "2015-09-18T19:55:14Z", + "body": "(компьютер) is first converted to (komp'yuter), and you can see why it is matching a quote.\n", + "author_association": "OWNER", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/141551226/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/141568842", + "html_url": "https://github.com/un33k/python-slugify/pull/18#issuecomment-141568842", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/18", + "id": 141568842, + "node_id": "MDEyOklzc3VlQ29tbWVudDE0MTU2ODg0Mg==", + "user": { + "login": "nMustaki", + "id": 1023825, + "node_id": "MDQ6VXNlcjEwMjM4MjU=", + "avatar_url": "https://avatars.githubusercontent.com/u/1023825?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/nMustaki", + "html_url": "https://github.com/nMustaki", + "followers_url": "https://api.github.com/users/nMustaki/followers", + "following_url": "https://api.github.com/users/nMustaki/following{/other_user}", + "gists_url": "https://api.github.com/users/nMustaki/gists{/gist_id}", + "starred_url": "https://api.github.com/users/nMustaki/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/nMustaki/subscriptions", + "organizations_url": "https://api.github.com/users/nMustaki/orgs", + "repos_url": "https://api.github.com/users/nMustaki/repos", + "events_url": "https://api.github.com/users/nMustaki/events{/privacy}", + "received_events_url": "https://api.github.com/users/nMustaki/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2015-09-18T21:05:58Z", + "updated_at": "2015-09-18T21:05:58Z", + "body": "Ok thanks. It is meaningfull in this language to replace the quote by a\ndash ?\n\n## \n\n/*\n*\\* \"What do you despise? By this you are truly known.\"\n*\\* from Manual of Muad'Dib by the Princess Irulan.\n*/\n\nOn Fri, Sep 18, 2015 at 9:55 PM, Val Neekman notifications@github.com\nwrote:\n\n> (компьютер) is first converted to (komp'yuter), and you can see why it is\n> matching a quote.\n> \n> —\n> Reply to this email directly or view it on GitHub\n> https://github.com/un33k/python-slugify/pull/18#issuecomment-141551226.\n", + "author_association": "NONE", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/141568842/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/141573546", + "html_url": "https://github.com/un33k/python-slugify/pull/18#issuecomment-141573546", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/18", + "id": 141573546, + "node_id": "MDEyOklzc3VlQ29tbWVudDE0MTU3MzU0Ng==", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2015-09-18T21:28:14Z", + "updated_at": "2015-09-18T21:28:14Z", + "body": "Don't speak Russian, but I know it doesn't make sense to have a computer written as comp-uter. Same goes for Kompyuter vs. Komp-yuter.\n\nI suggest that users of slugify pre-process the text as per their locale prior to calling slugify.\n", + "author_association": "OWNER", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/141573546/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/141700993", + "html_url": "https://github.com/un33k/python-slugify/pull/18#issuecomment-141700993", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/18", + "id": 141700993, + "node_id": "MDEyOklzc3VlQ29tbWVudDE0MTcwMDk5Mw==", + "user": { + "login": "nMustaki", + "id": 1023825, + "node_id": "MDQ6VXNlcjEwMjM4MjU=", + "avatar_url": "https://avatars.githubusercontent.com/u/1023825?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/nMustaki", + "html_url": "https://github.com/nMustaki", + "followers_url": "https://api.github.com/users/nMustaki/followers", + "following_url": "https://api.github.com/users/nMustaki/following{/other_user}", + "gists_url": "https://api.github.com/users/nMustaki/gists{/gist_id}", + "starred_url": "https://api.github.com/users/nMustaki/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/nMustaki/subscriptions", + "organizations_url": "https://api.github.com/users/nMustaki/orgs", + "repos_url": "https://api.github.com/users/nMustaki/repos", + "events_url": "https://api.github.com/users/nMustaki/events{/privacy}", + "received_events_url": "https://api.github.com/users/nMustaki/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2015-09-19T19:38:24Z", + "updated_at": "2015-09-19T19:38:24Z", + "body": "So I grabbed a Russian and the comma is a phonic (not sure it's the right word...) accent.\nMaybe an option could be given when creating the slugify object, retrocompatibility would be respected and us froggies would have our dash?\n", + "author_association": "NONE", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/141700993/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/141910553", + "html_url": "https://github.com/un33k/python-slugify/pull/18#issuecomment-141910553", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/18", + "id": 141910553, + "node_id": "MDEyOklzc3VlQ29tbWVudDE0MTkxMDU1Mw==", + "user": { + "login": "nMustaki", + "id": 1023825, + "node_id": "MDQ6VXNlcjEwMjM4MjU=", + "avatar_url": "https://avatars.githubusercontent.com/u/1023825?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/nMustaki", + "html_url": "https://github.com/nMustaki", + "followers_url": "https://api.github.com/users/nMustaki/followers", + "following_url": "https://api.github.com/users/nMustaki/following{/other_user}", + "gists_url": "https://api.github.com/users/nMustaki/gists{/gist_id}", + "starred_url": "https://api.github.com/users/nMustaki/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/nMustaki/subscriptions", + "organizations_url": "https://api.github.com/users/nMustaki/orgs", + "repos_url": "https://api.github.com/users/nMustaki/repos", + "events_url": "https://api.github.com/users/nMustaki/events{/privacy}", + "received_events_url": "https://api.github.com/users/nMustaki/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2015-09-21T08:42:40Z", + "updated_at": "2015-09-21T08:42:40Z", + "body": "I am closing this one to replace it by #20 \n", + "author_association": "NONE", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/141910553/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/141960138", + "html_url": "https://github.com/un33k/python-slugify/pull/20#issuecomment-141960138", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/20", + "id": 141960138, + "node_id": "MDEyOklzc3VlQ29tbWVudDE0MTk2MDEzOA==", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2015-09-21T12:37:45Z", + "updated_at": "2015-09-21T12:38:06Z", + "body": "Unfortunately this breaks backward compatibility with thousands of deployments. I do recommend that you preprocess your text and replace all the \\'s with your delimiter, in your case dashes, prior call slugify.\n", + "author_association": "OWNER", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/141960138/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/141962111", + "html_url": "https://github.com/un33k/python-slugify/issues/17#issuecomment-141962111", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/17", + "id": 141962111, + "node_id": "MDEyOklzc3VlQ29tbWVudDE0MTk2MjExMQ==", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2015-09-21T12:42:46Z", + "updated_at": "2015-09-21T12:42:46Z", + "body": "Let me have a look at a proper solution that works for all languages.\n", + "author_association": "OWNER", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/141962111/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/141962218", + "html_url": "https://github.com/un33k/python-slugify/pull/18#issuecomment-141962218", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/18", + "id": 141962218, + "node_id": "MDEyOklzc3VlQ29tbWVudDE0MTk2MjIxOA==", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2015-09-21T12:43:03Z", + "updated_at": "2015-09-21T12:43:16Z", + "body": "Tracking it here now. https://github.com/un33k/python-slugify/issues/17\n", + "author_association": "OWNER", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/141962218/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/141962480", + "html_url": "https://github.com/un33k/python-slugify/pull/20#issuecomment-141962480", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/20", + "id": 141962480, + "node_id": "MDEyOklzc3VlQ29tbWVudDE0MTk2MjQ4MA==", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2015-09-21T12:43:37Z", + "updated_at": "2015-09-21T12:43:37Z", + "body": "Tracking it here now. https://github.com/un33k/python-slugify/issues/17\n", + "author_association": "OWNER", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/141962480/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/146047164", + "html_url": "https://github.com/un33k/python-slugify/pull/21#issuecomment-146047164", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/21", + "id": 146047164, + "node_id": "MDEyOklzc3VlQ29tbWVudDE0NjA0NzE2NA==", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2015-10-07T01:01:18Z", + "updated_at": "2015-10-07T01:01:18Z", + "body": "Thx\n", + "author_association": "OWNER", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/146047164/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/164164381", + "html_url": "https://github.com/un33k/python-slugify/pull/22#issuecomment-164164381", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/22", + "id": 164164381, + "node_id": "MDEyOklzc3VlQ29tbWVudDE2NDE2NDM4MQ==", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2015-12-12T16:15:33Z", + "updated_at": "2015-12-12T16:15:33Z", + "body": "Thank you.\n", + "author_association": "OWNER", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/164164381/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/171651029", + "html_url": "https://github.com/un33k/python-slugify/issues/17#issuecomment-171651029", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/17", + "id": 171651029, + "node_id": "MDEyOklzc3VlQ29tbWVudDE3MTY1MTAyOQ==", + "user": { + "login": "fabiocaccamo", + "id": 1035294, + "node_id": "MDQ6VXNlcjEwMzUyOTQ=", + "avatar_url": "https://avatars.githubusercontent.com/u/1035294?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/fabiocaccamo", + "html_url": "https://github.com/fabiocaccamo", + "followers_url": "https://api.github.com/users/fabiocaccamo/followers", + "following_url": "https://api.github.com/users/fabiocaccamo/following{/other_user}", + "gists_url": "https://api.github.com/users/fabiocaccamo/gists{/gist_id}", + "starred_url": "https://api.github.com/users/fabiocaccamo/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/fabiocaccamo/subscriptions", + "organizations_url": "https://api.github.com/users/fabiocaccamo/orgs", + "repos_url": "https://api.github.com/users/fabiocaccamo/repos", + "events_url": "https://api.github.com/users/fabiocaccamo/events{/privacy}", + "received_events_url": "https://api.github.com/users/fabiocaccamo/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2016-01-14T13:59:11Z", + "updated_at": "2016-01-14T14:00:56Z", + "body": "+1 \nThe actual behavior is wrong, in many languages the single quote is used to compact 2 different words.\n\nTo fix this just replace [this](https://github.com/un33k/python-slugify/blob/master/slugify/slugify.py#L122):\n\n```\ntext = QUOTE_PATTERN.sub('', text.lower())\n```\n\nwith this:\n\n```\ntext = QUOTE_PATTERN.sub('-', text.lower())\n```\n\nIf this change breaks backward-compatibiity you could release 1.2.0 version.\n", + "author_association": "CONTRIBUTOR", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/171651029/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/171669112", + "html_url": "https://github.com/un33k/python-slugify/issues/17#issuecomment-171669112", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/17", + "id": 171669112, + "node_id": "MDEyOklzc3VlQ29tbWVudDE3MTY2OTExMg==", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2016-01-14T15:15:17Z", + "updated_at": "2016-01-14T15:18:21Z", + "body": "@fabiocaccamo\n\nThe reason the single quote was replaced in the first place was:\n\nExample: Computer (English)\nкомпьютер (Russian) -> komp'yuter (converted)\nThere is no ( ' ) in the Russian version, so we can't remove it prior to our process.\nOnce the process is complete, then we scan to see if there are any unwanted characters.\nAt this point we have (komp'yuter), which cannot be written as (komp-yuter) just like compu-ter is meaningless in English. (this was brought to my attention as I don't speak Russian)\n\nOne solution would be to split the ( ' ) lookup into two separate processes.\nPreprocess: replace ( ' ) with ( - )\nPostprocess: remove ( ' )\n\nBut even that might not work with the example above as the ( ' )s are escaped. We need to look for the possibility of also pre-process unsnapping, the manual way!\n", + "author_association": "OWNER", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/171669112/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/171676301", + "html_url": "https://github.com/un33k/python-slugify/issues/17#issuecomment-171676301", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/17", + "id": 171676301, + "node_id": "MDEyOklzc3VlQ29tbWVudDE3MTY3NjMwMQ==", + "user": { + "login": "fabiocaccamo", + "id": 1035294, + "node_id": "MDQ6VXNlcjEwMzUyOTQ=", + "avatar_url": "https://avatars.githubusercontent.com/u/1035294?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/fabiocaccamo", + "html_url": "https://github.com/fabiocaccamo", + "followers_url": "https://api.github.com/users/fabiocaccamo/followers", + "following_url": "https://api.github.com/users/fabiocaccamo/following{/other_user}", + "gists_url": "https://api.github.com/users/fabiocaccamo/gists{/gist_id}", + "starred_url": "https://api.github.com/users/fabiocaccamo/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/fabiocaccamo/subscriptions", + "organizations_url": "https://api.github.com/users/fabiocaccamo/orgs", + "repos_url": "https://api.github.com/users/fabiocaccamo/repos", + "events_url": "https://api.github.com/users/fabiocaccamo/events{/privacy}", + "received_events_url": "https://api.github.com/users/fabiocaccamo/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2016-01-14T15:38:22Z", + "updated_at": "2016-01-14T15:39:49Z", + "body": "@un33k \n\nMy solution idea is exactly like the one you just suggested:\n- Unescape the string\n- Replace ( ' ) with ( - )\n- Convert non-latin characters: компьютер (Russian) -> komp'yuter (converted)\n- Remove ( ' )\n- ...\n", + "author_association": "CONTRIBUTOR", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/171676301/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/171677050", + "html_url": "https://github.com/un33k/python-slugify/issues/17#issuecomment-171677050", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/17", + "id": 171677050, + "node_id": "MDEyOklzc3VlQ29tbWVudDE3MTY3NzA1MA==", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2016-01-14T15:41:07Z", + "updated_at": "2016-01-14T15:41:07Z", + "body": "Sounds good. I'll role it out during the next release cycle, and pull\nrequest with fix+test is always welcomed. Thx\n\nOn Thu, Jan 14, 2016 at 10:38 AM, Fabio Caccamo notifications@github.com\nwrote:\n\n> My solution idea is exactly like the one you just suggested:\n> - Unescape the string\n> - Replace ( ' ) with ( - )\n> - Convert non-latin characters: компьютер (Russian) -> komp'yuter\n> (converted)\n> - Remove ( ' )\n> - ...\n> \n> —\n> Reply to this email directly or view it on GitHub\n> https://github.com/un33k/python-slugify/issues/17#issuecomment-171676301\n> .\n", + "author_association": "OWNER", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/171677050/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/171682355", + "html_url": "https://github.com/un33k/python-slugify/issues/17#issuecomment-171682355", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/17", + "id": 171682355, + "node_id": "MDEyOklzc3VlQ29tbWVudDE3MTY4MjM1NQ==", + "user": { + "login": "fabiocaccamo", + "id": 1035294, + "node_id": "MDQ6VXNlcjEwMzUyOTQ=", + "avatar_url": "https://avatars.githubusercontent.com/u/1035294?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/fabiocaccamo", + "html_url": "https://github.com/fabiocaccamo", + "followers_url": "https://api.github.com/users/fabiocaccamo/followers", + "following_url": "https://api.github.com/users/fabiocaccamo/following{/other_user}", + "gists_url": "https://api.github.com/users/fabiocaccamo/gists{/gist_id}", + "starred_url": "https://api.github.com/users/fabiocaccamo/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/fabiocaccamo/subscriptions", + "organizations_url": "https://api.github.com/users/fabiocaccamo/orgs", + "repos_url": "https://api.github.com/users/fabiocaccamo/repos", + "events_url": "https://api.github.com/users/fabiocaccamo/events{/privacy}", + "received_events_url": "https://api.github.com/users/fabiocaccamo/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2016-01-14T16:00:11Z", + "updated_at": "2016-01-14T16:00:20Z", + "body": "Another idea could be to replace escaped quotes characters with ( - ): \n\n%27 ( ' ) -> ( - )\n%22 ( \" ) -> ( - )\n%u2018 ( ‘ ) -> ( - )\n%u2019 ( ’ ) -> ( - )\n%u201C ( “ ) -> ( - )\n%u201D ( ” ) -> ( - )\n\nThanks\n", + "author_association": "CONTRIBUTOR", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/171682355/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/171977399", + "html_url": "https://github.com/un33k/python-slugify/issues/17#issuecomment-171977399", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/17", + "id": 171977399, + "node_id": "MDEyOklzc3VlQ29tbWVudDE3MTk3NzM5OQ==", + "user": { + "login": "fabiocaccamo", + "id": 1035294, + "node_id": "MDQ6VXNlcjEwMzUyOTQ=", + "avatar_url": "https://avatars.githubusercontent.com/u/1035294?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/fabiocaccamo", + "html_url": "https://github.com/fabiocaccamo", + "followers_url": "https://api.github.com/users/fabiocaccamo/followers", + "following_url": "https://api.github.com/users/fabiocaccamo/following{/other_user}", + "gists_url": "https://api.github.com/users/fabiocaccamo/gists{/gist_id}", + "starred_url": "https://api.github.com/users/fabiocaccamo/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/fabiocaccamo/subscriptions", + "organizations_url": "https://api.github.com/users/fabiocaccamo/orgs", + "repos_url": "https://api.github.com/users/fabiocaccamo/repos", + "events_url": "https://api.github.com/users/fabiocaccamo/events{/privacy}", + "received_events_url": "https://api.github.com/users/fabiocaccamo/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2016-01-15T14:40:57Z", + "updated_at": "2016-01-15T15:35:29Z", + "body": "Just made [PR](https://github.com/un33k/python-slugify/pull/23)\n", + "author_association": "CONTRIBUTOR", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/171977399/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/172151391", + "html_url": "https://github.com/un33k/python-slugify/pull/23#issuecomment-172151391", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/23", + "id": 172151391, + "node_id": "MDEyOklzc3VlQ29tbWVudDE3MjE1MTM5MQ==", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2016-01-16T03:28:48Z", + "updated_at": "2016-01-16T03:48:38Z", + "body": "Available in version 1.2.0. Thx.\n", + "author_association": "OWNER", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/172151391/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/172152095", + "html_url": "https://github.com/un33k/python-slugify/pull/18#issuecomment-172152095", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/18", + "id": 172152095, + "node_id": "MDEyOklzc3VlQ29tbWVudDE3MjE1MjA5NQ==", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2016-01-16T03:47:56Z", + "updated_at": "2016-01-16T03:47:56Z", + "body": "Available in version 1.2.0.\n", + "author_association": "OWNER", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/172152095/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/223509449", + "html_url": "https://github.com/un33k/python-slugify/pull/25#issuecomment-223509449", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/25", + "id": 223509449, + "node_id": "MDEyOklzc3VlQ29tbWVudDIyMzUwOTQ0OQ==", + "user": { + "login": "coveralls", + "id": 2354108, + "node_id": "MDQ6VXNlcjIzNTQxMDg=", + "avatar_url": "https://avatars.githubusercontent.com/u/2354108?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/coveralls", + "html_url": "https://github.com/coveralls", + "followers_url": "https://api.github.com/users/coveralls/followers", + "following_url": "https://api.github.com/users/coveralls/following{/other_user}", + "gists_url": "https://api.github.com/users/coveralls/gists{/gist_id}", + "starred_url": "https://api.github.com/users/coveralls/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/coveralls/subscriptions", + "organizations_url": "https://api.github.com/users/coveralls/orgs", + "repos_url": "https://api.github.com/users/coveralls/repos", + "events_url": "https://api.github.com/users/coveralls/events{/privacy}", + "received_events_url": "https://api.github.com/users/coveralls/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2016-06-03T07:24:27Z", + "updated_at": "2016-06-03T07:24:27Z", + "body": "[![Coverage Status](https://coveralls.io/builds/6447423/badge)](https://coveralls.io/builds/6447423)\n\nCoverage increased (+0.1%) to 88.043% when pulling **9dea551d43400cca13566da118e6e54a8136dc87 on theeluwin:master** into **27d35f8810dd2816561044a9658eb19310d7e109 on un33k:master**.\n", + "author_association": "NONE", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/223509449/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/224807771", + "html_url": "https://github.com/un33k/python-slugify/pull/25#issuecomment-224807771", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/25", + "id": 224807771, + "node_id": "MDEyOklzc3VlQ29tbWVudDIyNDgwNzc3MQ==", + "user": { + "login": "coveralls", + "id": 2354108, + "node_id": "MDQ6VXNlcjIzNTQxMDg=", + "avatar_url": "https://avatars.githubusercontent.com/u/2354108?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/coveralls", + "html_url": "https://github.com/coveralls", + "followers_url": "https://api.github.com/users/coveralls/followers", + "following_url": "https://api.github.com/users/coveralls/following{/other_user}", + "gists_url": "https://api.github.com/users/coveralls/gists{/gist_id}", + "starred_url": "https://api.github.com/users/coveralls/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/coveralls/subscriptions", + "organizations_url": "https://api.github.com/users/coveralls/orgs", + "repos_url": "https://api.github.com/users/coveralls/repos", + "events_url": "https://api.github.com/users/coveralls/events{/privacy}", + "received_events_url": "https://api.github.com/users/coveralls/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2016-06-09T06:05:44Z", + "updated_at": "2016-06-09T06:05:44Z", + "body": "[![Coverage Status](https://coveralls.io/builds/6523950/badge)](https://coveralls.io/builds/6523950)\n\nCoverage decreased (-0.7%) to 87.234% when pulling **6e232a6aee46e1138c695308fe7c7d8b91c03fad on theeluwin:master** into **27d35f8810dd2816561044a9658eb19310d7e109 on un33k:master**.\n", + "author_association": "NONE", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/224807771/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/225014912", + "html_url": "https://github.com/un33k/python-slugify/issues/24#issuecomment-225014912", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/24", + "id": 225014912, + "node_id": "MDEyOklzc3VlQ29tbWVudDIyNTAxNDkxMg==", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2016-06-09T20:23:17Z", + "updated_at": "2016-06-09T20:23:17Z", + "body": "No plan for such feature at this moment. Such a pull requests from community will be considered for sure.\n", + "author_association": "OWNER", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/225014912/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/226370972", + "html_url": "https://github.com/un33k/python-slugify/pull/25#issuecomment-226370972", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/25", + "id": 226370972, + "node_id": "MDEyOklzc3VlQ29tbWVudDIyNjM3MDk3Mg==", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2016-06-16T02:14:01Z", + "updated_at": "2016-06-16T02:14:01Z", + "body": "Please have a look at the setup.py where the scripts entry point is set.\n\n``` python\n entry_points={'console_scripts': ['slugify=slugify.slugify:main']},\n```\n", + "author_association": "OWNER", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/226370972/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/226380986", + "html_url": "https://github.com/un33k/python-slugify/pull/25#issuecomment-226380986", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/25", + "id": 226380986, + "node_id": "MDEyOklzc3VlQ29tbWVudDIyNjM4MDk4Ng==", + "user": { + "login": "theeluwin", + "id": 1303549, + "node_id": "MDQ6VXNlcjEzMDM1NDk=", + "avatar_url": "https://avatars.githubusercontent.com/u/1303549?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/theeluwin", + "html_url": "https://github.com/theeluwin", + "followers_url": "https://api.github.com/users/theeluwin/followers", + "following_url": "https://api.github.com/users/theeluwin/following{/other_user}", + "gists_url": "https://api.github.com/users/theeluwin/gists{/gist_id}", + "starred_url": "https://api.github.com/users/theeluwin/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/theeluwin/subscriptions", + "organizations_url": "https://api.github.com/users/theeluwin/orgs", + "repos_url": "https://api.github.com/users/theeluwin/repos", + "events_url": "https://api.github.com/users/theeluwin/events{/privacy}", + "received_events_url": "https://api.github.com/users/theeluwin/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2016-06-16T03:43:25Z", + "updated_at": "2016-06-16T03:43:25Z", + "body": "missed it for the first time so I added additional commit https://github.com/un33k/python-slugify/pull/25/commits/6e232a6aee46e1138c695308fe7c7d8b91c03fad\nanyway, sorry about unnecessary PR. thought `python slugify.py Slug It` might needed.\n", + "author_association": "NONE", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/226380986/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/226487170", + "html_url": "https://github.com/un33k/python-slugify/pull/25#issuecomment-226487170", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/25", + "id": 226487170, + "node_id": "MDEyOklzc3VlQ29tbWVudDIyNjQ4NzE3MA==", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2016-06-16T13:37:57Z", + "updated_at": "2016-06-16T13:37:57Z", + "body": "No worries. When the package is installed, `slugify` will be installed on your path so it can be executed anywhere as long as you are in that environment. `slugify.py` is installed away in site-packages and users don't have direct access to it. Thx.\n", + "author_association": "OWNER", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/226487170/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/242506037", + "html_url": "https://github.com/un33k/python-slugify/pull/26#issuecomment-242506037", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/26", + "id": 242506037, + "node_id": "MDEyOklzc3VlQ29tbWVudDI0MjUwNjAzNw==", + "user": { + "login": "coveralls", + "id": 2354108, + "node_id": "MDQ6VXNlcjIzNTQxMDg=", + "avatar_url": "https://avatars.githubusercontent.com/u/2354108?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/coveralls", + "html_url": "https://github.com/coveralls", + "followers_url": "https://api.github.com/users/coveralls/followers", + "following_url": "https://api.github.com/users/coveralls/following{/other_user}", + "gists_url": "https://api.github.com/users/coveralls/gists{/gist_id}", + "starred_url": "https://api.github.com/users/coveralls/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/coveralls/subscriptions", + "organizations_url": "https://api.github.com/users/coveralls/orgs", + "repos_url": "https://api.github.com/users/coveralls/repos", + "events_url": "https://api.github.com/users/coveralls/events{/privacy}", + "received_events_url": "https://api.github.com/users/coveralls/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2016-08-25T19:18:00Z", + "updated_at": "2016-08-25T19:18:00Z", + "body": "[![Coverage Status](https://coveralls.io/builds/7612305/badge)](https://coveralls.io/builds/7612305)\n\nCoverage remained the same at 87.912% when pulling **88da2775a0d201a32cc51b5b294818a472266e2d on proinsias:patch-1** into **43d8b722ca6e477802dac98d116bfd84ec6b99a2 on un33k:master**.\n", + "author_association": "NONE", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/242506037/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/242777256", + "html_url": "https://github.com/un33k/python-slugify/issues/27#issuecomment-242777256", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/27", + "id": 242777256, + "node_id": "MDEyOklzc3VlQ29tbWVudDI0Mjc3NzI1Ng==", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2016-08-26T16:04:10Z", + "updated_at": "2016-08-26T16:04:10Z", + "body": "Released. thx\n", + "author_association": "OWNER", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/242777256/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/245748296", + "html_url": "https://github.com/un33k/python-slugify/pull/28#issuecomment-245748296", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/28", + "id": 245748296, + "node_id": "MDEyOklzc3VlQ29tbWVudDI0NTc0ODI5Ng==", + "user": { + "login": "coveralls", + "id": 2354108, + "node_id": "MDQ6VXNlcjIzNTQxMDg=", + "avatar_url": "https://avatars.githubusercontent.com/u/2354108?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/coveralls", + "html_url": "https://github.com/coveralls", + "followers_url": "https://api.github.com/users/coveralls/followers", + "following_url": "https://api.github.com/users/coveralls/following{/other_user}", + "gists_url": "https://api.github.com/users/coveralls/gists{/gist_id}", + "starred_url": "https://api.github.com/users/coveralls/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/coveralls/subscriptions", + "organizations_url": "https://api.github.com/users/coveralls/orgs", + "repos_url": "https://api.github.com/users/coveralls/repos", + "events_url": "https://api.github.com/users/coveralls/events{/privacy}", + "received_events_url": "https://api.github.com/users/coveralls/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2016-09-08T21:32:33Z", + "updated_at": "2016-09-08T21:32:33Z", + "body": "[![Coverage Status](https://coveralls.io/builds/7807236/badge)](https://coveralls.io/builds/7807236)\n\nCoverage remained the same at 94.048% when pulling **165ded9273ec7e85e3d5a00552281fccf8ab6e54 on feth:master** into **6472f8fae4088f323a69ef5086f0f97268be88f8 on un33k:master**.\n", + "author_association": "NONE", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/245748296/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/246309303", + "html_url": "https://github.com/un33k/python-slugify/pull/28#issuecomment-246309303", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/28", + "id": 246309303, + "node_id": "MDEyOklzc3VlQ29tbWVudDI0NjMwOTMwMw==", + "user": { + "login": "coveralls", + "id": 2354108, + "node_id": "MDQ6VXNlcjIzNTQxMDg=", + "avatar_url": "https://avatars.githubusercontent.com/u/2354108?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/coveralls", + "html_url": "https://github.com/coveralls", + "followers_url": "https://api.github.com/users/coveralls/followers", + "following_url": "https://api.github.com/users/coveralls/following{/other_user}", + "gists_url": "https://api.github.com/users/coveralls/gists{/gist_id}", + "starred_url": "https://api.github.com/users/coveralls/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/coveralls/subscriptions", + "organizations_url": "https://api.github.com/users/coveralls/orgs", + "repos_url": "https://api.github.com/users/coveralls/repos", + "events_url": "https://api.github.com/users/coveralls/events{/privacy}", + "received_events_url": "https://api.github.com/users/coveralls/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2016-09-12T10:32:33Z", + "updated_at": "2016-09-12T10:32:33Z", + "body": "[![Coverage Status](https://coveralls.io/builds/7842363/badge)](https://coveralls.io/builds/7842363)\n\nCoverage remained the same at 94.048% when pulling **c5988c1577339575ffaddc3c6b5c4459a35bcb4b on feth:master** into **6472f8fae4088f323a69ef5086f0f97268be88f8 on un33k:master**.\n", + "author_association": "NONE", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/246309303/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/255584007", + "html_url": "https://github.com/un33k/python-slugify/issues/29#issuecomment-255584007", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/29", + "id": 255584007, + "node_id": "MDEyOklzc3VlQ29tbWVudDI1NTU4NDAwNw==", + "user": { + "login": "ghost", + "id": 10137, + "node_id": "MDQ6VXNlcjEwMTM3", + "avatar_url": "https://avatars.githubusercontent.com/u/10137?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/ghost", + "html_url": "https://github.com/ghost", + "followers_url": "https://api.github.com/users/ghost/followers", + "following_url": "https://api.github.com/users/ghost/following{/other_user}", + "gists_url": "https://api.github.com/users/ghost/gists{/gist_id}", + "starred_url": "https://api.github.com/users/ghost/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/ghost/subscriptions", + "organizations_url": "https://api.github.com/users/ghost/orgs", + "repos_url": "https://api.github.com/users/ghost/repos", + "events_url": "https://api.github.com/users/ghost/events{/privacy}", + "received_events_url": "https://api.github.com/users/ghost/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2016-10-23T11:44:12Z", + "updated_at": "2016-10-23T11:44:12Z", + "body": "I don't think it's not a bug : it's the default behavior (check the content of issue #17 and the tests in [test.py](/un33k/python-slugify/blob/master/test.py).\n\nMaybe you lack a boolean parameter in `slugify()` to specify if a quote mark should be replaced by `'-'` or `''`.\n", + "author_association": "NONE", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/255584007/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/255620857", + "html_url": "https://github.com/un33k/python-slugify/issues/17#issuecomment-255620857", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/17", + "id": 255620857, + "node_id": "MDEyOklzc3VlQ29tbWVudDI1NTYyMDg1Nw==", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2016-10-23T22:58:49Z", + "updated_at": "2016-10-23T22:59:10Z", + "body": "Change available in version 1.2.0. Thx.\n", + "author_association": "OWNER", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/255620857/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/255844672", + "html_url": "https://github.com/un33k/python-slugify/issues/29#issuecomment-255844672", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/29", + "id": 255844672, + "node_id": "MDEyOklzc3VlQ29tbWVudDI1NTg0NDY3Mg==", + "user": { + "login": "BonkaBonka", + "id": 326917, + "node_id": "MDQ6VXNlcjMyNjkxNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/326917?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/BonkaBonka", + "html_url": "https://github.com/BonkaBonka", + "followers_url": "https://api.github.com/users/BonkaBonka/followers", + "following_url": "https://api.github.com/users/BonkaBonka/following{/other_user}", + "gists_url": "https://api.github.com/users/BonkaBonka/gists{/gist_id}", + "starred_url": "https://api.github.com/users/BonkaBonka/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/BonkaBonka/subscriptions", + "organizations_url": "https://api.github.com/users/BonkaBonka/orgs", + "repos_url": "https://api.github.com/users/BonkaBonka/repos", + "events_url": "https://api.github.com/users/BonkaBonka/events{/privacy}", + "received_events_url": "https://api.github.com/users/BonkaBonka/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2016-10-24T19:44:28Z", + "updated_at": "2016-10-24T19:44:28Z", + "body": "Yeah, my preference would indeed be to have a boolean indicating what I'd prefer to have happen.\n\nOf course I'd prefer the boolean to default to English's stance of apostrophes being insignificant but that's probably unnecessarily provoking to non-English speakers. :)\n", + "author_association": "NONE", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/255844672/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/255853282", + "html_url": "https://github.com/un33k/python-slugify/issues/29#issuecomment-255853282", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/29", + "id": 255853282, + "node_id": "MDEyOklzc3VlQ29tbWVudDI1NTg1MzI4Mg==", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2016-10-24T20:17:12Z", + "updated_at": "2016-10-24T20:17:12Z", + "body": "I wish this was a **one size fits all** situation here, but it is not. I am open to a **boolean** that defaults to the current behavior as I don't see a point in breaking backward compatibility. I'll wait for a PR, or will roll it out on the next release cycle.\n", + "author_association": "OWNER", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/255853282/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/260789011", + "html_url": "https://github.com/un33k/python-slugify/issues/30#issuecomment-260789011", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/30", + "id": 260789011, + "node_id": "MDEyOklzc3VlQ29tbWVudDI2MDc4OTAxMQ==", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2016-11-15T22:21:18Z", + "updated_at": "2016-11-15T22:21:18Z", + "body": "No perfect solution here. I welcome a pull request that doesn't break the current behavior and makes everyone happy and comes with proper test cases.\n", + "author_association": "OWNER", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/260789011/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/260789161", + "html_url": "https://github.com/un33k/python-slugify/issues/29#issuecomment-260789161", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/29", + "id": 260789161, + "node_id": "MDEyOklzc3VlQ29tbWVudDI2MDc4OTE2MQ==", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2016-11-15T22:21:51Z", + "updated_at": "2016-11-15T22:21:51Z", + "body": "Closing as per https://github.com/un33k/python-slugify/issues/30.\n", + "author_association": "OWNER", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/260789161/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/260789556", + "html_url": "https://github.com/un33k/python-slugify/issues/31#issuecomment-260789556", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/31", + "id": 260789556, + "node_id": "MDEyOklzc3VlQ29tbWVudDI2MDc4OTU1Ng==", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2016-11-15T22:23:28Z", + "updated_at": "2016-11-15T22:23:28Z", + "body": "No plan for such a feature in the near future. Forking may be an option here.\n", + "author_association": "OWNER", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/260789556/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/260789760", + "html_url": "https://github.com/un33k/python-slugify/pull/28#issuecomment-260789760", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/28", + "id": 260789760, + "node_id": "MDEyOklzc3VlQ29tbWVudDI2MDc4OTc2MA==", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2016-11-15T22:24:20Z", + "updated_at": "2016-11-15T22:24:30Z", + "body": "No plan to add conda install support at this time. \n", + "author_association": "OWNER", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/260789760/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/260914357", + "html_url": "https://github.com/un33k/python-slugify/pull/28#issuecomment-260914357", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/28", + "id": 260914357, + "node_id": "MDEyOklzc3VlQ29tbWVudDI2MDkxNDM1Nw==", + "user": { + "login": "feth", + "id": 554384, + "node_id": "MDQ6VXNlcjU1NDM4NA==", + "avatar_url": "https://avatars.githubusercontent.com/u/554384?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/feth", + "html_url": "https://github.com/feth", + "followers_url": "https://api.github.com/users/feth/followers", + "following_url": "https://api.github.com/users/feth/following{/other_user}", + "gists_url": "https://api.github.com/users/feth/gists{/gist_id}", + "starred_url": "https://api.github.com/users/feth/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/feth/subscriptions", + "organizations_url": "https://api.github.com/users/feth/orgs", + "repos_url": "https://api.github.com/users/feth/repos", + "events_url": "https://api.github.com/users/feth/events{/privacy}", + "received_events_url": "https://api.github.com/users/feth/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2016-11-16T10:47:18Z", + "updated_at": "2016-11-16T10:50:08Z", + "body": "Hello,\n\nsorry to read this as there's actually only a feature added (that I use, so I can say that it works as of now). \nI believe you fear that some irrelevant issues from conda users may add noise, or that you would have trouble to reproduce them and I can understand this.\nWith my limited knowledge of this ecosystem I have no reason to believe that your very useful package works differently under conda.\n\nFeth\n", + "author_association": "NONE", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/260914357/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/272031248", + "html_url": "https://github.com/un33k/python-slugify/pull/34#issuecomment-272031248", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/34", + "id": 272031248, + "node_id": "MDEyOklzc3VlQ29tbWVudDI3MjAzMTI0OA==", + "user": { + "login": "coveralls", + "id": 2354108, + "node_id": "MDQ6VXNlcjIzNTQxMDg=", + "avatar_url": "https://avatars.githubusercontent.com/u/2354108?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/coveralls", + "html_url": "https://github.com/coveralls", + "followers_url": "https://api.github.com/users/coveralls/followers", + "following_url": "https://api.github.com/users/coveralls/following{/other_user}", + "gists_url": "https://api.github.com/users/coveralls/gists{/gist_id}", + "starred_url": "https://api.github.com/users/coveralls/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/coveralls/subscriptions", + "organizations_url": "https://api.github.com/users/coveralls/orgs", + "repos_url": "https://api.github.com/users/coveralls/repos", + "events_url": "https://api.github.com/users/coveralls/events{/privacy}", + "received_events_url": "https://api.github.com/users/coveralls/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2017-01-11T23:40:19Z", + "updated_at": "2017-01-11T23:40:19Z", + "body": "\n[![Coverage Status](https://coveralls.io/builds/9630824/badge)](https://coveralls.io/builds/9630824)\n\nCoverage remained the same at 94.048% when pulling **83fdce9d4bedf257f4947da5354b1bf8c059923e on egorsmkv:master** into **f2ab4b72d9777ba4078398b52f69d7773807b585 on un33k:master**.\n", + "author_association": "NONE", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/272031248/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/272031251", + "html_url": "https://github.com/un33k/python-slugify/pull/34#issuecomment-272031251", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/34", + "id": 272031251, + "node_id": "MDEyOklzc3VlQ29tbWVudDI3MjAzMTI1MQ==", + "user": { + "login": "coveralls", + "id": 2354108, + "node_id": "MDQ6VXNlcjIzNTQxMDg=", + "avatar_url": "https://avatars.githubusercontent.com/u/2354108?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/coveralls", + "html_url": "https://github.com/coveralls", + "followers_url": "https://api.github.com/users/coveralls/followers", + "following_url": "https://api.github.com/users/coveralls/following{/other_user}", + "gists_url": "https://api.github.com/users/coveralls/gists{/gist_id}", + "starred_url": "https://api.github.com/users/coveralls/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/coveralls/subscriptions", + "organizations_url": "https://api.github.com/users/coveralls/orgs", + "repos_url": "https://api.github.com/users/coveralls/repos", + "events_url": "https://api.github.com/users/coveralls/events{/privacy}", + "received_events_url": "https://api.github.com/users/coveralls/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2017-01-11T23:40:20Z", + "updated_at": "2017-01-11T23:40:20Z", + "body": "\n[![Coverage Status](https://coveralls.io/builds/9630824/badge)](https://coveralls.io/builds/9630824)\n\nCoverage remained the same at 94.048% when pulling **83fdce9d4bedf257f4947da5354b1bf8c059923e on egorsmkv:master** into **f2ab4b72d9777ba4078398b52f69d7773807b585 on un33k:master**.\n", + "author_association": "NONE", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/272031251/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/272031249", + "html_url": "https://github.com/un33k/python-slugify/pull/34#issuecomment-272031249", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/34", + "id": 272031249, + "node_id": "MDEyOklzc3VlQ29tbWVudDI3MjAzMTI0OQ==", + "user": { + "login": "coveralls", + "id": 2354108, + "node_id": "MDQ6VXNlcjIzNTQxMDg=", + "avatar_url": "https://avatars.githubusercontent.com/u/2354108?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/coveralls", + "html_url": "https://github.com/coveralls", + "followers_url": "https://api.github.com/users/coveralls/followers", + "following_url": "https://api.github.com/users/coveralls/following{/other_user}", + "gists_url": "https://api.github.com/users/coveralls/gists{/gist_id}", + "starred_url": "https://api.github.com/users/coveralls/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/coveralls/subscriptions", + "organizations_url": "https://api.github.com/users/coveralls/orgs", + "repos_url": "https://api.github.com/users/coveralls/repos", + "events_url": "https://api.github.com/users/coveralls/events{/privacy}", + "received_events_url": "https://api.github.com/users/coveralls/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2017-01-11T23:40:20Z", + "updated_at": "2017-01-11T23:40:20Z", + "body": "\n[![Coverage Status](https://coveralls.io/builds/9630824/badge)](https://coveralls.io/builds/9630824)\n\nCoverage remained the same at 94.048% when pulling **83fdce9d4bedf257f4947da5354b1bf8c059923e on egorsmkv:master** into **f2ab4b72d9777ba4078398b52f69d7773807b585 on un33k:master**.\n", + "author_association": "NONE", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/272031249/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/272031250", + "html_url": "https://github.com/un33k/python-slugify/pull/34#issuecomment-272031250", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/34", + "id": 272031250, + "node_id": "MDEyOklzc3VlQ29tbWVudDI3MjAzMTI1MA==", + "user": { + "login": "coveralls", + "id": 2354108, + "node_id": "MDQ6VXNlcjIzNTQxMDg=", + "avatar_url": "https://avatars.githubusercontent.com/u/2354108?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/coveralls", + "html_url": "https://github.com/coveralls", + "followers_url": "https://api.github.com/users/coveralls/followers", + "following_url": "https://api.github.com/users/coveralls/following{/other_user}", + "gists_url": "https://api.github.com/users/coveralls/gists{/gist_id}", + "starred_url": "https://api.github.com/users/coveralls/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/coveralls/subscriptions", + "organizations_url": "https://api.github.com/users/coveralls/orgs", + "repos_url": "https://api.github.com/users/coveralls/repos", + "events_url": "https://api.github.com/users/coveralls/events{/privacy}", + "received_events_url": "https://api.github.com/users/coveralls/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2017-01-11T23:40:20Z", + "updated_at": "2017-01-11T23:40:20Z", + "body": "\n[![Coverage Status](https://coveralls.io/builds/9630824/badge)](https://coveralls.io/builds/9630824)\n\nCoverage remained the same at 94.048% when pulling **83fdce9d4bedf257f4947da5354b1bf8c059923e on egorsmkv:master** into **f2ab4b72d9777ba4078398b52f69d7773807b585 on un33k:master**.\n", + "author_association": "NONE", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/272031250/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/275941951", + "html_url": "https://github.com/un33k/python-slugify/issues/32#issuecomment-275941951", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/32", + "id": 275941951, + "node_id": "MDEyOklzc3VlQ29tbWVudDI3NTk0MTk1MQ==", + "user": { + "login": "egorsmkv", + "id": 7875085, + "node_id": "MDQ6VXNlcjc4NzUwODU=", + "avatar_url": "https://avatars.githubusercontent.com/u/7875085?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/egorsmkv", + "html_url": "https://github.com/egorsmkv", + "followers_url": "https://api.github.com/users/egorsmkv/followers", + "following_url": "https://api.github.com/users/egorsmkv/following{/other_user}", + "gists_url": "https://api.github.com/users/egorsmkv/gists{/gist_id}", + "starred_url": "https://api.github.com/users/egorsmkv/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/egorsmkv/subscriptions", + "organizations_url": "https://api.github.com/users/egorsmkv/orgs", + "repos_url": "https://api.github.com/users/egorsmkv/repos", + "events_url": "https://api.github.com/users/egorsmkv/events{/privacy}", + "received_events_url": "https://api.github.com/users/egorsmkv/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2017-01-29T20:07:09Z", + "updated_at": "2017-01-29T20:07:09Z", + "body": "@un33k ping", + "author_association": "CONTRIBUTOR", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/275941951/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/275942001", + "html_url": "https://github.com/un33k/python-slugify/pull/34#issuecomment-275942001", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/34", + "id": 275942001, + "node_id": "MDEyOklzc3VlQ29tbWVudDI3NTk0MjAwMQ==", + "user": { + "login": "egorsmkv", + "id": 7875085, + "node_id": "MDQ6VXNlcjc4NzUwODU=", + "avatar_url": "https://avatars.githubusercontent.com/u/7875085?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/egorsmkv", + "html_url": "https://github.com/egorsmkv", + "followers_url": "https://api.github.com/users/egorsmkv/followers", + "following_url": "https://api.github.com/users/egorsmkv/following{/other_user}", + "gists_url": "https://api.github.com/users/egorsmkv/gists{/gist_id}", + "starred_url": "https://api.github.com/users/egorsmkv/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/egorsmkv/subscriptions", + "organizations_url": "https://api.github.com/users/egorsmkv/orgs", + "repos_url": "https://api.github.com/users/egorsmkv/repos", + "events_url": "https://api.github.com/users/egorsmkv/events{/privacy}", + "received_events_url": "https://api.github.com/users/egorsmkv/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2017-01-29T20:08:04Z", + "updated_at": "2017-01-29T20:08:04Z", + "body": "@un33k ping", + "author_association": "CONTRIBUTOR", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/275942001/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/290367009", + "html_url": "https://github.com/un33k/python-slugify/pull/36#issuecomment-290367009", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/36", + "id": 290367009, + "node_id": "MDEyOklzc3VlQ29tbWVudDI5MDM2NzAwOQ==", + "user": { + "login": "coveralls", + "id": 2354108, + "node_id": "MDQ6VXNlcjIzNTQxMDg=", + "avatar_url": "https://avatars.githubusercontent.com/u/2354108?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/coveralls", + "html_url": "https://github.com/coveralls", + "followers_url": "https://api.github.com/users/coveralls/followers", + "following_url": "https://api.github.com/users/coveralls/following{/other_user}", + "gists_url": "https://api.github.com/users/coveralls/gists{/gist_id}", + "starred_url": "https://api.github.com/users/coveralls/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/coveralls/subscriptions", + "organizations_url": "https://api.github.com/users/coveralls/orgs", + "repos_url": "https://api.github.com/users/coveralls/repos", + "events_url": "https://api.github.com/users/coveralls/events{/privacy}", + "received_events_url": "https://api.github.com/users/coveralls/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2017-03-30T10:19:03Z", + "updated_at": "2017-03-30T10:19:03Z", + "body": "\n[![Coverage Status](https://coveralls.io/builds/10845002/badge)](https://coveralls.io/builds/10845002)\n\nCoverage increased (+0.2%) to 94.253% when pulling **273f8e9c2c02e3efcbdbc5c998a6ce15f37890cf on vrbaskiz:master** into **f2ab4b72d9777ba4078398b52f69d7773807b585 on un33k:master**.\n", + "author_association": "NONE", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/290367009/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/290367010", + "html_url": "https://github.com/un33k/python-slugify/pull/36#issuecomment-290367010", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/36", + "id": 290367010, + "node_id": "MDEyOklzc3VlQ29tbWVudDI5MDM2NzAxMA==", + "user": { + "login": "coveralls", + "id": 2354108, + "node_id": "MDQ6VXNlcjIzNTQxMDg=", + "avatar_url": "https://avatars.githubusercontent.com/u/2354108?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/coveralls", + "html_url": "https://github.com/coveralls", + "followers_url": "https://api.github.com/users/coveralls/followers", + "following_url": "https://api.github.com/users/coveralls/following{/other_user}", + "gists_url": "https://api.github.com/users/coveralls/gists{/gist_id}", + "starred_url": "https://api.github.com/users/coveralls/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/coveralls/subscriptions", + "organizations_url": "https://api.github.com/users/coveralls/orgs", + "repos_url": "https://api.github.com/users/coveralls/repos", + "events_url": "https://api.github.com/users/coveralls/events{/privacy}", + "received_events_url": "https://api.github.com/users/coveralls/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2017-03-30T10:19:03Z", + "updated_at": "2017-03-30T10:19:03Z", + "body": "\n[![Coverage Status](https://coveralls.io/builds/10845002/badge)](https://coveralls.io/builds/10845002)\n\nCoverage increased (+0.2%) to 94.253% when pulling **273f8e9c2c02e3efcbdbc5c998a6ce15f37890cf on vrbaskiz:master** into **f2ab4b72d9777ba4078398b52f69d7773807b585 on un33k:master**.\n", + "author_association": "NONE", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/290367010/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/290367011", + "html_url": "https://github.com/un33k/python-slugify/pull/36#issuecomment-290367011", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/36", + "id": 290367011, + "node_id": "MDEyOklzc3VlQ29tbWVudDI5MDM2NzAxMQ==", + "user": { + "login": "coveralls", + "id": 2354108, + "node_id": "MDQ6VXNlcjIzNTQxMDg=", + "avatar_url": "https://avatars.githubusercontent.com/u/2354108?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/coveralls", + "html_url": "https://github.com/coveralls", + "followers_url": "https://api.github.com/users/coveralls/followers", + "following_url": "https://api.github.com/users/coveralls/following{/other_user}", + "gists_url": "https://api.github.com/users/coveralls/gists{/gist_id}", + "starred_url": "https://api.github.com/users/coveralls/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/coveralls/subscriptions", + "organizations_url": "https://api.github.com/users/coveralls/orgs", + "repos_url": "https://api.github.com/users/coveralls/repos", + "events_url": "https://api.github.com/users/coveralls/events{/privacy}", + "received_events_url": "https://api.github.com/users/coveralls/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2017-03-30T10:19:03Z", + "updated_at": "2017-03-30T10:19:03Z", + "body": "\n[![Coverage Status](https://coveralls.io/builds/10845002/badge)](https://coveralls.io/builds/10845002)\n\nCoverage increased (+0.2%) to 94.253% when pulling **273f8e9c2c02e3efcbdbc5c998a6ce15f37890cf on vrbaskiz:master** into **f2ab4b72d9777ba4078398b52f69d7773807b585 on un33k:master**.\n", + "author_association": "NONE", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/290367011/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/290367012", + "html_url": "https://github.com/un33k/python-slugify/pull/36#issuecomment-290367012", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/36", + "id": 290367012, + "node_id": "MDEyOklzc3VlQ29tbWVudDI5MDM2NzAxMg==", + "user": { + "login": "coveralls", + "id": 2354108, + "node_id": "MDQ6VXNlcjIzNTQxMDg=", + "avatar_url": "https://avatars.githubusercontent.com/u/2354108?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/coveralls", + "html_url": "https://github.com/coveralls", + "followers_url": "https://api.github.com/users/coveralls/followers", + "following_url": "https://api.github.com/users/coveralls/following{/other_user}", + "gists_url": "https://api.github.com/users/coveralls/gists{/gist_id}", + "starred_url": "https://api.github.com/users/coveralls/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/coveralls/subscriptions", + "organizations_url": "https://api.github.com/users/coveralls/orgs", + "repos_url": "https://api.github.com/users/coveralls/repos", + "events_url": "https://api.github.com/users/coveralls/events{/privacy}", + "received_events_url": "https://api.github.com/users/coveralls/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2017-03-30T10:19:03Z", + "updated_at": "2017-03-30T10:19:03Z", + "body": "\n[![Coverage Status](https://coveralls.io/builds/10845002/badge)](https://coveralls.io/builds/10845002)\n\nCoverage increased (+0.2%) to 94.253% when pulling **273f8e9c2c02e3efcbdbc5c998a6ce15f37890cf on vrbaskiz:master** into **f2ab4b72d9777ba4078398b52f69d7773807b585 on un33k:master**.\n", + "author_association": "NONE", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/290367012/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/290750050", + "html_url": "https://github.com/un33k/python-slugify/issues/33#issuecomment-290750050", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/33", + "id": 290750050, + "node_id": "MDEyOklzc3VlQ29tbWVudDI5MDc1MDA1MA==", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2017-03-31T15:47:39Z", + "updated_at": "2017-03-31T15:47:39Z", + "body": "Will be done on the next release cycle. thx.", + "author_association": "OWNER", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/290750050/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/290750184", + "html_url": "https://github.com/un33k/python-slugify/issues/32#issuecomment-290750184", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/32", + "id": 290750184, + "node_id": "MDEyOklzc3VlQ29tbWVudDI5MDc1MDE4NA==", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2017-03-31T15:48:04Z", + "updated_at": "2017-03-31T15:48:13Z", + "body": "Pulled. Thx.", + "author_association": "OWNER", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/290750184/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/290750560", + "html_url": "https://github.com/un33k/python-slugify/issues/32#issuecomment-290750560", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/32", + "id": 290750560, + "node_id": "MDEyOklzc3VlQ29tbWVudDI5MDc1MDU2MA==", + "user": { + "login": "egorsmkv", + "id": 7875085, + "node_id": "MDQ6VXNlcjc4NzUwODU=", + "avatar_url": "https://avatars.githubusercontent.com/u/7875085?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/egorsmkv", + "html_url": "https://github.com/egorsmkv", + "followers_url": "https://api.github.com/users/egorsmkv/followers", + "following_url": "https://api.github.com/users/egorsmkv/following{/other_user}", + "gists_url": "https://api.github.com/users/egorsmkv/gists{/gist_id}", + "starred_url": "https://api.github.com/users/egorsmkv/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/egorsmkv/subscriptions", + "organizations_url": "https://api.github.com/users/egorsmkv/orgs", + "repos_url": "https://api.github.com/users/egorsmkv/repos", + "events_url": "https://api.github.com/users/egorsmkv/events{/privacy}", + "received_events_url": "https://api.github.com/users/egorsmkv/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2017-03-31T15:49:17Z", + "updated_at": "2017-03-31T15:49:17Z", + "body": "Do not forget to update the package on PyPI.", + "author_association": "CONTRIBUTOR", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/290750560/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/290750812", + "html_url": "https://github.com/un33k/python-slugify/issues/35#issuecomment-290750812", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/35", + "id": 290750812, + "node_id": "MDEyOklzc3VlQ29tbWVudDI5MDc1MDgxMg==", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2017-03-31T15:50:05Z", + "updated_at": "2017-03-31T15:50:05Z", + "body": "How are you using this package? pip or setup.py?", + "author_association": "OWNER", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/290750812/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/290808622", + "html_url": "https://github.com/un33k/python-slugify/pull/37#issuecomment-290808622", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/37", + "id": 290808622, + "node_id": "MDEyOklzc3VlQ29tbWVudDI5MDgwODYyMg==", + "user": { + "login": "vrbaskiz", + "id": 22053125, + "node_id": "MDQ6VXNlcjIyMDUzMTI1", + "avatar_url": "https://avatars.githubusercontent.com/u/22053125?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/vrbaskiz", + "html_url": "https://github.com/vrbaskiz", + "followers_url": "https://api.github.com/users/vrbaskiz/followers", + "following_url": "https://api.github.com/users/vrbaskiz/following{/other_user}", + "gists_url": "https://api.github.com/users/vrbaskiz/gists{/gist_id}", + "starred_url": "https://api.github.com/users/vrbaskiz/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/vrbaskiz/subscriptions", + "organizations_url": "https://api.github.com/users/vrbaskiz/orgs", + "repos_url": "https://api.github.com/users/vrbaskiz/repos", + "events_url": "https://api.github.com/users/vrbaskiz/events{/privacy}", + "received_events_url": "https://api.github.com/users/vrbaskiz/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2017-03-31T19:34:15Z", + "updated_at": "2017-03-31T19:34:15Z", + "body": "Hope i did what you asked, haven't done these sorts of things before :) Thanks!", + "author_association": "CONTRIBUTOR", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/290808622/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/290932346", + "html_url": "https://github.com/un33k/python-slugify/pull/37#issuecomment-290932346", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/37", + "id": 290932346, + "node_id": "MDEyOklzc3VlQ29tbWVudDI5MDkzMjM0Ng==", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2017-04-01T16:53:58Z", + "updated_at": "2017-04-01T16:53:58Z", + "body": "No worries ... all pushed to pypi now. Be mindful of regex_pattern & the separator and ensure your usage prevents a clash. thx.", + "author_association": "OWNER", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/290932346/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/290932379", + "html_url": "https://github.com/un33k/python-slugify/issues/33#issuecomment-290932379", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/33", + "id": 290932379, + "node_id": "MDEyOklzc3VlQ29tbWVudDI5MDkzMjM3OQ==", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2017-04-01T16:54:22Z", + "updated_at": "2017-04-01T16:54:22Z", + "body": "Done", + "author_association": "OWNER", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/290932379/reactions", + "total_count": 1, + "+1": 1, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/290932411", + "html_url": "https://github.com/un33k/python-slugify/pull/34#issuecomment-290932411", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/34", + "id": 290932411, + "node_id": "MDEyOklzc3VlQ29tbWVudDI5MDkzMjQxMQ==", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2017-04-01T16:54:52Z", + "updated_at": "2017-04-01T16:54:52Z", + "body": "Done", + "author_association": "OWNER", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/290932411/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/293068372", + "html_url": "https://github.com/un33k/python-slugify/issues/38#issuecomment-293068372", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/38", + "id": 293068372, + "node_id": "MDEyOklzc3VlQ29tbWVudDI5MzA2ODM3Mg==", + "user": { + "login": "reece", + "id": 109453, + "node_id": "MDQ6VXNlcjEwOTQ1Mw==", + "avatar_url": "https://avatars.githubusercontent.com/u/109453?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/reece", + "html_url": "https://github.com/reece", + "followers_url": "https://api.github.com/users/reece/followers", + "following_url": "https://api.github.com/users/reece/following{/other_user}", + "gists_url": "https://api.github.com/users/reece/gists{/gist_id}", + "starred_url": "https://api.github.com/users/reece/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/reece/subscriptions", + "organizations_url": "https://api.github.com/users/reece/orgs", + "repos_url": "https://api.github.com/users/reece/repos", + "events_url": "https://api.github.com/users/reece/events{/privacy}", + "received_events_url": "https://api.github.com/users/reece/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2017-04-10T20:25:58Z", + "updated_at": "2017-04-10T20:28:28Z", + "body": "This isn't related to buildout. It is triggered by `bdist_egg` (not `bdist`) and only on 1.2.2 (not 1.2.1).\r\n\r\n```\r\nsnafu$ cd /tmp\r\nsnafu$ wget -nd -q 'https://pypi.python.org/packages/30/81/866cf0efb431c1aef44fce68130756a8a5d0eeda0b20571b1db8bc54d2f3/python-slugify-1.2.2.tar.gz#md5=2856b79c41eca45a7198f950e395455c'snafu$ tar -xzf python-slugify-1.2.2.tar.gz \r\nsnafu$ cd python-slugify-1.2.2/\r\nsnafu$ python setup.py bdist_egg\r\nrunning bdist_egg\r\n...\r\nzip_safe flag not set; analyzing archive contents...\r\nTraceback (most recent call last):\r\n File \"setup.py\", line 89, in \r\n entry_points={'console_scripts': ['slugify=slugify.slugify:main']},\r\n File \"/usr/lib/python2.7/distutils/core.py\", line 151, in setup\r\n dist.run_commands()\r\n File \"/usr/lib/python2.7/distutils/dist.py\", line 953, in run_commands\r\n self.run_command(cmd)\r\n File \"/usr/lib/python2.7/distutils/dist.py\", line 972, in run_command\r\n cmd_obj.run()\r\n File \"/usr/lib/python2.7/dist-packages/setuptools/command/bdist_egg.py\", line 209, in run\r\n os.path.join(archive_root, 'EGG-INFO'), self.zip_safe()\r\n File \"/usr/lib/python2.7/dist-packages/setuptools/command/bdist_egg.py\", line 245, in zip_safe\r\n return analyze_egg(self.bdist_dir, self.stubs)\r\n File \"/usr/lib/python2.7/dist-packages/setuptools/command/bdist_egg.py\", line 355, in analyze_egg\r\n safe = scan_module(egg_dir, base, name, stubs) and safe\r\n File \"/usr/lib/python2.7/dist-packages/setuptools/command/bdist_egg.py\", line 392, in scan_module\r\n code = marshal.load(f)\r\nValueError: bad marshal data (unknown type code)\r\n\r\n```\r\n", + "author_association": "CONTRIBUTOR", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/293068372/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/293070802", + "html_url": "https://github.com/un33k/python-slugify/issues/38#issuecomment-293070802", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/38", + "id": 293070802, + "node_id": "MDEyOklzc3VlQ29tbWVudDI5MzA3MDgwMg==", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2017-04-10T20:35:21Z", + "updated_at": "2017-04-10T20:41:20Z", + "body": "It may just be a corrupt build. A new build 1.2.3 is out. Let me know ... ", + "author_association": "OWNER", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/293070802/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/293072669", + "html_url": "https://github.com/un33k/python-slugify/issues/38#issuecomment-293072669", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/38", + "id": 293072669, + "node_id": "MDEyOklzc3VlQ29tbWVudDI5MzA3MjY2OQ==", + "user": { + "login": "reece", + "id": 109453, + "node_id": "MDQ6VXNlcjEwOTQ1Mw==", + "avatar_url": "https://avatars.githubusercontent.com/u/109453?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/reece", + "html_url": "https://github.com/reece", + "followers_url": "https://api.github.com/users/reece/followers", + "following_url": "https://api.github.com/users/reece/following{/other_user}", + "gists_url": "https://api.github.com/users/reece/gists{/gist_id}", + "starred_url": "https://api.github.com/users/reece/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/reece/subscriptions", + "organizations_url": "https://api.github.com/users/reece/orgs", + "repos_url": "https://api.github.com/users/reece/repos", + "events_url": "https://api.github.com/users/reece/events{/privacy}", + "received_events_url": "https://api.github.com/users/reece/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2017-04-10T20:42:32Z", + "updated_at": "2017-04-10T21:14:52Z", + "body": "Thanks. FWIW, I fetch the github repo, built an sdist from 1.2.2, and compared it to the pypi tarball. ~~The only difference was the ordering of keys in setup.cfg (which is probably a dict ordering variation).~~ The pypi tarball has .pyc from Python 3.4:\r\n\r\n```\r\n(venv) snafu$ diff <(tar -tzf python-slugify-1.2.2-pypi.tar.gz | sort) <(tar -tzf python-slugify-1.2.2-built.tar.gz | sort)\r\n18,20d17\r\n< python-slugify-1.2.2/slugify/__pycache__/\r\n< python-slugify-1.2.2/slugify/__pycache__/__init__.cpython-34.pyc\r\n< python-slugify-1.2.2/slugify/__pycache__/slugify.cpython-34.pyc\r\n```\r\n\r\nYes, please rerelease without including __pycache__.", + "author_association": "CONTRIBUTOR", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/293072669/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/293088255", + "html_url": "https://github.com/un33k/python-slugify/issues/38#issuecomment-293088255", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/38", + "id": 293088255, + "node_id": "MDEyOklzc3VlQ29tbWVudDI5MzA4ODI1NQ==", + "user": { + "login": "reece", + "id": 109453, + "node_id": "MDQ6VXNlcjEwOTQ1Mw==", + "avatar_url": "https://avatars.githubusercontent.com/u/109453?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/reece", + "html_url": "https://github.com/reece", + "followers_url": "https://api.github.com/users/reece/followers", + "following_url": "https://api.github.com/users/reece/following{/other_user}", + "gists_url": "https://api.github.com/users/reece/gists{/gist_id}", + "starred_url": "https://api.github.com/users/reece/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/reece/subscriptions", + "organizations_url": "https://api.github.com/users/reece/orgs", + "repos_url": "https://api.github.com/users/reece/repos", + "events_url": "https://api.github.com/users/reece/events{/privacy}", + "received_events_url": "https://api.github.com/users/reece/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2017-04-10T21:45:00Z", + "updated_at": "2017-04-10T21:45:00Z", + "body": "@un33k The just-released 1.2.3 still contains __pycache__ and .pyc files (now for 3.4 and 3.6).", + "author_association": "CONTRIBUTOR", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/293088255/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/293088693", + "html_url": "https://github.com/un33k/python-slugify/issues/38#issuecomment-293088693", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/38", + "id": 293088693, + "node_id": "MDEyOklzc3VlQ29tbWVudDI5MzA4ODY5Mw==", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2017-04-10T21:47:03Z", + "updated_at": "2017-04-10T21:47:03Z", + "body": "@reece thx for the feedback ... ", + "author_association": "OWNER", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/293088693/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/293094182", + "html_url": "https://github.com/un33k/python-slugify/pull/39#issuecomment-293094182", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/39", + "id": 293094182, + "node_id": "MDEyOklzc3VlQ29tbWVudDI5MzA5NDE4Mg==", + "user": { + "login": "coveralls", + "id": 2354108, + "node_id": "MDQ6VXNlcjIzNTQxMDg=", + "avatar_url": "https://avatars.githubusercontent.com/u/2354108?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/coveralls", + "html_url": "https://github.com/coveralls", + "followers_url": "https://api.github.com/users/coveralls/followers", + "following_url": "https://api.github.com/users/coveralls/following{/other_user}", + "gists_url": "https://api.github.com/users/coveralls/gists{/gist_id}", + "starred_url": "https://api.github.com/users/coveralls/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/coveralls/subscriptions", + "organizations_url": "https://api.github.com/users/coveralls/orgs", + "repos_url": "https://api.github.com/users/coveralls/repos", + "events_url": "https://api.github.com/users/coveralls/events{/privacy}", + "received_events_url": "https://api.github.com/users/coveralls/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2017-04-10T22:12:24Z", + "updated_at": "2017-04-10T22:12:24Z", + "body": "\n[![Coverage Status](https://coveralls.io/builds/11025783/badge)](https://coveralls.io/builds/11025783)\n\nCoverage remained the same at 94.186% when pulling **d230919235e061d50fa092c8e2ad294ada8902e5 on reece:development** into **ea5e26af19b3e99ef47c3b802fddb87b03fa3fae on un33k:development**.\n", + "author_association": "NONE", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/293094182/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/293094624", + "html_url": "https://github.com/un33k/python-slugify/pull/39#issuecomment-293094624", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/39", + "id": 293094624, + "node_id": "MDEyOklzc3VlQ29tbWVudDI5MzA5NDYyNA==", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2017-04-10T22:14:30Z", + "updated_at": "2017-04-10T22:14:30Z", + "body": "MANIFEST.in was a PR as someone needed for some special setup. Only if publish was smart enough not to pack the cache and the .pyc files.", + "author_association": "OWNER", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/293094624/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/293414070", + "html_url": "https://github.com/un33k/python-slugify/issues/38#issuecomment-293414070", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/38", + "id": 293414070, + "node_id": "MDEyOklzc3VlQ29tbWVudDI5MzQxNDA3MA==", + "user": { + "login": "reece", + "id": 109453, + "node_id": "MDQ6VXNlcjEwOTQ1Mw==", + "avatar_url": "https://avatars.githubusercontent.com/u/109453?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/reece", + "html_url": "https://github.com/reece", + "followers_url": "https://api.github.com/users/reece/followers", + "following_url": "https://api.github.com/users/reece/following{/other_user}", + "gists_url": "https://api.github.com/users/reece/gists{/gist_id}", + "starred_url": "https://api.github.com/users/reece/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/reece/subscriptions", + "organizations_url": "https://api.github.com/users/reece/orgs", + "repos_url": "https://api.github.com/users/reece/repos", + "events_url": "https://api.github.com/users/reece/events{/privacy}", + "received_events_url": "https://api.github.com/users/reece/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2017-04-11T22:04:39Z", + "updated_at": "2017-04-11T22:04:39Z", + "body": "@un33k: 1.2.4 immediately resolved the build issues I was having at RTD. Thanks for jumping on this quickly! I think you can close this.", + "author_association": "CONTRIBUTOR", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/293414070/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/293603671", + "html_url": "https://github.com/un33k/python-slugify/issues/38#issuecomment-293603671", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/38", + "id": 293603671, + "node_id": "MDEyOklzc3VlQ29tbWVudDI5MzYwMzY3MQ==", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2017-04-12T14:55:23Z", + "updated_at": "2017-04-12T14:55:23Z", + "body": "Yeah", + "author_association": "OWNER", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/293603671/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/297425057", + "html_url": "https://github.com/un33k/python-slugify/pull/40#issuecomment-297425057", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/40", + "id": 297425057, + "node_id": "MDEyOklzc3VlQ29tbWVudDI5NzQyNTA1Nw==", + "user": { + "login": "coveralls", + "id": 2354108, + "node_id": "MDQ6VXNlcjIzNTQxMDg=", + "avatar_url": "https://avatars.githubusercontent.com/u/2354108?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/coveralls", + "html_url": "https://github.com/coveralls", + "followers_url": "https://api.github.com/users/coveralls/followers", + "following_url": "https://api.github.com/users/coveralls/following{/other_user}", + "gists_url": "https://api.github.com/users/coveralls/gists{/gist_id}", + "starred_url": "https://api.github.com/users/coveralls/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/coveralls/subscriptions", + "organizations_url": "https://api.github.com/users/coveralls/orgs", + "repos_url": "https://api.github.com/users/coveralls/repos", + "events_url": "https://api.github.com/users/coveralls/events{/privacy}", + "received_events_url": "https://api.github.com/users/coveralls/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2017-04-26T14:25:12Z", + "updated_at": "2017-04-26T14:25:12Z", + "body": "\n[![Coverage Status](https://coveralls.io/builds/11250512/badge)](https://coveralls.io/builds/11250512)\n\nCoverage remained the same at 94.186% when pulling **c98be5753a2c4dce2f6fcccec5c4f78ecaaf3fe8 on loisaidasam:patch-1** into **5826d0d022b84be6419979c30a61507ba1384359 on un33k:master**.\n", + "author_association": "NONE", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/297425057/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/297983872", + "html_url": "https://github.com/un33k/python-slugify/issues/41#issuecomment-297983872", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/41", + "id": 297983872, + "node_id": "MDEyOklzc3VlQ29tbWVudDI5Nzk4Mzg3Mg==", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2017-04-28T12:21:10Z", + "updated_at": "2017-04-28T12:21:10Z", + "body": "@sodre Send me a PR ... with your fix?", + "author_association": "OWNER", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/297983872/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/297994698", + "html_url": "https://github.com/un33k/python-slugify/issues/41#issuecomment-297994698", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/41", + "id": 297994698, + "node_id": "MDEyOklzc3VlQ29tbWVudDI5Nzk5NDY5OA==", + "user": { + "login": "sodre", + "id": 1043285, + "node_id": "MDQ6VXNlcjEwNDMyODU=", + "avatar_url": "https://avatars.githubusercontent.com/u/1043285?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/sodre", + "html_url": "https://github.com/sodre", + "followers_url": "https://api.github.com/users/sodre/followers", + "following_url": "https://api.github.com/users/sodre/following{/other_user}", + "gists_url": "https://api.github.com/users/sodre/gists{/gist_id}", + "starred_url": "https://api.github.com/users/sodre/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/sodre/subscriptions", + "organizations_url": "https://api.github.com/users/sodre/orgs", + "repos_url": "https://api.github.com/users/sodre/repos", + "events_url": "https://api.github.com/users/sodre/events{/privacy}", + "received_events_url": "https://api.github.com/users/sodre/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2017-04-28T13:15:53Z", + "updated_at": "2017-04-28T13:15:53Z", + "body": "I will propose one tonight.", + "author_association": "NONE", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/297994698/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/298023375", + "html_url": "https://github.com/un33k/python-slugify/pull/42#issuecomment-298023375", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/42", + "id": 298023375, + "node_id": "MDEyOklzc3VlQ29tbWVudDI5ODAyMzM3NQ==", + "user": { + "login": "coveralls", + "id": 2354108, + "node_id": "MDQ6VXNlcjIzNTQxMDg=", + "avatar_url": "https://avatars.githubusercontent.com/u/2354108?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/coveralls", + "html_url": "https://github.com/coveralls", + "followers_url": "https://api.github.com/users/coveralls/followers", + "following_url": "https://api.github.com/users/coveralls/following{/other_user}", + "gists_url": "https://api.github.com/users/coveralls/gists{/gist_id}", + "starred_url": "https://api.github.com/users/coveralls/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/coveralls/subscriptions", + "organizations_url": "https://api.github.com/users/coveralls/orgs", + "repos_url": "https://api.github.com/users/coveralls/repos", + "events_url": "https://api.github.com/users/coveralls/events{/privacy}", + "received_events_url": "https://api.github.com/users/coveralls/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2017-04-28T15:06:10Z", + "updated_at": "2017-04-28T15:06:10Z", + "body": "\n[![Coverage Status](https://coveralls.io/builds/11290783/badge)](https://coveralls.io/builds/11290783)\n\nCoverage decreased (-5.8%) to 88.372% when pulling **c5f8db08919a92f59a0c245d81b9cf64f4b925a6 on proinsias:proinsias-manifest** into **5826d0d022b84be6419979c30a61507ba1384359 on un33k:master**.\n", + "author_association": "NONE", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/298023375/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/298205560", + "html_url": "https://github.com/un33k/python-slugify/pull/43#issuecomment-298205560", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/43", + "id": 298205560, + "node_id": "MDEyOklzc3VlQ29tbWVudDI5ODIwNTU2MA==", + "user": { + "login": "coveralls", + "id": 2354108, + "node_id": "MDQ6VXNlcjIzNTQxMDg=", + "avatar_url": "https://avatars.githubusercontent.com/u/2354108?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/coveralls", + "html_url": "https://github.com/coveralls", + "followers_url": "https://api.github.com/users/coveralls/followers", + "following_url": "https://api.github.com/users/coveralls/following{/other_user}", + "gists_url": "https://api.github.com/users/coveralls/gists{/gist_id}", + "starred_url": "https://api.github.com/users/coveralls/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/coveralls/subscriptions", + "organizations_url": "https://api.github.com/users/coveralls/orgs", + "repos_url": "https://api.github.com/users/coveralls/repos", + "events_url": "https://api.github.com/users/coveralls/events{/privacy}", + "received_events_url": "https://api.github.com/users/coveralls/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2017-04-30T01:48:10Z", + "updated_at": "2017-04-30T01:48:10Z", + "body": "\n[![Coverage Status](https://coveralls.io/builds/11306147/badge)](https://coveralls.io/builds/11306147)\n\nCoverage remained the same at 94.186% when pulling **095d3ee32d1b60483995742235742f9ad128fa4b on sodre:slugify-cli-fails** into **5826d0d022b84be6419979c30a61507ba1384359 on un33k:master**.\n", + "author_association": "NONE", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/298205560/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/298205804", + "html_url": "https://github.com/un33k/python-slugify/pull/43#issuecomment-298205804", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/43", + "id": 298205804, + "node_id": "MDEyOklzc3VlQ29tbWVudDI5ODIwNTgwNA==", + "user": { + "login": "sodre", + "id": 1043285, + "node_id": "MDQ6VXNlcjEwNDMyODU=", + "avatar_url": "https://avatars.githubusercontent.com/u/1043285?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/sodre", + "html_url": "https://github.com/sodre", + "followers_url": "https://api.github.com/users/sodre/followers", + "following_url": "https://api.github.com/users/sodre/following{/other_user}", + "gists_url": "https://api.github.com/users/sodre/gists{/gist_id}", + "starred_url": "https://api.github.com/users/sodre/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/sodre/subscriptions", + "organizations_url": "https://api.github.com/users/sodre/orgs", + "repos_url": "https://api.github.com/users/sodre/repos", + "events_url": "https://api.github.com/users/sodre/events{/privacy}", + "received_events_url": "https://api.github.com/users/sodre/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2017-04-30T01:56:16Z", + "updated_at": "2017-04-30T01:56:16Z", + "body": "This is crazy. The same code does not work during a conda-build/test cycles. \r\n\r\nI also downloaded your packaged binary through pip, and it worked. \r\n\r\nI am closing the PR and issue and just keep the patch on the recipe side.\r\n", + "author_association": "NONE", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/298205804/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/298205830", + "html_url": "https://github.com/un33k/python-slugify/issues/41#issuecomment-298205830", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/41", + "id": 298205830, + "node_id": "MDEyOklzc3VlQ29tbWVudDI5ODIwNTgzMA==", + "user": { + "login": "sodre", + "id": 1043285, + "node_id": "MDQ6VXNlcjEwNDMyODU=", + "avatar_url": "https://avatars.githubusercontent.com/u/1043285?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/sodre", + "html_url": "https://github.com/sodre", + "followers_url": "https://api.github.com/users/sodre/followers", + "following_url": "https://api.github.com/users/sodre/following{/other_user}", + "gists_url": "https://api.github.com/users/sodre/gists{/gist_id}", + "starred_url": "https://api.github.com/users/sodre/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/sodre/subscriptions", + "organizations_url": "https://api.github.com/users/sodre/orgs", + "repos_url": "https://api.github.com/users/sodre/repos", + "events_url": "https://api.github.com/users/sodre/events{/privacy}", + "received_events_url": "https://api.github.com/users/sodre/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2017-04-30T01:56:47Z", + "updated_at": "2017-04-30T01:56:47Z", + "body": "Closing this since I can't get it to replicate outside a conda-build cycle.", + "author_association": "NONE", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/298205830/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/299848458", + "html_url": "https://github.com/un33k/python-slugify/pull/40#issuecomment-299848458", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/40", + "id": 299848458, + "node_id": "MDEyOklzc3VlQ29tbWVudDI5OTg0ODQ1OA==", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2017-05-08T12:02:24Z", + "updated_at": "2017-05-08T12:02:24Z", + "body": "Thx.", + "author_association": "OWNER", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/299848458/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/299848890", + "html_url": "https://github.com/un33k/python-slugify/issues/45#issuecomment-299848890", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/45", + "id": 299848890, + "node_id": "MDEyOklzc3VlQ29tbWVudDI5OTg0ODg5MA==", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2017-05-08T12:04:46Z", + "updated_at": "2017-05-08T12:04:46Z", + "body": "The conversion is done by the underlaying modules.", + "author_association": "OWNER", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/299848890/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/299848993", + "html_url": "https://github.com/un33k/python-slugify/issues/44#issuecomment-299848993", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/44", + "id": 299848993, + "node_id": "MDEyOklzc3VlQ29tbWVudDI5OTg0ODk5Mw==", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2017-05-08T12:05:21Z", + "updated_at": "2017-05-08T12:05:21Z", + "body": "The conversion is done by the underlaying modules.", + "author_association": "OWNER", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/299848993/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/299849271", + "html_url": "https://github.com/un33k/python-slugify/pull/42#issuecomment-299849271", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/42", + "id": 299849271, + "node_id": "MDEyOklzc3VlQ29tbWVudDI5OTg0OTI3MQ==", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2017-05-08T12:06:55Z", + "updated_at": "2017-05-08T12:06:55Z", + "body": "Thx", + "author_association": "OWNER", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/299849271/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/300129511", + "html_url": "https://github.com/un33k/python-slugify/issues/45#issuecomment-300129511", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/45", + "id": 300129511, + "node_id": "MDEyOklzc3VlQ29tbWVudDMwMDEyOTUxMQ==", + "user": { + "login": "imrek", + "id": 13435019, + "node_id": "MDQ6VXNlcjEzNDM1MDE5", + "avatar_url": "https://avatars.githubusercontent.com/u/13435019?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/imrek", + "html_url": "https://github.com/imrek", + "followers_url": "https://api.github.com/users/imrek/followers", + "following_url": "https://api.github.com/users/imrek/following{/other_user}", + "gists_url": "https://api.github.com/users/imrek/gists{/gist_id}", + "starred_url": "https://api.github.com/users/imrek/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/imrek/subscriptions", + "organizations_url": "https://api.github.com/users/imrek/orgs", + "repos_url": "https://api.github.com/users/imrek/repos", + "events_url": "https://api.github.com/users/imrek/events{/privacy}", + "received_events_url": "https://api.github.com/users/imrek/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2017-05-09T10:54:49Z", + "updated_at": "2017-05-09T10:54:49Z", + "body": "That's all right, if real world usage doesn't matter. Thanks.", + "author_association": "NONE", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/300129511/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/338355115", + "html_url": "https://github.com/un33k/python-slugify/pull/47#issuecomment-338355115", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/47", + "id": 338355115, + "node_id": "MDEyOklzc3VlQ29tbWVudDMzODM1NTExNQ==", + "user": { + "login": "coveralls", + "id": 2354108, + "node_id": "MDQ6VXNlcjIzNTQxMDg=", + "avatar_url": "https://avatars.githubusercontent.com/u/2354108?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/coveralls", + "html_url": "https://github.com/coveralls", + "followers_url": "https://api.github.com/users/coveralls/followers", + "following_url": "https://api.github.com/users/coveralls/following{/other_user}", + "gists_url": "https://api.github.com/users/coveralls/gists{/gist_id}", + "starred_url": "https://api.github.com/users/coveralls/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/coveralls/subscriptions", + "organizations_url": "https://api.github.com/users/coveralls/orgs", + "repos_url": "https://api.github.com/users/coveralls/repos", + "events_url": "https://api.github.com/users/coveralls/events{/privacy}", + "received_events_url": "https://api.github.com/users/coveralls/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2017-10-21T01:33:45Z", + "updated_at": "2017-10-21T01:33:45Z", + "body": "\n[![Coverage Status](https://coveralls.io/builds/13820921/badge)](https://coveralls.io/builds/13820921)\n\nCoverage decreased (-0.2%) to 93.976% when pulling **2c47a53fa2ea400cd306033de5cacbbde7d67fd5 on KlaasH:feature/use-separator-in-code** into **e14bde218d794869eba8d23949bf0a9de8611a46 on un33k:master**.\n", + "author_association": "NONE", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/338355115/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/338355684", + "html_url": "https://github.com/un33k/python-slugify/pull/47#issuecomment-338355684", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/47", + "id": 338355684, + "node_id": "MDEyOklzc3VlQ29tbWVudDMzODM1NTY4NA==", + "user": { + "login": "coveralls", + "id": 2354108, + "node_id": "MDQ6VXNlcjIzNTQxMDg=", + "avatar_url": "https://avatars.githubusercontent.com/u/2354108?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/coveralls", + "html_url": "https://github.com/coveralls", + "followers_url": "https://api.github.com/users/coveralls/followers", + "following_url": "https://api.github.com/users/coveralls/following{/other_user}", + "gists_url": "https://api.github.com/users/coveralls/gists{/gist_id}", + "starred_url": "https://api.github.com/users/coveralls/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/coveralls/subscriptions", + "organizations_url": "https://api.github.com/users/coveralls/orgs", + "repos_url": "https://api.github.com/users/coveralls/repos", + "events_url": "https://api.github.com/users/coveralls/events{/privacy}", + "received_events_url": "https://api.github.com/users/coveralls/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2017-10-21T01:44:48Z", + "updated_at": "2017-10-21T01:44:48Z", + "body": "\n[![Coverage Status](https://coveralls.io/builds/13820959/badge)](https://coveralls.io/builds/13820959)\n\nCoverage decreased (-0.2%) to 93.976% when pulling **0bff01fffc7d9f6c26b67f1c96e449ec0820c4c8 on KlaasH:feature/use-separator-in-code** into **e14bde218d794869eba8d23949bf0a9de8611a46 on un33k:master**.\n", + "author_association": "NONE", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/338355684/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/338355951", + "html_url": "https://github.com/un33k/python-slugify/pull/48#issuecomment-338355951", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/48", + "id": 338355951, + "node_id": "MDEyOklzc3VlQ29tbWVudDMzODM1NTk1MQ==", + "user": { + "login": "coveralls", + "id": 2354108, + "node_id": "MDQ6VXNlcjIzNTQxMDg=", + "avatar_url": "https://avatars.githubusercontent.com/u/2354108?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/coveralls", + "html_url": "https://github.com/coveralls", + "followers_url": "https://api.github.com/users/coveralls/followers", + "following_url": "https://api.github.com/users/coveralls/following{/other_user}", + "gists_url": "https://api.github.com/users/coveralls/gists{/gist_id}", + "starred_url": "https://api.github.com/users/coveralls/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/coveralls/subscriptions", + "organizations_url": "https://api.github.com/users/coveralls/orgs", + "repos_url": "https://api.github.com/users/coveralls/repos", + "events_url": "https://api.github.com/users/coveralls/events{/privacy}", + "received_events_url": "https://api.github.com/users/coveralls/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2017-10-21T01:49:35Z", + "updated_at": "2017-10-21T01:49:35Z", + "body": "\n[![Coverage Status](https://coveralls.io/builds/13820982/badge)](https://coveralls.io/builds/13820982)\n\nCoverage remained the same at 94.186% when pulling **77f4de02e93fb9e15b717235a2916e52f96f8f79 on KlaasH:feature/remove-tests-from-readme** into **e14bde218d794869eba8d23949bf0a9de8611a46 on un33k:master**.\n", + "author_association": "NONE", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/338355951/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/346816194", + "html_url": "https://github.com/un33k/python-slugify/issues/49#issuecomment-346816194", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/49", + "id": 346816194, + "node_id": "MDEyOklzc3VlQ29tbWVudDM0NjgxNjE5NA==", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2017-11-24T12:17:02Z", + "updated_at": "2017-11-24T12:17:02Z", + "body": "no issue - https://github.com/un33k/python-slugify/issues/7", + "author_association": "OWNER", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/346816194/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/360258528", + "html_url": "https://github.com/un33k/python-slugify/issues/50#issuecomment-360258528", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/50", + "id": 360258528, + "node_id": "MDEyOklzc3VlQ29tbWVudDM2MDI1ODUyOA==", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2018-01-24T20:11:21Z", + "updated_at": "2018-01-24T20:11:21Z", + "body": "This has come up many [times](https://github.com/un33k/python-slugify/issues/7) before.\r\n\r\n> Derivative\r\n\r\nUsing a set of APIs from a module is not equal to being derived from that module.\r\n\r\nAPI dependancy does NOT mean licensing dependency. If your open source application with MIT license runs on Linux and uses their APIs, it doesn't have to be licensed as GPL or LGPL.\r\n\r\n[FYI](https://en.wikipedia.org/wiki/Derivative_work)\r\n\r\nUse without concern.", + "author_association": "OWNER", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/360258528/reactions", + "total_count": 1, + "+1": 1, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/360263544", + "html_url": "https://github.com/un33k/python-slugify/issues/50#issuecomment-360263544", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/50", + "id": 360263544, + "node_id": "MDEyOklzc3VlQ29tbWVudDM2MDI2MzU0NA==", + "user": { + "login": "bolkedebruin", + "id": 4282712, + "node_id": "MDQ6VXNlcjQyODI3MTI=", + "avatar_url": "https://avatars.githubusercontent.com/u/4282712?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/bolkedebruin", + "html_url": "https://github.com/bolkedebruin", + "followers_url": "https://api.github.com/users/bolkedebruin/followers", + "following_url": "https://api.github.com/users/bolkedebruin/following{/other_user}", + "gists_url": "https://api.github.com/users/bolkedebruin/gists{/gist_id}", + "starred_url": "https://api.github.com/users/bolkedebruin/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/bolkedebruin/subscriptions", + "organizations_url": "https://api.github.com/users/bolkedebruin/orgs", + "repos_url": "https://api.github.com/users/bolkedebruin/repos", + "events_url": "https://api.github.com/users/bolkedebruin/events{/privacy}", + "received_events_url": "https://api.github.com/users/bolkedebruin/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2018-01-24T20:30:15Z", + "updated_at": "2018-01-24T20:30:15Z", + "body": "Sorry to have missed that. I will verify with Apache Legal if they think the same way. Cheers", + "author_association": "CONTRIBUTOR", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/360263544/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/360726347", + "html_url": "https://github.com/un33k/python-slugify/issues/50#issuecomment-360726347", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/50", + "id": 360726347, + "node_id": "MDEyOklzc3VlQ29tbWVudDM2MDcyNjM0Nw==", + "user": { + "login": "bolkedebruin", + "id": 4282712, + "node_id": "MDQ6VXNlcjQyODI3MTI=", + "avatar_url": "https://avatars.githubusercontent.com/u/4282712?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/bolkedebruin", + "html_url": "https://github.com/bolkedebruin", + "followers_url": "https://api.github.com/users/bolkedebruin/followers", + "following_url": "https://api.github.com/users/bolkedebruin/following{/other_user}", + "gists_url": "https://api.github.com/users/bolkedebruin/gists{/gist_id}", + "starred_url": "https://api.github.com/users/bolkedebruin/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/bolkedebruin/subscriptions", + "organizations_url": "https://api.github.com/users/bolkedebruin/orgs", + "repos_url": "https://api.github.com/users/bolkedebruin/repos", + "events_url": "https://api.github.com/users/bolkedebruin/events{/privacy}", + "received_events_url": "https://api.github.com/users/bolkedebruin/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2018-01-26T09:17:06Z", + "updated_at": "2018-01-26T10:36:37Z", + "body": "@un33k for future reference and for what it is worth the author of unidecode agrees with you: https://github.com/avian2/unidecode/issues/23#issuecomment-360725623\r\n", + "author_association": "CONTRIBUTOR", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/360726347/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/363043254", + "html_url": "https://github.com/un33k/python-slugify/issues/51#issuecomment-363043254", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/51", + "id": 363043254, + "node_id": "MDEyOklzc3VlQ29tbWVudDM2MzA0MzI1NA==", + "user": { + "login": "haizaar", + "id": 58201, + "node_id": "MDQ6VXNlcjU4MjAx", + "avatar_url": "https://avatars.githubusercontent.com/u/58201?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/haizaar", + "html_url": "https://github.com/haizaar", + "followers_url": "https://api.github.com/users/haizaar/followers", + "following_url": "https://api.github.com/users/haizaar/following{/other_user}", + "gists_url": "https://api.github.com/users/haizaar/gists{/gist_id}", + "starred_url": "https://api.github.com/users/haizaar/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/haizaar/subscriptions", + "organizations_url": "https://api.github.com/users/haizaar/orgs", + "repos_url": "https://api.github.com/users/haizaar/repos", + "events_url": "https://api.github.com/users/haizaar/events{/privacy}", + "received_events_url": "https://api.github.com/users/haizaar/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2018-02-05T10:27:53Z", + "updated_at": "2018-02-05T10:27:53Z", + "body": "I see it was discussed before. Sorry for the noise.", + "author_association": "NONE", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/363043254/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/366697327", + "html_url": "https://github.com/un33k/python-slugify/pull/47#issuecomment-366697327", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/47", + "id": 366697327, + "node_id": "MDEyOklzc3VlQ29tbWVudDM2NjY5NzMyNw==", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2018-02-19T13:46:18Z", + "updated_at": "2018-02-19T13:46:18Z", + "body": "This is to generate a human-readable set of words. Dash-separated words that is. Anything else is out of the scope of this package. Feel free to fork and adapt for your own edge-case.", + "author_association": "OWNER", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/366697327/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/366699483", + "html_url": "https://github.com/un33k/python-slugify/pull/48#issuecomment-366699483", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/48", + "id": 366699483, + "node_id": "MDEyOklzc3VlQ29tbWVudDM2NjY5OTQ4Mw==", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2018-02-19T13:54:20Z", + "updated_at": "2018-02-19T13:54:20Z", + "body": "I might reduce the number of examples to 1/2 a dozen in one of the upcoming releases. ", + "author_association": "OWNER", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/366699483/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/366719139", + "html_url": "https://github.com/un33k/python-slugify/pull/47#issuecomment-366719139", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/47", + "id": 366719139, + "node_id": "MDEyOklzc3VlQ29tbWVudDM2NjcxOTEzOQ==", + "user": { + "login": "KlaasH", + "id": 6598836, + "node_id": "MDQ6VXNlcjY1OTg4MzY=", + "avatar_url": "https://avatars.githubusercontent.com/u/6598836?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/KlaasH", + "html_url": "https://github.com/KlaasH", + "followers_url": "https://api.github.com/users/KlaasH/followers", + "following_url": "https://api.github.com/users/KlaasH/following{/other_user}", + "gists_url": "https://api.github.com/users/KlaasH/gists{/gist_id}", + "starred_url": "https://api.github.com/users/KlaasH/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/KlaasH/subscriptions", + "organizations_url": "https://api.github.com/users/KlaasH/orgs", + "repos_url": "https://api.github.com/users/KlaasH/repos", + "events_url": "https://api.github.com/users/KlaasH/events{/privacy}", + "received_events_url": "https://api.github.com/users/KlaasH/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2018-02-19T15:04:00Z", + "updated_at": "2018-02-19T15:04:00Z", + "body": "The `separator` and `regex_pattern` options are already there. I expected that they could be used together and didn't expect that `-` would be a mandatory excluded character. I.e. to me this change wouldn't expand the scope, just make the existing options work more predictably.\r\n\r\nIt also seems like a bug to me that `max_length=20` means \"No longer than 20 characters with a 1-character separator, possibly way longer than that if you use a long separator and the input has several short words.\"", + "author_association": "NONE", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/366719139/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/375595107", + "html_url": "https://github.com/un33k/python-slugify/pull/53#issuecomment-375595107", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/53", + "id": 375595107, + "node_id": "MDEyOklzc3VlQ29tbWVudDM3NTU5NTEwNw==", + "user": { + "login": "coveralls", + "id": 2354108, + "node_id": "MDQ6VXNlcjIzNTQxMDg=", + "avatar_url": "https://avatars.githubusercontent.com/u/2354108?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/coveralls", + "html_url": "https://github.com/coveralls", + "followers_url": "https://api.github.com/users/coveralls/followers", + "following_url": "https://api.github.com/users/coveralls/following{/other_user}", + "gists_url": "https://api.github.com/users/coveralls/gists{/gist_id}", + "starred_url": "https://api.github.com/users/coveralls/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/coveralls/subscriptions", + "organizations_url": "https://api.github.com/users/coveralls/orgs", + "repos_url": "https://api.github.com/users/coveralls/repos", + "events_url": "https://api.github.com/users/coveralls/events{/privacy}", + "received_events_url": "https://api.github.com/users/coveralls/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2018-03-23T09:37:58Z", + "updated_at": "2018-03-24T08:01:38Z", + "body": "\n[![Coverage Status](https://coveralls.io/builds/16157315/badge)](https://coveralls.io/builds/16157315)\n\nCoverage increased (+0.2%) to 94.382% when pulling **f1656755355f16794d44725d988be76d637e58f1 on bolkedebruin:master** into **e14bde218d794869eba8d23949bf0a9de8611a46 on un33k:master**.\n", + "author_association": "NONE", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/375595107/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/375952133", + "html_url": "https://github.com/un33k/python-slugify/issues/52#issuecomment-375952133", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/52", + "id": 375952133, + "node_id": "MDEyOklzc3VlQ29tbWVudDM3NTk1MjEzMw==", + "user": { + "login": "bolkedebruin", + "id": 4282712, + "node_id": "MDQ6VXNlcjQyODI3MTI=", + "avatar_url": "https://avatars.githubusercontent.com/u/4282712?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/bolkedebruin", + "html_url": "https://github.com/bolkedebruin", + "followers_url": "https://api.github.com/users/bolkedebruin/followers", + "following_url": "https://api.github.com/users/bolkedebruin/following{/other_user}", + "gists_url": "https://api.github.com/users/bolkedebruin/gists{/gist_id}", + "starred_url": "https://api.github.com/users/bolkedebruin/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/bolkedebruin/subscriptions", + "organizations_url": "https://api.github.com/users/bolkedebruin/orgs", + "repos_url": "https://api.github.com/users/bolkedebruin/repos", + "events_url": "https://api.github.com/users/bolkedebruin/events{/privacy}", + "received_events_url": "https://api.github.com/users/bolkedebruin/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2018-03-25T07:49:35Z", + "updated_at": "2018-03-25T08:41:58Z", + "body": "@un33k awesome thanks for merging! would you mind doing a (minor/patch) release to pypi? Then all our issues are gone", + "author_association": "CONTRIBUTOR", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/375952133/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/375977157", + "html_url": "https://github.com/un33k/python-slugify/issues/52#issuecomment-375977157", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/52", + "id": 375977157, + "node_id": "MDEyOklzc3VlQ29tbWVudDM3NTk3NzE1Nw==", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2018-03-25T15:04:23Z", + "updated_at": "2018-03-25T15:04:23Z", + "body": "1.2.5 is published. thx.", + "author_association": "OWNER", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/375977157/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/384352712", + "html_url": "https://github.com/un33k/python-slugify/pull/54#issuecomment-384352712", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/54", + "id": 384352712, + "node_id": "MDEyOklzc3VlQ29tbWVudDM4NDM1MjcxMg==", + "user": { + "login": "coveralls", + "id": 2354108, + "node_id": "MDQ6VXNlcjIzNTQxMDg=", + "avatar_url": "https://avatars.githubusercontent.com/u/2354108?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/coveralls", + "html_url": "https://github.com/coveralls", + "followers_url": "https://api.github.com/users/coveralls/followers", + "following_url": "https://api.github.com/users/coveralls/following{/other_user}", + "gists_url": "https://api.github.com/users/coveralls/gists{/gist_id}", + "starred_url": "https://api.github.com/users/coveralls/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/coveralls/subscriptions", + "organizations_url": "https://api.github.com/users/coveralls/orgs", + "repos_url": "https://api.github.com/users/coveralls/repos", + "events_url": "https://api.github.com/users/coveralls/events{/privacy}", + "received_events_url": "https://api.github.com/users/coveralls/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2018-04-25T16:39:10Z", + "updated_at": "2018-04-25T19:17:56Z", + "body": "\n[![Coverage Status](https://coveralls.io/builds/16696551/badge)](https://coveralls.io/builds/16696551)\n\nCoverage increased (+0.4%) to 94.737% when pulling **8f7a97f8a17589db9ec64260c8828280ce2e0f3d on s-m-e:lowercase** into **4c1a344652dfef32f786a96d94b351f4277da964 on un33k:development**.\n", + "author_association": "NONE", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/384352712/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/384352908", + "html_url": "https://github.com/un33k/python-slugify/pull/54#issuecomment-384352908", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/54", + "id": 384352908, + "node_id": "MDEyOklzc3VlQ29tbWVudDM4NDM1MjkwOA==", + "user": { + "login": "s-m-e", + "id": 16851110, + "node_id": "MDQ6VXNlcjE2ODUxMTEw", + "avatar_url": "https://avatars.githubusercontent.com/u/16851110?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/s-m-e", + "html_url": "https://github.com/s-m-e", + "followers_url": "https://api.github.com/users/s-m-e/followers", + "following_url": "https://api.github.com/users/s-m-e/following{/other_user}", + "gists_url": "https://api.github.com/users/s-m-e/gists{/gist_id}", + "starred_url": "https://api.github.com/users/s-m-e/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/s-m-e/subscriptions", + "organizations_url": "https://api.github.com/users/s-m-e/orgs", + "repos_url": "https://api.github.com/users/s-m-e/repos", + "events_url": "https://api.github.com/users/s-m-e/events{/privacy}", + "received_events_url": "https://api.github.com/users/s-m-e/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2018-04-25T16:39:50Z", + "updated_at": "2018-04-25T16:39:50Z", + "body": "I added two more commits based on feedback from pycodestyle. The first one is trivial - I removed an empty line with spaces. The second is kind of dirty: pycodestyle complained about \"escape sequences\" in regular expressions. Not sure, could be a bug at their end. I placed it on the ignore list.", + "author_association": "CONTRIBUTOR", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/384352908/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/384500653", + "html_url": "https://github.com/un33k/python-slugify/pull/54#issuecomment-384500653", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/54", + "id": 384500653, + "node_id": "MDEyOklzc3VlQ29tbWVudDM4NDUwMDY1Mw==", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2018-04-26T03:20:44Z", + "updated_at": "2018-04-26T03:20:44Z", + "body": "thx", + "author_association": "OWNER", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/384500653/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/389207114", + "html_url": "https://github.com/un33k/python-slugify/issues/55#issuecomment-389207114", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/55", + "id": 389207114, + "node_id": "MDEyOklzc3VlQ29tbWVudDM4OTIwNzExNA==", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2018-05-15T15:22:04Z", + "updated_at": "2018-05-15T15:22:04Z", + "body": "You need to put a dash where you want before calling slugify\n", + "author_association": "OWNER", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/389207114/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/405432208", + "html_url": "https://github.com/un33k/python-slugify/issues/56#issuecomment-405432208", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/56", + "id": 405432208, + "node_id": "MDEyOklzc3VlQ29tbWVudDQwNTQzMjIwOA==", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2018-07-17T01:41:56Z", + "updated_at": "2018-07-17T01:41:56Z", + "body": "when travis ci rolls out the support.", + "author_association": "OWNER", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/405432208/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/405555549", + "html_url": "https://github.com/un33k/python-slugify/pull/57#issuecomment-405555549", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/57", + "id": 405555549, + "node_id": "MDEyOklzc3VlQ29tbWVudDQwNTU1NTU0OQ==", + "user": { + "login": "coveralls", + "id": 2354108, + "node_id": "MDQ6VXNlcjIzNTQxMDg=", + "avatar_url": "https://avatars.githubusercontent.com/u/2354108?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/coveralls", + "html_url": "https://github.com/coveralls", + "followers_url": "https://api.github.com/users/coveralls/followers", + "following_url": "https://api.github.com/users/coveralls/following{/other_user}", + "gists_url": "https://api.github.com/users/coveralls/gists{/gist_id}", + "starred_url": "https://api.github.com/users/coveralls/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/coveralls/subscriptions", + "organizations_url": "https://api.github.com/users/coveralls/orgs", + "repos_url": "https://api.github.com/users/coveralls/repos", + "events_url": "https://api.github.com/users/coveralls/events{/privacy}", + "received_events_url": "https://api.github.com/users/coveralls/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2018-07-17T11:53:14Z", + "updated_at": "2018-07-17T12:20:33Z", + "body": "\n[![Coverage Status](https://coveralls.io/builds/18021949/badge)](https://coveralls.io/builds/18021949)\n\nCoverage remained the same at 94.737% when pulling **8c6f94d558f798486d510120f3cdea04fa05cce3 on s-m-e:python37** into **5c766dd99d5675f70b34cfabc3a8b8556a0065f1 on un33k:development**.\n", + "author_association": "NONE", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/405555549/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/410412568", + "html_url": "https://github.com/un33k/python-slugify/issues/58#issuecomment-410412568", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/58", + "id": 410412568, + "node_id": "MDEyOklzc3VlQ29tbWVudDQxMDQxMjU2OA==", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2018-08-04T01:30:16Z", + "updated_at": "2018-08-04T01:30:16Z", + "body": "@fabiocaccamo Please check your environment as it installs just fine on a brand new 2.7 virtual env.\r\n\r\n21:25:16 [~/py2test] [py2test] $ **python**\r\n**Python 2.7.15** (default, Jun 17 2018, 12:46:58)\r\n[GCC 4.2.1 Compatible Apple LLVM 9.1.0 (clang-902.0.39.2)] on darwin\r\nType \"help\", \"copyright\", \"credits\" or \"license\" for more information.\r\n```>>> exit()```\r\n\r\n**pip install python-slugify==1.2.5**\r\nCollecting python-slugify==1.2.5\r\nCollecting Unidecode>=0.04.16 (from python-slugify==1.2.5)\r\n Using cached https://files.pythonhosted.org/packages/59/ef/67085e30e8bbcdd76e2f0a4ad8151c13a2c5bce77c85f8cad6e1f16fb141/Unidecode-1.0.22-py2.py3-none-any.whl\r\nInstalling collected packages: Unidecode, python-slugify\r\n**Successfully installed Unidecode-1.0.22 python-slugify-1.2.5**\r\n", + "author_association": "OWNER", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/410412568/reactions", + "total_count": 1, + "+1": 1, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/410412689", + "html_url": "https://github.com/un33k/python-slugify/pull/57#issuecomment-410412689", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/57", + "id": 410412689, + "node_id": "MDEyOklzc3VlQ29tbWVudDQxMDQxMjY4OQ==", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2018-08-04T01:32:19Z", + "updated_at": "2018-08-04T01:32:19Z", + "body": "@s-m-e I'd like to keep the .travis.yml simple. I'd recommend 3.7dev version till 3.7 is officially supported. With that said, while 3.7 test is not added to master, it works as expected. Appreciate the the effort.", + "author_association": "OWNER", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/410412689/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/410441667", + "html_url": "https://github.com/un33k/python-slugify/pull/57#issuecomment-410441667", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/57", + "id": 410441667, + "node_id": "MDEyOklzc3VlQ29tbWVudDQxMDQ0MTY2Nw==", + "user": { + "login": "s-m-e", + "id": 16851110, + "node_id": "MDQ6VXNlcjE2ODUxMTEw", + "avatar_url": "https://avatars.githubusercontent.com/u/16851110?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/s-m-e", + "html_url": "https://github.com/s-m-e", + "followers_url": "https://api.github.com/users/s-m-e/followers", + "following_url": "https://api.github.com/users/s-m-e/following{/other_user}", + "gists_url": "https://api.github.com/users/s-m-e/gists{/gist_id}", + "starred_url": "https://api.github.com/users/s-m-e/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/s-m-e/subscriptions", + "organizations_url": "https://api.github.com/users/s-m-e/orgs", + "repos_url": "https://api.github.com/users/s-m-e/repos", + "events_url": "https://api.github.com/users/s-m-e/events{/privacy}", + "received_events_url": "https://api.github.com/users/s-m-e/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2018-08-04T11:00:52Z", + "updated_at": "2018-08-04T11:00:52Z", + "body": "@un33k It's very unlikely that you'll get all versions of Python you're currently testing against working in a single release of Ubuntu. You'll either have to drop support for older versions of Python or you'll end up with a more complex test matrix similar to what I did (leveraging 'trusty' and 'xenial' images). If you are opting for the test matrix, you already have support for Python 3.7.0 (no beta or rc candidate) - all you currently have to do is to enable sudo in the container. There is no simpler version of doing this in the long term, I am afraid.", + "author_association": "CONTRIBUTOR", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/410441667/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/417937996", + "html_url": "https://github.com/un33k/python-slugify/issues/59#issuecomment-417937996", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/59", + "id": 417937996, + "node_id": "MDEyOklzc3VlQ29tbWVudDQxNzkzNzk5Ng==", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2018-09-02T15:18:46Z", + "updated_at": "2018-09-02T15:18:46Z", + "body": "@tedmiston The culprit may be the `&&`. You may need to use `;` between an environment variable and the command that is using that variable.\r\n\r\nSomething like the following.\r\n\r\n```\r\n$ ; \r\n```\r\n", + "author_association": "OWNER", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/417937996/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/417943094", + "html_url": "https://github.com/un33k/python-slugify/issues/60#issuecomment-417943094", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/60", + "id": 417943094, + "node_id": "MDEyOklzc3VlQ29tbWVudDQxNzk0MzA5NA==", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2018-09-02T16:37:41Z", + "updated_at": "2018-09-02T16:37:41Z", + "body": "1.2.6 released.", + "author_association": "OWNER", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/417943094/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/417943681", + "html_url": "https://github.com/un33k/python-slugify/issues/60#issuecomment-417943681", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/60", + "id": 417943681, + "node_id": "MDEyOklzc3VlQ29tbWVudDQxNzk0MzY4MQ==", + "user": { + "login": "s-m-e", + "id": 16851110, + "node_id": "MDQ6VXNlcjE2ODUxMTEw", + "avatar_url": "https://avatars.githubusercontent.com/u/16851110?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/s-m-e", + "html_url": "https://github.com/s-m-e", + "followers_url": "https://api.github.com/users/s-m-e/followers", + "following_url": "https://api.github.com/users/s-m-e/following{/other_user}", + "gists_url": "https://api.github.com/users/s-m-e/gists{/gist_id}", + "starred_url": "https://api.github.com/users/s-m-e/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/s-m-e/subscriptions", + "organizations_url": "https://api.github.com/users/s-m-e/orgs", + "repos_url": "https://api.github.com/users/s-m-e/repos", + "events_url": "https://api.github.com/users/s-m-e/events{/privacy}", + "received_events_url": "https://api.github.com/users/s-m-e/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2018-09-02T16:47:52Z", + "updated_at": "2018-09-02T16:47:52Z", + "body": "Thanks.", + "author_association": "CONTRIBUTOR", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/417943681/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/427563624", + "html_url": "https://github.com/un33k/python-slugify/pull/61#issuecomment-427563624", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/61", + "id": 427563624, + "node_id": "MDEyOklzc3VlQ29tbWVudDQyNzU2MzYyNA==", + "user": { + "login": "coveralls", + "id": 2354108, + "node_id": "MDQ6VXNlcjIzNTQxMDg=", + "avatar_url": "https://avatars.githubusercontent.com/u/2354108?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/coveralls", + "html_url": "https://github.com/coveralls", + "followers_url": "https://api.github.com/users/coveralls/followers", + "following_url": "https://api.github.com/users/coveralls/following{/other_user}", + "gists_url": "https://api.github.com/users/coveralls/gists{/gist_id}", + "starred_url": "https://api.github.com/users/coveralls/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/coveralls/subscriptions", + "organizations_url": "https://api.github.com/users/coveralls/orgs", + "repos_url": "https://api.github.com/users/coveralls/repos", + "events_url": "https://api.github.com/users/coveralls/events{/privacy}", + "received_events_url": "https://api.github.com/users/coveralls/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2018-10-06T10:36:13Z", + "updated_at": "2018-10-06T10:40:48Z", + "body": "\n[![Coverage Status](https://coveralls.io/builds/19384135/badge)](https://coveralls.io/builds/19384135)\n\nCoverage remained the same at 94.737% when pulling **474080ba8d3bc232302d817db4691c793ff5e71e on vaibhavmule:patch-1** into **f4462bb64278e091011e6612feac295bf46d1136 on un33k:master**.\n", + "author_association": "NONE", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/427563624/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/427563627", + "html_url": "https://github.com/un33k/python-slugify/pull/61#issuecomment-427563627", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/61", + "id": 427563627, + "node_id": "MDEyOklzc3VlQ29tbWVudDQyNzU2MzYyNw==", + "user": { + "login": "coveralls", + "id": 2354108, + "node_id": "MDQ6VXNlcjIzNTQxMDg=", + "avatar_url": "https://avatars.githubusercontent.com/u/2354108?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/coveralls", + "html_url": "https://github.com/coveralls", + "followers_url": "https://api.github.com/users/coveralls/followers", + "following_url": "https://api.github.com/users/coveralls/following{/other_user}", + "gists_url": "https://api.github.com/users/coveralls/gists{/gist_id}", + "starred_url": "https://api.github.com/users/coveralls/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/coveralls/subscriptions", + "organizations_url": "https://api.github.com/users/coveralls/orgs", + "repos_url": "https://api.github.com/users/coveralls/repos", + "events_url": "https://api.github.com/users/coveralls/events{/privacy}", + "received_events_url": "https://api.github.com/users/coveralls/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2018-10-06T10:36:15Z", + "updated_at": "2018-10-06T10:36:15Z", + "body": "\n[![Coverage Status](https://coveralls.io/builds/19384126/badge)](https://coveralls.io/builds/19384126)\n\nCoverage decreased (-94.7%) to 0.0% when pulling **474080ba8d3bc232302d817db4691c793ff5e71e on vaibhavmule:patch-1** into **f4462bb64278e091011e6612feac295bf46d1136 on un33k:master**.\n", + "author_association": "NONE", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/427563627/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/428221746", + "html_url": "https://github.com/un33k/python-slugify/issues/59#issuecomment-428221746", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/59", + "id": 428221746, + "node_id": "MDEyOklzc3VlQ29tbWVudDQyODIyMTc0Ng==", + "user": { + "login": "tammoippen", + "id": 4425925, + "node_id": "MDQ6VXNlcjQ0MjU5MjU=", + "avatar_url": "https://avatars.githubusercontent.com/u/4425925?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/tammoippen", + "html_url": "https://github.com/tammoippen", + "followers_url": "https://api.github.com/users/tammoippen/followers", + "following_url": "https://api.github.com/users/tammoippen/following{/other_user}", + "gists_url": "https://api.github.com/users/tammoippen/gists{/gist_id}", + "starred_url": "https://api.github.com/users/tammoippen/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/tammoippen/subscriptions", + "organizations_url": "https://api.github.com/users/tammoippen/orgs", + "repos_url": "https://api.github.com/users/tammoippen/repos", + "events_url": "https://api.github.com/users/tammoippen/events{/privacy}", + "received_events_url": "https://api.github.com/users/tammoippen/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2018-10-09T14:47:04Z", + "updated_at": "2018-10-09T14:47:04Z", + "body": "The issue still persists:\r\n```sh\r\nbash-3.2$ export SLUGIFY_USES_TEXT_UNIDECODE=yes ; pip install python-slugify\r\nCollecting python-slugify\r\nCollecting Unidecode>=0.04.16 (from python-slugify)\r\n Using cached https://files.pythonhosted.org/packages/59/ef/67085e30e8bbcdd76e2f0a4ad8151c13a2c5bce77c85f8cad6e1f16fb141/Unidecode-1.0.22-py2.py3-none-any.whl\r\nInstalling collected packages: Unidecode, python-slugify\r\nSuccessfully installed Unidecode-1.0.22 python-slugify-1.2.6\r\n```\r\n\r\nThis is because of the `install_requires` logic in [`setup.py`](https://github.com/un33k/python-slugify/blob/master/setup.py#L18) using the environment variable `SLUGIFY_USES_TEXT_UNIDECODE`. When creating the distribution, the environment variable was not set and hence the generated `python_slugify.egg-info/requires.txt` does only contain the `Unidecode` dependency (see the uploaded distribution here: https://pypi.org/project/python-slugify/1.2.6/#files). It is not possible to install `python-slugify` with `text-unidecode` via `pip install python-slugify`, regardless of what is in the environment.\r\n\r\nA working approach would be to define the `*unidecode` dependencies as [`extras_require`](https://setuptools.readthedocs.io/en/latest/setuptools.html#declaring-extras-optional-features-with-their-own-dependencies) in `setup.py`:\r\n```py\r\nsetup(\r\n ...\r\n extras_require={\r\n 'gpl': ['Unidecode>=0.04.16'],\r\n 'artistic': ['text-unidecode>=1.2'],\r\n },\r\n ...\r\n)\r\n```\r\n\r\nThen installing would work with `pip install python-slugify[gpl]` or `pip install python-slugify[artistic]`. The downside is, that the default installation would fail with an `ImportError`, as neither of the `*unidecode` libs are installed.", + "author_association": "NONE", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/428221746/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/429633056", + "html_url": "https://github.com/un33k/python-slugify/pull/61#issuecomment-429633056", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/61", + "id": 429633056, + "node_id": "MDEyOklzc3VlQ29tbWVudDQyOTYzMzA1Ng==", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2018-10-14T14:57:13Z", + "updated_at": "2018-10-14T14:57:13Z", + "body": "Travis fails. files removed.", + "author_association": "OWNER", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/429633056/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/429635250", + "html_url": "https://github.com/un33k/python-slugify/issues/59#issuecomment-429635250", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/59", + "id": 429635250, + "node_id": "MDEyOklzc3VlQ29tbWVudDQyOTYzNTI1MA==", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2018-10-14T15:23:14Z", + "updated_at": "2018-10-14T15:25:11Z", + "body": "@tammoippen @tammoippen @bolkedebruin @artwr -- Yep, it seems it keeps falling on the default option during the `build`. This passed the test (Travis) as it was installing slugify from the source. That is how/why to PR got merged in. :(\r\n\r\nAt this time, there is no clean PR on this.\r\n\r\n", + "author_association": "OWNER", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/429635250/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/435494867", + "html_url": "https://github.com/un33k/python-slugify/issues/59#issuecomment-435494867", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/59", + "id": 435494867, + "node_id": "MDEyOklzc3VlQ29tbWVudDQzNTQ5NDg2Nw==", + "user": { + "login": "bolkedebruin", + "id": 4282712, + "node_id": "MDQ6VXNlcjQyODI3MTI=", + "avatar_url": "https://avatars.githubusercontent.com/u/4282712?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/bolkedebruin", + "html_url": "https://github.com/bolkedebruin", + "followers_url": "https://api.github.com/users/bolkedebruin/followers", + "following_url": "https://api.github.com/users/bolkedebruin/following{/other_user}", + "gists_url": "https://api.github.com/users/bolkedebruin/gists{/gist_id}", + "starred_url": "https://api.github.com/users/bolkedebruin/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/bolkedebruin/subscriptions", + "organizations_url": "https://api.github.com/users/bolkedebruin/orgs", + "repos_url": "https://api.github.com/users/bolkedebruin/repos", + "events_url": "https://api.github.com/users/bolkedebruin/events{/privacy}", + "received_events_url": "https://api.github.com/users/bolkedebruin/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2018-11-02T20:10:57Z", + "updated_at": "2018-11-02T20:10:57Z", + "body": "I'll try to work something out that is more resilient and pythonic. Input is definitely appreciated.", + "author_association": "CONTRIBUTOR", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/435494867/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/443027786", + "html_url": "https://github.com/un33k/python-slugify/issues/59#issuecomment-443027786", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/59", + "id": 443027786, + "node_id": "MDEyOklzc3VlQ29tbWVudDQ0MzAyNzc4Ng==", + "user": { + "login": "uneekvu", + "id": 45471690, + "node_id": "MDQ6VXNlcjQ1NDcxNjkw", + "avatar_url": "https://avatars.githubusercontent.com/u/45471690?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/uneekvu", + "html_url": "https://github.com/uneekvu", + "followers_url": "https://api.github.com/users/uneekvu/followers", + "following_url": "https://api.github.com/users/uneekvu/following{/other_user}", + "gists_url": "https://api.github.com/users/uneekvu/gists{/gist_id}", + "starred_url": "https://api.github.com/users/uneekvu/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/uneekvu/subscriptions", + "organizations_url": "https://api.github.com/users/uneekvu/orgs", + "repos_url": "https://api.github.com/users/uneekvu/repos", + "events_url": "https://api.github.com/users/uneekvu/events{/privacy}", + "received_events_url": "https://api.github.com/users/uneekvu/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2018-11-29T23:07:23Z", + "updated_at": "2018-11-29T23:09:12Z", + "body": "I'll put a permanent fix in when I push a major revision out. It will install Unidecode by default, however, it would check for `text-unidecode` first. The users that `think` they have licensing issue with `Unidecode` will install `text-unidecode` on their own via pip etc. The rest of the folks will have all they need by just installing this package.", + "author_association": "NONE", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/443027786/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/449877991", + "html_url": "https://github.com/un33k/python-slugify/pull/63#issuecomment-449877991", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/63", + "id": 449877991, + "node_id": "MDEyOklzc3VlQ29tbWVudDQ0OTg3Nzk5MQ==", + "user": { + "login": "coveralls", + "id": 2354108, + "node_id": "MDQ6VXNlcjIzNTQxMDg=", + "avatar_url": "https://avatars.githubusercontent.com/u/2354108?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/coveralls", + "html_url": "https://github.com/coveralls", + "followers_url": "https://api.github.com/users/coveralls/followers", + "following_url": "https://api.github.com/users/coveralls/following{/other_user}", + "gists_url": "https://api.github.com/users/coveralls/gists{/gist_id}", + "starred_url": "https://api.github.com/users/coveralls/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/coveralls/subscriptions", + "organizations_url": "https://api.github.com/users/coveralls/orgs", + "repos_url": "https://api.github.com/users/coveralls/repos", + "events_url": "https://api.github.com/users/coveralls/events{/privacy}", + "received_events_url": "https://api.github.com/users/coveralls/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2018-12-25T22:58:14Z", + "updated_at": "2018-12-25T23:00:08Z", + "body": "\n[![Coverage Status](https://coveralls.io/builds/20796230/badge)](https://coveralls.io/builds/20796230)\n\nCoverage decreased (-2.1%) to 92.632% when pulling **66d856996073b015e111e337eb6b604d6bc08b5b on staging** into **f4462bb64278e091011e6612feac295bf46d1136 on master**.\n", + "author_association": "NONE", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/449877991/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/449878137", + "html_url": "https://github.com/un33k/python-slugify/issues/62#issuecomment-449878137", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/62", + "id": 449878137, + "node_id": "MDEyOklzc3VlQ29tbWVudDQ0OTg3ODEzNw==", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2018-12-25T23:02:44Z", + "updated_at": "2018-12-25T23:02:44Z", + "body": "@mcarans PR [63](https://github.com/un33k/python-slugify/pull/63) addressed this.", + "author_association": "OWNER", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/449878137/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/449878276", + "html_url": "https://github.com/un33k/python-slugify/issues/59#issuecomment-449878276", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/59", + "id": 449878276, + "node_id": "MDEyOklzc3VlQ29tbWVudDQ0OTg3ODI3Ng==", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2018-12-25T23:06:41Z", + "updated_at": "2018-12-25T23:07:04Z", + "body": "@tedmiston PR [63](https://github.com/un33k/python-slugify/pull/63) addressed this. This module always prefers and attempts to install and use `Unidecode` as its default decode module. However, if it finds that `text-unidecode` is already installed, it will skip installing `Unidecode` and falls back on using `text-unidecode`. \r\n\r\nWith that said, for those who want to use `text-unidecode` for any reasons (including licensing), please make sure `text-unidecode` shows up before `python-slugify` in your requirement file.", + "author_association": "OWNER", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/449878276/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/449878544", + "html_url": "https://github.com/un33k/python-slugify/issues/52#issuecomment-449878544", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/52", + "id": 449878544, + "node_id": "MDEyOklzc3VlQ29tbWVudDQ0OTg3ODU0NA==", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2018-12-25T23:14:32Z", + "updated_at": "2018-12-25T23:14:32Z", + "body": "@bolkedebruin Please note that version 2.0.0 always prefers `Unidecode` however, it gracefully falls back on `text-unidecode` if it is already installed. (Just an FYI)", + "author_association": "OWNER", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/449878544/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/449878555", + "html_url": "https://github.com/un33k/python-slugify/issues/51#issuecomment-449878555", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/51", + "id": 449878555, + "node_id": "MDEyOklzc3VlQ29tbWVudDQ0OTg3ODU1NQ==", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2018-12-25T23:15:05Z", + "updated_at": "2018-12-25T23:15:05Z", + "body": "@haizaar Please note that version 2.0.0 always prefers Unidecode however, it gracefully falls back on text-unidecode if it is already installed. (Just an FYI)", + "author_association": "OWNER", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/449878555/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/449878573", + "html_url": "https://github.com/un33k/python-slugify/issues/49#issuecomment-449878573", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/49", + "id": 449878573, + "node_id": "MDEyOklzc3VlQ29tbWVudDQ0OTg3ODU3Mw==", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2018-12-25T23:15:40Z", + "updated_at": "2018-12-25T23:15:40Z", + "body": "@NiklasMM Please note that version 2.0.0 always prefers Unidecode however, it gracefully falls back on text-unidecode if it is already installed. (Just an FYI)", + "author_association": "OWNER", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/449878573/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/449878593", + "html_url": "https://github.com/un33k/python-slugify/issues/50#issuecomment-449878593", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/50", + "id": 449878593, + "node_id": "MDEyOklzc3VlQ29tbWVudDQ0OTg3ODU5Mw==", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2018-12-25T23:16:17Z", + "updated_at": "2018-12-25T23:16:17Z", + "body": "@bolkedebruin Please note that version 2.0.0 always prefers Unidecode however, it gracefully falls back on text-unidecode if it is already installed. (Just an FYI)", + "author_association": "OWNER", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/449878593/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/449878611", + "html_url": "https://github.com/un33k/python-slugify/issues/7#issuecomment-449878611", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/7", + "id": 449878611, + "node_id": "MDEyOklzc3VlQ29tbWVudDQ0OTg3ODYxMQ==", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2018-12-25T23:16:42Z", + "updated_at": "2018-12-25T23:16:42Z", + "body": "@sekrause Please note that version 2.0.0 always prefers Unidecode however, it gracefully falls back on text-unidecode if it is already installed. (Just an FYI)", + "author_association": "OWNER", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/449878611/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/449906131", + "html_url": "https://github.com/un33k/python-slugify/issues/59#issuecomment-449906131", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/59", + "id": 449906131, + "node_id": "MDEyOklzc3VlQ29tbWVudDQ0OTkwNjEzMQ==", + "user": { + "login": "bolkedebruin", + "id": 4282712, + "node_id": "MDQ6VXNlcjQyODI3MTI=", + "avatar_url": "https://avatars.githubusercontent.com/u/4282712?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/bolkedebruin", + "html_url": "https://github.com/bolkedebruin", + "followers_url": "https://api.github.com/users/bolkedebruin/followers", + "following_url": "https://api.github.com/users/bolkedebruin/following{/other_user}", + "gists_url": "https://api.github.com/users/bolkedebruin/gists{/gist_id}", + "starred_url": "https://api.github.com/users/bolkedebruin/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/bolkedebruin/subscriptions", + "organizations_url": "https://api.github.com/users/bolkedebruin/orgs", + "repos_url": "https://api.github.com/users/bolkedebruin/repos", + "events_url": "https://api.github.com/users/bolkedebruin/events{/privacy}", + "received_events_url": "https://api.github.com/users/bolkedebruin/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2018-12-26T05:23:40Z", + "updated_at": "2018-12-26T05:23:40Z", + "body": "@un33k Thanks for this! It's (hopefully) a much cleaner solution. I'll check how this works out for us.", + "author_association": "CONTRIBUTOR", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/449906131/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/450534846", + "html_url": "https://github.com/un33k/python-slugify/pull/64#issuecomment-450534846", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/64", + "id": 450534846, + "node_id": "MDEyOklzc3VlQ29tbWVudDQ1MDUzNDg0Ng==", + "user": { + "login": "coveralls", + "id": 2354108, + "node_id": "MDQ6VXNlcjIzNTQxMDg=", + "avatar_url": "https://avatars.githubusercontent.com/u/2354108?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/coveralls", + "html_url": "https://github.com/coveralls", + "followers_url": "https://api.github.com/users/coveralls/followers", + "following_url": "https://api.github.com/users/coveralls/following{/other_user}", + "gists_url": "https://api.github.com/users/coveralls/gists{/gist_id}", + "starred_url": "https://api.github.com/users/coveralls/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/coveralls/subscriptions", + "organizations_url": "https://api.github.com/users/coveralls/orgs", + "repos_url": "https://api.github.com/users/coveralls/repos", + "events_url": "https://api.github.com/users/coveralls/events{/privacy}", + "received_events_url": "https://api.github.com/users/coveralls/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2018-12-30T02:26:17Z", + "updated_at": "2018-12-30T02:26:54Z", + "body": "\n[![Coverage Status](https://coveralls.io/builds/20840681/badge)](https://coveralls.io/builds/20840681)\n\nCoverage remained the same at 92.632% when pulling **334142359ad9ba666fd9d2e3b56555d4058a35e5 on theotheo:patch-1** into **fb869bdad9023916eede6cf0215bb90893df0dcf on un33k:master**.\n", + "author_association": "NONE", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/450534846/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/450534845", + "html_url": "https://github.com/un33k/python-slugify/pull/64#issuecomment-450534845", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/64", + "id": 450534845, + "node_id": "MDEyOklzc3VlQ29tbWVudDQ1MDUzNDg0NQ==", + "user": { + "login": "coveralls", + "id": 2354108, + "node_id": "MDQ6VXNlcjIzNTQxMDg=", + "avatar_url": "https://avatars.githubusercontent.com/u/2354108?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/coveralls", + "html_url": "https://github.com/coveralls", + "followers_url": "https://api.github.com/users/coveralls/followers", + "following_url": "https://api.github.com/users/coveralls/following{/other_user}", + "gists_url": "https://api.github.com/users/coveralls/gists{/gist_id}", + "starred_url": "https://api.github.com/users/coveralls/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/coveralls/subscriptions", + "organizations_url": "https://api.github.com/users/coveralls/orgs", + "repos_url": "https://api.github.com/users/coveralls/repos", + "events_url": "https://api.github.com/users/coveralls/events{/privacy}", + "received_events_url": "https://api.github.com/users/coveralls/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2018-12-30T02:26:17Z", + "updated_at": "2018-12-30T02:26:17Z", + "body": "\n[![Coverage Status](https://coveralls.io/builds/20840681/badge)](https://coveralls.io/builds/20840681)\n\nCoverage remained the same at 92.632% when pulling **334142359ad9ba666fd9d2e3b56555d4058a35e5 on theotheo:patch-1** into **fb869bdad9023916eede6cf0215bb90893df0dcf on un33k:master**.\n", + "author_association": "NONE", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/450534845/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/450535781", + "html_url": "https://github.com/un33k/python-slugify/pull/64#issuecomment-450535781", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/64", + "id": 450535781, + "node_id": "MDEyOklzc3VlQ29tbWVudDQ1MDUzNTc4MQ==", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2018-12-30T02:57:53Z", + "updated_at": "2018-12-30T02:57:53Z", + "body": "thx", + "author_association": "OWNER", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/450535781/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/450921523", + "html_url": "https://github.com/un33k/python-slugify/pull/65#issuecomment-450921523", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/65", + "id": 450921523, + "node_id": "MDEyOklzc3VlQ29tbWVudDQ1MDkyMTUyMw==", + "user": { + "login": "coveralls", + "id": 2354108, + "node_id": "MDQ6VXNlcjIzNTQxMDg=", + "avatar_url": "https://avatars.githubusercontent.com/u/2354108?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/coveralls", + "html_url": "https://github.com/coveralls", + "followers_url": "https://api.github.com/users/coveralls/followers", + "following_url": "https://api.github.com/users/coveralls/following{/other_user}", + "gists_url": "https://api.github.com/users/coveralls/gists{/gist_id}", + "starred_url": "https://api.github.com/users/coveralls/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/coveralls/subscriptions", + "organizations_url": "https://api.github.com/users/coveralls/orgs", + "repos_url": "https://api.github.com/users/coveralls/repos", + "events_url": "https://api.github.com/users/coveralls/events{/privacy}", + "received_events_url": "https://api.github.com/users/coveralls/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2019-01-02T17:04:03Z", + "updated_at": "2019-01-02T17:04:03Z", + "body": "\n[![Coverage Status](https://coveralls.io/builds/20870845/badge)](https://coveralls.io/builds/20870845)\n\nCoverage decreased (-4.9%) to 87.755% when pulling **5482a4419e139aba8eade80c6807bc6500dd8c40 on andriyor:master** into **683364ea0f4637364b84486ef24124ece0e0597c on un33k:master**.\n", + "author_association": "NONE", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/450921523/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/450921531", + "html_url": "https://github.com/un33k/python-slugify/pull/65#issuecomment-450921531", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/65", + "id": 450921531, + "node_id": "MDEyOklzc3VlQ29tbWVudDQ1MDkyMTUzMQ==", + "user": { + "login": "coveralls", + "id": 2354108, + "node_id": "MDQ6VXNlcjIzNTQxMDg=", + "avatar_url": "https://avatars.githubusercontent.com/u/2354108?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/coveralls", + "html_url": "https://github.com/coveralls", + "followers_url": "https://api.github.com/users/coveralls/followers", + "following_url": "https://api.github.com/users/coveralls/following{/other_user}", + "gists_url": "https://api.github.com/users/coveralls/gists{/gist_id}", + "starred_url": "https://api.github.com/users/coveralls/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/coveralls/subscriptions", + "organizations_url": "https://api.github.com/users/coveralls/orgs", + "repos_url": "https://api.github.com/users/coveralls/repos", + "events_url": "https://api.github.com/users/coveralls/events{/privacy}", + "received_events_url": "https://api.github.com/users/coveralls/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2019-01-02T17:04:04Z", + "updated_at": "2019-01-02T22:45:27Z", + "body": "\n[![Coverage Status](https://coveralls.io/builds/20875106/badge)](https://coveralls.io/builds/20875106)\n\nCoverage decreased (-4.9%) to 87.755% when pulling **87e0d11734b135db3cf109e35409a5863c389ea0 on andriyor:master** into **683364ea0f4637364b84486ef24124ece0e0597c on un33k:master**.\n", + "author_association": "NONE", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/450921531/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/450936218", + "html_url": "https://github.com/un33k/python-slugify/pull/65#issuecomment-450936218", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/65", + "id": 450936218, + "node_id": "MDEyOklzc3VlQ29tbWVudDQ1MDkzNjIxOA==", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2019-01-02T18:03:04Z", + "updated_at": "2019-01-02T18:03:28Z", + "body": "@andriyor Thanks for your contribution. Could you verify on why the coverage % was decreased. \r\n\r\nAlso, could you rename `custom_replacements` to `replacements`? \r\n\r\nThx", + "author_association": "OWNER", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/450936218/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/451087796", + "html_url": "https://github.com/un33k/python-slugify/pull/65#issuecomment-451087796", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/65", + "id": 451087796, + "node_id": "MDEyOklzc3VlQ29tbWVudDQ1MTA4Nzc5Ng==", + "user": { + "login": "andriyor", + "id": 11459840, + "node_id": "MDQ6VXNlcjExNDU5ODQw", + "avatar_url": "https://avatars.githubusercontent.com/u/11459840?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/andriyor", + "html_url": "https://github.com/andriyor", + "followers_url": "https://api.github.com/users/andriyor/followers", + "following_url": "https://api.github.com/users/andriyor/following{/other_user}", + "gists_url": "https://api.github.com/users/andriyor/gists{/gist_id}", + "starred_url": "https://api.github.com/users/andriyor/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/andriyor/subscriptions", + "organizations_url": "https://api.github.com/users/andriyor/orgs", + "repos_url": "https://api.github.com/users/andriyor/repos", + "events_url": "https://api.github.com/users/andriyor/events{/privacy}", + "received_events_url": "https://api.github.com/users/andriyor/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2019-01-03T09:11:07Z", + "updated_at": "2019-01-03T09:11:07Z", + "body": "I can't say exactly why coverage was decreased.\r\nBut i run coverage locally on latest commit in master and i also get 88%\r\nPerhaps this is due to updating the version of coverage.\r\nAlso yesterday there were issues with Travis https://www.traviscistatus.com/#past-incidents\r\nThat is why build on python3.4 have failed ", + "author_association": "CONTRIBUTOR", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/451087796/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/451151112", + "html_url": "https://github.com/un33k/python-slugify/pull/65#issuecomment-451151112", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/65", + "id": 451151112, + "node_id": "MDEyOklzc3VlQ29tbWVudDQ1MTE1MTExMg==", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2019-01-03T14:01:51Z", + "updated_at": "2019-01-03T14:01:51Z", + "body": "In this case, please issue a pull request against the `development` branch instead. I'll accept it and take care of the coverage and failures in the development branch, then push to masters. ", + "author_association": "OWNER", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/451151112/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/451172715", + "html_url": "https://github.com/un33k/python-slugify/pull/66#issuecomment-451172715", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/66", + "id": 451172715, + "node_id": "MDEyOklzc3VlQ29tbWVudDQ1MTE3MjcxNQ==", + "user": { + "login": "coveralls", + "id": 2354108, + "node_id": "MDQ6VXNlcjIzNTQxMDg=", + "avatar_url": "https://avatars.githubusercontent.com/u/2354108?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/coveralls", + "html_url": "https://github.com/coveralls", + "followers_url": "https://api.github.com/users/coveralls/followers", + "following_url": "https://api.github.com/users/coveralls/following{/other_user}", + "gists_url": "https://api.github.com/users/coveralls/gists{/gist_id}", + "starred_url": "https://api.github.com/users/coveralls/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/coveralls/subscriptions", + "organizations_url": "https://api.github.com/users/coveralls/orgs", + "repos_url": "https://api.github.com/users/coveralls/repos", + "events_url": "https://api.github.com/users/coveralls/events{/privacy}", + "received_events_url": "https://api.github.com/users/coveralls/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2019-01-03T15:15:24Z", + "updated_at": "2019-01-03T15:15:24Z", + "body": "\n[![Coverage Status](https://coveralls.io/builds/20887496/badge)](https://coveralls.io/builds/20887496)\n\nCoverage decreased (-4.9%) to 87.755% when pulling **74288eb0a84ea6526a21f0d148c5c6cf6a12fb3a on andriyor:development** into **c357ee590b2e799e62229e656e566cc9b7298498 on un33k:development**.\n", + "author_association": "NONE", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/451172715/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/451172723", + "html_url": "https://github.com/un33k/python-slugify/pull/66#issuecomment-451172723", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/66", + "id": 451172723, + "node_id": "MDEyOklzc3VlQ29tbWVudDQ1MTE3MjcyMw==", + "user": { + "login": "coveralls", + "id": 2354108, + "node_id": "MDQ6VXNlcjIzNTQxMDg=", + "avatar_url": "https://avatars.githubusercontent.com/u/2354108?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/coveralls", + "html_url": "https://github.com/coveralls", + "followers_url": "https://api.github.com/users/coveralls/followers", + "following_url": "https://api.github.com/users/coveralls/following{/other_user}", + "gists_url": "https://api.github.com/users/coveralls/gists{/gist_id}", + "starred_url": "https://api.github.com/users/coveralls/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/coveralls/subscriptions", + "organizations_url": "https://api.github.com/users/coveralls/orgs", + "repos_url": "https://api.github.com/users/coveralls/repos", + "events_url": "https://api.github.com/users/coveralls/events{/privacy}", + "received_events_url": "https://api.github.com/users/coveralls/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2019-01-03T15:15:24Z", + "updated_at": "2019-01-03T15:17:19Z", + "body": "\n[![Coverage Status](https://coveralls.io/builds/20887496/badge)](https://coveralls.io/builds/20887496)\n\nCoverage increased (+0.2%) to 92.857% when pulling **74288eb0a84ea6526a21f0d148c5c6cf6a12fb3a on andriyor:development** into **c357ee590b2e799e62229e656e566cc9b7298498 on un33k:development**.\n", + "author_association": "NONE", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/451172723/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/451197253", + "html_url": "https://github.com/un33k/python-slugify/pull/66#issuecomment-451197253", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/66", + "id": 451197253, + "node_id": "MDEyOklzc3VlQ29tbWVudDQ1MTE5NzI1Mw==", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2019-01-03T16:29:52Z", + "updated_at": "2019-01-03T16:29:52Z", + "body": "Thx, it will be pushed in the next release ", + "author_association": "OWNER", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/451197253/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/451305865", + "html_url": "https://github.com/un33k/python-slugify/pull/67#issuecomment-451305865", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/67", + "id": 451305865, + "node_id": "MDEyOklzc3VlQ29tbWVudDQ1MTMwNTg2NQ==", + "user": { + "login": "coveralls", + "id": 2354108, + "node_id": "MDQ6VXNlcjIzNTQxMDg=", + "avatar_url": "https://avatars.githubusercontent.com/u/2354108?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/coveralls", + "html_url": "https://github.com/coveralls", + "followers_url": "https://api.github.com/users/coveralls/followers", + "following_url": "https://api.github.com/users/coveralls/following{/other_user}", + "gists_url": "https://api.github.com/users/coveralls/gists{/gist_id}", + "starred_url": "https://api.github.com/users/coveralls/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/coveralls/subscriptions", + "organizations_url": "https://api.github.com/users/coveralls/orgs", + "repos_url": "https://api.github.com/users/coveralls/repos", + "events_url": "https://api.github.com/users/coveralls/events{/privacy}", + "received_events_url": "https://api.github.com/users/coveralls/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2019-01-03T23:03:19Z", + "updated_at": "2019-01-03T23:21:54Z", + "body": "\n[![Coverage Status](https://coveralls.io/builds/20895740/badge)](https://coveralls.io/builds/20895740)\n\nCoverage increased (+0.4%) to 93.069% when pulling **8aea5c49b960b66e5c81bf20f17ec23e41c8d157 on staging** into **683364ea0f4637364b84486ef24124ece0e0597c on master**.\n", + "author_association": "NONE", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/451305865/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/453166182", + "html_url": "https://github.com/un33k/python-slugify/issues/69#issuecomment-453166182", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/69", + "id": 453166182, + "node_id": "MDEyOklzc3VlQ29tbWVudDQ1MzE2NjE4Mg==", + "user": { + "login": "grandrew", + "id": 243218, + "node_id": "MDQ6VXNlcjI0MzIxOA==", + "avatar_url": "https://avatars.githubusercontent.com/u/243218?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/grandrew", + "html_url": "https://github.com/grandrew", + "followers_url": "https://api.github.com/users/grandrew/followers", + "following_url": "https://api.github.com/users/grandrew/following{/other_user}", + "gists_url": "https://api.github.com/users/grandrew/gists{/gist_id}", + "starred_url": "https://api.github.com/users/grandrew/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/grandrew/subscriptions", + "organizations_url": "https://api.github.com/users/grandrew/orgs", + "repos_url": "https://api.github.com/users/grandrew/repos", + "events_url": "https://api.github.com/users/grandrew/events{/privacy}", + "received_events_url": "https://api.github.com/users/grandrew/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2019-01-10T16:46:05Z", + "updated_at": "2019-01-10T16:46:05Z", + "body": "workaround:\r\n\r\n```\r\nfrom slugify import slugify as slugify_orig\r\n\r\ndef slugify(s):\r\n return str(slugify_orig(unicode(s)))\r\n\r\n```", + "author_association": "NONE", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/453166182/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/453633100", + "html_url": "https://github.com/un33k/python-slugify/issues/68#issuecomment-453633100", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/68", + "id": 453633100, + "node_id": "MDEyOklzc3VlQ29tbWVudDQ1MzYzMzEwMA==", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2019-01-11T19:37:19Z", + "updated_at": "2019-01-11T19:39:11Z", + "body": "@roniemartinez In this ([PR](https://github.com/un33k/python-slugify/pull/63)) I made a change that allows the swap of the underlying decode module.\r\n\r\nWe need at least one decoding module to be installed as they are not optional or extras.\r\nWe need to allow for `pip install python-slugify`.\r\n\r\nIf you find a way to allow the default installation, as well as optional installation, please send me a PR.\r\nThx", + "author_association": "OWNER", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/453633100/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/453639383", + "html_url": "https://github.com/un33k/python-slugify/issues/69#issuecomment-453639383", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/69", + "id": 453639383, + "node_id": "MDEyOklzc3VlQ29tbWVudDQ1MzYzOTM4Mw==", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2019-01-11T20:00:26Z", + "updated_at": "2019-01-11T20:00:26Z", + "body": "@grandrew happy debugging and pls raise a PR if you find a bug/fix. thx", + "author_association": "OWNER", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/453639383/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/453747148", + "html_url": "https://github.com/un33k/python-slugify/issues/68#issuecomment-453747148", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/68", + "id": 453747148, + "node_id": "MDEyOklzc3VlQ29tbWVudDQ1Mzc0NzE0OA==", + "user": { + "login": "roniemartinez", + "id": 2573537, + "node_id": "MDQ6VXNlcjI1NzM1Mzc=", + "avatar_url": "https://avatars.githubusercontent.com/u/2573537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/roniemartinez", + "html_url": "https://github.com/roniemartinez", + "followers_url": "https://api.github.com/users/roniemartinez/followers", + "following_url": "https://api.github.com/users/roniemartinez/following{/other_user}", + "gists_url": "https://api.github.com/users/roniemartinez/gists{/gist_id}", + "starred_url": "https://api.github.com/users/roniemartinez/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/roniemartinez/subscriptions", + "organizations_url": "https://api.github.com/users/roniemartinez/orgs", + "repos_url": "https://api.github.com/users/roniemartinez/repos", + "events_url": "https://api.github.com/users/roniemartinez/events{/privacy}", + "received_events_url": "https://api.github.com/users/roniemartinez/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2019-01-12T13:23:06Z", + "updated_at": "2019-01-12T13:23:06Z", + "body": "The trick is to use a custom `cmdclass` though there are 2 limitations:\r\n- It does not work using `easy_install`\r\n- It does not work on wheels, only when distributed using `sdist`\r\n\r\nI am afraid I can't immediately create a PR since I made a lot of changes according to my personal preference:\r\n- Deploy from Travis CI\r\n- Added Appveyor Integration\r\n- Used pytest\r\n- Used CodeCov\r\n\r\nI made a fork, [python-slugify2](https://github.com/roniemartinez/python-slugify2) but don't worry I retained the license.\r\n\r\n", + "author_association": "NONE", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/453747148/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/453753923", + "html_url": "https://github.com/un33k/python-slugify/issues/68#issuecomment-453753923", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/68", + "id": 453753923, + "node_id": "MDEyOklzc3VlQ29tbWVudDQ1Mzc1MzkyMw==", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2019-01-12T14:58:19Z", + "updated_at": "2019-01-12T14:58:33Z", + "body": "@roniemartinez The `python-slugify` namespace is part of licensing. You should not make version 2,3 for an actively maintained packages.", + "author_association": "OWNER", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/453753923/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/457989063", + "html_url": "https://github.com/un33k/python-slugify/issues/70#issuecomment-457989063", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/70", + "id": 457989063, + "node_id": "MDEyOklzc3VlQ29tbWVudDQ1Nzk4OTA2Mw==", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2019-01-28T03:31:50Z", + "updated_at": "2019-01-28T03:31:50Z", + "body": "@bolkedebruin I have tested it and it works. Please provide exact env to reproduce this. \r\n\r\nOS, version\r\npip version \r\npython version\r\n\r\n", + "author_association": "OWNER", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/457989063/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/466579477", + "html_url": "https://github.com/un33k/python-slugify/pull/71#issuecomment-466579477", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/71", + "id": 466579477, + "node_id": "MDEyOklzc3VlQ29tbWVudDQ2NjU3OTQ3Nw==", + "user": { + "login": "coveralls", + "id": 2354108, + "node_id": "MDQ6VXNlcjIzNTQxMDg=", + "avatar_url": "https://avatars.githubusercontent.com/u/2354108?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/coveralls", + "html_url": "https://github.com/coveralls", + "followers_url": "https://api.github.com/users/coveralls/followers", + "following_url": "https://api.github.com/users/coveralls/following{/other_user}", + "gists_url": "https://api.github.com/users/coveralls/gists{/gist_id}", + "starred_url": "https://api.github.com/users/coveralls/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/coveralls/subscriptions", + "organizations_url": "https://api.github.com/users/coveralls/orgs", + "repos_url": "https://api.github.com/users/coveralls/repos", + "events_url": "https://api.github.com/users/coveralls/events{/privacy}", + "received_events_url": "https://api.github.com/users/coveralls/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2019-02-22T23:05:09Z", + "updated_at": "2019-02-22T23:05:10Z", + "body": "\n[![Coverage Status](https://coveralls.io/builds/21802187/badge)](https://coveralls.io/builds/21802187)\n\nCoverage increased (+2.0%) to 95.05% when pulling **7addc366c4187d558bce3c719333936a6974fcc1 on sandbox** into **8aea5c49b960b66e5c81bf20f17ec23e41c8d157 on development**.\n", + "author_association": "NONE", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/466579477/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/467236870", + "html_url": "https://github.com/un33k/python-slugify/pull/72#issuecomment-467236870", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/72", + "id": 467236870, + "node_id": "MDEyOklzc3VlQ29tbWVudDQ2NzIzNjg3MA==", + "user": { + "login": "coveralls", + "id": 2354108, + "node_id": "MDQ6VXNlcjIzNTQxMDg=", + "avatar_url": "https://avatars.githubusercontent.com/u/2354108?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/coveralls", + "html_url": "https://github.com/coveralls", + "followers_url": "https://api.github.com/users/coveralls/followers", + "following_url": "https://api.github.com/users/coveralls/following{/other_user}", + "gists_url": "https://api.github.com/users/coveralls/gists{/gist_id}", + "starred_url": "https://api.github.com/users/coveralls/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/coveralls/subscriptions", + "organizations_url": "https://api.github.com/users/coveralls/orgs", + "repos_url": "https://api.github.com/users/coveralls/repos", + "events_url": "https://api.github.com/users/coveralls/events{/privacy}", + "received_events_url": "https://api.github.com/users/coveralls/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2019-02-26T00:09:23Z", + "updated_at": "2019-02-26T00:09:25Z", + "body": "\n[![Coverage Status](https://coveralls.io/builds/21844210/badge)](https://coveralls.io/builds/21844210)\n\nCoverage increased (+2.0%) to 95.05% when pulling **f6c7ead98a65bcf4047e629f0071591b18e70d99 on development** into **8aea5c49b960b66e5c81bf20f17ec23e41c8d157 on staging**.\n", + "author_association": "NONE", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/467236870/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/467412492", + "html_url": "https://github.com/un33k/python-slugify/issues/70#issuecomment-467412492", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/70", + "id": 467412492, + "node_id": "MDEyOklzc3VlQ29tbWVudDQ2NzQxMjQ5Mg==", + "user": { + "login": "insysion", + "id": 662294, + "node_id": "MDQ6VXNlcjY2MjI5NA==", + "avatar_url": "https://avatars.githubusercontent.com/u/662294?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/insysion", + "html_url": "https://github.com/insysion", + "followers_url": "https://api.github.com/users/insysion/followers", + "following_url": "https://api.github.com/users/insysion/following{/other_user}", + "gists_url": "https://api.github.com/users/insysion/gists{/gist_id}", + "starred_url": "https://api.github.com/users/insysion/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/insysion/subscriptions", + "organizations_url": "https://api.github.com/users/insysion/orgs", + "repos_url": "https://api.github.com/users/insysion/repos", + "events_url": "https://api.github.com/users/insysion/events{/privacy}", + "received_events_url": "https://api.github.com/users/insysion/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2019-02-26T12:03:20Z", + "updated_at": "2019-02-26T12:03:20Z", + "body": "@un33k We're getting the a similar problem within (and only within) a `pipenv lock` process (and only on a specific machine!). It's proving a nightmare to debug. No doubt this is not due to any bug on your part but rather the interplay of many factors.\r\n\r\nIt could, however, be solved if you were using a more standard installation paradigm. I understand why you rejected the `extras_require` approach of https://github.com/un33k/python-slugify/issues/68. But what if `text-unidecode` were the default and *always required* backend?\r\n\r\nIt's a tiny-package with a permissive license. It's hard to see any users of `slugify[unidecode]` objecting to having it installed redundantly. Whereas the ramifications of incidentally installing `unidecode` by accident are quite serious for a business.\r\n\r\nHappy to raise a PR if that's an approach you'd endorse.", + "author_association": "NONE", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/467412492/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/467416610", + "html_url": "https://github.com/un33k/python-slugify/issues/70#issuecomment-467416610", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/70", + "id": 467416610, + "node_id": "MDEyOklzc3VlQ29tbWVudDQ2NzQxNjYxMA==", + "user": { + "login": "insysion", + "id": 662294, + "node_id": "MDQ6VXNlcjY2MjI5NA==", + "avatar_url": "https://avatars.githubusercontent.com/u/662294?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/insysion", + "html_url": "https://github.com/insysion", + "followers_url": "https://api.github.com/users/insysion/followers", + "following_url": "https://api.github.com/users/insysion/following{/other_user}", + "gists_url": "https://api.github.com/users/insysion/gists{/gist_id}", + "starred_url": "https://api.github.com/users/insysion/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/insysion/subscriptions", + "organizations_url": "https://api.github.com/users/insysion/orgs", + "repos_url": "https://api.github.com/users/insysion/repos", + "events_url": "https://api.github.com/users/insysion/events{/privacy}", + "received_events_url": "https://api.github.com/users/insysion/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2019-02-26T12:17:41Z", + "updated_at": "2019-02-26T12:17:41Z", + "body": "...and I've just seen https://github.com/un33k/python-slugify/pull/72 colour me very happy :)", + "author_association": "NONE", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/467416610/reactions", + "total_count": 1, + "+1": 0, + "-1": 0, + "laugh": 1, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/469039916", + "html_url": "https://github.com/un33k/python-slugify/pull/73#issuecomment-469039916", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/73", + "id": 469039916, + "node_id": "MDEyOklzc3VlQ29tbWVudDQ2OTAzOTkxNg==", + "user": { + "login": "coveralls", + "id": 2354108, + "node_id": "MDQ6VXNlcjIzNTQxMDg=", + "avatar_url": "https://avatars.githubusercontent.com/u/2354108?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/coveralls", + "html_url": "https://github.com/coveralls", + "followers_url": "https://api.github.com/users/coveralls/followers", + "following_url": "https://api.github.com/users/coveralls/following{/other_user}", + "gists_url": "https://api.github.com/users/coveralls/gists{/gist_id}", + "starred_url": "https://api.github.com/users/coveralls/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/coveralls/subscriptions", + "organizations_url": "https://api.github.com/users/coveralls/orgs", + "repos_url": "https://api.github.com/users/coveralls/repos", + "events_url": "https://api.github.com/users/coveralls/events{/privacy}", + "received_events_url": "https://api.github.com/users/coveralls/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2019-03-03T16:41:02Z", + "updated_at": "2019-03-03T16:44:15Z", + "body": "\n[![Coverage Status](https://coveralls.io/builds/21956414/badge)](https://coveralls.io/builds/21956414)\n\nCoverage decreased (-1.0%) to 92.079% when pulling **cbfd00c343c7b4216248f9d8392d688ae61f29be on staging** into **1340320455f7201117ac3970c0facf5d1e0f8767 on master**.\n", + "author_association": "NONE", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/469039916/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/469039917", + "html_url": "https://github.com/un33k/python-slugify/pull/73#issuecomment-469039917", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/73", + "id": 469039917, + "node_id": "MDEyOklzc3VlQ29tbWVudDQ2OTAzOTkxNw==", + "user": { + "login": "coveralls", + "id": 2354108, + "node_id": "MDQ6VXNlcjIzNTQxMDg=", + "avatar_url": "https://avatars.githubusercontent.com/u/2354108?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/coveralls", + "html_url": "https://github.com/coveralls", + "followers_url": "https://api.github.com/users/coveralls/followers", + "following_url": "https://api.github.com/users/coveralls/following{/other_user}", + "gists_url": "https://api.github.com/users/coveralls/gists{/gist_id}", + "starred_url": "https://api.github.com/users/coveralls/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/coveralls/subscriptions", + "organizations_url": "https://api.github.com/users/coveralls/orgs", + "repos_url": "https://api.github.com/users/coveralls/repos", + "events_url": "https://api.github.com/users/coveralls/events{/privacy}", + "received_events_url": "https://api.github.com/users/coveralls/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2019-03-03T16:41:02Z", + "updated_at": "2019-03-03T16:41:02Z", + "body": "\n[![Coverage Status](https://coveralls.io/builds/21956414/badge)](https://coveralls.io/builds/21956414)\n\nCoverage decreased (-1.0%) to 92.079% when pulling **cbfd00c343c7b4216248f9d8392d688ae61f29be on staging** into **1340320455f7201117ac3970c0facf5d1e0f8767 on master**.\n", + "author_association": "NONE", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/469039917/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/469046072", + "html_url": "https://github.com/un33k/python-slugify/issues/70#issuecomment-469046072", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/70", + "id": 469046072, + "node_id": "MDEyOklzc3VlQ29tbWVudDQ2OTA0NjA3Mg==", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2019-03-03T17:44:17Z", + "updated_at": "2019-03-03T17:44:17Z", + "body": "Version 3.0 promotes `text-unidecode` to primary decoding api. https://github.com/un33k/python-slugify/pull/73", + "author_association": "OWNER", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/469046072/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/471820348", + "html_url": "https://github.com/un33k/python-slugify/pull/74#issuecomment-471820348", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/74", + "id": 471820348, + "node_id": "MDEyOklzc3VlQ29tbWVudDQ3MTgyMDM0OA==", + "user": { + "login": "coveralls", + "id": 2354108, + "node_id": "MDQ6VXNlcjIzNTQxMDg=", + "avatar_url": "https://avatars.githubusercontent.com/u/2354108?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/coveralls", + "html_url": "https://github.com/coveralls", + "followers_url": "https://api.github.com/users/coveralls/followers", + "following_url": "https://api.github.com/users/coveralls/following{/other_user}", + "gists_url": "https://api.github.com/users/coveralls/gists{/gist_id}", + "starred_url": "https://api.github.com/users/coveralls/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/coveralls/subscriptions", + "organizations_url": "https://api.github.com/users/coveralls/orgs", + "repos_url": "https://api.github.com/users/coveralls/repos", + "events_url": "https://api.github.com/users/coveralls/events{/privacy}", + "received_events_url": "https://api.github.com/users/coveralls/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2019-03-12T02:08:03Z", + "updated_at": "2019-03-12T02:08:03Z", + "body": "\n[![Coverage Status](https://coveralls.io/builds/22119962/badge)](https://coveralls.io/builds/22119962)\n\nCoverage remained the same at 92.079% when pulling **be2ea483d847831d4cd5d11ca6f31e806dde5a37 on jayvdb:patch-1** into **b8be7d69119dcceb9a3e0ce64a509415737190ac on un33k:master**.\n", + "author_association": "NONE", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/471820348/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/471820350", + "html_url": "https://github.com/un33k/python-slugify/pull/74#issuecomment-471820350", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/74", + "id": 471820350, + "node_id": "MDEyOklzc3VlQ29tbWVudDQ3MTgyMDM1MA==", + "user": { + "login": "coveralls", + "id": 2354108, + "node_id": "MDQ6VXNlcjIzNTQxMDg=", + "avatar_url": "https://avatars.githubusercontent.com/u/2354108?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/coveralls", + "html_url": "https://github.com/coveralls", + "followers_url": "https://api.github.com/users/coveralls/followers", + "following_url": "https://api.github.com/users/coveralls/following{/other_user}", + "gists_url": "https://api.github.com/users/coveralls/gists{/gist_id}", + "starred_url": "https://api.github.com/users/coveralls/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/coveralls/subscriptions", + "organizations_url": "https://api.github.com/users/coveralls/orgs", + "repos_url": "https://api.github.com/users/coveralls/repos", + "events_url": "https://api.github.com/users/coveralls/events{/privacy}", + "received_events_url": "https://api.github.com/users/coveralls/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2019-03-12T02:08:04Z", + "updated_at": "2019-03-12T02:08:21Z", + "body": "\n[![Coverage Status](https://coveralls.io/builds/22119962/badge)](https://coveralls.io/builds/22119962)\n\nCoverage remained the same at 92.079% when pulling **be2ea483d847831d4cd5d11ca6f31e806dde5a37 on jayvdb:patch-1** into **b8be7d69119dcceb9a3e0ce64a509415737190ac on un33k:master**.\n", + "author_association": "NONE", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/471820350/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/475874493", + "html_url": "https://github.com/un33k/python-slugify/pull/74#issuecomment-475874493", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/74", + "id": 475874493, + "node_id": "MDEyOklzc3VlQ29tbWVudDQ3NTg3NDQ5Mw==", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2019-03-23T14:30:42Z", + "updated_at": "2019-03-23T14:30:42Z", + "body": "Usure why you want the test file in the final package?", + "author_association": "OWNER", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/475874493/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/475990998", + "html_url": "https://github.com/un33k/python-slugify/pull/74#issuecomment-475990998", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/74", + "id": 475990998, + "node_id": "MDEyOklzc3VlQ29tbWVudDQ3NTk5MDk5OA==", + "user": { + "login": "jayvdb", + "id": 15092, + "node_id": "MDQ6VXNlcjE1MDky", + "avatar_url": "https://avatars.githubusercontent.com/u/15092?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/jayvdb", + "html_url": "https://github.com/jayvdb", + "followers_url": "https://api.github.com/users/jayvdb/followers", + "following_url": "https://api.github.com/users/jayvdb/following{/other_user}", + "gists_url": "https://api.github.com/users/jayvdb/gists{/gist_id}", + "starred_url": "https://api.github.com/users/jayvdb/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/jayvdb/subscriptions", + "organizations_url": "https://api.github.com/users/jayvdb/orgs", + "repos_url": "https://api.github.com/users/jayvdb/repos", + "events_url": "https://api.github.com/users/jayvdb/events{/privacy}", + "received_events_url": "https://api.github.com/users/jayvdb/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2019-03-24T19:23:16Z", + "updated_at": "2019-03-24T19:23:16Z", + "body": "See my explanation at https://github.com/thumbor/thumbor/pull/1179 .\r\n\r\nThe sdist is the source distribution.\r\n\r\nIt is the wheel which shouldnt include the extra unnecessary stuff.", + "author_association": "CONTRIBUTOR", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/475990998/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/476470565", + "html_url": "https://github.com/un33k/python-slugify/pull/74#issuecomment-476470565", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/74", + "id": 476470565, + "node_id": "MDEyOklzc3VlQ29tbWVudDQ3NjQ3MDU2NQ==", + "user": { + "login": "jayvdb", + "id": 15092, + "node_id": "MDQ6VXNlcjE1MDky", + "avatar_url": "https://avatars.githubusercontent.com/u/15092?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/jayvdb", + "html_url": "https://github.com/jayvdb", + "followers_url": "https://api.github.com/users/jayvdb/followers", + "following_url": "https://api.github.com/users/jayvdb/following{/other_user}", + "gists_url": "https://api.github.com/users/jayvdb/gists{/gist_id}", + "starred_url": "https://api.github.com/users/jayvdb/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/jayvdb/subscriptions", + "organizations_url": "https://api.github.com/users/jayvdb/orgs", + "repos_url": "https://api.github.com/users/jayvdb/repos", + "events_url": "https://api.github.com/users/jayvdb/events{/privacy}", + "received_events_url": "https://api.github.com/users/jayvdb/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2019-03-26T04:25:25Z", + "updated_at": "2019-03-26T04:25:25Z", + "body": "Thanks.", + "author_association": "CONTRIBUTOR", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/476470565/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/476472685", + "html_url": "https://github.com/un33k/python-slugify/pull/74#issuecomment-476472685", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/74", + "id": 476472685, + "node_id": "MDEyOklzc3VlQ29tbWVudDQ3NjQ3MjY4NQ==", + "user": { + "login": "jayvdb", + "id": 15092, + "node_id": "MDQ6VXNlcjE1MDky", + "avatar_url": "https://avatars.githubusercontent.com/u/15092?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/jayvdb", + "html_url": "https://github.com/jayvdb", + "followers_url": "https://api.github.com/users/jayvdb/followers", + "following_url": "https://api.github.com/users/jayvdb/following{/other_user}", + "gists_url": "https://api.github.com/users/jayvdb/gists{/gist_id}", + "starred_url": "https://api.github.com/users/jayvdb/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/jayvdb/subscriptions", + "organizations_url": "https://api.github.com/users/jayvdb/orgs", + "repos_url": "https://api.github.com/users/jayvdb/repos", + "events_url": "https://api.github.com/users/jayvdb/events{/privacy}", + "received_events_url": "https://api.github.com/users/jayvdb/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2019-03-26T04:38:33Z", + "updated_at": "2019-03-26T04:38:33Z", + "body": "Packaging update submitted https://build.opensuse.org/request/show/688522", + "author_association": "CONTRIBUTOR", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/476472685/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/478309121", + "html_url": "https://github.com/un33k/python-slugify/pull/75#issuecomment-478309121", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/75", + "id": 478309121, + "node_id": "MDEyOklzc3VlQ29tbWVudDQ3ODMwOTEyMQ==", + "user": { + "login": "coveralls", + "id": 2354108, + "node_id": "MDQ6VXNlcjIzNTQxMDg=", + "avatar_url": "https://avatars.githubusercontent.com/u/2354108?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/coveralls", + "html_url": "https://github.com/coveralls", + "followers_url": "https://api.github.com/users/coveralls/followers", + "following_url": "https://api.github.com/users/coveralls/following{/other_user}", + "gists_url": "https://api.github.com/users/coveralls/gists{/gist_id}", + "starred_url": "https://api.github.com/users/coveralls/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/coveralls/subscriptions", + "organizations_url": "https://api.github.com/users/coveralls/orgs", + "repos_url": "https://api.github.com/users/coveralls/repos", + "events_url": "https://api.github.com/users/coveralls/events{/privacy}", + "received_events_url": "https://api.github.com/users/coveralls/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2019-03-31T03:37:47Z", + "updated_at": "2019-03-31T03:37:47Z", + "body": "\n[![Coverage Status](https://coveralls.io/builds/22504202/badge)](https://coveralls.io/builds/22504202)\n\nCoverage remained the same at 92.079% when pulling **6c9ff987404bdcd45a8f39a7f537b35218ccfba4 on sloria:py37** into **98c83bee0900751d37fd70c1a048cdd85ca034c4 on un33k:master**.\n", + "author_association": "NONE", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/478309121/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/478309122", + "html_url": "https://github.com/un33k/python-slugify/pull/75#issuecomment-478309122", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/75", + "id": 478309122, + "node_id": "MDEyOklzc3VlQ29tbWVudDQ3ODMwOTEyMg==", + "user": { + "login": "coveralls", + "id": 2354108, + "node_id": "MDQ6VXNlcjIzNTQxMDg=", + "avatar_url": "https://avatars.githubusercontent.com/u/2354108?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/coveralls", + "html_url": "https://github.com/coveralls", + "followers_url": "https://api.github.com/users/coveralls/followers", + "following_url": "https://api.github.com/users/coveralls/following{/other_user}", + "gists_url": "https://api.github.com/users/coveralls/gists{/gist_id}", + "starred_url": "https://api.github.com/users/coveralls/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/coveralls/subscriptions", + "organizations_url": "https://api.github.com/users/coveralls/orgs", + "repos_url": "https://api.github.com/users/coveralls/repos", + "events_url": "https://api.github.com/users/coveralls/events{/privacy}", + "received_events_url": "https://api.github.com/users/coveralls/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2019-03-31T03:37:47Z", + "updated_at": "2019-03-31T04:02:46Z", + "body": "\n[![Coverage Status](https://coveralls.io/builds/22504316/badge)](https://coveralls.io/builds/22504316)\n\nCoverage remained the same at 92.079% when pulling **fbc69c1253c4363b10807a8ed42651cf1e1ee9ae on sloria:py37** into **98c83bee0900751d37fd70c1a048cdd85ca034c4 on un33k:master**.\n", + "author_association": "NONE", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/478309122/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/478310332", + "html_url": "https://github.com/un33k/python-slugify/pull/76#issuecomment-478310332", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/76", + "id": 478310332, + "node_id": "MDEyOklzc3VlQ29tbWVudDQ3ODMxMDMzMg==", + "user": { + "login": "coveralls", + "id": 2354108, + "node_id": "MDQ6VXNlcjIzNTQxMDg=", + "avatar_url": "https://avatars.githubusercontent.com/u/2354108?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/coveralls", + "html_url": "https://github.com/coveralls", + "followers_url": "https://api.github.com/users/coveralls/followers", + "following_url": "https://api.github.com/users/coveralls/following{/other_user}", + "gists_url": "https://api.github.com/users/coveralls/gists{/gist_id}", + "starred_url": "https://api.github.com/users/coveralls/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/coveralls/subscriptions", + "organizations_url": "https://api.github.com/users/coveralls/orgs", + "repos_url": "https://api.github.com/users/coveralls/repos", + "events_url": "https://api.github.com/users/coveralls/events{/privacy}", + "received_events_url": "https://api.github.com/users/coveralls/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2019-03-31T04:08:12Z", + "updated_at": "2019-03-31T04:10:24Z", + "body": "\n[![Coverage Status](https://coveralls.io/builds/22504401/badge)](https://coveralls.io/builds/22504401)\n\nCoverage increased (+0.9%) to 92.982% when pulling **c7c85269876c99d9a5d9fd6922f3b70ab268a52c on sloria:unique-slugify** into **98c83bee0900751d37fd70c1a048cdd85ca034c4 on un33k:master**.\n", + "author_association": "NONE", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/478310332/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/478343416", + "html_url": "https://github.com/un33k/python-slugify/pull/76#issuecomment-478343416", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/76", + "id": 478343416, + "node_id": "MDEyOklzc3VlQ29tbWVudDQ3ODM0MzQxNg==", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2019-03-31T13:46:26Z", + "updated_at": "2019-03-31T13:48:25Z", + "body": "Unfortunately the uniqueness cannot be enforced through restart of applications or on multiple instances of the same application talking to the same backend.\r\n\r\nAs such it is best to handle this on case-by-case basis within one's application.\r\n\r\nIf you need something this for Django, you can refer to https://github.com/un33k/django-uuslug", + "author_association": "OWNER", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/478343416/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/478345626", + "html_url": "https://github.com/un33k/python-slugify/pull/77#issuecomment-478345626", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/77", + "id": 478345626, + "node_id": "MDEyOklzc3VlQ29tbWVudDQ3ODM0NTYyNg==", + "user": { + "login": "coveralls", + "id": 2354108, + "node_id": "MDQ6VXNlcjIzNTQxMDg=", + "avatar_url": "https://avatars.githubusercontent.com/u/2354108?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/coveralls", + "html_url": "https://github.com/coveralls", + "followers_url": "https://api.github.com/users/coveralls/followers", + "following_url": "https://api.github.com/users/coveralls/following{/other_user}", + "gists_url": "https://api.github.com/users/coveralls/gists{/gist_id}", + "starred_url": "https://api.github.com/users/coveralls/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/coveralls/subscriptions", + "organizations_url": "https://api.github.com/users/coveralls/orgs", + "repos_url": "https://api.github.com/users/coveralls/repos", + "events_url": "https://api.github.com/users/coveralls/events{/privacy}", + "received_events_url": "https://api.github.com/users/coveralls/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2019-03-31T14:14:22Z", + "updated_at": "2019-03-31T14:15:21Z", + "body": "\n[![Coverage Status](https://coveralls.io/builds/22507249/badge)](https://coveralls.io/builds/22507249)\n\nCoverage remained the same at 92.079% when pulling **f70d438067df8e3a50d37e27ff1236e2cf69b6fb on staging** into **cab1c969e8bed86ab03f61dd04c90c376267988d on master**.\n", + "author_association": "NONE", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/478345626/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/478351437", + "html_url": "https://github.com/un33k/python-slugify/pull/76#issuecomment-478351437", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/76", + "id": 478351437, + "node_id": "MDEyOklzc3VlQ29tbWVudDQ3ODM1MTQzNw==", + "user": { + "login": "sloria", + "id": 2379650, + "node_id": "MDQ6VXNlcjIzNzk2NTA=", + "avatar_url": "https://avatars.githubusercontent.com/u/2379650?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/sloria", + "html_url": "https://github.com/sloria", + "followers_url": "https://api.github.com/users/sloria/followers", + "following_url": "https://api.github.com/users/sloria/following{/other_user}", + "gists_url": "https://api.github.com/users/sloria/gists{/gist_id}", + "starred_url": "https://api.github.com/users/sloria/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/sloria/subscriptions", + "organizations_url": "https://api.github.com/users/sloria/orgs", + "repos_url": "https://api.github.com/users/sloria/repos", + "events_url": "https://api.github.com/users/sloria/events{/privacy}", + "received_events_url": "https://api.github.com/users/sloria/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2019-03-31T15:27:42Z", + "updated_at": "2019-03-31T15:27:42Z", + "body": "There are use cases when you don't global uniqueness and per-process uniqueness is desired. For example: generating slugs for headers within a user-submitted document such as a README. In my case, users build a form by providing form field types and human-readable labels (\"Email address\") from which machine-readable IDs (\"email-address-1\") must be generated. The IDs should be unique within a form but not globally unique.\r\n\r\n", + "author_association": "CONTRIBUTOR", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/478351437/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/478353256", + "html_url": "https://github.com/un33k/python-slugify/pull/76#issuecomment-478353256", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/76", + "id": 478353256, + "node_id": "MDEyOklzc3VlQ29tbWVudDQ3ODM1MzI1Ng==", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2019-03-31T15:49:07Z", + "updated_at": "2019-03-31T15:49:07Z", + "body": "Only good for single instance applications. Out of sope for this module. Thx", + "author_association": "OWNER", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/478353256/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/478353734", + "html_url": "https://github.com/un33k/python-slugify/pull/76#issuecomment-478353734", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/76", + "id": 478353734, + "node_id": "MDEyOklzc3VlQ29tbWVudDQ3ODM1MzczNA==", + "user": { + "login": "sloria", + "id": 2379650, + "node_id": "MDQ6VXNlcjIzNzk2NTA=", + "avatar_url": "https://avatars.githubusercontent.com/u/2379650?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/sloria", + "html_url": "https://github.com/sloria", + "followers_url": "https://api.github.com/users/sloria/followers", + "following_url": "https://api.github.com/users/sloria/following{/other_user}", + "gists_url": "https://api.github.com/users/sloria/gists{/gist_id}", + "starred_url": "https://api.github.com/users/sloria/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/sloria/subscriptions", + "organizations_url": "https://api.github.com/users/sloria/orgs", + "repos_url": "https://api.github.com/users/sloria/repos", + "events_url": "https://api.github.com/users/sloria/events{/privacy}", + "received_events_url": "https://api.github.com/users/sloria/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2019-03-31T15:54:41Z", + "updated_at": "2019-03-31T15:54:41Z", + "body": "The use cases I mentioned aren't specific to single-instance apps. I respect if you think this is out of scope for this library, though. Thanks anyway.", + "author_association": "CONTRIBUTOR", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/478353734/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/493060056", + "html_url": "https://github.com/un33k/python-slugify/issues/78#issuecomment-493060056", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/78", + "id": 493060056, + "node_id": "MDEyOklzc3VlQ29tbWVudDQ5MzA2MDA1Ng==", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2019-05-16T13:07:54Z", + "updated_at": "2019-05-16T13:07:54Z", + "body": "Dorood bar shoma!\r\n\r\nYou have to raise the request with the following packages `text-unidecode` or `Unidecode`. This module just calls into the underlying api.", + "author_association": "OWNER", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/493060056/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/505427117", + "html_url": "https://github.com/un33k/python-slugify/issues/79#issuecomment-505427117", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/79", + "id": 505427117, + "node_id": "MDEyOklzc3VlQ29tbWVudDUwNTQyNzExNw==", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2019-06-25T12:42:26Z", + "updated_at": "2019-06-25T12:43:40Z", + "body": "Every library has its own evolution path. If you have found any shortcoming, a bug or simply looking for a feature that will benefit many, then you can raise a PR. Please note, that this lib relies on other uni-decode libs to do its job, hence for simplicity, we just don't accept PRs that are only cover a very narrow scenarios.\r\n\r\nThis lib converts everything to ASCII!\r\n\r\n\r\n\r\n", + "author_association": "OWNER", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/505427117/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/505512886", + "html_url": "https://github.com/un33k/python-slugify/issues/79#issuecomment-505512886", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/79", + "id": 505512886, + "node_id": "MDEyOklzc3VlQ29tbWVudDUwNTUxMjg4Ng==", + "user": { + "login": "MartinFalatic", + "id": 6424469, + "node_id": "MDQ6VXNlcjY0MjQ0Njk=", + "avatar_url": "https://avatars.githubusercontent.com/u/6424469?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/MartinFalatic", + "html_url": "https://github.com/MartinFalatic", + "followers_url": "https://api.github.com/users/MartinFalatic/followers", + "following_url": "https://api.github.com/users/MartinFalatic/following{/other_user}", + "gists_url": "https://api.github.com/users/MartinFalatic/gists{/gist_id}", + "starred_url": "https://api.github.com/users/MartinFalatic/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/MartinFalatic/subscriptions", + "organizations_url": "https://api.github.com/users/MartinFalatic/orgs", + "repos_url": "https://api.github.com/users/MartinFalatic/repos", + "events_url": "https://api.github.com/users/MartinFalatic/events{/privacy}", + "received_events_url": "https://api.github.com/users/MartinFalatic/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2019-06-25T16:07:23Z", + "updated_at": "2019-06-25T16:07:23Z", + "body": "So, I take it there is no such option. What does `entities` do then?", + "author_association": "NONE", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/505512886/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/505698266", + "html_url": "https://github.com/un33k/python-slugify/issues/79#issuecomment-505698266", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/79", + "id": 505698266, + "node_id": "MDEyOklzc3VlQ29tbWVudDUwNTY5ODI2Ng==", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2019-06-26T03:02:03Z", + "updated_at": "2019-06-26T03:02:03Z", + "body": "@MartinFalatic you may have uncovered a bug, if so, feel free to raise a PR with unit test.", + "author_association": "OWNER", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/505698266/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/505698683", + "html_url": "https://github.com/un33k/python-slugify/issues/79#issuecomment-505698683", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/79", + "id": 505698683, + "node_id": "MDEyOklzc3VlQ29tbWVudDUwNTY5ODY4Mw==", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2019-06-26T03:04:31Z", + "updated_at": "2019-06-26T03:04:31Z", + "body": "Here is an example of entity from the test file.\r\n\r\n```python\r\n def test_html_entities(self):\r\n txt = 'foo & bar' # foo & bar\r\n r = slugify(txt)\r\n self.assertEqual(r, 'foo-bar')\r\n```", + "author_association": "OWNER", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/505698683/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/505968388", + "html_url": "https://github.com/un33k/python-slugify/issues/79#issuecomment-505968388", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/79", + "id": 505968388, + "node_id": "MDEyOklzc3VlQ29tbWVudDUwNTk2ODM4OA==", + "user": { + "login": "MartinFalatic", + "id": 6424469, + "node_id": "MDQ6VXNlcjY0MjQ0Njk=", + "avatar_url": "https://avatars.githubusercontent.com/u/6424469?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/MartinFalatic", + "html_url": "https://github.com/MartinFalatic", + "followers_url": "https://api.github.com/users/MartinFalatic/followers", + "following_url": "https://api.github.com/users/MartinFalatic/following{/other_user}", + "gists_url": "https://api.github.com/users/MartinFalatic/gists{/gist_id}", + "starred_url": "https://api.github.com/users/MartinFalatic/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/MartinFalatic/subscriptions", + "organizations_url": "https://api.github.com/users/MartinFalatic/orgs", + "repos_url": "https://api.github.com/users/MartinFalatic/repos", + "events_url": "https://api.github.com/users/MartinFalatic/events{/privacy}", + "received_events_url": "https://api.github.com/users/MartinFalatic/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2019-06-26T17:21:56Z", + "updated_at": "2019-06-26T17:21:56Z", + "body": "That's an example of the `entities` option not being tested at all.\r\n\r\nTo fix it, I need to know what your intention was for this option. The intended default appears to be `True` (which is the existing behavior), so I would expect `entities=False` to fail that kind of test (and to pass a similar test that doesn't decode them). Does that match your design for this?", + "author_association": "NONE", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/505968388/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/505970215", + "html_url": "https://github.com/un33k/python-slugify/issues/79#issuecomment-505970215", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/79", + "id": 505970215, + "node_id": "MDEyOklzc3VlQ29tbWVudDUwNTk3MDIxNQ==", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2019-06-26T17:27:02Z", + "updated_at": "2019-06-26T17:28:51Z", + "body": "It meant to clean things like `&`, `&npsp;` etc. Nothing beyond that. And it works for those!. ", + "author_association": "OWNER", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/505970215/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/505972790", + "html_url": "https://github.com/un33k/python-slugify/issues/79#issuecomment-505972790", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/79", + "id": 505972790, + "node_id": "MDEyOklzc3VlQ29tbWVudDUwNTk3Mjc5MA==", + "user": { + "login": "MartinFalatic", + "id": 6424469, + "node_id": "MDQ6VXNlcjY0MjQ0Njk=", + "avatar_url": "https://avatars.githubusercontent.com/u/6424469?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/MartinFalatic", + "html_url": "https://github.com/MartinFalatic", + "followers_url": "https://api.github.com/users/MartinFalatic/followers", + "following_url": "https://api.github.com/users/MartinFalatic/following{/other_user}", + "gists_url": "https://api.github.com/users/MartinFalatic/gists{/gist_id}", + "starred_url": "https://api.github.com/users/MartinFalatic/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/MartinFalatic/subscriptions", + "organizations_url": "https://api.github.com/users/MartinFalatic/orgs", + "repos_url": "https://api.github.com/users/MartinFalatic/repos", + "events_url": "https://api.github.com/users/MartinFalatic/events{/privacy}", + "received_events_url": "https://api.github.com/users/MartinFalatic/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2019-06-26T17:34:02Z", + "updated_at": "2019-06-26T17:34:02Z", + "body": "I haven't fully characterized that operation. It certainly attempts a conversion, but I'll be curious to see what it does for more interesting encodings (such as letters or numbers). That would be a test enhancement.\r\n\r\nWhat we know right now is that it can't be turned off, so I'd expect that any change should be transparent to anyone not using `entities=False`. For those using `entities=False`, it would change behavior by actually disabling entity decoding.\r\n\r\nNext step is to find out how the two possible helper libraries you can choose from (`text-unidecode` and `unidecode`) handle this and whether that can even BE disabled... or figuring out a different way to do it. Thoughts on that?", + "author_association": "NONE", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/505972790/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/505975714", + "html_url": "https://github.com/un33k/python-slugify/issues/79#issuecomment-505975714", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/79", + "id": 505975714, + "node_id": "MDEyOklzc3VlQ29tbWVudDUwNTk3NTcxNA==", + "user": { + "login": "MartinFalatic", + "id": 6424469, + "node_id": "MDQ6VXNlcjY0MjQ0Njk=", + "avatar_url": "https://avatars.githubusercontent.com/u/6424469?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/MartinFalatic", + "html_url": "https://github.com/MartinFalatic", + "followers_url": "https://api.github.com/users/MartinFalatic/followers", + "following_url": "https://api.github.com/users/MartinFalatic/following{/other_user}", + "gists_url": "https://api.github.com/users/MartinFalatic/gists{/gist_id}", + "starred_url": "https://api.github.com/users/MartinFalatic/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/MartinFalatic/subscriptions", + "organizations_url": "https://api.github.com/users/MartinFalatic/orgs", + "repos_url": "https://api.github.com/users/MartinFalatic/repos", + "events_url": "https://api.github.com/users/MartinFalatic/events{/privacy}", + "received_events_url": "https://api.github.com/users/MartinFalatic/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2019-06-26T17:42:15Z", + "updated_at": "2019-06-26T17:42:15Z", + "body": "Edit: looks like those helper libs may not be involved. But neither is https://github.com/un33k/python-slugify/blob/master/slugify/slugify.py#L117 ... will have to dig in to see where the conversion is taking place.", + "author_association": "NONE", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/505975714/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/505991903", + "html_url": "https://github.com/un33k/python-slugify/issues/79#issuecomment-505991903", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/79", + "id": 505991903, + "node_id": "MDEyOklzc3VlQ29tbWVudDUwNTk5MTkwMw==", + "user": { + "login": "MartinFalatic", + "id": 6424469, + "node_id": "MDQ6VXNlcjY0MjQ0Njk=", + "avatar_url": "https://avatars.githubusercontent.com/u/6424469?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/MartinFalatic", + "html_url": "https://github.com/MartinFalatic", + "followers_url": "https://api.github.com/users/MartinFalatic/followers", + "following_url": "https://api.github.com/users/MartinFalatic/following{/other_user}", + "gists_url": "https://api.github.com/users/MartinFalatic/gists{/gist_id}", + "starred_url": "https://api.github.com/users/MartinFalatic/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/MartinFalatic/subscriptions", + "organizations_url": "https://api.github.com/users/MartinFalatic/orgs", + "repos_url": "https://api.github.com/users/MartinFalatic/repos", + "events_url": "https://api.github.com/users/MartinFalatic/events{/privacy}", + "received_events_url": "https://api.github.com/users/MartinFalatic/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2019-06-26T18:26:36Z", + "updated_at": "2019-06-26T18:26:36Z", + "body": "Actually, that part does work... there's still something unexpected going on with this (pretty sure it's `decimal`/`hexadecimal` that are involved), but I'm narrowing it down.\r\n\r\nThe ordering of these is also interesting.\r\n\r\nIf nothing else comes out of this, more documentation and tests (as examples and testing all the options) will be useful.", + "author_association": "NONE", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/505991903/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/507794578", + "html_url": "https://github.com/un33k/python-slugify/issues/79#issuecomment-507794578", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/79", + "id": 507794578, + "node_id": "MDEyOklzc3VlQ29tbWVudDUwNzc5NDU3OA==", + "user": { + "login": "MartinFalatic", + "id": 6424469, + "node_id": "MDQ6VXNlcjY0MjQ0Njk=", + "avatar_url": "https://avatars.githubusercontent.com/u/6424469?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/MartinFalatic", + "html_url": "https://github.com/MartinFalatic", + "followers_url": "https://api.github.com/users/MartinFalatic/followers", + "following_url": "https://api.github.com/users/MartinFalatic/following{/other_user}", + "gists_url": "https://api.github.com/users/MartinFalatic/gists{/gist_id}", + "starred_url": "https://api.github.com/users/MartinFalatic/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/MartinFalatic/subscriptions", + "organizations_url": "https://api.github.com/users/MartinFalatic/orgs", + "repos_url": "https://api.github.com/users/MartinFalatic/repos", + "events_url": "https://api.github.com/users/MartinFalatic/events{/privacy}", + "received_events_url": "https://api.github.com/users/MartinFalatic/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2019-07-02T18:30:47Z", + "updated_at": "2019-07-02T18:30:47Z", + "body": "So, entity decoding is fully disabled only if you specify all three options (`entities=False, hexadecimal=False, decimal=False`).\r\n\r\nAs an FYI to anyone reading this who is migrating from awesome-slugify, the following construction provides parity with the default behavior of that library for ascii data:\r\n\r\nawesome-slugify: `slug = slugify.slugify(line)`\r\n\r\npython-slugify: `slug = slugify.slugify(line.replace(',', '-').replace('\\'', ''), lowercase=False, entities=False, hexadecimal=False, decimal=False)`", + "author_association": "NONE", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/507794578/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/507893984", + "html_url": "https://github.com/un33k/python-slugify/issues/79#issuecomment-507893984", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/79", + "id": 507893984, + "node_id": "MDEyOklzc3VlQ29tbWVudDUwNzg5Mzk4NA==", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2019-07-03T00:40:00Z", + "updated_at": "2019-07-03T00:40:00Z", + "body": "@MartinFalatic I am glad you found the right combo for your situation & thank you for leaving a note for anyone else that is attempting to use it this way!", + "author_association": "OWNER", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/507893984/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/515680906", + "html_url": "https://github.com/un33k/python-slugify/issues/81#issuecomment-515680906", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/81", + "id": 515680906, + "node_id": "MDEyOklzc3VlQ29tbWVudDUxNTY4MDkwNg==", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2019-07-27T12:35:05Z", + "updated_at": "2019-07-27T12:36:22Z", + "body": "I don't think the name-space `python-slugify` can have multiple versions on pypi. With that said, some people, sadly, clone the repo and publish it as `python-slugify2`, `python-slugify3` etc. If your IDE falls for the number in the name as the true `version` and installs the latest version, then it is possible that a fake/clone version is installed by PyCharm.\r\n\r\nYou can be more specific and install it as `python-slugify[unidecode]` as per https://github.com/un33k/python-slugify#notice", + "author_association": "OWNER", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/515680906/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/515691518", + "html_url": "https://github.com/un33k/python-slugify/issues/81#issuecomment-515691518", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/81", + "id": 515691518, + "node_id": "MDEyOklzc3VlQ29tbWVudDUxNTY5MTUxOA==", + "user": { + "login": "roniemartinez", + "id": 2573537, + "node_id": "MDQ6VXNlcjI1NzM1Mzc=", + "avatar_url": "https://avatars.githubusercontent.com/u/2573537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/roniemartinez", + "html_url": "https://github.com/roniemartinez", + "followers_url": "https://api.github.com/users/roniemartinez/followers", + "following_url": "https://api.github.com/users/roniemartinez/following{/other_user}", + "gists_url": "https://api.github.com/users/roniemartinez/gists{/gist_id}", + "starred_url": "https://api.github.com/users/roniemartinez/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/roniemartinez/subscriptions", + "organizations_url": "https://api.github.com/users/roniemartinez/orgs", + "repos_url": "https://api.github.com/users/roniemartinez/repos", + "events_url": "https://api.github.com/users/roniemartinez/events{/privacy}", + "received_events_url": "https://api.github.com/users/roniemartinez/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2019-07-27T15:15:26Z", + "updated_at": "2019-07-27T15:15:26Z", + "body": "> then it is possible that a fake/clone version is installed by PyCharm\r\n\r\nHe installed the [slugify](https://pypi.org/project/slugify/) package, not `python-slugify`. It's been there 9 years ago, certainly not a clone.\r\n\r\nhttps://github.com/zacharyvoase/slugify/blob/master/src/slugify.py#L24", + "author_association": "NONE", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/515691518/reactions", + "total_count": 1, + "+1": 1, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/515693588", + "html_url": "https://github.com/un33k/python-slugify/issues/81#issuecomment-515693588", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/81", + "id": 515693588, + "node_id": "MDEyOklzc3VlQ29tbWVudDUxNTY5MzU4OA==", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2019-07-27T15:44:53Z", + "updated_at": "2019-10-11T13:29:38Z", + "body": "@EmileSonneveld Only you know what you installed. Any package should install its own dependencies or fall on a default one, and provide options. Never used pyCharm so I don't know what it does. See what you installed and raise a ticket with that package instead. ", + "author_association": "OWNER", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/515693588/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/515694047", + "html_url": "https://github.com/un33k/python-slugify/issues/81#issuecomment-515694047", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/81", + "id": 515694047, + "node_id": "MDEyOklzc3VlQ29tbWVudDUxNTY5NDA0Nw==", + "user": { + "login": "roniemartinez", + "id": 2573537, + "node_id": "MDQ6VXNlcjI1NzM1Mzc=", + "avatar_url": "https://avatars.githubusercontent.com/u/2573537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/roniemartinez", + "html_url": "https://github.com/roniemartinez", + "followers_url": "https://api.github.com/users/roniemartinez/followers", + "following_url": "https://api.github.com/users/roniemartinez/following{/other_user}", + "gists_url": "https://api.github.com/users/roniemartinez/gists{/gist_id}", + "starred_url": "https://api.github.com/users/roniemartinez/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/roniemartinez/subscriptions", + "organizations_url": "https://api.github.com/users/roniemartinez/orgs", + "repos_url": "https://api.github.com/users/roniemartinez/repos", + "events_url": "https://api.github.com/users/roniemartinez/events{/privacy}", + "received_events_url": "https://api.github.com/users/roniemartinez/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2019-07-27T15:51:08Z", + "updated_at": "2019-07-27T15:51:08Z", + "body": "@un33k I use PyCharm. If you import a module and it does not exist yet PyCharm will ask you to install what you imported, in the case of:\r\n\r\n`import slugify`\r\n\r\nIt will install the `slugify` package and not`python-slugify`", + "author_association": "NONE", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/515694047/reactions", + "total_count": 1, + "+1": 1, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/515726000", + "html_url": "https://github.com/un33k/python-slugify/issues/81#issuecomment-515726000", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/81", + "id": 515726000, + "node_id": "MDEyOklzc3VlQ29tbWVudDUxNTcyNjAwMA==", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2019-07-28T01:47:13Z", + "updated_at": "2019-07-28T01:47:13Z", + "body": "@roniemartinez then this issue needs to be posted on the slugify's page instead. ", + "author_association": "OWNER", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/515726000/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/515728876", + "html_url": "https://github.com/un33k/python-slugify/issues/80#issuecomment-515728876", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/80", + "id": 515728876, + "node_id": "MDEyOklzc3VlQ29tbWVudDUxNTcyODg3Ng==", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2019-07-28T03:04:14Z", + "updated_at": "2019-07-28T03:04:14Z", + "body": "@shakeyourbunny Please find more info regarding the options here. https://github.com/un33k/python-slugify#options", + "author_association": "OWNER", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/515728876/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/515766088", + "html_url": "https://github.com/un33k/python-slugify/issues/81#issuecomment-515766088", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/81", + "id": 515766088, + "node_id": "MDEyOklzc3VlQ29tbWVudDUxNTc2NjA4OA==", + "user": { + "login": "EmileSonneveld", + "id": 2298426, + "node_id": "MDQ6VXNlcjIyOTg0MjY=", + "avatar_url": "https://avatars.githubusercontent.com/u/2298426?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/EmileSonneveld", + "html_url": "https://github.com/EmileSonneveld", + "followers_url": "https://api.github.com/users/EmileSonneveld/followers", + "following_url": "https://api.github.com/users/EmileSonneveld/following{/other_user}", + "gists_url": "https://api.github.com/users/EmileSonneveld/gists{/gist_id}", + "starred_url": "https://api.github.com/users/EmileSonneveld/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/EmileSonneveld/subscriptions", + "organizations_url": "https://api.github.com/users/EmileSonneveld/orgs", + "repos_url": "https://api.github.com/users/EmileSonneveld/repos", + "events_url": "https://api.github.com/users/EmileSonneveld/events{/privacy}", + "received_events_url": "https://api.github.com/users/EmileSonneveld/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2019-07-28T14:11:28Z", + "updated_at": "2019-07-28T14:11:28Z", + "body": "I raised the issue in the conflicting library too. However, I am convinced that if this package is called `python-slugify`, the namespace in the code should reflect that. However, it is difficult to fix that while retaining backwards compatibility of course. ", + "author_association": "NONE", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/515766088/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/515770514", + "html_url": "https://github.com/un33k/python-slugify/issues/81#issuecomment-515770514", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/81", + "id": 515770514, + "node_id": "MDEyOklzc3VlQ29tbWVudDUxNTc3MDUxNA==", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2019-07-28T15:09:20Z", + "updated_at": "2019-07-28T15:09:20Z", + "body": "@EmileSonneveld name of a package is different than the set of api it publishes. `python-slugify` is a reserved name for pypi. Remember that importing sys in python is `import sys` and not `import python-sys`. So name of a package has nothing to do with what is inside of it.", + "author_association": "OWNER", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/515770514/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/533110705", + "html_url": "https://github.com/un33k/python-slugify/pull/83#issuecomment-533110705", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/83", + "id": 533110705, + "node_id": "MDEyOklzc3VlQ29tbWVudDUzMzExMDcwNQ==", + "user": { + "login": "koolfunky", + "id": 14309762, + "node_id": "MDQ6VXNlcjE0MzA5NzYy", + "avatar_url": "https://avatars.githubusercontent.com/u/14309762?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/koolfunky", + "html_url": "https://github.com/koolfunky", + "followers_url": "https://api.github.com/users/koolfunky/followers", + "following_url": "https://api.github.com/users/koolfunky/following{/other_user}", + "gists_url": "https://api.github.com/users/koolfunky/gists{/gist_id}", + "starred_url": "https://api.github.com/users/koolfunky/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/koolfunky/subscriptions", + "organizations_url": "https://api.github.com/users/koolfunky/orgs", + "repos_url": "https://api.github.com/users/koolfunky/repos", + "events_url": "https://api.github.com/users/koolfunky/events{/privacy}", + "received_events_url": "https://api.github.com/users/koolfunky/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2019-09-19T12:36:56Z", + "updated_at": "2019-09-19T12:36:56Z", + "body": "Fixes #82 ", + "author_association": "CONTRIBUTOR", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/533110705/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/533121737", + "html_url": "https://github.com/un33k/python-slugify/pull/83#issuecomment-533121737", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/83", + "id": 533121737, + "node_id": "MDEyOklzc3VlQ29tbWVudDUzMzEyMTczNw==", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2019-09-19T13:06:13Z", + "updated_at": "2019-09-19T13:06:13Z", + "body": "Please issue PR to the staging branch ... ", + "author_association": "OWNER", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/533121737/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/533122738", + "html_url": "https://github.com/un33k/python-slugify/pull/83#issuecomment-533122738", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/83", + "id": 533122738, + "node_id": "MDEyOklzc3VlQ29tbWVudDUzMzEyMjczOA==", + "user": { + "login": "koolfunky", + "id": 14309762, + "node_id": "MDQ6VXNlcjE0MzA5NzYy", + "avatar_url": "https://avatars.githubusercontent.com/u/14309762?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/koolfunky", + "html_url": "https://github.com/koolfunky", + "followers_url": "https://api.github.com/users/koolfunky/followers", + "following_url": "https://api.github.com/users/koolfunky/following{/other_user}", + "gists_url": "https://api.github.com/users/koolfunky/gists{/gist_id}", + "starred_url": "https://api.github.com/users/koolfunky/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/koolfunky/subscriptions", + "organizations_url": "https://api.github.com/users/koolfunky/orgs", + "repos_url": "https://api.github.com/users/koolfunky/repos", + "events_url": "https://api.github.com/users/koolfunky/events{/privacy}", + "received_events_url": "https://api.github.com/users/koolfunky/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2019-09-19T13:08:53Z", + "updated_at": "2019-09-19T13:08:53Z", + "body": "@un33k is it ok like this ? ", + "author_association": "CONTRIBUTOR", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/533122738/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/533177430", + "html_url": "https://github.com/un33k/python-slugify/pull/83#issuecomment-533177430", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/83", + "id": 533177430, + "node_id": "MDEyOklzc3VlQ29tbWVudDUzMzE3NzQzMA==", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2019-09-19T15:12:11Z", + "updated_at": "2019-09-19T15:12:11Z", + "body": "Thank you for your contribution. I will publish this on the next release cycle. Soon. ", + "author_association": "OWNER", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/533177430/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/533178042", + "html_url": "https://github.com/un33k/python-slugify/issues/82#issuecomment-533178042", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/82", + "id": 533178042, + "node_id": "MDEyOklzc3VlQ29tbWVudDUzMzE3ODA0Mg==", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2019-09-19T15:13:38Z", + "updated_at": "2019-09-19T15:13:38Z", + "body": "@mhoonjeon Thank you for raising the issue. @koolfunky has provided a PR and it will be publish very soon. ", + "author_association": "OWNER", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/533178042/reactions", + "total_count": 1, + "+1": 1, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/533518428", + "html_url": "https://github.com/un33k/python-slugify/pull/84#issuecomment-533518428", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/84", + "id": 533518428, + "node_id": "MDEyOklzc3VlQ29tbWVudDUzMzUxODQyOA==", + "user": { + "login": "coveralls", + "id": 2354108, + "node_id": "MDQ6VXNlcjIzNTQxMDg=", + "avatar_url": "https://avatars.githubusercontent.com/u/2354108?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/coveralls", + "html_url": "https://github.com/coveralls", + "followers_url": "https://api.github.com/users/coveralls/followers", + "following_url": "https://api.github.com/users/coveralls/following{/other_user}", + "gists_url": "https://api.github.com/users/coveralls/gists{/gist_id}", + "starred_url": "https://api.github.com/users/coveralls/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/coveralls/subscriptions", + "organizations_url": "https://api.github.com/users/coveralls/orgs", + "repos_url": "https://api.github.com/users/coveralls/repos", + "events_url": "https://api.github.com/users/coveralls/events{/privacy}", + "received_events_url": "https://api.github.com/users/coveralls/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2019-09-20T11:39:37Z", + "updated_at": "2019-09-20T11:39:39Z", + "body": "\n[![Coverage Status](https://coveralls.io/builds/25829769/badge)](https://coveralls.io/builds/25829769)\n\nCoverage decreased (-2.0%) to 90.099% when pulling **0bd768f2729af96dffe7d3497295eefc6cb9c228 on VKen:master** into **e7b036089a0eb1021fea74c70f34c5fae4d03885 on un33k:master**.\n", + "author_association": "NONE", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/533518428/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/533596390", + "html_url": "https://github.com/un33k/python-slugify/pull/84#issuecomment-533596390", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/84", + "id": 533596390, + "node_id": "MDEyOklzc3VlQ29tbWVudDUzMzU5NjM5MA==", + "user": { + "login": "corenting", + "id": 32464, + "node_id": "MDQ6VXNlcjMyNDY0", + "avatar_url": "https://avatars.githubusercontent.com/u/32464?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/corenting", + "html_url": "https://github.com/corenting", + "followers_url": "https://api.github.com/users/corenting/followers", + "following_url": "https://api.github.com/users/corenting/following{/other_user}", + "gists_url": "https://api.github.com/users/corenting/gists{/gist_id}", + "starred_url": "https://api.github.com/users/corenting/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/corenting/subscriptions", + "organizations_url": "https://api.github.com/users/corenting/orgs", + "repos_url": "https://api.github.com/users/corenting/repos", + "events_url": "https://api.github.com/users/corenting/events{/privacy}", + "received_events_url": "https://api.github.com/users/corenting/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2019-09-20T15:18:30Z", + "updated_at": "2019-09-20T15:18:30Z", + "body": "Hello, I think the maintainer has already merged #83 for this on the `staging` branch, so the issue should be fixed soon :) (see #82).", + "author_association": "NONE", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/533596390/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/533628119", + "html_url": "https://github.com/un33k/python-slugify/pull/84#issuecomment-533628119", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/84", + "id": 533628119, + "node_id": "MDEyOklzc3VlQ29tbWVudDUzMzYyODExOQ==", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2019-09-20T16:44:08Z", + "updated_at": "2019-09-20T16:49:28Z", + "body": "Thank you for your contribution. The upgrade is going to be carried out as part of https://github.com/un33k/python-slugify/pull/83. \r\n\r\nPlease upgrade to https://github.com/un33k/python-slugify/tree/3.0.4", + "author_association": "OWNER", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/533628119/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/533629958", + "html_url": "https://github.com/un33k/python-slugify/pull/83#issuecomment-533629958", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/83", + "id": 533629958, + "node_id": "MDEyOklzc3VlQ29tbWVudDUzMzYyOTk1OA==", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2019-09-20T16:49:58Z", + "updated_at": "2019-09-20T16:49:58Z", + "body": "Please upgrade to https://github.com/un33k/python-slugify/tree/3.0.4", + "author_association": "OWNER", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/533629958/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/533753593", + "html_url": "https://github.com/un33k/python-slugify/pull/84#issuecomment-533753593", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/84", + "id": 533753593, + "node_id": "MDEyOklzc3VlQ29tbWVudDUzMzc1MzU5Mw==", + "user": { + "login": "VKen", + "id": 124760, + "node_id": "MDQ6VXNlcjEyNDc2MA==", + "avatar_url": "https://avatars.githubusercontent.com/u/124760?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/VKen", + "html_url": "https://github.com/VKen", + "followers_url": "https://api.github.com/users/VKen/followers", + "following_url": "https://api.github.com/users/VKen/following{/other_user}", + "gists_url": "https://api.github.com/users/VKen/gists{/gist_id}", + "starred_url": "https://api.github.com/users/VKen/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/VKen/subscriptions", + "organizations_url": "https://api.github.com/users/VKen/orgs", + "repos_url": "https://api.github.com/users/VKen/repos", + "events_url": "https://api.github.com/users/VKen/events{/privacy}", + "received_events_url": "https://api.github.com/users/VKen/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2019-09-21T00:49:41Z", + "updated_at": "2019-09-21T00:49:41Z", + "body": "Thanks for the quick response and update!\r\n\r\nCheers", + "author_association": "NONE", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/533753593/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/540823187", + "html_url": "https://github.com/un33k/python-slugify/issues/85#issuecomment-540823187", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/85", + "id": 540823187, + "node_id": "MDEyOklzc3VlQ29tbWVudDU0MDgyMzE4Nw==", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2019-10-10T22:20:10Z", + "updated_at": "2019-10-10T22:27:19Z", + "body": "@TobitRE You can achieve this by pretranslation replacements. Mind you that you may be bound to lowercase slugs only. \r\n\r\n```python\r\ntxt = 'ÜBER Über German Umlaut'\r\nr = slugify(txt, replacements=[['Ü', 'UE'], ['ü', 'ue']])\r\nself.assertEqual(r, \"ueber-ueber-german-umlaut\")\r\n```\r\n\r\nOr you can pass your own replacement list.\r\n```python\r\nGERMAN_UMLAUT = [\r\n [u'ä': u'ae'], \r\n [u'ö': u'oe]', \r\n [ u'ü': u'ue'], \r\n}\r\ntxt = 'ÜBER Über German Umlaut'\r\nr = slugify(txt, replacements=GERMAN_UMLAUT)\r\nself.assertEqual(r, \"ueber-ueber-german-umlaut\")\r\n```\r\n\r\nAlternatively, you can (v3.0.6+)\r\n```python \r\nfrom slugify import PRE_TRANSLATIONS\r\ntxt = 'ÜBER Über German Umlaut'\r\nr = slugify(txt, replacements=PRE_TRANSLATIONS)\r\nself.assertEqual(r, \"ueber-ueber-german-umlaut\")\r\n```", + "author_association": "OWNER", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/540823187/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/541071390", + "html_url": "https://github.com/un33k/python-slugify/issues/86#issuecomment-541071390", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/86", + "id": 541071390, + "node_id": "MDEyOklzc3VlQ29tbWVudDU0MTA3MTM5MA==", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2019-10-11T13:46:52Z", + "updated_at": "2019-10-11T13:46:52Z", + "body": "### If you are using IDEs like PyCharm\r\n- In some IDEs (e.g. Pycharm), `from slugify import slugify` might automatically install the missing package for you. In this example, a package called `slugify` will be instead. To you this package you need to install `python-slugify` yourself. (https://github.com/un33k/python-slugify/issues/81)", + "author_association": "OWNER", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/541071390/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/541072371", + "html_url": "https://github.com/un33k/python-slugify/issues/86#issuecomment-541072371", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/86", + "id": 541072371, + "node_id": "MDEyOklzc3VlQ29tbWVudDU0MTA3MjM3MQ==", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2019-10-11T13:49:21Z", + "updated_at": "2019-10-11T13:54:23Z", + "body": "### Documentations\r\n- If you want to see a list of options you can pass into `slugify()`, you can refer to the readme file. ([Parameters & Options](https://github.com/un33k/python-slugify#options))", + "author_association": "OWNER", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/541072371/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/541074071", + "html_url": "https://github.com/un33k/python-slugify/issues/86#issuecomment-541074071", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/86", + "id": 541074071, + "node_id": "MDEyOklzc3VlQ29tbWVudDU0MTA3NDA3MQ==", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2019-10-11T13:53:45Z", + "updated_at": "2019-10-11T13:58:41Z", + "body": "### License\r\n- This package is under the [MIT](https://github.com/un33k/python-slugify/blob/master/LICENSE) license. This package by default installs `text-unidecode`. But you can instead use `unidecode`. ([Install Options](https://github.com/un33k/python-slugify#notice))", + "author_association": "OWNER", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/541074071/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/541075705", + "html_url": "https://github.com/un33k/python-slugify/issues/86#issuecomment-541075705", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/86", + "id": 541075705, + "node_id": "MDEyOklzc3VlQ29tbWVudDU0MTA3NTcwNQ==", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2019-10-11T13:57:38Z", + "updated_at": "2019-10-11T13:58:18Z", + "body": "### `Unidecode` support for other languages\r\n- This packages uses `text-unidecode` or `unidecode` as its underlying converter. Please raise an issue with those packages instead. (https://github.com/un33k/python-slugify/issues/78)", + "author_association": "OWNER", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/541075705/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/541077492", + "html_url": "https://github.com/un33k/python-slugify/issues/45#issuecomment-541077492", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/45", + "id": 541077492, + "node_id": "MDEyOklzc3VlQ29tbWVudDU0MTA3NzQ5Mg==", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2019-10-11T14:02:11Z", + "updated_at": "2019-10-11T14:02:11Z", + "body": "@imrek You can now use replacements. (https://github.com/un33k/python-slugify/issues/85)", + "author_association": "OWNER", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/541077492/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/541082912", + "html_url": "https://github.com/un33k/python-slugify/issues/86#issuecomment-541082912", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/86", + "id": 541082912, + "node_id": "MDEyOklzc3VlQ29tbWVudDU0MTA4MjkxMg==", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2019-10-11T14:15:55Z", + "updated_at": "2019-10-11T14:16:10Z", + "body": "### Versioning \r\n- This package is called `python-slugify` and it keeps its version within the package itself and not in the name. If you see `python-slugify2` or `python-slugify3` etc, they are unauthorized clones. Please make sure you and your IDE install `python-slugify` in order to get the latest updates. ", + "author_association": "OWNER", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/541082912/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/541106382", + "html_url": "https://github.com/un33k/python-slugify/issues/86#issuecomment-541106382", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/86", + "id": 541106382, + "node_id": "MDEyOklzc3VlQ29tbWVudDU0MTEwNjM4Mg==", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2019-10-11T15:15:28Z", + "updated_at": "2019-10-11T15:16:10Z", + "body": "### Pretranslation options\r\n- To pre-translate some characters, you can use `replacements` params. (https://github.com/un33k/python-slugify/issues/85)\r\n", + "author_association": "OWNER", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/541106382/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/541915243", + "html_url": "https://github.com/un33k/python-slugify/pull/87#issuecomment-541915243", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/87", + "id": 541915243, + "node_id": "MDEyOklzc3VlQ29tbWVudDU0MTkxNTI0Mw==", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2019-10-14T20:53:36Z", + "updated_at": "2019-10-14T20:53:36Z", + "body": "@hugovk. May I ask you to raise the PR against the staging branch instead ? Thank you.", + "author_association": "OWNER", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/541915243/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/541918469", + "html_url": "https://github.com/un33k/python-slugify/pull/87#issuecomment-541918469", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/87", + "id": 541918469, + "node_id": "MDEyOklzc3VlQ29tbWVudDU0MTkxODQ2OQ==", + "user": { + "login": "hugovk", + "id": 1324225, + "node_id": "MDQ6VXNlcjEzMjQyMjU=", + "avatar_url": "https://avatars.githubusercontent.com/u/1324225?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/hugovk", + "html_url": "https://github.com/hugovk", + "followers_url": "https://api.github.com/users/hugovk/followers", + "following_url": "https://api.github.com/users/hugovk/following{/other_user}", + "gists_url": "https://api.github.com/users/hugovk/gists{/gist_id}", + "starred_url": "https://api.github.com/users/hugovk/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/hugovk/subscriptions", + "organizations_url": "https://api.github.com/users/hugovk/orgs", + "repos_url": "https://api.github.com/users/hugovk/repos", + "events_url": "https://api.github.com/users/hugovk/events{/privacy}", + "received_events_url": "https://api.github.com/users/hugovk/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2019-10-14T20:59:53Z", + "updated_at": "2019-10-14T20:59:53Z", + "body": "I've switched the base branch to staging. \r\n\r\nMay I suggest changing the default branch in the repo settings to staging? That way future PRs will be made to staging in the future. Thanks! \r\n\r\n", + "author_association": "CONTRIBUTOR", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/541918469/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/541923960", + "html_url": "https://github.com/un33k/python-slugify/pull/87#issuecomment-541923960", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/87", + "id": 541923960, + "node_id": "MDEyOklzc3VlQ29tbWVudDU0MTkyMzk2MA==", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2019-10-14T21:10:56Z", + "updated_at": "2019-10-14T21:11:58Z", + "body": "I like master branch as default, but I wish there was a way to include a default branch for incoming PRs. Each incoming PR needs to be tested followed by a version bump and only then it can be promoted to master and pushed to pypi. ", + "author_association": "OWNER", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/541923960/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/544273011", + "html_url": "https://github.com/un33k/python-slugify/issues/86#issuecomment-544273011", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/86", + "id": 544273011, + "node_id": "MDEyOklzc3VlQ29tbWVudDU0NDI3MzAxMQ==", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2019-10-20T17:27:25Z", + "updated_at": "2019-10-20T17:27:25Z", + "body": "Moved to the wiki page. https://github.com/un33k/python-slugify/wiki/Python-Slugify-Wiki", + "author_association": "OWNER", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/544273011/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/544274213", + "html_url": "https://github.com/un33k/python-slugify/pull/87#issuecomment-544274213", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/87", + "id": 544274213, + "node_id": "MDEyOklzc3VlQ29tbWVudDU0NDI3NDIxMw==", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2019-10-20T17:41:34Z", + "updated_at": "2019-10-20T17:41:34Z", + "body": "Thank you for your contribution. Version 4.0.0 is pushed. https://github.com/un33k/python-slugify/tree/4.0.0", + "author_association": "OWNER", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/544274213/reactions", + "total_count": 2, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 1, + "confused": 0, + "heart": 0, + "rocket": 1, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/544274679", + "html_url": "https://github.com/un33k/python-slugify/pull/88#issuecomment-544274679", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/88", + "id": 544274679, + "node_id": "MDEyOklzc3VlQ29tbWVudDU0NDI3NDY3OQ==", + "user": { + "login": "coveralls", + "id": 2354108, + "node_id": "MDQ6VXNlcjIzNTQxMDg=", + "avatar_url": "https://avatars.githubusercontent.com/u/2354108?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/coveralls", + "html_url": "https://github.com/coveralls", + "followers_url": "https://api.github.com/users/coveralls/followers", + "following_url": "https://api.github.com/users/coveralls/following{/other_user}", + "gists_url": "https://api.github.com/users/coveralls/gists{/gist_id}", + "starred_url": "https://api.github.com/users/coveralls/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/coveralls/subscriptions", + "organizations_url": "https://api.github.com/users/coveralls/orgs", + "repos_url": "https://api.github.com/users/coveralls/repos", + "events_url": "https://api.github.com/users/coveralls/events{/privacy}", + "received_events_url": "https://api.github.com/users/coveralls/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2019-10-20T17:47:47Z", + "updated_at": "2019-10-20T17:47:49Z", + "body": "\n[![Coverage Status](https://coveralls.io/builds/26424549/badge)](https://coveralls.io/builds/26424549)\n\nCoverage increased (+1.4%) to 92.385% when pulling **26f96d78ddd9686c15f685d407dae42a757eec35 on staging** into **b9db1bc87e3b19c5c63ab7a00b19685b7996de5d on master**.\n", + "author_association": "NONE", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/544274679/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/544274684", + "html_url": "https://github.com/un33k/python-slugify/pull/87#issuecomment-544274684", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/87", + "id": 544274684, + "node_id": "MDEyOklzc3VlQ29tbWVudDU0NDI3NDY4NA==", + "user": { + "login": "hugovk", + "id": 1324225, + "node_id": "MDQ6VXNlcjEzMjQyMjU=", + "avatar_url": "https://avatars.githubusercontent.com/u/1324225?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/hugovk", + "html_url": "https://github.com/hugovk", + "followers_url": "https://api.github.com/users/hugovk/followers", + "following_url": "https://api.github.com/users/hugovk/following{/other_user}", + "gists_url": "https://api.github.com/users/hugovk/gists{/gist_id}", + "starred_url": "https://api.github.com/users/hugovk/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/hugovk/subscriptions", + "organizations_url": "https://api.github.com/users/hugovk/orgs", + "repos_url": "https://api.github.com/users/hugovk/repos", + "events_url": "https://api.github.com/users/hugovk/events{/privacy}", + "received_events_url": "https://api.github.com/users/hugovk/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2019-10-20T17:47:51Z", + "updated_at": "2019-10-20T17:47:51Z", + "body": "You're welcome!", + "author_association": "CONTRIBUTOR", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/544274684/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/552139213", + "html_url": "https://github.com/un33k/python-slugify/pull/89#issuecomment-552139213", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/89", + "id": 552139213, + "node_id": "MDEyOklzc3VlQ29tbWVudDU1MjEzOTIxMw==", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2019-11-09T21:25:52Z", + "updated_at": "2019-11-09T21:25:52Z", + "body": "Thank you.", + "author_association": "OWNER", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/552139213/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/568531379", + "html_url": "https://github.com/un33k/python-slugify/issues/90#issuecomment-568531379", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/90", + "id": 568531379, + "node_id": "MDEyOklzc3VlQ29tbWVudDU2ODUzMTM3OQ==", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2019-12-23T17:18:46Z", + "updated_at": "2019-12-23T17:18:46Z", + "body": "The default slugify() is url safe as it only returns ASCII characters and dashes. But since slugify() takes many parameters, one can pass in params that makes the output, possibility unsafe for url consumption. The power is with the caller of the slugify() I'd say. ", + "author_association": "OWNER", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/568531379/reactions", + "total_count": 2, + "+1": 2, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/571369317", + "html_url": "https://github.com/un33k/python-slugify/issues/91#issuecomment-571369317", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/91", + "id": 571369317, + "node_id": "MDEyOklzc3VlQ29tbWVudDU3MTM2OTMxNw==", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2020-01-07T00:02:28Z", + "updated_at": "2020-01-07T00:02:28Z", + "body": "This package removes any non-alpha numeric characters and replaces them by the separator of your choice or '-' if you don't provide one. ", + "author_association": "OWNER", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/571369317/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/571499305", + "html_url": "https://github.com/un33k/python-slugify/issues/91#issuecomment-571499305", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/91", + "id": 571499305, + "node_id": "MDEyOklzc3VlQ29tbWVudDU3MTQ5OTMwNQ==", + "user": { + "login": "ghost", + "id": 10137, + "node_id": "MDQ6VXNlcjEwMTM3", + "avatar_url": "https://avatars.githubusercontent.com/u/10137?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/ghost", + "html_url": "https://github.com/ghost", + "followers_url": "https://api.github.com/users/ghost/followers", + "following_url": "https://api.github.com/users/ghost/following{/other_user}", + "gists_url": "https://api.github.com/users/ghost/gists{/gist_id}", + "starred_url": "https://api.github.com/users/ghost/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/ghost/subscriptions", + "organizations_url": "https://api.github.com/users/ghost/orgs", + "repos_url": "https://api.github.com/users/ghost/repos", + "events_url": "https://api.github.com/users/ghost/events{/privacy}", + "received_events_url": "https://api.github.com/users/ghost/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2020-01-07T09:07:38Z", + "updated_at": "2020-01-07T09:07:38Z", + "body": "But '-' is in the allowed char regex:\r\nALLOWED_CHARS_PATTERN = re.compile(r'[^-a-z0-9]+')\r\nALLOWED_CHARS_PATTERN_WITH_UPPERCASE = re.compile(r'[^-a-zA-Z0-9]+')\r\n\r\nSo it's not logic to not keep them.", + "author_association": "NONE", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/571499305/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/571579981", + "html_url": "https://github.com/un33k/python-slugify/issues/91#issuecomment-571579981", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/91", + "id": 571579981, + "node_id": "MDEyOklzc3VlQ29tbWVudDU3MTU3OTk4MQ==", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2020-01-07T13:12:32Z", + "updated_at": "2020-01-07T13:16:45Z", + "body": "Yes, `-` is allowed as the default separator, which is a general form of a slug in URLS . However due to popular requests, the separator overwrite was added ... and at the end of the function, the optional separator that is passed in as a param, will be swapped in with the default one. The package is doing what is should, and if you are looking for a new feature, please create a feature request. With that said, for backward compatibility, this behavior will remain. ", + "author_association": "OWNER", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/571579981/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/598998844", + "html_url": "https://github.com/un33k/python-slugify/pull/92#issuecomment-598998844", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/92", + "id": 598998844, + "node_id": "MDEyOklzc3VlQ29tbWVudDU5ODk5ODg0NA==", + "user": { + "login": "coveralls", + "id": 2354108, + "node_id": "MDQ6VXNlcjIzNTQxMDg=", + "avatar_url": "https://avatars.githubusercontent.com/u/2354108?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/coveralls", + "html_url": "https://github.com/coveralls", + "followers_url": "https://api.github.com/users/coveralls/followers", + "following_url": "https://api.github.com/users/coveralls/following{/other_user}", + "gists_url": "https://api.github.com/users/coveralls/gists{/gist_id}", + "starred_url": "https://api.github.com/users/coveralls/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/coveralls/subscriptions", + "organizations_url": "https://api.github.com/users/coveralls/orgs", + "repos_url": "https://api.github.com/users/coveralls/repos", + "events_url": "https://api.github.com/users/coveralls/events{/privacy}", + "received_events_url": "https://api.github.com/users/coveralls/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2020-03-14T02:23:57Z", + "updated_at": "2020-04-07T22:34:37Z", + "body": "\n[![Coverage Status](https://coveralls.io/builds/29923526/badge)](https://coveralls.io/builds/29923526)\n\nCoverage increased (+2.3%) to 94.839% when pulling **abfd30e2067bcdfb624d4470f714c60f72d8c222 on jdevera:full_cli** into **e785874f0ea053cea393d396b615235e7c0ad179 on un33k:master**.\n", + "author_association": "NONE", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/598998844/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/599090173", + "html_url": "https://github.com/un33k/python-slugify/pull/92#issuecomment-599090173", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/92", + "id": 599090173, + "node_id": "MDEyOklzc3VlQ29tbWVudDU5OTA5MDE3Mw==", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2020-03-14T16:21:52Z", + "updated_at": "2020-03-14T16:21:52Z", + "body": "This is create, could you add one section to the readme.md before `Running the tests`, call it `Command Line Options`. Thank you for your great contribution. ", + "author_association": "OWNER", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/599090173/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/599223060", + "html_url": "https://github.com/un33k/python-slugify/pull/92#issuecomment-599223060", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/92", + "id": 599223060, + "node_id": "MDEyOklzc3VlQ29tbWVudDU5OTIyMzA2MA==", + "user": { + "login": "jdevera", + "id": 73069, + "node_id": "MDQ6VXNlcjczMDY5", + "avatar_url": "https://avatars.githubusercontent.com/u/73069?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/jdevera", + "html_url": "https://github.com/jdevera", + "followers_url": "https://api.github.com/users/jdevera/followers", + "following_url": "https://api.github.com/users/jdevera/following{/other_user}", + "gists_url": "https://api.github.com/users/jdevera/gists{/gist_id}", + "starred_url": "https://api.github.com/users/jdevera/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/jdevera/subscriptions", + "organizations_url": "https://api.github.com/users/jdevera/orgs", + "repos_url": "https://api.github.com/users/jdevera/repos", + "events_url": "https://api.github.com/users/jdevera/events{/privacy}", + "received_events_url": "https://api.github.com/users/jdevera/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2020-03-15T15:12:30Z", + "updated_at": "2020-03-15T15:12:30Z", + "body": "Thanks for the feedback. I added the suggested section to the README and, in the process, I found I had left one change uncommitted 🤦‍♂ so I pushed that too. Plus one more test :)", + "author_association": "COLLABORATOR", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/599223060/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/610653197", + "html_url": "https://github.com/un33k/python-slugify/pull/92#issuecomment-610653197", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/92", + "id": 610653197, + "node_id": "MDEyOklzc3VlQ29tbWVudDYxMDY1MzE5Nw==", + "user": { + "login": "jdevera", + "id": 73069, + "node_id": "MDQ6VXNlcjczMDY5", + "avatar_url": "https://avatars.githubusercontent.com/u/73069?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/jdevera", + "html_url": "https://github.com/jdevera", + "followers_url": "https://api.github.com/users/jdevera/followers", + "following_url": "https://api.github.com/users/jdevera/following{/other_user}", + "gists_url": "https://api.github.com/users/jdevera/gists{/gist_id}", + "starred_url": "https://api.github.com/users/jdevera/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/jdevera/subscriptions", + "organizations_url": "https://api.github.com/users/jdevera/orgs", + "repos_url": "https://api.github.com/users/jdevera/repos", + "events_url": "https://api.github.com/users/jdevera/events{/privacy}", + "received_events_url": "https://api.github.com/users/jdevera/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2020-04-07T22:33:37Z", + "updated_at": "2020-04-07T22:33:37Z", + "body": "For almost a month I did not realise that I had not pushed the change I said to have done. Now the PR should have the additions you asked for.", + "author_association": "COLLABORATOR", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/610653197/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/611598198", + "html_url": "https://github.com/un33k/python-slugify/pull/92#issuecomment-611598198", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/92", + "id": 611598198, + "node_id": "MDEyOklzc3VlQ29tbWVudDYxMTU5ODE5OA==", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2020-04-09T15:41:36Z", + "updated_at": "2020-04-09T15:42:22Z", + "body": "Yeah, I knew the situation was not good in Spain, and I was hoping that you were doing OK, and would find time to make the change. I am glad you are fine and healthy and thank you for your contribution. I will push it up on the next revision change. ", + "author_association": "OWNER", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/611598198/reactions", + "total_count": 1, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 1, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/674558328", + "html_url": "https://github.com/un33k/python-slugify/issues/95#issuecomment-674558328", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/95", + "id": 674558328, + "node_id": "MDEyOklzc3VlQ29tbWVudDY3NDU1ODMyOA==", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2020-08-16T18:07:35Z", + "updated_at": "2020-08-16T18:07:35Z", + "body": "Yeah, it is time to `type` everything up ... I'll look forward to your PR & thank you.", + "author_association": "OWNER", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/674558328/reactions", + "total_count": 1, + "+1": 1, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/692838146", + "html_url": "https://github.com/un33k/python-slugify/issues/94#issuecomment-692838146", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/94", + "id": 692838146, + "node_id": "MDEyOklzc3VlQ29tbWVudDY5MjgzODE0Ng==", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2020-09-15T16:45:54Z", + "updated_at": "2020-09-15T16:45:54Z", + "body": "@somenxavier Pls look at the default separator parameter. `replacements` is performed after `separator`. It doesn't matter which one is performed first, someone will be out there that would requires the reverse order. So, I do recommend that you combine the parameters to achieve what you need the final string to be. You can also pre/post `search & replace` to futher prune your string. ", + "author_association": "OWNER", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/692838146/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/720287154", + "html_url": "https://github.com/un33k/python-slugify/issues/97#issuecomment-720287154", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/97", + "id": 720287154, + "node_id": "MDEyOklzc3VlQ29tbWVudDcyMDI4NzE1NA==", + "user": { + "login": "laggardkernel", + "id": 12206611, + "node_id": "MDQ6VXNlcjEyMjA2NjEx", + "avatar_url": "https://avatars.githubusercontent.com/u/12206611?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/laggardkernel", + "html_url": "https://github.com/laggardkernel", + "followers_url": "https://api.github.com/users/laggardkernel/followers", + "following_url": "https://api.github.com/users/laggardkernel/following{/other_user}", + "gists_url": "https://api.github.com/users/laggardkernel/gists{/gist_id}", + "starred_url": "https://api.github.com/users/laggardkernel/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/laggardkernel/subscriptions", + "organizations_url": "https://api.github.com/users/laggardkernel/orgs", + "repos_url": "https://api.github.com/users/laggardkernel/repos", + "events_url": "https://api.github.com/users/laggardkernel/events{/privacy}", + "received_events_url": "https://api.github.com/users/laggardkernel/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2020-11-02T07:20:26Z", + "updated_at": "2020-11-02T07:20:26Z", + "body": "Sorry to bother you. Seems consecutive \"-\" symbols are invalid in URL in my app.", + "author_association": "NONE", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/720287154/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/722446927", + "html_url": "https://github.com/un33k/python-slugify/issues/96#issuecomment-722446927", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/96", + "id": 722446927, + "node_id": "MDEyOklzc3VlQ29tbWVudDcyMjQ0NjkyNw==", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2020-11-05T15:24:04Z", + "updated_at": "2020-11-05T15:24:16Z", + "body": "@ssbarnea Be great if you can create a PR. Thx", + "author_association": "OWNER", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/722446927/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/733009411", + "html_url": "https://github.com/un33k/python-slugify/issues/96#issuecomment-733009411", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/96", + "id": 733009411, + "node_id": "MDEyOklzc3VlQ29tbWVudDczMzAwOTQxMQ==", + "user": { + "login": "thijstriemstra", + "id": 305679, + "node_id": "MDQ6VXNlcjMwNTY3OQ==", + "avatar_url": "https://avatars.githubusercontent.com/u/305679?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/thijstriemstra", + "html_url": "https://github.com/thijstriemstra", + "followers_url": "https://api.github.com/users/thijstriemstra/followers", + "following_url": "https://api.github.com/users/thijstriemstra/following{/other_user}", + "gists_url": "https://api.github.com/users/thijstriemstra/gists{/gist_id}", + "starred_url": "https://api.github.com/users/thijstriemstra/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/thijstriemstra/subscriptions", + "organizations_url": "https://api.github.com/users/thijstriemstra/orgs", + "repos_url": "https://api.github.com/users/thijstriemstra/repos", + "events_url": "https://api.github.com/users/thijstriemstra/events{/privacy}", + "received_events_url": "https://api.github.com/users/thijstriemstra/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2020-11-24T14:28:42Z", + "updated_at": "2020-11-24T14:28:42Z", + "body": "Was having the same issue. Since the correct info in `setup.cfg` is already there, it's a matter of publishing the wheel correctly, no PR needed.\r\n\r\n```\r\npython setup.py bdist_wheel\r\n```\r\n\r\nSee https://packaging.python.org/guides/distributing-packages-using-setuptools/#wheels @un33k ", + "author_association": "NONE", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/733009411/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/736645208", + "html_url": "https://github.com/un33k/python-slugify/issues/96#issuecomment-736645208", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/96", + "id": 736645208, + "node_id": "MDEyOklzc3VlQ29tbWVudDczNjY0NTIwOA==", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2020-12-01T15:58:45Z", + "updated_at": "2020-12-01T16:00:40Z", + "body": "I was hoping for a publish.sh where it would run ...\r\n\r\n```\r\npython setup.py publish && python setup.py bdist_wheel\r\n```\r\n\r\nI guess I can run them manually as well .. \r\n\r\n@thijstriemstra - Thanks for your comment. I'll push this up soon. ", + "author_association": "OWNER", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/736645208/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/736670539", + "html_url": "https://github.com/un33k/python-slugify/issues/96#issuecomment-736670539", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/96", + "id": 736670539, + "node_id": "MDEyOklzc3VlQ29tbWVudDczNjY3MDUzOQ==", + "user": { + "login": "thijstriemstra", + "id": 305679, + "node_id": "MDQ6VXNlcjMwNTY3OQ==", + "avatar_url": "https://avatars.githubusercontent.com/u/305679?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/thijstriemstra", + "html_url": "https://github.com/thijstriemstra", + "followers_url": "https://api.github.com/users/thijstriemstra/followers", + "following_url": "https://api.github.com/users/thijstriemstra/following{/other_user}", + "gists_url": "https://api.github.com/users/thijstriemstra/gists{/gist_id}", + "starred_url": "https://api.github.com/users/thijstriemstra/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/thijstriemstra/subscriptions", + "organizations_url": "https://api.github.com/users/thijstriemstra/orgs", + "repos_url": "https://api.github.com/users/thijstriemstra/repos", + "events_url": "https://api.github.com/users/thijstriemstra/events{/privacy}", + "received_events_url": "https://api.github.com/users/thijstriemstra/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2020-12-01T16:39:44Z", + "updated_at": "2020-12-01T16:39:44Z", + "body": "make sure the wheel contains everything you want, or you might need an `MANIFEST.in` file..", + "author_association": "NONE", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/736670539/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/736750143", + "html_url": "https://github.com/un33k/python-slugify/issues/96#issuecomment-736750143", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/96", + "id": 736750143, + "node_id": "MDEyOklzc3VlQ29tbWVudDczNjc1MDE0Mw==", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2020-12-01T18:54:30Z", + "updated_at": "2020-12-01T18:54:30Z", + "body": "Back to my original call for a PR ... ", + "author_association": "OWNER", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/736750143/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/830269369", + "html_url": "https://github.com/un33k/python-slugify/pull/98#issuecomment-830269369", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/98", + "id": 830269369, + "node_id": "MDEyOklzc3VlQ29tbWVudDgzMDI2OTM2OQ==", + "user": { + "login": "coveralls", + "id": 2354108, + "node_id": "MDQ6VXNlcjIzNTQxMDg=", + "avatar_url": "https://avatars.githubusercontent.com/u/2354108?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/coveralls", + "html_url": "https://github.com/coveralls", + "followers_url": "https://api.github.com/users/coveralls/followers", + "following_url": "https://api.github.com/users/coveralls/following{/other_user}", + "gists_url": "https://api.github.com/users/coveralls/gists{/gist_id}", + "starred_url": "https://api.github.com/users/coveralls/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/coveralls/subscriptions", + "organizations_url": "https://api.github.com/users/coveralls/orgs", + "repos_url": "https://api.github.com/users/coveralls/repos", + "events_url": "https://api.github.com/users/coveralls/events{/privacy}", + "received_events_url": "https://api.github.com/users/coveralls/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2021-04-30T18:06:57Z", + "updated_at": "2021-04-30T18:34:19Z", + "body": "\n[![Coverage Status](https://coveralls.io/builds/39270107/badge)](https://coveralls.io/builds/39270107)\n\nCoverage remained the same at 94.839% when pulling **ce8361aaa916cd2fef7518c7169d874b44f7fc1e on jon-betts:add-tox** into **c340834bb2afb24d78151c018496f4273fb7be37 on un33k:master**.\n", + "author_association": "NONE", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/830269369/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/830269372", + "html_url": "https://github.com/un33k/python-slugify/pull/98#issuecomment-830269372", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/98", + "id": 830269372, + "node_id": "MDEyOklzc3VlQ29tbWVudDgzMDI2OTM3Mg==", + "user": { + "login": "coveralls", + "id": 2354108, + "node_id": "MDQ6VXNlcjIzNTQxMDg=", + "avatar_url": "https://avatars.githubusercontent.com/u/2354108?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/coveralls", + "html_url": "https://github.com/coveralls", + "followers_url": "https://api.github.com/users/coveralls/followers", + "following_url": "https://api.github.com/users/coveralls/following{/other_user}", + "gists_url": "https://api.github.com/users/coveralls/gists{/gist_id}", + "starred_url": "https://api.github.com/users/coveralls/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/coveralls/subscriptions", + "organizations_url": "https://api.github.com/users/coveralls/orgs", + "repos_url": "https://api.github.com/users/coveralls/repos", + "events_url": "https://api.github.com/users/coveralls/events{/privacy}", + "received_events_url": "https://api.github.com/users/coveralls/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2021-04-30T18:06:58Z", + "updated_at": "2021-04-30T18:06:58Z", + "body": "\n[![Coverage Status](https://coveralls.io/builds/39269474/badge)](https://coveralls.io/builds/39269474)\n\nCoverage remained the same at 94.839% when pulling **762ec335f4c5bd4e97c3a54094c76bd26329781e on jon-betts:add-tox** into **c340834bb2afb24d78151c018496f4273fb7be37 on un33k:master**.\n", + "author_association": "NONE", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/830269372/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/830289014", + "html_url": "https://github.com/un33k/python-slugify/pull/98#issuecomment-830289014", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/98", + "id": 830289014, + "node_id": "MDEyOklzc3VlQ29tbWVudDgzMDI4OTAxNA==", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2021-04-30T18:42:58Z", + "updated_at": "2021-04-30T18:42:58Z", + "body": "@jon-betts Thank you for the PR. Please note that support for py 2.7 is going to be removed on next full version coming soon. With that said, I see that this PR is introducing a dependency to py 2.7 in the yaml file. ", + "author_association": "OWNER", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/830289014/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/830308662", + "html_url": "https://github.com/un33k/python-slugify/pull/98#issuecomment-830308662", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/98", + "id": 830308662, + "node_id": "MDEyOklzc3VlQ29tbWVudDgzMDMwODY2Mg==", + "user": { + "login": "jon-betts", + "id": 7131143, + "node_id": "MDQ6VXNlcjcxMzExNDM=", + "avatar_url": "https://avatars.githubusercontent.com/u/7131143?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/jon-betts", + "html_url": "https://github.com/jon-betts", + "followers_url": "https://api.github.com/users/jon-betts/followers", + "following_url": "https://api.github.com/users/jon-betts/following{/other_user}", + "gists_url": "https://api.github.com/users/jon-betts/gists{/gist_id}", + "starred_url": "https://api.github.com/users/jon-betts/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/jon-betts/subscriptions", + "organizations_url": "https://api.github.com/users/jon-betts/orgs", + "repos_url": "https://api.github.com/users/jon-betts/repos", + "events_url": "https://api.github.com/users/jon-betts/events{/privacy}", + "received_events_url": "https://api.github.com/users/jon-betts/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2021-04-30T18:57:24Z", + "updated_at": "2021-04-30T18:57:24Z", + "body": "Hi @un33k, if you mean the part about cryptography:\r\n\r\n> ```pip install coveralls 'cryptography<=3.0;python_version==\"2.7\"'```\r\n\r\nThis is an \"environment marker\" (https://www.python.org/dev/peps/pep-0508/#environment-markers). This is kind of an if statement which says if the `python_version` is 2.7 then apply this requirement.\r\n\r\nSo for Python 2.7 environments like CPython 2.7 or pypy the effective requirements will be:\r\n\r\n * `coveralls cryptography<=3.0`\r\n \r\nBut for pypy3 or Python 3.x the effective requirements are:\r\n\r\n* `coveralls`\r\n\r\nThis doesn't add a requirement for Python 2.7.\r\n\r\nI'm also happy to rework this to remove `pypy` and 2.7 if you are intending to do that anyway.\r\n\r\n", + "author_association": "CONTRIBUTOR", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/830308662/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/830316135", + "html_url": "https://github.com/un33k/python-slugify/pull/98#issuecomment-830316135", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/98", + "id": 830316135, + "node_id": "MDEyOklzc3VlQ29tbWVudDgzMDMxNjEzNQ==", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2021-04-30T19:11:41Z", + "updated_at": "2021-04-30T19:11:41Z", + "body": "No worries - I'll remove it on next up version or during badging of this PR. ", + "author_association": "OWNER", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/830316135/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/830316390", + "html_url": "https://github.com/un33k/python-slugify/pull/98#issuecomment-830316390", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/98", + "id": 830316390, + "node_id": "MDEyOklzc3VlQ29tbWVudDgzMDMxNjM5MA==", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2021-04-30T19:12:13Z", + "updated_at": "2021-04-30T19:12:13Z", + "body": "@jon-betts Thank you very much. ", + "author_association": "OWNER", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/830316390/reactions", + "total_count": 1, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 1, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/830352241", + "html_url": "https://github.com/un33k/python-slugify/pull/98#issuecomment-830352241", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/98", + "id": 830352241, + "node_id": "MDEyOklzc3VlQ29tbWVudDgzMDM1MjI0MQ==", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2021-04-30T20:07:56Z", + "updated_at": "2021-04-30T20:07:56Z", + "body": "@jon-betts your PR has been pushed to pypi under version 5.0.0. Thx", + "author_association": "OWNER", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/830352241/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/830660335", + "html_url": "https://github.com/un33k/python-slugify/pull/99#issuecomment-830660335", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/99", + "id": 830660335, + "node_id": "MDEyOklzc3VlQ29tbWVudDgzMDY2MDMzNQ==", + "user": { + "login": "coveralls", + "id": 2354108, + "node_id": "MDQ6VXNlcjIzNTQxMDg=", + "avatar_url": "https://avatars.githubusercontent.com/u/2354108?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/coveralls", + "html_url": "https://github.com/coveralls", + "followers_url": "https://api.github.com/users/coveralls/followers", + "following_url": "https://api.github.com/users/coveralls/following{/other_user}", + "gists_url": "https://api.github.com/users/coveralls/gists{/gist_id}", + "starred_url": "https://api.github.com/users/coveralls/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/coveralls/subscriptions", + "organizations_url": "https://api.github.com/users/coveralls/orgs", + "repos_url": "https://api.github.com/users/coveralls/repos", + "events_url": "https://api.github.com/users/coveralls/events{/privacy}", + "received_events_url": "https://api.github.com/users/coveralls/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2021-05-01T16:47:53Z", + "updated_at": "2021-05-01T16:48:07Z", + "body": "\n[![Coverage Status](https://coveralls.io/builds/39284412/badge)](https://coveralls.io/builds/39284412)\n\nCoverage remained the same at 92.258% when pulling **ab3bd4ac9acab32a36b31a33409aba1f07c6503c on DmytroLitvinov:patch-1** into **319559cb43f239ac0d3bc7b975a78059bf4a1086 on un33k:master**.\n", + "author_association": "NONE", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/830660335/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/830660911", + "html_url": "https://github.com/un33k/python-slugify/pull/100#issuecomment-830660911", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/100", + "id": 830660911, + "node_id": "MDEyOklzc3VlQ29tbWVudDgzMDY2MDkxMQ==", + "user": { + "login": "coveralls", + "id": 2354108, + "node_id": "MDQ6VXNlcjIzNTQxMDg=", + "avatar_url": "https://avatars.githubusercontent.com/u/2354108?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/coveralls", + "html_url": "https://github.com/coveralls", + "followers_url": "https://api.github.com/users/coveralls/followers", + "following_url": "https://api.github.com/users/coveralls/following{/other_user}", + "gists_url": "https://api.github.com/users/coveralls/gists{/gist_id}", + "starred_url": "https://api.github.com/users/coveralls/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/coveralls/subscriptions", + "organizations_url": "https://api.github.com/users/coveralls/orgs", + "repos_url": "https://api.github.com/users/coveralls/repos", + "events_url": "https://api.github.com/users/coveralls/events{/privacy}", + "received_events_url": "https://api.github.com/users/coveralls/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2021-05-01T16:51:47Z", + "updated_at": "2021-05-01T16:52:18Z", + "body": "\n[![Coverage Status](https://coveralls.io/builds/39284426/badge)](https://coveralls.io/builds/39284426)\n\nCoverage remained the same at 92.258% when pulling **df352cc6fb64dcbf52f8faa6238d119f6b424e4e on DmytroLitvinov:patch-2** into **319559cb43f239ac0d3bc7b975a78059bf4a1086 on un33k:master**.\n", + "author_association": "NONE", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/830660911/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/833106670", + "html_url": "https://github.com/un33k/python-slugify/pull/99#issuecomment-833106670", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/99", + "id": 833106670, + "node_id": "MDEyOklzc3VlQ29tbWVudDgzMzEwNjY3MA==", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2021-05-05T23:10:56Z", + "updated_at": "2021-05-05T23:10:56Z", + "body": "Great & Thx", + "author_association": "OWNER", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/833106670/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/833107040", + "html_url": "https://github.com/un33k/python-slugify/pull/100#issuecomment-833107040", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/100", + "id": 833107040, + "node_id": "MDEyOklzc3VlQ29tbWVudDgzMzEwNzA0MA==", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2021-05-05T23:11:57Z", + "updated_at": "2021-05-05T23:11:57Z", + "body": "Great & Thx", + "author_association": "OWNER", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/833107040/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/837572935", + "html_url": "https://github.com/un33k/python-slugify/pull/102#issuecomment-837572935", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/102", + "id": 837572935, + "node_id": "MDEyOklzc3VlQ29tbWVudDgzNzU3MjkzNQ==", + "user": { + "login": "coveralls", + "id": 2354108, + "node_id": "MDQ6VXNlcjIzNTQxMDg=", + "avatar_url": "https://avatars.githubusercontent.com/u/2354108?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/coveralls", + "html_url": "https://github.com/coveralls", + "followers_url": "https://api.github.com/users/coveralls/followers", + "following_url": "https://api.github.com/users/coveralls/following{/other_user}", + "gists_url": "https://api.github.com/users/coveralls/gists{/gist_id}", + "starred_url": "https://api.github.com/users/coveralls/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/coveralls/subscriptions", + "organizations_url": "https://api.github.com/users/coveralls/orgs", + "repos_url": "https://api.github.com/users/coveralls/repos", + "events_url": "https://api.github.com/users/coveralls/events{/privacy}", + "received_events_url": "https://api.github.com/users/coveralls/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2021-05-11T00:54:10Z", + "updated_at": "2021-05-11T00:54:13Z", + "body": "\n[![Coverage Status](https://coveralls.io/builds/39551661/badge)](https://coveralls.io/builds/39551661)\n\nCoverage increased (+0.05%) to 92.308% when pulling **b9ee8754c31736f8ad5db975497f86757890fc86 on fahhem:patch-1** into **937779c77420f4acb8acd775bc2c35ed94f1393d on un33k:master**.\n", + "author_association": "NONE", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/837572935/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/839958402", + "html_url": "https://github.com/un33k/python-slugify/pull/102#issuecomment-839958402", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/102", + "id": 839958402, + "node_id": "MDEyOklzc3VlQ29tbWVudDgzOTk1ODQwMg==", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2021-05-12T17:25:19Z", + "updated_at": "2021-05-12T17:25:19Z", + "body": "Great and Thx - It will be pushed on the next release cycle.", + "author_association": "OWNER", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/839958402/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/848159366", + "html_url": "https://github.com/un33k/python-slugify/pull/104#issuecomment-848159366", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/104", + "id": 848159366, + "node_id": "MDEyOklzc3VlQ29tbWVudDg0ODE1OTM2Ng==", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2021-05-25T18:48:16Z", + "updated_at": "2021-05-25T18:49:34Z", + "body": "This `[^-a-zA-Z0-9]+` means allow a-z and A-Z and 0-9, one or more occurrence. Pretty much it only `allows` alphanumeric chars and \"-\". So, it works as expected. ", + "author_association": "OWNER", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/848159366/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/848194589", + "html_url": "https://github.com/un33k/python-slugify/pull/104#issuecomment-848194589", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/104", + "id": 848194589, + "node_id": "MDEyOklzc3VlQ29tbWVudDg0ODE5NDU4OQ==", + "user": { + "login": "coveralls", + "id": 2354108, + "node_id": "MDQ6VXNlcjIzNTQxMDg=", + "avatar_url": "https://avatars.githubusercontent.com/u/2354108?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/coveralls", + "html_url": "https://github.com/coveralls", + "followers_url": "https://api.github.com/users/coveralls/followers", + "following_url": "https://api.github.com/users/coveralls/following{/other_user}", + "gists_url": "https://api.github.com/users/coveralls/gists{/gist_id}", + "starred_url": "https://api.github.com/users/coveralls/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/coveralls/subscriptions", + "organizations_url": "https://api.github.com/users/coveralls/orgs", + "repos_url": "https://api.github.com/users/coveralls/repos", + "events_url": "https://api.github.com/users/coveralls/events{/privacy}", + "received_events_url": "https://api.github.com/users/coveralls/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2021-05-25T19:16:52Z", + "updated_at": "2021-05-25T19:16:52Z", + "body": "\n[![Coverage Status](https://coveralls.io/builds/40003715/badge)](https://coveralls.io/builds/40003715)\n\nCoverage remained the same at 92.258% when pulling **6c27fd835cf7a34b6be79d4a8a3e6d0ec154829a on yyyyyyyan:clarify-regex-docs** into **937779c77420f4acb8acd775bc2c35ed94f1393d on un33k:staging**.\n", + "author_association": "NONE", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/848194589/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/848761156", + "html_url": "https://github.com/un33k/python-slugify/pull/104#issuecomment-848761156", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/104", + "id": 848761156, + "node_id": "MDEyOklzc3VlQ29tbWVudDg0ODc2MTE1Ng==", + "user": { + "login": "yyyyyyyan", + "id": 24644216, + "node_id": "MDQ6VXNlcjI0NjQ0MjE2", + "avatar_url": "https://avatars.githubusercontent.com/u/24644216?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/yyyyyyyan", + "html_url": "https://github.com/yyyyyyyan", + "followers_url": "https://api.github.com/users/yyyyyyyan/followers", + "following_url": "https://api.github.com/users/yyyyyyyan/following{/other_user}", + "gists_url": "https://api.github.com/users/yyyyyyyan/gists{/gist_id}", + "starred_url": "https://api.github.com/users/yyyyyyyan/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/yyyyyyyan/subscriptions", + "organizations_url": "https://api.github.com/users/yyyyyyyan/orgs", + "repos_url": "https://api.github.com/users/yyyyyyyan/repos", + "events_url": "https://api.github.com/users/yyyyyyyan/events{/privacy}", + "received_events_url": "https://api.github.com/users/yyyyyyyan/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2021-05-26T13:15:58Z", + "updated_at": "2021-05-26T13:19:29Z", + "body": "> This `[^-a-zA-Z0-9]+` means allow a-z and A-Z and 0-9, one or more occurrence. Pretty much it only `allows` alphanumeric chars and \"-\". So, it works as expected.\r\n\r\nIt's a pattern for matching literally everything outside the allowed characters. How does it work as expected? If you say the parameter should be a pattern to match the allowed characters, then I expect to use `[-a-zA-Z0-9]`, but that doesn't work, because it's reversed.\r\n\r\n> This `[^-a-zA-Z0-9]+` means allow a-z and A-Z and 0-9, one or more occurrence.\r\n\r\nThis is completely false. Do you understand regex?\r\n\r\nThe documentation for the parameter is absolutely terrible and you should fix it.", + "author_association": "NONE", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/848761156/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/848883083", + "html_url": "https://github.com/un33k/python-slugify/issues/103#issuecomment-848883083", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/103", + "id": 848883083, + "node_id": "MDEyOklzc3VlQ29tbWVudDg0ODg4MzA4Mw==", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2021-05-26T15:41:29Z", + "updated_at": "2021-05-26T15:41:29Z", + "body": "Done!", + "author_association": "OWNER", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/848883083/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/855245520", + "html_url": "https://github.com/un33k/python-slugify/issues/105#issuecomment-855245520", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/105", + "id": 855245520, + "node_id": "MDEyOklzc3VlQ29tbWVudDg1NTI0NTUyMA==", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2021-06-05T14:08:30Z", + "updated_at": "2021-06-05T14:08:30Z", + "body": "@ShubhamKhandare If the underlaying libraries don't support emojis, the slug will be empty. \r\n\r\nDepending on the package you use, you may want to raise the ticket with one of the following supported packages. \r\n\r\n`text_unidecode` OR `unidecode`.", + "author_association": "OWNER", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/855245520/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/856203105", + "html_url": "https://github.com/un33k/python-slugify/issues/103#issuecomment-856203105", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/103", + "id": 856203105, + "node_id": "MDEyOklzc3VlQ29tbWVudDg1NjIwMzEwNQ==", + "user": { + "login": "alucryd", + "id": 1561084, + "node_id": "MDQ6VXNlcjE1NjEwODQ=", + "avatar_url": "https://avatars.githubusercontent.com/u/1561084?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/alucryd", + "html_url": "https://github.com/alucryd", + "followers_url": "https://api.github.com/users/alucryd/followers", + "following_url": "https://api.github.com/users/alucryd/following{/other_user}", + "gists_url": "https://api.github.com/users/alucryd/gists{/gist_id}", + "starred_url": "https://api.github.com/users/alucryd/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/alucryd/subscriptions", + "organizations_url": "https://api.github.com/users/alucryd/orgs", + "repos_url": "https://api.github.com/users/alucryd/repos", + "events_url": "https://api.github.com/users/alucryd/events{/privacy}", + "received_events_url": "https://api.github.com/users/alucryd/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2021-06-07T19:36:35Z", + "updated_at": "2021-06-07T19:36:35Z", + "body": "Thank you!", + "author_association": "NONE", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/856203105/reactions", + "total_count": 1, + "+1": 1, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/890394648", + "html_url": "https://github.com/un33k/python-slugify/issues/106#issuecomment-890394648", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/106", + "id": 890394648, + "node_id": "IC_kwDOAF7qK841ElgY", + "user": { + "login": "Devaniti", + "id": 16295437, + "node_id": "MDQ6VXNlcjE2Mjk1NDM3", + "avatar_url": "https://avatars.githubusercontent.com/u/16295437?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/Devaniti", + "html_url": "https://github.com/Devaniti", + "followers_url": "https://api.github.com/users/Devaniti/followers", + "following_url": "https://api.github.com/users/Devaniti/following{/other_user}", + "gists_url": "https://api.github.com/users/Devaniti/gists{/gist_id}", + "starred_url": "https://api.github.com/users/Devaniti/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/Devaniti/subscriptions", + "organizations_url": "https://api.github.com/users/Devaniti/orgs", + "repos_url": "https://api.github.com/users/Devaniti/repos", + "events_url": "https://api.github.com/users/Devaniti/events{/privacy}", + "received_events_url": "https://api.github.com/users/Devaniti/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2021-07-31T19:30:14Z", + "updated_at": "2021-07-31T19:30:14Z", + "body": "You should probably use something like python-slugify to replace title with something \"safe\" for filenames", + "author_association": "NONE", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/890394648/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/890394968", + "html_url": "https://github.com/un33k/python-slugify/issues/106#issuecomment-890394968", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/106", + "id": 890394968, + "node_id": "IC_kwDOAF7qK841EllY", + "user": { + "login": "Devaniti", + "id": 16295437, + "node_id": "MDQ6VXNlcjE2Mjk1NDM3", + "avatar_url": "https://avatars.githubusercontent.com/u/16295437?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/Devaniti", + "html_url": "https://github.com/Devaniti", + "followers_url": "https://api.github.com/users/Devaniti/followers", + "following_url": "https://api.github.com/users/Devaniti/following{/other_user}", + "gists_url": "https://api.github.com/users/Devaniti/gists{/gist_id}", + "starred_url": "https://api.github.com/users/Devaniti/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/Devaniti/subscriptions", + "organizations_url": "https://api.github.com/users/Devaniti/orgs", + "repos_url": "https://api.github.com/users/Devaniti/repos", + "events_url": "https://api.github.com/users/Devaniti/events{/privacy}", + "received_events_url": "https://api.github.com/users/Devaniti/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2021-07-31T19:32:36Z", + "updated_at": "2021-07-31T19:32:36Z", + "body": "Sorry, wrong repo", + "author_association": "NONE", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/890394968/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/941272100", + "html_url": "https://github.com/un33k/python-slugify/issues/85#issuecomment-941272100", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/85", + "id": 941272100, + "node_id": "IC_kwDOAF7qK844Gqwk", + "user": { + "login": "kennell", + "id": 2326287, + "node_id": "MDQ6VXNlcjIzMjYyODc=", + "avatar_url": "https://avatars.githubusercontent.com/u/2326287?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/kennell", + "html_url": "https://github.com/kennell", + "followers_url": "https://api.github.com/users/kennell/followers", + "following_url": "https://api.github.com/users/kennell/following{/other_user}", + "gists_url": "https://api.github.com/users/kennell/gists{/gist_id}", + "starred_url": "https://api.github.com/users/kennell/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/kennell/subscriptions", + "organizations_url": "https://api.github.com/users/kennell/orgs", + "repos_url": "https://api.github.com/users/kennell/repos", + "events_url": "https://api.github.com/users/kennell/events{/privacy}", + "received_events_url": "https://api.github.com/users/kennell/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2021-10-12T18:29:33Z", + "updated_at": "2021-10-12T18:29:33Z", + "body": "^ the code example above has several syntax errors. Here is a Python3 code example for people stumbling on this issue via Google:\r\n\r\n```python\r\nfrom slugify import slugify\r\nGERMAN_UMLAUT = [\r\n ['ä', 'ae'],\r\n ['ö', 'oe'],\r\n ['ü', 'ue'],\r\n]\r\nslugify('Baden-Württemberg', replacements=GERMAN_UMLAUT)\r\n```", + "author_association": "NONE", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/941272100/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/956542493", + "html_url": "https://github.com/un33k/python-slugify/issues/107#issuecomment-956542493", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/107", + "id": 956542493, + "node_id": "IC_kwDOAF7qK845A64d", + "user": { + "login": "adamcunnington-mlg", + "id": 93528462, + "node_id": "U_kgDOBZMhjg", + "avatar_url": "https://avatars.githubusercontent.com/u/93528462?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/adamcunnington-mlg", + "html_url": "https://github.com/adamcunnington-mlg", + "followers_url": "https://api.github.com/users/adamcunnington-mlg/followers", + "following_url": "https://api.github.com/users/adamcunnington-mlg/following{/other_user}", + "gists_url": "https://api.github.com/users/adamcunnington-mlg/gists{/gist_id}", + "starred_url": "https://api.github.com/users/adamcunnington-mlg/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/adamcunnington-mlg/subscriptions", + "organizations_url": "https://api.github.com/users/adamcunnington-mlg/orgs", + "repos_url": "https://api.github.com/users/adamcunnington-mlg/repos", + "events_url": "https://api.github.com/users/adamcunnington-mlg/events{/privacy}", + "received_events_url": "https://api.github.com/users/adamcunnington-mlg/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2021-11-01T19:57:11Z", + "updated_at": "2021-11-01T19:57:11Z", + "body": "Pretty sure it is a big, caused by https://github.com/un33k/python-slugify/blob/master/slugify/slugify.py#L179\r\n\r\nLooks like there is a test case missing.", + "author_association": "NONE", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/956542493/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/958243440", + "html_url": "https://github.com/un33k/python-slugify/issues/107#issuecomment-958243440", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/107", + "id": 958243440, + "node_id": "IC_kwDOAF7qK845HaJw", + "user": { + "login": "adamcunnington-mlg", + "id": 93528462, + "node_id": "U_kgDOBZMhjg", + "avatar_url": "https://avatars.githubusercontent.com/u/93528462?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/adamcunnington-mlg", + "html_url": "https://github.com/adamcunnington-mlg", + "followers_url": "https://api.github.com/users/adamcunnington-mlg/followers", + "following_url": "https://api.github.com/users/adamcunnington-mlg/following{/other_user}", + "gists_url": "https://api.github.com/users/adamcunnington-mlg/gists{/gist_id}", + "starred_url": "https://api.github.com/users/adamcunnington-mlg/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/adamcunnington-mlg/subscriptions", + "organizations_url": "https://api.github.com/users/adamcunnington-mlg/orgs", + "repos_url": "https://api.github.com/users/adamcunnington-mlg/repos", + "events_url": "https://api.github.com/users/adamcunnington-mlg/events{/privacy}", + "received_events_url": "https://api.github.com/users/adamcunnington-mlg/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2021-11-02T22:08:24Z", + "updated_at": "2021-11-02T22:08:24Z", + "body": "@un33k ", + "author_association": "NONE", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/958243440/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/958254524", + "html_url": "https://github.com/un33k/python-slugify/issues/107#issuecomment-958254524", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/107", + "id": 958254524, + "node_id": "IC_kwDOAF7qK845Hc28", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2021-11-02T22:13:33Z", + "updated_at": "2021-11-02T22:15:52Z", + "body": "Please note that '-' is a reserved character in slugs. This package allows an atomic replacement of the default separator of '-' with something else towards the end of the process.\r\n\r\nA simple preprocess of the text is recommended for special cases.\r\n\r\nAll PRs are considered provided they remain backward compatible. \r\n\r\n", + "author_association": "OWNER", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/958254524/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/958264823", + "html_url": "https://github.com/un33k/python-slugify/issues/107#issuecomment-958264823", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/107", + "id": 958264823, + "node_id": "IC_kwDOAF7qK845HfX3", + "user": { + "login": "adamcunnington-mlg", + "id": 93528462, + "node_id": "U_kgDOBZMhjg", + "avatar_url": "https://avatars.githubusercontent.com/u/93528462?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/adamcunnington-mlg", + "html_url": "https://github.com/adamcunnington-mlg", + "followers_url": "https://api.github.com/users/adamcunnington-mlg/followers", + "following_url": "https://api.github.com/users/adamcunnington-mlg/following{/other_user}", + "gists_url": "https://api.github.com/users/adamcunnington-mlg/gists{/gist_id}", + "starred_url": "https://api.github.com/users/adamcunnington-mlg/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/adamcunnington-mlg/subscriptions", + "organizations_url": "https://api.github.com/users/adamcunnington-mlg/orgs", + "repos_url": "https://api.github.com/users/adamcunnington-mlg/repos", + "events_url": "https://api.github.com/users/adamcunnington-mlg/events{/privacy}", + "received_events_url": "https://api.github.com/users/adamcunnington-mlg/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2021-11-02T22:18:22Z", + "updated_at": "2021-11-02T22:18:59Z", + "body": "Ok, I think this is definitely PR-worthy. I agree that '-' is a reserved character - but this is precisely the reason why you shouldn't remove them. I can pre-process the string; sure; but this seems a bit broken.\r\n\r\nWill find time to raise PR but I'm not sure how this can remain backwards compatible as this would be changing (fixing) behaviour where input string contains a - character. Do you imagine this being behind a feature toggle that defaults to current behaviour perhaps?", + "author_association": "NONE", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/958264823/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/958785900", + "html_url": "https://github.com/un33k/python-slugify/issues/107#issuecomment-958785900", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/107", + "id": 958785900, + "node_id": "IC_kwDOAF7qK845Jels", + "user": { + "login": "adamcunnington-mlg", + "id": 93528462, + "node_id": "U_kgDOBZMhjg", + "avatar_url": "https://avatars.githubusercontent.com/u/93528462?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/adamcunnington-mlg", + "html_url": "https://github.com/adamcunnington-mlg", + "followers_url": "https://api.github.com/users/adamcunnington-mlg/followers", + "following_url": "https://api.github.com/users/adamcunnington-mlg/following{/other_user}", + "gists_url": "https://api.github.com/users/adamcunnington-mlg/gists{/gist_id}", + "starred_url": "https://api.github.com/users/adamcunnington-mlg/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/adamcunnington-mlg/subscriptions", + "organizations_url": "https://api.github.com/users/adamcunnington-mlg/orgs", + "repos_url": "https://api.github.com/users/adamcunnington-mlg/repos", + "events_url": "https://api.github.com/users/adamcunnington-mlg/events{/privacy}", + "received_events_url": "https://api.github.com/users/adamcunnington-mlg/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2021-11-03T09:40:38Z", + "updated_at": "2021-11-03T09:40:38Z", + "body": "Also, there's a logical problem with the suggested workaround. Pre-processing the string is highly problematic - what character am I going to replace - with, before I pass it to a call to slugify that is going to replace characters that don't match my regex? I have a very limited set of options and whatever I choose could legitimately appear elsewhere in the string and be erroneously substituted by the post-processing.\r\n\r\nThe only thing I could do is replace - with some string that i think is going to be reasonably unique. This is brittle and bad. This behaviour should belong to slugify.", + "author_association": "NONE", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/958785900/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/958976369", + "html_url": "https://github.com/un33k/python-slugify/issues/107#issuecomment-958976369", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/107", + "id": 958976369, + "node_id": "IC_kwDOAF7qK845KNFx", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2021-11-03T12:17:41Z", + "updated_at": "2021-11-03T12:20:32Z", + "body": "I think we have examples on how to handle this situation.\r\n\r\nhttps://github.com/un33k/python-slugify/blob/a90d96778a004a9f2fdc232debcd72fdb5bbf085/test.py#L94\r\n\r\n", + "author_association": "OWNER", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/958976369/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/986054897", + "html_url": "https://github.com/un33k/python-slugify/issues/107#issuecomment-986054897", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/107", + "id": 986054897, + "node_id": "IC_kwDOAF7qK846xgDx", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2021-12-04T16:33:42Z", + "updated_at": "2021-12-04T16:33:54Z", + "body": "Closing this now, feel free to reopen if the above example is not addressing your needs and/or you have a non-breaking PR.", + "author_association": "OWNER", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/986054897/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/993432520", + "html_url": "https://github.com/un33k/python-slugify/issues/107#issuecomment-993432520", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/107", + "id": 993432520, + "node_id": "IC_kwDOAF7qK847NpPI", + "user": { + "login": "ideepu", + "id": 16902925, + "node_id": "MDQ6VXNlcjE2OTAyOTI1", + "avatar_url": "https://avatars.githubusercontent.com/u/16902925?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/ideepu", + "html_url": "https://github.com/ideepu", + "followers_url": "https://api.github.com/users/ideepu/followers", + "following_url": "https://api.github.com/users/ideepu/following{/other_user}", + "gists_url": "https://api.github.com/users/ideepu/gists{/gist_id}", + "starred_url": "https://api.github.com/users/ideepu/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/ideepu/subscriptions", + "organizations_url": "https://api.github.com/users/ideepu/orgs", + "repos_url": "https://api.github.com/users/ideepu/repos", + "events_url": "https://api.github.com/users/ideepu/events{/privacy}", + "received_events_url": "https://api.github.com/users/ideepu/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2021-12-14T11:10:31Z", + "updated_at": "2021-12-14T11:10:31Z", + "body": "I am facing the same issue here. I have a text like this `121232-some text here-some text here again` \r\nTrying to `slugify` the text with separator `' '`. Expecting the output `121232-some text here-some text here again` but got `121232 some text here some text here again` \r\n\r\nIs there any work around for this. ", + "author_association": "NONE", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/993432520/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/993441027", + "html_url": "https://github.com/un33k/python-slugify/issues/107#issuecomment-993441027", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/107", + "id": 993441027, + "node_id": "IC_kwDOAF7qK847NrUD", + "user": { + "login": "adamcunnington-mlg", + "id": 93528462, + "node_id": "U_kgDOBZMhjg", + "avatar_url": "https://avatars.githubusercontent.com/u/93528462?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/adamcunnington-mlg", + "html_url": "https://github.com/adamcunnington-mlg", + "followers_url": "https://api.github.com/users/adamcunnington-mlg/followers", + "following_url": "https://api.github.com/users/adamcunnington-mlg/following{/other_user}", + "gists_url": "https://api.github.com/users/adamcunnington-mlg/gists{/gist_id}", + "starred_url": "https://api.github.com/users/adamcunnington-mlg/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/adamcunnington-mlg/subscriptions", + "organizations_url": "https://api.github.com/users/adamcunnington-mlg/orgs", + "repos_url": "https://api.github.com/users/adamcunnington-mlg/repos", + "events_url": "https://api.github.com/users/adamcunnington-mlg/events{/privacy}", + "received_events_url": "https://api.github.com/users/adamcunnington-mlg/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2021-12-14T11:20:51Z", + "updated_at": "2021-12-14T11:20:51Z", + "body": "@PradeepTammali workaround is something like this:\r\n\r\n```python\r\ns = str.replace('-', 'thisSucks')\r\nslugify(s, separator='_', regex_pattern='[^a-zA-Z0-9_]+').replace('thisSucks', '-')\r\n```", + "author_association": "NONE", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/993441027/reactions", + "total_count": 1, + "+1": 1, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/995960141", + "html_url": "https://github.com/un33k/python-slugify/issues/107#issuecomment-995960141", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/107", + "id": 995960141, + "node_id": "IC_kwDOAF7qK847XSVN", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2021-12-16T16:09:03Z", + "updated_at": "2021-12-16T16:12:08Z", + "body": "@PradeepTammali Slugify needs one reserved character, and since the name of the package is `slugify` its job is to convert some random text to a `dash`-delimited clean text for use in URLs. With that said, the delimiter can also be changed to whatever user wants. In short, the `ask` here is not doable. I encourage channelling one's energy to raising a meaningful PR instead. ", + "author_association": "OWNER", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/995960141/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1041940708", + "html_url": "https://github.com/un33k/python-slugify/pull/109#issuecomment-1041940708", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/109", + "id": 1041940708, + "node_id": "IC_kwDOAF7qK84-GsDk", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2022-02-16T17:58:36Z", + "updated_at": "2022-02-16T18:04:36Z", + "body": "@mrezzamoradi Thank you for raising this PR.\r\n\r\nHowever, the `pattern` is to match all chars we want to `keep`.\r\nAnything else outside the pattern will be replaced with the `separator`.\r\n\r\n**Code:**\r\n```python\r\n # replace all other unwanted characters\r\n if lowercase:\r\n pattern = regex_pattern or ALLOWED_CHARS_PATTERN\r\n else:\r\n pattern = regex_pattern or ALLOWED_CHARS_PATTERN_WITH_UPPERCASE\r\n text = re.sub(pattern, DEFAULT_SEPARATOR, text). # <-- look here \r\n```\r\n\r\n**Example:** \r\n```python\r\n>>> allowedPattern = re.compile(r'[^-a-z0-9]+')\r\n>>> text = 'Aboo$%$%$%9-999--asdfasfd'\r\n>>> unwantedRemoved = re.sub(allowedPattern, '-', text)\r\n>>> print(unwantedRemoved)\r\n'-boo-9-999--asdfasfd'\r\n>>>\r\n```\r\n\r\n**Also:**\r\nCase sensitive needs to follow the `lowercase` flag (default = False).\r\nThis is specially true when the `separator` is something like: `ABZZzzzzDDD'; \r\nPlease refer to the tests here. https://github.com/un33k/python-slugify/blob/master/test.py#L97\r\n\r\n", + "author_association": "OWNER", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1041940708/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1041952378", + "html_url": "https://github.com/un33k/python-slugify/pull/109#issuecomment-1041952378", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/109", + "id": 1041952378, + "node_id": "IC_kwDOAF7qK84-Gu56", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2022-02-16T18:05:46Z", + "updated_at": "2022-02-16T18:05:46Z", + "body": "@mrezzamoradi \r\n\r\nOnce again thank you for taking the time to raise this PR.\r\n\r\nWith that said, I am going to closing this PR for now.\r\nIf the above explanation is not sufficient, or you have new updates, feel free to raise an updated PR or a new one.\r\n\r\nShould you have time to add github actions to this repo, I would appreciate it as well. \r\nThx", + "author_association": "OWNER", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1041952378/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1042108021", + "html_url": "https://github.com/un33k/python-slugify/pull/109#issuecomment-1042108021", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/109", + "id": 1042108021, + "node_id": "IC_kwDOAF7qK84-HU51", + "user": { + "login": "mrezzamoradi", + "id": 6003890, + "node_id": "MDQ6VXNlcjYwMDM4OTA=", + "avatar_url": "https://avatars.githubusercontent.com/u/6003890?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/mrezzamoradi", + "html_url": "https://github.com/mrezzamoradi", + "followers_url": "https://api.github.com/users/mrezzamoradi/followers", + "following_url": "https://api.github.com/users/mrezzamoradi/following{/other_user}", + "gists_url": "https://api.github.com/users/mrezzamoradi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/mrezzamoradi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/mrezzamoradi/subscriptions", + "organizations_url": "https://api.github.com/users/mrezzamoradi/orgs", + "repos_url": "https://api.github.com/users/mrezzamoradi/repos", + "events_url": "https://api.github.com/users/mrezzamoradi/events{/privacy}", + "received_events_url": "https://api.github.com/users/mrezzamoradi/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2022-02-16T19:56:48Z", + "updated_at": "2022-02-16T22:35:45Z", + "body": "> @mrezzamoradi Thank you for raising this PR.\r\n> \r\n> However, the `pattern` is to match all chars we want to `keep`. Anything else outside the pattern will be replaced with the `separator`.\r\n> \r\n> **Code:**\r\n> \r\n> ```python\r\n> # replace all other unwanted characters\r\n> if lowercase:\r\n> pattern = regex_pattern or ALLOWED_CHARS_PATTERN\r\n> else:\r\n> pattern = regex_pattern or ALLOWED_CHARS_PATTERN_WITH_UPPERCASE\r\n> text = re.sub(pattern, DEFAULT_SEPARATOR, text). # <-- look here \r\n> ```\r\n> \r\n> **Example:**\r\n> \r\n> ```python\r\n> >>> allowedPattern = re.compile(r'[^-a-z0-9]+')\r\n> >>> text = 'Aboo$%$%$%9-999--asdfasfd'\r\n> >>> unwantedRemoved = re.sub(allowedPattern, '-', text)\r\n> >>> print(unwantedRemoved)\r\n> '-boo-9-999--asdfasfd'\r\n> >>>\r\n> ```\r\n> \r\n> **Also:** Case sensitive needs to follow the `lowercase` flag (default = False). This is specially true when the `separator` is something like: `ABZZzzzzDDD'; Please refer to the tests here. https://github.com/un33k/python-slugify/blob/master/test.py#L97\r\n\r\nThanks for your comment @un33k\r\nStill you might have either misnamed the ALLOWED_CHARS_PATTERN or misunderstood the `re.sub` function. let's dig into it:\r\n- `[^-a-z0-9]+` simply means match any character that **is not** in the list of dash, a-z, or 0-9. It means characters like `?<>!@`. Now is the code supposed to keep the latter characters? I guess not. Those are the characters you want to ignore/disallow and replace them by a `separator`\r\n\r\n- `re.sub(pattern, repl, string)` is simply regex substitution (replacement) function. It replaces any character in the `string` that matches the `pattern`, with `repl`. Now again obviously the aim of `re.sub(pattern, DEFAULT_SEPARATOR, text)` is not to keep the pattern in the text. It's quite the opposite of keeping, to replace/remove them from the text.\r\n\r\nI hope this explanation brings some light on the confusion here. The same explanation can explain some part of why I've removed the lowercase regex pattern (because the matching characters would always be a subset of the matching characters when using `ALLOWED_CHARS_PATTERN_WITH_UPPERCASE`) . Also note that the current default value of `lowercase` flag is True and it converts the text to lowercase before any substitution of patterns.", + "author_association": "COLLABORATOR", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1042108021/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1042109011", + "html_url": "https://github.com/un33k/python-slugify/pull/109#issuecomment-1042109011", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/109", + "id": 1042109011, + "node_id": "IC_kwDOAF7qK84-HVJT", + "user": { + "login": "mrezzamoradi", + "id": 6003890, + "node_id": "MDQ6VXNlcjYwMDM4OTA=", + "avatar_url": "https://avatars.githubusercontent.com/u/6003890?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/mrezzamoradi", + "html_url": "https://github.com/mrezzamoradi", + "followers_url": "https://api.github.com/users/mrezzamoradi/followers", + "following_url": "https://api.github.com/users/mrezzamoradi/following{/other_user}", + "gists_url": "https://api.github.com/users/mrezzamoradi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/mrezzamoradi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/mrezzamoradi/subscriptions", + "organizations_url": "https://api.github.com/users/mrezzamoradi/orgs", + "repos_url": "https://api.github.com/users/mrezzamoradi/repos", + "events_url": "https://api.github.com/users/mrezzamoradi/events{/privacy}", + "received_events_url": "https://api.github.com/users/mrezzamoradi/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2022-02-16T19:57:59Z", + "updated_at": "2022-02-16T19:57:59Z", + "body": "btw this PR passes all the tests", + "author_association": "COLLABORATOR", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1042109011/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1042385373", + "html_url": "https://github.com/un33k/python-slugify/pull/109#issuecomment-1042385373", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/109", + "id": 1042385373, + "node_id": "IC_kwDOAF7qK84-IYnd", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2022-02-16T22:50:12Z", + "updated_at": "2022-02-16T22:52:54Z", + "body": "@mrezzamoradi I enabled github actions to ensure we have a trusted CI. \r\n\r\nAs soon as the tests passed, I decided to pull your request in.\r\nhttps://github.com/un33k/python-slugify/tree/v6.0.1\r\n\r\nI do appreciate your contribution. \r\n\r\nI have sent a request, should you decide to join this project as a contributor. ", + "author_association": "OWNER", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1042385373/reactions", + "total_count": 2, + "+1": 1, + "-1": 0, + "laugh": 0, + "hooray": 1, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1047092363", + "html_url": "https://github.com/un33k/python-slugify/issues/110#issuecomment-1047092363", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/110", + "id": 1047092363, + "node_id": "IC_kwDOAF7qK84-aVyL", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2022-02-21T17:18:22Z", + "updated_at": "2022-02-21T17:18:22Z", + "body": "Could you indicate the python version you are using ? \r\n\r\n@mrezzamoradi could you tract this issue? `typing` was introduced during the last PR.\r\n", + "author_association": "OWNER", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1047092363/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1047537184", + "html_url": "https://github.com/un33k/python-slugify/issues/110#issuecomment-1047537184", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/110", + "id": 1047537184, + "node_id": "IC_kwDOAF7qK84-cCYg", + "user": { + "login": "mrezzamoradi", + "id": 6003890, + "node_id": "MDQ6VXNlcjYwMDM4OTA=", + "avatar_url": "https://avatars.githubusercontent.com/u/6003890?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/mrezzamoradi", + "html_url": "https://github.com/mrezzamoradi", + "followers_url": "https://api.github.com/users/mrezzamoradi/followers", + "following_url": "https://api.github.com/users/mrezzamoradi/following{/other_user}", + "gists_url": "https://api.github.com/users/mrezzamoradi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/mrezzamoradi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/mrezzamoradi/subscriptions", + "organizations_url": "https://api.github.com/users/mrezzamoradi/orgs", + "repos_url": "https://api.github.com/users/mrezzamoradi/repos", + "events_url": "https://api.github.com/users/mrezzamoradi/events{/privacy}", + "received_events_url": "https://api.github.com/users/mrezzamoradi/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2022-02-22T08:23:21Z", + "updated_at": "2022-02-22T08:24:39Z", + "body": "@un33k This change was added to the staging branch a year ago [in this commit](https://github.com/un33k/python-slugify/commit/1097c2366ffcb4356ba84f74c7daf42bcfe720bf). Still, it should be fine with Python >= 3.6\r\nWhat version of Python are you using @janderson-atb-potsdam ?", + "author_association": "COLLABORATOR", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1047537184/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1047546361", + "html_url": "https://github.com/un33k/python-slugify/issues/110#issuecomment-1047546361", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/110", + "id": 1047546361, + "node_id": "IC_kwDOAF7qK84-cEn5", + "user": { + "login": "janderson-atb-potsdam", + "id": 97621012, + "node_id": "U_kgDOBdGUFA", + "avatar_url": "https://avatars.githubusercontent.com/u/97621012?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/janderson-atb-potsdam", + "html_url": "https://github.com/janderson-atb-potsdam", + "followers_url": "https://api.github.com/users/janderson-atb-potsdam/followers", + "following_url": "https://api.github.com/users/janderson-atb-potsdam/following{/other_user}", + "gists_url": "https://api.github.com/users/janderson-atb-potsdam/gists{/gist_id}", + "starred_url": "https://api.github.com/users/janderson-atb-potsdam/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/janderson-atb-potsdam/subscriptions", + "organizations_url": "https://api.github.com/users/janderson-atb-potsdam/orgs", + "repos_url": "https://api.github.com/users/janderson-atb-potsdam/repos", + "events_url": "https://api.github.com/users/janderson-atb-potsdam/events{/privacy}", + "received_events_url": "https://api.github.com/users/janderson-atb-potsdam/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2022-02-22T08:34:54Z", + "updated_at": "2022-02-22T08:34:54Z", + "body": "Python 2.7\r\n\r\nPerhaps you could put in a check that the Python version meets the minimum requirement when the slugify module is imported?\r\n\r\nSorry for wasting your time on something like this. I am trying to install a docker container on a server, and it looks like something inside of that is pulling the most recent version of slugify, even though it is still running Python 2.7. I will try to trace this back up the chain and file a bug report to the package repository that does this.\r\n", + "author_association": "NONE", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1047546361/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1047590369", + "html_url": "https://github.com/un33k/python-slugify/issues/110#issuecomment-1047590369", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/110", + "id": 1047590369, + "node_id": "IC_kwDOAF7qK84-cPXh", + "user": { + "login": "mrezzamoradi", + "id": 6003890, + "node_id": "MDQ6VXNlcjYwMDM4OTA=", + "avatar_url": "https://avatars.githubusercontent.com/u/6003890?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/mrezzamoradi", + "html_url": "https://github.com/mrezzamoradi", + "followers_url": "https://api.github.com/users/mrezzamoradi/followers", + "following_url": "https://api.github.com/users/mrezzamoradi/following{/other_user}", + "gists_url": "https://api.github.com/users/mrezzamoradi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/mrezzamoradi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/mrezzamoradi/subscriptions", + "organizations_url": "https://api.github.com/users/mrezzamoradi/orgs", + "repos_url": "https://api.github.com/users/mrezzamoradi/repos", + "events_url": "https://api.github.com/users/mrezzamoradi/events{/privacy}", + "received_events_url": "https://api.github.com/users/mrezzamoradi/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2022-02-22T09:25:17Z", + "updated_at": "2022-02-22T09:25:44Z", + "body": "@janderson-atb-potsdam it's fine, don't worry about our time.\r\n@un33k we can remove this type hinting and improve the docstring instead if we want to keep supporting python 2. what do you think?", + "author_association": "COLLABORATOR", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1047590369/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1048122325", + "html_url": "https://github.com/un33k/python-slugify/pull/111#issuecomment-1048122325", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/111", + "id": 1048122325, + "node_id": "IC_kwDOAF7qK84-eRPV", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2022-02-22T19:09:04Z", + "updated_at": "2022-02-22T19:09:04Z", + "body": "Merged in, pushed to sandbox, ci and master. Official push to pypi. Thx", + "author_association": "OWNER", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1048122325/reactions", + "total_count": 1, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 1, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1050154388", + "html_url": "https://github.com/un33k/python-slugify/issues/110#issuecomment-1050154388", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/110", + "id": 1050154388, + "node_id": "IC_kwDOAF7qK84-mBWU", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2022-02-24T18:47:07Z", + "updated_at": "2022-02-24T18:47:17Z", + "body": "@mrezzamoradi It seems that many projects are using the latest version without pinning down the specific version.\r\n\r\nI agree, that we improve the docstring for now, and remove the type hinting. At some point we will do a major release and bring types back.\r\n\r\nHere is another related issue for your ref: https://github.com/un33k/python-slugify/issues/112.\r\n\r\nPlease kindly go ahead with your recommendation. \r\n\r\n", + "author_association": "OWNER", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1050154388/reactions", + "total_count": 1, + "+1": 1, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1050155142", + "html_url": "https://github.com/un33k/python-slugify/issues/112#issuecomment-1050155142", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/112", + "id": 1050155142, + "node_id": "IC_kwDOAF7qK84-mBiG", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2022-02-24T18:48:08Z", + "updated_at": "2022-02-24T18:48:08Z", + "body": "@samlehman I agree that every project needs to pin down the dependencies to provide stability. \r\n\r\nWith that said, we are tracking the issue here. https://github.com/un33k/python-slugify/issues/110", + "author_association": "OWNER", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1050155142/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1050156087", + "html_url": "https://github.com/un33k/python-slugify/issues/112#issuecomment-1050156087", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/112", + "id": 1050156087, + "node_id": "IC_kwDOAF7qK84-mBw3", + "user": { + "login": "samlehman", + "id": 83078, + "node_id": "MDQ6VXNlcjgzMDc4", + "avatar_url": "https://avatars.githubusercontent.com/u/83078?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/samlehman", + "html_url": "https://github.com/samlehman", + "followers_url": "https://api.github.com/users/samlehman/followers", + "following_url": "https://api.github.com/users/samlehman/following{/other_user}", + "gists_url": "https://api.github.com/users/samlehman/gists{/gist_id}", + "starred_url": "https://api.github.com/users/samlehman/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/samlehman/subscriptions", + "organizations_url": "https://api.github.com/users/samlehman/orgs", + "repos_url": "https://api.github.com/users/samlehman/repos", + "events_url": "https://api.github.com/users/samlehman/events{/privacy}", + "received_events_url": "https://api.github.com/users/samlehman/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2022-02-24T18:49:24Z", + "updated_at": "2022-02-24T18:49:24Z", + "body": "@un33k Great, thanks!", + "author_association": "NONE", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1050156087/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1086429559", + "html_url": "https://github.com/un33k/python-slugify/issues/114#issuecomment-1086429559", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/114", + "id": 1086429559, + "node_id": "IC_kwDOAF7qK85AwZl3", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2022-04-02T00:31:02Z", + "updated_at": "2022-04-02T00:31:02Z", + "body": "We removed it to contain the package as a pure python package.\r\n\r\nNot sure what you use command line in CI/CD.\r\n\r\nIf you want it back, raise a PR, 60/40 it will go in.\r\n\r\nThanks,", + "author_association": "OWNER", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1086429559/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1087347418", + "html_url": "https://github.com/un33k/python-slugify/issues/114#issuecomment-1087347418", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/114", + "id": 1087347418, + "node_id": "IC_kwDOAF7qK85Az5ra", + "user": { + "login": "reixd", + "id": 2931991, + "node_id": "MDQ6VXNlcjI5MzE5OTE=", + "avatar_url": "https://avatars.githubusercontent.com/u/2931991?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/reixd", + "html_url": "https://github.com/reixd", + "followers_url": "https://api.github.com/users/reixd/followers", + "following_url": "https://api.github.com/users/reixd/following{/other_user}", + "gists_url": "https://api.github.com/users/reixd/gists{/gist_id}", + "starred_url": "https://api.github.com/users/reixd/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/reixd/subscriptions", + "organizations_url": "https://api.github.com/users/reixd/orgs", + "repos_url": "https://api.github.com/users/reixd/repos", + "events_url": "https://api.github.com/users/reixd/events{/privacy}", + "received_events_url": "https://api.github.com/users/reixd/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2022-04-04T09:52:46Z", + "updated_at": "2022-04-04T09:52:46Z", + "body": "I will give it a try and come back later with a proposition.", + "author_association": "NONE", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1087347418/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1110998248", + "html_url": "https://github.com/un33k/python-slugify/issues/114#issuecomment-1110998248", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/114", + "id": 1110998248, + "node_id": "IC_kwDOAF7qK85COHzo", + "user": { + "login": "skycaptain", + "id": 1119641, + "node_id": "MDQ6VXNlcjExMTk2NDE=", + "avatar_url": "https://avatars.githubusercontent.com/u/1119641?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/skycaptain", + "html_url": "https://github.com/skycaptain", + "followers_url": "https://api.github.com/users/skycaptain/followers", + "following_url": "https://api.github.com/users/skycaptain/following{/other_user}", + "gists_url": "https://api.github.com/users/skycaptain/gists{/gist_id}", + "starred_url": "https://api.github.com/users/skycaptain/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/skycaptain/subscriptions", + "organizations_url": "https://api.github.com/users/skycaptain/orgs", + "repos_url": "https://api.github.com/users/skycaptain/repos", + "events_url": "https://api.github.com/users/skycaptain/events{/privacy}", + "received_events_url": "https://api.github.com/users/skycaptain/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2022-04-27T13:23:33Z", + "updated_at": "2022-04-27T13:23:33Z", + "body": "Same issue. `python3 -m slugify` can be used as a workaround, however the [examples](https://github.com/un33k/python-slugify#command-line-options) from the README do not work anymore:\r\n\r\n```\r\n$ python3 -m pip install python-slugify\r\n...\r\n$ echo \"Taking input from STDIN\" | slugify --stdin\r\nbash: slugify: command not found\r\n```\r\n", + "author_association": "NONE", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1110998248/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1111197417", + "html_url": "https://github.com/un33k/python-slugify/issues/114#issuecomment-1111197417", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/114", + "id": 1111197417, + "node_id": "IC_kwDOAF7qK85CO4bp", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2022-04-27T16:17:44Z", + "updated_at": "2022-04-27T16:17:44Z", + "body": "command line is reintroduced as part of 6.1.2.", + "author_association": "OWNER", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1111197417/reactions", + "total_count": 2, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 1, + "confused": 0, + "heart": 1, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1137393406", + "html_url": "https://github.com/un33k/python-slugify/issues/115#issuecomment-1137393406", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/115", + "id": 1137393406, + "node_id": "IC_kwDOAF7qK85Dyz7-", + "user": { + "login": "kurtmckee", + "id": 39996, + "node_id": "MDQ6VXNlcjM5OTk2", + "avatar_url": "https://avatars.githubusercontent.com/u/39996?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/kurtmckee", + "html_url": "https://github.com/kurtmckee", + "followers_url": "https://api.github.com/users/kurtmckee/followers", + "following_url": "https://api.github.com/users/kurtmckee/following{/other_user}", + "gists_url": "https://api.github.com/users/kurtmckee/gists{/gist_id}", + "starred_url": "https://api.github.com/users/kurtmckee/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/kurtmckee/subscriptions", + "organizations_url": "https://api.github.com/users/kurtmckee/orgs", + "repos_url": "https://api.github.com/users/kurtmckee/repos", + "events_url": "https://api.github.com/users/kurtmckee/events{/privacy}", + "received_events_url": "https://api.github.com/users/kurtmckee/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2022-05-25T15:00:09Z", + "updated_at": "2022-05-25T15:00:09Z", + "body": "Agreed, this is strange. All versions of python-slugify that have been released with Python 2.7 support reintroduced need to be yanked from PyPI.\r\n\r\nCommit 7534199cf4b214309619e7486e1de1057bff74a3 introduced this problem.", + "author_association": "CONTRIBUTOR", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1137393406/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1137617366", + "html_url": "https://github.com/un33k/python-slugify/issues/115#issuecomment-1137617366", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/115", + "id": 1137617366, + "node_id": "IC_kwDOAF7qK85DzqnW", + "user": { + "login": "ndelon", + "id": 28742528, + "node_id": "MDQ6VXNlcjI4NzQyNTI4", + "avatar_url": "https://avatars.githubusercontent.com/u/28742528?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/ndelon", + "html_url": "https://github.com/ndelon", + "followers_url": "https://api.github.com/users/ndelon/followers", + "following_url": "https://api.github.com/users/ndelon/following{/other_user}", + "gists_url": "https://api.github.com/users/ndelon/gists{/gist_id}", + "starred_url": "https://api.github.com/users/ndelon/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/ndelon/subscriptions", + "organizations_url": "https://api.github.com/users/ndelon/orgs", + "repos_url": "https://api.github.com/users/ndelon/repos", + "events_url": "https://api.github.com/users/ndelon/events{/privacy}", + "received_events_url": "https://api.github.com/users/ndelon/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2022-05-25T17:36:02Z", + "updated_at": "2022-05-25T17:36:02Z", + "body": "I'm not sure to understand: you want to remove impacted versions of python-slugify from PyPI ?", + "author_association": "NONE", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1137617366/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1137698347", + "html_url": "https://github.com/un33k/python-slugify/issues/115#issuecomment-1137698347", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/115", + "id": 1137698347, + "node_id": "IC_kwDOAF7qK85Dz-Yr", + "user": { + "login": "kurtmckee", + "id": 39996, + "node_id": "MDQ6VXNlcjM5OTk2", + "avatar_url": "https://avatars.githubusercontent.com/u/39996?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/kurtmckee", + "html_url": "https://github.com/kurtmckee", + "followers_url": "https://api.github.com/users/kurtmckee/followers", + "following_url": "https://api.github.com/users/kurtmckee/following{/other_user}", + "gists_url": "https://api.github.com/users/kurtmckee/gists{/gist_id}", + "starred_url": "https://api.github.com/users/kurtmckee/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/kurtmckee/subscriptions", + "organizations_url": "https://api.github.com/users/kurtmckee/orgs", + "repos_url": "https://api.github.com/users/kurtmckee/repos", + "events_url": "https://api.github.com/users/kurtmckee/events{/privacy}", + "received_events_url": "https://api.github.com/users/kurtmckee/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2022-05-25T18:33:08Z", + "updated_at": "2022-05-25T18:33:08Z", + "body": "Yes, yanking is the correct way to handle this situation.\r\n\r\nThe project owners will have to make a decision how to proceed with new versions or replacements, but unless the affected versions are yanked from PyPI then Python 2.7 users will continue to pick up the new version.", + "author_association": "CONTRIBUTOR", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1137698347/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1137763257", + "html_url": "https://github.com/un33k/python-slugify/issues/115#issuecomment-1137763257", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/115", + "id": 1137763257, + "node_id": "IC_kwDOAF7qK85D0OO5", + "user": { + "login": "ndelon", + "id": 28742528, + "node_id": "MDQ6VXNlcjI4NzQyNTI4", + "avatar_url": "https://avatars.githubusercontent.com/u/28742528?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/ndelon", + "html_url": "https://github.com/ndelon", + "followers_url": "https://api.github.com/users/ndelon/followers", + "following_url": "https://api.github.com/users/ndelon/following{/other_user}", + "gists_url": "https://api.github.com/users/ndelon/gists{/gist_id}", + "starred_url": "https://api.github.com/users/ndelon/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/ndelon/subscriptions", + "organizations_url": "https://api.github.com/users/ndelon/orgs", + "repos_url": "https://api.github.com/users/ndelon/repos", + "events_url": "https://api.github.com/users/ndelon/events{/privacy}", + "received_events_url": "https://api.github.com/users/ndelon/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2022-05-25T19:23:33Z", + "updated_at": "2022-05-25T19:23:33Z", + "body": "I think it is a **very dangerous** thing to do: it will break any project's build process that uses a pinned version of python-slugify.\r\n\r\nAs I explained previously, I don't think there is much to do here except:\r\n- fixing `setup.py`\r\n- and documenting how to install python-slugify on Python 2.7 (i.e `pip install python-slugify~=4.0.1`)\r\n\r\nThis is a very minor issue anyway since:\r\n- Python 2.7 is deprecated for more than 2 years and is no longer widely used\r\n- the regression has been introduced in 6.0.0 released in February 16 and it seems that I am the first one to raise the issue", + "author_association": "NONE", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1137763257/reactions", + "total_count": 1, + "+1": 1, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1258614356", + "html_url": "https://github.com/un33k/python-slugify/issues/101#issuecomment-1258614356", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/101", + "id": 1258614356, + "node_id": "IC_kwDOAF7qK85LBO5U", + "user": { + "login": "jdevera", + "id": 73069, + "node_id": "MDQ6VXNlcjczMDY5", + "avatar_url": "https://avatars.githubusercontent.com/u/73069?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/jdevera", + "html_url": "https://github.com/jdevera", + "followers_url": "https://api.github.com/users/jdevera/followers", + "following_url": "https://api.github.com/users/jdevera/following{/other_user}", + "gists_url": "https://api.github.com/users/jdevera/gists{/gist_id}", + "starred_url": "https://api.github.com/users/jdevera/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/jdevera/subscriptions", + "organizations_url": "https://api.github.com/users/jdevera/orgs", + "repos_url": "https://api.github.com/users/jdevera/repos", + "events_url": "https://api.github.com/users/jdevera/events{/privacy}", + "received_events_url": "https://api.github.com/users/jdevera/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2022-09-26T20:46:22Z", + "updated_at": "2022-09-26T20:46:22Z", + "body": "I'm happy to be one, this library is an excellent example of something that does one thing and does it well and as such there seems to be very little traffic in terms of issues.", + "author_association": "COLLABORATOR", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1258614356/reactions", + "total_count": 1, + "+1": 1, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1259398564", + "html_url": "https://github.com/un33k/python-slugify/issues/101#issuecomment-1259398564", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/101", + "id": 1259398564, + "node_id": "IC_kwDOAF7qK85LEOWk", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2022-09-27T11:57:10Z", + "updated_at": "2022-09-27T11:57:10Z", + "body": "@jdevera You are already a collaborator. Let me know if you can push directly to the master branch. ", + "author_association": "OWNER", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1259398564/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1259400138", + "html_url": "https://github.com/un33k/python-slugify/pull/116#issuecomment-1259400138", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/116", + "id": 1259400138, + "node_id": "IC_kwDOAF7qK85LEOvK", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2022-09-27T11:58:31Z", + "updated_at": "2022-09-27T11:58:31Z", + "body": "Thank you.", + "author_association": "OWNER", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1259400138/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1259401294", + "html_url": "https://github.com/un33k/python-slugify/issues/120#issuecomment-1259401294", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/120", + "id": 1259401294, + "node_id": "IC_kwDOAF7qK85LEPBO", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2022-09-27T11:59:29Z", + "updated_at": "2022-09-27T11:59:29Z", + "body": "Sounds good. ", + "author_association": "OWNER", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1259401294/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1259402560", + "html_url": "https://github.com/un33k/python-slugify/issues/119#issuecomment-1259402560", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/119", + "id": 1259402560, + "node_id": "IC_kwDOAF7qK85LEPVA", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2022-09-27T12:00:40Z", + "updated_at": "2022-11-22T17:56:59Z", + "body": "Test with care, some post slugify strings may end up with replacement words after the conversion, specially in non-english languages.", + "author_association": "OWNER", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1259402560/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1259404739", + "html_url": "https://github.com/un33k/python-slugify/issues/118#issuecomment-1259404739", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/118", + "id": 1259404739, + "node_id": "IC_kwDOAF7qK85LEP3D", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2022-09-27T12:02:43Z", + "updated_at": "2022-09-27T12:02:52Z", + "body": "Things have been added over years. Have a look at the code, for the behavior, especially where the params are passed in, we have description of each arg.", + "author_association": "OWNER", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1259404739/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1259406355", + "html_url": "https://github.com/un33k/python-slugify/issues/117#issuecomment-1259406355", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/117", + "id": 1259406355, + "node_id": "IC_kwDOAF7qK85LEQQT", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2022-09-27T12:04:06Z", + "updated_at": "2022-09-27T12:04:06Z", + "body": "To drop P2, we have to release a new major version. As per SemVer, we need to do that if we introduce backward incompatibility, which we are in a way.", + "author_association": "OWNER", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1259406355/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1259407011", + "html_url": "https://github.com/un33k/python-slugify/issues/115#issuecomment-1259407011", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/115", + "id": 1259407011, + "node_id": "IC_kwDOAF7qK85LEQaj", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2022-09-27T12:04:40Z", + "updated_at": "2022-09-27T12:04:40Z", + "body": "It is a good time to drop P2. Let's do it.", + "author_association": "OWNER", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1259407011/reactions", + "total_count": 1, + "+1": 1, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1260051441", + "html_url": "https://github.com/un33k/python-slugify/issues/118#issuecomment-1260051441", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/118", + "id": 1260051441, + "node_id": "IC_kwDOAF7qK85LGtvx", + "user": { + "login": "jdevera", + "id": 73069, + "node_id": "MDQ6VXNlcjczMDY5", + "avatar_url": "https://avatars.githubusercontent.com/u/73069?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/jdevera", + "html_url": "https://github.com/jdevera", + "followers_url": "https://api.github.com/users/jdevera/followers", + "following_url": "https://api.github.com/users/jdevera/following{/other_user}", + "gists_url": "https://api.github.com/users/jdevera/gists{/gist_id}", + "starred_url": "https://api.github.com/users/jdevera/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/jdevera/subscriptions", + "organizations_url": "https://api.github.com/users/jdevera/orgs", + "repos_url": "https://api.github.com/users/jdevera/repos", + "events_url": "https://api.github.com/users/jdevera/events{/privacy}", + "received_events_url": "https://api.github.com/users/jdevera/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2022-09-27T21:03:43Z", + "updated_at": "2022-09-27T21:03:43Z", + "body": "I played around with it enough to understand what it does, and it seemed \"interesting\" to have a feature but I was surprised it was default behaviour.", + "author_association": "COLLABORATOR", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1260051441/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1320392953", + "html_url": "https://github.com/un33k/python-slugify/pull/121#issuecomment-1320392953", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/121", + "id": 1320392953, + "node_id": "IC_kwDOAF7qK85Os5j5", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2022-11-18T18:36:28Z", + "updated_at": "2022-11-18T18:36:28Z", + "body": "Thank you. ", + "author_association": "OWNER", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1320392953/reactions", + "total_count": 1, + "+1": 1, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1320421535", + "html_url": "https://github.com/un33k/python-slugify/pull/121#issuecomment-1320421535", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/121", + "id": 1320421535, + "node_id": "IC_kwDOAF7qK85OtAif", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2022-11-18T19:07:34Z", + "updated_at": "2022-11-18T19:07:34Z", + "body": "7.0.0 now includes your changes. Thx", + "author_association": "OWNER", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1320421535/reactions", + "total_count": 1, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 1, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1320496112", + "html_url": "https://github.com/un33k/python-slugify/pull/121#issuecomment-1320496112", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/121", + "id": 1320496112, + "node_id": "IC_kwDOAF7qK85OtSvw", + "user": { + "login": "hugovk", + "id": 1324225, + "node_id": "MDQ6VXNlcjEzMjQyMjU=", + "avatar_url": "https://avatars.githubusercontent.com/u/1324225?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/hugovk", + "html_url": "https://github.com/hugovk", + "followers_url": "https://api.github.com/users/hugovk/followers", + "following_url": "https://api.github.com/users/hugovk/following{/other_user}", + "gists_url": "https://api.github.com/users/hugovk/gists{/gist_id}", + "starred_url": "https://api.github.com/users/hugovk/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/hugovk/subscriptions", + "organizations_url": "https://api.github.com/users/hugovk/orgs", + "repos_url": "https://api.github.com/users/hugovk/repos", + "events_url": "https://api.github.com/users/hugovk/events{/privacy}", + "received_events_url": "https://api.github.com/users/hugovk/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2022-11-18T20:33:40Z", + "updated_at": "2022-11-18T20:33:40Z", + "body": "You're welcome, and thank you for Python Slugify!", + "author_association": "CONTRIBUTOR", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1320496112/reactions", + "total_count": 1, + "+1": 0, + "-1": 0, + "laugh": 1, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1324044640", + "html_url": "https://github.com/un33k/python-slugify/issues/118#issuecomment-1324044640", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/118", + "id": 1324044640, + "node_id": "IC_kwDOAF7qK85O61Fg", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2022-11-22T17:53:12Z", + "updated_at": "2022-11-22T17:53:12Z", + "body": "Evolving software sometimes start with things that don't make sense many years later. Minimally we have ability to on/off things.", + "author_association": "OWNER", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1324044640/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1324045765", + "html_url": "https://github.com/un33k/python-slugify/issues/117#issuecomment-1324045765", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/117", + "id": 1324045765, + "node_id": "IC_kwDOAF7qK85O61XF", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2022-11-22T17:54:18Z", + "updated_at": "2022-11-22T17:54:18Z", + "body": "Version 7.0.0 discontinued 2.7-3.6 inclusively. ", + "author_association": "OWNER", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1324045765/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1324046807", + "html_url": "https://github.com/un33k/python-slugify/issues/115#issuecomment-1324046807", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/115", + "id": 1324046807, + "node_id": "IC_kwDOAF7qK85O61nX", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2022-11-22T17:55:15Z", + "updated_at": "2022-11-22T17:56:14Z", + "body": "2.7-3.6 inclusively were dropped in version 7.0.0.\r\nReadMe has the correct max version that supports 2.7 & <3.7 to be done manually for those who want to say on fixed versions.", + "author_association": "OWNER", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1324046807/reactions", + "total_count": 2, + "+1": 1, + "-1": 0, + "laugh": 0, + "hooray": 1, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1349236061", + "html_url": "https://github.com/un33k/python-slugify/issues/122#issuecomment-1349236061", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/122", + "id": 1349236061, + "node_id": "IC_kwDOAF7qK85Qa7Vd", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2022-12-13T17:40:22Z", + "updated_at": "2022-12-13T17:52:46Z", + "body": "The underlaying libraries are based on fixed dataset without any language input. No way to pass in a specific language. However, specific cases can be handled prior to a call into python-slugify. \r\n\r\nAlternatively, if these are just a few anomalies, then you can raise a PR against this file.\r\nhttps://github.com/un33k/python-slugify/blob/master/slugify/special.py\r\n", + "author_association": "OWNER", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1349236061/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1364588855", + "html_url": "https://github.com/un33k/python-slugify/issues/123#issuecomment-1364588855", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/123", + "id": 1364588855, + "node_id": "IC_kwDOAF7qK85RVfk3", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2022-12-24T22:04:04Z", + "updated_at": "2022-12-24T22:04:04Z", + "body": "Too many combinations and permutations out there. \r\nYou'd need to pre+post process the job title.\r\nUse `slugify` for one thing, and that is to convert your string to a slug.\r\n\r\nDo something like this:\r\n```python\r\njob_title: str = \"ENGINEER - LEVEL II/III & SENIOR\"\r\n# convert `&` to something very unique. (e.g \"vvvvvvv\")\r\njob_title = job_title.replace(\"&\", \"vvvvvvv\")\r\n# slugify the job title (res: \"engineer-level-ii-iii-vvvvvvv-senior\")\r\nslug = slugify(job_title)\r\n# finalize your slugged job title (out: \"engineer-level-ii-iii--senior\")\r\njob_title = slug.replace(\"-vvvvvvv-\", \"--\")\r\n```\r\n\r\nAny follow up should go to stackoverflow please.", + "author_association": "OWNER", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1364588855/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1378488636", + "html_url": "https://github.com/un33k/python-slugify/issues/101#issuecomment-1378488636", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/101", + "id": 1378488636, + "node_id": "IC_kwDOAF7qK85SKhE8", + "user": { + "login": "buhtz", + "id": 11861496, + "node_id": "MDQ6VXNlcjExODYxNDk2", + "avatar_url": "https://avatars.githubusercontent.com/u/11861496?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/buhtz", + "html_url": "https://github.com/buhtz", + "followers_url": "https://api.github.com/users/buhtz/followers", + "following_url": "https://api.github.com/users/buhtz/following{/other_user}", + "gists_url": "https://api.github.com/users/buhtz/gists{/gist_id}", + "starred_url": "https://api.github.com/users/buhtz/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/buhtz/subscriptions", + "organizations_url": "https://api.github.com/users/buhtz/orgs", + "repos_url": "https://api.github.com/users/buhtz/repos", + "events_url": "https://api.github.com/users/buhtz/events{/privacy}", + "received_events_url": "https://api.github.com/users/buhtz/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2023-01-11T09:49:29Z", + "updated_at": "2023-01-11T09:55:22Z", + "body": "I also would suggest to ask on reddit.com and on python-users mailing list.\r\n\r\nThere are also some funding projects, e.g. https://prototypefund.de/\r\nThey could pay one developer for 6 months for example.\r\n\r\nMaybe ask at open source institutions mailinglist (free software foundation, eureopean free software foundation, mozilla, debian python list, etc.) What about hackatons or youth hacking events.\r\n\r\nOne suggestion based on my experience with other projects:\r\nDon't understand contributors as resources in the meaning of coding time. And don't make them self understand like this.\r\nIt is important to have team (3 or more people) as maintainers to share \"the burden of responsibility\". Having 21k projects as users of my projects and being the only one maintainer I couldn't sleep well. ;)\r\nMore important then time resources is the \"you are not alone feeling\". The rest will roll by itself.\r\n\r\nOne advantage of your project for potential contributors is that it is quite easy. Less code. Not to complex. Also suited for school kids.", + "author_association": "NONE", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1378488636/reactions", + "total_count": 1, + "+1": 1, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1379361918", + "html_url": "https://github.com/un33k/python-slugify/pull/125#issuecomment-1379361918", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/125", + "id": 1379361918, + "node_id": "IC_kwDOAF7qK85SN2R-", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2023-01-11T19:12:19Z", + "updated_at": "2023-01-11T19:12:19Z", + "body": "Looks good, please rename, prune and re-push. Thx", + "author_association": "OWNER", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1379361918/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1379362333", + "html_url": "https://github.com/un33k/python-slugify/pull/125#issuecomment-1379362333", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/125", + "id": 1379362333, + "node_id": "IC_kwDOAF7qK85SN2Yd", + "user": { + "login": "jdevera", + "id": 73069, + "node_id": "MDQ6VXNlcjczMDY5", + "avatar_url": "https://avatars.githubusercontent.com/u/73069?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/jdevera", + "html_url": "https://github.com/jdevera", + "followers_url": "https://api.github.com/users/jdevera/followers", + "following_url": "https://api.github.com/users/jdevera/following{/other_user}", + "gists_url": "https://api.github.com/users/jdevera/gists{/gist_id}", + "starred_url": "https://api.github.com/users/jdevera/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/jdevera/subscriptions", + "organizations_url": "https://api.github.com/users/jdevera/orgs", + "repos_url": "https://api.github.com/users/jdevera/repos", + "events_url": "https://api.github.com/users/jdevera/events{/privacy}", + "received_events_url": "https://api.github.com/users/jdevera/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2023-01-11T19:12:39Z", + "updated_at": "2023-01-11T19:12:39Z", + "body": "Hi there. Thanks a lot for taking the time to put a PR together with this contribution!\r\n\r\nSomething that would be awesome to see in PRs, in general, is the rationale behind the proposed changes. It helps make the subsequent discussion much more fruitful.\r\n\r\nThat would be my first question here. What problem took you to this change?\r\n\r\nI'll add another:\r\n\r\n2. Is there any advantage of this approach over adding the additional replacement as an after-step of the slugification. I mean, what if you use the list of ambiguous characters and run the same replacement after the slug is created with this library?\r\n", + "author_association": "COLLABORATOR", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1379362333/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1379366186", + "html_url": "https://github.com/un33k/python-slugify/pull/125#issuecomment-1379366186", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/125", + "id": 1379366186, + "node_id": "IC_kwDOAF7qK85SN3Uq", + "user": { + "login": "jdevera", + "id": 73069, + "node_id": "MDQ6VXNlcjczMDY5", + "avatar_url": "https://avatars.githubusercontent.com/u/73069?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/jdevera", + "html_url": "https://github.com/jdevera", + "followers_url": "https://api.github.com/users/jdevera/followers", + "following_url": "https://api.github.com/users/jdevera/following{/other_user}", + "gists_url": "https://api.github.com/users/jdevera/gists{/gist_id}", + "starred_url": "https://api.github.com/users/jdevera/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/jdevera/subscriptions", + "organizations_url": "https://api.github.com/users/jdevera/orgs", + "repos_url": "https://api.github.com/users/jdevera/repos", + "events_url": "https://api.github.com/users/jdevera/events{/privacy}", + "received_events_url": "https://api.github.com/users/jdevera/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2023-01-11T19:15:56Z", + "updated_at": "2023-01-11T19:15:56Z", + "body": "Also, the linked repo quoted as the source does not have a readme, which leaves me with more questions about this list of replacements, and since you are also the owner there, please allow me:\r\n\r\n1. What is the source of the list?\r\n2. If it is manually curated, what is your process to decide on the replacements that get added or not?\r\n3. How might we ensure the copy you are bringing in the PR is in sync?\r\n4. Have you thought of publishing those replacements, if you are curating them, as a small package?", + "author_association": "COLLABORATOR", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1379366186/reactions", + "total_count": 1, + "+1": 1, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1379431858", + "html_url": "https://github.com/un33k/python-slugify/pull/125#issuecomment-1379431858", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/125", + "id": 1379431858, + "node_id": "IC_kwDOAF7qK85SOHWy", + "user": { + "login": "xnetcat", + "id": 42355410, + "node_id": "MDQ6VXNlcjQyMzU1NDEw", + "avatar_url": "https://avatars.githubusercontent.com/u/42355410?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xnetcat", + "html_url": "https://github.com/xnetcat", + "followers_url": "https://api.github.com/users/xnetcat/followers", + "following_url": "https://api.github.com/users/xnetcat/following{/other_user}", + "gists_url": "https://api.github.com/users/xnetcat/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xnetcat/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xnetcat/subscriptions", + "organizations_url": "https://api.github.com/users/xnetcat/orgs", + "repos_url": "https://api.github.com/users/xnetcat/repos", + "events_url": "https://api.github.com/users/xnetcat/events{/privacy}", + "received_events_url": "https://api.github.com/users/xnetcat/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2023-01-11T20:16:05Z", + "updated_at": "2023-01-11T20:16:05Z", + "body": "> 0 Something that would be awesome to see in PRs, in general, is the rationale behind the proposed changes. It helps make the subsequent discussion much more fruitful.\r\n\r\nI've felt that it would be a good change to add this since the current version just removes ambiguous characters.\r\nIn my opinion the intended behaviour should be to replace them with the closest ASCII equivalent the same way Cyrillic, asian, greek characters, etc are being processed.\r\n\r\n> 1.1 Also, the linked repo quoted as the source does not have a readme, which leaves me with more questions about this list of replacements, and since you are also the owner there, please allow me:\r\n\r\nI am not the owner of that repo, I've found it by accident. I've noticed that VS Code suggests replacements for ambiguous characters so I've checked the source code and that led me to that repo. \r\n\r\n![image](https://user-images.githubusercontent.com/42355410/211901434-e49cc3f9-9d9e-4b3c-ae2b-77b847260a5f.png)\r\n\r\n> 2.1 What is the source of the list?\r\n\r\nFrom what I've check it's based on the official Confusable characters dataset from unicode org and some manually added ones https://github.com/hediet/vscode-unicode-data/blob/main/data/README.md\r\n\r\n> 2.2 If it is manually curated, what is your process to decide on the replacements that get added or not?\r\n\r\n2.1\r\n\r\n> 2.2 How might we ensure the copy you are bringing in the PR is in sync?\r\n\r\nThis list shouldn't change that often. Unicode Standard is updated once a year, but it mostly brings new emojis and scripts (ex. Nag Mundari) which shouldn't affect \r\n\r\n[Unicode standard 8 released in 2015: 6069 characters](http://www.unicode.org/Public/security/8.0.0/confusables.txt)\r\n[Unicode standard 12 released in 2019: 6296 characters](http://www.unicode.org/Public/security/12.0.0/confusables.txt)\r\n[Unicode standard 13 released in 2020: 6311 characters](http://www.unicode.org/Public/security/13.0.0/confusables.txt) <- no new updates from 2020, only 15 new characters added in 2020\r\n[Unicode standard 14 released in 2021: 6311 characters ](http://www.unicode.org/Public/security/14.0.0/confusables.txt) \r\n[Unicode standard 15 released in 2022: 6311 characters](http://www.unicode.org/Public/security/15.0.0/confusables.txt)\r\n\r\n> 2.4 Have you thought of publishing those replacements, if you are curating them, as a small package?\r\n\r\n1.1\r\n\r\n> 1.2 Is there any advantage of this approach over adding the additional replacement as an after-step of the slugification. I mean, what if you use the list of ambiguous characters and run the same replacement after the slug is created with this library?\r\n\r\nI've just noticed that the `Unidecode` package works as expected with ambiguous characters so this PR is obsolete now 🤦‍♂️, I will close this sorry for the trouble ", + "author_association": "NONE", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1379431858/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1379714008", + "html_url": "https://github.com/un33k/python-slugify/issues/124#issuecomment-1379714008", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/124", + "id": 1379714008, + "node_id": "IC_kwDOAF7qK85SPMPY", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2023-01-12T01:59:24Z", + "updated_at": "2023-01-12T01:59:24Z", + "body": "FYI - https://github.com/un33k/python-slugify/blob/master/test.py", + "author_association": "OWNER", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1379714008/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1379878122", + "html_url": "https://github.com/un33k/python-slugify/issues/124#issuecomment-1379878122", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/124", + "id": 1379878122, + "node_id": "IC_kwDOAF7qK85SP0Tq", + "user": { + "login": "buhtz", + "id": 11861496, + "node_id": "MDQ6VXNlcjExODYxNDk2", + "avatar_url": "https://avatars.githubusercontent.com/u/11861496?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/buhtz", + "html_url": "https://github.com/buhtz", + "followers_url": "https://api.github.com/users/buhtz/followers", + "following_url": "https://api.github.com/users/buhtz/following{/other_user}", + "gists_url": "https://api.github.com/users/buhtz/gists{/gist_id}", + "starred_url": "https://api.github.com/users/buhtz/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/buhtz/subscriptions", + "organizations_url": "https://api.github.com/users/buhtz/orgs", + "repos_url": "https://api.github.com/users/buhtz/repos", + "events_url": "https://api.github.com/users/buhtz/events{/privacy}", + "received_events_url": "https://api.github.com/users/buhtz/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2023-01-12T06:38:07Z", + "updated_at": "2023-01-12T06:39:29Z", + "body": "Ah I see. Then I would say the project layout is \"unusual\". ;)\r\n\r\nNo, it doesn't follow the today recommended standards ([src layout](https://packaging.python.org/en/latest/discussions/src-layout-vs-flat-layout/) and [`pyproject.toml`](https://setuptools.pypa.io/en/latest/userguide/pyproject_config.html)). But this can be fixed quite easy.", + "author_association": "NONE", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1379878122/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1407162039", + "html_url": "https://github.com/un33k/python-slugify/pull/126#issuecomment-1407162039", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/126", + "id": 1407162039, + "node_id": "IC_kwDOAF7qK85T35a3", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2023-01-27T22:47:09Z", + "updated_at": "2023-01-27T22:47:09Z", + "body": "Excellent. Thank you.", + "author_association": "OWNER", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1407162039/reactions", + "total_count": 2, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 1, + "confused": 0, + "heart": 1, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1407475312", + "html_url": "https://github.com/un33k/python-slugify/pull/126#issuecomment-1407475312", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/126", + "id": 1407475312, + "node_id": "IC_kwDOAF7qK85T5F5w", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2023-01-28T20:02:26Z", + "updated_at": "2023-01-28T20:02:26Z", + "body": "Version 8.0.0 is pushed. Thx", + "author_association": "OWNER", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1407475312/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1409306288", + "html_url": "https://github.com/un33k/python-slugify/pull/126#issuecomment-1409306288", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/126", + "id": 1409306288, + "node_id": "IC_kwDOAF7qK85UAE6w", + "user": { + "login": "enkidulan", + "id": 963412, + "node_id": "MDQ6VXNlcjk2MzQxMg==", + "avatar_url": "https://avatars.githubusercontent.com/u/963412?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/enkidulan", + "html_url": "https://github.com/enkidulan", + "followers_url": "https://api.github.com/users/enkidulan/followers", + "following_url": "https://api.github.com/users/enkidulan/following{/other_user}", + "gists_url": "https://api.github.com/users/enkidulan/gists{/gist_id}", + "starred_url": "https://api.github.com/users/enkidulan/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/enkidulan/subscriptions", + "organizations_url": "https://api.github.com/users/enkidulan/orgs", + "repos_url": "https://api.github.com/users/enkidulan/repos", + "events_url": "https://api.github.com/users/enkidulan/events{/privacy}", + "received_events_url": "https://api.github.com/users/enkidulan/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2023-01-30T20:43:27Z", + "updated_at": "2023-01-30T20:43:27Z", + "body": "Thank you so much! ", + "author_association": "CONTRIBUTOR", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1409306288/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1418259979", + "html_url": "https://github.com/un33k/python-slugify/issues/127#issuecomment-1418259979", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/127", + "id": 1418259979, + "node_id": "IC_kwDOAF7qK85UiO4L", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2023-02-05T20:43:44Z", + "updated_at": "2023-02-05T20:43:44Z", + "body": "No plan of action at the moment. Thx", + "author_association": "OWNER", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1418259979/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1418266380", + "html_url": "https://github.com/un33k/python-slugify/issues/127#issuecomment-1418266380", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/127", + "id": 1418266380, + "node_id": "IC_kwDOAF7qK85UiQcM", + "user": { + "login": "rikfie", + "id": 16280674, + "node_id": "MDQ6VXNlcjE2MjgwNjc0", + "avatar_url": "https://avatars.githubusercontent.com/u/16280674?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/rikfie", + "html_url": "https://github.com/rikfie", + "followers_url": "https://api.github.com/users/rikfie/followers", + "following_url": "https://api.github.com/users/rikfie/following{/other_user}", + "gists_url": "https://api.github.com/users/rikfie/gists{/gist_id}", + "starred_url": "https://api.github.com/users/rikfie/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/rikfie/subscriptions", + "organizations_url": "https://api.github.com/users/rikfie/orgs", + "repos_url": "https://api.github.com/users/rikfie/repos", + "events_url": "https://api.github.com/users/rikfie/events{/privacy}", + "received_events_url": "https://api.github.com/users/rikfie/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2023-02-05T21:13:14Z", + "updated_at": "2023-02-05T21:13:14Z", + "body": "Ok fair enough. Feel free to close it. ", + "author_association": "NONE", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1418266380/reactions", + "total_count": 1, + "+1": 1, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1440484675", + "html_url": "https://github.com/un33k/python-slugify/issues/128#issuecomment-1440484675", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/128", + "id": 1440484675, + "node_id": "IC_kwDOAF7qK85V3A1D", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2023-02-22T17:36:40Z", + "updated_at": "2023-02-22T17:36:40Z", + "body": "There are no GPL dependencies. Unidecode author: \"using the API creates no dependencies\". We've included two ways of installing it. Whichever way we choose to go first, some people object. Hence no more license-related changes. ", + "author_association": "OWNER", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1440484675/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1441978688", + "html_url": "https://github.com/un33k/python-slugify/pull/129#issuecomment-1441978688", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/129", + "id": 1441978688, + "node_id": "IC_kwDOAF7qK85V8tlA", + "user": { + "login": "C-nit", + "id": 11009167, + "node_id": "MDQ6VXNlcjExMDA5MTY3", + "avatar_url": "https://avatars.githubusercontent.com/u/11009167?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/C-nit", + "html_url": "https://github.com/C-nit", + "followers_url": "https://api.github.com/users/C-nit/followers", + "following_url": "https://api.github.com/users/C-nit/following{/other_user}", + "gists_url": "https://api.github.com/users/C-nit/gists{/gist_id}", + "starred_url": "https://api.github.com/users/C-nit/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/C-nit/subscriptions", + "organizations_url": "https://api.github.com/users/C-nit/orgs", + "repos_url": "https://api.github.com/users/C-nit/repos", + "events_url": "https://api.github.com/users/C-nit/events{/privacy}", + "received_events_url": "https://api.github.com/users/C-nit/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2023-02-23T15:27:38Z", + "updated_at": "2023-02-23T15:28:12Z", + "body": "@un33k after closing #128 I felt you are irritated by the many issues opened on this topic. I saw those only after the fact.\r\nIf the note I propose in the README had been there, I would not have felt the need to open an issue.", + "author_association": "CONTRIBUTOR", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1441978688/reactions", + "total_count": 1, + "+1": 1, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1442022145", + "html_url": "https://github.com/un33k/python-slugify/pull/129#issuecomment-1442022145", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/129", + "id": 1442022145, + "node_id": "IC_kwDOAF7qK85V84MB", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2023-02-23T15:54:33Z", + "updated_at": "2023-02-23T20:07:58Z", + "body": "@C-nit Thank you very much for the PR. However, the diffs are not lining up properly. \r\nCould you kindly, cancel this and redo the PR against staging again? Thx", + "author_association": "OWNER", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1442022145/reactions", + "total_count": 1, + "+1": 1, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1443880662", + "html_url": "https://github.com/un33k/python-slugify/pull/130#issuecomment-1443880662", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/130", + "id": 1443880662, + "node_id": "IC_kwDOAF7qK85WD97W", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2023-02-24T15:51:20Z", + "updated_at": "2023-02-24T15:51:20Z", + "body": "Thank you. ", + "author_association": "OWNER", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1443880662/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1443881363", + "html_url": "https://github.com/un33k/python-slugify/pull/129#issuecomment-1443881363", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/129", + "id": 1443881363, + "node_id": "IC_kwDOAF7qK85WD-GT", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2023-02-24T15:51:54Z", + "updated_at": "2023-02-24T15:51:54Z", + "body": "closed in favor of https://github.com/un33k/python-slugify/pull/130", + "author_association": "OWNER", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1443881363/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1443945295", + "html_url": "https://github.com/un33k/python-slugify/pull/125#issuecomment-1443945295", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/125", + "id": 1443945295, + "node_id": "IC_kwDOAF7qK85WENtP", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2023-02-24T16:21:20Z", + "updated_at": "2023-02-24T16:21:20Z", + "body": "@xnetcat thank you for the info on this PR. I have included the info on the wiki page.\r\n\r\nhttps://github.com/un33k/python-slugify/wiki/Python-Slugify-Wiki#notes-on-unidecode", + "author_association": "OWNER", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1443945295/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1455745872", + "html_url": "https://github.com/un33k/python-slugify/pull/131#issuecomment-1455745872", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/131", + "id": 1455745872, + "node_id": "IC_kwDOAF7qK85WxOtQ", + "user": { + "login": "mrezzamoradi", + "id": 6003890, + "node_id": "MDQ6VXNlcjYwMDM4OTA=", + "avatar_url": "https://avatars.githubusercontent.com/u/6003890?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/mrezzamoradi", + "html_url": "https://github.com/mrezzamoradi", + "followers_url": "https://api.github.com/users/mrezzamoradi/followers", + "following_url": "https://api.github.com/users/mrezzamoradi/following{/other_user}", + "gists_url": "https://api.github.com/users/mrezzamoradi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/mrezzamoradi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/mrezzamoradi/subscriptions", + "organizations_url": "https://api.github.com/users/mrezzamoradi/orgs", + "repos_url": "https://api.github.com/users/mrezzamoradi/repos", + "events_url": "https://api.github.com/users/mrezzamoradi/events{/privacy}", + "received_events_url": "https://api.github.com/users/mrezzamoradi/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2023-03-06T09:06:43Z", + "updated_at": "2023-03-06T09:06:43Z", + "body": "This is actually nice. The difference in speed is noticeable.", + "author_association": "COLLABORATOR", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1455745872/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1676377364", + "html_url": "https://github.com/un33k/python-slugify/issues/133#issuecomment-1676377364", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/133", + "id": 1676377364, + "node_id": "IC_kwDOAF7qK85j630U", + "user": { + "login": "jdevera", + "id": 73069, + "node_id": "MDQ6VXNlcjczMDY5", + "avatar_url": "https://avatars.githubusercontent.com/u/73069?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/jdevera", + "html_url": "https://github.com/jdevera", + "followers_url": "https://api.github.com/users/jdevera/followers", + "following_url": "https://api.github.com/users/jdevera/following{/other_user}", + "gists_url": "https://api.github.com/users/jdevera/gists{/gist_id}", + "starred_url": "https://api.github.com/users/jdevera/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/jdevera/subscriptions", + "organizations_url": "https://api.github.com/users/jdevera/orgs", + "repos_url": "https://api.github.com/users/jdevera/repos", + "events_url": "https://api.github.com/users/jdevera/events{/privacy}", + "received_events_url": "https://api.github.com/users/jdevera/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2023-08-13T14:31:06Z", + "updated_at": "2023-08-13T14:31:06Z", + "body": "@sisrfeng Can you please share a bit more of your experience just trying the library with the default parameters? What are the cases that did not generate valid filenames? These kinds of details would help us help you.", + "author_association": "COLLABORATOR", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1676377364/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1676382969", + "html_url": "https://github.com/un33k/python-slugify/pull/132#issuecomment-1676382969", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/132", + "id": 1676382969, + "node_id": "IC_kwDOAF7qK85j65L5", + "user": { + "login": "jdevera", + "id": 73069, + "node_id": "MDQ6VXNlcjczMDY5", + "avatar_url": "https://avatars.githubusercontent.com/u/73069?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/jdevera", + "html_url": "https://github.com/jdevera", + "followers_url": "https://api.github.com/users/jdevera/followers", + "following_url": "https://api.github.com/users/jdevera/following{/other_user}", + "gists_url": "https://api.github.com/users/jdevera/gists{/gist_id}", + "starred_url": "https://api.github.com/users/jdevera/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/jdevera/subscriptions", + "organizations_url": "https://api.github.com/users/jdevera/orgs", + "repos_url": "https://api.github.com/users/jdevera/repos", + "events_url": "https://api.github.com/users/jdevera/events{/privacy}", + "received_events_url": "https://api.github.com/users/jdevera/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2023-08-13T14:50:51Z", + "updated_at": "2023-08-13T14:53:33Z", + "body": "Thank you for this PR. I think it is a step in the right direction.\r\n\r\nIt has also helped bring up some questions for @un33k:\r\nWhile reviewing it, I found that the 3 workflow files are identical except for the branches they apply to and that there seem to be 5 _special_ branches:\r\n* master\r\n* ci\r\n* staging\r\n* sandbox\r\n* dev\r\n\r\nMy first question is whether we need anything other than the master branch. And if we do, then what is the branch workflow?\r\n\r\nAsking because, in my possibly over-simplified view, we only need the change this PR introduces, and then we can eliminate the other branches. We get the CI to run on each PR change, and then once more when it has been merged. The other two workflow files could then be removed. And it'd be awesome to repurpose this PR for that.", + "author_association": "COLLABORATOR", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1676382969/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1676387931", + "html_url": "https://github.com/un33k/python-slugify/pull/131#issuecomment-1676387931", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/131", + "id": 1676387931, + "node_id": "IC_kwDOAF7qK85j66Zb", + "user": { + "login": "jdevera", + "id": 73069, + "node_id": "MDQ6VXNlcjczMDY5", + "avatar_url": "https://avatars.githubusercontent.com/u/73069?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/jdevera", + "html_url": "https://github.com/jdevera", + "followers_url": "https://api.github.com/users/jdevera/followers", + "following_url": "https://api.github.com/users/jdevera/following{/other_user}", + "gists_url": "https://api.github.com/users/jdevera/gists{/gist_id}", + "starred_url": "https://api.github.com/users/jdevera/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/jdevera/subscriptions", + "organizations_url": "https://api.github.com/users/jdevera/orgs", + "repos_url": "https://api.github.com/users/jdevera/repos", + "events_url": "https://api.github.com/users/jdevera/events{/privacy}", + "received_events_url": "https://api.github.com/users/jdevera/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2023-08-13T15:09:43Z", + "updated_at": "2023-08-13T15:09:43Z", + "body": "Thank you for this PR!\r\nLet's say there is an appetite for this particular change.\r\nFor the PR to be merged, though, there would be a few things to take care of, please let me know if you are happy to take them on:\r\n\r\n1. Ensure a 1-1 correspondence between the current settings and the new ones with ruff. In his case, the command introduces a line length limit of 117 whereas this project explicitly disables line length checks currently. Generally, these changes should not be introduced without mentioning them explicitly.\r\n1. Run the command on the repo and contribute also the changes that will fix violations. In his case, two violations appear, and this would result in an immediate CI failure upon merging this PR.\r\n1. Also change non-functional code that refers to the changes you are making. There is a title for the step you are changing that refers to flake8 and should not. But also there are other places in the repo that refer to the tools you are replacing, like the dev.requirements file and the format.sh script", + "author_association": "COLLABORATOR", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1676387931/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1676430363", + "html_url": "https://github.com/un33k/python-slugify/pull/134#issuecomment-1676430363", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/134", + "id": 1676430363, + "node_id": "IC_kwDOAF7qK85j7Ewb", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2023-08-13T18:25:44Z", + "updated_at": "2023-08-13T18:25:44Z", + "body": "@jmelahman Thank you for your efforts and your work on the package. At this time, the package is stable and utilized by many projects. Our current intention is to maintain it in its present state, making changes only if a bug is discovered that won't negatively impact existing behavior or dependent users.\r\n\r\nFeel free to fork it, choose a unique package name and move it forward if you wish.", + "author_association": "OWNER", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1676430363/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1676451965", + "html_url": "https://github.com/un33k/python-slugify/pull/134#issuecomment-1676451965", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/134", + "id": 1676451965, + "node_id": "IC_kwDOAF7qK85j7KB9", + "user": { + "login": "jmelahman", + "id": 23436978, + "node_id": "MDQ6VXNlcjIzNDM2OTc4", + "avatar_url": "https://avatars.githubusercontent.com/u/23436978?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/jmelahman", + "html_url": "https://github.com/jmelahman", + "followers_url": "https://api.github.com/users/jmelahman/followers", + "following_url": "https://api.github.com/users/jmelahman/following{/other_user}", + "gists_url": "https://api.github.com/users/jmelahman/gists{/gist_id}", + "starred_url": "https://api.github.com/users/jmelahman/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/jmelahman/subscriptions", + "organizations_url": "https://api.github.com/users/jmelahman/orgs", + "repos_url": "https://api.github.com/users/jmelahman/repos", + "events_url": "https://api.github.com/users/jmelahman/events{/privacy}", + "received_events_url": "https://api.github.com/users/jmelahman/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2023-08-13T20:08:53Z", + "updated_at": "2023-08-13T20:08:53Z", + "body": "> @jmelahman Thank you for your efforts and your work on the package. At this time, the package is stable and utilized by many projects. Our current intention is to maintain it in its present state, making changes only if a bug is discovered that won't negatively impact existing behavior or dependent users.\r\n\r\nI would ask you to reconsider. This is the quintessential use-case for versioning. I would argue lack of type hints negatively impact existing behavior, even with typeshed involved.\r\n\r\nIf you'd accept this without any behavioral changes regardless of type imprecision, I would be happily oblige.\r\n\r\nOtherwise, for anyone else interested, I will try to maintain https://github.com/jmelahman/typed-slugify.", + "author_association": "NONE", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1676451965/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1676452216", + "html_url": "https://github.com/un33k/python-slugify/pull/134#issuecomment-1676452216", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/134", + "id": 1676452216, + "node_id": "IC_kwDOAF7qK85j7KF4", + "user": { + "login": "jmelahman", + "id": 23436978, + "node_id": "MDQ6VXNlcjIzNDM2OTc4", + "avatar_url": "https://avatars.githubusercontent.com/u/23436978?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/jmelahman", + "html_url": "https://github.com/jmelahman", + "followers_url": "https://api.github.com/users/jmelahman/followers", + "following_url": "https://api.github.com/users/jmelahman/following{/other_user}", + "gists_url": "https://api.github.com/users/jmelahman/gists{/gist_id}", + "starred_url": "https://api.github.com/users/jmelahman/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/jmelahman/subscriptions", + "organizations_url": "https://api.github.com/users/jmelahman/orgs", + "repos_url": "https://api.github.com/users/jmelahman/repos", + "events_url": "https://api.github.com/users/jmelahman/events{/privacy}", + "received_events_url": "https://api.github.com/users/jmelahman/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2023-08-13T20:10:15Z", + "updated_at": "2023-08-13T20:10:15Z", + "body": "Conversely, if you're open to merging `.pyi` files, I can open a PR for that. Would be interested in any path to get this package `py.typed`.", + "author_association": "NONE", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1676452216/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1676468251", + "html_url": "https://github.com/un33k/python-slugify/pull/134#issuecomment-1676468251", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/134", + "id": 1676468251, + "node_id": "IC_kwDOAF7qK85j7OAb", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2023-08-13T21:33:27Z", + "updated_at": "2023-08-13T21:33:27Z", + "body": "I have no time to allocate to this at the moment, so I'll leave it to the other collaborators on the repo. If they decide to merge your PR, that should be fine. Forking is fine as well, provided the license is respected.", + "author_association": "OWNER", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1676468251/reactions", + "total_count": 1, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 1, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1676475334", + "html_url": "https://github.com/un33k/python-slugify/pull/134#issuecomment-1676475334", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/134", + "id": 1676475334, + "node_id": "IC_kwDOAF7qK85j7PvG", + "user": { + "login": "jmelahman", + "id": 23436978, + "node_id": "MDQ6VXNlcjIzNDM2OTc4", + "avatar_url": "https://avatars.githubusercontent.com/u/23436978?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/jmelahman", + "html_url": "https://github.com/jmelahman", + "followers_url": "https://api.github.com/users/jmelahman/followers", + "following_url": "https://api.github.com/users/jmelahman/following{/other_user}", + "gists_url": "https://api.github.com/users/jmelahman/gists{/gist_id}", + "starred_url": "https://api.github.com/users/jmelahman/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/jmelahman/subscriptions", + "organizations_url": "https://api.github.com/users/jmelahman/orgs", + "repos_url": "https://api.github.com/users/jmelahman/repos", + "events_url": "https://api.github.com/users/jmelahman/events{/privacy}", + "received_events_url": "https://api.github.com/users/jmelahman/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2023-08-13T22:08:47Z", + "updated_at": "2023-08-13T22:08:47Z", + "body": "Thanks all for your time.\r\n\r\nI didn't realize I can't re-open this PR + I lost my remote when I renamed my fork :sweat_smile: \r\n\r\n@jdevera, I believe the following diff addresses both of your comments + passes tests (also feel free to make any adjustments you deem fit to this branch, etc.),\r\n```\r\ndiff --git a/slugify/__main__.py b/slugify/__main__.py\r\nindex b7108db..90c559b 100644\r\n--- a/slugify/__main__.py\r\n+++ b/slugify/__main__.py\r\n@@ -5,7 +5,7 @@ import sys\r\n from .slugify import slugify, SlugifyParams, DEFAULT_SEPARATOR\r\n \r\n \r\n-def parse_args(argv: list[str] | None) -> argparse.Namespace:\r\n+def parse_args(argv: list[str]) -> argparse.Namespace:\r\n parser = argparse.ArgumentParser(description=\"Slug string\")\r\n \r\n input_group = parser.add_argument_group(description=\"Input\")\r\n@@ -39,7 +39,7 @@ def parse_args(argv: list[str] | None) -> argparse.Namespace:\r\n parser.add_argument(\"--allow-unicode\", action='store_true', default=False,\r\n help=\"Allow unicode characters\")\r\n \r\n- args = parser.parse_args(argv[1:] if argv else [])\r\n+ args = parser.parse_args(argv[1:])\r\n \r\n if args.input_string and args.stdin:\r\n parser.error(\"Input strings and --stdin cannot work together\")\r\ndiff --git a/slugify/special.py b/slugify/special.py\r\nindex 9196b13..b8c7278 100644\r\n--- a/slugify/special.py\r\n+++ b/slugify/special.py\r\n@@ -2,7 +2,7 @@\r\n from __future__ import annotations\r\n \r\n \r\n-def add_uppercase_char(char_list: list[tuple[str, str]]) -> list[tuple[str, str]]:\r\n+def add_uppercase_char(char_list: list[tuple[str, str]]) -> list[tuple[str, str]]: # type: ignore[return-value]\r\n \"\"\" Given a replacement char list, this adds uppercase chars to the list \"\"\"\r\n \r\n for item in char_list:\r\n@@ -11,7 +11,6 @@ def add_uppercase_char(char_list: list[tuple[str, str]]) -> list[tuple[str, str]\r\n if upper_dict not in char_list and char != upper_dict[0]:\r\n char_list.insert(0, upper_dict)\r\n return char_list\r\n- raise RuntimeError(\"char_list must not be empty\")\r\n \r\n \r\n # Language specific pre translations\r\n\r\n```", + "author_association": "NONE", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1676475334/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1679564900", + "html_url": "https://github.com/un33k/python-slugify/pull/131#issuecomment-1679564900", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/131", + "id": 1679564900, + "node_id": "IC_kwDOAF7qK85kHCBk", + "user": { + "login": "cclauss", + "id": 3709715, + "node_id": "MDQ6VXNlcjM3MDk3MTU=", + "avatar_url": "https://avatars.githubusercontent.com/u/3709715?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/cclauss", + "html_url": "https://github.com/cclauss", + "followers_url": "https://api.github.com/users/cclauss/followers", + "following_url": "https://api.github.com/users/cclauss/following{/other_user}", + "gists_url": "https://api.github.com/users/cclauss/gists{/gist_id}", + "starred_url": "https://api.github.com/users/cclauss/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/cclauss/subscriptions", + "organizations_url": "https://api.github.com/users/cclauss/orgs", + "repos_url": "https://api.github.com/users/cclauss/repos", + "events_url": "https://api.github.com/users/cclauss/events{/privacy}", + "received_events_url": "https://api.github.com/users/cclauss/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2023-08-15T20:28:30Z", + "updated_at": "2023-08-15T20:28:50Z", + "body": "> this project explicitly disables line length checks currently\r\n\r\nDisabling line length checks (and code complexity checks) is a bad idea because it encourages further bad behavior. If instead we set an upper limit then if someone wants to contribute longer lines (or more complex code) then they need to justify in their pull request why they _need_ messier code then is already in the codebase.\r\n\r\n> contribute also the changes that will fix violations\r\n\r\nRome was not built it a day. A pull request that improves the codebase by setting up guardrails moves the project forward. Fixing the two ignored issues will make for a much more complicated pull request to get reviewed and merged. Given that this pull request has taken more than 5 months to get reviewed, keeping the changes simple is goodness.\r\n\r\n> other places in the repo that refer to the tools you are replacing, like the dev.requirements file and the format.sh script\r\n\r\nThis GitHub Action does not use `dev.requirements` and ruff is not a code formatter. Black is.", + "author_association": "CONTRIBUTOR", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1679564900/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1679622415", + "html_url": "https://github.com/un33k/python-slugify/pull/132#issuecomment-1679622415", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/132", + "id": 1679622415, + "node_id": "IC_kwDOAF7qK85kHQEP", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2023-08-15T21:12:46Z", + "updated_at": "2023-08-15T21:12:46Z", + "body": "Please be advised that PRs should be raised against the 'staging' branch. The reason for this is that many PRs don't properly update versions, add change logs, or credit authors. This means additional work is needed. Once staging is approved, it triggers the CI, and if passed, it will be merged into 'master'. The 'sandbox' is reserved for my personal items. The flow is as follows: clone -> checkout (dev) -> PR to staging -> merge (via CI) -> merge to 'master'. While this process may seem extensive, it's what we've evolved to. We could transition to a dev/ci/main structure in the future, but currently, the package is stable with few changes.", + "author_association": "OWNER", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1679622415/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1679623467", + "html_url": "https://github.com/un33k/python-slugify/pull/132#issuecomment-1679623467", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/132", + "id": 1679623467, + "node_id": "IC_kwDOAF7qK85kHQUr", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2023-08-15T21:13:45Z", + "updated_at": "2023-08-15T21:13:45Z", + "body": "Contributors/Collaborators - Please feel free to approve and merge.", + "author_association": "OWNER", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1679623467/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1679625015", + "html_url": "https://github.com/un33k/python-slugify/pull/131#issuecomment-1679625015", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/131", + "id": 1679625015, + "node_id": "IC_kwDOAF7qK85kHQs3", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2023-08-15T21:15:05Z", + "updated_at": "2023-08-15T21:15:05Z", + "body": "Contributors/Collaborators - Please feel free to approve and merge.\r\n\r\nOne question: Do we need to ensure 'ruff' is installed on all systems without it being in the requirements.txt", + "author_association": "OWNER", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1679625015/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1679631420", + "html_url": "https://github.com/un33k/python-slugify/pull/131#issuecomment-1679631420", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/131", + "id": 1679631420, + "node_id": "IC_kwDOAF7qK85kHSQ8", + "user": { + "login": "cclauss", + "id": 3709715, + "node_id": "MDQ6VXNlcjM3MDk3MTU=", + "avatar_url": "https://avatars.githubusercontent.com/u/3709715?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/cclauss", + "html_url": "https://github.com/cclauss", + "followers_url": "https://api.github.com/users/cclauss/followers", + "following_url": "https://api.github.com/users/cclauss/following{/other_user}", + "gists_url": "https://api.github.com/users/cclauss/gists{/gist_id}", + "starred_url": "https://api.github.com/users/cclauss/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/cclauss/subscriptions", + "organizations_url": "https://api.github.com/users/cclauss/orgs", + "repos_url": "https://api.github.com/users/cclauss/repos", + "events_url": "https://api.github.com/users/cclauss/events{/privacy}", + "received_events_url": "https://api.github.com/users/cclauss/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2023-08-15T21:20:38Z", + "updated_at": "2023-08-15T21:20:38Z", + "body": "> Do we need to ensure 'ruff' is installed on all systems without it being in the requirements.txt\r\n\r\nPerhaps ruff and black and similar tools should be run in [pre-commit](https://pre-commit.com) to ensure the same versions are installed on all contributing and testing machines.", + "author_association": "CONTRIBUTOR", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1679631420/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1685063817", + "html_url": "https://github.com/un33k/python-slugify/pull/131#issuecomment-1685063817", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/131", + "id": 1685063817, + "node_id": "IC_kwDOAF7qK85kcAiJ", + "user": { + "login": "jdevera", + "id": 73069, + "node_id": "MDQ6VXNlcjczMDY5", + "avatar_url": "https://avatars.githubusercontent.com/u/73069?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/jdevera", + "html_url": "https://github.com/jdevera", + "followers_url": "https://api.github.com/users/jdevera/followers", + "following_url": "https://api.github.com/users/jdevera/following{/other_user}", + "gists_url": "https://api.github.com/users/jdevera/gists{/gist_id}", + "starred_url": "https://api.github.com/users/jdevera/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/jdevera/subscriptions", + "organizations_url": "https://api.github.com/users/jdevera/orgs", + "repos_url": "https://api.github.com/users/jdevera/repos", + "events_url": "https://api.github.com/users/jdevera/events{/privacy}", + "received_events_url": "https://api.github.com/users/jdevera/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2023-08-19T17:37:27Z", + "updated_at": "2023-08-19T17:37:27Z", + "body": "> Fixing the two ignored issues will make for a much more complicated pull request to get reviewed and merged.\r\n\r\nMy bad, I did not mean the ignored issues, but it was a misunderstanding coming 100% from me. My working tree was dirty, and the command caught some errors in some experimental test files I had around. No real issues here.\r\n\r\n> Given that this pull request has taken more than 5 months to get reviewed, keeping the changes simple is goodness.\r\n\r\nRegardless of the misunderstanding, I believe the time it takes to review PRs here depends more on the availability of the maintainers than on anything else.\r\n\r\n> Do we need to ensure 'ruff' is installed on all systems without it being in the requirements.txt\r\n\r\nI would add a line to the dev.requirements.txt, with a specific version, and I think this PR would benefit from locking on the version of ruff in the workflow file too.\r\n\r\nRE: the line length check. I'm all for it and this could then be the last time two humans have a conversation about such a boring topic on this repo 🥂 .", + "author_association": "COLLABORATOR", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1685063817/reactions", + "total_count": 1, + "+1": 0, + "-1": 0, + "laugh": 1, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1753052413", + "html_url": "https://github.com/un33k/python-slugify/pull/135#issuecomment-1753052413", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/135", + "id": 1753052413, + "node_id": "IC_kwDOAF7qK85ofXT9", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2023-10-09T13:49:13Z", + "updated_at": "2023-10-09T13:49:13Z", + "body": "@DanielNoord this is great. Would it be possible to point the PR to `staging` instead? Thank you.", + "author_association": "OWNER", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1753052413/reactions", + "total_count": 1, + "+1": 1, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1753054733", + "html_url": "https://github.com/un33k/python-slugify/pull/135#issuecomment-1753054733", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/135", + "id": 1753054733, + "node_id": "IC_kwDOAF7qK85ofX4N", + "user": { + "login": "DanielNoord", + "id": 13665637, + "node_id": "MDQ6VXNlcjEzNjY1NjM3", + "avatar_url": "https://avatars.githubusercontent.com/u/13665637?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/DanielNoord", + "html_url": "https://github.com/DanielNoord", + "followers_url": "https://api.github.com/users/DanielNoord/followers", + "following_url": "https://api.github.com/users/DanielNoord/following{/other_user}", + "gists_url": "https://api.github.com/users/DanielNoord/gists{/gist_id}", + "starred_url": "https://api.github.com/users/DanielNoord/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/DanielNoord/subscriptions", + "organizations_url": "https://api.github.com/users/DanielNoord/orgs", + "repos_url": "https://api.github.com/users/DanielNoord/repos", + "events_url": "https://api.github.com/users/DanielNoord/events{/privacy}", + "received_events_url": "https://api.github.com/users/DanielNoord/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2023-10-09T13:50:24Z", + "updated_at": "2023-10-09T13:50:47Z", + "body": "@un33k Changed the base. There seem to be no conflicts? But feel free to rebase this branch on `staging`.\r\n\r\nEdit: Never mind. Thanks for merging!", + "author_association": "CONTRIBUTOR", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1753054733/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1753130246", + "html_url": "https://github.com/un33k/python-slugify/pull/131#issuecomment-1753130246", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/131", + "id": 1753130246, + "node_id": "IC_kwDOAF7qK85ofqUG", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2023-10-09T14:33:48Z", + "updated_at": "2023-10-09T14:33:48Z", + "body": "@jdevera, I merged this in, but CI wasn't happy with it, and I didn't have time to investigate. I've reverted it for now.\r\n\r\nI believe adding feat/* and bug/* to the GitHub action would be beneficial. This way, any push to such a branch would trigger CI, allowing us to know if CI fails before any PR is created.\r\n\r\nHad these changes been in feat/flake-ruff, a GitHub action would have been triggered.", + "author_association": "OWNER", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1753130246/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1779642633", + "html_url": "https://github.com/un33k/python-slugify/pull/139#issuecomment-1779642633", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/139", + "id": 1779642633, + "node_id": "IC_kwDOAF7qK85qEzEJ", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2023-10-25T16:27:28Z", + "updated_at": "2023-10-25T16:27:28Z", + "body": "Thank you", + "author_association": "OWNER", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1779642633/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1781127070", + "html_url": "https://github.com/un33k/python-slugify/pull/139#issuecomment-1781127070", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/139", + "id": 1781127070, + "node_id": "IC_kwDOAF7qK85qKdee", + "user": { + "login": "foarsitter", + "id": 3885256, + "node_id": "MDQ6VXNlcjM4ODUyNTY=", + "avatar_url": "https://avatars.githubusercontent.com/u/3885256?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/foarsitter", + "html_url": "https://github.com/foarsitter", + "followers_url": "https://api.github.com/users/foarsitter/followers", + "following_url": "https://api.github.com/users/foarsitter/following{/other_user}", + "gists_url": "https://api.github.com/users/foarsitter/gists{/gist_id}", + "starred_url": "https://api.github.com/users/foarsitter/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/foarsitter/subscriptions", + "organizations_url": "https://api.github.com/users/foarsitter/orgs", + "repos_url": "https://api.github.com/users/foarsitter/repos", + "events_url": "https://api.github.com/users/foarsitter/events{/privacy}", + "received_events_url": "https://api.github.com/users/foarsitter/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2023-10-26T13:28:09Z", + "updated_at": "2023-10-26T13:28:09Z", + "body": "Thanks for maintaining this project! ", + "author_association": "CONTRIBUTOR", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1781127070/reactions", + "total_count": 1, + "+1": 1, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1802496429", + "html_url": "https://github.com/un33k/python-slugify/issues/140#issuecomment-1802496429", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/140", + "id": 1802496429, + "node_id": "IC_kwDOAF7qK85rb-mt", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2023-11-08T19:12:52Z", + "updated_at": "2023-11-08T19:12:52Z", + "body": "text-unidecode is default, unidecode is extra. \r\n\r\nif unidecode is found, text-unidecode will be ignored, but not uninstalled. ", + "author_association": "OWNER", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1802496429/reactions", + "total_count": 1, + "+1": 1, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1893924241", + "html_url": "https://github.com/un33k/python-slugify/issues/141#issuecomment-1893924241", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/141", + "id": 1893924241, + "node_id": "IC_kwDOAF7qK85w4v2R", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2024-01-16T15:01:17Z", + "updated_at": "2024-01-16T15:01:40Z", + "body": "@nieder I've never used PyPi myself. Community members have added that to the builds. Unless community members raise a PR, there is no plane to further investigate this. ", + "author_association": "OWNER", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1893924241/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1900410479", + "html_url": "https://github.com/un33k/python-slugify/issues/141#issuecomment-1900410479", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/141", + "id": 1900410479, + "node_id": "IC_kwDOAF7qK85xRfZv", + "user": { + "login": "nieder", + "id": 1105137, + "node_id": "MDQ6VXNlcjExMDUxMzc=", + "avatar_url": "https://avatars.githubusercontent.com/u/1105137?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/nieder", + "html_url": "https://github.com/nieder", + "followers_url": "https://api.github.com/users/nieder/followers", + "following_url": "https://api.github.com/users/nieder/following{/other_user}", + "gists_url": "https://api.github.com/users/nieder/gists{/gist_id}", + "starred_url": "https://api.github.com/users/nieder/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/nieder/subscriptions", + "organizations_url": "https://api.github.com/users/nieder/orgs", + "repos_url": "https://api.github.com/users/nieder/repos", + "events_url": "https://api.github.com/users/nieder/events{/privacy}", + "received_events_url": "https://api.github.com/users/nieder/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2024-01-19T13:16:02Z", + "updated_at": "2024-01-19T13:16:02Z", + "body": "Interesting. I knew wheels could be community built on PyPi, but not the tarballs. Anyway, I'll keep using the github tarball.", + "author_association": "NONE", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1900410479/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1910629046", + "html_url": "https://github.com/un33k/python-slugify/issues/142#issuecomment-1910629046", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/142", + "id": 1910629046, + "node_id": "IC_kwDOAF7qK85x4eK2", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2024-01-25T17:06:01Z", + "updated_at": "2024-01-25T17:06:01Z", + "body": "@chuckyblack thanks for reporting it. I have raised a PR, which will normalize the text twice. \r\n\r\nhttps://github.com/un33k/python-slugify/pull/143", + "author_association": "OWNER", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1910629046/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1913177664", + "html_url": "https://github.com/un33k/python-slugify/issues/144#issuecomment-1913177664", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/144", + "id": 1913177664, + "node_id": "IC_kwDOAF7qK85yCMZA", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2024-01-27T14:48:33Z", + "updated_at": "2024-01-27T14:48:33Z", + "body": "Ah, the good old days when this module lacked typings and supported both Python 2.7 and 3+. Now, with the typing of text: str, it's required that the caller passes in a string.\r\n\r\nSome parts of the code might need pruning; however, the module is very stable. Rocking the boat is not part of the plan moving forward. Thanks.", + "author_association": "OWNER", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1913177664/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1913370378", + "html_url": "https://github.com/un33k/python-slugify/issues/144#issuecomment-1913370378", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/144", + "id": 1913370378, + "node_id": "IC_kwDOAF7qK85yC7cK", + "user": { + "login": "codyc1515", + "id": 50791984, + "node_id": "MDQ6VXNlcjUwNzkxOTg0", + "avatar_url": "https://avatars.githubusercontent.com/u/50791984?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/codyc1515", + "html_url": "https://github.com/codyc1515", + "followers_url": "https://api.github.com/users/codyc1515/followers", + "following_url": "https://api.github.com/users/codyc1515/following{/other_user}", + "gists_url": "https://api.github.com/users/codyc1515/gists{/gist_id}", + "starred_url": "https://api.github.com/users/codyc1515/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/codyc1515/subscriptions", + "organizations_url": "https://api.github.com/users/codyc1515/orgs", + "repos_url": "https://api.github.com/users/codyc1515/repos", + "events_url": "https://api.github.com/users/codyc1515/events{/privacy}", + "received_events_url": "https://api.github.com/users/codyc1515/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2024-01-27T23:48:31Z", + "updated_at": "2024-01-27T23:48:31Z", + "body": "No problem. It seems like this module always fails if passed a non-Str, so I think we can remove that code then?", + "author_association": "NONE", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1913370378/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1913370919", + "html_url": "https://github.com/un33k/python-slugify/issues/144#issuecomment-1913370919", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/144", + "id": 1913370919, + "node_id": "IC_kwDOAF7qK85yC7kn", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2024-01-27T23:51:09Z", + "updated_at": "2024-01-27T23:51:09Z", + "body": "Next time around .. ", + "author_association": "OWNER", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1913370919/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1919616549", + "html_url": "https://github.com/un33k/python-slugify/pull/145#issuecomment-1919616549", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/145", + "id": 1919616549, + "node_id": "IC_kwDOAF7qK85yawYl", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2024-01-31T17:53:37Z", + "updated_at": "2024-01-31T17:53:37Z", + "body": "@Viicos Could you target the ci branch instead. Thx", + "author_association": "OWNER", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1919616549/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1919635240", + "html_url": "https://github.com/un33k/python-slugify/pull/146#issuecomment-1919635240", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/146", + "id": 1919635240, + "node_id": "IC_kwDOAF7qK85ya08o", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2024-01-31T18:04:26Z", + "updated_at": "2024-01-31T18:04:26Z", + "body": "Thank you very much. ", + "author_association": "OWNER", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1919635240/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1919668401", + "html_url": "https://github.com/un33k/python-slugify/pull/146#issuecomment-1919668401", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/146", + "id": 1919668401, + "node_id": "IC_kwDOAF7qK85ya9Cx", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2024-01-31T18:19:00Z", + "updated_at": "2024-01-31T18:19:00Z", + "body": "Merged into master. Thanks again. ", + "author_association": "OWNER", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1919668401/reactions", + "total_count": 1, + "+1": 1, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1934640441", + "html_url": "https://github.com/un33k/python-slugify/pull/148#issuecomment-1934640441", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/148", + "id": 1934640441, + "node_id": "IC_kwDOAF7qK85zUEU5", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2024-02-08T17:47:10Z", + "updated_at": "2024-02-08T17:47:10Z", + "body": "@mib1185 Great catch. Please kindly point your PR to the ci branch instead.", + "author_association": "OWNER", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1934640441/reactions", + "total_count": 1, + "+1": 1, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1934699597", + "html_url": "https://github.com/un33k/python-slugify/pull/148#issuecomment-1934699597", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/148", + "id": 1934699597, + "node_id": "IC_kwDOAF7qK85zUSxN", + "user": { + "login": "mib1185", + "id": 35783820, + "node_id": "MDQ6VXNlcjM1NzgzODIw", + "avatar_url": "https://avatars.githubusercontent.com/u/35783820?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/mib1185", + "html_url": "https://github.com/mib1185", + "followers_url": "https://api.github.com/users/mib1185/followers", + "following_url": "https://api.github.com/users/mib1185/following{/other_user}", + "gists_url": "https://api.github.com/users/mib1185/gists{/gist_id}", + "starred_url": "https://api.github.com/users/mib1185/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/mib1185/subscriptions", + "organizations_url": "https://api.github.com/users/mib1185/orgs", + "repos_url": "https://api.github.com/users/mib1185/repos", + "events_url": "https://api.github.com/users/mib1185/events{/privacy}", + "received_events_url": "https://api.github.com/users/mib1185/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2024-02-08T18:23:02Z", + "updated_at": "2024-02-08T18:23:02Z", + "body": "changed the target branch to `ci`", + "author_association": "CONTRIBUTOR", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1934699597/reactions", + "total_count": 1, + "+1": 1, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1934701996", + "html_url": "https://github.com/un33k/python-slugify/pull/148#issuecomment-1934701996", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/148", + "id": 1934701996, + "node_id": "IC_kwDOAF7qK85zUTWs", + "user": { + "login": "mib1185", + "id": 35783820, + "node_id": "MDQ6VXNlcjM1NzgzODIw", + "avatar_url": "https://avatars.githubusercontent.com/u/35783820?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/mib1185", + "html_url": "https://github.com/mib1185", + "followers_url": "https://api.github.com/users/mib1185/followers", + "following_url": "https://api.github.com/users/mib1185/following{/other_user}", + "gists_url": "https://api.github.com/users/mib1185/gists{/gist_id}", + "starred_url": "https://api.github.com/users/mib1185/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/mib1185/subscriptions", + "organizations_url": "https://api.github.com/users/mib1185/orgs", + "repos_url": "https://api.github.com/users/mib1185/repos", + "events_url": "https://api.github.com/users/mib1185/events{/privacy}", + "received_events_url": "https://api.github.com/users/mib1185/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2024-02-08T18:24:37Z", + "updated_at": "2024-02-08T18:24:37Z", + "body": "thanks for fast reaction and merging this 👍 ", + "author_association": "CONTRIBUTOR", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1934701996/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1934714421", + "html_url": "https://github.com/un33k/python-slugify/pull/148#issuecomment-1934714421", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/148", + "id": 1934714421, + "node_id": "IC_kwDOAF7qK85zUWY1", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2024-02-08T18:33:06Z", + "updated_at": "2024-02-08T18:33:06Z", + "body": "Merged. Thx", + "author_association": "OWNER", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1934714421/reactions", + "total_count": 1, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 1, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1975197962", + "html_url": "https://github.com/un33k/python-slugify/issues/150#issuecomment-1975197962", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/150", + "id": 1975197962, + "node_id": "IC_kwDOAF7qK851uyEK", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2024-03-03T15:30:05Z", + "updated_at": "2024-03-03T15:30:05Z", + "body": "@jenstroeger It would be best if `slugify` adhered to the Unix motto: `Do one thing, do it well`.\r\n\r\nTherefore, any special operations should be performed before or after calling `slugify`.", + "author_association": "OWNER", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/1975197962/reactions", + "total_count": 1, + "+1": 1, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/2025838401", + "html_url": "https://github.com/un33k/python-slugify/issues/151#issuecomment-2025838401", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/151", + "id": 2025838401, + "node_id": "IC_kwDOAF7qK854v9dB", + "user": { + "login": "pomponchik", + "id": 34486915, + "node_id": "MDQ6VXNlcjM0NDg2OTE1", + "avatar_url": "https://avatars.githubusercontent.com/u/34486915?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/pomponchik", + "html_url": "https://github.com/pomponchik", + "followers_url": "https://api.github.com/users/pomponchik/followers", + "following_url": "https://api.github.com/users/pomponchik/following{/other_user}", + "gists_url": "https://api.github.com/users/pomponchik/gists{/gist_id}", + "starred_url": "https://api.github.com/users/pomponchik/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/pomponchik/subscriptions", + "organizations_url": "https://api.github.com/users/pomponchik/orgs", + "repos_url": "https://api.github.com/users/pomponchik/repos", + "events_url": "https://api.github.com/users/pomponchik/events{/privacy}", + "received_events_url": "https://api.github.com/users/pomponchik/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2024-03-28T18:18:50Z", + "updated_at": "2024-03-28T18:21:39Z", + "body": "And if i use the `allow_unicode` flag with this code:\r\n\r\n```python\r\n>>> from slugify import slugify\r\n>>> text = 'Это против природы, это неестественно'\r\n>>> slugify(text, allow_unicode=True)\r\n```\r\n ... I get an another exception:\r\n\r\n```\r\n>>> slugify(text, allow_unicode=True)\r\nTraceback (most recent call last):\r\n File \"\", line 1, in \r\nTypeError: slugify() got an unexpected keyword argument 'allow_unicode'\r\n```", + "author_association": "NONE", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/2025838401/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/2025860632", + "html_url": "https://github.com/un33k/python-slugify/issues/151#issuecomment-2025860632", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/151", + "id": 2025860632, + "node_id": "IC_kwDOAF7qK854wC4Y", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2024-03-28T18:31:12Z", + "updated_at": "2024-03-28T18:42:39Z", + "body": "All Python versions have passed their tests, including 3.7, as per: https://github.com/un33k/python-slugify/actions/runs/8115538091.\r\n\r\nIt is possible that you are running another package called slugify.\r\n\r\nPlease do the following:\r\n\r\n```text\r\n$ pip freeze | grep slugify\r\n$ pip uninstall slugify\r\n$ pip uninstall python-slugify\r\n$ pip install python-slugify\r\n```\r\n\r\nAnd try again.\r\n\r\n$ python --version\r\nPython 3.11.4\r\n\r\n>>> from slugify import slugify\r\n>>> text = 'Это против природы, это неестественно'\r\n>>> slugify(text, allow_unicode=True)\r\n'это-против-природы-это-неестественно'\r\nslugify(text, allow_unicode=False)\r\n'eto-protiv-prirody-eto-neestestvenno'", + "author_association": "OWNER", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/2025860632/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/2359259900", + "html_url": "https://github.com/un33k/python-slugify/pull/152#issuecomment-2359259900", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/152", + "id": 2359259900, + "node_id": "IC_kwDOAF7qK86Mn3L8", + "user": { + "login": "sagesharp", + "id": 270108, + "node_id": "MDQ6VXNlcjI3MDEwOA==", + "avatar_url": "https://avatars.githubusercontent.com/u/270108?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/sagesharp", + "html_url": "https://github.com/sagesharp", + "followers_url": "https://api.github.com/users/sagesharp/followers", + "following_url": "https://api.github.com/users/sagesharp/following{/other_user}", + "gists_url": "https://api.github.com/users/sagesharp/gists{/gist_id}", + "starred_url": "https://api.github.com/users/sagesharp/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/sagesharp/subscriptions", + "organizations_url": "https://api.github.com/users/sagesharp/orgs", + "repos_url": "https://api.github.com/users/sagesharp/repos", + "events_url": "https://api.github.com/users/sagesharp/events{/privacy}", + "received_events_url": "https://api.github.com/users/sagesharp/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2024-09-18T19:36:33Z", + "updated_at": "2024-09-18T19:38:47Z", + "body": "Ah, it seems the instructions on the wiki for sending in a pull request are incorrect? The instructions say to open a PR against the CI branch. However, the CI branch seems to be missing some commits from the main branch, so this GitHub PR automatically tried to add them. I'm not as familiar with GitHub process flow (most of my projects I have commit rights to), so please have patience with me. I'll double check I didn't skip any steps in the instructions.", + "author_association": "NONE", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/2359259900/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/2372350114", + "html_url": "https://github.com/un33k/python-slugify/issues/151#issuecomment-2372350114", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/151", + "id": 2372350114, + "node_id": "IC_kwDOAF7qK86NZzCi", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2024-09-24T20:43:25Z", + "updated_at": "2024-09-24T20:43:25Z", + "body": "This package at top level is called `python-slugify` and once installed, it is used as `slugify`.\r\n\r\n```python\r\nfrom slugify import slugify\r\n```\r\n\r\nA top level `slugify` package is not maintained here. \r\n", + "author_association": "OWNER", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/2372350114/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/2372352984", + "html_url": "https://github.com/un33k/python-slugify/pull/152#issuecomment-2372352984", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/152", + "id": 2372352984, + "node_id": "IC_kwDOAF7qK86NZzvY", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2024-09-24T20:45:02Z", + "updated_at": "2024-09-24T20:45:02Z", + "body": "Thank you for this PR. It will be pulled in on the next update cycle, along with at least one hot issue.", + "author_association": "OWNER", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/2372352984/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/2379656659", + "html_url": "https://github.com/un33k/python-slugify/issues/153#issuecomment-2379656659", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/153", + "id": 2379656659, + "node_id": "IC_kwDOAF7qK86N1q3T", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2024-09-27T16:29:21Z", + "updated_at": "2024-09-27T16:29:21Z", + "body": "There are numerous exceptions to the rule in different languages. Consequently, `python-slugify` offers a `replacement` option through which the slug can be preprocessed before the creation of the actual slug.\r\n\r\n```python\r\nr = slugify(txt, replacements=[['Ü', 'UE'], ['ü', 'ue']])\r\n```\r\n\r\nFor further information, please consult the readme.\r\n", + "author_association": "OWNER", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/2379656659/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/2402600813", + "html_url": "https://github.com/un33k/python-slugify/pull/154#issuecomment-2402600813", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/154", + "id": 2402600813, + "node_id": "IC_kwDOAF7qK86PNMdt", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2024-10-09T15:04:54Z", + "updated_at": "2024-10-09T15:05:14Z", + "body": "This is great. It will be merged on the next round of updates. ", + "author_association": "OWNER", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/2402600813/reactions", + "total_count": 2, + "+1": 2, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/2856609670", + "html_url": "https://github.com/un33k/python-slugify/pull/154#issuecomment-2856609670", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/154", + "id": 2856609670, + "node_id": "IC_kwDOAF7qK86qRGeG", + "user": { + "login": "edgarrmondragon", + "id": 16805946, + "node_id": "MDQ6VXNlcjE2ODA1OTQ2", + "avatar_url": "https://avatars.githubusercontent.com/u/16805946?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/edgarrmondragon", + "html_url": "https://github.com/edgarrmondragon", + "followers_url": "https://api.github.com/users/edgarrmondragon/followers", + "following_url": "https://api.github.com/users/edgarrmondragon/following{/other_user}", + "gists_url": "https://api.github.com/users/edgarrmondragon/gists{/gist_id}", + "starred_url": "https://api.github.com/users/edgarrmondragon/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/edgarrmondragon/subscriptions", + "organizations_url": "https://api.github.com/users/edgarrmondragon/orgs", + "repos_url": "https://api.github.com/users/edgarrmondragon/repos", + "events_url": "https://api.github.com/users/edgarrmondragon/events{/privacy}", + "received_events_url": "https://api.github.com/users/edgarrmondragon/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2025-05-07T00:07:58Z", + "updated_at": "2025-05-07T00:07:58Z", + "body": "ping @un33k :)", + "author_association": "CONTRIBUTOR", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/2856609670/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/3214042769", + "html_url": "https://github.com/un33k/python-slugify/pull/155#issuecomment-3214042769", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/155", + "id": 3214042769, + "node_id": "IC_kwDOAF7qK86_kmaR", + "user": { + "login": "marksteward", + "id": 121960, + "node_id": "MDQ6VXNlcjEyMTk2MA==", + "avatar_url": "https://avatars.githubusercontent.com/u/121960?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/marksteward", + "html_url": "https://github.com/marksteward", + "followers_url": "https://api.github.com/users/marksteward/followers", + "following_url": "https://api.github.com/users/marksteward/following{/other_user}", + "gists_url": "https://api.github.com/users/marksteward/gists{/gist_id}", + "starred_url": "https://api.github.com/users/marksteward/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/marksteward/subscriptions", + "organizations_url": "https://api.github.com/users/marksteward/orgs", + "repos_url": "https://api.github.com/users/marksteward/repos", + "events_url": "https://api.github.com/users/marksteward/events{/privacy}", + "received_events_url": "https://api.github.com/users/marksteward/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2025-08-22T11:29:11Z", + "updated_at": "2025-08-22T11:29:11Z", + "body": "This is probably worth doing, but it could do with some tidy-up.\r\n\r\nIn particular:\r\n - the docstring has vanished\r\n - `_ensure_unicode` is redundant since python3\r\n - `_truncate_text` takes `default_separator` instead of referring to the global `DEFAULT_SEPARATOR`\r\n - `_adjust_separator` takes both `default_separator` and `separator`\r\n - `_apply_replacements`, `_adjust_case`, `_process_stopwords` and `_adjust_separator` all do an early return if not enabled on entry. This would be clearer outside the functions, and shows that `_adjust_case` really just obscures a call to `.lower()`.\r\n\r\nI also think `_safe_sub` should be wrapping `repl`, not `re.sub`, but this would be a change in behaviour.\r\n", + "author_association": "CONTRIBUTOR", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/3214042769/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/3320073906", + "html_url": "https://github.com/un33k/python-slugify/issues/101#issuecomment-3320073906", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/101", + "id": 3320073906, + "node_id": "IC_kwDOAF7qK87F5E6y", + "user": { + "login": "marksteward", + "id": 121960, + "node_id": "MDQ6VXNlcjEyMTk2MA==", + "avatar_url": "https://avatars.githubusercontent.com/u/121960?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/marksteward", + "html_url": "https://github.com/marksteward", + "followers_url": "https://api.github.com/users/marksteward/followers", + "following_url": "https://api.github.com/users/marksteward/following{/other_user}", + "gists_url": "https://api.github.com/users/marksteward/gists{/gist_id}", + "starred_url": "https://api.github.com/users/marksteward/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/marksteward/subscriptions", + "organizations_url": "https://api.github.com/users/marksteward/orgs", + "repos_url": "https://api.github.com/users/marksteward/repos", + "events_url": "https://api.github.com/users/marksteward/events{/privacy}", + "received_events_url": "https://api.github.com/users/marksteward/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2025-09-22T16:34:21Z", + "updated_at": "2025-09-22T16:34:21Z", + "body": "Hi, I rely on this and would be happy to review PRs for it (including mine #157).", + "author_association": "CONTRIBUTOR", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/3320073906/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/3338972518", + "html_url": "https://github.com/un33k/python-slugify/issues/158#issuecomment-3338972518", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/158", + "id": 3338972518, + "node_id": "IC_kwDOAF7qK87HBK1m", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2025-09-26T14:29:01Z", + "updated_at": "2025-09-26T14:29:01Z", + "body": "This is a wrapper, so you will not gain any speed unless you rewrite its dependencies. I recommend identifying the package’s dependencies and rewriting them in Rust.", + "author_association": "OWNER", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/3338972518/reactions", + "total_count": 1, + "+1": 1, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/3339139116", + "html_url": "https://github.com/un33k/python-slugify/pull/157#issuecomment-3339139116", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/157", + "id": 3339139116, + "node_id": "IC_kwDOAF7qK87HBzgs", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2025-09-26T15:20:05Z", + "updated_at": "2025-09-26T15:20:05Z", + "body": "Thx", + "author_association": "OWNER", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/3339139116/reactions", + "total_count": 1, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 1, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/3339141389", + "html_url": "https://github.com/un33k/python-slugify/pull/154#issuecomment-3339141389", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/154", + "id": 3339141389, + "node_id": "IC_kwDOAF7qK87HB0EN", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2025-09-26T15:20:43Z", + "updated_at": "2025-09-26T15:20:43Z", + "body": "Thx", + "author_association": "OWNER", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/3339141389/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/3397514882", + "html_url": "https://github.com/un33k/python-slugify/pull/152#issuecomment-3397514882", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/152", + "id": 3397514882, + "node_id": "IC_kwDOAF7qK87KgfaC", + "user": { + "login": "kurtmckee", + "id": 39996, + "node_id": "MDQ6VXNlcjM5OTk2", + "avatar_url": "https://avatars.githubusercontent.com/u/39996?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/kurtmckee", + "html_url": "https://github.com/kurtmckee", + "followers_url": "https://api.github.com/users/kurtmckee/followers", + "following_url": "https://api.github.com/users/kurtmckee/following{/other_user}", + "gists_url": "https://api.github.com/users/kurtmckee/gists{/gist_id}", + "starred_url": "https://api.github.com/users/kurtmckee/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/kurtmckee/subscriptions", + "organizations_url": "https://api.github.com/users/kurtmckee/orgs", + "repos_url": "https://api.github.com/users/kurtmckee/repos", + "events_url": "https://api.github.com/users/kurtmckee/events{/privacy}", + "received_events_url": "https://api.github.com/users/kurtmckee/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2025-10-13T13:21:56Z", + "updated_at": "2025-10-13T13:21:56Z", + "body": "@un33k This may have slipped through the cracks. I'm pinging you because it appears to still be relevant.", + "author_association": "CONTRIBUTOR", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/3397514882/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/3468930548", + "html_url": "https://github.com/un33k/python-slugify/issues/156#issuecomment-3468930548", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/156", + "id": 3468930548, + "node_id": "IC_kwDOAF7qK87Ow630", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2025-10-30T16:30:58Z", + "updated_at": "2025-10-30T16:30:58Z", + "body": "A bit busy at the moment. I will send you an invite to be admin and look at a few PRs etc. eh? ", + "author_association": "OWNER", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/3468930548/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/3480076004", + "html_url": "https://github.com/un33k/python-slugify/issues/156#issuecomment-3480076004", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/156", + "id": 3480076004, + "node_id": "IC_kwDOAF7qK87Pbb7k", + "user": { + "login": "Arian-Ott", + "id": 88984301, + "node_id": "MDQ6VXNlcjg4OTg0MzAx", + "avatar_url": "https://avatars.githubusercontent.com/u/88984301?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/Arian-Ott", + "html_url": "https://github.com/Arian-Ott", + "followers_url": "https://api.github.com/users/Arian-Ott/followers", + "following_url": "https://api.github.com/users/Arian-Ott/following{/other_user}", + "gists_url": "https://api.github.com/users/Arian-Ott/gists{/gist_id}", + "starred_url": "https://api.github.com/users/Arian-Ott/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/Arian-Ott/subscriptions", + "organizations_url": "https://api.github.com/users/Arian-Ott/orgs", + "repos_url": "https://api.github.com/users/Arian-Ott/repos", + "events_url": "https://api.github.com/users/Arian-Ott/events{/privacy}", + "received_events_url": "https://api.github.com/users/Arian-Ott/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2025-11-03T11:35:01Z", + "updated_at": "2025-11-03T11:35:01Z", + "body": "Thanks for the reply and for the offer! I appreciate the invitation.\n\nI'm happy to help look at PRs and contribute to maintenance, when I have time.\nRegarding the manpages, I will open a PR soon and add them.\n\nBest,\nArian", + "author_association": "COLLABORATOR", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/3480076004/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/3521954782", + "html_url": "https://github.com/un33k/python-slugify/pull/161#issuecomment-3521954782", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/161", + "id": 3521954782, + "node_id": "IC_kwDOAF7qK87R7MPe", + "user": { + "login": "Arian-Ott", + "id": 88984301, + "node_id": "MDQ6VXNlcjg4OTg0MzAx", + "avatar_url": "https://avatars.githubusercontent.com/u/88984301?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/Arian-Ott", + "html_url": "https://github.com/Arian-Ott", + "followers_url": "https://api.github.com/users/Arian-Ott/followers", + "following_url": "https://api.github.com/users/Arian-Ott/following{/other_user}", + "gists_url": "https://api.github.com/users/Arian-Ott/gists{/gist_id}", + "starred_url": "https://api.github.com/users/Arian-Ott/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/Arian-Ott/subscriptions", + "organizations_url": "https://api.github.com/users/Arian-Ott/orgs", + "repos_url": "https://api.github.com/users/Arian-Ott/repos", + "events_url": "https://api.github.com/users/Arian-Ott/events{/privacy}", + "received_events_url": "https://api.github.com/users/Arian-Ott/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2025-11-12T13:29:54Z", + "updated_at": "2025-11-12T13:29:54Z", + "body": "Good catch. Thanks for updating the README.", + "author_association": "COLLABORATOR", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/3521954782/reactions", + "total_count": 1, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 1, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/3559953413", + "html_url": "https://github.com/un33k/python-slugify/issues/162#issuecomment-3559953413", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/162", + "id": 3559953413, + "node_id": "IC_kwDOAF7qK87UMJQF", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2025-11-20T20:35:29Z", + "updated_at": "2025-11-20T20:35:29Z", + "body": "It uses `it` if it finds it, and it can install `it` if you instruct it to, but it does not depend on `it`, nor by default installs it. \n\nPeople are encouraged to read the issues before raising one. ", + "author_association": "OWNER", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/3559953413/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/3715021655", + "html_url": "https://github.com/un33k/python-slugify/pull/164#issuecomment-3715021655", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/164", + "id": 3715021655, + "node_id": "IC_kwDOAF7qK87dbrtX", + "user": { + "login": "Arian-Ott", + "id": 88984301, + "node_id": "MDQ6VXNlcjg4OTg0MzAx", + "avatar_url": "https://avatars.githubusercontent.com/u/88984301?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/Arian-Ott", + "html_url": "https://github.com/Arian-Ott", + "followers_url": "https://api.github.com/users/Arian-Ott/followers", + "following_url": "https://api.github.com/users/Arian-Ott/following{/other_user}", + "gists_url": "https://api.github.com/users/Arian-Ott/gists{/gist_id}", + "starred_url": "https://api.github.com/users/Arian-Ott/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/Arian-Ott/subscriptions", + "organizations_url": "https://api.github.com/users/Arian-Ott/orgs", + "repos_url": "https://api.github.com/users/Arian-Ott/repos", + "events_url": "https://api.github.com/users/Arian-Ott/events{/privacy}", + "received_events_url": "https://api.github.com/users/Arian-Ott/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2026-01-06T14:57:27Z", + "updated_at": "2026-01-06T14:57:27Z", + "body": "Thanks, I wish you as well a happy new year!\r\nI will have a look into this. ", + "author_association": "COLLABORATOR", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/3715021655/reactions", + "total_count": 1, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 1, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/3715129465", + "html_url": "https://github.com/un33k/python-slugify/pull/163#issuecomment-3715129465", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/163", + "id": 3715129465, + "node_id": "IC_kwDOAF7qK87dcGB5", + "user": { + "login": "Arian-Ott", + "id": 88984301, + "node_id": "MDQ6VXNlcjg4OTg0MzAx", + "avatar_url": "https://avatars.githubusercontent.com/u/88984301?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/Arian-Ott", + "html_url": "https://github.com/Arian-Ott", + "followers_url": "https://api.github.com/users/Arian-Ott/followers", + "following_url": "https://api.github.com/users/Arian-Ott/following{/other_user}", + "gists_url": "https://api.github.com/users/Arian-Ott/gists{/gist_id}", + "starred_url": "https://api.github.com/users/Arian-Ott/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/Arian-Ott/subscriptions", + "organizations_url": "https://api.github.com/users/Arian-Ott/orgs", + "repos_url": "https://api.github.com/users/Arian-Ott/repos", + "events_url": "https://api.github.com/users/Arian-Ott/events{/privacy}", + "received_events_url": "https://api.github.com/users/Arian-Ott/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2026-01-06T15:27:03Z", + "updated_at": "2026-01-06T15:27:03Z", + "body": "Hi, \r\n\r\nthanks for raising this and a happy new year!\r\n\r\nI'm aware of the legal implications of GPL licenses and I'm a strong supporter of licensing software correctly.\r\n\r\n@ndrezn, do you know if there are significant differences between anyascii and unidecode? \r\n\r\nWhile I couldn't see any differences in a random German sentence I came up with, I cannot verify if the same applies to other languages.\r\n\r\n```\r\nPython 3.14.0 (tags/v3.14.0:ebf955d, Oct 7 2025, 10:15:03) [MSC v.1944 64 bit (AMD64)] on win32\r\nType \"help\", \"copyright\", \"credits\" or \"license\" for more information.\r\nCtrl click to launch VS Code Native REPL\r\n>>> from anyascii import anyascii\r\n>>> from unidecode import unidecode \r\n>>> test = \"Baden-Württemberg ist ein Bundesland.\" \r\n>>> anyascii(test)\r\n'Baden-Wurttemberg ist ein Bundesland.'\r\n>>> unidecode(test)\r\n'Baden-Wurttemberg ist ein Bundesland.'\r\n>>>\r\n```\r\n\r\nChanging the default package on the fly could cause unwanted side effects we may not be aware of in other projects using slugify.\r\n\r\n@un33k what do you think?", + "author_association": "COLLABORATOR", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/3715129465/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/3716066380", + "html_url": "https://github.com/un33k/python-slugify/pull/160#issuecomment-3716066380", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/160", + "id": 3716066380, + "node_id": "IC_kwDOAF7qK87dfqxM", + "user": { + "login": "Arian-Ott", + "id": 88984301, + "node_id": "MDQ6VXNlcjg4OTg0MzAx", + "avatar_url": "https://avatars.githubusercontent.com/u/88984301?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/Arian-Ott", + "html_url": "https://github.com/Arian-Ott", + "followers_url": "https://api.github.com/users/Arian-Ott/followers", + "following_url": "https://api.github.com/users/Arian-Ott/following{/other_user}", + "gists_url": "https://api.github.com/users/Arian-Ott/gists{/gist_id}", + "starred_url": "https://api.github.com/users/Arian-Ott/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/Arian-Ott/subscriptions", + "organizations_url": "https://api.github.com/users/Arian-Ott/orgs", + "repos_url": "https://api.github.com/users/Arian-Ott/repos", + "events_url": "https://api.github.com/users/Arian-Ott/events{/privacy}", + "received_events_url": "https://api.github.com/users/Arian-Ott/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2026-01-06T19:45:24Z", + "updated_at": "2026-01-06T19:45:24Z", + "body": "@kurtmckee I really like this contribution! \r\n\r\nSince MR #164, there are some minor branch conflicts. The title suggests that there was tox implemented before. Is there a reason tox was removed in the first place?\r\n\r\n\r\n", + "author_association": "COLLABORATOR", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/3716066380/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/3716290423", + "html_url": "https://github.com/un33k/python-slugify/pull/160#issuecomment-3716290423", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/160", + "id": 3716290423, + "node_id": "IC_kwDOAF7qK87dghd3", + "user": { + "login": "kurtmckee", + "id": 39996, + "node_id": "MDQ6VXNlcjM5OTk2", + "avatar_url": "https://avatars.githubusercontent.com/u/39996?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/kurtmckee", + "html_url": "https://github.com/kurtmckee", + "followers_url": "https://api.github.com/users/kurtmckee/followers", + "following_url": "https://api.github.com/users/kurtmckee/following{/other_user}", + "gists_url": "https://api.github.com/users/kurtmckee/gists{/gist_id}", + "starred_url": "https://api.github.com/users/kurtmckee/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/kurtmckee/subscriptions", + "organizations_url": "https://api.github.com/users/kurtmckee/orgs", + "repos_url": "https://api.github.com/users/kurtmckee/repos", + "events_url": "https://api.github.com/users/kurtmckee/events{/privacy}", + "received_events_url": "https://api.github.com/users/kurtmckee/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2026-01-06T20:49:42Z", + "updated_at": "2026-01-06T20:49:42Z", + "body": "I'll fix the conflicts shortly.\r\n\r\nTox was dropped in v6 with a note that users can simply refer to CI runs. However, CI is disabled by default on forks and CI doesn't run against PRs from first-time contributors, so while its removal was intentional, I don't think that this is a good situation for first-time contributors.", + "author_association": "CONTRIBUTOR", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/3716290423/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/3716322609", + "html_url": "https://github.com/un33k/python-slugify/pull/160#issuecomment-3716322609", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/160", + "id": 3716322609, + "node_id": "IC_kwDOAF7qK87dgpUx", + "user": { + "login": "coveralls", + "id": 2354108, + "node_id": "MDQ6VXNlcjIzNTQxMDg=", + "avatar_url": "https://avatars.githubusercontent.com/u/2354108?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/coveralls", + "html_url": "https://github.com/coveralls", + "followers_url": "https://api.github.com/users/coveralls/followers", + "following_url": "https://api.github.com/users/coveralls/following{/other_user}", + "gists_url": "https://api.github.com/users/coveralls/gists{/gist_id}", + "starred_url": "https://api.github.com/users/coveralls/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/coveralls/subscriptions", + "organizations_url": "https://api.github.com/users/coveralls/orgs", + "repos_url": "https://api.github.com/users/coveralls/repos", + "events_url": "https://api.github.com/users/coveralls/events{/privacy}", + "received_events_url": "https://api.github.com/users/coveralls/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2026-01-06T20:58:08Z", + "updated_at": "2026-01-06T20:58:08Z", + "body": "\n[![Coverage Status](https://coveralls.io/builds/77202148/badge)](https://coveralls.io/builds/77202148)\n\ncoverage: 97.44% (+1.7%) from 95.783%\nwhen pulling **1ef698fa7a265ec8971d0b641fb6e735dcd667dc on kurtmckee:test-everything**\ninto **45f9d33a3a0d7302120d2dde26fa2ac6131edb6b on un33k:master**.\n", + "author_association": "NONE", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/3716322609/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/3716370645", + "html_url": "https://github.com/un33k/python-slugify/pull/160#issuecomment-3716370645", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/160", + "id": 3716370645, + "node_id": "IC_kwDOAF7qK87dg1DV", + "user": { + "login": "Arian-Ott", + "id": 88984301, + "node_id": "MDQ6VXNlcjg4OTg0MzAx", + "avatar_url": "https://avatars.githubusercontent.com/u/88984301?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/Arian-Ott", + "html_url": "https://github.com/Arian-Ott", + "followers_url": "https://api.github.com/users/Arian-Ott/followers", + "following_url": "https://api.github.com/users/Arian-Ott/following{/other_user}", + "gists_url": "https://api.github.com/users/Arian-Ott/gists{/gist_id}", + "starred_url": "https://api.github.com/users/Arian-Ott/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/Arian-Ott/subscriptions", + "organizations_url": "https://api.github.com/users/Arian-Ott/orgs", + "repos_url": "https://api.github.com/users/Arian-Ott/repos", + "events_url": "https://api.github.com/users/Arian-Ott/events{/privacy}", + "received_events_url": "https://api.github.com/users/Arian-Ott/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2026-01-06T21:10:07Z", + "updated_at": "2026-01-06T21:10:07Z", + "body": "> I'll fix the conflicts shortly.\r\n> \r\n> Tox was dropped in v6 with a note that users can simply refer to CI runs. However, CI is disabled by default on forks and CI doesn't run against PRs from first-time contributors, so while its removal was intentional, I don't think that this is a good situation for first-time contributors.\r\n\r\nAwesome, thanks. That makes a lot of sense. ", + "author_association": "COLLABORATOR", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/3716370645/reactions", + "total_count": 1, + "+1": 1, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/3716416694", + "html_url": "https://github.com/un33k/python-slugify/pull/159#issuecomment-3716416694", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/159", + "id": 3716416694, + "node_id": "IC_kwDOAF7qK87dhAS2", + "user": { + "login": "kurtmckee", + "id": 39996, + "node_id": "MDQ6VXNlcjM5OTk2", + "avatar_url": "https://avatars.githubusercontent.com/u/39996?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/kurtmckee", + "html_url": "https://github.com/kurtmckee", + "followers_url": "https://api.github.com/users/kurtmckee/followers", + "following_url": "https://api.github.com/users/kurtmckee/following{/other_user}", + "gists_url": "https://api.github.com/users/kurtmckee/gists{/gist_id}", + "starred_url": "https://api.github.com/users/kurtmckee/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/kurtmckee/subscriptions", + "organizations_url": "https://api.github.com/users/kurtmckee/orgs", + "repos_url": "https://api.github.com/users/kurtmckee/repos", + "events_url": "https://api.github.com/users/kurtmckee/events{/privacy}", + "received_events_url": "https://api.github.com/users/kurtmckee/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2026-01-06T21:24:06Z", + "updated_at": "2026-01-06T21:24:06Z", + "body": "@Arian-Ott I'll update this to resolve the merge conflicts here, too.", + "author_association": "CONTRIBUTOR", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/3716416694/reactions", + "total_count": 1, + "+1": 1, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/3716643071", + "html_url": "https://github.com/un33k/python-slugify/pull/159#issuecomment-3716643071", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/159", + "id": 3716643071, + "node_id": "IC_kwDOAF7qK87dh3j_", + "user": { + "login": "kurtmckee", + "id": 39996, + "node_id": "MDQ6VXNlcjM5OTk2", + "avatar_url": "https://avatars.githubusercontent.com/u/39996?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/kurtmckee", + "html_url": "https://github.com/kurtmckee", + "followers_url": "https://api.github.com/users/kurtmckee/followers", + "following_url": "https://api.github.com/users/kurtmckee/following{/other_user}", + "gists_url": "https://api.github.com/users/kurtmckee/gists{/gist_id}", + "starred_url": "https://api.github.com/users/kurtmckee/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/kurtmckee/subscriptions", + "organizations_url": "https://api.github.com/users/kurtmckee/orgs", + "repos_url": "https://api.github.com/users/kurtmckee/repos", + "events_url": "https://api.github.com/users/kurtmckee/events{/privacy}", + "received_events_url": "https://api.github.com/users/kurtmckee/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2026-01-06T22:50:02Z", + "updated_at": "2026-01-06T22:50:02Z", + "body": "@Arian-Ott Merge conflicts are fixed and the CHANGELOG has been updated with a summary.", + "author_association": "CONTRIBUTOR", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/3716643071/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/3716643106", + "html_url": "https://github.com/un33k/python-slugify/pull/159#issuecomment-3716643106", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/159", + "id": 3716643106, + "node_id": "IC_kwDOAF7qK87dh3ki", + "user": { + "login": "coveralls", + "id": 2354108, + "node_id": "MDQ6VXNlcjIzNTQxMDg=", + "avatar_url": "https://avatars.githubusercontent.com/u/2354108?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/coveralls", + "html_url": "https://github.com/coveralls", + "followers_url": "https://api.github.com/users/coveralls/followers", + "following_url": "https://api.github.com/users/coveralls/following{/other_user}", + "gists_url": "https://api.github.com/users/coveralls/gists{/gist_id}", + "starred_url": "https://api.github.com/users/coveralls/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/coveralls/subscriptions", + "organizations_url": "https://api.github.com/users/coveralls/orgs", + "repos_url": "https://api.github.com/users/coveralls/repos", + "events_url": "https://api.github.com/users/coveralls/events{/privacy}", + "received_events_url": "https://api.github.com/users/coveralls/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2026-01-06T22:50:03Z", + "updated_at": "2026-01-06T22:51:48Z", + "body": "\n[![Coverage Status](https://coveralls.io/builds/77203624/badge)](https://coveralls.io/builds/77203624)\n\ncoverage: 97.44%. remained the same\nwhen pulling **733c5bbc5efd275b01799747d460447e94ef75d6 on kurtmckee:fix-build-process**\ninto **c54cc57cd5338aeca97ae3520940241387295f9c on un33k:master**.\n", + "author_association": "NONE", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/3716643106/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/3716653718", + "html_url": "https://github.com/un33k/python-slugify/pull/159#issuecomment-3716653718", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/159", + "id": 3716653718, + "node_id": "IC_kwDOAF7qK87dh6KW", + "user": { + "login": "Arian-Ott", + "id": 88984301, + "node_id": "MDQ6VXNlcjg4OTg0MzAx", + "avatar_url": "https://avatars.githubusercontent.com/u/88984301?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/Arian-Ott", + "html_url": "https://github.com/Arian-Ott", + "followers_url": "https://api.github.com/users/Arian-Ott/followers", + "following_url": "https://api.github.com/users/Arian-Ott/following{/other_user}", + "gists_url": "https://api.github.com/users/Arian-Ott/gists{/gist_id}", + "starred_url": "https://api.github.com/users/Arian-Ott/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/Arian-Ott/subscriptions", + "organizations_url": "https://api.github.com/users/Arian-Ott/orgs", + "repos_url": "https://api.github.com/users/Arian-Ott/repos", + "events_url": "https://api.github.com/users/Arian-Ott/events{/privacy}", + "received_events_url": "https://api.github.com/users/Arian-Ott/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2026-01-06T22:55:22Z", + "updated_at": "2026-01-06T22:55:22Z", + "body": "Thanks for your contribution, I'll look into it tomorrow and merge it. Have\r\nalready shut down the PC.\r\n\r\nAlso your git history is quite impressive. I wish more people were\r\ncontributing to open-source :D\r\n\r\n---\r\nArian\r\n***@***.***\r\n\r\n\r\nOn Tue, 6 Jan 2026, 23:50 Kurt McKee, ***@***.***> wrote:\r\n\r\n> *kurtmckee* left a comment (un33k/python-slugify#159)\r\n> \r\n>\r\n> @Arian-Ott Merge conflicts are fixed and\r\n> the CHANGELOG has been updated with a summary.\r\n>\r\n> —\r\n> Reply to this email directly, view it on GitHub\r\n> ,\r\n> or unsubscribe\r\n> <[REDACTED unsubscribe URL]>\r\n> .\r\n> You are receiving this because you were mentioned.Message ID:\r\n> ***@***.***>\r\n>\r\n", + "author_association": "COLLABORATOR", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/3716653718/reactions", + "total_count": 3, + "+1": 1, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 1, + "rocket": 1, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/3717957510", + "html_url": "https://github.com/un33k/python-slugify/pull/163#issuecomment-3717957510", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/163", + "id": 3717957510, + "node_id": "IC_kwDOAF7qK87dm4eG", + "user": { + "login": "mrezzamoradi", + "id": 6003890, + "node_id": "MDQ6VXNlcjYwMDM4OTA=", + "avatar_url": "https://avatars.githubusercontent.com/u/6003890?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/mrezzamoradi", + "html_url": "https://github.com/mrezzamoradi", + "followers_url": "https://api.github.com/users/mrezzamoradi/followers", + "following_url": "https://api.github.com/users/mrezzamoradi/following{/other_user}", + "gists_url": "https://api.github.com/users/mrezzamoradi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/mrezzamoradi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/mrezzamoradi/subscriptions", + "organizations_url": "https://api.github.com/users/mrezzamoradi/orgs", + "repos_url": "https://api.github.com/users/mrezzamoradi/repos", + "events_url": "https://api.github.com/users/mrezzamoradi/events{/privacy}", + "received_events_url": "https://api.github.com/users/mrezzamoradi/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2026-01-07T09:14:51Z", + "updated_at": "2026-01-07T12:18:31Z", + "body": "Examples where unidecode and anyascii differ:\r\n```\r\nInput: β\r\nunidecode: b\r\nanyascii: v\r\n\r\nInput: 中文\r\nunidecode: Zhong Wen \r\nanyascii: ZhongWen\r\n\r\nInput: 你好\r\nunidecode: Ni Hao \r\nanyascii: NiHao\r\n\r\nInput: 日本語\r\nunidecode: Ri Ben Yu \r\nanyascii: RiBenYu\r\n\r\nInput: ♥\r\nunidecode: hearts\r\nanyascii: :hearts:\r\n\r\nInput: ★\r\nunidecode: \r\nanyascii: *\r\n\r\nInput: ©\r\nunidecode: (c)\r\nanyascii: (C)\r\n\r\nInput: Æ\r\nunidecode: AE\r\nanyascii: Ae\r\n\r\nInput: مرحبا\r\nunidecode: mrHb\r\nanyascii: mrhb\r\n\r\nInput: 한글\r\nunidecode: hangeul\r\nanyascii: HanGeul\r\n```\r\n\r\nHere's the code:\r\n```python\r\nfrom unidecode import unidecode\r\nfrom anyascii import anyascii\r\n\r\ntest_cases = [\r\n # Common accented characters\r\n 'café', 'naïve', 'résumé',\r\n # German umlauts\r\n 'Müller', 'Größe',\r\n # Scandinavian\r\n 'Øresund', 'Åse',\r\n # Greek\r\n 'α', 'β', 'γ', 'Ω',\r\n # Cyrillic\r\n 'Привет', 'Москва',\r\n # Chinese\r\n '中文', '你好',\r\n # Japanese\r\n '日本語', 'カタカナ',\r\n # Emoji and symbols\r\n '♥', '★', '©', '€',\r\n # Special characters\r\n 'ß', 'Æ', 'œ',\r\n # Vietnamese\r\n 'Tiếng Việt',\r\n # Arabic\r\n 'مرحبا',\r\n # Korean\r\n '한글',\r\n]\r\n\r\nprint(\"Examples where unidecode and anyascii differ:\\n\")\r\n\r\nfor text in test_cases:\r\n uni_result = unidecode(text)\r\n any_result = anyascii(text)\r\n\r\n if uni_result != any_result:\r\n print(f\"Input: {text}\")\r\n print(f\"unidecode: {uni_result}\")\r\n print(f\"anyascii: {any_result}\")\r\n print()\r\n", + "author_association": "COLLABORATOR", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/3717957510/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/3718094260", + "html_url": "https://github.com/un33k/python-slugify/pull/163#issuecomment-3718094260", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/163", + "id": 3718094260, + "node_id": "IC_kwDOAF7qK87dnZ20", + "user": { + "login": "Arian-Ott", + "id": 88984301, + "node_id": "MDQ6VXNlcjg4OTg0MzAx", + "avatar_url": "https://avatars.githubusercontent.com/u/88984301?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/Arian-Ott", + "html_url": "https://github.com/Arian-Ott", + "followers_url": "https://api.github.com/users/Arian-Ott/followers", + "following_url": "https://api.github.com/users/Arian-Ott/following{/other_user}", + "gists_url": "https://api.github.com/users/Arian-Ott/gists{/gist_id}", + "starred_url": "https://api.github.com/users/Arian-Ott/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/Arian-Ott/subscriptions", + "organizations_url": "https://api.github.com/users/Arian-Ott/orgs", + "repos_url": "https://api.github.com/users/Arian-Ott/repos", + "events_url": "https://api.github.com/users/Arian-Ott/events{/privacy}", + "received_events_url": "https://api.github.com/users/Arian-Ott/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2026-01-07T09:54:34Z", + "updated_at": "2026-01-07T09:55:05Z", + "body": "Thanks for sharing . In my opinion, this would be a high-impact breaking change that could lead to significant incompatibilities across the entire ecosystem. If anyascii was 100% compatible, that would be less of a problem to transition to.\r\n\r\npython-slugify is core infrastructure: with over 113k public projects and more than 1,000 public packages depending on it (not counting the vast number of private corporate deployments), changing the backend would be too disruptive. Even subtle differences in how slugs are generated could break URLs, file systems, and database lookups for millions of users.\r\n\r\nAs I also maintain python-slugify downstream in Debian (https://tracker.debian.org/pkg/python-slugify), I’ve checked the local impact. A change would directly affect critical packages like cookiecutter, lektor, and security tools like opensnitch:\r\n\r\n```sh\r\narian@debian:~$ apt-cache rdepends python3-slugify\r\npython3-slugify\r\nReverse Depends:\r\n python3-blinkpy\r\n staticsite\r\n slugify\r\n python3-pyaarlo\r\n python3-logi-circle\r\n python3-agate\r\n python3-opensnitch-ui\r\n lektor\r\n python3-cookiecutter\r\narian@debian:~$\r\n```\r\nFurthermore, anyascii relies on precompiled binaries. This is a blocker for many Linux distributions (like Debian), which require everything to be built from source for security and transparency reasons.\r\n\r\nGiven these points, I believe prioritizing stability and compatibility is the right path forward. \r\n\r\nhttps://qa.debian.org/popcon.php?package=python-slugify\r\n", + "author_association": "COLLABORATOR", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/3718094260/reactions", + "total_count": 1, + "+1": 1, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/3718104815", + "html_url": "https://github.com/un33k/python-slugify/pull/163#issuecomment-3718104815", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/163", + "id": 3718104815, + "node_id": "IC_kwDOAF7qK87dncbv", + "user": { + "login": "Arian-Ott", + "id": 88984301, + "node_id": "MDQ6VXNlcjg4OTg0MzAx", + "avatar_url": "https://avatars.githubusercontent.com/u/88984301?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/Arian-Ott", + "html_url": "https://github.com/Arian-Ott", + "followers_url": "https://api.github.com/users/Arian-Ott/followers", + "following_url": "https://api.github.com/users/Arian-Ott/following{/other_user}", + "gists_url": "https://api.github.com/users/Arian-Ott/gists{/gist_id}", + "starred_url": "https://api.github.com/users/Arian-Ott/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/Arian-Ott/subscriptions", + "organizations_url": "https://api.github.com/users/Arian-Ott/orgs", + "repos_url": "https://api.github.com/users/Arian-Ott/repos", + "events_url": "https://api.github.com/users/Arian-Ott/events{/privacy}", + "received_events_url": "https://api.github.com/users/Arian-Ott/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2026-01-07T09:57:33Z", + "updated_at": "2026-01-07T09:57:33Z", + "body": "What _could_ work is if we find a second backend not relying on compiled files under a different license. That way users can choose which backend they want. ", + "author_association": "COLLABORATOR", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/3718104815/reactions", + "total_count": 1, + "+1": 1, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/3718956449", + "html_url": "https://github.com/un33k/python-slugify/pull/165#issuecomment-3718956449", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/165", + "id": 3718956449, + "node_id": "IC_kwDOAF7qK87dqsWh", + "user": { + "login": "coveralls", + "id": 2354108, + "node_id": "MDQ6VXNlcjIzNTQxMDg=", + "avatar_url": "https://avatars.githubusercontent.com/u/2354108?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/coveralls", + "html_url": "https://github.com/coveralls", + "followers_url": "https://api.github.com/users/coveralls/followers", + "following_url": "https://api.github.com/users/coveralls/following{/other_user}", + "gists_url": "https://api.github.com/users/coveralls/gists{/gist_id}", + "starred_url": "https://api.github.com/users/coveralls/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/coveralls/subscriptions", + "organizations_url": "https://api.github.com/users/coveralls/orgs", + "repos_url": "https://api.github.com/users/coveralls/repos", + "events_url": "https://api.github.com/users/coveralls/events{/privacy}", + "received_events_url": "https://api.github.com/users/coveralls/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2026-01-07T13:41:21Z", + "updated_at": "2026-01-07T13:41:21Z", + "body": "\n[![Coverage Status](https://coveralls.io/builds/77212465/badge)](https://coveralls.io/builds/77212465)\n\ncoverage: 97.44%. remained the same\nwhen pulling **4faa5f996724c93ee1c4c8a06d461b98f9cd5ebf on kurtmckee:fix-readme-badge**\ninto **8b0ac2192d11416c51f3c98a4d0eebf8ac8387f2 on un33k:master**.\n", + "author_association": "NONE", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/3718956449/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/3719694917", + "html_url": "https://github.com/un33k/python-slugify/pull/165#issuecomment-3719694917", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/165", + "id": 3719694917, + "node_id": "IC_kwDOAF7qK87dtgpF", + "user": { + "login": "Arian-Ott", + "id": 88984301, + "node_id": "MDQ6VXNlcjg4OTg0MzAx", + "avatar_url": "https://avatars.githubusercontent.com/u/88984301?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/Arian-Ott", + "html_url": "https://github.com/Arian-Ott", + "followers_url": "https://api.github.com/users/Arian-Ott/followers", + "following_url": "https://api.github.com/users/Arian-Ott/following{/other_user}", + "gists_url": "https://api.github.com/users/Arian-Ott/gists{/gist_id}", + "starred_url": "https://api.github.com/users/Arian-Ott/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/Arian-Ott/subscriptions", + "organizations_url": "https://api.github.com/users/Arian-Ott/orgs", + "repos_url": "https://api.github.com/users/Arian-Ott/repos", + "events_url": "https://api.github.com/users/Arian-Ott/events{/privacy}", + "received_events_url": "https://api.github.com/users/Arian-Ott/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2026-01-07T16:27:59Z", + "updated_at": "2026-01-07T16:27:59Z", + "body": "LGTM.\r\n\r\nThanks for bringing this up. \r\nThe last release was 2024, so it would be time for a new release as that would introduce many bug fixes and changes over the last two years.\r\n\r\n\r\n", + "author_association": "COLLABORATOR", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/3719694917/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/3719704892", + "html_url": "https://github.com/un33k/python-slugify/pull/165#issuecomment-3719704892", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/165", + "id": 3719704892, + "node_id": "IC_kwDOAF7qK87dtjE8", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2026-01-07T16:30:06Z", + "updated_at": "2026-01-07T16:30:06Z", + "body": "All, \r\n\r\nThe contributions have not gone unnoticed.\r\n\r\nI am in the middle of launching ehAye Engine and expect to push to PyPI soon.\r\n\r\nThank you for your contributions.\r\n\r\nThanks,\r\nVal\r\n\r\nhttps://ehaye.io\r\n", + "author_association": "OWNER", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/3719704892/reactions", + "total_count": 3, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 1, + "confused": 0, + "heart": 1, + "rocket": 1, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/3719852989", + "html_url": "https://github.com/un33k/python-slugify/pull/165#issuecomment-3719852989", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/165", + "id": 3719852989, + "node_id": "IC_kwDOAF7qK87duHO9", + "user": { + "login": "kurtmckee", + "id": 39996, + "node_id": "MDQ6VXNlcjM5OTk2", + "avatar_url": "https://avatars.githubusercontent.com/u/39996?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/kurtmckee", + "html_url": "https://github.com/kurtmckee", + "followers_url": "https://api.github.com/users/kurtmckee/followers", + "following_url": "https://api.github.com/users/kurtmckee/following{/other_user}", + "gists_url": "https://api.github.com/users/kurtmckee/gists{/gist_id}", + "starred_url": "https://api.github.com/users/kurtmckee/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/kurtmckee/subscriptions", + "organizations_url": "https://api.github.com/users/kurtmckee/orgs", + "repos_url": "https://api.github.com/users/kurtmckee/repos", + "events_url": "https://api.github.com/users/kurtmckee/events{/privacy}", + "received_events_url": "https://api.github.com/users/kurtmckee/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2026-01-07T17:04:52Z", + "updated_at": "2026-01-07T17:04:52Z", + "body": "Thanks, @un33k!", + "author_association": "CONTRIBUTOR", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/3719852989/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/3723565710", + "html_url": "https://github.com/un33k/python-slugify/pull/163#issuecomment-3723565710", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/163", + "id": 3723565710, + "node_id": "IC_kwDOAF7qK87d8RqO", + "user": { + "login": "mrezzamoradi", + "id": 6003890, + "node_id": "MDQ6VXNlcjYwMDM4OTA=", + "avatar_url": "https://avatars.githubusercontent.com/u/6003890?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/mrezzamoradi", + "html_url": "https://github.com/mrezzamoradi", + "followers_url": "https://api.github.com/users/mrezzamoradi/followers", + "following_url": "https://api.github.com/users/mrezzamoradi/following{/other_user}", + "gists_url": "https://api.github.com/users/mrezzamoradi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/mrezzamoradi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/mrezzamoradi/subscriptions", + "organizations_url": "https://api.github.com/users/mrezzamoradi/orgs", + "repos_url": "https://api.github.com/users/mrezzamoradi/repos", + "events_url": "https://api.github.com/users/mrezzamoradi/events{/privacy}", + "received_events_url": "https://api.github.com/users/mrezzamoradi/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2026-01-08T12:03:58Z", + "updated_at": "2026-01-08T12:03:58Z", + "body": "I agree it's too much of a breaking change even for dumping it as a major version, unless we make it installable with a different backend as @Arian-Ott suggested", + "author_association": "COLLABORATOR", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/3723565710/reactions", + "total_count": 1, + "+1": 1, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/3725999435", + "html_url": "https://github.com/un33k/python-slugify/pull/163#issuecomment-3725999435", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/163", + "id": 3725999435, + "node_id": "IC_kwDOAF7qK87eFj1L", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2026-01-08T21:56:02Z", + "updated_at": "2026-01-08T21:56:02Z", + "body": "Hey folks, I am making some changes to slugify which might render upcoming PRs redundant. \r\n\r\nFor these changes, I am using Claude Code with my own **ehAye Engine**. \r\n\r\nCheck it out ... https://ehaye.io\r\n\r\nCheer,\r\nVal", + "author_association": "OWNER", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/3725999435/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/3729394556", + "html_url": "https://github.com/un33k/python-slugify/pull/163#issuecomment-3729394556", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/163", + "id": 3729394556, + "node_id": "IC_kwDOAF7qK87eSgt8", + "user": { + "login": "ndrezn", + "id": 38958867, + "node_id": "MDQ6VXNlcjM4OTU4ODY3", + "avatar_url": "https://avatars.githubusercontent.com/u/38958867?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/ndrezn", + "html_url": "https://github.com/ndrezn", + "followers_url": "https://api.github.com/users/ndrezn/followers", + "following_url": "https://api.github.com/users/ndrezn/following{/other_user}", + "gists_url": "https://api.github.com/users/ndrezn/gists{/gist_id}", + "starred_url": "https://api.github.com/users/ndrezn/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/ndrezn/subscriptions", + "organizations_url": "https://api.github.com/users/ndrezn/orgs", + "repos_url": "https://api.github.com/users/ndrezn/repos", + "events_url": "https://api.github.com/users/ndrezn/events{/privacy}", + "received_events_url": "https://api.github.com/users/ndrezn/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2026-01-09T15:29:28Z", + "updated_at": "2026-01-09T15:29:52Z", + "body": "Thanks for the feedback @mrezzamoradi @Arian-Ott ! Useful examples to understand the impact; of the existing tests [only two failed](https://github.com/un33k/python-slugify/pull/163/files#diff-3665d65394f4f58a56a256ad6dd8621c68118d90fe56a19387e251c19cec2d2e) with the change -- if nothing else it seems like those examples would be useful to add as test cases to this project.\r\n\r\nThe second backend idea is a good one; the problem is that the existing dependencies _must_ be installed because of how Python setuptools; it's not possible to specify installing `python-slugify` _without_ a GPL encoder being installed even if it is used (i.e. retain backwards compatibility), which makes a GPL package a mandatory dependency 😞 . But maybe I'm missing something or you have a different approach in mind.", + "author_association": "NONE", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/3729394556/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/3729664774", + "html_url": "https://github.com/un33k/python-slugify/pull/163#issuecomment-3729664774", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/163", + "id": 3729664774, + "node_id": "IC_kwDOAF7qK87eTisG", + "user": { + "login": "Arian-Ott", + "id": 88984301, + "node_id": "MDQ6VXNlcjg4OTg0MzAx", + "avatar_url": "https://avatars.githubusercontent.com/u/88984301?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/Arian-Ott", + "html_url": "https://github.com/Arian-Ott", + "followers_url": "https://api.github.com/users/Arian-Ott/followers", + "following_url": "https://api.github.com/users/Arian-Ott/following{/other_user}", + "gists_url": "https://api.github.com/users/Arian-Ott/gists{/gist_id}", + "starred_url": "https://api.github.com/users/Arian-Ott/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/Arian-Ott/subscriptions", + "organizations_url": "https://api.github.com/users/Arian-Ott/orgs", + "repos_url": "https://api.github.com/users/Arian-Ott/repos", + "events_url": "https://api.github.com/users/Arian-Ott/events{/privacy}", + "received_events_url": "https://api.github.com/users/Arian-Ott/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2026-01-09T16:23:29Z", + "updated_at": "2026-01-09T16:23:29Z", + "body": "\r\n\r\n> The second backend idea is a good one; the problem is that the existing dependencies _must_ be installed because of how Python setuptools; it's not possible to specify installing `python-slugify` _without_ a GPL encoder being installed even if it is used (i.e. retain backwards compatibility), which makes a GPL package a mandatory dependency 😞 . But maybe I'm missing something or you have a different approach in mind.\r\n\r\nThat's not how setuptools work. \r\nhttps://github.com/un33k/python-slugify/blob/7b6d5d96c1995e6dccb39a19a13ba78d7d0a3ee4/setup.py#L14-L15\r\n\r\nIf a user installs slugify using `pip install slugify` only the base dependency gets installed. \r\nIf a user requires the unidecode backend, they can explicitly specify that in the pip install using the `pip install python-slugify[unidecode]` extension.\r\n\r\nIn the last scenario both text-unidecode (Artistic or GPL2 at user's choice) AND unidecode (GPL3) gets installed in which case slugify would become GPL3.\r\n\r\nI discussed this with an experienced Debian developer and we both came to said conclusion.\r\n\r\nFurthermore, introducing a third backend would require some development time which is in no relation to the actual impact. Most users install slugify using pip install python-slugify which by default uses text-unidecode.\r\n", + "author_association": "COLLABORATOR", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/3729664774/reactions", + "total_count": 1, + "+1": 1, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/3729685726", + "html_url": "https://github.com/un33k/python-slugify/pull/163#issuecomment-3729685726", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/163", + "id": 3729685726, + "node_id": "IC_kwDOAF7qK87eTnze", + "user": { + "login": "Arian-Ott", + "id": 88984301, + "node_id": "MDQ6VXNlcjg4OTg0MzAx", + "avatar_url": "https://avatars.githubusercontent.com/u/88984301?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/Arian-Ott", + "html_url": "https://github.com/Arian-Ott", + "followers_url": "https://api.github.com/users/Arian-Ott/followers", + "following_url": "https://api.github.com/users/Arian-Ott/following{/other_user}", + "gists_url": "https://api.github.com/users/Arian-Ott/gists{/gist_id}", + "starred_url": "https://api.github.com/users/Arian-Ott/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/Arian-Ott/subscriptions", + "organizations_url": "https://api.github.com/users/Arian-Ott/orgs", + "repos_url": "https://api.github.com/users/Arian-Ott/repos", + "events_url": "https://api.github.com/users/Arian-Ott/events{/privacy}", + "received_events_url": "https://api.github.com/users/Arian-Ott/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2026-01-09T16:27:47Z", + "updated_at": "2026-01-09T16:27:47Z", + "body": "Even if we were to agree on implementing a third backend (which I believe is unnecessary), the overhead is significant: you would have to implement tests, verify licensing, update the README, and document the changes.\r\n\r\nFurthermore, from a distribution perspective, I would potentially have to package this new backend for Debian, which involves extensive code reviews and the NEW queue process. Given that perhaps only a handful of people would actually use a third backend, the effort is simply not proportional to the impact. The current system with extras_require already solves the licensing concern for those who need to avoid GPL. \r\n\r\nHope that helps", + "author_association": "COLLABORATOR", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/3729685726/reactions", + "total_count": 1, + "+1": 1, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/3729703980", + "html_url": "https://github.com/un33k/python-slugify/issues/166#issuecomment-3729703980", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/166", + "id": 3729703980, + "node_id": "IC_kwDOAF7qK87eTsQs", + "user": { + "login": "Arian-Ott", + "id": 88984301, + "node_id": "MDQ6VXNlcjg4OTg0MzAx", + "avatar_url": "https://avatars.githubusercontent.com/u/88984301?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/Arian-Ott", + "html_url": "https://github.com/Arian-Ott", + "followers_url": "https://api.github.com/users/Arian-Ott/followers", + "following_url": "https://api.github.com/users/Arian-Ott/following{/other_user}", + "gists_url": "https://api.github.com/users/Arian-Ott/gists{/gist_id}", + "starred_url": "https://api.github.com/users/Arian-Ott/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/Arian-Ott/subscriptions", + "organizations_url": "https://api.github.com/users/Arian-Ott/orgs", + "repos_url": "https://api.github.com/users/Arian-Ott/repos", + "events_url": "https://api.github.com/users/Arian-Ott/events{/privacy}", + "received_events_url": "https://api.github.com/users/Arian-Ott/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2026-01-09T16:32:12Z", + "updated_at": "2026-01-09T16:32:12Z", + "body": "> Except this package _does_ require install of a GPL dependency: See https://github.com/un33k/python-slugify/blob/master/setup.py#L14. `text-unidecode` is [GPL licensed](https://github.com/kmike/text-unidecode/blob/master/LICENSE) and it's not possible to install this `python-slugify` without also installing `text-unidecode`.\n> \n> Certainly, developers could write a fork of `python-slugify` that removes the required dependency `text-unidecode` but it's misleading to say `python-slugify` \"does not automatically install any GPL dependency\", when it clearly does... If the maintainer of `text-unidecode` doesn't want a copyleft license, then I would expect to see the license changed in that library, unverified guarantees aren't representative of a license agreement.\n\nNo, it doesnt.\n\nCheck PR #163 for an explanation.\n\n", + "author_association": "COLLABORATOR", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/3729703980/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/3739453265", + "html_url": "https://github.com/un33k/python-slugify/issues/166#issuecomment-3739453265", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/166", + "id": 3739453265, + "node_id": "IC_kwDOAF7qK87e44dR", + "user": { + "login": "ndrezn", + "id": 38958867, + "node_id": "MDQ6VXNlcjM4OTU4ODY3", + "avatar_url": "https://avatars.githubusercontent.com/u/38958867?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/ndrezn", + "html_url": "https://github.com/ndrezn", + "followers_url": "https://api.github.com/users/ndrezn/followers", + "following_url": "https://api.github.com/users/ndrezn/following{/other_user}", + "gists_url": "https://api.github.com/users/ndrezn/gists{/gist_id}", + "starred_url": "https://api.github.com/users/ndrezn/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/ndrezn/subscriptions", + "organizations_url": "https://api.github.com/users/ndrezn/orgs", + "repos_url": "https://api.github.com/users/ndrezn/repos", + "events_url": "https://api.github.com/users/ndrezn/events{/privacy}", + "received_events_url": "https://api.github.com/users/ndrezn/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2026-01-12T16:35:49Z", + "updated_at": "2026-01-12T16:39:00Z", + "body": "Ah, I misunderstood the licensing as `text-unidecode` allows the user to _choose_ their license. Original comment removed.\n\nI think it would be useful to clarify in this pinned issue that `text-unidecode` allows users to choose Artistic License as part of their statement -- that confusion (myself included 😅) is likely what is causing this issue to come up so often.", + "author_association": "NONE", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/3739453265/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/3739581543", + "html_url": "https://github.com/un33k/python-slugify/issues/166#issuecomment-3739581543", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/166", + "id": 3739581543, + "node_id": "IC_kwDOAF7qK87e5Xxn", + "user": { + "login": "Arian-Ott", + "id": 88984301, + "node_id": "MDQ6VXNlcjg4OTg0MzAx", + "avatar_url": "https://avatars.githubusercontent.com/u/88984301?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/Arian-Ott", + "html_url": "https://github.com/Arian-Ott", + "followers_url": "https://api.github.com/users/Arian-Ott/followers", + "following_url": "https://api.github.com/users/Arian-Ott/following{/other_user}", + "gists_url": "https://api.github.com/users/Arian-Ott/gists{/gist_id}", + "starred_url": "https://api.github.com/users/Arian-Ott/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/Arian-Ott/subscriptions", + "organizations_url": "https://api.github.com/users/Arian-Ott/orgs", + "repos_url": "https://api.github.com/users/Arian-Ott/repos", + "events_url": "https://api.github.com/users/Arian-Ott/events{/privacy}", + "received_events_url": "https://api.github.com/users/Arian-Ott/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2026-01-12T17:07:31Z", + "updated_at": "2026-01-12T17:07:31Z", + "body": "\n> Ah, I misunderstood the licensing as `text-unidecode` allows the user to _choose_ their license. Original comment removed.\n> \n\nGood. Next time please avoid deleting comments in PR or issues. They help others to understand other contributors the context of the conversation. \n\n> I think it would be useful to clarify in this pinned issue that `text-unidecode` allows users to choose Artistic License as part of their statement -- that confusion (myself included 😅) is likely what is causing this issue to come up so often.\n\nThe readme explains this in the the license section.\n\nhttps://github.com/un33k/python-slugify#license\n", + "author_association": "COLLABORATOR", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/3739581543/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/3740097325", + "html_url": "https://github.com/un33k/python-slugify/issues/166#issuecomment-3740097325", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/166", + "id": 3740097325, + "node_id": "IC_kwDOAF7qK87e7Vst", + "user": { + "login": "ndrezn", + "id": 38958867, + "node_id": "MDQ6VXNlcjM4OTU4ODY3", + "avatar_url": "https://avatars.githubusercontent.com/u/38958867?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/ndrezn", + "html_url": "https://github.com/ndrezn", + "followers_url": "https://api.github.com/users/ndrezn/followers", + "following_url": "https://api.github.com/users/ndrezn/following{/other_user}", + "gists_url": "https://api.github.com/users/ndrezn/gists{/gist_id}", + "starred_url": "https://api.github.com/users/ndrezn/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/ndrezn/subscriptions", + "organizations_url": "https://api.github.com/users/ndrezn/orgs", + "repos_url": "https://api.github.com/users/ndrezn/repos", + "events_url": "https://api.github.com/users/ndrezn/events{/privacy}", + "received_events_url": "https://api.github.com/users/ndrezn/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2026-01-12T19:13:27Z", + "updated_at": "2026-01-12T19:22:13Z", + "body": "FWIW, the licensing documentation is confusing:\n\n> Released under a ([MIT](LICENSE)) license.\n> \n> ### Notes on GPL dependencies\n> Though the dependencies may be GPL licensed, `python-slugify` itself is not considered a derivative work and will remain under the MIT license. \n> If you wish to avoid installation of any GPL licensed packages, please note that the default dependency `text-unidecode` explicitly lets you choose to use the [Artistic License](https://opensource.org/license/artistic-perl-1-0-2/) instead. Use without concern.\n\nIt can be plausible interpreted from this that `python-slugify` has GPL dependencies, with the use of the word, \"may\". I would recommend something like:\n\n> ## License\n> Released under a ([MIT](https://github.com/un33k/python-slugify/blob/master/LICENSE)) license.\n>\n> ### Notes on dependencies\n>\n> `python-slugify` has `text-unidecode` as a dependency, which can be redistributed under the [Artistic License](https://opensource.org/license/artistic-perl-1-0-2/) or the GPL license. As a result, the default installation of `python-slugify` does not necessarily require GPL dependencies and can be further redistributed under a non-copyleft license.\n\nOr similar. The current phrasing is ambiguous, leading to confusion unless a developer does homework. Given the amount of confusion on this issue I think it's worth the effort to clarify that section. Happy to open a PR, cheers!", + "author_association": "NONE", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/3740097325/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/3740132925", + "html_url": "https://github.com/un33k/python-slugify/issues/166#issuecomment-3740132925", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/166", + "id": 3740132925, + "node_id": "IC_kwDOAF7qK87e7eY9", + "user": { + "login": "Arian-Ott", + "id": 88984301, + "node_id": "MDQ6VXNlcjg4OTg0MzAx", + "avatar_url": "https://avatars.githubusercontent.com/u/88984301?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/Arian-Ott", + "html_url": "https://github.com/Arian-Ott", + "followers_url": "https://api.github.com/users/Arian-Ott/followers", + "following_url": "https://api.github.com/users/Arian-Ott/following{/other_user}", + "gists_url": "https://api.github.com/users/Arian-Ott/gists{/gist_id}", + "starred_url": "https://api.github.com/users/Arian-Ott/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/Arian-Ott/subscriptions", + "organizations_url": "https://api.github.com/users/Arian-Ott/orgs", + "repos_url": "https://api.github.com/users/Arian-Ott/repos", + "events_url": "https://api.github.com/users/Arian-Ott/events{/privacy}", + "received_events_url": "https://api.github.com/users/Arian-Ott/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2026-01-12T19:22:37Z", + "updated_at": "2026-01-12T19:22:37Z", + "body": "I don't think there is much of a problem. The readme explains the License well enough imho.\n\n> Though the dependencies may be GPL licensed, python-slugify itself is not considered a derivative work and will remain under the MIT license.\n\nAlso Val explained that licensing issues will be closed automatically and there is no record of any legal troubles with using slugify. Hence, a change is not needed.\n\n> Licensing issues are closed automatically. Breaking change requests are closed automatically. The package is intentionally simple and focused on one job.", + "author_association": "COLLABORATOR", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/3740132925/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/3740135866", + "html_url": "https://github.com/un33k/python-slugify/issues/166#issuecomment-3740135866", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/166", + "id": 3740135866, + "node_id": "IC_kwDOAF7qK87e7fG6", + "user": { + "login": "Arian-Ott", + "id": 88984301, + "node_id": "MDQ6VXNlcjg4OTg0MzAx", + "avatar_url": "https://avatars.githubusercontent.com/u/88984301?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/Arian-Ott", + "html_url": "https://github.com/Arian-Ott", + "followers_url": "https://api.github.com/users/Arian-Ott/followers", + "following_url": "https://api.github.com/users/Arian-Ott/following{/other_user}", + "gists_url": "https://api.github.com/users/Arian-Ott/gists{/gist_id}", + "starred_url": "https://api.github.com/users/Arian-Ott/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/Arian-Ott/subscriptions", + "organizations_url": "https://api.github.com/users/Arian-Ott/orgs", + "repos_url": "https://api.github.com/users/Arian-Ott/repos", + "events_url": "https://api.github.com/users/Arian-Ott/events{/privacy}", + "received_events_url": "https://api.github.com/users/Arian-Ott/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2026-01-12T19:23:26Z", + "updated_at": "2026-01-12T19:23:26Z", + "body": "And those developers who care about the license will do their homework. Those who just `pip install` don't care :) ", + "author_association": "COLLABORATOR", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/3740135866/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/3740139788", + "html_url": "https://github.com/un33k/python-slugify/issues/166#issuecomment-3740139788", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/166", + "id": 3740139788, + "node_id": "IC_kwDOAF7qK87e7gEM", + "user": { + "login": "ndrezn", + "id": 38958867, + "node_id": "MDQ6VXNlcjM4OTU4ODY3", + "avatar_url": "https://avatars.githubusercontent.com/u/38958867?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/ndrezn", + "html_url": "https://github.com/ndrezn", + "followers_url": "https://api.github.com/users/ndrezn/followers", + "following_url": "https://api.github.com/users/ndrezn/following{/other_user}", + "gists_url": "https://api.github.com/users/ndrezn/gists{/gist_id}", + "starred_url": "https://api.github.com/users/ndrezn/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/ndrezn/subscriptions", + "organizations_url": "https://api.github.com/users/ndrezn/orgs", + "repos_url": "https://api.github.com/users/ndrezn/repos", + "events_url": "https://api.github.com/users/ndrezn/events{/privacy}", + "received_events_url": "https://api.github.com/users/ndrezn/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2026-01-12T19:24:27Z", + "updated_at": "2026-01-12T19:26:01Z", + "body": "Totally agree a code change isn't needed.\n\n> there is no record of any legal troubles with using slugify\n\nPlotly customers have dropped software we distribute that depends on `python-slugify` because of license confusion, specifically out of consideration of possible legal issues. I think a docs change would help with this kind of issue (which clearly comes up a lot, given the number of issues folks raise).", + "author_association": "NONE", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/3740139788/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/3740160727", + "html_url": "https://github.com/un33k/python-slugify/issues/166#issuecomment-3740160727", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/166", + "id": 3740160727, + "node_id": "IC_kwDOAF7qK87e7lLX", + "user": { + "login": "Arian-Ott", + "id": 88984301, + "node_id": "MDQ6VXNlcjg4OTg0MzAx", + "avatar_url": "https://avatars.githubusercontent.com/u/88984301?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/Arian-Ott", + "html_url": "https://github.com/Arian-Ott", + "followers_url": "https://api.github.com/users/Arian-Ott/followers", + "following_url": "https://api.github.com/users/Arian-Ott/following{/other_user}", + "gists_url": "https://api.github.com/users/Arian-Ott/gists{/gist_id}", + "starred_url": "https://api.github.com/users/Arian-Ott/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/Arian-Ott/subscriptions", + "organizations_url": "https://api.github.com/users/Arian-Ott/orgs", + "repos_url": "https://api.github.com/users/Arian-Ott/repos", + "events_url": "https://api.github.com/users/Arian-Ott/events{/privacy}", + "received_events_url": "https://api.github.com/users/Arian-Ott/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2026-01-12T19:30:16Z", + "updated_at": "2026-01-12T19:30:16Z", + "body": "I understand that there _can_ be some confusion with non-technical people. But it would be the job of plotly to educate the customers that there is absolutely no legal risk.\n\ntext-unidecode is released under GPL2 **or** Artistic license, this debate shouldn't have happened.\n\nLegally a documentation is from my perspective irrelevant. \n\nIn FLOSS the contents of the LICENSE file is significant. In Debian packaging we trust upstream that they did their homework and selected the license correctly. If developers can't rely on the license specification, development cycles would slow down.\n\n", + "author_association": "COLLABORATOR", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/3740160727/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/3740268438", + "html_url": "https://github.com/un33k/python-slugify/issues/166#issuecomment-3740268438", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/166", + "id": 3740268438, + "node_id": "IC_kwDOAF7qK87e7_eW", + "user": { + "login": "Arian-Ott", + "id": 88984301, + "node_id": "MDQ6VXNlcjg4OTg0MzAx", + "avatar_url": "https://avatars.githubusercontent.com/u/88984301?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/Arian-Ott", + "html_url": "https://github.com/Arian-Ott", + "followers_url": "https://api.github.com/users/Arian-Ott/followers", + "following_url": "https://api.github.com/users/Arian-Ott/following{/other_user}", + "gists_url": "https://api.github.com/users/Arian-Ott/gists{/gist_id}", + "starred_url": "https://api.github.com/users/Arian-Ott/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/Arian-Ott/subscriptions", + "organizations_url": "https://api.github.com/users/Arian-Ott/orgs", + "repos_url": "https://api.github.com/users/Arian-Ott/repos", + "events_url": "https://api.github.com/users/Arian-Ott/events{/privacy}", + "received_events_url": "https://api.github.com/users/Arian-Ott/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2026-01-12T20:00:04Z", + "updated_at": "2026-01-12T20:00:58Z", + "body": "I think everything has been said on this topic. Since the licensing is clearly defined in the LICENSE file and Val has already provided a final statement in the issue #166, I'll lock this Issue now to keep the discussion focused on technical contributions. Thanks for your understanding.", + "author_association": "COLLABORATOR", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/3740268438/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + } + ], + "inline_reviews": [ + { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/comments/24897586", + "pull_request_review_id": null, + "id": 24897586, + "node_id": "MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDI0ODk3NTg2", + "diff_hunk": "@@ -43,16 +50,33 @@ def smart_truncate(string, max_length=0, word_boundaries=False, separator=' '):\n truncated = ''\n for word in string.split(separator):\n if word:\n- next_len = len(truncated) + len(word) + len(separator)\n- if next_len <= max_length:\n+ next_len = len(truncated) + len(word)\n+ if next_len < max_length:\n truncated += '{0}{1}'.format(word, separator)\n+ elif next_len == max_length:\n+ truncated += '{0}'.format(word)\n+ break\n+ else:\n+ if save_order:\n+ break\n if not truncated:\n truncated = string[:max_length]\n return truncated.strip(separator)\n \n \n-def slugify(text, entities=True, decimal=True, hexadecimal=True, max_length=0, word_boundary=False, separator='-'):\n- \"\"\" Make a slug from the given text \"\"\"\n+def slugify(text, entities=True, decimal=True, hexadecimal=True, max_length=0, word_boundary=False, save_order=False,", + "path": "slugify/slugify.py", + "commit_id": "07155c2001580b0ec70b40f24a475baef6238aac", + "original_commit_id": "96fec754cc7448ac0e76697e034c26b263b73ea9", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "body": "We simply cannot break the API. You alway add your kwargs to the end just in case someone is using all the args in order without the keywords.\n", + "created_at": "2015-02-18T12:31:05Z", + "updated_at": "2015-02-21T16:17:53Z", + "html_url": "https://github.com/un33k/python-slugify/pull/8#discussion_r24897586", + "pull_request_url": "https://api.github.com/repos/un33k/python-slugify/pulls/8", + "_links": { + "self": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/comments/24897586" + }, + "html": { + "href": "https://github.com/un33k/python-slugify/pull/8#discussion_r24897586" + }, + "pull_request": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/8" + } + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/comments/24897586/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "start_line": null, + "original_start_line": null, + "start_side": null, + "line": null, + "original_line": null, + "side": "RIGHT", + "author_association": "OWNER", + "original_position": 40, + "position": 1, + "subject_type": "line" + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/comments/24897604", + "pull_request_review_id": null, + "id": 24897604, + "node_id": "MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDI0ODk3NjA0", + "diff_hunk": "@@ -23,8 +23,15 @@\n REMOVE_REXP = re.compile('-{2,}')\n \n \n-def smart_truncate(string, max_length=0, word_boundaries=False, separator=' '):\n- \"\"\" Truncate a string \"\"\"\n+def smart_truncate(string, max_length=0, word_boundaries=False, save_order=False, separator=' '):", + "path": "slugify/slugify.py", + "commit_id": "07155c2001580b0ec70b40f24a475baef6238aac", + "original_commit_id": "96fec754cc7448ac0e76697e034c26b263b73ea9", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "body": "save_order should come last as a good general practice, even though this function is not external.\n", + "created_at": "2015-02-18T12:31:45Z", + "updated_at": "2015-02-21T16:17:53Z", + "html_url": "https://github.com/un33k/python-slugify/pull/8#discussion_r24897604", + "pull_request_url": "https://api.github.com/repos/un33k/python-slugify/pulls/8", + "_links": { + "self": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/comments/24897604" + }, + "html": { + "href": "https://github.com/un33k/python-slugify/pull/8#discussion_r24897604" + }, + "pull_request": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/8" + } + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/comments/24897604/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "start_line": null, + "original_start_line": null, + "start_side": null, + "line": null, + "original_line": null, + "side": "RIGHT", + "author_association": "OWNER", + "original_position": 6, + "position": 1, + "subject_type": "line" + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/comments/24897651", + "pull_request_review_id": null, + "id": 24897651, + "node_id": "MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDI0ODk3NjUx", + "diff_hunk": "@@ -53,14 +53,6 @@ def test_manager(self):\n self.assertEqual(r, \"jaja-lol-a\")\n \n txt = 'jaja---lol-méméméoo--a'\n- r = slugify(txt, max_length=19, word_boundary=True)", + "path": "test.py", + "commit_id": "07155c2001580b0ec70b40f24a475baef6238aac", + "original_commit_id": "96fec754cc7448ac0e76697e034c26b263b73ea9", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "body": "These test should be fixed in there is any errors, not removed.\n", + "created_at": "2015-02-18T12:33:02Z", + "updated_at": "2015-02-21T16:17:53Z", + "html_url": "https://github.com/un33k/python-slugify/pull/8#discussion_r24897651", + "pull_request_url": "https://api.github.com/repos/un33k/python-slugify/pulls/8", + "_links": { + "self": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/comments/24897651" + }, + "html": { + "href": "https://github.com/un33k/python-slugify/pull/8#discussion_r24897651" + }, + "pull_request": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/8" + } + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/comments/24897651/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "start_line": null, + "original_start_line": null, + "start_side": null, + "line": 56, + "original_line": null, + "side": "RIGHT", + "author_association": "OWNER", + "original_position": 4, + "position": 4, + "subject_type": "line" + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/comments/24933333", + "pull_request_review_id": null, + "id": 24933333, + "node_id": "MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDI0OTMzMzMz", + "diff_hunk": "@@ -43,16 +50,33 @@ def smart_truncate(string, max_length=0, word_boundaries=False, separator=' '):\n truncated = ''\n for word in string.split(separator):\n if word:\n- next_len = len(truncated) + len(word) + len(separator)\n- if next_len <= max_length:\n+ next_len = len(truncated) + len(word)\n+ if next_len < max_length:\n truncated += '{0}{1}'.format(word, separator)\n+ elif next_len == max_length:\n+ truncated += '{0}'.format(word)\n+ break\n+ else:\n+ if save_order:\n+ break\n if not truncated:\n truncated = string[:max_length]\n return truncated.strip(separator)\n \n \n-def slugify(text, entities=True, decimal=True, hexadecimal=True, max_length=0, word_boundary=False, separator='-'):\n- \"\"\" Make a slug from the given text \"\"\"\n+def slugify(text, entities=True, decimal=True, hexadecimal=True, max_length=0, word_boundary=False, save_order=False,", + "path": "slugify/slugify.py", + "commit_id": "07155c2001580b0ec70b40f24a475baef6238aac", + "original_commit_id": "96fec754cc7448ac0e76697e034c26b263b73ea9", + "user": { + "login": "dioexul", + "id": 2740961, + "node_id": "MDQ6VXNlcjI3NDA5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/2740961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dioexul", + "html_url": "https://github.com/dioexul", + "followers_url": "https://api.github.com/users/dioexul/followers", + "following_url": "https://api.github.com/users/dioexul/following{/other_user}", + "gists_url": "https://api.github.com/users/dioexul/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dioexul/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dioexul/subscriptions", + "organizations_url": "https://api.github.com/users/dioexul/orgs", + "repos_url": "https://api.github.com/users/dioexul/repos", + "events_url": "https://api.github.com/users/dioexul/events{/privacy}", + "received_events_url": "https://api.github.com/users/dioexul/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "body": "Fix. It is a good remark.\n", + "created_at": "2015-02-18T19:40:05Z", + "updated_at": "2015-02-21T16:17:53Z", + "html_url": "https://github.com/un33k/python-slugify/pull/8#discussion_r24933333", + "pull_request_url": "https://api.github.com/repos/un33k/python-slugify/pulls/8", + "_links": { + "self": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/comments/24933333" + }, + "html": { + "href": "https://github.com/un33k/python-slugify/pull/8#discussion_r24933333" + }, + "pull_request": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/8" + } + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/comments/24933333/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "start_line": null, + "original_start_line": null, + "start_side": null, + "line": null, + "original_line": null, + "side": "RIGHT", + "author_association": "CONTRIBUTOR", + "original_position": 40, + "position": 1, + "subject_type": "line" + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/comments/24933364", + "pull_request_review_id": null, + "id": 24933364, + "node_id": "MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDI0OTMzMzY0", + "diff_hunk": "@@ -23,8 +23,15 @@\n REMOVE_REXP = re.compile('-{2,}')\n \n \n-def smart_truncate(string, max_length=0, word_boundaries=False, separator=' '):\n- \"\"\" Truncate a string \"\"\"\n+def smart_truncate(string, max_length=0, word_boundaries=False, save_order=False, separator=' '):", + "path": "slugify/slugify.py", + "commit_id": "07155c2001580b0ec70b40f24a475baef6238aac", + "original_commit_id": "96fec754cc7448ac0e76697e034c26b263b73ea9", + "user": { + "login": "dioexul", + "id": 2740961, + "node_id": "MDQ6VXNlcjI3NDA5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/2740961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dioexul", + "html_url": "https://github.com/dioexul", + "followers_url": "https://api.github.com/users/dioexul/followers", + "following_url": "https://api.github.com/users/dioexul/following{/other_user}", + "gists_url": "https://api.github.com/users/dioexul/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dioexul/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dioexul/subscriptions", + "organizations_url": "https://api.github.com/users/dioexul/orgs", + "repos_url": "https://api.github.com/users/dioexul/repos", + "events_url": "https://api.github.com/users/dioexul/events{/privacy}", + "received_events_url": "https://api.github.com/users/dioexul/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "body": "Fix.\n", + "created_at": "2015-02-18T19:40:25Z", + "updated_at": "2015-02-21T16:17:53Z", + "html_url": "https://github.com/un33k/python-slugify/pull/8#discussion_r24933364", + "pull_request_url": "https://api.github.com/repos/un33k/python-slugify/pulls/8", + "_links": { + "self": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/comments/24933364" + }, + "html": { + "href": "https://github.com/un33k/python-slugify/pull/8#discussion_r24933364" + }, + "pull_request": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/8" + } + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/comments/24933364/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "start_line": null, + "original_start_line": null, + "start_side": null, + "line": null, + "original_line": null, + "side": "RIGHT", + "author_association": "CONTRIBUTOR", + "original_position": 6, + "position": 1, + "subject_type": "line" + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/comments/24934252", + "pull_request_review_id": null, + "id": 24934252, + "node_id": "MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDI0OTM0MjUy", + "diff_hunk": "@@ -53,14 +53,6 @@ def test_manager(self):\n self.assertEqual(r, \"jaja-lol-a\")\n \n txt = 'jaja---lol-méméméoo--a'\n- r = slugify(txt, max_length=19, word_boundary=True)", + "path": "test.py", + "commit_id": "07155c2001580b0ec70b40f24a475baef6238aac", + "original_commit_id": "96fec754cc7448ac0e76697e034c26b263b73ea9", + "user": { + "login": "dioexul", + "id": 2740961, + "node_id": "MDQ6VXNlcjI3NDA5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/2740961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dioexul", + "html_url": "https://github.com/dioexul", + "followers_url": "https://api.github.com/users/dioexul/followers", + "following_url": "https://api.github.com/users/dioexul/following{/other_user}", + "gists_url": "https://api.github.com/users/dioexul/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dioexul/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dioexul/subscriptions", + "organizations_url": "https://api.github.com/users/dioexul/orgs", + "repos_url": "https://api.github.com/users/dioexul/repos", + "events_url": "https://api.github.com/users/dioexul/events{/privacy}", + "received_events_url": "https://api.github.com/users/dioexul/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "body": "Hmm, I thought about it. The situation was described in merge request comment (len=17 and len=19). Should I add a new parameter to function or it is a bug?\n", + "created_at": "2015-02-18T19:50:08Z", + "updated_at": "2015-02-21T16:17:53Z", + "html_url": "https://github.com/un33k/python-slugify/pull/8#discussion_r24934252", + "pull_request_url": "https://api.github.com/repos/un33k/python-slugify/pulls/8", + "_links": { + "self": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/comments/24934252" + }, + "html": { + "href": "https://github.com/un33k/python-slugify/pull/8#discussion_r24934252" + }, + "pull_request": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/8" + } + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/comments/24934252/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "start_line": null, + "original_start_line": null, + "start_side": null, + "line": 56, + "original_line": null, + "side": "RIGHT", + "author_association": "CONTRIBUTOR", + "original_position": 4, + "position": 4, + "subject_type": "line" + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/comments/25086583", + "pull_request_review_id": null, + "id": 25086583, + "node_id": "MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDI1MDg2NTgz", + "diff_hunk": "@@ -53,14 +53,6 @@ def test_manager(self):\n self.assertEqual(r, \"jaja-lol-a\")\n \n txt = 'jaja---lol-méméméoo--a'\n- r = slugify(txt, max_length=19, word_boundary=True)", + "path": "test.py", + "commit_id": "07155c2001580b0ec70b40f24a475baef6238aac", + "original_commit_id": "96fec754cc7448ac0e76697e034c26b263b73ea9", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "body": "What you can do if you find a bug, put a fix in and submit it separately. New params for new features also should be on their own. This way, minimally, the bug is going to be merged upstream. I think len=17 vs. len=19 could be a bug.\n", + "created_at": "2015-02-20T17:32:54Z", + "updated_at": "2015-02-21T16:17:53Z", + "html_url": "https://github.com/un33k/python-slugify/pull/8#discussion_r25086583", + "pull_request_url": "https://api.github.com/repos/un33k/python-slugify/pulls/8", + "_links": { + "self": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/comments/25086583" + }, + "html": { + "href": "https://github.com/un33k/python-slugify/pull/8#discussion_r25086583" + }, + "pull_request": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/8" + } + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/comments/25086583/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "start_line": null, + "original_start_line": null, + "start_side": null, + "line": 56, + "original_line": null, + "side": "RIGHT", + "author_association": "OWNER", + "original_position": 4, + "position": 4, + "subject_type": "line" + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/comments/25123247", + "pull_request_review_id": null, + "id": 25123247, + "node_id": "MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDI1MTIzMjQ3", + "diff_hunk": "@@ -53,14 +53,6 @@ def test_manager(self):\n self.assertEqual(r, \"jaja-lol-a\")\n \n txt = 'jaja---lol-méméméoo--a'\n- r = slugify(txt, max_length=19, word_boundary=True)", + "path": "test.py", + "commit_id": "07155c2001580b0ec70b40f24a475baef6238aac", + "original_commit_id": "96fec754cc7448ac0e76697e034c26b263b73ea9", + "user": { + "login": "dioexul", + "id": 2740961, + "node_id": "MDQ6VXNlcjI3NDA5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/2740961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dioexul", + "html_url": "https://github.com/dioexul", + "followers_url": "https://api.github.com/users/dioexul/followers", + "following_url": "https://api.github.com/users/dioexul/following{/other_user}", + "gists_url": "https://api.github.com/users/dioexul/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dioexul/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dioexul/subscriptions", + "organizations_url": "https://api.github.com/users/dioexul/orgs", + "repos_url": "https://api.github.com/users/dioexul/repos", + "events_url": "https://api.github.com/users/dioexul/events{/privacy}", + "received_events_url": "https://api.github.com/users/dioexul/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "body": "Thanks. Done. The request consist of bug fix. I add the additional parameter in the next request.\n", + "created_at": "2015-02-21T16:23:34Z", + "updated_at": "2015-02-21T16:23:34Z", + "html_url": "https://github.com/un33k/python-slugify/pull/8#discussion_r25123247", + "pull_request_url": "https://api.github.com/repos/un33k/python-slugify/pulls/8", + "_links": { + "self": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/comments/25123247" + }, + "html": { + "href": "https://github.com/un33k/python-slugify/pull/8#discussion_r25123247" + }, + "pull_request": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/8" + } + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/comments/25123247/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "start_line": null, + "original_start_line": null, + "start_side": null, + "line": 56, + "original_line": null, + "side": "RIGHT", + "author_association": "CONTRIBUTOR", + "original_position": 4, + "position": 4, + "subject_type": "line" + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/comments/176796349", + "pull_request_review_id": 106568551, + "id": 176796349, + "node_id": "MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDE3Njc5NjM0OQ==", + "diff_hunk": "@@ -211,3 +211,19 @@ X.Y.Z Version\n :target: https://pypi.python.org/pypi/python-slugify\n \n .. _MIT: https://github.com/un33k/python-slugify/blob/master/LICENSE\n+\n+\n+GPL\n+---\n+\n+By default python-slugify depends on **unidecode** which is release under GPL. In case this is", + "path": "README.rst", + "commit_id": "f1656755355f16794d44725d988be76d637e58f1", + "original_commit_id": "4cc4aa5dd1e824b1bfb5c0d1b61ffb04ea8c5ae4", + "user": { + "login": "artwr", + "id": 1518713, + "node_id": "MDQ6VXNlcjE1MTg3MTM=", + "avatar_url": "https://avatars.githubusercontent.com/u/1518713?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/artwr", + "html_url": "https://github.com/artwr", + "followers_url": "https://api.github.com/users/artwr/followers", + "following_url": "https://api.github.com/users/artwr/following{/other_user}", + "gists_url": "https://api.github.com/users/artwr/gists{/gist_id}", + "starred_url": "https://api.github.com/users/artwr/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/artwr/subscriptions", + "organizations_url": "https://api.github.com/users/artwr/orgs", + "repos_url": "https://api.github.com/users/artwr/repos", + "events_url": "https://api.github.com/users/artwr/events{/privacy}", + "received_events_url": "https://api.github.com/users/artwr/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "body": "release -> released", + "created_at": "2018-03-23T16:45:31Z", + "updated_at": "2018-03-24T07:57:35Z", + "html_url": "https://github.com/un33k/python-slugify/pull/53#discussion_r176796349", + "pull_request_url": "https://api.github.com/repos/un33k/python-slugify/pulls/53", + "_links": { + "self": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/comments/176796349" + }, + "html": { + "href": "https://github.com/un33k/python-slugify/pull/53#discussion_r176796349" + }, + "pull_request": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/53" + } + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/comments/176796349/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "start_line": null, + "original_start_line": null, + "start_side": null, + "line": null, + "original_line": 219, + "side": "RIGHT", + "author_association": "NONE", + "original_position": 9, + "position": 1, + "subject_type": "line" + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/comments/176808856", + "pull_request_review_id": 106583800, + "id": 176808856, + "node_id": "MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDE3NjgwODg1Ng==", + "diff_hunk": "@@ -211,3 +211,19 @@ X.Y.Z Version\n :target: https://pypi.python.org/pypi/python-slugify\n \n .. _MIT: https://github.com/un33k/python-slugify/blob/master/LICENSE\n+\n+\n+GPL\n+---\n+\n+By default python-slugify depends on **unidecode** which is release under GPL. In case this is", + "path": "README.rst", + "commit_id": "f1656755355f16794d44725d988be76d637e58f1", + "original_commit_id": "4cc4aa5dd1e824b1bfb5c0d1b61ffb04ea8c5ae4", + "user": { + "login": "bolkedebruin", + "id": 4282712, + "node_id": "MDQ6VXNlcjQyODI3MTI=", + "avatar_url": "https://avatars.githubusercontent.com/u/4282712?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/bolkedebruin", + "html_url": "https://github.com/bolkedebruin", + "followers_url": "https://api.github.com/users/bolkedebruin/followers", + "following_url": "https://api.github.com/users/bolkedebruin/following{/other_user}", + "gists_url": "https://api.github.com/users/bolkedebruin/gists{/gist_id}", + "starred_url": "https://api.github.com/users/bolkedebruin/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/bolkedebruin/subscriptions", + "organizations_url": "https://api.github.com/users/bolkedebruin/orgs", + "repos_url": "https://api.github.com/users/bolkedebruin/repos", + "events_url": "https://api.github.com/users/bolkedebruin/events{/privacy}", + "received_events_url": "https://api.github.com/users/bolkedebruin/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "body": "Good catch. Will fix that", + "created_at": "2018-03-23T17:28:17Z", + "updated_at": "2018-03-24T07:57:35Z", + "html_url": "https://github.com/un33k/python-slugify/pull/53#discussion_r176808856", + "pull_request_url": "https://api.github.com/repos/un33k/python-slugify/pulls/53", + "_links": { + "self": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/comments/176808856" + }, + "html": { + "href": "https://github.com/un33k/python-slugify/pull/53#discussion_r176808856" + }, + "pull_request": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/53" + } + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/comments/176808856/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "start_line": null, + "original_start_line": null, + "start_side": null, + "line": null, + "original_line": 219, + "side": "RIGHT", + "in_reply_to_id": 176796349, + "author_association": "CONTRIBUTOR", + "original_position": 9, + "position": 1, + "subject_type": "line" + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/comments/624067286", + "pull_request_review_id": 649461924, + "id": 624067286, + "node_id": "MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDYyNDA2NzI4Ng==", + "diff_hunk": "@@ -0,0 +1,8 @@\n+3.9.2\n+3.8.8\n+3.7.10\n+3.6.13\n+3.5.10\n+2.7.18\n+pypy-5.7.1\n+pypy3.7-7.3.3", + "path": ".python-version", + "commit_id": "ce8361aaa916cd2fef7518c7169d874b44f7fc1e", + "original_commit_id": "762ec335f4c5bd4e97c3a54094c76bd26329781e", + "user": { + "login": "jon-betts", + "id": 7131143, + "node_id": "MDQ6VXNlcjcxMzExNDM=", + "avatar_url": "https://avatars.githubusercontent.com/u/7131143?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/jon-betts", + "html_url": "https://github.com/jon-betts", + "followers_url": "https://api.github.com/users/jon-betts/followers", + "following_url": "https://api.github.com/users/jon-betts/following{/other_user}", + "gists_url": "https://api.github.com/users/jon-betts/gists{/gist_id}", + "starred_url": "https://api.github.com/users/jon-betts/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/jon-betts/subscriptions", + "organizations_url": "https://api.github.com/users/jon-betts/orgs", + "repos_url": "https://api.github.com/users/jon-betts/repos", + "events_url": "https://api.github.com/users/jon-betts/events{/privacy}", + "received_events_url": "https://api.github.com/users/jon-betts/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "body": "This is a https://github.com/pyenv/pyenv config file which helps running isolated Python installs locally", + "created_at": "2021-04-30T18:04:25Z", + "updated_at": "2021-04-30T18:31:56Z", + "html_url": "https://github.com/un33k/python-slugify/pull/98#discussion_r624067286", + "pull_request_url": "https://api.github.com/repos/un33k/python-slugify/pulls/98", + "_links": { + "self": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/comments/624067286" + }, + "html": { + "href": "https://github.com/un33k/python-slugify/pull/98#discussion_r624067286" + }, + "pull_request": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/98" + } + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/comments/624067286/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "start_line": null, + "original_start_line": null, + "start_side": null, + "line": 8, + "original_line": 8, + "side": "RIGHT", + "author_association": "CONTRIBUTOR", + "original_position": 8, + "position": 8, + "subject_type": "line" + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/comments/624083551", + "pull_request_review_id": 649497595, + "id": 624083551, + "node_id": "MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDYyNDA4MzU1MQ==", + "diff_hunk": "@@ -7,14 +7,16 @@ python:\n - \"3.6\"\n - \"3.7\"\n - \"3.8\"\n+ - \"3.9\"\n - \"pypy\"\n - \"pypy3\"\n \n install:\n - pip install pip -U\n - pip install -e .\n - pip install pycodestyle\n- - pip install coveralls\n+ # Avoid cryptography compilation problems with pypy and 2.7\n+ - pip install coveralls 'cryptography<=3.0;python_version==\"2.7\"'", + "path": ".travis.yml", + "commit_id": "ce8361aaa916cd2fef7518c7169d874b44f7fc1e", + "original_commit_id": "a4f8b6be3fef2ec6c57b6e6998c3c0d348b89b3a", + "user": { + "login": "jon-betts", + "id": 7131143, + "node_id": "MDQ6VXNlcjcxMzExNDM=", + "avatar_url": "https://avatars.githubusercontent.com/u/7131143?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/jon-betts", + "html_url": "https://github.com/jon-betts", + "followers_url": "https://api.github.com/users/jon-betts/followers", + "following_url": "https://api.github.com/users/jon-betts/following{/other_user}", + "gists_url": "https://api.github.com/users/jon-betts/gists{/gist_id}", + "starred_url": "https://api.github.com/users/jon-betts/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/jon-betts/subscriptions", + "organizations_url": "https://api.github.com/users/jon-betts/orgs", + "repos_url": "https://api.github.com/users/jon-betts/repos", + "events_url": "https://api.github.com/users/jon-betts/events{/privacy}", + "received_events_url": "https://api.github.com/users/jon-betts/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "body": "This was the highest version I could get this to compile with", + "created_at": "2021-04-30T18:31:25Z", + "updated_at": "2021-04-30T18:31:56Z", + "html_url": "https://github.com/un33k/python-slugify/pull/98#discussion_r624083551", + "pull_request_url": "https://api.github.com/repos/un33k/python-slugify/pulls/98", + "_links": { + "self": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/comments/624083551" + }, + "html": { + "href": "https://github.com/un33k/python-slugify/pull/98#discussion_r624083551" + }, + "pull_request": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/98" + } + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/comments/624083551/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "start_line": null, + "original_start_line": null, + "start_side": null, + "line": 19, + "original_line": 19, + "side": "RIGHT", + "author_association": "CONTRIBUTOR", + "original_position": 14, + "position": 14, + "subject_type": "line" + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/comments/1292809694", + "pull_request_review_id": 1575847629, + "id": 1292809694, + "node_id": "PRRC_kwDOAF7qK85NDrXe", + "diff_hunk": "@@ -10,6 +11,7 @@ def add_uppercase_char(char_list):\n if upper_dict not in char_list and char != upper_dict[0]:\n char_list.insert(0, upper_dict)\n return char_list\n+ raise RuntimeError(\"char_list must not be empty\")", + "path": "slugify/special.py", + "commit_id": "60e94b91542fd8c07942b3b76dd65a3151352b4f", + "original_commit_id": "60e94b91542fd8c07942b3b76dd65a3151352b4f", + "user": { + "login": "jdevera", + "id": 73069, + "node_id": "MDQ6VXNlcjczMDY5", + "avatar_url": "https://avatars.githubusercontent.com/u/73069?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/jdevera", + "html_url": "https://github.com/jdevera", + "followers_url": "https://api.github.com/users/jdevera/followers", + "following_url": "https://api.github.com/users/jdevera/following{/other_user}", + "gists_url": "https://api.github.com/users/jdevera/gists{/gist_id}", + "starred_url": "https://api.github.com/users/jdevera/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/jdevera/subscriptions", + "organizations_url": "https://api.github.com/users/jdevera/orgs", + "repos_url": "https://api.github.com/users/jdevera/repos", + "events_url": "https://api.github.com/users/jdevera/events{/privacy}", + "received_events_url": "https://api.github.com/users/jdevera/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "body": "Is this the only functional change in the PR? And if so, what makes it necessary?", + "created_at": "2023-08-13T15:14:43Z", + "updated_at": "2023-08-13T15:14:44Z", + "html_url": "https://github.com/un33k/python-slugify/pull/134#discussion_r1292809694", + "pull_request_url": "https://api.github.com/repos/un33k/python-slugify/pulls/134", + "_links": { + "self": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/comments/1292809694" + }, + "html": { + "href": "https://github.com/un33k/python-slugify/pull/134#discussion_r1292809694" + }, + "pull_request": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/134" + } + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/comments/1292809694/reactions", + "total_count": 1, + "+1": 1, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "start_line": null, + "original_start_line": null, + "start_side": null, + "line": 14, + "original_line": 14, + "side": "RIGHT", + "author_association": "COLLABORATOR", + "original_position": 14, + "position": 14, + "subject_type": "line" + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/comments/1292810551", + "pull_request_review_id": 1575848590, + "id": 1292810551, + "node_id": "PRRC_kwDOAF7qK85NDrk3", + "diff_hunk": "@@ -39,13 +39,13 @@ def parse_args(argv):\n parser.add_argument(\"--allow-unicode\", action='store_true', default=False,\n help=\"Allow unicode characters\")\n \n- args = parser.parse_args(argv[1:])\n+ args = parser.parse_args(argv[1:] if argv else [])", + "path": "slugify/__main__.py", + "commit_id": "60e94b91542fd8c07942b3b76dd65a3151352b4f", + "original_commit_id": "60e94b91542fd8c07942b3b76dd65a3151352b4f", + "user": { + "login": "jdevera", + "id": 73069, + "node_id": "MDQ6VXNlcjczMDY5", + "avatar_url": "https://avatars.githubusercontent.com/u/73069?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/jdevera", + "html_url": "https://github.com/jdevera", + "followers_url": "https://api.github.com/users/jdevera/followers", + "following_url": "https://api.github.com/users/jdevera/following{/other_user}", + "gists_url": "https://api.github.com/users/jdevera/gists{/gist_id}", + "starred_url": "https://api.github.com/users/jdevera/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/jdevera/subscriptions", + "organizations_url": "https://api.github.com/users/jdevera/orgs", + "repos_url": "https://api.github.com/users/jdevera/repos", + "events_url": "https://api.github.com/users/jdevera/events{/privacy}", + "received_events_url": "https://api.github.com/users/jdevera/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "body": "argv cannot be None so we should not need this logic. If mypy cannot understand what is happening in line 86, we should find instead ways of telling it. This means the type for argv in line 8 should not be an optional list but a `list[str]`", + "created_at": "2023-08-13T15:19:24Z", + "updated_at": "2023-08-13T15:19:24Z", + "html_url": "https://github.com/un33k/python-slugify/pull/134#discussion_r1292810551", + "pull_request_url": "https://api.github.com/repos/un33k/python-slugify/pulls/134", + "_links": { + "self": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/comments/1292810551" + }, + "html": { + "href": "https://github.com/un33k/python-slugify/pull/134#discussion_r1292810551" + }, + "pull_request": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/134" + } + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/comments/1292810551/reactions", + "total_count": 1, + "+1": 1, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "start_line": null, + "original_start_line": null, + "start_side": null, + "line": 42, + "original_line": 42, + "side": "RIGHT", + "author_association": "COLLABORATOR", + "original_position": 20, + "position": 20, + "subject_type": "line" + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/comments/1292859576", + "pull_request_review_id": 1575896857, + "id": 1292859576, + "node_id": "PRRC_kwDOAF7qK85ND3i4", + "diff_hunk": "@@ -10,6 +11,7 @@ def add_uppercase_char(char_list):\n if upper_dict not in char_list and char != upper_dict[0]:\n char_list.insert(0, upper_dict)\n return char_list\n+ raise RuntimeError(\"char_list must not be empty\")", + "path": "slugify/special.py", + "commit_id": "60e94b91542fd8c07942b3b76dd65a3151352b4f", + "original_commit_id": "60e94b91542fd8c07942b3b76dd65a3151352b4f", + "user": { + "login": "jmelahman", + "id": 23436978, + "node_id": "MDQ6VXNlcjIzNDM2OTc4", + "avatar_url": "https://avatars.githubusercontent.com/u/23436978?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/jmelahman", + "html_url": "https://github.com/jmelahman", + "followers_url": "https://api.github.com/users/jmelahman/followers", + "following_url": "https://api.github.com/users/jmelahman/following{/other_user}", + "gists_url": "https://api.github.com/users/jmelahman/gists{/gist_id}", + "starred_url": "https://api.github.com/users/jmelahman/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/jmelahman/subscriptions", + "organizations_url": "https://api.github.com/users/jmelahman/orgs", + "repos_url": "https://api.github.com/users/jmelahman/repos", + "events_url": "https://api.github.com/users/jmelahman/events{/privacy}", + "received_events_url": "https://api.github.com/users/jmelahman/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "body": "I believe so and if I recall, this was to avoid breaking compatibility with the typeshed def, https://github.com/python/typeshed/blob/3a376e7eaa279a8aac836acedad17b8eacb8c8e9/stubs/python-slugify/slugify/special.pyi#L3. I don't have opinions on where to break compatibility, if anywhere. Given they currently disagree, the only to prevent breaking compatibility in both would require type imprecision, which might be preferred if stability is the highest priority.", + "created_at": "2023-08-13T21:39:38Z", + "updated_at": "2023-08-13T21:39:39Z", + "html_url": "https://github.com/un33k/python-slugify/pull/134#discussion_r1292859576", + "pull_request_url": "https://api.github.com/repos/un33k/python-slugify/pulls/134", + "_links": { + "self": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/comments/1292859576" + }, + "html": { + "href": "https://github.com/un33k/python-slugify/pull/134#discussion_r1292859576" + }, + "pull_request": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/134" + } + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/comments/1292859576/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "start_line": null, + "original_start_line": null, + "start_side": null, + "line": 14, + "original_line": 14, + "side": "RIGHT", + "in_reply_to_id": 1292809694, + "author_association": "NONE", + "original_position": 14, + "position": 14, + "subject_type": "line" + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/comments/1292862071", + "pull_request_review_id": 1575899181, + "id": 1292862071, + "node_id": "PRRC_kwDOAF7qK85ND4J3", + "diff_hunk": "@@ -10,6 +11,7 @@ def add_uppercase_char(char_list):\n if upper_dict not in char_list and char != upper_dict[0]:\n char_list.insert(0, upper_dict)\n return char_list\n+ raise RuntimeError(\"char_list must not be empty\")", + "path": "slugify/special.py", + "commit_id": "60e94b91542fd8c07942b3b76dd65a3151352b4f", + "original_commit_id": "60e94b91542fd8c07942b3b76dd65a3151352b4f", + "user": { + "login": "jmelahman", + "id": 23436978, + "node_id": "MDQ6VXNlcjIzNDM2OTc4", + "avatar_url": "https://avatars.githubusercontent.com/u/23436978?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/jmelahman", + "html_url": "https://github.com/jmelahman", + "followers_url": "https://api.github.com/users/jmelahman/followers", + "following_url": "https://api.github.com/users/jmelahman/following{/other_user}", + "gists_url": "https://api.github.com/users/jmelahman/gists{/gist_id}", + "starred_url": "https://api.github.com/users/jmelahman/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/jmelahman/subscriptions", + "organizations_url": "https://api.github.com/users/jmelahman/orgs", + "repos_url": "https://api.github.com/users/jmelahman/repos", + "events_url": "https://api.github.com/users/jmelahman/events{/privacy}", + "received_events_url": "https://api.github.com/users/jmelahman/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "body": "There are definitely some behavioral changes in `test.py`, but this should have been the only behavioral change in the public API other than your other comment which is removed by fixing the annotation to the parse_args def as you suggested.", + "created_at": "2023-08-13T22:03:03Z", + "updated_at": "2023-08-13T22:03:04Z", + "html_url": "https://github.com/un33k/python-slugify/pull/134#discussion_r1292862071", + "pull_request_url": "https://api.github.com/repos/un33k/python-slugify/pulls/134", + "_links": { + "self": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/comments/1292862071" + }, + "html": { + "href": "https://github.com/un33k/python-slugify/pull/134#discussion_r1292862071" + }, + "pull_request": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/134" + } + }, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/pulls/comments/1292862071/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "start_line": null, + "original_start_line": null, + "start_side": null, + "line": 14, + "original_line": 14, + "side": "RIGHT", + "in_reply_to_id": 1292809694, + "author_association": "NONE", + "original_position": 14, + "position": 14, + "subject_type": "line" + } + ], + "reviews": [ + { + "id": 106568551, + "node_id": "MDE3OlB1bGxSZXF1ZXN0UmV2aWV3MTA2NTY4NTUx", + "user": { + "login": "artwr", + "id": 1518713, + "node_id": "MDQ6VXNlcjE1MTg3MTM=", + "avatar_url": "https://avatars.githubusercontent.com/u/1518713?u=48294a4d3505d2fe2b3166ad4eb5c1ec413de1d7&v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/artwr", + "html_url": "https://github.com/artwr", + "followers_url": "https://api.github.com/users/artwr/followers", + "following_url": "https://api.github.com/users/artwr/following{/other_user}", + "gists_url": "https://api.github.com/users/artwr/gists{/gist_id}", + "starred_url": "https://api.github.com/users/artwr/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/artwr/subscriptions", + "organizations_url": "https://api.github.com/users/artwr/orgs", + "repos_url": "https://api.github.com/users/artwr/repos", + "events_url": "https://api.github.com/users/artwr/events{/privacy}", + "received_events_url": "https://api.github.com/users/artwr/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "body": "", + "state": "COMMENTED", + "html_url": "https://github.com/un33k/python-slugify/pull/53#pullrequestreview-106568551", + "pull_request_url": "https://api.github.com/repos/un33k/python-slugify/pulls/53", + "author_association": "NONE", + "_links": { + "html": { + "href": "https://github.com/un33k/python-slugify/pull/53#pullrequestreview-106568551" + }, + "pull_request": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/53" + } + }, + "submitted_at": "2018-03-23T16:45:31Z", + "commit_id": "4cc4aa5dd1e824b1bfb5c0d1b61ffb04ea8c5ae4", + "pr_number": 53 + }, + { + "id": 106583800, + "node_id": "MDE3OlB1bGxSZXF1ZXN0UmV2aWV3MTA2NTgzODAw", + "user": { + "login": "bolkedebruin", + "id": 4282712, + "node_id": "MDQ6VXNlcjQyODI3MTI=", + "avatar_url": "https://avatars.githubusercontent.com/u/4282712?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/bolkedebruin", + "html_url": "https://github.com/bolkedebruin", + "followers_url": "https://api.github.com/users/bolkedebruin/followers", + "following_url": "https://api.github.com/users/bolkedebruin/following{/other_user}", + "gists_url": "https://api.github.com/users/bolkedebruin/gists{/gist_id}", + "starred_url": "https://api.github.com/users/bolkedebruin/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/bolkedebruin/subscriptions", + "organizations_url": "https://api.github.com/users/bolkedebruin/orgs", + "repos_url": "https://api.github.com/users/bolkedebruin/repos", + "events_url": "https://api.github.com/users/bolkedebruin/events{/privacy}", + "received_events_url": "https://api.github.com/users/bolkedebruin/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "body": "", + "state": "COMMENTED", + "html_url": "https://github.com/un33k/python-slugify/pull/53#pullrequestreview-106583800", + "pull_request_url": "https://api.github.com/repos/un33k/python-slugify/pulls/53", + "author_association": "CONTRIBUTOR", + "_links": { + "html": { + "href": "https://github.com/un33k/python-slugify/pull/53#pullrequestreview-106583800" + }, + "pull_request": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/53" + } + }, + "submitted_at": "2018-03-23T17:28:17Z", + "commit_id": "4cc4aa5dd1e824b1bfb5c0d1b61ffb04ea8c5ae4", + "pr_number": 53 + }, + { + "id": 649461924, + "node_id": "MDE3OlB1bGxSZXF1ZXN0UmV2aWV3NjQ5NDYxOTI0", + "user": { + "login": "jon-betts", + "id": 7131143, + "node_id": "MDQ6VXNlcjcxMzExNDM=", + "avatar_url": "https://avatars.githubusercontent.com/u/7131143?u=de58f727bc3d834bfd7922081ac91585da74ab6a&v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/jon-betts", + "html_url": "https://github.com/jon-betts", + "followers_url": "https://api.github.com/users/jon-betts/followers", + "following_url": "https://api.github.com/users/jon-betts/following{/other_user}", + "gists_url": "https://api.github.com/users/jon-betts/gists{/gist_id}", + "starred_url": "https://api.github.com/users/jon-betts/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/jon-betts/subscriptions", + "organizations_url": "https://api.github.com/users/jon-betts/orgs", + "repos_url": "https://api.github.com/users/jon-betts/repos", + "events_url": "https://api.github.com/users/jon-betts/events{/privacy}", + "received_events_url": "https://api.github.com/users/jon-betts/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "body": "", + "state": "COMMENTED", + "html_url": "https://github.com/un33k/python-slugify/pull/98#pullrequestreview-649461924", + "pull_request_url": "https://api.github.com/repos/un33k/python-slugify/pulls/98", + "author_association": "CONTRIBUTOR", + "_links": { + "html": { + "href": "https://github.com/un33k/python-slugify/pull/98#pullrequestreview-649461924" + }, + "pull_request": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/98" + } + }, + "submitted_at": "2021-04-30T18:04:25Z", + "commit_id": "762ec335f4c5bd4e97c3a54094c76bd26329781e", + "pr_number": 98 + }, + { + "id": 649497595, + "node_id": "MDE3OlB1bGxSZXF1ZXN0UmV2aWV3NjQ5NDk3NTk1", + "user": { + "login": "jon-betts", + "id": 7131143, + "node_id": "MDQ6VXNlcjcxMzExNDM=", + "avatar_url": "https://avatars.githubusercontent.com/u/7131143?u=de58f727bc3d834bfd7922081ac91585da74ab6a&v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/jon-betts", + "html_url": "https://github.com/jon-betts", + "followers_url": "https://api.github.com/users/jon-betts/followers", + "following_url": "https://api.github.com/users/jon-betts/following{/other_user}", + "gists_url": "https://api.github.com/users/jon-betts/gists{/gist_id}", + "starred_url": "https://api.github.com/users/jon-betts/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/jon-betts/subscriptions", + "organizations_url": "https://api.github.com/users/jon-betts/orgs", + "repos_url": "https://api.github.com/users/jon-betts/repos", + "events_url": "https://api.github.com/users/jon-betts/events{/privacy}", + "received_events_url": "https://api.github.com/users/jon-betts/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "body": "", + "state": "COMMENTED", + "html_url": "https://github.com/un33k/python-slugify/pull/98#pullrequestreview-649497595", + "pull_request_url": "https://api.github.com/repos/un33k/python-slugify/pulls/98", + "author_association": "CONTRIBUTOR", + "_links": { + "html": { + "href": "https://github.com/un33k/python-slugify/pull/98#pullrequestreview-649497595" + }, + "pull_request": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/98" + } + }, + "submitted_at": "2021-04-30T18:31:26Z", + "commit_id": "a4f8b6be3fef2ec6c57b6e6998c3c0d348b89b3a", + "pr_number": 98 + }, + { + "id": 889939782, + "node_id": "PRR_kwDOAF7qK841C2dG", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?u=50354591859e58f07909fa3142cb07e98954b031&v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "body": "@mrezzamoradi Everything looks great.\r\n\r\nCould you also update the following files to reflect your changes since you have access to the main repo.\r\n\r\n1 - Changelog\r\n2 - Readme (add unicode usecase)\r\n3 - version.py file (6.0.1 -> 6.1.0) [new feature, backward compatible]\r\n\r\nIt should be ready after the above.\r\n\r\nI can also do the above, however, it would be best if it comes in as part of the original PR.\r\n\r\nThank you.", + "state": "CHANGES_REQUESTED", + "html_url": "https://github.com/un33k/python-slugify/pull/111#pullrequestreview-889939782", + "pull_request_url": "https://api.github.com/repos/un33k/python-slugify/pulls/111", + "author_association": "OWNER", + "_links": { + "html": { + "href": "https://github.com/un33k/python-slugify/pull/111#pullrequestreview-889939782" + }, + "pull_request": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/111" + } + }, + "submitted_at": "2022-02-22T15:10:29Z", + "commit_id": "cc700e135b5090163df4cf1f5fe2ed4401fd473c", + "pr_number": 111 + }, + { + "id": 890239570, + "node_id": "PRR_kwDOAF7qK841D_pS", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?u=50354591859e58f07909fa3142cb07e98954b031&v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "body": "", + "state": "APPROVED", + "html_url": "https://github.com/un33k/python-slugify/pull/111#pullrequestreview-890239570", + "pull_request_url": "https://api.github.com/repos/un33k/python-slugify/pulls/111", + "author_association": "OWNER", + "_links": { + "html": { + "href": "https://github.com/un33k/python-slugify/pull/111#pullrequestreview-890239570" + }, + "pull_request": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/111" + } + }, + "submitted_at": "2022-02-22T19:03:22Z", + "commit_id": "35d809acc2510c2490d2667b739bd3e20b3ebafd", + "pr_number": 111 + }, + { + "id": 894432094, + "node_id": "PRR_kwDOAF7qK841T_Ne", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?u=50354591859e58f07909fa3142cb07e98954b031&v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "body": "", + "state": "APPROVED", + "html_url": "https://github.com/un33k/python-slugify/pull/113#pullrequestreview-894432094", + "pull_request_url": "https://api.github.com/repos/un33k/python-slugify/pulls/113", + "author_association": "OWNER", + "_links": { + "html": { + "href": "https://github.com/un33k/python-slugify/pull/113#pullrequestreview-894432094" + }, + "pull_request": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/113" + } + }, + "submitted_at": "2022-02-26T18:55:36Z", + "commit_id": "43e2549afedc586c0730d63eeadc2410d9e945f5", + "pr_number": 113 + }, + { + "id": 1244460672, + "node_id": "PRR_kwDOAF7qK85KLPaA", + "user": { + "login": "un33k", + "id": 407537, + "node_id": "MDQ6VXNlcjQwNzUzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/407537?u=50354591859e58f07909fa3142cb07e98954b031&v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/un33k", + "html_url": "https://github.com/un33k", + "followers_url": "https://api.github.com/users/un33k/followers", + "following_url": "https://api.github.com/users/un33k/following{/other_user}", + "gists_url": "https://api.github.com/users/un33k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/un33k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/un33k/subscriptions", + "organizations_url": "https://api.github.com/users/un33k/orgs", + "repos_url": "https://api.github.com/users/un33k/repos", + "events_url": "https://api.github.com/users/un33k/events{/privacy}", + "received_events_url": "https://api.github.com/users/un33k/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "body": "", + "state": "PENDING", + "html_url": "https://github.com/un33k/python-slugify/pull/125#pullrequestreview-1244460672", + "pull_request_url": "https://api.github.com/repos/un33k/python-slugify/pulls/125", + "author_association": "OWNER", + "_links": { + "html": { + "href": "https://github.com/un33k/python-slugify/pull/125#pullrequestreview-1244460672" + }, + "pull_request": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/125" + } + }, + "commit_id": "45b2915785b4754158d1fbab7d67567de98e473a", + "pr_number": 125 + }, + { + "id": 1575847629, + "node_id": "PRR_kwDOAF7qK85d7YbN", + "user": { + "login": "jdevera", + "id": 73069, + "node_id": "MDQ6VXNlcjczMDY5", + "avatar_url": "https://avatars.githubusercontent.com/u/73069?u=960eaf7d88a8d468b7952d50dafcd01a7051386e&v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/jdevera", + "html_url": "https://github.com/jdevera", + "followers_url": "https://api.github.com/users/jdevera/followers", + "following_url": "https://api.github.com/users/jdevera/following{/other_user}", + "gists_url": "https://api.github.com/users/jdevera/gists{/gist_id}", + "starred_url": "https://api.github.com/users/jdevera/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/jdevera/subscriptions", + "organizations_url": "https://api.github.com/users/jdevera/orgs", + "repos_url": "https://api.github.com/users/jdevera/repos", + "events_url": "https://api.github.com/users/jdevera/events{/privacy}", + "received_events_url": "https://api.github.com/users/jdevera/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "body": "", + "state": "COMMENTED", + "html_url": "https://github.com/un33k/python-slugify/pull/134#pullrequestreview-1575847629", + "pull_request_url": "https://api.github.com/repos/un33k/python-slugify/pulls/134", + "author_association": "COLLABORATOR", + "_links": { + "html": { + "href": "https://github.com/un33k/python-slugify/pull/134#pullrequestreview-1575847629" + }, + "pull_request": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/134" + } + }, + "submitted_at": "2023-08-13T15:14:44Z", + "commit_id": "60e94b91542fd8c07942b3b76dd65a3151352b4f", + "pr_number": 134 + }, + { + "id": 1575848590, + "node_id": "PRR_kwDOAF7qK85d7YqO", + "user": { + "login": "jdevera", + "id": 73069, + "node_id": "MDQ6VXNlcjczMDY5", + "avatar_url": "https://avatars.githubusercontent.com/u/73069?u=960eaf7d88a8d468b7952d50dafcd01a7051386e&v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/jdevera", + "html_url": "https://github.com/jdevera", + "followers_url": "https://api.github.com/users/jdevera/followers", + "following_url": "https://api.github.com/users/jdevera/following{/other_user}", + "gists_url": "https://api.github.com/users/jdevera/gists{/gist_id}", + "starred_url": "https://api.github.com/users/jdevera/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/jdevera/subscriptions", + "organizations_url": "https://api.github.com/users/jdevera/orgs", + "repos_url": "https://api.github.com/users/jdevera/repos", + "events_url": "https://api.github.com/users/jdevera/events{/privacy}", + "received_events_url": "https://api.github.com/users/jdevera/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "body": "", + "state": "COMMENTED", + "html_url": "https://github.com/un33k/python-slugify/pull/134#pullrequestreview-1575848590", + "pull_request_url": "https://api.github.com/repos/un33k/python-slugify/pulls/134", + "author_association": "COLLABORATOR", + "_links": { + "html": { + "href": "https://github.com/un33k/python-slugify/pull/134#pullrequestreview-1575848590" + }, + "pull_request": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/134" + } + }, + "submitted_at": "2023-08-13T15:19:24Z", + "commit_id": "60e94b91542fd8c07942b3b76dd65a3151352b4f", + "pr_number": 134 + }, + { + "id": 1575896857, + "node_id": "PRR_kwDOAF7qK85d7kcZ", + "user": { + "login": "jmelahman", + "id": 23436978, + "node_id": "MDQ6VXNlcjIzNDM2OTc4", + "avatar_url": "https://avatars.githubusercontent.com/u/23436978?u=a5a38a774b5d2847a102710b577007cee84c09c6&v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/jmelahman", + "html_url": "https://github.com/jmelahman", + "followers_url": "https://api.github.com/users/jmelahman/followers", + "following_url": "https://api.github.com/users/jmelahman/following{/other_user}", + "gists_url": "https://api.github.com/users/jmelahman/gists{/gist_id}", + "starred_url": "https://api.github.com/users/jmelahman/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/jmelahman/subscriptions", + "organizations_url": "https://api.github.com/users/jmelahman/orgs", + "repos_url": "https://api.github.com/users/jmelahman/repos", + "events_url": "https://api.github.com/users/jmelahman/events{/privacy}", + "received_events_url": "https://api.github.com/users/jmelahman/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "body": "", + "state": "COMMENTED", + "html_url": "https://github.com/un33k/python-slugify/pull/134#pullrequestreview-1575896857", + "pull_request_url": "https://api.github.com/repos/un33k/python-slugify/pulls/134", + "author_association": "NONE", + "_links": { + "html": { + "href": "https://github.com/un33k/python-slugify/pull/134#pullrequestreview-1575896857" + }, + "pull_request": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/134" + } + }, + "submitted_at": "2023-08-13T21:39:39Z", + "commit_id": "60e94b91542fd8c07942b3b76dd65a3151352b4f", + "pr_number": 134 + }, + { + "id": 1575899181, + "node_id": "PRR_kwDOAF7qK85d7lAt", + "user": { + "login": "jmelahman", + "id": 23436978, + "node_id": "MDQ6VXNlcjIzNDM2OTc4", + "avatar_url": "https://avatars.githubusercontent.com/u/23436978?u=a5a38a774b5d2847a102710b577007cee84c09c6&v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/jmelahman", + "html_url": "https://github.com/jmelahman", + "followers_url": "https://api.github.com/users/jmelahman/followers", + "following_url": "https://api.github.com/users/jmelahman/following{/other_user}", + "gists_url": "https://api.github.com/users/jmelahman/gists{/gist_id}", + "starred_url": "https://api.github.com/users/jmelahman/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/jmelahman/subscriptions", + "organizations_url": "https://api.github.com/users/jmelahman/orgs", + "repos_url": "https://api.github.com/users/jmelahman/repos", + "events_url": "https://api.github.com/users/jmelahman/events{/privacy}", + "received_events_url": "https://api.github.com/users/jmelahman/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "body": "", + "state": "COMMENTED", + "html_url": "https://github.com/un33k/python-slugify/pull/134#pullrequestreview-1575899181", + "pull_request_url": "https://api.github.com/repos/un33k/python-slugify/pulls/134", + "author_association": "NONE", + "_links": { + "html": { + "href": "https://github.com/un33k/python-slugify/pull/134#pullrequestreview-1575899181" + }, + "pull_request": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/134" + } + }, + "submitted_at": "2023-08-13T22:03:04Z", + "commit_id": "60e94b91542fd8c07942b3b76dd65a3151352b4f", + "pr_number": 134 + }, + { + "id": 3631251289, + "node_id": "PRR_kwDOAF7qK87YcH9Z", + "user": { + "login": "Arian-Ott", + "id": 88984301, + "node_id": "MDQ6VXNlcjg4OTg0MzAx", + "avatar_url": "https://avatars.githubusercontent.com/u/88984301?u=ad33cab411cfcc63c05b598f74662396b6c8edaa&v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/Arian-Ott", + "html_url": "https://github.com/Arian-Ott", + "followers_url": "https://api.github.com/users/Arian-Ott/followers", + "following_url": "https://api.github.com/users/Arian-Ott/following{/other_user}", + "gists_url": "https://api.github.com/users/Arian-Ott/gists{/gist_id}", + "starred_url": "https://api.github.com/users/Arian-Ott/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/Arian-Ott/subscriptions", + "organizations_url": "https://api.github.com/users/Arian-Ott/orgs", + "repos_url": "https://api.github.com/users/Arian-Ott/repos", + "events_url": "https://api.github.com/users/Arian-Ott/events{/privacy}", + "received_events_url": "https://api.github.com/users/Arian-Ott/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "body": "LGTM, Thanks for the ping!", + "state": "APPROVED", + "html_url": "https://github.com/un33k/python-slugify/pull/164#pullrequestreview-3631251289", + "pull_request_url": "https://api.github.com/repos/un33k/python-slugify/pulls/164", + "author_association": "COLLABORATOR", + "_links": { + "html": { + "href": "https://github.com/un33k/python-slugify/pull/164#pullrequestreview-3631251289" + }, + "pull_request": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/164" + } + }, + "submitted_at": "2026-01-06T15:03:34Z", + "commit_id": "b7b9fa02bb01962d47054bf6525514db1bf8a165", + "pr_number": 164 + } + ], + "unmerged_files": { + "1": [ + { + "sha": "179a8db4fbdab7dffa4f05361b8aec56cad6c841", + "filename": "slugify/__init__.py", + "status": "modified", + "additions": 7, + "deletions": 7, + "changes": 14, + "blob_url": "https://github.com/un33k/python-slugify/blob/05306ea52e761b5e1dc2f350948617d0c761efa3/slugify%2F__init__.py", + "raw_url": "https://github.com/un33k/python-slugify/raw/05306ea52e761b5e1dc2f350948617d0c761efa3/slugify%2F__init__.py", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/slugify%2F__init__.py?ref=05306ea52e761b5e1dc2f350948617d0c761efa3", + "patch": "@@ -23,22 +23,22 @@\n REPLACE2_REXP = re.compile(r'[^-a-z0-9]+')\n REMOVE_REXP = re.compile('-{2,}')\n \n-def smart_truncate(text, max_length=0, word_boundaries=False):\n+def smart_truncate(text, max_length=0, word_boundaries=False, separator='-'):\n if not max_length or len(text) < max_length:\n return text\n \n if not word_boundaries:\n- return text[:max_length].strip('-')\n+ return text[:max_length].strip(separator)\n \n truncated = ''\n- for i, word in enumerate(text.split('-')):\n+ for i, word in enumerate(text.split(separator)):\n if not word: continue\n if len(truncated) + len(word) + i <= max_length:\n truncated += '{0}{1}'.format('-' if i else '', word)\n- return truncated.strip('-')\n+ return truncated.strip(separator)\n \n \n-def slugify(text, entities=True, decimal=True, hexadecimal=True, max_length=0, word_boundary=False):\n+def slugify(text, separator='-', entities=True, decimal=True, hexadecimal=True, max_length=0, word_boundary=False):\n \"\"\" Make a slug from the given text \"\"\"\n \n # text to unicode\n@@ -74,10 +74,10 @@ def slugify(text, entities=True, decimal=True, hexadecimal=True, max_length=0, w\n \n # replace unwanted characters\n text = REPLACE1_REXP.sub('', text.lower()) # replace ' with nothing instead with -\n- text = REPLACE2_REXP.sub('-', text.lower())\n+ text = REPLACE2_REXP.sub(separator, text.lower())\n \n # remove redundant -\n- text = REMOVE_REXP.sub('-', text).strip('-')\n+ text = REMOVE_REXP.sub('-', text).strip(separator)\n \n # smart truncate if requested\n if max_length > 0:" + } + ], + "3": [ + { + "sha": "6599df9c9620c94e083b249fd1d3f9e9c99c70ef", + "filename": "slugify/__init__.py", + "status": "modified", + "additions": 1, + "deletions": 1, + "changes": 2, + "blob_url": "https://github.com/un33k/python-slugify/blob/a1f15f695d5bec15a46b462fddc56d067f1ab4a3/slugify%2F__init__.py", + "raw_url": "https://github.com/un33k/python-slugify/raw/a1f15f695d5bec15a46b462fddc56d067f1ab4a3/slugify%2F__init__.py", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/slugify%2F__init__.py?ref=a1f15f695d5bec15a46b462fddc56d067f1ab4a3", + "patch": "@@ -34,7 +34,7 @@ def smart_truncate(text, max_length=0, word_boundaries=False):\n truncated = ''\n for i, word in enumerate(text.split('-')):\n if not word: continue\n- if len(truncated) + len(word) + i <= max_length:\n+ if len(truncated) + len(word) + 1 <= max_length:\n truncated += '{0}{1}'.format('-' if i else '', word)\n return truncated.strip('-')\n " + } + ], + "18": [ + { + "sha": "3985435e421ba2edf812b7c6ebfcde8a87d2642f", + "filename": "README.md", + "status": "modified", + "additions": 1, + "deletions": 1, + "changes": 2, + "blob_url": "https://github.com/un33k/python-slugify/blob/c9208bcd3083db001039b44e2c78b695ef3d34c0/README.md", + "raw_url": "https://github.com/un33k/python-slugify/raw/c9208bcd3083db001039b44e2c78b695ef3d34c0/README.md", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/README.md?ref=c9208bcd3083db001039b44e2c78b695ef3d34c0", + "patch": "@@ -57,7 +57,7 @@ How to use\n \n txt = 'C\\'est déjà l\\'été.'\n r = slugify(txt)\n- self.assertEqual(r, \"cest-deja-lete\")\n+ self.assertEqual(r, \"c-est-deja-l-ete\")\n \n txt = 'Nín hǎo. Wǒ shì zhōng guó rén'\n r = slugify(txt)" + }, + { + "sha": "4dc1be5a70276fa827be05060ec8c1fa6978a3fc", + "filename": "slugify/__init__.py", + "status": "modified", + "additions": 1, + "deletions": 1, + "changes": 2, + "blob_url": "https://github.com/un33k/python-slugify/blob/c9208bcd3083db001039b44e2c78b695ef3d34c0/slugify%2F__init__.py", + "raw_url": "https://github.com/un33k/python-slugify/raw/c9208bcd3083db001039b44e2c78b695ef3d34c0/slugify%2F__init__.py", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/slugify%2F__init__.py?ref=c9208bcd3083db001039b44e2c78b695ef3d34c0", + "patch": "@@ -3,4 +3,4 @@\n \n __author__ = 'Val Neekman @ Neekware Inc. [@vneekman]'\n __description__ = 'A Python slugify application that also handles Unicode'\n-__version__ = '1.1.3'\n+__version__ = '1.1.4'" + }, + { + "sha": "4260dbd427220bf5505b5da800a29760f311b93a", + "filename": "slugify/slugify.py", + "status": "modified", + "additions": 1, + "deletions": 1, + "changes": 2, + "blob_url": "https://github.com/un33k/python-slugify/blob/c9208bcd3083db001039b44e2c78b695ef3d34c0/slugify%2Fslugify.py", + "raw_url": "https://github.com/un33k/python-slugify/raw/c9208bcd3083db001039b44e2c78b695ef3d34c0/slugify%2Fslugify.py", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/slugify%2Fslugify.py?ref=c9208bcd3083db001039b44e2c78b695ef3d34c0", + "patch": "@@ -124,7 +124,7 @@ def slugify(text, entities=True, decimal=True, hexadecimal=True, max_length=0, w\n text = text.encode('ascii', 'ignore')\n \n # replace unwanted characters\n- text = REPLACE1_REXP.sub('', text.lower()) # replace ' with nothing instead with -\n+ text = REPLACE1_REXP.sub('-', text.lower())\n text = REPLACE2_REXP.sub('-', text.lower())\n \n # remove redundant -" + }, + { + "sha": "9e3e50827f0429910ae420fc787b7625b18d4e62", + "filename": "test.py", + "status": "modified", + "additions": 1, + "deletions": 1, + "changes": 2, + "blob_url": "https://github.com/un33k/python-slugify/blob/c9208bcd3083db001039b44e2c78b695ef3d34c0/test.py", + "raw_url": "https://github.com/un33k/python-slugify/raw/c9208bcd3083db001039b44e2c78b695ef3d34c0/test.py", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/test.py?ref=c9208bcd3083db001039b44e2c78b695ef3d34c0", + "patch": "@@ -33,7 +33,7 @@ def test_phonetic_conversion_of_eastern_scripts(self):\n def test_accented_text(self):\n txt = 'C\\'est déjà l\\'été.'\n r = slugify(txt)\n- self.assertEqual(r, \"cest-deja-lete\")\n+ self.assertEqual(r, \"c-est-deja-l-ete\")\n \n txt = 'Nín hǎo. Wǒ shì zhōng guó rén'\n r = slugify(txt)" + } + ], + "20": [ + { + "sha": "abbcf36ef0ac1bf28a4225ff40c0752faab6d118", + "filename": "CHANGELOG.md", + "status": "modified", + "additions": 7, + "deletions": 0, + "changes": 7, + "blob_url": "https://github.com/un33k/python-slugify/blob/50fdbf1dbdd00146b11b86e53681d6a55d9969af/CHANGELOG.md", + "raw_url": "https://github.com/un33k/python-slugify/raw/50fdbf1dbdd00146b11b86e53681d6a55d9969af/CHANGELOG.md", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/CHANGELOG.md?ref=50fdbf1dbdd00146b11b86e53681d6a55d9969af", + "patch": "@@ -1,3 +1,10 @@\n+## 1.1.4\n+\n+Enhancement:\n+\n+ - Added a comma_replacement parameter, which default to an empty string\n+\n+\n ## 1.1.3\n \n Bugfix:" + }, + { + "sha": "c83efdb68c8da4569d6d4085d8a6871e5ddd80d9", + "filename": "README.md", + "status": "modified", + "additions": 5, + "deletions": 0, + "changes": 5, + "blob_url": "https://github.com/un33k/python-slugify/blob/50fdbf1dbdd00146b11b86e53681d6a55d9969af/README.md", + "raw_url": "https://github.com/un33k/python-slugify/raw/50fdbf1dbdd00146b11b86e53681d6a55d9969af/README.md", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/README.md?ref=50fdbf1dbdd00146b11b86e53681d6a55d9969af", + "patch": "@@ -59,6 +59,11 @@ How to use\n r = slugify(txt)\n self.assertEqual(r, \"cest-deja-lete\")\n \n+ # If you want commas replaced by a dash\n+ txt = 'C\\'est déjà l\\'été.'\n+ r = slugify(txt, comma_replacement=\"-\")\n+ self.assertEqual(r, \"c-est-deja-l-ete\")\n+\n txt = 'Nín hǎo. Wǒ shì zhōng guó rén'\n r = slugify(txt)\n self.assertEqual(r, \"nin-hao-wo-shi-zhong-guo-ren\")" + }, + { + "sha": "4dc1be5a70276fa827be05060ec8c1fa6978a3fc", + "filename": "slugify/__init__.py", + "status": "modified", + "additions": 1, + "deletions": 1, + "changes": 2, + "blob_url": "https://github.com/un33k/python-slugify/blob/50fdbf1dbdd00146b11b86e53681d6a55d9969af/slugify%2F__init__.py", + "raw_url": "https://github.com/un33k/python-slugify/raw/50fdbf1dbdd00146b11b86e53681d6a55d9969af/slugify%2F__init__.py", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/slugify%2F__init__.py?ref=50fdbf1dbdd00146b11b86e53681d6a55d9969af", + "patch": "@@ -3,4 +3,4 @@\n \n __author__ = 'Val Neekman @ Neekware Inc. [@vneekman]'\n __description__ = 'A Python slugify application that also handles Unicode'\n-__version__ = '1.1.3'\n+__version__ = '1.1.4'" + }, + { + "sha": "d72f31ad87bf25ece4c30eb65e51f66cd4cb450c", + "filename": "slugify/slugify.py", + "status": "modified", + "additions": 4, + "deletions": 3, + "changes": 7, + "blob_url": "https://github.com/un33k/python-slugify/blob/50fdbf1dbdd00146b11b86e53681d6a55d9969af/slugify%2Fslugify.py", + "raw_url": "https://github.com/un33k/python-slugify/raw/50fdbf1dbdd00146b11b86e53681d6a55d9969af/slugify%2Fslugify.py", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/slugify%2Fslugify.py?ref=50fdbf1dbdd00146b11b86e53681d6a55d9969af", + "patch": "@@ -75,7 +75,7 @@ def smart_truncate(string, max_length=0, word_boundaries=False, separator=' ', s\n \n \n def slugify(text, entities=True, decimal=True, hexadecimal=True, max_length=0, word_boundary=False,\n- separator='-', save_order=False, stopwords=()):\n+ separator='-', save_order=False, stopwords=(), comma_replacement=\"\"):\n \"\"\"Make a slug from the given text.\n :param text (str): initial text\n :param entities (bool):\n@@ -85,7 +85,8 @@ def slugify(text, entities=True, decimal=True, hexadecimal=True, max_length=0, w\n :param word_boundary (bool):\n :param save_order (bool): if parameter is True and max_length > 0 return whole words in the initial order\n :param separator (str): separator between words\n- :param stopwords (iterable): words to discount\n+ :param stopwords (iterable): words to discard\n+ :param comma_replacement (str) : replace comma by this character (default empty string)\n :return (str):\n \"\"\"\n \n@@ -124,7 +125,7 @@ def slugify(text, entities=True, decimal=True, hexadecimal=True, max_length=0, w\n text = text.encode('ascii', 'ignore')\n \n # replace unwanted characters\n- text = REPLACE1_REXP.sub('', text.lower()) # replace ' with nothing instead with -\n+ text = REPLACE1_REXP.sub(comma_replacement, text.lower()) # by default replace ' with nothing instead of -\n text = REPLACE2_REXP.sub('-', text.lower())\n \n # remove redundant -" + }, + { + "sha": "4ded80189983e93495de823e87505c6dc71a54f7", + "filename": "test.py", + "status": "modified", + "additions": 9, + "deletions": 0, + "changes": 9, + "blob_url": "https://github.com/un33k/python-slugify/blob/50fdbf1dbdd00146b11b86e53681d6a55d9969af/test.py", + "raw_url": "https://github.com/un33k/python-slugify/raw/50fdbf1dbdd00146b11b86e53681d6a55d9969af/test.py", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/test.py?ref=50fdbf1dbdd00146b11b86e53681d6a55d9969af", + "patch": "@@ -136,6 +136,15 @@ def test_html_entities(self):\n r = slugify(txt)\n self.assertEqual(r, 'foo-bar')\n \n+ def test_comma_separator(self):\n+ txt = 'C\\'est déjà l\\'été.'\n+ r = slugify(txt, comma_replacement=\"-\")\n+ self.assertEqual(r, \"c-est-deja-l-ete\")\n+\n+ txt = 'Компьютер'\n+ r = slugify(txt, comma_replacement=\"-\")\n+ self.assertEqual(r, \"komp-iuter\")\n+\n \n if __name__ == '__main__':\n unittest.main()" + } + ], + "25": [ + { + "sha": "1fce89c15238101b15da6a23d1e5b4766ed0ab13", + "filename": "slugify/slugify.py", + "status": "modified", + "additions": 7, + "deletions": 1, + "changes": 8, + "blob_url": "https://github.com/un33k/python-slugify/blob/6e232a6aee46e1138c695308fe7c7d8b91c03fad/slugify%2Fslugify.py", + "raw_url": "https://github.com/un33k/python-slugify/raw/6e232a6aee46e1138c695308fe7c7d8b91c03fad/slugify%2Fslugify.py", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/slugify%2Fslugify.py?ref=6e232a6aee46e1138c695308fe7c7d8b91c03fad", + "patch": "@@ -1,3 +1,5 @@\n+from __future__ import print_function\n+\n import re\n import unicodedata\n import types\n@@ -154,7 +156,11 @@ def slugify(text, entities=True, decimal=True, hexadecimal=True, max_length=0, w\n \n def main():\n if len(sys.argv) < 2:\n- print(\"Usage %s TEXT TO SLUGIFY\" % sys.argv[0])\n+ print(\"Usage: %s TEXT TO SLUGIFY\" % sys.argv[0])\n else:\n text = ' '.join(sys.argv[1:])\n print(slugify(text))\n+\n+\n+if __name__ == '__main__':\n+ main()" + } + ], + "28": [ + { + "sha": "fcd8166da0ff9d58c65ef231ae7126b6cc5641e8", + "filename": "meta.yaml", + "status": "added", + "additions": 26, + "deletions": 0, + "changes": 26, + "blob_url": "https://github.com/un33k/python-slugify/blob/c5988c1577339575ffaddc3c6b5c4459a35bcb4b/meta.yaml", + "raw_url": "https://github.com/un33k/python-slugify/raw/c5988c1577339575ffaddc3c6b5c4459a35bcb4b/meta.yaml", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/meta.yaml?ref=c5988c1577339575ffaddc3c6b5c4459a35bcb4b", + "patch": "@@ -0,0 +1,26 @@\n+package:\n+ name: python-slugify\n+ version: \"1.2.1\"\n+\n+source:\n+ path: .\n+\n+requirements:\n+ build:\n+ - python\n+ - unidecode >=0.04.16\n+ run:\n+ - python\n+ - unidecode >=0.04.16\n+\n+build:\n+ python_noarch: True\n+ build: 1\n+ noarch: True\n+ preserve_egg_dir: True\n+ script: python setup.py install\n+\n+about:\n+ home: https://github.com/un33k/python-slugify\n+ license: MIT\n+ license_file: LICENSE" + } + ], + "37": [ + { + "sha": "eb6f274d8ee36df46ea8cf12581762480527ec6c", + "filename": ".travis.yml", + "status": "modified", + "additions": 4, + "deletions": 2, + "changes": 6, + "blob_url": "https://github.com/un33k/python-slugify/blob/4abdcdf9e3a2a23f517ad1f8f23ab3f0f35a0aaf/.travis.yml", + "raw_url": "https://github.com/un33k/python-slugify/raw/4abdcdf9e3a2a23f517ad1f8f23ab3f0f35a0aaf/.travis.yml", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/.travis.yml?ref=4abdcdf9e3a2a23f517ad1f8f23ab3f0f35a0aaf", + "patch": "@@ -6,17 +6,19 @@ python:\n - \"2.7\"\n - \"3.3\"\n - \"3.4\"\n+ - \"3.5\"\n - pypy\n \n install:\n- - pip install -q -r requirements.txt --use-mirrors\n+ - pip install pip -U\n+ - pip install -q -r requirements.txt\n - pip install -e .\n - pip install pep8\n - pip install coveralls\n - pip install https://github.com/un33k/pyflakes/tarball/master\n \n before_script:\n- - \"pep8 --exclude=migrations --ignore=E501,E225,E128 .\"\n+ - \"bash pep8.sh\"\n - if [[ $TRAVIS_PYTHON_VERSION == '2.7' ]]; then pyflakes -x W slugify; fi\n \n script: coverage run --source=slugify test.py" + }, + { + "sha": "1d2b7c604cda1d90cdc337d9b05b34ddf549bc88", + "filename": "CHANGELOG.md", + "status": "modified", + "additions": 6, + "deletions": 0, + "changes": 6, + "blob_url": "https://github.com/un33k/python-slugify/blob/4abdcdf9e3a2a23f517ad1f8f23ab3f0f35a0aaf/CHANGELOG.md", + "raw_url": "https://github.com/un33k/python-slugify/raw/4abdcdf9e3a2a23f517ad1f8f23ab3f0f35a0aaf/CHANGELOG.md", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/CHANGELOG.md?ref=4abdcdf9e3a2a23f517ad1f8f23ab3f0f35a0aaf", + "patch": "@@ -1,3 +1,9 @@\n+## 1.2.1\n+ - Including certain files (e.g. license.md) in sdists via MANIFEST.in (@proinsias)\n+ - Relax licensing by moving from BSD to MIT\n+ - Add Python 3.5 support\n+ - Add more tests\n+\n ## 1.2.0\n \n Backward incompatible change: (@fabiocaccamo)" + }, + { + "sha": "82af695f594e8c1e83ee98db0bcae758620f1b63", + "filename": "LICENSE", + "status": "added", + "additions": 21, + "deletions": 0, + "changes": 21, + "blob_url": "https://github.com/un33k/python-slugify/blob/4abdcdf9e3a2a23f517ad1f8f23ab3f0f35a0aaf/LICENSE", + "raw_url": "https://github.com/un33k/python-slugify/raw/4abdcdf9e3a2a23f517ad1f8f23ab3f0f35a0aaf/LICENSE", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/LICENSE?ref=4abdcdf9e3a2a23f517ad1f8f23ab3f0f35a0aaf", + "patch": "@@ -0,0 +1,21 @@\n+The MIT License\n+\n+Copyright (c) Val Neekman @ Neekware Inc. http://neekware.com\n+\n+Permission is hereby granted, free of charge, to any person obtaining a copy\n+of this software and associated documentation files (the \"Software\"), to deal\n+in the Software without restriction, including without limitation the rights\n+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n+copies of the Software, and to permit persons to whom the Software is\n+furnished to do so, subject to the following conditions:\n+\n+The above copyright notice and this permission notice shall be included in\n+all copies or substantial portions of the Software.\n+\n+THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n+THE SOFTWARE." + }, + { + "sha": "f48fab20102323d6a35af9b13be577040bc0adf5", + "filename": "LICENSE.md", + "status": "removed", + "additions": 0, + "deletions": 28, + "changes": 28, + "blob_url": "https://github.com/un33k/python-slugify/blob/66146885159df3cf24e9ebe32aa288b9900ea052/LICENSE.md", + "raw_url": "https://github.com/un33k/python-slugify/raw/66146885159df3cf24e9ebe32aa288b9900ea052/LICENSE.md", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/LICENSE.md?ref=66146885159df3cf24e9ebe32aa288b9900ea052", + "patch": "@@ -1,28 +0,0 @@\n-Copyright © Val Neekman ([Neekware Inc.](http://neekware.com)) [ info@neekware.com, [@vneekman](https://twitter.com/vneekman) ]\n-\n-All rights reserved.\n-\n-Redistribution and use in source and binary forms, with or without modification,\n-are permitted provided that the following conditions are met:\n-\n- 1. Redistributions of source code must retain the above copyright notice,\n- this list of conditions and the following disclaimer.\n-\n- 2. Redistributions in binary form must reproduce the above copyright\n- notice, this list of conditions and the following disclaimer in the\n- documentation and/or other materials provided with the distribution.\n-\n- 3. Neither the name of this project nor the names of its contributors may be\n- used to endorse or promote products derived from this software without\n- specific prior written permission.\n-\n-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\n-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR\n-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\n-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\n-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." + }, + { + "sha": "7b741275f0d1fedbd2b153e542ffe0df369d9a7a", + "filename": "MANIFEST.in", + "status": "modified", + "additions": 1, + "deletions": 1, + "changes": 2, + "blob_url": "https://github.com/un33k/python-slugify/blob/4abdcdf9e3a2a23f517ad1f8f23ab3f0f35a0aaf/MANIFEST.in", + "raw_url": "https://github.com/un33k/python-slugify/raw/4abdcdf9e3a2a23f517ad1f8f23ab3f0f35a0aaf/MANIFEST.in", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/MANIFEST.in?ref=4abdcdf9e3a2a23f517ad1f8f23ab3f0f35a0aaf", + "patch": "@@ -1,3 +1,3 @@\n-include LICENSE.md\n+include LICENSE\n include README.md\n include requirements.txt" + }, + { + "sha": "83c99dec8d1d25a00bf549d449593dca139bdcf4", + "filename": "README.md", + "status": "modified", + "additions": 17, + "deletions": 1, + "changes": 18, + "blob_url": "https://github.com/un33k/python-slugify/blob/4abdcdf9e3a2a23f517ad1f8f23ab3f0f35a0aaf/README.md", + "raw_url": "https://github.com/un33k/python-slugify/raw/4abdcdf9e3a2a23f517ad1f8f23ab3f0f35a0aaf/README.md", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/README.md?ref=4abdcdf9e3a2a23f517ad1f8f23ab3f0f35a0aaf", + "patch": "@@ -144,6 +144,22 @@ How to use\n txt = 'foo & bar'\n r = slugify(txt)\n self.assertEqual(r, 'foo-bar')\n+\n+ txt = \"___This is a test___\"\n+ r = slugify(txt, allowed_characters=r'[^-a-z0-9_]+')\n+ self.assertEqual(r, \"___this-is-a-test___\")\n+\n+ txt = \"___This is a test_for-underscore___\"\n+ r = slugify(txt, allowed_characters=r'[^-a-z0-9_]+')\n+ self.assertEqual(r, \"___this-is-a-test_for-underscore___\")\n+\n+ txt = \"___Test_sa čičkom, ćupom i šišarkom i crtom___\"\n+ r = slugify(txt, allowed_characters=r'[^-a-z0-9_]+')\n+ self.assertEqual(r, \"___test_sa-cickom-cupom-i-sisarkom-i-crtom___\")\n+\n+ txt = \"___This is a $#* test___\"\n+ r = slugify(txt, allowed_characters=r'[^-a-z0-9_#$*]+')\n+ self.assertEqual(r, \"___this-is-a-$#*-test___\")\n ```\n \n Running the tests\n@@ -157,7 +173,7 @@ To run the tests against the current environment:\n License\n ====================\n \n-Released under a ([BSD](LICENSE.md)) license.\n+Released under a ([MIT](LICENSE)) license.\n \n \n Version" + }, + { + "sha": "a8e960ace8556a1eb665c9db76e86567d9db691f", + "filename": "pep8.sh", + "status": "modified", + "additions": 2, + "deletions": 5, + "changes": 7, + "blob_url": "https://github.com/un33k/python-slugify/blob/4abdcdf9e3a2a23f517ad1f8f23ab3f0f35a0aaf/pep8.sh", + "raw_url": "https://github.com/un33k/python-slugify/raw/4abdcdf9e3a2a23f517ad1f8f23ab3f0f35a0aaf/pep8.sh", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/pep8.sh?ref=4abdcdf9e3a2a23f517ad1f8f23ab3f0f35a0aaf", + "patch": "@@ -1,14 +1,11 @@\n #!/bin/bash\n \n-echo -e \"\\nRunning: pep8 ... \\n\"\n-\n # Ignoring autogenerated files\n # -- Migration directories\n # Ignoring error codes\n # -- E128 continuation line under-indented for visual indent\n+# -- E261 at least two spaces before inline comment\n # -- E225 missing whitespace around operator\n # -- E501 line too long\n \n-pep8 --ignore=E128,E225,E501 slugify test.py setup.py\n-\n-echo -e \"Done.\\n\"\n+pep8 --ignore=E128,E261,E225,E501 slugify test.py setup.py" + }, + { + "sha": "068f8afab93c7e50f0d1db1c4a64dbf24a79741e", + "filename": "setup.py", + "status": "modified", + "additions": 3, + "deletions": 2, + "changes": 5, + "blob_url": "https://github.com/un33k/python-slugify/blob/4abdcdf9e3a2a23f517ad1f8f23ab3f0f35a0aaf/setup.py", + "raw_url": "https://github.com/un33k/python-slugify/raw/4abdcdf9e3a2a23f517ad1f8f23ab3f0f35a0aaf/setup.py", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/setup.py?ref=4abdcdf9e3a2a23f517ad1f8f23ab3f0f35a0aaf", + "patch": "@@ -14,12 +14,12 @@\n url = 'https://github.com/un33k/python-slugify'\n author = 'Val Neekman'\n author_email = 'info@neekware.com'\n-license = 'BSD'\n+license = 'MIT'\n install_requires = ['Unidecode>=0.04.16']\n classifiers = [\n 'Development Status :: 5 - Production/Stable',\n 'Intended Audience :: Developers',\n- 'License :: OSI Approved :: BSD License',\n+ 'License :: OSI Approved :: MIT License',\n 'Operating System :: POSIX',\n 'Programming Language :: Python',\n 'Programming Language :: Python :: 2.6',\n@@ -28,6 +28,7 @@\n 'Programming Language :: Python :: 3.2',\n 'Programming Language :: Python :: 3.3',\n 'Programming Language :: Python :: 3.4',\n+ 'Programming Language :: Python :: 3.5',\n ]\n \n " + }, + { + "sha": "daaafd808595d8441ea67d12f3a5efe31a1e129b", + "filename": "slugify/__init__.py", + "status": "modified", + "additions": 1, + "deletions": 1, + "changes": 2, + "blob_url": "https://github.com/un33k/python-slugify/blob/4abdcdf9e3a2a23f517ad1f8f23ab3f0f35a0aaf/slugify%2F__init__.py", + "raw_url": "https://github.com/un33k/python-slugify/raw/4abdcdf9e3a2a23f517ad1f8f23ab3f0f35a0aaf/slugify%2F__init__.py", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/slugify%2F__init__.py?ref=4abdcdf9e3a2a23f517ad1f8f23ab3f0f35a0aaf", + "patch": "@@ -3,4 +3,4 @@\n \n __author__ = 'Val Neekman @ Neekware Inc. [@vneekman]'\n __description__ = 'A Python slugify application that also handles Unicode'\n-__version__ = '1.2.0'\n+__version__ = '1.2.1'" + }, + { + "sha": "5499ca325527198a454f06bdf88c5fed5cace2bd", + "filename": "slugify/slugify.py", + "status": "modified", + "additions": 8, + "deletions": 5, + "changes": 13, + "blob_url": "https://github.com/un33k/python-slugify/blob/4abdcdf9e3a2a23f517ad1f8f23ab3f0f35a0aaf/slugify%2Fslugify.py", + "raw_url": "https://github.com/un33k/python-slugify/raw/4abdcdf9e3a2a23f517ad1f8f23ab3f0f35a0aaf/slugify%2Fslugify.py", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/slugify%2Fslugify.py?ref=4abdcdf9e3a2a23f517ad1f8f23ab3f0f35a0aaf", + "patch": "@@ -16,7 +16,7 @@\n import unidecode\n \n \n-__all__ = ['slugify']\n+__all__ = ['slugify', 'smart_truncate']\n \n \n CHAR_ENTITY_PATTERN = re.compile('&(%s);' % '|'.join(name2codepoint))\n@@ -65,13 +65,13 @@ def smart_truncate(string, max_length=0, word_boundaries=False, separator=' ', s\n else:\n if save_order:\n break\n- if not truncated:\n+ if not truncated: # pragma: no cover\n truncated = string[:max_length]\n return truncated.strip(separator)\n \n \n def slugify(text, entities=True, decimal=True, hexadecimal=True, max_length=0, word_boundary=False,\n- separator='-', save_order=False, stopwords=()):\n+ separator='-', save_order=False, stopwords=(), allowed_characters=None):\n \"\"\"\n Make a slug from the given text.\n :param text (str): initial text\n@@ -131,7 +131,10 @@ def slugify(text, entities=True, decimal=True, hexadecimal=True, max_length=0, w\n \n # replace unwanted characters\n text = NUMBERS_PATTERN.sub('', text)\n- text = ALLOWED_CHARS_PATTERN.sub('-', text)\n+ if allowed_characters:\n+ text = re.sub(allowed_characters, '-', text)\n+ else:\n+ text = ALLOWED_CHARS_PATTERN.sub('-', text)\n \n # remove redundant -\n text = DUPLICATE_DASH_PATTERN.sub('-', text).strip('-')\n@@ -152,7 +155,7 @@ def slugify(text, entities=True, decimal=True, hexadecimal=True, max_length=0, w\n return text\n \n \n-def main():\n+def main(): # pragma: no cover\n if len(sys.argv) < 2:\n print(\"Usage %s TEXT TO SLUGIFY\" % sys.argv[0])\n else:" + }, + { + "sha": "982d8cfca47d8735e534aadfff9c20a5dda90c53", + "filename": "test.py", + "status": "modified", + "additions": 33, + "deletions": 0, + "changes": 33, + "blob_url": "https://github.com/un33k/python-slugify/blob/4abdcdf9e3a2a23f517ad1f8f23ab3f0f35a0aaf/test.py", + "raw_url": "https://github.com/un33k/python-slugify/raw/4abdcdf9e3a2a23f517ad1f8f23ab3f0f35a0aaf/test.py", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/test.py?ref=4abdcdf9e3a2a23f517ad1f8f23ab3f0f35a0aaf", + "patch": "@@ -2,6 +2,7 @@\n \n import unittest\n from slugify import slugify\n+from slugify import smart_truncate\n \n \n class TestSlugification(unittest.TestCase):\n@@ -166,6 +167,38 @@ def test_numbers_and_symbols(self):\n r = slugify(txt)\n self.assertEqual(r, '1000-reasons-you-are-1')\n \n+ def test_underscore(self):\n+ txt = \"___This is a test___\"\n+ r = slugify(txt, allowed_characters=r'[^-a-z0-9_]+')\n+ self.assertEqual(r, \"___this-is-a-test___\")\n+\n+ def test_underscore_middle(self):\n+ txt = \"___This is a test_for-underscore___\"\n+ r = slugify(txt, allowed_characters=r'[^-a-z0-9_]+')\n+ self.assertEqual(r, \"___this-is-a-test_for-underscore___\")\n+\n+ def test_underscore_unicode(self):\n+ txt = \"___Test_sa čičkom, ćupom i šišarkom i crtom___\"\n+ r = slugify(txt, allowed_characters=r'[^-a-z0-9_]+')\n+ self.assertEqual(r, \"___test_sa-cickom-cupom-i-sisarkom-i-crtom___\")\n+\n+ def test_multiple_allowed_characters(self):\n+ txt = \"___This is a $#* test___\"\n+ r = slugify(txt, allowed_characters=r'[^-a-z0-9_#$*]+')\n+ self.assertEqual(r, \"___this-is-a-$#*-test___\")\n+\n+\n+class TestUtils(unittest.TestCase):\n+\n+ def test_smart_truncate_no_max_length(self):\n+ txt = '1,000 reasons you are #1'\n+ r = smart_truncate(txt)\n+ self.assertEqual(r, txt)\n+\n+ def test_smart_truncate_no_seperator(self):\n+ txt = '1,000 reasons you are #1'\n+ r = smart_truncate(txt, max_length=100, separator='_')\n+ self.assertEqual(r, txt)\n \n if __name__ == '__main__':\n unittest.main()" + } + ], + "43": [ + { + "sha": "bede162b6a186afb293555cf8a00e50007d5669b", + "filename": ".travis.yml", + "status": "modified", + "additions": 4, + "deletions": 2, + "changes": 6, + "blob_url": "https://github.com/un33k/python-slugify/blob/095d3ee32d1b60483995742235742f9ad128fa4b/.travis.yml", + "raw_url": "https://github.com/un33k/python-slugify/raw/095d3ee32d1b60483995742235742f9ad128fa4b/.travis.yml", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/.travis.yml?ref=095d3ee32d1b60483995742235742f9ad128fa4b", + "patch": "@@ -13,7 +13,7 @@ python:\n install:\n - pip install pip -U\n - pip install -q -r requirements.txt\n- - pip install -e .\n+ - pip install .\n - pip install pep8\n - pip install coveralls\n - pip install https://github.com/un33k/pyflakes/tarball/master\n@@ -22,7 +22,9 @@ before_script:\n - \"bash pep8.sh\"\n - if [[ $TRAVIS_PYTHON_VERSION == '2.7' ]]; then pyflakes -x W slugify; fi\n \n-script: coverage run --source=slugify test.py\n+script:\n+ - slugify --help\n+ - coverage run --source=slugify test.py\n \n after_success:\n coveralls" + } + ], + "46": [ + { + "sha": "6c577c4d5ac4ea7ef49a16ae36539550a01b87d3", + "filename": "requirements.txt", + "status": "modified", + "additions": 1, + "deletions": 1, + "changes": 2, + "blob_url": "https://github.com/un33k/python-slugify/blob/1a2078646a54d4aee921e114e74621f19afd5130/requirements.txt", + "raw_url": "https://github.com/un33k/python-slugify/raw/1a2078646a54d4aee921e114e74621f19afd5130/requirements.txt", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/requirements.txt?ref=1a2078646a54d4aee921e114e74621f19afd5130", + "patch": "@@ -1 +1 @@\n-Unidecode>=0.04.16\n+text-unidecode=1.0" + }, + { + "sha": "6ff2b6f45f586ce0ba92383d6eae4ce0a2b05d26", + "filename": "setup.py", + "status": "modified", + "additions": 1, + "deletions": 1, + "changes": 2, + "blob_url": "https://github.com/un33k/python-slugify/blob/1a2078646a54d4aee921e114e74621f19afd5130/setup.py", + "raw_url": "https://github.com/un33k/python-slugify/raw/1a2078646a54d4aee921e114e74621f19afd5130/setup.py", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/setup.py?ref=1a2078646a54d4aee921e114e74621f19afd5130", + "patch": "@@ -15,7 +15,7 @@\n author = 'Val Neekman'\n author_email = 'info@neekware.com'\n license = 'MIT'\n-install_requires = ['Unidecode>=0.04.16']\n+install_requires = ['text-unidecode==1.0']\n classifiers = [\n 'Development Status :: 5 - Production/Stable',\n 'Intended Audience :: Developers'," + }, + { + "sha": "d369d0bd939c2f9a175ce792dc770772c6fc8bf1", + "filename": "slugify/slugify.py", + "status": "modified", + "additions": 2, + "deletions": 2, + "changes": 4, + "blob_url": "https://github.com/un33k/python-slugify/blob/1a2078646a54d4aee921e114e74621f19afd5130/slugify%2Fslugify.py", + "raw_url": "https://github.com/un33k/python-slugify/raw/1a2078646a54d4aee921e114e74621f19afd5130/slugify%2Fslugify.py", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/slugify%2Fslugify.py?ref=1a2078646a54d4aee921e114e74621f19afd5130", + "patch": "@@ -13,7 +13,7 @@\n _unicode_type = str\n unichr = chr\n \n-import unidecode\n+import text_unidecode\n \n \n __all__ = ['slugify', 'smart_truncate']\n@@ -96,7 +96,7 @@ def slugify(text, entities=True, decimal=True, hexadecimal=True, max_length=0, w\n text = QUOTE_PATTERN.sub(DEFAULT_SEPARATOR, text)\n \n # decode unicode\n- text = unidecode.unidecode(text)\n+ text = text_unidecode.unidecode(text)\n \n # ensure text is still in unicode\n if not isinstance(text, _unicode_type):" + } + ], + "47": [ + { + "sha": "306f30891d81af9752a7c83681b91f83d74530d4", + "filename": "slugify/slugify.py", + "status": "modified", + "additions": 9, + "deletions": 13, + "changes": 22, + "blob_url": "https://github.com/un33k/python-slugify/blob/0bff01fffc7d9f6c26b67f1c96e449ec0820c4c8/slugify%2Fslugify.py", + "raw_url": "https://github.com/un33k/python-slugify/raw/0bff01fffc7d9f6c26b67f1c96e449ec0820c4c8/slugify%2Fslugify.py", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/slugify%2Fslugify.py?ref=0bff01fffc7d9f6c26b67f1c96e449ec0820c4c8", + "patch": "@@ -23,10 +23,9 @@\n DECIMAL_PATTERN = re.compile('&#(\\d+);')\n HEX_PATTERN = re.compile('&#x([\\da-fA-F]+);')\n QUOTE_PATTERN = re.compile(r'[\\']+')\n-ALLOWED_CHARS_PATTERN = re.compile(r'[^-a-z0-9]+')\n-DUPLICATE_DASH_PATTERN = re.compile('-{2,}')\n NUMBERS_PATTERN = re.compile('(?<=\\d),(?=\\d)')\n DEFAULT_SEPARATOR = '-'\n+ALLOWED_CHARS = 'a-z0-9'\n \n \n def smart_truncate(string, max_length=0, word_boundaries=False, separator=' ', save_order=False):\n@@ -93,7 +92,7 @@ def slugify(text, entities=True, decimal=True, hexadecimal=True, max_length=0, w\n text = _unicode(text, 'utf-8', 'ignore')\n \n # replace quotes with dashes - pre-process\n- text = QUOTE_PATTERN.sub(DEFAULT_SEPARATOR, text)\n+ text = QUOTE_PATTERN.sub(separator, text)\n \n # decode unicode\n text = unidecode.unidecode(text)\n@@ -135,24 +134,21 @@ def slugify(text, entities=True, decimal=True, hexadecimal=True, max_length=0, w\n text = NUMBERS_PATTERN.sub('', text)\n \n # replace all other unwanted characters\n- pattern = regex_pattern or ALLOWED_CHARS_PATTERN\n- text = re.sub(pattern, DEFAULT_SEPARATOR, text)\n+ pattern = regex_pattern or re.compile(r'[^{0}{1}]+'.format(separator, ALLOWED_CHARS))\n+ text = re.sub(pattern, separator, text)\n \n- # remove redundant\n- text = DUPLICATE_DASH_PATTERN.sub(DEFAULT_SEPARATOR, text).strip(DEFAULT_SEPARATOR)\n+ # collapse multiple separators\n+ text = re.sub(re.escape(separator) + r'{2,}', separator, text).strip(separator)\n \n # remove stopwords\n if stopwords:\n stopwords_lower = [s.lower() for s in stopwords]\n- words = [w for w in text.split(DEFAULT_SEPARATOR) if w not in stopwords_lower]\n- text = DEFAULT_SEPARATOR.join(words)\n+ words = [w for w in text.split(separator) if w not in stopwords_lower]\n+ text = separator.join(words)\n \n # smart truncate if requested\n if max_length > 0:\n- text = smart_truncate(text, max_length, word_boundary, DEFAULT_SEPARATOR, save_order)\n-\n- if separator != DEFAULT_SEPARATOR:\n- text = text.replace(DEFAULT_SEPARATOR, separator)\n+ text = smart_truncate(text, max_length, word_boundary, separator, save_order)\n \n return text\n " + }, + { + "sha": "ce2684235457fa575664ef557e2511ab0a1bac11", + "filename": "test.py", + "status": "modified", + "additions": 15, + "deletions": 2, + "changes": 17, + "blob_url": "https://github.com/un33k/python-slugify/blob/0bff01fffc7d9f6c26b67f1c96e449ec0820c4c8/test.py", + "raw_url": "https://github.com/un33k/python-slugify/raw/0bff01fffc7d9f6c26b67f1c96e449ec0820c4c8/test.py", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/test.py?ref=0bff01fffc7d9f6c26b67f1c96e449ec0820c4c8", + "patch": "@@ -89,7 +89,7 @@ def test_custom_separator(self):\n def test_multi_character_separator(self):\n txt = 'jaja---lol-méméméoo--a'\n r = slugify(txt, max_length=20, word_boundary=True, separator=\"ZZZZZZ\")\n- self.assertEqual(r, \"jajaZZZZZZlolZZZZZZmememeooZZZZZZa\")\n+ self.assertEqual(r, \"jajaZZZZZZlolZZZZZZa\")\n \n def test_save_order(self):\n txt = 'one two three four five'\n@@ -182,7 +182,20 @@ def test_regex_pattern_keep_underscore_with_underscore_as_separator(self):\n txt = \"___This is a test___\"\n regex_pattern = r'[^-a-z0-9_]+'\n r = slugify(txt, separator='_', regex_pattern=regex_pattern)\n- self.assertNotEqual(r, \"_this_is_a_test_\")\n+ self.assertEqual(r, \"this_is_a_test\")\n+\n+ def test_separator_remove_hyphens(self):\n+ \"\"\"With an overridden separator, hyphens should be stripped.\"\"\"\n+ txt = \"___This is a hyphen-containing test.\"\n+ r = slugify(txt, separator='_')\n+ self.assertEqual(r, \"this_is_a_hyphen_containing_test\")\n+\n+ def test_regex_pattern_allow_hyphens(self):\n+ \"\"\"With an overridden separator and a regex, it should be possible to preserve hyphens.\"\"\"\n+ txt = \"___This is a hyphen-containing test.\"\n+ regex_pattern = r'[^-a-z0-9_]+'\n+ r = slugify(txt, separator='_', regex_pattern=regex_pattern)\n+ self.assertEqual(r, \"this_is_a_hyphen-containing_test\")\n \n \n class TestUtils(unittest.TestCase):" + } + ], + "48": [ + { + "sha": "790f1611513e1662cbc73b081a3f8e77947863ef", + "filename": "README.rst", + "status": "modified", + "additions": 11, + "deletions": 115, + "changes": 126, + "blob_url": "https://github.com/un33k/python-slugify/blob/77f4de02e93fb9e15b717235a2916e52f96f8f79/README.rst", + "raw_url": "https://github.com/un33k/python-slugify/raw/77f4de02e93fb9e15b717235a2916e52f96f8f79/README.rst", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/README.rst?ref=77f4de02e93fb9e15b717235a2916e52f96f8f79", + "patch": "@@ -45,131 +45,25 @@ From sources:\n How to use\n ----------\n \n+**In code:**\n+\n .. code:: python\n \n from slugify import slugify\n \n- txt = \"This is a test ---\"\n- r = slugify(txt)\n- self.assertEqual(r, \"this-is-a-test\")\n-\n- txt = \"___This is a test ---\"\n- r = slugify(txt)\n- self.assertEqual(r, \"this-is-a-test\")\n-\n- txt = \"___This is a test___\"\n- r = slugify(txt)\n- self.assertEqual(r, \"this-is-a-test\")\n-\n- txt = \"This -- is a ## test ---\"\n- r = slugify(txt)\n- self.assertEqual(r, \"this-is-a-test\")\n-\n- txt = '影師嗎'\n- r = slugify(txt)\n- self.assertEqual(r, \"ying-shi-ma\")\n-\n- txt = 'C\\'est déjà l\\'été.'\n- r = slugify(txt)\n- self.assertEqual(r, \"c-est-deja-l-ete\")\n-\n- txt = 'Nín hǎo. Wǒ shì zhōng guó rén'\n- r = slugify(txt)\n- self.assertEqual(r, \"nin-hao-wo-shi-zhong-guo-ren\")\n-\n- txt = 'jaja---lol-méméméoo--a'\n- r = slugify(txt)\n- self.assertEqual(r, \"jaja-lol-mememeoo-a\")\n-\n- txt = 'Компьютер'\n- r = slugify(txt)\n- self.assertEqual(r, \"kompiuter\")\n-\n- txt = 'jaja---lol-méméméoo--a'\n- r = slugify(txt, max_length=9)\n- self.assertEqual(r, \"jaja-lol\")\n-\n- txt = 'jaja---lol-méméméoo--a'\n- r = slugify(txt, max_length=15)\n- self.assertEqual(r, \"jaja-lol-mememe\")\n-\n- txt = 'jaja---lol-méméméoo--a'\n- r = slugify(txt, max_length=50)\n- self.assertEqual(r, \"jaja-lol-mememeoo-a\")\n-\n- txt = 'jaja---lol-méméméoo--a'\n- r = slugify(txt, max_length=15, word_boundary=True)\n- self.assertEqual(r, \"jaja-lol-a\")\n+ slug = slugify(\"C'est déjà l'été.\")\n+ self.assertEqual(slug, \"c-est-deja-l-ete\")\n \n- txt = 'jaja---lol-méméméoo--a'\n- r = slugify(txt, max_length=17, word_boundary=True)\n- self.assertEqual(r, \"jaja-lol-mememeoo\")\n+See further examples and optional arguments in (`test.py`_).\n \n- txt = 'jaja---lol-méméméoo--a'\n- r = slugify(txt, max_length=18, word_boundary=True)\n- self.assertEqual(r, \"jaja-lol-mememeoo\")\n \n- txt = 'jaja---lol-méméméoo--a'\n- r = slugify(txt, max_length=19, word_boundary=True)\n- self.assertEqual(r, \"jaja-lol-mememeoo-a\")\n+**On the command line:**\n \n- txt = 'jaja---lol-méméméoo--a'\n- r = slugify(txt, max_length=20, word_boundary=True, separator=\".\")\n- self.assertEqual(r, \"jaja.lol.mememeoo.a\")\n-\n- txt = 'jaja---lol-méméméoo--a'\n- r = slugify(txt, max_length=20, word_boundary=True, separator=\"ZZZZZZ\")\n- self.assertEqual(r, \"jajaZZZZZZlolZZZZZZmememeooZZZZZZa\")\n-\n- txt = 'one two three four five'\n- r = slugify(txt, max_length=13, word_boundary=True, save_order=True)\n- self.assertEqual(r, \"one-two-three\")\n-\n- txt = 'one two three four five'\n- r = slugify(txt, max_length=13, word_boundary=True, save_order=False)\n- self.assertEqual(r, \"one-two-three\")\n-\n- txt = 'one two three four five'\n- r = slugify(txt, max_length=12, word_boundary=True, save_order=False)\n- self.assertEqual(r, \"one-two-four\")\n-\n- txt = 'one two three four five'\n- r = slugify(txt, max_length=12, word_boundary=True, save_order=True)\n- self.assertEqual(r, \"one-two\")\n-\n- txt = 'this has a stopword'\n- r = slugify(txt, stopwords=['stopword'])\n- self.assertEqual(r, 'this-has-a')\n-\n- txt = 'the quick brown fox jumps over the lazy dog'\n- r = slugify(txt, stopwords=['the'])\n- self.assertEqual(r, 'quick-brown-fox-jumps-over-lazy-dog')\n-\n- txt = 'Foo A FOO B foo C'\n- r = slugify(txt, stopwords=['foo'])\n- self.assertEqual(r, 'a-b-c')\n-\n- txt = 'Foo A FOO B foo C'\n- r = slugify(txt, stopwords=['FOO'])\n- self.assertEqual(r, 'a-b-c')\n-\n- txt = 'the quick brown fox jumps over the lazy dog in a hurry'\n- r = slugify(txt, stopwords=['the', 'in', 'a', 'hurry'])\n- self.assertEqual(r, 'quick-brown-fox-jumps-over-lazy-dog')\n-\n- txt = 'foo & bar'\n- r = slugify(txt)\n- self.assertEqual(r, 'foo-bar')\n+.. code:: bash\n \n- txt = \"___This is a test___\"\n- regex_pattern = r'[^-a-z0-9_]+'\n- r = slugify(txt, regex_pattern=regex_pattern)\n- self.assertEqual(r, \"___this-is-a-test___\")\n+ $ slugify \"C'est déjà l'été.\"\n+ c-est-deja-l-ete\n \n- txt = \"___This is a test___\"\n- regex_pattern = r'[^-a-z0-9_]+'\n- r = slugify(txt, separator='_', regex_pattern=regex_pattern)\n- self.assertNotEqual(r, \"_this_is_a_test_\")\n \n Running the tests\n -----------------\n@@ -210,4 +104,6 @@ X.Y.Z Version\n .. |download-image| image:: https://img.shields.io/pypi/dm/python-slugify.svg\n :target: https://pypi.python.org/pypi/python-slugify\n \n+.. _test.py: test.py\n+\n .. _MIT: https://github.com/un33k/python-slugify/blob/master/LICENSE" + } + ], + "57": [ + { + "sha": "bbfe30a4b658482ffd227bd8b51de3ddb31b7ee1", + "filename": ".travis.yml", + "status": "modified", + "additions": 54, + "deletions": 11, + "changes": 65, + "blob_url": "https://github.com/un33k/python-slugify/blob/8c6f94d558f798486d510120f3cdea04fa05cce3/.travis.yml", + "raw_url": "https://github.com/un33k/python-slugify/raw/8c6f94d558f798486d510120f3cdea04fa05cce3/.travis.yml", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/.travis.yml?ref=8c6f94d558f798486d510120f3cdea04fa05cce3", + "patch": "@@ -1,18 +1,61 @@\n sudo: false\n+\n language: python\n \n-python:\n- - \"2.6\"\n- - \"2.7\"\n- - \"3.3\"\n- - \"3.4\"\n- - \"3.5\"\n- - \"3.6\"\n- - pypy\n+matrix:\n+ include:\n+ - dist: trusty\n+ python: \"2.6\"\n+ env:\n+ - SLUGIFY_USES_TEXT_UNIDECODE=yes\n+ - dist: trusty\n+ python: \"2.6\"\n+ - dist: trusty\n+ python: \"2.7\"\n+ env:\n+ - SLUGIFY_USES_TEXT_UNIDECODE=yes\n+ - dist: trusty\n+ python: \"2.7\"\n+ - dist: trusty\n+ python: \"3.3\"\n+ env:\n+ - SLUGIFY_USES_TEXT_UNIDECODE=yes\n+ - dist: trusty\n+ python: \"3.3\"\n+ - dist: trusty\n+ python: \"3.4\"\n+ env:\n+ - SLUGIFY_USES_TEXT_UNIDECODE=yes\n+ - dist: trusty\n+ python: \"3.4\"\n+ - dist: xenial\n+ python: \"3.5\"\n+ env:\n+ - SLUGIFY_USES_TEXT_UNIDECODE=yes\n+ - dist: xenial\n+ python: \"3.5\"\n+ - dist: xenial\n+ python: \"3.6\"\n+ env:\n+ - SLUGIFY_USES_TEXT_UNIDECODE=yes\n+ - dist: xenial\n+ python: \"3.6\"\n+ - dist: xenial\n+ python: \"3.7\"\n+ sudo: true # Ugly HACK, remove line when Travis supports Python 3.7 officially\n+ env:\n+ - SLUGIFY_USES_TEXT_UNIDECODE=yes\n+ - dist: xenial\n+ python: \"3.7\"\n+ sudo: true # Ugly HACK, remove line when Travis supports Python 3.7 officially\n+ - dist: trusty\n+ python: \"pypy\"\n+ env:\n+ - SLUGIFY_USES_TEXT_UNIDECODE=yes\n+ - dist: trusty\n+ python: \"pypy\"\n \n-env:\n- - SLUGIFY_USES_TEXT_UNIDECODE=yes\n- - SLUGIFY_USES_UNIDECODE=yes # dummy: tell travis to run more than one build types\n+# env: \"SLUGIFY_USES_UNIDECODE=yes\" # dummy: tell travis to run more than one build types\n \n install:\n - pip install pip -U" + }, + { + "sha": "99bb35fa1ec8e7c94e800d7586893dbe72c716e3", + "filename": "CHANGELOG.md", + "status": "modified", + "additions": 4, + "deletions": 0, + "changes": 4, + "blob_url": "https://github.com/un33k/python-slugify/blob/8c6f94d558f798486d510120f3cdea04fa05cce3/CHANGELOG.md", + "raw_url": "https://github.com/un33k/python-slugify/raw/8c6f94d558f798486d510120f3cdea04fa05cce3/CHANGELOG.md", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/CHANGELOG.md?ref=8c6f94d558f798486d510120f3cdea04fa05cce3", + "patch": "@@ -1,3 +1,7 @@\n+## 1.2.6\n+ - Added support for case-sensitivity (@s-m-e)\n+ - Add Python 3.7 support (@s-m-e)\n+\n ## 1.2.5\n - Add support for using text-unidecode (@bolkedebruin)\n - Switch to pycodestyle instead of pep8" + }, + { + "sha": "e2083b5fb567997a39ceb85aded1d75aabc52f3a", + "filename": "setup.py", + "status": "modified", + "additions": 1, + "deletions": 0, + "changes": 1, + "blob_url": "https://github.com/un33k/python-slugify/blob/8c6f94d558f798486d510120f3cdea04fa05cce3/setup.py", + "raw_url": "https://github.com/un33k/python-slugify/raw/8c6f94d558f798486d510120f3cdea04fa05cce3/setup.py", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/setup.py?ref=8c6f94d558f798486d510120f3cdea04fa05cce3", + "patch": "@@ -34,6 +34,7 @@\n 'Programming Language :: Python :: 3.4',\n 'Programming Language :: Python :: 3.5',\n 'Programming Language :: Python :: 3.6',\n+ 'Programming Language :: Python :: 3.7',\n ]\n \n " + } + ], + "61": [ + { + "sha": "05953c9383742a8e3ba3528cae77a453c61daf51", + "filename": ".gitignore", + "status": "modified", + "additions": 3, + "deletions": 0, + "changes": 3, + "blob_url": "https://github.com/un33k/python-slugify/blob/474080ba8d3bc232302d817db4691c793ff5e71e/.gitignore", + "raw_url": "https://github.com/un33k/python-slugify/raw/474080ba8d3bc232302d817db4691c793ff5e71e/.gitignore", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/.gitignore?ref=474080ba8d3bc232302d817db4691c793ff5e71e", + "patch": "@@ -60,3 +60,6 @@ docs/_build/\n target/\n \n *.*DS_Store\n+\n+# VS Code\n+.vscode" + }, + { + "sha": "20d15cb745a66bd76bcd447b84395f4508690e26", + "filename": ".vscode/settings.json", + "status": "removed", + "additions": 0, + "deletions": 3, + "changes": 3, + "blob_url": "https://github.com/un33k/python-slugify/blob/f4462bb64278e091011e6612feac295bf46d1136/.vscode%2Fsettings.json", + "raw_url": "https://github.com/un33k/python-slugify/raw/f4462bb64278e091011e6612feac295bf46d1136/.vscode%2Fsettings.json", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/.vscode%2Fsettings.json?ref=f4462bb64278e091011e6612feac295bf46d1136", + "patch": "@@ -1,3 +0,0 @@\n-{\n- \"python.linting.pylintEnabled\": false\n-}\n\\ No newline at end of file" + } + ], + "65": [ + { + "sha": "bc4d9e83547f5a530df169d702b1cb8342d71da4", + "filename": "README.md", + "status": "modified", + "additions": 4, + "deletions": 0, + "changes": 4, + "blob_url": "https://github.com/un33k/python-slugify/blob/87e0d11734b135db3cf109e35409a5863c389ea0/README.md", + "raw_url": "https://github.com/un33k/python-slugify/raw/87e0d11734b135db3cf109e35409a5863c389ea0/README.md", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/README.md?ref=87e0d11734b135db3cf109e35409a5863c389ea0", + "patch": "@@ -98,6 +98,10 @@ How to use\n r = slugify(txt, separator='_', regex_pattern=regex_pattern)\n self.assertNotEqual(r, \"_this_is_a_test_\")\n \n+ txt = '10 | 20 %'\n+ r = slugify(txt, replacements=[['|', 'or'], ['%', 'percent']])\n+ self.assertEqual(r, \"10-or-20-percent\")\n+\n ```\n \n For more examples, have a look at the [test.py](test.py) file." + }, + { + "sha": "1544aba4b14667b71fddd2d873fff0dfbd676285", + "filename": "slugify/slugify.py", + "status": "modified", + "additions": 8, + "deletions": 1, + "changes": 9, + "blob_url": "https://github.com/un33k/python-slugify/blob/87e0d11734b135db3cf109e35409a5863c389ea0/slugify%2Fslugify.py", + "raw_url": "https://github.com/un33k/python-slugify/raw/87e0d11734b135db3cf109e35409a5863c389ea0/slugify%2Fslugify.py", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/slugify%2Fslugify.py?ref=87e0d11734b135db3cf109e35409a5863c389ea0", + "patch": "@@ -75,7 +75,8 @@ def smart_truncate(string, max_length=0, word_boundary=False, separator=' ', sav\n \n \n def slugify(text, entities=True, decimal=True, hexadecimal=True, max_length=0, word_boundary=False,\n- separator=DEFAULT_SEPARATOR, save_order=False, stopwords=(), regex_pattern=None, lowercase=True):\n+ separator=DEFAULT_SEPARATOR, save_order=False, stopwords=(), regex_pattern=None, lowercase=True,\n+ replacements=()):\n \"\"\"\n Make a slug from the given text.\n :param text (str): initial text\n@@ -89,9 +90,15 @@ def slugify(text, entities=True, decimal=True, hexadecimal=True, max_length=0, w\n :param stopwords (iterable): words to discount\n :param regex_pattern (str): regex pattern for allowed characters\n :param lowercase (bool): activate case sensitivity by setting it to False\n+ :param replacements (iterable): list of replacement rules e.g. [['|', 'or'], ['%', 'percent']]\n :return (str):\n \"\"\"\n \n+ # user-specific replacements\n+ if replacements:\n+ for old, new in replacements:\n+ text = text.replace(old, new)\n+\n # ensure text is unicode\n if not isinstance(text, _unicode_type):\n text = _unicode(text, 'utf-8', 'ignore')" + }, + { + "sha": "3b79fbdaa7ebe8c50eb765fd44e28f93c90cb65a", + "filename": "test.py", + "status": "modified", + "additions": 9, + "deletions": 0, + "changes": 9, + "blob_url": "https://github.com/un33k/python-slugify/blob/87e0d11734b135db3cf109e35409a5863c389ea0/test.py", + "raw_url": "https://github.com/un33k/python-slugify/raw/87e0d11734b135db3cf109e35409a5863c389ea0/test.py", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/test.py?ref=87e0d11734b135db3cf109e35409a5863c389ea0", + "patch": "@@ -189,6 +189,15 @@ def test_regex_pattern_keep_underscore_with_underscore_as_separator(self):\n r = slugify(txt, separator='_', regex_pattern=regex_pattern)\n self.assertNotEqual(r, \"_this_is_a_test_\")\n \n+ def test_custom_replacements(self):\n+ txt = '10 | 20 %'\n+ r = slugify(txt, replacements=[['|', 'or'], ['%', 'percent']])\n+ self.assertEqual(r, \"10-or-20-percent\")\n+\n+ txt = 'I ♥ 🦄'\n+ r = slugify(txt, replacements=[['♥', 'amour'], ['🦄', 'licorne']])\n+ self.assertEqual(r, \"i-amour-licorne\")\n+\n \n class TestUtils(unittest.TestCase):\n " + } + ], + "76": [ + { + "sha": "577df772024941a9749ee3e9ddce703687f9daa4", + "filename": "README.md", + "status": "modified", + "additions": 12, + "deletions": 0, + "changes": 12, + "blob_url": "https://github.com/un33k/python-slugify/blob/c7c85269876c99d9a5d9fd6922f3b70ab268a52c/README.md", + "raw_url": "https://github.com/un33k/python-slugify/raw/c7c85269876c99d9a5d9fd6922f3b70ab268a52c/README.md", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/README.md?ref=c7c85269876c99d9a5d9fd6922f3b70ab268a52c", + "patch": "@@ -94,6 +94,18 @@ How to use\n r = slugify(txt, replacements=[['|', 'or'], ['%', 'percent']])\n self.assertEqual(r, \"10-or-20-percent\")\n \n+ from slugify import UniqueSlugify\n+\n+ unique_slugify = UniqueSlugify()\n+\n+ txt = 'this is a test'\n+ r = unique_slugify(txt)\n+ self.assertEqual(r, 'this-is-a-test')\n+\n+ txt = \"___This is a test ---\"\n+ r = unique_slugify(txt)\n+ self.assertEqual(r, 'this-is-a-test-1')\n+\n ```\n \n For more examples, have a look at the [test.py](test.py) file." + }, + { + "sha": "784931dc3e090bf6aa15b6a05ffc0acc7f4f45dd", + "filename": "slugify/slugify.py", + "status": "modified", + "additions": 19, + "deletions": 1, + "changes": 20, + "blob_url": "https://github.com/un33k/python-slugify/blob/c7c85269876c99d9a5d9fd6922f3b70ab268a52c/slugify%2Fslugify.py", + "raw_url": "https://github.com/un33k/python-slugify/raw/c7c85269876c99d9a5d9fd6922f3b70ab268a52c/slugify%2Fslugify.py", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/slugify%2Fslugify.py?ref=c7c85269876c99d9a5d9fd6922f3b70ab268a52c", + "patch": "@@ -18,7 +18,7 @@\n except ImportError:\n import unidecode\n \n-__all__ = ['slugify', 'smart_truncate']\n+__all__ = ['slugify', 'smart_truncate', 'UniqueSlugify']\n \n \n CHAR_ENTITY_PATTERN = re.compile(r'&(%s);' % '|'.join(name2codepoint))\n@@ -180,6 +180,24 @@ def slugify(text, entities=True, decimal=True, hexadecimal=True, max_length=0, w\n return text\n \n \n+class UniqueSlugify(object):\n+ \"\"\"Callable class for generating unique slugs.\"\"\"\n+ def __init__(self):\n+ self._used = set()\n+\n+ def __call__(self, text, *args, **kwargs):\n+ \"\"\"Make a slug form the given text. Takes the same arguments as ``slugify``.\"\"\"\n+ slugified = slugify(text, *args, **kwargs)\n+ ret = slugified\n+ count = 0\n+ separator = kwargs.get('separator', DEFAULT_SEPARATOR)\n+ while ret in self._used:\n+ count += 1\n+ ret = \"{}{}{}\".format(slugified, separator, count)\n+ self._used.add(ret)\n+ return ret\n+\n+\n def main(): # pragma: no cover\n if len(sys.argv) < 2:\n print(\"Usage %s TEXT TO SLUGIFY\" % sys.argv[0])" + }, + { + "sha": "b18039fd1a31720b06e2c53bda7276c5a41582e5", + "filename": "test.py", + "status": "modified", + "additions": 29, + "deletions": 0, + "changes": 29, + "blob_url": "https://github.com/un33k/python-slugify/blob/c7c85269876c99d9a5d9fd6922f3b70ab268a52c/test.py", + "raw_url": "https://github.com/un33k/python-slugify/raw/c7c85269876c99d9a5d9fd6922f3b70ab268a52c/test.py", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/test.py?ref=c7c85269876c99d9a5d9fd6922f3b70ab268a52c", + "patch": "@@ -3,6 +3,7 @@\n import unittest\n from slugify import slugify\n from slugify import smart_truncate\n+from slugify import UniqueSlugify\n \n \n class TestSlugification(unittest.TestCase):\n@@ -225,5 +226,33 @@ def test_smart_truncate_no_seperator(self):\n self.assertEqual(r, txt)\n \n \n+class TestUniqueSlugify(unittest.TestCase):\n+\n+ def test_unique_slugify(self):\n+ unique_slugify = UniqueSlugify()\n+\n+ txt = 'this is a test'\n+ r = unique_slugify(txt)\n+ self.assertEqual(r, 'this-is-a-test')\n+\n+ txt = \"___This is a test ---\"\n+ r = unique_slugify(txt)\n+ self.assertEqual(r, 'this-is-a-test-1')\n+\n+ def test_unique_slugify_custom_separator(self):\n+ unique_slugify = UniqueSlugify()\n+\n+ txt = 'this is a test'\n+ r = unique_slugify(txt, separator='_')\n+ self.assertEqual(r, \"this_is_a_test\")\n+\n+ txt = \"___This is a test ---\"\n+ r = unique_slugify(txt, separator='_')\n+ self.assertEqual(r, 'this_is_a_test_1')\n+\n+ r = unique_slugify(txt, separator='-')\n+ self.assertEqual(r, 'this-is-a-test')\n+\n+\n if __name__ == '__main__':\n unittest.main()" + } + ], + "84": [ + { + "sha": "9f49764e9b22dc36c55baf09546d4524fa96609f", + "filename": "setup.py", + "status": "modified", + "additions": 1, + "deletions": 1, + "changes": 2, + "blob_url": "https://github.com/un33k/python-slugify/blob/0bd768f2729af96dffe7d3497295eefc6cb9c228/setup.py", + "raw_url": "https://github.com/un33k/python-slugify/raw/0bd768f2729af96dffe7d3497295eefc6cb9c228/setup.py", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/setup.py?ref=0bd768f2729af96dffe7d3497295eefc6cb9c228", + "patch": "@@ -14,7 +14,7 @@\n author = 'Val Neekman'\n author_email = 'info@neekware.com'\n license = 'MIT'\n-install_requires = ['text-unidecode==1.2']\n+install_requires = ['text-unidecode==1.3']\n extras_require = {'unidecode': ['Unidecode==1.0.23']}\n \n classifiers = [" + } + ], + "104": [ + { + "sha": "05eae8993a15253bab522865953235e3ea8a3883", + "filename": "README.md", + "status": "modified", + "additions": 1, + "deletions": 1, + "changes": 2, + "blob_url": "https://github.com/un33k/python-slugify/blob/6c27fd835cf7a34b6be79d4a8a3e6d0ec154829a/README.md", + "raw_url": "https://github.com/un33k/python-slugify/raw/6c27fd835cf7a34b6be79d4a8a3e6d0ec154829a/README.md", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/README.md?ref=6c27fd835cf7a34b6be79d4a8a3e6d0ec154829a", + "patch": "@@ -55,7 +55,7 @@ def slugify(\n :param save_order (bool): if parameter is True and max_length > 0 return whole words in the initial order\n :param separator (str): separator between words\n :param stopwords (iterable): words to discount\n- :param regex_pattern (str): regex pattern for allowed characters\n+ :param regex_pattern (str): regex pattern for disallowed characters\n :param lowercase (bool): activate case sensitivity by setting it to False\n :param replacements (iterable): list of replacement rules e.g. [['|', 'or'], ['%', 'percent']]\n :return (str): slugify text" + }, + { + "sha": "a917c91effc14e6a99e30dfe19149e98877cfa43", + "filename": "slugify/slugify.py", + "status": "modified", + "additions": 5, + "deletions": 5, + "changes": 10, + "blob_url": "https://github.com/un33k/python-slugify/blob/6c27fd835cf7a34b6be79d4a8a3e6d0ec154829a/slugify%2Fslugify.py", + "raw_url": "https://github.com/un33k/python-slugify/raw/6c27fd835cf7a34b6be79d4a8a3e6d0ec154829a/slugify%2Fslugify.py", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/slugify%2Fslugify.py?ref=6c27fd835cf7a34b6be79d4a8a3e6d0ec154829a", + "patch": "@@ -25,8 +25,8 @@\n DECIMAL_PATTERN = re.compile(r'&#(\\d+);')\n HEX_PATTERN = re.compile(r'&#x([\\da-fA-F]+);')\n QUOTE_PATTERN = re.compile(r'[\\']+')\n-ALLOWED_CHARS_PATTERN = re.compile(r'[^-a-z0-9]+')\n-ALLOWED_CHARS_PATTERN_WITH_UPPERCASE = re.compile(r'[^-a-zA-Z0-9]+')\n+DISALLOWED_CHARS_PATTERN = re.compile(r'[^-a-z0-9]+')\n+DISALLOWED_CHARS_PATTERN_WITH_UPPERCASE = re.compile(r'[^-a-zA-Z0-9]+')\n DUPLICATE_DASH_PATTERN = re.compile(r'-{2,}')\n NUMBERS_PATTERN = re.compile(r'(?<=\\d),(?=\\d)')\n DEFAULT_SEPARATOR = '-'\n@@ -88,7 +88,7 @@ def slugify(text, entities=True, decimal=True, hexadecimal=True, max_length=0, w\n :param save_order (bool): if parameter is True and max_length > 0 return whole words in the initial order\n :param separator (str): separator between words\n :param stopwords (iterable): words to discount\n- :param regex_pattern (str): regex pattern for allowed characters\n+ :param regex_pattern (str): regex pattern for disallowed characters\n :param lowercase (bool): activate case sensitivity by setting it to False\n :param replacements (iterable): list of replacement rules e.g. [['|', 'or'], ['%', 'percent']]\n :return (str):\n@@ -148,9 +148,9 @@ def slugify(text, entities=True, decimal=True, hexadecimal=True, max_length=0, w\n \n # replace all other unwanted characters\n if lowercase:\n- pattern = regex_pattern or ALLOWED_CHARS_PATTERN\n+ pattern = regex_pattern or DISALLOWED_CHARS_PATTERN\n else:\n- pattern = regex_pattern or ALLOWED_CHARS_PATTERN_WITH_UPPERCASE\n+ pattern = regex_pattern or DISALLOWED_CHARS_PATTERN_WITH_UPPERCASE\n text = re.sub(pattern, DEFAULT_SEPARATOR, text)\n \n # remove redundant" + } + ], + "125": [ + { + "sha": "7e133882613f987aef3bebbf4fdda48a4d58ab91", + "filename": "slugify/__main__.py", + "status": "modified", + "additions": 4, + "deletions": 1, + "changes": 5, + "blob_url": "https://github.com/un33k/python-slugify/blob/45b2915785b4754158d1fbab7d67567de98e473a/slugify%2F__main__.py", + "raw_url": "https://github.com/un33k/python-slugify/raw/45b2915785b4754158d1fbab7d67567de98e473a/slugify%2F__main__.py", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/slugify%2F__main__.py?ref=45b2915785b4754158d1fbab7d67567de98e473a", + "patch": "@@ -38,6 +38,8 @@ def parse_args(argv):\n help=\"\"\"Additional replacement rules e.g. \"|->or\", \"%%->percent\".\"\"\")\n parser.add_argument(\"--allow-unicode\", action='store_true', default=False,\n help=\"Allow unicode characters\")\n+ parser.add_argument(\"--replace-ambiguous-characters\", action='store_true',\n+ default=False, help=\"Replace ambiguous characters with their closest ASCII equivalent\")\n \n args = parser.parse_args(argv[1:])\n \n@@ -76,7 +78,8 @@ def slugify_params(args):\n stopwords=args.stopwords,\n lowercase=args.lowercase,\n replacements=args.replacements,\n- allow_unicode=args.allow_unicode\n+ allow_unicode=args.allow_unicode,\n+ replace_ambiguous_characters=args.replace_ambiguous_characters\n )\n \n " + }, + { + "sha": "9a2545a0c6c1b450a32362384f70d99bd4d0c3e9", + "filename": "slugify/slugify.py", + "status": "modified", + "additions": 8, + "deletions": 1, + "changes": 9, + "blob_url": "https://github.com/un33k/python-slugify/blob/45b2915785b4754158d1fbab7d67567de98e473a/slugify%2Fslugify.py", + "raw_url": "https://github.com/un33k/python-slugify/raw/45b2915785b4754158d1fbab7d67567de98e473a/slugify%2Fslugify.py", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/slugify%2Fslugify.py?ref=45b2915785b4754158d1fbab7d67567de98e473a", + "patch": "@@ -8,6 +8,8 @@\n except ImportError:\n import unidecode\n \n+from .special import AMBIGUOUS_CHARACTERS\n+\n __all__ = ['slugify', 'smart_truncate']\n \n \n@@ -66,7 +68,7 @@ def smart_truncate(string, max_length=0, word_boundary=False, separator=' ', sav\n \n def slugify(text, entities=True, decimal=True, hexadecimal=True, max_length=0, word_boundary=False,\n separator=DEFAULT_SEPARATOR, save_order=False, stopwords=(), regex_pattern=None, lowercase=True,\n- replacements=(), allow_unicode=False):\n+ replacements=(), allow_unicode=False, replace_ambiguous_characters=False):\n \"\"\"\n Make a slug from the given text.\n :param text (str): initial text\n@@ -82,6 +84,7 @@ def slugify(text, entities=True, decimal=True, hexadecimal=True, max_length=0, w\n :param lowercase (bool): activate case sensitivity by setting it to False\n :param replacements (iterable): list of replacement rules e.g. [['|', 'or'], ['%', 'percent']]\n :param allow_unicode (bool): allow unicode characters\n+ :param replace_ambiguous_characters (bool): replace characters that can be confused with others\n :return (str):\n \"\"\"\n \n@@ -97,6 +100,10 @@ def slugify(text, entities=True, decimal=True, hexadecimal=True, max_length=0, w\n # replace quotes with dashes - pre-process\n text = QUOTE_PATTERN.sub(DEFAULT_SEPARATOR, text)\n \n+ # replace ambiguous characters\n+ if replace_ambiguous_characters:\n+ text = ''.join(chr(AMBIGUOUS_CHARACTERS.get(str(ord(c)), ord(c))) for c in text)\n+\n # decode unicode\n if not allow_unicode:\n text = unidecode.unidecode(text)" + }, + { + "sha": "8f539f68ad404cd2b72aa86f680315cd1ef0abbd", + "filename": "slugify/special.py", + "status": "modified", + "additions": 1585, + "deletions": 0, + "changes": 1585, + "blob_url": "https://github.com/un33k/python-slugify/blob/45b2915785b4754158d1fbab7d67567de98e473a/slugify%2Fspecial.py", + "raw_url": "https://github.com/un33k/python-slugify/raw/45b2915785b4754158d1fbab7d67567de98e473a/slugify%2Fspecial.py", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/slugify%2Fspecial.py?ref=45b2915785b4754158d1fbab7d67567de98e473a", + "patch": "@@ -45,3 +45,1588 @@ def add_uppercase_char(char_list):\n \n # Pre translations\n PRE_TRANSLATIONS = CYRILLIC + GERMAN + GREEK\n+\n+# Source: https://github.com/hediet/vscode-unicode-data/blob/main/out/ambiguous.json\n+AMBIGUOUS_CHARACTERS = {\n+ \"8232\": 32,\n+ \"8233\": 32,\n+ \"5760\": 32,\n+ \"8192\": 32,\n+ \"8193\": 32,\n+ \"8194\": 32,\n+ \"8195\": 32,\n+ \"8196\": 32,\n+ \"8197\": 32,\n+ \"8198\": 32,\n+ \"8200\": 32,\n+ \"8201\": 32,\n+ \"8202\": 32,\n+ \"8287\": 32,\n+ \"8199\": 32,\n+ \"8239\": 32,\n+ \"2042\": 95,\n+ \"65101\": 95,\n+ \"65102\": 95,\n+ \"65103\": 95,\n+ \"8208\": 45,\n+ \"8209\": 45,\n+ \"8210\": 45,\n+ \"65112\": 45,\n+ \"1748\": 45,\n+ \"8259\": 45,\n+ \"727\": 45,\n+ \"8722\": 45,\n+ \"10134\": 45,\n+ \"11450\": 45,\n+ \"1549\": 44,\n+ \"1643\": 44,\n+ \"8218\": 44,\n+ \"184\": 44,\n+ \"42233\": 44,\n+ \"894\": 59,\n+ \"2307\": 58,\n+ \"2691\": 58,\n+ \"1417\": 58,\n+ \"1795\": 58,\n+ \"1796\": 58,\n+ \"5868\": 58,\n+ \"65072\": 58,\n+ \"6147\": 58,\n+ \"6153\": 58,\n+ \"8282\": 58,\n+ \"1475\": 58,\n+ \"760\": 58,\n+ \"42889\": 58,\n+ \"8758\": 58,\n+ \"720\": 58,\n+ \"42237\": 58,\n+ \"451\": 33,\n+ \"11601\": 33,\n+ \"660\": 63,\n+ \"577\": 63,\n+ \"2429\": 63,\n+ \"5038\": 63,\n+ \"42731\": 63,\n+ \"119149\": 46,\n+ \"8228\": 46,\n+ \"1793\": 46,\n+ \"1794\": 46,\n+ \"42510\": 46,\n+ \"68176\": 46,\n+ \"1632\": 46,\n+ \"1776\": 46,\n+ \"42232\": 46,\n+ \"1373\": 96,\n+ \"65287\": 96,\n+ \"8219\": 96,\n+ \"8242\": 96,\n+ \"1370\": 96,\n+ \"1523\": 96,\n+ \"8175\": 96,\n+ \"65344\": 96,\n+ \"900\": 96,\n+ \"8189\": 96,\n+ \"8125\": 96,\n+ \"8127\": 96,\n+ \"8190\": 96,\n+ \"697\": 96,\n+ \"884\": 96,\n+ \"712\": 96,\n+ \"714\": 96,\n+ \"715\": 96,\n+ \"756\": 96,\n+ \"699\": 96,\n+ \"701\": 96,\n+ \"700\": 96,\n+ \"702\": 96,\n+ \"42892\": 96,\n+ \"1497\": 96,\n+ \"2036\": 96,\n+ \"2037\": 96,\n+ \"5194\": 96,\n+ \"5836\": 96,\n+ \"94033\": 96,\n+ \"94034\": 96,\n+ \"65339\": 91,\n+ \"10088\": 40,\n+ \"10098\": 40,\n+ \"12308\": 40,\n+ \"64830\": 40,\n+ \"65341\": 93,\n+ \"10089\": 41,\n+ \"10099\": 41,\n+ \"12309\": 41,\n+ \"64831\": 41,\n+ \"10100\": 123,\n+ \"119060\": 123,\n+ \"10101\": 125,\n+ \"65342\": 94,\n+ \"8270\": 42,\n+ \"1645\": 42,\n+ \"8727\": 42,\n+ \"66335\": 42,\n+ \"5941\": 47,\n+ \"8257\": 47,\n+ \"8725\": 47,\n+ \"8260\": 47,\n+ \"9585\": 47,\n+ \"10187\": 47,\n+ \"10744\": 47,\n+ \"119354\": 47,\n+ \"12755\": 47,\n+ \"12339\": 47,\n+ \"11462\": 47,\n+ \"20031\": 47,\n+ \"12035\": 47,\n+ \"65340\": 92,\n+ \"65128\": 92,\n+ \"8726\": 92,\n+ \"10189\": 92,\n+ \"10741\": 92,\n+ \"10745\": 92,\n+ \"119311\": 92,\n+ \"119355\": 92,\n+ \"12756\": 92,\n+ \"20022\": 92,\n+ \"12034\": 92,\n+ \"42872\": 38,\n+ \"708\": 94,\n+ \"710\": 94,\n+ \"5869\": 43,\n+ \"10133\": 43,\n+ \"66203\": 43,\n+ \"8249\": 60,\n+ \"10094\": 60,\n+ \"706\": 60,\n+ \"119350\": 60,\n+ \"5176\": 60,\n+ \"5810\": 60,\n+ \"5120\": 61,\n+ \"11840\": 61,\n+ \"12448\": 61,\n+ \"42239\": 61,\n+ \"8250\": 62,\n+ \"10095\": 62,\n+ \"707\": 62,\n+ \"119351\": 62,\n+ \"5171\": 62,\n+ \"94015\": 62,\n+ \"8275\": 126,\n+ \"732\": 126,\n+ \"8128\": 126,\n+ \"8764\": 126,\n+ \"65372\": 124,\n+ \"65293\": 45,\n+ \"120784\": 50,\n+ \"120794\": 50,\n+ \"120804\": 50,\n+ \"120814\": 50,\n+ \"120824\": 50,\n+ \"130034\": 50,\n+ \"42842\": 50,\n+ \"423\": 50,\n+ \"1000\": 50,\n+ \"42564\": 50,\n+ \"5311\": 50,\n+ \"42735\": 50,\n+ \"119302\": 51,\n+ \"120785\": 51,\n+ \"120795\": 51,\n+ \"120805\": 51,\n+ \"120815\": 51,\n+ \"120825\": 51,\n+ \"130035\": 51,\n+ \"42923\": 51,\n+ \"540\": 51,\n+ \"439\": 51,\n+ \"42858\": 51,\n+ \"11468\": 51,\n+ \"1248\": 51,\n+ \"94011\": 51,\n+ \"71882\": 51,\n+ \"120786\": 52,\n+ \"120796\": 52,\n+ \"120806\": 52,\n+ \"120816\": 52,\n+ \"120826\": 52,\n+ \"130036\": 52,\n+ \"5070\": 52,\n+ \"71855\": 52,\n+ \"120787\": 53,\n+ \"120797\": 53,\n+ \"120807\": 53,\n+ \"120817\": 53,\n+ \"120827\": 53,\n+ \"130037\": 53,\n+ \"444\": 53,\n+ \"71867\": 53,\n+ \"120788\": 54,\n+ \"120798\": 54,\n+ \"120808\": 54,\n+ \"120818\": 54,\n+ \"120828\": 54,\n+ \"130038\": 54,\n+ \"11474\": 54,\n+ \"5102\": 54,\n+ \"71893\": 54,\n+ \"119314\": 55,\n+ \"120789\": 55,\n+ \"120799\": 55,\n+ \"120809\": 55,\n+ \"120819\": 55,\n+ \"120829\": 55,\n+ \"130039\": 55,\n+ \"66770\": 55,\n+ \"71878\": 55,\n+ \"2819\": 56,\n+ \"2538\": 56,\n+ \"2666\": 56,\n+ \"125131\": 56,\n+ \"120790\": 56,\n+ \"120800\": 56,\n+ \"120810\": 56,\n+ \"120820\": 56,\n+ \"120830\": 56,\n+ \"130040\": 56,\n+ \"547\": 56,\n+ \"546\": 56,\n+ \"66330\": 56,\n+ \"2663\": 57,\n+ \"2920\": 57,\n+ \"2541\": 57,\n+ \"3437\": 57,\n+ \"120791\": 57,\n+ \"120801\": 57,\n+ \"120811\": 57,\n+ \"120821\": 57,\n+ \"120831\": 57,\n+ \"130041\": 57,\n+ \"42862\": 57,\n+ \"11466\": 57,\n+ \"71884\": 57,\n+ \"71852\": 57,\n+ \"71894\": 57,\n+ \"9082\": 97,\n+ \"65345\": 97,\n+ \"119834\": 97,\n+ \"119886\": 97,\n+ \"119938\": 97,\n+ \"119990\": 97,\n+ \"120042\": 97,\n+ \"120094\": 97,\n+ \"120146\": 97,\n+ \"120198\": 97,\n+ \"120250\": 97,\n+ \"120302\": 97,\n+ \"120354\": 97,\n+ \"120406\": 97,\n+ \"120458\": 97,\n+ \"593\": 97,\n+ \"945\": 97,\n+ \"120514\": 97,\n+ \"120572\": 97,\n+ \"120630\": 97,\n+ \"120688\": 97,\n+ \"120746\": 97,\n+ \"65313\": 65,\n+ \"119808\": 65,\n+ \"119860\": 65,\n+ \"119912\": 65,\n+ \"119964\": 65,\n+ \"120016\": 65,\n+ \"120068\": 65,\n+ \"120120\": 65,\n+ \"120172\": 65,\n+ \"120224\": 65,\n+ \"120276\": 65,\n+ \"120328\": 65,\n+ \"120380\": 65,\n+ \"120432\": 65,\n+ \"913\": 65,\n+ \"120488\": 65,\n+ \"120546\": 65,\n+ \"120604\": 65,\n+ \"120662\": 65,\n+ \"120720\": 65,\n+ \"5034\": 65,\n+ \"5573\": 65,\n+ \"42222\": 65,\n+ \"94016\": 65,\n+ \"66208\": 65,\n+ \"119835\": 98,\n+ \"119887\": 98,\n+ \"119939\": 98,\n+ \"119991\": 98,\n+ \"120043\": 98,\n+ \"120095\": 98,\n+ \"120147\": 98,\n+ \"120199\": 98,\n+ \"120251\": 98,\n+ \"120303\": 98,\n+ \"120355\": 98,\n+ \"120407\": 98,\n+ \"120459\": 98,\n+ \"388\": 98,\n+ \"5071\": 98,\n+ \"5234\": 98,\n+ \"5551\": 98,\n+ \"65314\": 66,\n+ \"8492\": 66,\n+ \"119809\": 66,\n+ \"119861\": 66,\n+ \"119913\": 66,\n+ \"120017\": 66,\n+ \"120069\": 66,\n+ \"120121\": 66,\n+ \"120173\": 66,\n+ \"120225\": 66,\n+ \"120277\": 66,\n+ \"120329\": 66,\n+ \"120381\": 66,\n+ \"120433\": 66,\n+ \"42932\": 66,\n+ \"914\": 66,\n+ \"120489\": 66,\n+ \"120547\": 66,\n+ \"120605\": 66,\n+ \"120663\": 66,\n+ \"120721\": 66,\n+ \"5108\": 66,\n+ \"5623\": 66,\n+ \"42192\": 66,\n+ \"66178\": 66,\n+ \"66209\": 66,\n+ \"66305\": 66,\n+ \"65347\": 99,\n+ \"8573\": 99,\n+ \"119836\": 99,\n+ \"119888\": 99,\n+ \"119940\": 99,\n+ \"119992\": 99,\n+ \"120044\": 99,\n+ \"120096\": 99,\n+ \"120148\": 99,\n+ \"120200\": 99,\n+ \"120252\": 99,\n+ \"120304\": 99,\n+ \"120356\": 99,\n+ \"120408\": 99,\n+ \"120460\": 99,\n+ \"7428\": 99,\n+ \"1010\": 99,\n+ \"11429\": 99,\n+ \"43951\": 99,\n+ \"66621\": 99,\n+ \"128844\": 67,\n+ \"71922\": 67,\n+ \"71913\": 67,\n+ \"65315\": 67,\n+ \"8557\": 67,\n+ \"8450\": 67,\n+ \"8493\": 67,\n+ \"119810\": 67,\n+ \"119862\": 67,\n+ \"119914\": 67,\n+ \"119966\": 67,\n+ \"120018\": 67,\n+ \"120174\": 67,\n+ \"120226\": 67,\n+ \"120278\": 67,\n+ \"120330\": 67,\n+ \"120382\": 67,\n+ \"120434\": 67,\n+ \"1017\": 67,\n+ \"11428\": 67,\n+ \"5087\": 67,\n+ \"42202\": 67,\n+ \"66210\": 67,\n+ \"66306\": 67,\n+ \"66581\": 67,\n+ \"66844\": 67,\n+ \"8574\": 100,\n+ \"8518\": 100,\n+ \"119837\": 100,\n+ \"119889\": 100,\n+ \"119941\": 100,\n+ \"119993\": 100,\n+ \"120045\": 100,\n+ \"120097\": 100,\n+ \"120149\": 100,\n+ \"120201\": 100,\n+ \"120253\": 100,\n+ \"120305\": 100,\n+ \"120357\": 100,\n+ \"120409\": 100,\n+ \"120461\": 100,\n+ \"1281\": 100,\n+ \"5095\": 100,\n+ \"5231\": 100,\n+ \"42194\": 100,\n+ \"8558\": 68,\n+ \"8517\": 68,\n+ \"119811\": 68,\n+ \"119863\": 68,\n+ \"119915\": 68,\n+ \"119967\": 68,\n+ \"120019\": 68,\n+ \"120071\": 68,\n+ \"120123\": 68,\n+ \"120175\": 68,\n+ \"120227\": 68,\n+ \"120279\": 68,\n+ \"120331\": 68,\n+ \"120383\": 68,\n+ \"120435\": 68,\n+ \"5024\": 68,\n+ \"5598\": 68,\n+ \"5610\": 68,\n+ \"42195\": 68,\n+ \"8494\": 101,\n+ \"65349\": 101,\n+ \"8495\": 101,\n+ \"8519\": 101,\n+ \"119838\": 101,\n+ \"119890\": 101,\n+ \"119942\": 101,\n+ \"120046\": 101,\n+ \"120098\": 101,\n+ \"120150\": 101,\n+ \"120202\": 101,\n+ \"120254\": 101,\n+ \"120306\": 101,\n+ \"120358\": 101,\n+ \"120410\": 101,\n+ \"120462\": 101,\n+ \"43826\": 101,\n+ \"1213\": 101,\n+ \"8959\": 69,\n+ \"65317\": 69,\n+ \"8496\": 69,\n+ \"119812\": 69,\n+ \"119864\": 69,\n+ \"119916\": 69,\n+ \"120020\": 69,\n+ \"120072\": 69,\n+ \"120124\": 69,\n+ \"120176\": 69,\n+ \"120228\": 69,\n+ \"120280\": 69,\n+ \"120332\": 69,\n+ \"120384\": 69,\n+ \"120436\": 69,\n+ \"917\": 69,\n+ \"120492\": 69,\n+ \"120550\": 69,\n+ \"120608\": 69,\n+ \"120666\": 69,\n+ \"120724\": 69,\n+ \"11577\": 69,\n+ \"5036\": 69,\n+ \"42224\": 69,\n+ \"71846\": 69,\n+ \"71854\": 69,\n+ \"66182\": 69,\n+ \"119839\": 102,\n+ \"119891\": 102,\n+ \"119943\": 102,\n+ \"119995\": 102,\n+ \"120047\": 102,\n+ \"120099\": 102,\n+ \"120151\": 102,\n+ \"120203\": 102,\n+ \"120255\": 102,\n+ \"120307\": 102,\n+ \"120359\": 102,\n+ \"120411\": 102,\n+ \"120463\": 102,\n+ \"43829\": 102,\n+ \"42905\": 102,\n+ \"383\": 102,\n+ \"7837\": 102,\n+ \"1412\": 102,\n+ \"119315\": 70,\n+ \"8497\": 70,\n+ \"119813\": 70,\n+ \"119865\": 70,\n+ \"119917\": 70,\n+ \"120021\": 70,\n+ \"120073\": 70,\n+ \"120125\": 70,\n+ \"120177\": 70,\n+ \"120229\": 70,\n+ \"120281\": 70,\n+ \"120333\": 70,\n+ \"120385\": 70,\n+ \"120437\": 70,\n+ \"42904\": 70,\n+ \"988\": 70,\n+ \"120778\": 70,\n+ \"5556\": 70,\n+ \"42205\": 70,\n+ \"71874\": 70,\n+ \"71842\": 70,\n+ \"66183\": 70,\n+ \"66213\": 70,\n+ \"66853\": 70,\n+ \"65351\": 103,\n+ \"8458\": 103,\n+ \"119840\": 103,\n+ \"119892\": 103,\n+ \"119944\": 103,\n+ \"120048\": 103,\n+ \"120100\": 103,\n+ \"120152\": 103,\n+ \"120204\": 103,\n+ \"120256\": 103,\n+ \"120308\": 103,\n+ \"120360\": 103,\n+ \"120412\": 103,\n+ \"120464\": 103,\n+ \"609\": 103,\n+ \"7555\": 103,\n+ \"397\": 103,\n+ \"1409\": 103,\n+ \"119814\": 71,\n+ \"119866\": 71,\n+ \"119918\": 71,\n+ \"119970\": 71,\n+ \"120022\": 71,\n+ \"120074\": 71,\n+ \"120126\": 71,\n+ \"120178\": 71,\n+ \"120230\": 71,\n+ \"120282\": 71,\n+ \"120334\": 71,\n+ \"120386\": 71,\n+ \"120438\": 71,\n+ \"1292\": 71,\n+ \"5056\": 71,\n+ \"5107\": 71,\n+ \"42198\": 71,\n+ \"65352\": 104,\n+ \"8462\": 104,\n+ \"119841\": 104,\n+ \"119945\": 104,\n+ \"119997\": 104,\n+ \"120049\": 104,\n+ \"120101\": 104,\n+ \"120153\": 104,\n+ \"120205\": 104,\n+ \"120257\": 104,\n+ \"120309\": 104,\n+ \"120361\": 104,\n+ \"120413\": 104,\n+ \"120465\": 104,\n+ \"1211\": 104,\n+ \"1392\": 104,\n+ \"5058\": 104,\n+ \"65320\": 72,\n+ \"8459\": 72,\n+ \"8460\": 72,\n+ \"8461\": 72,\n+ \"119815\": 72,\n+ \"119867\": 72,\n+ \"119919\": 72,\n+ \"120023\": 72,\n+ \"120179\": 72,\n+ \"120231\": 72,\n+ \"120283\": 72,\n+ \"120335\": 72,\n+ \"120387\": 72,\n+ \"120439\": 72,\n+ \"919\": 72,\n+ \"120494\": 72,\n+ \"120552\": 72,\n+ \"120610\": 72,\n+ \"120668\": 72,\n+ \"120726\": 72,\n+ \"11406\": 72,\n+ \"5051\": 72,\n+ \"5500\": 72,\n+ \"42215\": 72,\n+ \"66255\": 72,\n+ \"731\": 105,\n+ \"9075\": 105,\n+ \"65353\": 105,\n+ \"8560\": 105,\n+ \"8505\": 105,\n+ \"8520\": 105,\n+ \"119842\": 105,\n+ \"119894\": 105,\n+ \"119946\": 105,\n+ \"119998\": 105,\n+ \"120050\": 105,\n+ \"120102\": 105,\n+ \"120154\": 105,\n+ \"120206\": 105,\n+ \"120258\": 105,\n+ \"120310\": 105,\n+ \"120362\": 105,\n+ \"120414\": 105,\n+ \"120466\": 105,\n+ \"120484\": 105,\n+ \"618\": 105,\n+ \"617\": 105,\n+ \"953\": 105,\n+ \"8126\": 105,\n+ \"890\": 105,\n+ \"120522\": 105,\n+ \"120580\": 105,\n+ \"120638\": 105,\n+ \"120696\": 105,\n+ \"120754\": 105,\n+ \"1110\": 105,\n+ \"42567\": 105,\n+ \"1231\": 105,\n+ \"43893\": 105,\n+ \"5029\": 105,\n+ \"71875\": 105,\n+ \"65354\": 106,\n+ \"8521\": 106,\n+ \"119843\": 106,\n+ \"119895\": 106,\n+ \"119947\": 106,\n+ \"119999\": 106,\n+ \"120051\": 106,\n+ \"120103\": 106,\n+ \"120155\": 106,\n+ \"120207\": 106,\n+ \"120259\": 106,\n+ \"120311\": 106,\n+ \"120363\": 106,\n+ \"120415\": 106,\n+ \"120467\": 106,\n+ \"1011\": 106,\n+ \"1112\": 106,\n+ \"65322\": 74,\n+ \"119817\": 74,\n+ \"119869\": 74,\n+ \"119921\": 74,\n+ \"119973\": 74,\n+ \"120025\": 74,\n+ \"120077\": 74,\n+ \"120129\": 74,\n+ \"120181\": 74,\n+ \"120233\": 74,\n+ \"120285\": 74,\n+ \"120337\": 74,\n+ \"120389\": 74,\n+ \"120441\": 74,\n+ \"42930\": 74,\n+ \"895\": 74,\n+ \"1032\": 74,\n+ \"5035\": 74,\n+ \"5261\": 74,\n+ \"42201\": 74,\n+ \"119844\": 107,\n+ \"119896\": 107,\n+ \"119948\": 107,\n+ \"120000\": 107,\n+ \"120052\": 107,\n+ \"120104\": 107,\n+ \"120156\": 107,\n+ \"120208\": 107,\n+ \"120260\": 107,\n+ \"120312\": 107,\n+ \"120364\": 107,\n+ \"120416\": 107,\n+ \"120468\": 107,\n+ \"8490\": 75,\n+ \"65323\": 75,\n+ \"119818\": 75,\n+ \"119870\": 75,\n+ \"119922\": 75,\n+ \"119974\": 75,\n+ \"120026\": 75,\n+ \"120078\": 75,\n+ \"120130\": 75,\n+ \"120182\": 75,\n+ \"120234\": 75,\n+ \"120286\": 75,\n+ \"120338\": 75,\n+ \"120390\": 75,\n+ \"120442\": 75,\n+ \"922\": 75,\n+ \"120497\": 75,\n+ \"120555\": 75,\n+ \"120613\": 75,\n+ \"120671\": 75,\n+ \"120729\": 75,\n+ \"11412\": 75,\n+ \"5094\": 75,\n+ \"5845\": 75,\n+ \"42199\": 75,\n+ \"66840\": 75,\n+ \"1472\": 108,\n+ \"8739\": 73,\n+ \"9213\": 73,\n+ \"65512\": 73,\n+ \"1633\": 108,\n+ \"1777\": 73,\n+ \"66336\": 108,\n+ \"125127\": 108,\n+ \"120783\": 73,\n+ \"120793\": 73,\n+ \"120803\": 73,\n+ \"120813\": 73,\n+ \"120823\": 73,\n+ \"130033\": 73,\n+ \"65321\": 73,\n+ \"8544\": 73,\n+ \"8464\": 73,\n+ \"8465\": 73,\n+ \"119816\": 73,\n+ \"119868\": 73,\n+ \"119920\": 73,\n+ \"120024\": 73,\n+ \"120128\": 73,\n+ \"120180\": 73,\n+ \"120232\": 73,\n+ \"120284\": 73,\n+ \"120336\": 73,\n+ \"120388\": 73,\n+ \"120440\": 73,\n+ \"65356\": 108,\n+ \"8572\": 73,\n+ \"8467\": 108,\n+ \"119845\": 108,\n+ \"119897\": 108,\n+ \"119949\": 108,\n+ \"120001\": 108,\n+ \"120053\": 108,\n+ \"120105\": 73,\n+ \"120157\": 73,\n+ \"120209\": 73,\n+ \"120261\": 73,\n+ \"120313\": 73,\n+ \"120365\": 73,\n+ \"120417\": 73,\n+ \"120469\": 73,\n+ \"448\": 73,\n+ \"120496\": 73,\n+ \"120554\": 73,\n+ \"120612\": 73,\n+ \"120670\": 73,\n+ \"120728\": 73,\n+ \"11410\": 73,\n+ \"1030\": 73,\n+ \"1216\": 73,\n+ \"1493\": 108,\n+ \"1503\": 108,\n+ \"1575\": 108,\n+ \"126464\": 108,\n+ \"126592\": 108,\n+ \"65166\": 108,\n+ \"65165\": 108,\n+ \"1994\": 108,\n+ \"11599\": 73,\n+ \"5825\": 73,\n+ \"42226\": 73,\n+ \"93992\": 73,\n+ \"66186\": 124,\n+ \"66313\": 124,\n+ \"119338\": 76,\n+ \"8556\": 76,\n+ \"8466\": 76,\n+ \"119819\": 76,\n+ \"119871\": 76,\n+ \"119923\": 76,\n+ \"120027\": 76,\n+ \"120079\": 76,\n+ \"120131\": 76,\n+ \"120183\": 76,\n+ \"120235\": 76,\n+ \"120287\": 76,\n+ \"120339\": 76,\n+ \"120391\": 76,\n+ \"120443\": 76,\n+ \"11472\": 76,\n+ \"5086\": 76,\n+ \"5290\": 76,\n+ \"42209\": 76,\n+ \"93974\": 76,\n+ \"71843\": 76,\n+ \"71858\": 76,\n+ \"66587\": 76,\n+ \"66854\": 76,\n+ \"65325\": 77,\n+ \"8559\": 77,\n+ \"8499\": 77,\n+ \"119820\": 77,\n+ \"119872\": 77,\n+ \"119924\": 77,\n+ \"120028\": 77,\n+ \"120080\": 77,\n+ \"120132\": 77,\n+ \"120184\": 77,\n+ \"120236\": 77,\n+ \"120288\": 77,\n+ \"120340\": 77,\n+ \"120392\": 77,\n+ \"120444\": 77,\n+ \"924\": 77,\n+ \"120499\": 77,\n+ \"120557\": 77,\n+ \"120615\": 77,\n+ \"120673\": 77,\n+ \"120731\": 77,\n+ \"1018\": 77,\n+ \"11416\": 77,\n+ \"5047\": 77,\n+ \"5616\": 77,\n+ \"5846\": 77,\n+ \"42207\": 77,\n+ \"66224\": 77,\n+ \"66321\": 77,\n+ \"119847\": 110,\n+ \"119899\": 110,\n+ \"119951\": 110,\n+ \"120003\": 110,\n+ \"120055\": 110,\n+ \"120107\": 110,\n+ \"120159\": 110,\n+ \"120211\": 110,\n+ \"120263\": 110,\n+ \"120315\": 110,\n+ \"120367\": 110,\n+ \"120419\": 110,\n+ \"120471\": 110,\n+ \"1400\": 110,\n+ \"1404\": 110,\n+ \"65326\": 78,\n+ \"8469\": 78,\n+ \"119821\": 78,\n+ \"119873\": 78,\n+ \"119925\": 78,\n+ \"119977\": 78,\n+ \"120029\": 78,\n+ \"120081\": 78,\n+ \"120185\": 78,\n+ \"120237\": 78,\n+ \"120289\": 78,\n+ \"120341\": 78,\n+ \"120393\": 78,\n+ \"120445\": 78,\n+ \"925\": 78,\n+ \"120500\": 78,\n+ \"120558\": 78,\n+ \"120616\": 78,\n+ \"120674\": 78,\n+ \"120732\": 78,\n+ \"11418\": 78,\n+ \"42208\": 78,\n+ \"66835\": 78,\n+ \"3074\": 111,\n+ \"3202\": 111,\n+ \"3330\": 111,\n+ \"3458\": 111,\n+ \"2406\": 111,\n+ \"2662\": 111,\n+ \"2790\": 111,\n+ \"3046\": 111,\n+ \"3174\": 111,\n+ \"3302\": 111,\n+ \"3430\": 111,\n+ \"3664\": 111,\n+ \"3792\": 111,\n+ \"4160\": 111,\n+ \"1637\": 111,\n+ \"1781\": 111,\n+ \"65359\": 111,\n+ \"8500\": 111,\n+ \"119848\": 111,\n+ \"119900\": 111,\n+ \"119952\": 111,\n+ \"120056\": 111,\n+ \"120108\": 111,\n+ \"120160\": 111,\n+ \"120212\": 111,\n+ \"120264\": 111,\n+ \"120316\": 111,\n+ \"120368\": 111,\n+ \"120420\": 111,\n+ \"120472\": 111,\n+ \"7439\": 111,\n+ \"7441\": 111,\n+ \"43837\": 111,\n+ \"959\": 111,\n+ \"120528\": 111,\n+ \"120586\": 111,\n+ \"120644\": 111,\n+ \"120702\": 111,\n+ \"120760\": 111,\n+ \"963\": 111,\n+ \"120532\": 111,\n+ \"120590\": 111,\n+ \"120648\": 111,\n+ \"120706\": 111,\n+ \"120764\": 111,\n+ \"11423\": 111,\n+ \"4351\": 111,\n+ \"1413\": 111,\n+ \"1505\": 111,\n+ \"1607\": 111,\n+ \"126500\": 111,\n+ \"126564\": 111,\n+ \"126596\": 111,\n+ \"65259\": 111,\n+ \"65260\": 111,\n+ \"65258\": 111,\n+ \"65257\": 111,\n+ \"1726\": 111,\n+ \"64428\": 111,\n+ \"64429\": 111,\n+ \"64427\": 111,\n+ \"64426\": 111,\n+ \"1729\": 111,\n+ \"64424\": 111,\n+ \"64425\": 111,\n+ \"64423\": 111,\n+ \"64422\": 111,\n+ \"1749\": 111,\n+ \"3360\": 111,\n+ \"4125\": 111,\n+ \"66794\": 111,\n+ \"71880\": 111,\n+ \"71895\": 111,\n+ \"66604\": 111,\n+ \"1984\": 79,\n+ \"2534\": 79,\n+ \"2918\": 79,\n+ \"12295\": 79,\n+ \"70864\": 79,\n+ \"71904\": 79,\n+ \"120782\": 79,\n+ \"120792\": 79,\n+ \"120802\": 79,\n+ \"120812\": 79,\n+ \"120822\": 79,\n+ \"130032\": 79,\n+ \"65327\": 79,\n+ \"119822\": 79,\n+ \"119874\": 79,\n+ \"119926\": 79,\n+ \"119978\": 79,\n+ \"120030\": 79,\n+ \"120082\": 79,\n+ \"120134\": 79,\n+ \"120186\": 79,\n+ \"120238\": 79,\n+ \"120290\": 79,\n+ \"120342\": 79,\n+ \"120394\": 79,\n+ \"120446\": 79,\n+ \"927\": 79,\n+ \"120502\": 79,\n+ \"120560\": 79,\n+ \"120618\": 79,\n+ \"120676\": 79,\n+ \"120734\": 79,\n+ \"11422\": 79,\n+ \"1365\": 79,\n+ \"11604\": 79,\n+ \"4816\": 79,\n+ \"2848\": 79,\n+ \"66754\": 79,\n+ \"42227\": 79,\n+ \"71861\": 79,\n+ \"66194\": 79,\n+ \"66219\": 79,\n+ \"66564\": 79,\n+ \"66838\": 79,\n+ \"9076\": 112,\n+ \"65360\": 112,\n+ \"119849\": 112,\n+ \"119901\": 112,\n+ \"119953\": 112,\n+ \"120005\": 112,\n+ \"120057\": 112,\n+ \"120109\": 112,\n+ \"120161\": 112,\n+ \"120213\": 112,\n+ \"120265\": 112,\n+ \"120317\": 112,\n+ \"120369\": 112,\n+ \"120421\": 112,\n+ \"120473\": 112,\n+ \"961\": 112,\n+ \"120530\": 112,\n+ \"120544\": 112,\n+ \"120588\": 112,\n+ \"120602\": 112,\n+ \"120646\": 112,\n+ \"120660\": 112,\n+ \"120704\": 112,\n+ \"120718\": 112,\n+ \"120762\": 112,\n+ \"120776\": 112,\n+ \"11427\": 112,\n+ \"65328\": 80,\n+ \"8473\": 80,\n+ \"119823\": 80,\n+ \"119875\": 80,\n+ \"119927\": 80,\n+ \"119979\": 80,\n+ \"120031\": 80,\n+ \"120083\": 80,\n+ \"120187\": 80,\n+ \"120239\": 80,\n+ \"120291\": 80,\n+ \"120343\": 80,\n+ \"120395\": 80,\n+ \"120447\": 80,\n+ \"929\": 80,\n+ \"120504\": 80,\n+ \"120562\": 80,\n+ \"120620\": 80,\n+ \"120678\": 80,\n+ \"120736\": 80,\n+ \"11426\": 80,\n+ \"5090\": 80,\n+ \"5229\": 80,\n+ \"42193\": 80,\n+ \"66197\": 80,\n+ \"119850\": 113,\n+ \"119902\": 113,\n+ \"119954\": 113,\n+ \"120006\": 113,\n+ \"120058\": 113,\n+ \"120110\": 113,\n+ \"120162\": 113,\n+ \"120214\": 113,\n+ \"120266\": 113,\n+ \"120318\": 113,\n+ \"120370\": 113,\n+ \"120422\": 113,\n+ \"120474\": 113,\n+ \"1307\": 113,\n+ \"1379\": 113,\n+ \"1382\": 113,\n+ \"8474\": 81,\n+ \"119824\": 81,\n+ \"119876\": 81,\n+ \"119928\": 81,\n+ \"119980\": 81,\n+ \"120032\": 81,\n+ \"120084\": 81,\n+ \"120188\": 81,\n+ \"120240\": 81,\n+ \"120292\": 81,\n+ \"120344\": 81,\n+ \"120396\": 81,\n+ \"120448\": 81,\n+ \"11605\": 81,\n+ \"119851\": 114,\n+ \"119903\": 114,\n+ \"119955\": 114,\n+ \"120007\": 114,\n+ \"120059\": 114,\n+ \"120111\": 114,\n+ \"120163\": 114,\n+ \"120215\": 114,\n+ \"120267\": 114,\n+ \"120319\": 114,\n+ \"120371\": 114,\n+ \"120423\": 114,\n+ \"120475\": 114,\n+ \"43847\": 114,\n+ \"43848\": 114,\n+ \"7462\": 114,\n+ \"11397\": 114,\n+ \"43905\": 114,\n+ \"119318\": 82,\n+ \"8475\": 82,\n+ \"8476\": 82,\n+ \"8477\": 82,\n+ \"119825\": 82,\n+ \"119877\": 82,\n+ \"119929\": 82,\n+ \"120033\": 82,\n+ \"120189\": 82,\n+ \"120241\": 82,\n+ \"120293\": 82,\n+ \"120345\": 82,\n+ \"120397\": 82,\n+ \"120449\": 82,\n+ \"422\": 82,\n+ \"5025\": 82,\n+ \"5074\": 82,\n+ \"66740\": 82,\n+ \"5511\": 82,\n+ \"42211\": 82,\n+ \"94005\": 82,\n+ \"65363\": 115,\n+ \"119852\": 115,\n+ \"119904\": 115,\n+ \"119956\": 115,\n+ \"120008\": 115,\n+ \"120060\": 115,\n+ \"120112\": 115,\n+ \"120164\": 115,\n+ \"120216\": 115,\n+ \"120268\": 115,\n+ \"120320\": 115,\n+ \"120372\": 115,\n+ \"120424\": 115,\n+ \"120476\": 115,\n+ \"42801\": 115,\n+ \"445\": 115,\n+ \"1109\": 115,\n+ \"43946\": 115,\n+ \"71873\": 115,\n+ \"66632\": 115,\n+ \"65331\": 83,\n+ \"119826\": 83,\n+ \"119878\": 83,\n+ \"119930\": 83,\n+ \"119982\": 83,\n+ \"120034\": 83,\n+ \"120086\": 83,\n+ \"120138\": 83,\n+ \"120190\": 83,\n+ \"120242\": 83,\n+ \"120294\": 83,\n+ \"120346\": 83,\n+ \"120398\": 83,\n+ \"120450\": 83,\n+ \"1029\": 83,\n+ \"1359\": 83,\n+ \"5077\": 83,\n+ \"5082\": 83,\n+ \"42210\": 83,\n+ \"94010\": 83,\n+ \"66198\": 83,\n+ \"66592\": 83,\n+ \"119853\": 116,\n+ \"119905\": 116,\n+ \"119957\": 116,\n+ \"120009\": 116,\n+ \"120061\": 116,\n+ \"120113\": 116,\n+ \"120165\": 116,\n+ \"120217\": 116,\n+ \"120269\": 116,\n+ \"120321\": 116,\n+ \"120373\": 116,\n+ \"120425\": 116,\n+ \"120477\": 116,\n+ \"8868\": 84,\n+ \"10201\": 84,\n+ \"128872\": 84,\n+ \"65332\": 84,\n+ \"119827\": 84,\n+ \"119879\": 84,\n+ \"119931\": 84,\n+ \"119983\": 84,\n+ \"120035\": 84,\n+ \"120087\": 84,\n+ \"120139\": 84,\n+ \"120191\": 84,\n+ \"120243\": 84,\n+ \"120295\": 84,\n+ \"120347\": 84,\n+ \"120399\": 84,\n+ \"120451\": 84,\n+ \"932\": 84,\n+ \"120507\": 84,\n+ \"120565\": 84,\n+ \"120623\": 84,\n+ \"120681\": 84,\n+ \"120739\": 84,\n+ \"11430\": 84,\n+ \"5026\": 84,\n+ \"42196\": 84,\n+ \"93962\": 84,\n+ \"71868\": 84,\n+ \"66199\": 84,\n+ \"66225\": 84,\n+ \"66325\": 84,\n+ \"119854\": 117,\n+ \"119906\": 117,\n+ \"119958\": 117,\n+ \"120010\": 117,\n+ \"120062\": 117,\n+ \"120114\": 117,\n+ \"120166\": 117,\n+ \"120218\": 117,\n+ \"120270\": 117,\n+ \"120322\": 117,\n+ \"120374\": 117,\n+ \"120426\": 117,\n+ \"120478\": 117,\n+ \"42911\": 117,\n+ \"7452\": 117,\n+ \"43854\": 117,\n+ \"43858\": 117,\n+ \"651\": 117,\n+ \"965\": 117,\n+ \"120534\": 117,\n+ \"120592\": 117,\n+ \"120650\": 117,\n+ \"120708\": 117,\n+ \"120766\": 117,\n+ \"1405\": 117,\n+ \"66806\": 117,\n+ \"71896\": 117,\n+ \"8746\": 85,\n+ \"8899\": 85,\n+ \"119828\": 85,\n+ \"119880\": 85,\n+ \"119932\": 85,\n+ \"119984\": 85,\n+ \"120036\": 85,\n+ \"120088\": 85,\n+ \"120140\": 85,\n+ \"120192\": 85,\n+ \"120244\": 85,\n+ \"120296\": 85,\n+ \"120348\": 85,\n+ \"120400\": 85,\n+ \"120452\": 85,\n+ \"1357\": 85,\n+ \"4608\": 85,\n+ \"66766\": 85,\n+ \"5196\": 85,\n+ \"42228\": 85,\n+ \"94018\": 85,\n+ \"71864\": 85,\n+ \"8744\": 118,\n+ \"8897\": 118,\n+ \"65366\": 118,\n+ \"8564\": 118,\n+ \"119855\": 118,\n+ \"119907\": 118,\n+ \"119959\": 118,\n+ \"120011\": 118,\n+ \"120063\": 118,\n+ \"120115\": 118,\n+ \"120167\": 118,\n+ \"120219\": 118,\n+ \"120271\": 118,\n+ \"120323\": 118,\n+ \"120375\": 118,\n+ \"120427\": 118,\n+ \"120479\": 118,\n+ \"7456\": 118,\n+ \"957\": 118,\n+ \"120526\": 118,\n+ \"120584\": 118,\n+ \"120642\": 118,\n+ \"120700\": 118,\n+ \"120758\": 118,\n+ \"1141\": 118,\n+ \"1496\": 118,\n+ \"71430\": 118,\n+ \"43945\": 118,\n+ \"71872\": 118,\n+ \"119309\": 86,\n+ \"1639\": 86,\n+ \"1783\": 86,\n+ \"8548\": 86,\n+ \"119829\": 86,\n+ \"119881\": 86,\n+ \"119933\": 86,\n+ \"119985\": 86,\n+ \"120037\": 86,\n+ \"120089\": 86,\n+ \"120141\": 86,\n+ \"120193\": 86,\n+ \"120245\": 86,\n+ \"120297\": 86,\n+ \"120349\": 86,\n+ \"120401\": 86,\n+ \"120453\": 86,\n+ \"1140\": 86,\n+ \"11576\": 86,\n+ \"5081\": 86,\n+ \"5167\": 86,\n+ \"42719\": 86,\n+ \"42214\": 86,\n+ \"93960\": 86,\n+ \"71840\": 86,\n+ \"66845\": 86,\n+ \"623\": 119,\n+ \"119856\": 119,\n+ \"119908\": 119,\n+ \"119960\": 119,\n+ \"120012\": 119,\n+ \"120064\": 119,\n+ \"120116\": 119,\n+ \"120168\": 119,\n+ \"120220\": 119,\n+ \"120272\": 119,\n+ \"120324\": 119,\n+ \"120376\": 119,\n+ \"120428\": 119,\n+ \"120480\": 119,\n+ \"7457\": 119,\n+ \"1121\": 119,\n+ \"1309\": 119,\n+ \"1377\": 119,\n+ \"71434\": 119,\n+ \"71438\": 119,\n+ \"71439\": 119,\n+ \"43907\": 119,\n+ \"71919\": 87,\n+ \"71910\": 87,\n+ \"119830\": 87,\n+ \"119882\": 87,\n+ \"119934\": 87,\n+ \"119986\": 87,\n+ \"120038\": 87,\n+ \"120090\": 87,\n+ \"120142\": 87,\n+ \"120194\": 87,\n+ \"120246\": 87,\n+ \"120298\": 87,\n+ \"120350\": 87,\n+ \"120402\": 87,\n+ \"120454\": 87,\n+ \"1308\": 87,\n+ \"5043\": 87,\n+ \"5076\": 87,\n+ \"42218\": 87,\n+ \"5742\": 120,\n+ \"10539\": 120,\n+ \"10540\": 120,\n+ \"10799\": 120,\n+ \"65368\": 120,\n+ \"8569\": 120,\n+ \"119857\": 120,\n+ \"119909\": 120,\n+ \"119961\": 120,\n+ \"120013\": 120,\n+ \"120065\": 120,\n+ \"120117\": 120,\n+ \"120169\": 120,\n+ \"120221\": 120,\n+ \"120273\": 120,\n+ \"120325\": 120,\n+ \"120377\": 120,\n+ \"120429\": 120,\n+ \"120481\": 120,\n+ \"5441\": 120,\n+ \"5501\": 120,\n+ \"5741\": 88,\n+ \"9587\": 88,\n+ \"66338\": 88,\n+ \"71916\": 88,\n+ \"65336\": 88,\n+ \"8553\": 88,\n+ \"119831\": 88,\n+ \"119883\": 88,\n+ \"119935\": 88,\n+ \"119987\": 88,\n+ \"120039\": 88,\n+ \"120091\": 88,\n+ \"120143\": 88,\n+ \"120195\": 88,\n+ \"120247\": 88,\n+ \"120299\": 88,\n+ \"120351\": 88,\n+ \"120403\": 88,\n+ \"120455\": 88,\n+ \"42931\": 88,\n+ \"935\": 88,\n+ \"120510\": 88,\n+ \"120568\": 88,\n+ \"120626\": 88,\n+ \"120684\": 88,\n+ \"120742\": 88,\n+ \"11436\": 88,\n+ \"11613\": 88,\n+ \"5815\": 88,\n+ \"42219\": 88,\n+ \"66192\": 88,\n+ \"66228\": 88,\n+ \"66327\": 88,\n+ \"66855\": 88,\n+ \"611\": 121,\n+ \"7564\": 121,\n+ \"65369\": 121,\n+ \"119858\": 121,\n+ \"119910\": 121,\n+ \"119962\": 121,\n+ \"120014\": 121,\n+ \"120066\": 121,\n+ \"120118\": 121,\n+ \"120170\": 121,\n+ \"120222\": 121,\n+ \"120274\": 121,\n+ \"120326\": 121,\n+ \"120378\": 121,\n+ \"120430\": 121,\n+ \"120482\": 121,\n+ \"655\": 121,\n+ \"7935\": 121,\n+ \"43866\": 121,\n+ \"947\": 121,\n+ \"8509\": 121,\n+ \"120516\": 121,\n+ \"120574\": 121,\n+ \"120632\": 121,\n+ \"120690\": 121,\n+ \"120748\": 121,\n+ \"1199\": 121,\n+ \"4327\": 121,\n+ \"71900\": 121,\n+ \"65337\": 89,\n+ \"119832\": 89,\n+ \"119884\": 89,\n+ \"119936\": 89,\n+ \"119988\": 89,\n+ \"120040\": 89,\n+ \"120092\": 89,\n+ \"120144\": 89,\n+ \"120196\": 89,\n+ \"120248\": 89,\n+ \"120300\": 89,\n+ \"120352\": 89,\n+ \"120404\": 89,\n+ \"120456\": 89,\n+ \"933\": 89,\n+ \"978\": 89,\n+ \"120508\": 89,\n+ \"120566\": 89,\n+ \"120624\": 89,\n+ \"120682\": 89,\n+ \"120740\": 89,\n+ \"11432\": 89,\n+ \"1198\": 89,\n+ \"5033\": 89,\n+ \"5053\": 89,\n+ \"42220\": 89,\n+ \"94019\": 89,\n+ \"71844\": 89,\n+ \"66226\": 89,\n+ \"119859\": 122,\n+ \"119911\": 122,\n+ \"119963\": 122,\n+ \"120015\": 122,\n+ \"120067\": 122,\n+ \"120119\": 122,\n+ \"120171\": 122,\n+ \"120223\": 122,\n+ \"120275\": 122,\n+ \"120327\": 122,\n+ \"120379\": 122,\n+ \"120431\": 122,\n+ \"120483\": 122,\n+ \"7458\": 122,\n+ \"43923\": 122,\n+ \"71876\": 122,\n+ \"66293\": 90,\n+ \"71909\": 90,\n+ \"65338\": 90,\n+ \"8484\": 90,\n+ \"8488\": 90,\n+ \"119833\": 90,\n+ \"119885\": 90,\n+ \"119937\": 90,\n+ \"119989\": 90,\n+ \"120041\": 90,\n+ \"120197\": 90,\n+ \"120249\": 90,\n+ \"120301\": 90,\n+ \"120353\": 90,\n+ \"120405\": 90,\n+ \"120457\": 90,\n+ \"918\": 90,\n+ \"120493\": 90,\n+ \"120551\": 90,\n+ \"120609\": 90,\n+ \"120667\": 90,\n+ \"120725\": 90,\n+ \"5059\": 90,\n+ \"42204\": 90,\n+ \"71849\": 90,\n+ \"65282\": 34,\n+ \"65284\": 36,\n+ \"65285\": 37,\n+ \"65286\": 38,\n+ \"65290\": 42,\n+ \"65291\": 43,\n+ \"65294\": 46,\n+ \"65295\": 47,\n+ \"65296\": 48,\n+ \"65297\": 49,\n+ \"65298\": 50,\n+ \"65299\": 51,\n+ \"65300\": 52,\n+ \"65301\": 53,\n+ \"65302\": 54,\n+ \"65303\": 55,\n+ \"65304\": 56,\n+ \"65305\": 57,\n+ \"65308\": 60,\n+ \"65309\": 61,\n+ \"65310\": 62,\n+ \"65312\": 64,\n+ \"65316\": 68,\n+ \"65318\": 70,\n+ \"65319\": 71,\n+ \"65324\": 76,\n+ \"65329\": 81,\n+ \"65330\": 82,\n+ \"65333\": 85,\n+ \"65334\": 86,\n+ \"65335\": 87,\n+ \"65343\": 95,\n+ \"65346\": 98,\n+ \"65348\": 100,\n+ \"65350\": 102,\n+ \"65355\": 107,\n+ \"65357\": 109,\n+ \"65358\": 110,\n+ \"65361\": 113,\n+ \"65362\": 114,\n+ \"65364\": 116,\n+ \"65365\": 117,\n+ \"65367\": 119,\n+ \"65370\": 122,\n+ \"65371\": 123,\n+ \"65373\": 125,\n+ \"160\": 32,\n+ \"8211\": 45,\n+ \"65374\": 126,\n+ \"65306\": 58,\n+ \"65281\": 33,\n+ \"8216\": 96,\n+ \"8217\": 96,\n+ \"8245\": 96,\n+ \"180\": 96,\n+ \"12494\": 47,\n+ \"1047\": 51,\n+ \"1073\": 54,\n+ \"1072\": 97,\n+ \"1040\": 65,\n+ \"1068\": 98,\n+ \"1042\": 66,\n+ \"1089\": 99,\n+ \"1057\": 67,\n+ \"1077\": 101,\n+ \"1045\": 69,\n+ \"1053\": 72,\n+ \"305\": 105,\n+ \"1050\": 75,\n+ \"921\": 73,\n+ \"1052\": 77,\n+ \"1086\": 111,\n+ \"1054\": 79,\n+ \"1009\": 112,\n+ \"1088\": 112,\n+ \"1056\": 80,\n+ \"1075\": 114,\n+ \"1058\": 84,\n+ \"215\": 120,\n+ \"1093\": 120,\n+ \"1061\": 88,\n+ \"1091\": 121,\n+ \"1059\": 89,\n+ \"65283\": 35,\n+ \"65288\": 40,\n+ \"65289\": 41,\n+ \"65292\": 44,\n+ \"65307\": 59,\n+ \"65311\": 63,\n+}" + }, + { + "sha": "22281494af57c6e679d6a0e931cb91790943305e", + "filename": "test.py", + "status": "modified", + "additions": 21, + "deletions": 1, + "changes": 22, + "blob_url": "https://github.com/un33k/python-slugify/blob/45b2915785b4754158d1fbab7d67567de98e473a/test.py", + "raw_url": "https://github.com/un33k/python-slugify/raw/45b2915785b4754158d1fbab7d67567de98e473a/test.py", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/test.py?ref=45b2915785b4754158d1fbab7d67567de98e473a", + "patch": "@@ -520,6 +520,24 @@ def test_emojis(self):\n r = slugify(txt, allow_unicode=True, regex_pattern=r'[^🦄]+')\n self.assertEqual(r, \"🦄\")\n \n+ def test_replace_ambiguous_characters(self):\n+ \"\"\"\n+ replace_ambiguous_characters should replace all ambiguous characters\n+ even when allow_unicode is False\n+ \"\"\"\n+\n+ txt = '𝙎 𝙇 𝙊 𝙒 𝙀 𝘿 + 𝙍 𝙀 𝙑 𝙀 𝙍 𝘽'\n+ r = slugify(txt, replace_ambiguous_characters=True, allow_unicode=False)\n+ self.assertEqual(r, \"s-l-o-w-e-d-r-e-v-e-r-b\")\n+\n+ txt = 'i love 🦄'\n+ r = slugify(txt, replace_ambiguous_characters=True)\n+ self.assertEqual(r, \"i-love\")\n+\n+ txt = 'test 𝘿𝘿𝘿𝘿𝘿𝘿𝘿𝘿𝘿𝘿𝘿𝘿'\n+ r = slugify(txt, replace_ambiguous_characters=True)\n+ self.assertEqual(r, \"test-dddddddddddd\")\n+\n \n class TestUtils(unittest.TestCase):\n \n@@ -568,7 +586,8 @@ class TestCommandParams(unittest.TestCase):\n 'separator': '-',\n 'stopwords': None,\n 'lowercase': True,\n- 'replacements': None\n+ 'replacements': None,\n+ 'replace_ambiguous_characters': False,\n }\n \n def get_params_from_cli(self, *argv):\n@@ -593,6 +612,7 @@ def test_negative_flags(self):\n expected = self.make_params(entities=False, decimal=False, hexadecimal=False, lowercase=False)\n self.assertFalse(expected['lowercase'])\n self.assertFalse(expected['word_boundary'])\n+ self.assertFalse(expected['replace_ambiguous_characters'])\n self.assertParamsMatch(expected, params)\n \n def test_affirmative_flags(self):" + } + ], + "129": [ + { + "sha": "56e40973104ea6eaf77cd422ba82e454b49284a3", + "filename": ".github/workflows/ci.yml", + "status": "modified", + "additions": 3, + "deletions": 3, + "changes": 6, + "blob_url": "https://github.com/un33k/python-slugify/blob/5eaaea2fe267861aa508d8c683855c4e9bc1cc6b/.github%2Fworkflows%2Fci.yml", + "raw_url": "https://github.com/un33k/python-slugify/raw/5eaaea2fe267861aa508d8c683855c4e9bc1cc6b/.github%2Fworkflows%2Fci.yml", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/.github%2Fworkflows%2Fci.yml?ref=5eaaea2fe267861aa508d8c683855c4e9bc1cc6b", + "patch": "@@ -14,12 +14,12 @@ jobs:\n runs-on: ubuntu-latest\n strategy:\n matrix:\n- python: [3.6, 3.7, 3.8, 3.9, \"3.10\", pypy3]\n+ python: [3.7, 3.8, 3.9, \"3.10\", 3.11, pypy3.8]\n \n steps:\n- - uses: actions/checkout@v2\n+ - uses: actions/checkout@v3\n - name: setup python\n- uses: actions/setup-python@v2\n+ uses: actions/setup-python@v4\n with:\n python-version: ${{ matrix.python }}\n - name: Install dependencies" + }, + { + "sha": "73f2f071384c5fdf47cea1a9be3ac20b3c7e8e46", + "filename": ".github/workflows/dev.yml", + "status": "modified", + "additions": 3, + "deletions": 3, + "changes": 6, + "blob_url": "https://github.com/un33k/python-slugify/blob/5eaaea2fe267861aa508d8c683855c4e9bc1cc6b/.github%2Fworkflows%2Fdev.yml", + "raw_url": "https://github.com/un33k/python-slugify/raw/5eaaea2fe267861aa508d8c683855c4e9bc1cc6b/.github%2Fworkflows%2Fdev.yml", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/.github%2Fworkflows%2Fdev.yml?ref=5eaaea2fe267861aa508d8c683855c4e9bc1cc6b", + "patch": "@@ -14,12 +14,12 @@ jobs:\n runs-on: ubuntu-latest\n strategy:\n matrix:\n- python: [3.6, 3.7, 3.8, 3.9, \"3.10\", pypy3]\n+ python: [3.7, 3.8, 3.9, \"3.10\", 3.11, pypy3.8]\n \n steps:\n- - uses: actions/checkout@v2\n+ - uses: actions/checkout@v3\n - name: setup python\n- uses: actions/setup-python@v2\n+ uses: actions/setup-python@v4\n with:\n python-version: ${{ matrix.python }}\n - name: Install dependencies" + }, + { + "sha": "a4ae9ad5856f0bad5a01bcc53416b35d5689a466", + "filename": ".github/workflows/main.yml", + "status": "modified", + "additions": 3, + "deletions": 3, + "changes": 6, + "blob_url": "https://github.com/un33k/python-slugify/blob/5eaaea2fe267861aa508d8c683855c4e9bc1cc6b/.github%2Fworkflows%2Fmain.yml", + "raw_url": "https://github.com/un33k/python-slugify/raw/5eaaea2fe267861aa508d8c683855c4e9bc1cc6b/.github%2Fworkflows%2Fmain.yml", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/.github%2Fworkflows%2Fmain.yml?ref=5eaaea2fe267861aa508d8c683855c4e9bc1cc6b", + "patch": "@@ -13,12 +13,12 @@ jobs:\n runs-on: ubuntu-latest\n strategy:\n matrix:\n- python: [3.6, 3.7, 3.8, 3.9, \"3.10\", pypy3]\n+ python: [3.7, 3.8, 3.9, \"3.10\", 3.11, pypy3.8]\n \n steps:\n- - uses: actions/checkout@v2\n+ - uses: actions/checkout@v3\n - name: setup python\n- uses: actions/setup-python@v2\n+ uses: actions/setup-python@v4\n with:\n python-version: ${{ matrix.python }}\n - name: Install dependencies" + }, + { + "sha": "e5e9ffb53cd3e2de185a23eb253dce5d601e1f27", + "filename": "CHANGELOG.md", + "status": "modified", + "additions": 12, + "deletions": 0, + "changes": 12, + "blob_url": "https://github.com/un33k/python-slugify/blob/5eaaea2fe267861aa508d8c683855c4e9bc1cc6b/CHANGELOG.md", + "raw_url": "https://github.com/un33k/python-slugify/raw/5eaaea2fe267861aa508d8c683855c4e9bc1cc6b/CHANGELOG.md", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/CHANGELOG.md?ref=5eaaea2fe267861aa508d8c683855c4e9bc1cc6b", + "patch": "@@ -1,3 +1,15 @@\n+## 8.0.0\n+\n+- By default, prefer unidecode if installed (@enkidulan - thx)\n+\n+## 7.0.0\n+\n+- Drop python 3.6, add python 3.11 (@hugovk - thx)\n+\n+## 6.1.2\n+\n+- Reintroduce the cli options\n+\n ## 6.1.1\n \n - Remove type hinting (temporarily)" + }, + { + "sha": "64b92043e595611cd85bb0c83d7f4f6d14659261", + "filename": "README.md", + "status": "modified", + "additions": 11, + "deletions": 4, + "changes": 15, + "blob_url": "https://github.com/un33k/python-slugify/blob/5eaaea2fe267861aa508d8c683855c4e9bc1cc6b/README.md", + "raw_url": "https://github.com/un33k/python-slugify/raw/5eaaea2fe267861aa508d8c683855c4e9bc1cc6b/README.md", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/README.md?ref=5eaaea2fe267861aa508d8c683855c4e9bc1cc6b", + "patch": "@@ -14,12 +14,15 @@\n \n This module, by default installs and uses [text-unidecode](https://github.com/kmike/text-unidecode) _(GPL & Perl Artistic)_ for its decoding needs.\n \n-However, there is an alternative decoding package called [Unidecode](https://github.com/avian2/unidecode) _(GPL)_. It can be installed as `python-slugify[unidecode]` for those who prefer it.\n+However, there is an alternative decoding package called [Unidecode](https://github.com/avian2/unidecode) _(GPL)_. It can be installed as `python-slugify[unidecode]` for those who prefer it. `Unidecode` is believed to be more advanced.\n \n-### Python Versions & `Official` Support\n+### `Official` Support Matrix\n \n-- Python `2.7` <-> python-slugify `< 5.0.0`\n-- Python `3.6+` <-> python-slugify `>= 5.0.0`\n+| Python | Slugify |\n+| -------------- | ------------------ |\n+| `>= 2.7 < 3.6` | `< 5.0.0` |\n+| `>= 3.6 < 3.7` | `>= 5.0.0 < 7.0.0` |\n+| `>= 3.7` | `>= 7.0.0` |\n \n # How to install\n \n@@ -190,6 +193,10 @@ Please read the ([wiki](https://github.com/un33k/python-slugify/wiki/Python-Slug\n \n Released under a ([MIT](LICENSE)) license.\n \n+### Notes on GPL dependencies\n+Though the dependencies may be GPL licensed, `python-slugify` itself is not considered a derivative work and will remain under the MIT license. \n+If you wish to avoid installation of any GPL licensed packages, please note that the default dependency `text-unidecode` explicitly lets you choose to use the [Artistic License](https://opensource.org/license/artistic-perl-1-0-2/) instead. Use without concern.\n+\n # Version\n \n X.Y.Z Version" + }, + { + "sha": "5f94d7bdfb03c89e960917feeb613c76a5a01fad", + "filename": "dev.requirements.txt", + "status": "modified", + "additions": 1, + "deletions": 1, + "changes": 2, + "blob_url": "https://github.com/un33k/python-slugify/blob/5eaaea2fe267861aa508d8c683855c4e9bc1cc6b/dev.requirements.txt", + "raw_url": "https://github.com/un33k/python-slugify/raw/5eaaea2fe267861aa508d8c683855c4e9bc1cc6b/dev.requirements.txt", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/dev.requirements.txt?ref=5eaaea2fe267861aa508d8c683855c4e9bc1cc6b", + "patch": "@@ -1,3 +1,3 @@\n-pycodestyle==2.7.0\n+pycodestyle==2.8.0\n twine==3.4.1\n flake8==4.0.1\n\\ No newline at end of file" + }, + { + "sha": "3c6e79cf31da1c0433d2fa666bf50b53f6359f26", + "filename": "setup.cfg", + "status": "removed", + "additions": 0, + "deletions": 2, + "changes": 2, + "blob_url": "https://github.com/un33k/python-slugify/blob/0bf1b8761f695e5ae14d9c439a05b151b4a1093d/setup.cfg", + "raw_url": "https://github.com/un33k/python-slugify/raw/0bf1b8761f695e5ae14d9c439a05b151b4a1093d/setup.cfg", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/setup.cfg?ref=0bf1b8761f695e5ae14d9c439a05b151b4a1093d", + "patch": "@@ -1,2 +0,0 @@\n-[bdist_wheel]\n-universal=1" + }, + { + "sha": "65c72f414253b8d515f8c1e8c7a917ffe815f682", + "filename": "setup.py", + "status": "modified", + "additions": 4, + "deletions": 3, + "changes": 7, + "blob_url": "https://github.com/un33k/python-slugify/blob/5eaaea2fe267861aa508d8c683855c4e9bc1cc6b/setup.py", + "raw_url": "https://github.com/un33k/python-slugify/raw/5eaaea2fe267861aa508d8c683855c4e9bc1cc6b/setup.py", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/setup.py?ref=5eaaea2fe267861aa508d8c683855c4e9bc1cc6b", + "patch": "@@ -9,7 +9,7 @@\n \n \n package = 'slugify'\n-python_requires = \">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*\"\n+python_requires = \">=3.7\"\n here = os.path.abspath(os.path.dirname(__file__))\n \n install_requires = ['text-unidecode>=1.3']\n@@ -75,10 +75,11 @@ def status(s):\n 'License :: OSI Approved :: MIT License',\n 'Programming Language :: Python',\n 'Programming Language :: Python :: 3',\n- 'Programming Language :: Python :: 3.6',\n 'Programming Language :: Python :: 3.7',\n 'Programming Language :: Python :: 3.8',\n 'Programming Language :: Python :: 3.9',\n 'Programming Language :: Python :: 3.10',\n- ]\n+ 'Programming Language :: Python :: 3.11',\n+ ],\n+ entry_points={'console_scripts': ['slugify=slugify.__main__:main']},\n )" + }, + { + "sha": "6d3279fb1ac2e9c3febeca395a5f7350d8fa5969", + "filename": "slugify/__init__.py", + "status": "modified", + "additions": 8, + "deletions": 0, + "changes": 8, + "blob_url": "https://github.com/un33k/python-slugify/blob/5eaaea2fe267861aa508d8c683855c4e9bc1cc6b/slugify%2F__init__.py", + "raw_url": "https://github.com/un33k/python-slugify/raw/5eaaea2fe267861aa508d8c683855c4e9bc1cc6b/slugify%2F__init__.py", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/slugify%2F__init__.py?ref=5eaaea2fe267861aa508d8c683855c4e9bc1cc6b", + "patch": "@@ -1,2 +1,10 @@\n from .special import *\n from .slugify import *\n+from .__version__ import __title__\n+from .__version__ import __author__\n+from .__version__ import __author_email__\n+from .__version__ import __description__\n+from .__version__ import __url__\n+from .__version__ import __license__\n+from .__version__ import __copyright__\n+from .__version__ import __version__" + }, + { + "sha": "71caf04c8758cf21a5ad422900cd8436adede3a3", + "filename": "slugify/__version__.py", + "status": "modified", + "additions": 1, + "deletions": 1, + "changes": 2, + "blob_url": "https://github.com/un33k/python-slugify/blob/5eaaea2fe267861aa508d8c683855c4e9bc1cc6b/slugify%2F__version__.py", + "raw_url": "https://github.com/un33k/python-slugify/raw/5eaaea2fe267861aa508d8c683855c4e9bc1cc6b/slugify%2F__version__.py", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/slugify%2F__version__.py?ref=5eaaea2fe267861aa508d8c683855c4e9bc1cc6b", + "patch": "@@ -5,4 +5,4 @@\n __url__ = 'https://github.com/un33k/python-slugify'\n __license__ = 'MIT'\n __copyright__ = 'Copyright 2022 Val Neekman @ Neekware Inc.'\n-__version__ = '6.1.1'\n+__version__ = '8.0.0'" + }, + { + "sha": "5354fa5e447f6e37d6d39aa26740155b2d4e91a4", + "filename": "slugify/slugify.py", + "status": "modified", + "additions": 2, + "deletions": 2, + "changes": 4, + "blob_url": "https://github.com/un33k/python-slugify/blob/5eaaea2fe267861aa508d8c683855c4e9bc1cc6b/slugify%2Fslugify.py", + "raw_url": "https://github.com/un33k/python-slugify/raw/5eaaea2fe267861aa508d8c683855c4e9bc1cc6b/slugify%2Fslugify.py", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/slugify%2Fslugify.py?ref=5eaaea2fe267861aa508d8c683855c4e9bc1cc6b", + "patch": "@@ -4,9 +4,9 @@\n from html.entities import name2codepoint\n \n try:\n- import text_unidecode as unidecode\n-except ImportError:\n import unidecode\n+except ImportError:\n+ import text_unidecode as unidecode\n \n __all__ = ['slugify', 'smart_truncate']\n " + } + ], + "132": [ + { + "sha": "35d619e0559c03c7b1bd6a3a6944faced57e9992", + "filename": ".github/workflows/ci.yml", + "status": "modified", + "additions": 4, + "deletions": 2, + "changes": 6, + "blob_url": "https://github.com/un33k/python-slugify/blob/0247e0548d46d7e481b98f528b5cbaf5c98eb17d/.github%2Fworkflows%2Fci.yml", + "raw_url": "https://github.com/un33k/python-slugify/raw/0247e0548d46d7e481b98f528b5cbaf5c98eb17d/.github%2Fworkflows%2Fci.yml", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/.github%2Fworkflows%2Fci.yml?ref=0247e0548d46d7e481b98f528b5cbaf5c98eb17d", + "patch": "@@ -1,12 +1,14 @@\n name: CI\n \n-# Run on push only for dev/sandbox\n-# Otherwise it may trigger concurrently `push & pull_request` on PRs.\n on:\n push:\n branches:\n - ci\n+ - master\n - staging\n+ pull_request:\n+ branches:\n+ - master\n \n jobs:\n build:" + } + ], + "134": [ + { + "sha": "0969d0ce0ffb4f843a60454e0af6cf302789d827", + "filename": ".github/workflows/ci.yml", + "status": "modified", + "additions": 4, + "deletions": 0, + "changes": 4, + "blob_url": "https://github.com/un33k/python-slugify/blob/60e94b91542fd8c07942b3b76dd65a3151352b4f/.github%2Fworkflows%2Fci.yml", + "raw_url": "https://github.com/un33k/python-slugify/raw/60e94b91542fd8c07942b3b76dd65a3151352b4f/.github%2Fworkflows%2Fci.yml", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/.github%2Fworkflows%2Fci.yml?ref=60e94b91542fd8c07942b3b76dd65a3151352b4f", + "patch": "@@ -38,6 +38,10 @@ jobs:\n - name: Run test\n run: |\n coverage run --source=slugify test.py\n+ - name: Run mypy\n+ run: |\n+ pip install mypy --upgrade\n+ mypy .\n - name: Coveralls\n run: coveralls --service=github\n env:" + }, + { + "sha": "f0c80dee738d743c815bebbb75f5dc914c9b77e1", + "filename": ".github/workflows/dev.yml", + "status": "modified", + "additions": 4, + "deletions": 0, + "changes": 4, + "blob_url": "https://github.com/un33k/python-slugify/blob/60e94b91542fd8c07942b3b76dd65a3151352b4f/.github%2Fworkflows%2Fdev.yml", + "raw_url": "https://github.com/un33k/python-slugify/raw/60e94b91542fd8c07942b3b76dd65a3151352b4f/.github%2Fworkflows%2Fdev.yml", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/.github%2Fworkflows%2Fdev.yml?ref=60e94b91542fd8c07942b3b76dd65a3151352b4f", + "patch": "@@ -38,6 +38,10 @@ jobs:\n - name: Run test\n run: |\n coverage run --source=slugify test.py\n+ - name: Run mypy\n+ run: |\n+ pip install mypy --upgrade\n+ mypy .\n - name: Coveralls\n run: coveralls --service=github\n env:" + }, + { + "sha": "57bff01e41516a530114f305034c5f0f0a5fc95f", + "filename": ".github/workflows/main.yml", + "status": "modified", + "additions": 4, + "deletions": 0, + "changes": 4, + "blob_url": "https://github.com/un33k/python-slugify/blob/60e94b91542fd8c07942b3b76dd65a3151352b4f/.github%2Fworkflows%2Fmain.yml", + "raw_url": "https://github.com/un33k/python-slugify/raw/60e94b91542fd8c07942b3b76dd65a3151352b4f/.github%2Fworkflows%2Fmain.yml", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/.github%2Fworkflows%2Fmain.yml?ref=60e94b91542fd8c07942b3b76dd65a3151352b4f", + "patch": "@@ -37,6 +37,10 @@ jobs:\n - name: Run test\n run: |\n coverage run --source=slugify test.py\n+ - name: Run mypy\n+ run: |\n+ pip install mypy --upgrade\n+ mypy .\n - name: Coveralls\n run: coveralls --service=github\n env:" + }, + { + "sha": "a290c3d21644d46273a7150be325a0149abafcc9", + "filename": "dev.requirements.txt", + "status": "modified", + "additions": 2, + "deletions": 1, + "changes": 3, + "blob_url": "https://github.com/un33k/python-slugify/blob/60e94b91542fd8c07942b3b76dd65a3151352b4f/dev.requirements.txt", + "raw_url": "https://github.com/un33k/python-slugify/raw/60e94b91542fd8c07942b3b76dd65a3151352b4f/dev.requirements.txt", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/dev.requirements.txt?ref=60e94b91542fd8c07942b3b76dd65a3151352b4f", + "patch": "@@ -1,3 +1,4 @@\n pycodestyle==2.8.0\n twine==3.4.1\n-flake8==4.0.1\n\\ No newline at end of file\n+flake8==4.0.1\n+mypy==1.4.1" + }, + { + "sha": "be0671c3399b4825acec800c4200eb2ebcfbbabd", + "filename": "mypy.ini", + "status": "added", + "additions": 2, + "deletions": 0, + "changes": 2, + "blob_url": "https://github.com/un33k/python-slugify/blob/60e94b91542fd8c07942b3b76dd65a3151352b4f/mypy.ini", + "raw_url": "https://github.com/un33k/python-slugify/raw/60e94b91542fd8c07942b3b76dd65a3151352b4f/mypy.ini", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/mypy.ini?ref=60e94b91542fd8c07942b3b76dd65a3151352b4f", + "patch": "@@ -0,0 +1,2 @@\n+[mypy]\n+strict = true" + }, + { + "sha": "4c7ff3864869dc5d8c2d97db6ea18c9ac7e9987c", + "filename": "setup.py", + "status": "modified", + "additions": 8, + "deletions": 5, + "changes": 13, + "blob_url": "https://github.com/un33k/python-slugify/blob/60e94b91542fd8c07942b3b76dd65a3151352b4f/setup.py", + "raw_url": "https://github.com/un33k/python-slugify/raw/60e94b91542fd8c07942b3b76dd65a3151352b4f/setup.py", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/setup.py?ref=60e94b91542fd8c07942b3b76dd65a3151352b4f", + "patch": "@@ -1,11 +1,14 @@\n #!/usr/bin/env python\n # Learn more: https://github.com/un33k/setup.py\n+from __future__ import annotations\n+\n import os\n import sys\n+from typing import Any\n \n from codecs import open\n from shutil import rmtree\n-from setuptools import setup\n+from setuptools import setup # type: ignore[import]\n \n \n package = 'slugify'\n@@ -14,17 +17,17 @@\n \n install_requires = ['text-unidecode>=1.3']\n extras_requires = {'unidecode': ['Unidecode>=1.1.1']}\n-test_requires = []\n+test_requires: list[str] = []\n \n-about = {}\n+about: dict[str, Any] = {}\n with open(os.path.join(here, package, '__version__.py'), 'r', 'utf-8') as f:\n exec(f.read(), about)\n \n with open('README.md', 'r', 'utf-8') as f:\n readme = f.read()\n \n \n-def status(s):\n+def status(s: str) -> None:\n print('\\033[1m{0}\\033[0m'.format(s))\n \n \n@@ -58,7 +61,7 @@ def status(s):\n url=about['__url__'],\n license=about['__license__'],\n packages=[package],\n- package_data={'': ['LICENSE']},\n+ package_data={'': ['LICENSE', 'py.typed']},\n package_dir={'slugify': 'slugify'},\n include_package_data=True,\n python_requires=python_requires," + }, + { + "sha": "b7108dbaba0ba304d78e1feced154009a96f92c6", + "filename": "slugify/__main__.py", + "status": "modified", + "additions": 11, + "deletions": 8, + "changes": 19, + "blob_url": "https://github.com/un33k/python-slugify/blob/60e94b91542fd8c07942b3b76dd65a3151352b4f/slugify%2F__main__.py", + "raw_url": "https://github.com/un33k/python-slugify/raw/60e94b91542fd8c07942b3b76dd65a3151352b4f/slugify%2F__main__.py", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/slugify%2F__main__.py?ref=60e94b91542fd8c07942b3b76dd65a3151352b4f", + "patch": "@@ -1,11 +1,11 @@\n-from __future__ import print_function, absolute_import\n+from __future__ import print_function, absolute_import, annotations\n import argparse\n import sys\n \n-from .slugify import slugify, DEFAULT_SEPARATOR\n+from .slugify import slugify, SlugifyParams, DEFAULT_SEPARATOR\n \n \n-def parse_args(argv):\n+def parse_args(argv: list[str] | None) -> argparse.Namespace:\n parser = argparse.ArgumentParser(description=\"Slug string\")\n \n input_group = parser.add_argument_group(description=\"Input\")\n@@ -39,13 +39,13 @@ def parse_args(argv):\n parser.add_argument(\"--allow-unicode\", action='store_true', default=False,\n help=\"Allow unicode characters\")\n \n- args = parser.parse_args(argv[1:])\n+ args = parser.parse_args(argv[1:] if argv else [])\n \n if args.input_string and args.stdin:\n parser.error(\"Input strings and --stdin cannot work together\")\n \n if args.replacements:\n- def split_check(repl):\n+ def split_check(repl: str) -> list[str]:\n SEP = '->'\n if SEP not in repl:\n parser.error(\"Replacements must be of the form: ORIGINAL{SEP}REPLACED\".format(SEP=SEP))\n@@ -63,7 +63,8 @@ def split_check(repl):\n return args\n \n \n-def slugify_params(args):\n+# TODO: Convert params to a TypedDict or preferably a NamedTuple.\n+def slugify_params(args: argparse.Namespace) -> SlugifyParams:\n return dict(\n text=args.input_string,\n entities=args.entities,\n@@ -80,14 +81,16 @@ def slugify_params(args):\n )\n \n \n-def main(argv=None): # pragma: no cover\n+def main(argv: list[str] | None = None) -> None: # pragma: no cover\n \"\"\" Run this program \"\"\"\n if argv is None:\n argv = sys.argv\n args = parse_args(argv)\n params = slugify_params(args)\n try:\n- print(slugify(**params))\n+ # TODO: Mypy is unable to infer the type of each param after spreading.\n+ # It's possible this is resolved using typing_extension's TypedDict.\n+ print(slugify(**params)) # type: ignore[arg-type]\n except KeyboardInterrupt:\n sys.exit(-1)\n " + }, + { + "sha": "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391", + "filename": "slugify/py.typed", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/un33k/python-slugify/blob/60e94b91542fd8c07942b3b76dd65a3151352b4f/slugify%2Fpy.typed", + "raw_url": "https://github.com/un33k/python-slugify/raw/60e94b91542fd8c07942b3b76dd65a3151352b4f/slugify%2Fpy.typed", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/slugify%2Fpy.typed?ref=60e94b91542fd8c07942b3b76dd65a3151352b4f" + }, + { + "sha": "0cd8d311af27a40e30ec9d464f3e46c06c780b4f", + "filename": "slugify/slugify.py", + "status": "modified", + "additions": 16, + "deletions": 6, + "changes": 22, + "blob_url": "https://github.com/un33k/python-slugify/blob/60e94b91542fd8c07942b3b76dd65a3151352b4f/slugify%2Fslugify.py", + "raw_url": "https://github.com/un33k/python-slugify/raw/60e94b91542fd8c07942b3b76dd65a3151352b4f/slugify%2Fslugify.py", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/slugify%2Fslugify.py?ref=60e94b91542fd8c07942b3b76dd65a3151352b4f", + "patch": "@@ -1,16 +1,23 @@\n+from __future__ import annotations\n+\n import re\n import sys\n import unicodedata\n from html.entities import name2codepoint\n+from typing import Dict, Iterable, List, Union\n+\n \n try:\n- import unidecode\n+ import unidecode # type: ignore[import]\n except ImportError:\n- import text_unidecode as unidecode\n+ import text_unidecode as unidecode # type: ignore[import]\n \n __all__ = ['slugify', 'smart_truncate']\n \n \n+SlugifyParams = Dict[str, Union[str, bool, int, Iterable[str], Iterable[Iterable[str]], None]]\n+\n+\n CHAR_ENTITY_PATTERN = re.compile(r'&(%s);' % '|'.join(name2codepoint))\n DECIMAL_PATTERN = re.compile(r'&#(\\d+);')\n HEX_PATTERN = re.compile(r'&#x([\\da-fA-F]+);')\n@@ -22,7 +29,8 @@\n DEFAULT_SEPARATOR = '-'\n \n \n-def smart_truncate(string, max_length=0, word_boundary=False, separator=' ', save_order=False):\n+def smart_truncate(string: str, max_length: int = 0, word_boundary: bool = False,\n+ separator: str = ' ', save_order: bool = False) -> str:\n \"\"\"\n Truncate a string.\n :param string (str): string for modification\n@@ -64,9 +72,11 @@ def smart_truncate(string, max_length=0, word_boundary=False, separator=' ', sav\n return truncated.strip(separator)\n \n \n-def slugify(text, entities=True, decimal=True, hexadecimal=True, max_length=0, word_boundary=False,\n- separator=DEFAULT_SEPARATOR, save_order=False, stopwords=(), regex_pattern=None, lowercase=True,\n- replacements=(), allow_unicode=False):\n+def slugify(text: str, entities: bool = True, decimal: bool = True, hexadecimal: bool = True,\n+ max_length: int = 0, word_boundary: bool = False, separator: str = DEFAULT_SEPARATOR,\n+ save_order: bool = False, stopwords: Iterable[str] = (),\n+ regex_pattern: str | None = None, lowercase: bool = True,\n+ replacements: Iterable[Iterable[str]] = (), allow_unicode: bool = False) -> str:\n \"\"\"\n Make a slug from the given text.\n :param text (str): initial text" + }, + { + "sha": "9196b1379843bc15f1a87336bcc4b0f69c9feaee", + "filename": "slugify/special.py", + "status": "modified", + "additions": 3, + "deletions": 1, + "changes": 4, + "blob_url": "https://github.com/un33k/python-slugify/blob/60e94b91542fd8c07942b3b76dd65a3151352b4f/slugify%2Fspecial.py", + "raw_url": "https://github.com/un33k/python-slugify/raw/60e94b91542fd8c07942b3b76dd65a3151352b4f/slugify%2Fspecial.py", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/slugify%2Fspecial.py?ref=60e94b91542fd8c07942b3b76dd65a3151352b4f", + "patch": "@@ -1,7 +1,8 @@\n # -*- coding: utf-8 -*-\n+from __future__ import annotations\n \n \n-def add_uppercase_char(char_list):\n+def add_uppercase_char(char_list: list[tuple[str, str]]) -> list[tuple[str, str]]:\n \"\"\" Given a replacement char list, this adds uppercase chars to the list \"\"\"\n \n for item in char_list:\n@@ -10,6 +11,7 @@ def add_uppercase_char(char_list):\n if upper_dict not in char_list and char != upper_dict[0]:\n char_list.insert(0, upper_dict)\n return char_list\n+ raise RuntimeError(\"char_list must not be empty\")\n \n \n # Language specific pre translations" + }, + { + "sha": "b14f9d2dc939caa1264b1fafcd13f664a8ff5ca1", + "filename": "test.py", + "status": "modified", + "additions": 94, + "deletions": 107, + "changes": 201, + "blob_url": "https://github.com/un33k/python-slugify/blob/60e94b91542fd8c07942b3b76dd65a3151352b4f/test.py", + "raw_url": "https://github.com/un33k/python-slugify/raw/60e94b91542fd8c07942b3b76dd65a3151352b4f/test.py", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/test.py?ref=60e94b91542fd8c07942b3b76dd65a3151352b4f", + "patch": "@@ -1,17 +1,24 @@\n # -*- coding: utf-8 -*-\n+from __future__ import annotations\n+\n import io\n import sys\n+from typing import Any, TYPE_CHECKING\n import unittest\n+from unittest import mock\n from contextlib import contextmanager\n \n from slugify import slugify\n from slugify import smart_truncate\n from slugify.__main__ import slugify_params, parse_args\n \n+if TYPE_CHECKING:\n+ from slugify.slugify import SlugifyParams\n+\n \n class TestSlugify(unittest.TestCase):\n \n- def test_extraneous_seperators(self):\n+ def test_extraneous_seperators(self) -> None:\n \n txt = \"This is a test ---\"\n r = slugify(txt)\n@@ -25,17 +32,17 @@ def test_extraneous_seperators(self):\n r = slugify(txt)\n self.assertEqual(r, \"this-is-a-test\")\n \n- def test_non_word_characters(self):\n+ def test_non_word_characters(self) -> None:\n txt = \"This -- is a ## test ---\"\n r = slugify(txt)\n self.assertEqual(r, \"this-is-a-test\")\n \n- def test_phonetic_conversion_of_eastern_scripts(self):\n+ def test_phonetic_conversion_of_eastern_scripts(self) -> None:\n txt = '影師嗎'\n r = slugify(txt)\n self.assertEqual(r, \"ying-shi-ma\")\n \n- def test_accented_text(self):\n+ def test_accented_text(self) -> None:\n txt = 'C\\'est déjà l\\'été.'\n r = slugify(txt)\n self.assertEqual(r, \"c-est-deja-l-ete\")\n@@ -44,17 +51,17 @@ def test_accented_text(self):\n r = slugify(txt)\n self.assertEqual(r, \"nin-hao-wo-shi-zhong-guo-ren\")\n \n- def test_accented_text_with_non_word_characters(self):\n+ def test_accented_text_with_non_word_characters(self) -> None:\n txt = 'jaja---lol-méméméoo--a'\n r = slugify(txt)\n self.assertEqual(r, \"jaja-lol-mememeoo-a\")\n \n- def test_cyrillic_text(self):\n+ def test_cyrillic_text(self) -> None:\n txt = 'Компьютер'\n r = slugify(txt)\n self.assertEqual(r, \"kompiuter\")\n \n- def test_max_length(self):\n+ def test_max_length(self) -> None:\n txt = 'jaja---lol-méméméoo--a'\n r = slugify(txt, max_length=9)\n self.assertEqual(r, \"jaja-lol\")\n@@ -63,12 +70,12 @@ def test_max_length(self):\n r = slugify(txt, max_length=15)\n self.assertEqual(r, \"jaja-lol-mememe\")\n \n- def test_max_length_cutoff_not_required(self):\n+ def test_max_length_cutoff_not_required(self) -> None:\n txt = 'jaja---lol-méméméoo--a'\n r = slugify(txt, max_length=50)\n self.assertEqual(r, \"jaja-lol-mememeoo-a\")\n \n- def test_word_boundary(self):\n+ def test_word_boundary(self) -> None:\n txt = 'jaja---lol-méméméoo--a'\n r = slugify(txt, max_length=15, word_boundary=True)\n self.assertEqual(r, \"jaja-lol-a\")\n@@ -85,17 +92,17 @@ def test_word_boundary(self):\n r = slugify(txt, max_length=19, word_boundary=True)\n self.assertEqual(r, \"jaja-lol-mememeoo-a\")\n \n- def test_custom_separator(self):\n+ def test_custom_separator(self) -> None:\n txt = 'jaja---lol-méméméoo--a'\n r = slugify(txt, max_length=20, word_boundary=True, separator=\".\")\n self.assertEqual(r, \"jaja.lol.mememeoo.a\")\n \n- def test_multi_character_separator(self):\n+ def test_multi_character_separator(self) -> None:\n txt = 'jaja---lol-méméméoo--a'\n r = slugify(txt, max_length=20, word_boundary=True, separator=\"ZZZZZZ\")\n self.assertEqual(r, \"jajaZZZZZZlolZZZZZZmememeooZZZZZZa\")\n \n- def test_save_order(self):\n+ def test_save_order(self) -> None:\n txt = 'one two three four five'\n r = slugify(txt, max_length=13, word_boundary=True, save_order=True)\n self.assertEqual(r, \"one-two-three\")\n@@ -112,22 +119,22 @@ def test_save_order(self):\n r = slugify(txt, max_length=12, word_boundary=True, save_order=True)\n self.assertEqual(r, \"one-two\")\n \n- def test_stopword_removal(self):\n+ def test_stopword_removal(self) -> None:\n txt = 'this has a stopword'\n r = slugify(txt, stopwords=['stopword'])\n self.assertEqual(r, 'this-has-a')\n \n- def test_stopword_removal_casesensitive(self):\n+ def test_stopword_removal_casesensitive(self) -> None:\n txt = 'thIs Has a stopword Stopword'\n r = slugify(txt, stopwords=['Stopword'], lowercase=False)\n self.assertEqual(r, 'thIs-Has-a-stopword')\n \n- def test_multiple_stopword_occurances(self):\n+ def test_multiple_stopword_occurances(self) -> None:\n txt = 'the quick brown fox jumps over the lazy dog'\n r = slugify(txt, stopwords=['the'])\n self.assertEqual(r, 'quick-brown-fox-jumps-over-lazy-dog')\n \n- def test_differently_cased_stopword_match(self):\n+ def test_differently_cased_stopword_match(self) -> None:\n txt = 'Foo A FOO B foo C'\n r = slugify(txt, stopwords=['foo'])\n self.assertEqual(r, 'a-b-c')\n@@ -136,78 +143,78 @@ def test_differently_cased_stopword_match(self):\n r = slugify(txt, stopwords=['FOO'])\n self.assertEqual(r, 'a-b-c')\n \n- def test_multiple_stopwords(self):\n+ def test_multiple_stopwords(self) -> None:\n txt = 'the quick brown fox jumps over the lazy dog in a hurry'\n r = slugify(txt, stopwords=['the', 'in', 'a', 'hurry'])\n self.assertEqual(r, 'quick-brown-fox-jumps-over-lazy-dog')\n \n- def test_stopwords_with_different_separator(self):\n+ def test_stopwords_with_different_separator(self) -> None:\n txt = 'the quick brown fox jumps over the lazy dog'\n r = slugify(txt, stopwords=['the'], separator=' ')\n self.assertEqual(r, 'quick brown fox jumps over lazy dog')\n \n- def test_html_entities_on(self):\n+ def test_html_entities_on(self) -> None:\n txt = 'foo & bar'\n r = slugify(txt)\n self.assertEqual(r, 'foo-bar')\n \n- def test_html_entities_off(self):\n+ def test_html_entities_off(self) -> None:\n txt = 'foo & bar'\n r = slugify(txt, entities=False)\n self.assertEqual(r, 'foo-amp-bar')\n \n- def test_html_decimal_on(self):\n+ def test_html_decimal_on(self) -> None:\n txt = 'Ž'\n r = slugify(txt, decimal=True)\n self.assertEqual(r, 'z')\n \n- def test_html_decimal_off(self):\n+ def test_html_decimal_off(self) -> None:\n txt = 'Ž'\n r = slugify(txt, entities=False, decimal=False)\n self.assertEqual(r, '381')\n \n- def test_html_hexadecimal_on(self):\n+ def test_html_hexadecimal_on(self) -> None:\n txt = 'Ž'\n r = slugify(txt, hexadecimal=True)\n self.assertEqual(r, 'z')\n \n- def test_html_hexadecimal_off(self):\n+ def test_html_hexadecimal_off(self) -> None:\n txt = 'Ž'\n r = slugify(txt, hexadecimal=False)\n self.assertEqual(r, 'x17d')\n \n- def test_starts_with_number(self):\n+ def test_starts_with_number(self) -> None:\n txt = '10 amazing secrets'\n r = slugify(txt)\n self.assertEqual(r, '10-amazing-secrets')\n \n- def test_contains_numbers(self):\n+ def test_contains_numbers(self) -> None:\n txt = 'buildings with 1000 windows'\n r = slugify(txt)\n self.assertEqual(r, 'buildings-with-1000-windows')\n \n- def test_ends_with_number(self):\n+ def test_ends_with_number(self) -> None:\n txt = 'recipe number 3'\n r = slugify(txt)\n self.assertEqual(r, 'recipe-number-3')\n \n- def test_numbers_only(self):\n+ def test_numbers_only(self) -> None:\n txt = '404'\n r = slugify(txt)\n self.assertEqual(r, '404')\n \n- def test_numbers_and_symbols(self):\n+ def test_numbers_and_symbols(self) -> None:\n txt = '1,000 reasons you are #1'\n r = slugify(txt)\n self.assertEqual(r, '1000-reasons-you-are-1')\n \n- def test_regex_pattern_keep_underscore(self):\n+ def test_regex_pattern_keep_underscore(self) -> None:\n txt = \"___This is a test___\"\n regex_pattern = r'[^-a-z0-9_]+'\n r = slugify(txt, regex_pattern=regex_pattern)\n self.assertEqual(r, \"___this-is-a-test___\")\n \n- def test_regex_pattern_keep_underscore_with_underscore_as_separator(self):\n+ def test_regex_pattern_keep_underscore_with_underscore_as_separator(self) -> None:\n \"\"\"\n The regex_pattern turns the power to the caller.\n Hence the caller must ensure that a custom separator doesn't clash\n@@ -218,7 +225,7 @@ def test_regex_pattern_keep_underscore_with_underscore_as_separator(self):\n r = slugify(txt, separator='_', regex_pattern=regex_pattern)\n self.assertNotEqual(r, \"_this_is_a_test_\")\n \n- def test_replacements(self):\n+ def test_replacements(self) -> None:\n txt = '10 | 20 %'\n r = slugify(txt, replacements=[['|', 'or'], ['%', 'percent']])\n self.assertEqual(r, \"10-or-20-percent\")\n@@ -227,15 +234,15 @@ def test_replacements(self):\n r = slugify(txt, replacements=[['♥', 'amour'], ['🦄', 'licorne']])\n self.assertEqual(r, \"i-amour-licorne\")\n \n- def test_replacements_german_umlaut_custom(self):\n+ def test_replacements_german_umlaut_custom(self) -> None:\n txt = 'ÜBER Über German Umlaut'\n r = slugify(txt, replacements=[['Ü', 'UE'], ['ü', 'ue']])\n self.assertEqual(r, \"ueber-ueber-german-umlaut\")\n \n \n class TestSlugifyUnicode(unittest.TestCase):\n \n- def test_extraneous_seperators(self):\n+ def test_extraneous_seperators(self) -> None:\n \n txt = \"This is a test ---\"\n r = slugify(txt, allow_unicode=True)\n@@ -249,17 +256,17 @@ def test_extraneous_seperators(self):\n r = slugify(txt, allow_unicode=True)\n self.assertEqual(r, \"this-is-a-test\")\n \n- def test_non_word_characters(self):\n+ def test_non_word_characters(self) -> None:\n txt = \"This -- is a ## test ---\"\n r = slugify(txt, allow_unicode=True)\n self.assertEqual(r, \"this-is-a-test\")\n \n- def test_phonetic_conversion_of_eastern_scripts(self):\n+ def test_phonetic_conversion_of_eastern_scripts(self) -> None:\n txt = '影師嗎'\n r = slugify(txt, allow_unicode=True)\n self.assertEqual(r, txt)\n \n- def test_accented_text(self):\n+ def test_accented_text(self) -> None:\n txt = 'C\\'est déjà l\\'été.'\n r = slugify(txt, allow_unicode=True)\n self.assertEqual(r, \"c-est-déjà-l-été\")\n@@ -268,17 +275,17 @@ def test_accented_text(self):\n r = slugify(txt, allow_unicode=True)\n self.assertEqual(r, \"nín-hǎo-wǒ-shì-zhōng-guó-rén\")\n \n- def test_accented_text_with_non_word_characters(self):\n+ def test_accented_text_with_non_word_characters(self) -> None:\n txt = 'jaja---lol-méméméoo--a'\n r = slugify(txt, allow_unicode=True)\n self.assertEqual(r, \"jaja-lol-méméméoo-a\")\n \n- def test_cyrillic_text(self):\n+ def test_cyrillic_text(self) -> None:\n txt = 'Компьютер'\n r = slugify(txt, allow_unicode=True)\n self.assertEqual(r, \"компьютер\")\n \n- def test_max_length(self):\n+ def test_max_length(self) -> None:\n txt = 'jaja---lol-méméméoo--a'\n r = slugify(txt, allow_unicode=True, max_length=9)\n self.assertEqual(r, \"jaja-lol\")\n@@ -287,12 +294,12 @@ def test_max_length(self):\n r = slugify(txt, allow_unicode=True, max_length=15)\n self.assertEqual(r, \"jaja-lol-mémémé\")\n \n- def test_max_length_cutoff_not_required(self):\n+ def test_max_length_cutoff_not_required(self) -> None:\n txt = 'jaja---lol-méméméoo--a'\n r = slugify(txt, allow_unicode=True, max_length=50)\n self.assertEqual(r, \"jaja-lol-méméméoo-a\")\n \n- def test_word_boundary(self):\n+ def test_word_boundary(self) -> None:\n txt = 'jaja---lol-méméméoo--a'\n r = slugify(txt, allow_unicode=True, max_length=15, word_boundary=True)\n self.assertEqual(r, \"jaja-lol-a\")\n@@ -309,17 +316,17 @@ def test_word_boundary(self):\n r = slugify(txt, allow_unicode=True, max_length=19, word_boundary=True)\n self.assertEqual(r, \"jaja-lol-méméméoo-a\")\n \n- def test_custom_separator(self):\n+ def test_custom_separator(self) -> None:\n txt = 'jaja---lol-méméméoo--a'\n r = slugify(txt, allow_unicode=True, max_length=20, word_boundary=True, separator=\".\")\n self.assertEqual(r, \"jaja.lol.méméméoo.a\")\n \n- def test_multi_character_separator(self):\n+ def test_multi_character_separator(self) -> None:\n txt = 'jaja---lol-méméméoo--a'\n r = slugify(txt, allow_unicode=True, max_length=20, word_boundary=True, separator=\"ZZZZZZ\")\n self.assertEqual(r, \"jajaZZZZZZlolZZZZZZméméméooZZZZZZa\")\n \n- def test_save_order(self):\n+ def test_save_order(self) -> None:\n txt = 'one two three four five'\n r = slugify(txt, allow_unicode=True, max_length=13, word_boundary=True, save_order=True)\n self.assertEqual(r, \"one-two-three\")\n@@ -336,7 +343,7 @@ def test_save_order(self):\n r = slugify(txt, allow_unicode=True, max_length=12, word_boundary=True, save_order=True)\n self.assertEqual(r, \"one-two\")\n \n- def test_save_order_rtl(self):\n+ def test_save_order_rtl(self) -> None:\n \"\"\"For right-to-left unicode languages\"\"\"\n txt = 'دو سه چهار پنج'\n r = slugify(txt, allow_unicode=True, max_length=10, word_boundary=True, save_order=True)\n@@ -354,7 +361,7 @@ def test_save_order_rtl(self):\n r = slugify(txt, allow_unicode=True, max_length=9, word_boundary=True, save_order=True)\n self.assertEqual(r, \"دو-سه\")\n \n- def test_stopword_removal(self):\n+ def test_stopword_removal(self) -> None:\n txt = 'this has a stopword'\n r = slugify(txt, allow_unicode=True, stopwords=['stopword'])\n self.assertEqual(r, 'this-has-a')\n@@ -363,7 +370,7 @@ def test_stopword_removal(self):\n r = slugify(txt, allow_unicode=True, stopwords=['Öländ'])\n self.assertEqual(r, 'this-has-a')\n \n- def test_stopword_removal_casesensitive(self):\n+ def test_stopword_removal_casesensitive(self) -> None:\n txt = 'thIs Has a stopword Stopword'\n r = slugify(txt, allow_unicode=True, stopwords=['Stopword'], lowercase=False)\n self.assertEqual(r, 'thIs-Has-a-stopword')\n@@ -372,12 +379,12 @@ def test_stopword_removal_casesensitive(self):\n r = slugify(txt, allow_unicode=True, stopwords=['Öländ'], lowercase=False)\n self.assertEqual(r, 'thIs-Has-a-öländ')\n \n- def test_multiple_stopword_occurances(self):\n+ def test_multiple_stopword_occurances(self) -> None:\n txt = 'the quick brown fox jumps over the lazy dog'\n r = slugify(txt, allow_unicode=True, stopwords=['the'])\n self.assertEqual(r, 'quick-brown-fox-jumps-over-lazy-dog')\n \n- def test_differently_cased_stopword_match(self):\n+ def test_differently_cased_stopword_match(self) -> None:\n txt = 'Foo A FOO B foo C'\n r = slugify(txt, allow_unicode=True, stopwords=['foo'])\n self.assertEqual(r, 'a-b-c')\n@@ -386,67 +393,67 @@ def test_differently_cased_stopword_match(self):\n r = slugify(txt, allow_unicode=True, stopwords=['FOO'])\n self.assertEqual(r, 'a-b-c')\n \n- def test_multiple_stopwords(self):\n+ def test_multiple_stopwords(self) -> None:\n txt = 'the quick brown fox jumps over the lazy dog in a hurry'\n r = slugify(txt, allow_unicode=True, stopwords=['the', 'in', 'a', 'hurry'])\n self.assertEqual(r, 'quick-brown-fox-jumps-over-lazy-dog')\n \n- def test_stopwords_with_different_separator(self):\n+ def test_stopwords_with_different_separator(self) -> None:\n txt = 'the quick brown fox jumps over the lazy dog'\n r = slugify(txt, allow_unicode=True, stopwords=['the'], separator=' ')\n self.assertEqual(r, 'quick brown fox jumps over lazy dog')\n \n- def test_html_entities_on(self):\n+ def test_html_entities_on(self) -> None:\n txt = 'foo & bar'\n r = slugify(txt, allow_unicode=True)\n self.assertEqual(r, 'foo-bar')\n \n- def test_html_entities_off(self):\n+ def test_html_entities_off(self) -> None:\n txt = 'foo & bår'\n r = slugify(txt, allow_unicode=True, entities=False)\n self.assertEqual(r, 'foo-amp-bår')\n \n- def test_html_decimal_on(self):\n+ def test_html_decimal_on(self) -> None:\n txt = 'Ž'\n r = slugify(txt, allow_unicode=True, decimal=True)\n self.assertEqual(r, 'ž')\n \n- def test_html_decimal_off(self):\n+ def test_html_decimal_off(self) -> None:\n txt = 'Ž'\n r = slugify(txt, allow_unicode=True, entities=False, decimal=False)\n self.assertEqual(r, '381')\n \n- def test_html_hexadecimal_on(self):\n+ def test_html_hexadecimal_on(self) -> None:\n txt = 'Ž'\n r = slugify(txt, allow_unicode=True, hexadecimal=True)\n self.assertEqual(r, 'ž')\n \n- def test_html_hexadecimal_off(self):\n+ def test_html_hexadecimal_off(self) -> None:\n txt = 'Ž'\n r = slugify(txt, allow_unicode=True, hexadecimal=False)\n self.assertEqual(r, 'x17d')\n \n- def test_starts_with_number(self):\n+ def test_starts_with_number(self) -> None:\n txt = '10 amazing secrets'\n r = slugify(txt, allow_unicode=True)\n self.assertEqual(r, '10-amazing-secrets')\n \n- def test_contains_numbers(self):\n+ def test_contains_numbers(self) -> None:\n txt = 'buildings with 1000 windows'\n r = slugify(txt, allow_unicode=True)\n self.assertEqual(r, 'buildings-with-1000-windows')\n \n- def test_ends_with_number(self):\n+ def test_ends_with_number(self) -> None:\n txt = 'recipe number 3'\n r = slugify(txt, allow_unicode=True)\n self.assertEqual(r, 'recipe-number-3')\n \n- def test_numbers_only(self):\n+ def test_numbers_only(self) -> None:\n txt = '404'\n r = slugify(txt, allow_unicode=True)\n self.assertEqual(r, '404')\n \n- def test_numbers_and_symbols(self):\n+ def test_numbers_and_symbols(self) -> None:\n txt = '1,000 reasons you are #1'\n r = slugify(txt, allow_unicode=True)\n self.assertEqual(r, '1000-reasons-you-are-1')\n@@ -455,14 +462,14 @@ def test_numbers_and_symbols(self):\n r = slugify(txt, allow_unicode=True)\n self.assertEqual(r, '۱۰۰۰-reasons-you-are-۱')\n \n- def test_regex_pattern_keep_underscore(self):\n+ def test_regex_pattern_keep_underscore(self) -> None:\n \"\"\"allowing unicode should not overrule the passed regex_pattern\"\"\"\n txt = \"___This is a test___\"\n regex_pattern = r'[^-a-z0-9_]+'\n r = slugify(txt, allow_unicode=True, regex_pattern=regex_pattern)\n self.assertEqual(r, \"___this-is-a-test___\")\n \n- def test_regex_pattern_keep_underscore_with_underscore_as_separator(self):\n+ def test_regex_pattern_keep_underscore_with_underscore_as_separator(self) -> None:\n \"\"\"\n The regex_pattern turns the power to the caller.\n Hence, the caller must ensure that a custom separator doesn't clash\n@@ -473,7 +480,7 @@ def test_regex_pattern_keep_underscore_with_underscore_as_separator(self):\n r = slugify(txt, allow_unicode=True, separator='_', regex_pattern=regex_pattern)\n self.assertNotEqual(r, \"_this_is_a_test_\")\n \n- def test_replacements(self):\n+ def test_replacements(self) -> None:\n txt = '10 | 20 %'\n r = slugify(txt, allow_unicode=True, replacements=[['|', 'or'], ['%', 'percent']])\n self.assertEqual(r, \"10-or-20-percent\")\n@@ -486,12 +493,12 @@ def test_replacements(self):\n r = slugify(txt, allow_unicode=True, replacements=[['♥', 'სიყვარული'], ['🦄', 'licorne']])\n self.assertEqual(r, \"i-სიყვარული-licorne\")\n \n- def test_replacements_german_umlaut_custom(self):\n+ def test_replacements_german_umlaut_custom(self) -> None:\n txt = 'ÜBER Über German Umlaut'\n r = slugify(txt, allow_unicode=True, replacements=[['Ü', 'UE'], ['ü', 'ue']])\n self.assertEqual(r, \"ueber-ueber-german-umlaut\")\n \n- def test_emojis(self):\n+ def test_emojis(self) -> None:\n \"\"\"\n allowing unicode shouldn't allow emojis, even in replacements.\n the only exception is when it is allowed by the regex_pattern. regex_pattern overrules all\n@@ -523,12 +530,12 @@ def test_emojis(self):\n \n class TestUtils(unittest.TestCase):\n \n- def test_smart_truncate_no_max_length(self):\n+ def test_smart_truncate_no_max_length(self) -> None:\n txt = '1,000 reasons you are #1'\n r = smart_truncate(txt)\n self.assertEqual(r, txt)\n \n- def test_smart_truncate_no_seperator(self):\n+ def test_smart_truncate_no_seperator(self) -> None:\n txt = '1,000 reasons you are #1'\n r = smart_truncate(txt, max_length=100, separator='_')\n self.assertEqual(r, txt)\n@@ -537,26 +544,6 @@ def test_smart_truncate_no_seperator(self):\n PY3 = sys.version_info.major == 3\n \n \n-@contextmanager\n-def captured_stderr():\n- backup = sys.stderr\n- sys.stderr = io.StringIO() if PY3 else io.BytesIO()\n- try:\n- yield sys.stderr\n- finally:\n- sys.stderr = backup\n-\n-\n-@contextmanager\n-def loaded_stdin(contents):\n- backup = sys.stdin\n- sys.stdin = io.StringIO(contents) if PY3 else io.BytesIO(contents)\n- try:\n- yield sys.stdin\n- finally:\n- sys.stdin = backup\n-\n-\n class TestCommandParams(unittest.TestCase):\n DEFAULTS = {\n 'entities': True,\n@@ -571,74 +558,74 @@ class TestCommandParams(unittest.TestCase):\n 'replacements': None\n }\n \n- def get_params_from_cli(self, *argv):\n+ def get_params_from_cli(self, *argv: Any) -> SlugifyParams:\n args = parse_args([None] + list(argv))\n return slugify_params(args)\n \n- def make_params(self, **values):\n+ def make_params(self, **values: Any) -> dict[Any, Any]:\n return dict(self.DEFAULTS, **values)\n \n- def assertParamsMatch(self, expected, checked):\n+ def assertParamsMatch(self, expected: dict[Any, Any], checked: SlugifyParams) -> None:\n reduced_checked = {}\n for key in expected.keys():\n reduced_checked[key] = checked[key]\n self.assertEqual(expected, reduced_checked)\n \n- def test_defaults(self):\n+ def test_defaults(self) -> None:\n params = self.get_params_from_cli()\n self.assertParamsMatch(self.DEFAULTS, params)\n \n- def test_negative_flags(self):\n+ def test_negative_flags(self) -> None:\n params = self.get_params_from_cli('--no-entities', '--no-decimal', '--no-hexadecimal', '--no-lowercase')\n expected = self.make_params(entities=False, decimal=False, hexadecimal=False, lowercase=False)\n self.assertFalse(expected['lowercase'])\n self.assertFalse(expected['word_boundary'])\n self.assertParamsMatch(expected, params)\n \n- def test_affirmative_flags(self):\n+ def test_affirmative_flags(self) -> None:\n params = self.get_params_from_cli('--word-boundary', '--save-order')\n expected = self.make_params(word_boundary=True, save_order=True)\n self.assertParamsMatch(expected, params)\n \n- def test_valued_arguments(self):\n+ def test_valued_arguments(self) -> None:\n params = self.get_params_from_cli('--stopwords', 'abba', 'beatles', '--max-length', '98', '--separator', '+')\n expected = self.make_params(stopwords=['abba', 'beatles'], max_length=98, separator='+')\n self.assertParamsMatch(expected, params)\n \n- def test_replacements_right(self):\n+ def test_replacements_right(self) -> None:\n params = self.get_params_from_cli('--replacements', 'A->B', 'C->D')\n expected = self.make_params(replacements=[['A', 'B'], ['C', 'D']])\n self.assertParamsMatch(expected, params)\n \n- def test_replacements_wrong(self):\n- with self.assertRaises(SystemExit) as err, captured_stderr() as cse:\n+ def test_replacements_wrong(self) -> None:\n+ with self.assertRaises(SystemExit) as err, mock.patch(\"sys.stderr\", new_callable=io.StringIO) as cse:\n self.get_params_from_cli('--replacements', 'A--B')\n self.assertEqual(err.exception.code, 2)\n self.assertIn(\"Replacements must be of the form: ORIGINAL->REPLACED\", cse.getvalue())\n \n- def test_text_in_cli(self):\n+ def test_text_in_cli(self) -> None:\n params = self.get_params_from_cli('Cool Text')\n expected = self.make_params(text='Cool Text')\n self.assertParamsMatch(expected, params)\n \n- def test_text_in_cli_multi(self):\n+ def test_text_in_cli_multi(self) -> None:\n params = self.get_params_from_cli('Cool', 'Text')\n expected = self.make_params(text='Cool Text')\n self.assertParamsMatch(expected, params)\n \n- def test_text_in_stdin(self):\n- with loaded_stdin(\"Cool Stdin\"):\n+ def test_text_in_stdin(self) -> None:\n+ with mock.patch('sys.stdin.read', side_effect=['Cool Stdin']):\n params = self.get_params_from_cli('--stdin')\n expected = self.make_params(text='Cool Stdin')\n self.assertParamsMatch(expected, params)\n \n- def test_two_text_sources_fails(self):\n- with self.assertRaises(SystemExit) as err, captured_stderr() as cse:\n+ def test_two_text_sources_fails(self) -> None:\n+ with self.assertRaises(SystemExit) as err, mock.patch(\"sys.stderr\", new_callable=io.StringIO) as cse:\n self.get_params_from_cli('--stdin', 'Text')\n self.assertEqual(err.exception.code, 2)\n self.assertIn(\"Input strings and --stdin cannot work together\", cse.getvalue())\n \n- def test_multivalued_options_with_text(self):\n+ def test_multivalued_options_with_text(self) -> None:\n text = \"the quick brown fox jumps over the lazy dog in a hurry\"\n cli_args = \"--stopwords the in a hurry -- {}\".format(text).split()\n params = self.get_params_from_cli(*cli_args)" + } + ], + "145": [ + { + "sha": "71bc2192a3ee6574f7db5b54c668df797f563850", + "filename": ".github/workflows/ci.yml", + "status": "modified", + "additions": 2, + "deletions": 2, + "changes": 4, + "blob_url": "https://github.com/un33k/python-slugify/blob/838052a21d506c07135f83ec8056d7167d1240e1/.github%2Fworkflows%2Fci.yml", + "raw_url": "https://github.com/un33k/python-slugify/raw/838052a21d506c07135f83ec8056d7167d1240e1/.github%2Fworkflows%2Fci.yml", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/.github%2Fworkflows%2Fci.yml?ref=838052a21d506c07135f83ec8056d7167d1240e1", + "patch": "@@ -17,9 +17,9 @@ jobs:\n python: [3.7, 3.8, 3.9, \"3.10\", 3.11, 3.12, pypy3.8]\n \n steps:\n- - uses: actions/checkout@v3\n+ - uses: actions/checkout@v4\n - name: setup python\n- uses: actions/setup-python@v4\n+ uses: actions/setup-python@v5\n with:\n python-version: ${{ matrix.python }}\n - name: Install dependencies" + }, + { + "sha": "88791a7eab7c71f9a6814a617f6ee2f0c05c4c08", + "filename": ".github/workflows/dev.yml", + "status": "modified", + "additions": 2, + "deletions": 2, + "changes": 4, + "blob_url": "https://github.com/un33k/python-slugify/blob/838052a21d506c07135f83ec8056d7167d1240e1/.github%2Fworkflows%2Fdev.yml", + "raw_url": "https://github.com/un33k/python-slugify/raw/838052a21d506c07135f83ec8056d7167d1240e1/.github%2Fworkflows%2Fdev.yml", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/.github%2Fworkflows%2Fdev.yml?ref=838052a21d506c07135f83ec8056d7167d1240e1", + "patch": "@@ -17,9 +17,9 @@ jobs:\n python: [3.7, 3.8, 3.9, \"3.10\", 3.11, 3.12, pypy3.8]\n \n steps:\n- - uses: actions/checkout@v3\n+ - uses: actions/checkout@v4\n - name: setup python\n- uses: actions/setup-python@v4\n+ uses: actions/setup-python@v5\n with:\n python-version: ${{ matrix.python }}\n - name: Install dependencies" + }, + { + "sha": "7a9c77e7368f0f02fc8ce4846d8cdc5e632b7702", + "filename": ".github/workflows/main.yml", + "status": "modified", + "additions": 2, + "deletions": 2, + "changes": 4, + "blob_url": "https://github.com/un33k/python-slugify/blob/838052a21d506c07135f83ec8056d7167d1240e1/.github%2Fworkflows%2Fmain.yml", + "raw_url": "https://github.com/un33k/python-slugify/raw/838052a21d506c07135f83ec8056d7167d1240e1/.github%2Fworkflows%2Fmain.yml", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/.github%2Fworkflows%2Fmain.yml?ref=838052a21d506c07135f83ec8056d7167d1240e1", + "patch": "@@ -16,9 +16,9 @@ jobs:\n python: [3.7, 3.8, 3.9, \"3.10\", 3.11, 3.12, pypy3.8]\n \n steps:\n- - uses: actions/checkout@v3\n+ - uses: actions/checkout@v4\n - name: setup python\n- uses: actions/setup-python@v4\n+ uses: actions/setup-python@v5\n with:\n python-version: ${{ matrix.python }}\n - name: Install dependencies" + }, + { + "sha": "eb60bee408b084e87a9ee57946b3e48efc2e78a9", + "filename": "CHANGELOG.md", + "status": "modified", + "additions": 3, + "deletions": 2, + "changes": 5, + "blob_url": "https://github.com/un33k/python-slugify/blob/838052a21d506c07135f83ec8056d7167d1240e1/CHANGELOG.md", + "raw_url": "https://github.com/un33k/python-slugify/raw/838052a21d506c07135f83ec8056d7167d1240e1/CHANGELOG.md", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/CHANGELOG.md?ref=838052a21d506c07135f83ec8056d7167d1240e1", + "patch": "@@ -1,7 +1,8 @@\n ## Work in progress\n \n-- Added typing to API and expose `py.typed`.\n-- Formally support 3.12\n+## 8.0.2\n+\n+- Normalize text before converting to unicode. (@chuckyblack - thx)\n \n ## 8.0.1\n " + }, + { + "sha": "4cc461622837bf5c765c06d9a5f20f265945d968", + "filename": "slugify/__main__.py", + "status": "modified", + "additions": 1, + "deletions": 1, + "changes": 2, + "blob_url": "https://github.com/un33k/python-slugify/blob/838052a21d506c07135f83ec8056d7167d1240e1/slugify%2F__main__.py", + "raw_url": "https://github.com/un33k/python-slugify/raw/838052a21d506c07135f83ec8056d7167d1240e1/slugify%2F__main__.py", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/slugify%2F__main__.py?ref=838052a21d506c07135f83ec8056d7167d1240e1", + "patch": "@@ -1,4 +1,4 @@\n-from __future__ import absolute_import, annotations, print_function\n+from __future__ import annotations\n \n import argparse\n import sys" + }, + { + "sha": "dbbff9f6d60f2c308bb7b28fe9986d12d6e8d686", + "filename": "slugify/__version__.py", + "status": "modified", + "additions": 1, + "deletions": 1, + "changes": 2, + "blob_url": "https://github.com/un33k/python-slugify/blob/838052a21d506c07135f83ec8056d7167d1240e1/slugify%2F__version__.py", + "raw_url": "https://github.com/un33k/python-slugify/raw/838052a21d506c07135f83ec8056d7167d1240e1/slugify%2F__version__.py", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/slugify%2F__version__.py?ref=838052a21d506c07135f83ec8056d7167d1240e1", + "patch": "@@ -5,4 +5,4 @@\n __url__ = 'https://github.com/un33k/python-slugify'\n __license__ = 'MIT'\n __copyright__ = 'Copyright 2022 Val Neekman @ Neekware Inc.'\n-__version__ = '8.0.1'\n+__version__ = '8.0.2'" + }, + { + "sha": "09c7e076cf27406c7f0ab324b5ac1da787da3624", + "filename": "slugify/slugify.py", + "status": "modified", + "additions": 7, + "deletions": 8, + "changes": 15, + "blob_url": "https://github.com/un33k/python-slugify/blob/838052a21d506c07135f83ec8056d7167d1240e1/slugify%2Fslugify.py", + "raw_url": "https://github.com/un33k/python-slugify/raw/838052a21d506c07135f83ec8056d7167d1240e1/slugify%2Fslugify.py", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/slugify%2Fslugify.py?ref=838052a21d506c07135f83ec8056d7167d1240e1", + "patch": "@@ -1,7 +1,6 @@\n from __future__ import annotations\n \n import re\n-import sys\n import unicodedata\n from collections.abc import Iterable\n from html.entities import name2codepoint\n@@ -83,7 +82,7 @@ def slugify(\n separator: str = DEFAULT_SEPARATOR,\n save_order: bool = False,\n stopwords: Iterable[str] = (),\n- regex_pattern: str | None = None,\n+ regex_pattern: re.Pattern[str] | str | None = None,\n lowercase: bool = True,\n replacements: Iterable[Iterable[str]] = (),\n allow_unicode: bool = False,\n@@ -118,8 +117,11 @@ def slugify(\n # replace quotes with dashes - pre-process\n text = QUOTE_PATTERN.sub(DEFAULT_SEPARATOR, text)\n \n- # decode unicode\n- if not allow_unicode:\n+ # normalize text, convert to unicode if required\n+ if allow_unicode:\n+ text = unicodedata.normalize('NFKC', text)\n+ else:\n+ text = unicodedata.normalize('NFKD', text)\n text = unidecode.unidecode(text)\n \n # ensure text is still in unicode\n@@ -144,15 +146,12 @@ def slugify(\n except Exception:\n pass\n \n- # translate\n+ # re normalize text\n if allow_unicode:\n text = unicodedata.normalize('NFKC', text)\n else:\n text = unicodedata.normalize('NFKD', text)\n \n- if sys.version_info < (3,):\n- text = text.encode('ascii', 'ignore')\n-\n # make the text lowercase (optional)\n if lowercase:\n text = text.lower()" + }, + { + "sha": "2534499de9d896af6dbf88e1ca28878787fab1c9", + "filename": "test.py", + "status": "modified", + "additions": 4, + "deletions": 0, + "changes": 4, + "blob_url": "https://github.com/un33k/python-slugify/blob/838052a21d506c07135f83ec8056d7167d1240e1/test.py", + "raw_url": "https://github.com/un33k/python-slugify/raw/838052a21d506c07135f83ec8056d7167d1240e1/test.py", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/test.py?ref=838052a21d506c07135f83ec8056d7167d1240e1", + "patch": "@@ -36,6 +36,10 @@ def test_phonetic_conversion_of_eastern_scripts(self):\n self.assertEqual(r, \"ying-shi-ma\")\n \n def test_accented_text(self):\n+ txt = '𝐚́́𝕒́àáâäãąā'\n+ r = slugify(txt)\n+ self.assertEqual(r, \"aaaaaaaaa\")\n+\n txt = 'C\\'est déjà l\\'été.'\n r = slugify(txt)\n self.assertEqual(r, \"c-est-deja-l-ete\")" + } + ], + "155": [ + { + "sha": "38afb20abbb44fe8c0c3285281617153f6c79bbb", + "filename": "slugify/slugify.py", + "status": "modified", + "additions": 67, + "deletions": 86, + "changes": 153, + "blob_url": "https://github.com/un33k/python-slugify/blob/91c6c92b4760d9b02a01fee1dfa870646120286f/slugify%2Fslugify.py", + "raw_url": "https://github.com/un33k/python-slugify/raw/91c6c92b4760d9b02a01fee1dfa870646120286f/slugify%2Fslugify.py", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/slugify%2Fslugify.py?ref=91c6c92b4760d9b02a01fee1dfa870646120286f", + "patch": "@@ -2,7 +2,7 @@\n \n import re\n import unicodedata\n-from collections.abc import Iterable\n+from collections.abc import Callable, Iterable\n from html.entities import name2codepoint\n \n try:\n@@ -38,9 +38,8 @@ def smart_truncate(\n :param word_boundary (bool):\n :param save_order (bool): if True then word order of output string is like input string\n :param separator (str): separator between words\n- :return:\n+ :return: truncated string\n \"\"\"\n-\n string = string.strip(separator)\n \n if not max_length:\n@@ -89,109 +88,91 @@ def slugify(\n ) -> str:\n \"\"\"\n Make a slug from the given text.\n- :param text (str): initial text\n- :param entities (bool): converts html entities to unicode\n- :param decimal (bool): converts html decimal to unicode\n- :param hexadecimal (bool): converts html hexadecimal to unicode\n- :param max_length (int): output string length\n- :param word_boundary (bool): truncates to complete word even if length ends up shorter than max_length\n- :param save_order (bool): if parameter is True and max_length > 0 return whole words in the initial order\n- :param separator (str): separator between words\n- :param stopwords (iterable): words to discount\n- :param regex_pattern (str): regex pattern for disallowed characters\n- :param lowercase (bool): activate case sensitivity by setting it to False\n- :param replacements (iterable): list of replacement rules e.g. [['|', 'or'], ['%', 'percent']]\n- :param allow_unicode (bool): allow unicode characters\n- :return (str):\n \"\"\"\n+ text = _apply_replacements(text, replacements)\n+ text = _ensure_unicode(text)\n+ text = _normalize_text(text, allow_unicode)\n+ text = _process_html_entities(text, entities, decimal, hexadecimal)\n+ text = _normalize_text(text, allow_unicode) # Re-normalize after entity processing\n+ text = _adjust_case(text, lowercase)\n+ text = _clean_special_chars(text, allow_unicode, regex_pattern)\n+ text = _process_stopwords(text, stopwords, lowercase, DEFAULT_SEPARATOR)\n+ text = _apply_replacements(text, replacements) # Final replacements\n+ text = _truncate_text(text, max_length, word_boundary, separator, save_order, DEFAULT_SEPARATOR)\n+ text = _adjust_separator(text, separator, DEFAULT_SEPARATOR)\n+ \n+ return text\n \n- # user-specific replacements\n- if replacements:\n- for old, new in replacements:\n- text = text.replace(old, new)\n+def _apply_replacements(text: str, replacements: Iterable[Iterable[str]]) -> str:\n+ if not replacements:\n+ return text\n+ for old, new in replacements:\n+ text = text.replace(old, new)\n+ return text\n \n- # ensure text is unicode\n+def _ensure_unicode(text: str) -> str:\n if not isinstance(text, str):\n- text = str(text, 'utf-8', 'ignore')\n+ return str(text, 'utf-8', 'ignore')\n+ return text\n \n- # replace quotes with dashes - pre-process\n+def _normalize_text(text: str, allow_unicode: bool) -> str:\n text = QUOTE_PATTERN.sub(DEFAULT_SEPARATOR, text)\n-\n- # normalize text, convert to unicode if required\n if allow_unicode:\n- text = unicodedata.normalize('NFKC', text)\n- else:\n- text = unicodedata.normalize('NFKD', text)\n- text = unidecode.unidecode(text)\n-\n- # ensure text is still in unicode\n- if not isinstance(text, str):\n- text = str(text, 'utf-8', 'ignore')\n+ return unicodedata.normalize('NFKC', text)\n+ text = unicodedata.normalize('NFKD', text)\n+ return unidecode.unidecode(text)\n \n- # character entity reference\n+def _process_html_entities(text: str, entities: bool, decimal: bool, hexadecimal: bool) -> str:\n if entities:\n text = CHAR_ENTITY_PATTERN.sub(lambda m: chr(name2codepoint[m.group(1)]), text)\n-\n- # decimal character reference\n+ \n if decimal:\n- try:\n- text = DECIMAL_PATTERN.sub(lambda m: chr(int(m.group(1))), text)\n- except Exception:\n- pass\n-\n- # hexadecimal character reference\n+ text = _safe_sub(DECIMAL_PATTERN, lambda m: chr(int(m.group(1))), text)\n+ \n if hexadecimal:\n- try:\n- text = HEX_PATTERN.sub(lambda m: chr(int(m.group(1), 16)), text)\n- except Exception:\n- pass\n+ text = _safe_sub(HEX_PATTERN, lambda m: chr(int(m.group(1), 16)), text)\n+ \n+ return text\n \n- # re normalize text\n- if allow_unicode:\n- text = unicodedata.normalize('NFKC', text)\n- else:\n- text = unicodedata.normalize('NFKD', text)\n+def _safe_sub(pattern: re.Pattern, repl: Callable, text: str) -> str:\n+ try:\n+ return pattern.sub(repl, text)\n+ except Exception:\n+ return text\n \n- # make the text lowercase (optional)\n+def _adjust_case(text: str, lowercase: bool) -> str:\n if lowercase:\n- text = text.lower()\n+ return text.lower()\n+ return text\n \n- # remove generated quotes -- post-process\n+def _clean_special_chars(text: str, allow_unicode: bool, regex_pattern: re.Pattern | str | None) -> str:\n text = QUOTE_PATTERN.sub('', text)\n-\n- # cleanup numbers\n text = NUMBERS_PATTERN.sub('', text)\n-\n- # replace all other unwanted characters\n- if allow_unicode:\n- pattern = regex_pattern or DISALLOWED_UNICODE_CHARS_PATTERN\n- else:\n- pattern = regex_pattern or DISALLOWED_CHARS_PATTERN\n-\n+ \n+ pattern = regex_pattern or (DISALLOWED_UNICODE_CHARS_PATTERN if allow_unicode else DISALLOWED_CHARS_PATTERN)\n text = re.sub(pattern, DEFAULT_SEPARATOR, text)\n+ return DUPLICATE_DASH_PATTERN.sub(DEFAULT_SEPARATOR, text).strip(DEFAULT_SEPARATOR)\n \n- # remove redundant\n- text = DUPLICATE_DASH_PATTERN.sub(DEFAULT_SEPARATOR, text).strip(DEFAULT_SEPARATOR)\n-\n- # remove stopwords\n- if stopwords:\n- if lowercase:\n- stopwords_lower = [s.lower() for s in stopwords]\n- words = [w for w in text.split(DEFAULT_SEPARATOR) if w not in stopwords_lower]\n- else:\n- words = [w for w in text.split(DEFAULT_SEPARATOR) if w not in stopwords]\n- text = DEFAULT_SEPARATOR.join(words)\n-\n- # finalize user-specific replacements\n- if replacements:\n- for old, new in replacements:\n- text = text.replace(old, new)\n+def _process_stopwords(text: str, stopwords: Iterable[str], lowercase: bool, separator: str) -> str:\n+ if not stopwords:\n+ return text\n+ \n+ words = text.split(separator)\n+ if lowercase:\n+ stopwords_set = {s.lower() for s in stopwords}\n+ words = [w for w in words if w not in stopwords_set]\n+ else:\n+ words = [w for w in words if w not in stopwords]\n+ \n+ return separator.join(words)\n \n- # smart truncate if requested\n+def _truncate_text(text: str, max_length: int, word_boundary: bool, \n+ save_order: bool, default_separator: str) -> str:\n if max_length > 0:\n- text = smart_truncate(text, max_length, word_boundary, DEFAULT_SEPARATOR, save_order)\n-\n- if separator != DEFAULT_SEPARATOR:\n- text = text.replace(DEFAULT_SEPARATOR, separator)\n-\n+ return smart_truncate(text, max_length, word_boundary, default_separator, save_order)\n return text\n+\n+def _adjust_separator(text: str, separator: str, default_separator: str) -> str:\n+ if separator != default_separator:\n+ return text.replace(default_separator, separator)\n+ return text\n\\ No newline at end of file" + } + ], + "163": [ + { + "sha": "bf1fba834f8a8903a1fcabda369e4657edc05ba5", + "filename": "README.md", + "status": "modified", + "additions": 18, + "deletions": 8, + "changes": 26, + "blob_url": "https://github.com/un33k/python-slugify/blob/c1dade63954885f1409ee40596645ee5eb8c3c34/README.md", + "raw_url": "https://github.com/un33k/python-slugify/raw/c1dade63954885f1409ee40596645ee5eb8c3c34/README.md", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/README.md?ref=c1dade63954885f1409ee40596645ee5eb8c3c34", + "patch": "@@ -12,9 +12,13 @@\n \n # Notice\n \n-This module, by default installs and uses [text-unidecode](https://github.com/kmike/text-unidecode) _(GPL & Perl Artistic)_ for its decoding needs.\n+This module, by default installs and uses [anyascii](https://github.com/anyascii/anyascii) _(ISC License)_ for its decoding needs. This is a permissive, non-GPL alternative that works well for most use cases.\n \n-However, there is an alternative decoding package called [Unidecode](https://github.com/avian2/unidecode) _(GPL)_. It can be installed as `python-slugify[unidecode]` for those who prefer it. `Unidecode` is believed to be more [advanced](https://github.com/un33k/python-slugify/wiki/Python-Slugify-Wiki#notes-on-unidecode).\n+However, there are alternative decoding packages available:\n+- [Unidecode](https://github.com/avian2/unidecode) _(GPL)_ - Can be installed as `python-slugify[unidecode]`. Believed to be more [advanced](https://github.com/un33k/python-slugify/wiki/Python-Slugify-Wiki#notes-on-unidecode).\n+- [text-unidecode](https://github.com/kmike/text-unidecode) _(GPL & Perl Artistic)_ - Can be installed as `python-slugify[text-unidecode]`.\n+\n+The library will automatically use `unidecode` or `text-unidecode` (in that order) if either is installed, falling back to `anyascii` if neither is available.\n \n ### `Official` Support Matrix\n \n@@ -26,11 +30,16 @@ However, there is an alternative decoding package called [Unidecode](https://git\n \n # How to install\n \n- pip install python-slugify\n+```bash\n+# Default installation (uses anyascii - non-GPL)\n+pip install python-slugify\n \n- # OR\n+# With optional GPL-licensed Unidecode (more advanced)\n+pip install python-slugify[unidecode]\n \n- pip install python-slugify[unidecode]\n+# With optional text-unidecode (GPL or Perl Artistic)\n+pip install python-slugify[text-unidecode]\n+```\n \n # Options\n \n@@ -199,9 +208,10 @@ Please read the ([wiki](https://github.com/un33k/python-slugify/wiki/Python-Slug\n \n Released under a ([MIT](LICENSE)) license.\n \n-### Notes on GPL dependencies\n-Though the dependencies may be GPL licensed, `python-slugify` itself is not considered a derivative work and will remain under the MIT license. \n-If you wish to avoid installation of any GPL licensed packages, please note that the default dependency `text-unidecode` explicitly lets you choose to use the [Artistic License](https://opensource.org/license/artistic-perl-1-0-2/) instead. Use without concern.\n+### Notes on dependencies\n+The default dependency, `anyascii`, uses the permissive ISC License (similar to MIT), so there are no licensing concerns.\n+\n+If you choose to install the optional GPL-licensed packages (`unidecode` or `text-unidecode`), please note that `python-slugify` itself is not considered a derivative work and will remain under the MIT license.\n \n # Version\n " + }, + { + "sha": "f098cbc379dcf7999d08c0236581a57f671a5403", + "filename": "setup.py", + "status": "modified", + "additions": 5, + "deletions": 2, + "changes": 7, + "blob_url": "https://github.com/un33k/python-slugify/blob/c1dade63954885f1409ee40596645ee5eb8c3c34/setup.py", + "raw_url": "https://github.com/un33k/python-slugify/raw/c1dade63954885f1409ee40596645ee5eb8c3c34/setup.py", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/setup.py?ref=c1dade63954885f1409ee40596645ee5eb8c3c34", + "patch": "@@ -12,8 +12,11 @@\n python_requires = \">=3.7\"\n here = os.path.abspath(os.path.dirname(__file__))\n \n-install_requires = ['text-unidecode>=1.3']\n-extras_requires = {'unidecode': ['Unidecode>=1.1.1']}\n+install_requires = ['anyascii>=0.3.0']\n+extras_requires = {\n+ 'unidecode': ['Unidecode>=1.1.1'],\n+ 'text-unidecode': ['text-unidecode>=1.3']\n+}\n test_requires = []\n \n about = {}" + }, + { + "sha": "2241cfe3a475febf515fc0f06d272db5097c0f6d", + "filename": "slugify/slugify.py", + "status": "modified", + "additions": 18, + "deletions": 3, + "changes": 21, + "blob_url": "https://github.com/un33k/python-slugify/blob/c1dade63954885f1409ee40596645ee5eb8c3c34/slugify%2Fslugify.py", + "raw_url": "https://github.com/un33k/python-slugify/raw/c1dade63954885f1409ee40596645ee5eb8c3c34/slugify%2Fslugify.py", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/slugify%2Fslugify.py?ref=c1dade63954885f1409ee40596645ee5eb8c3c34", + "patch": "@@ -7,10 +7,25 @@\n \n try:\n import unidecode\n+ _DECODER = 'unidecode'\n except ImportError:\n- import text_unidecode as unidecode\n-\n-__all__ = ['slugify', 'smart_truncate']\n+ try:\n+ import text_unidecode as unidecode\n+ _DECODER = 'text_unidecode'\n+ except ImportError:\n+ from anyascii import anyascii\n+ # Create a wrapper module to match unidecode's API\n+ class _AnyasciiWrapper:\n+ @staticmethod\n+ def unidecode(text):\n+ return anyascii(text)\n+ unidecode = _AnyasciiWrapper()\n+ _DECODER = 'anyascii'\n+\n+__all__ = ['slugify', 'smart_truncate', 'SLUGIFY_DECODER']\n+\n+# Export the decoder being used for user reference\n+SLUGIFY_DECODER = _DECODER\n \n \n CHAR_ENTITY_PATTERN = re.compile(r'&(%s);' % '|'.join(name2codepoint))" + }, + { + "sha": "d2f276b9382a5f771324c4a75f0c03e19f15ad92", + "filename": "test.py", + "status": "modified", + "additions": 11, + "deletions": 2, + "changes": 13, + "blob_url": "https://github.com/un33k/python-slugify/blob/c1dade63954885f1409ee40596645ee5eb8c3c34/test.py", + "raw_url": "https://github.com/un33k/python-slugify/raw/c1dade63954885f1409ee40596645ee5eb8c3c34/test.py", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/test.py?ref=c1dade63954885f1409ee40596645ee5eb8c3c34", + "patch": "@@ -7,6 +7,7 @@\n from slugify import PRE_TRANSLATIONS\n from slugify import slugify\n from slugify import smart_truncate\n+from slugify import SLUGIFY_DECODER\n from slugify.__main__ import slugify_params, parse_args\n \n \n@@ -34,7 +35,11 @@ def test_non_word_characters(self):\n def test_phonetic_conversion_of_eastern_scripts(self):\n txt = '影師嗎'\n r = slugify(txt)\n- self.assertEqual(r, \"ying-shi-ma\")\n+ # anyascii produces different (but valid) output\n+ if SLUGIFY_DECODER == 'anyascii':\n+ self.assertEqual(r, \"yingshima\")\n+ else:\n+ self.assertEqual(r, \"ying-shi-ma\")\n \n def test_accented_text(self):\n txt = '𝐚́́𝕒́àáâäãąā'\n@@ -57,7 +62,11 @@ def test_accented_text_with_non_word_characters(self):\n def test_cyrillic_text(self):\n txt = 'Компьютер'\n r = slugify(txt)\n- self.assertEqual(r, \"kompiuter\")\n+ # anyascii produces different (but valid) output\n+ if SLUGIFY_DECODER == 'anyascii':\n+ self.assertEqual(r, \"kompyuter\")\n+ else:\n+ self.assertEqual(r, \"kompiuter\")\n \n def test_max_length(self):\n txt = 'jaja---lol-méméméoo--a'" + } + ] + }, + "dispositions": { + "1": { + "disposition": "Addressed", + "reason": "Separator shipped manually in 0.0.4 per maintainer, although PR was not merged; current separator parameter exists. Do not restore patch." + }, + "2": { + "disposition": "Merged/addressed", + "reason": "Python 3 port merged; obsolete conversion machinery is superseded by Python >=3.10 support." + }, + "3": { + "disposition": "Superseded", + "reason": "Submitted truncation patch explicitly broke a single-word case and lacked tests; later #8 fixed length accounting. Preserve exact-fit/single-word regressions rather than this patch." + }, + "4": { + "disposition": "Merged/addressed", + "reason": "Python 3 file-reading fix merged; current packaging uses UTF-8 open calls." + }, + "5": { + "disposition": "Merged/addressed", + "reason": "Console entry point merged; currently setup.py:83. Later removal/restoration tracked in #114." + }, + "6": { + "disposition": "Addressed", + "reason": "Reporter resolved installation by reinstalling; traceback suggests a different slugify distribution. Include package-identity troubleshooting, not another Python 3 port." + }, + "7": { + "disposition": "Superseded", + "reason": "Original mandatory Unidecode concern evolved through #52/#70/#73/#130. Current default is text-unidecode; consolidate factual license/install documentation (theme T4), not historic legal assurances." + }, + "8": { + "disposition": "Merged/addressed", + "reason": "Exact-fit truncation fix merged; current next_len equality branch includes final word. Multi-character output length remains separate #47 work." + }, + "9": { + "disposition": "Merged/addressed", + "reason": "save_order implemented; discussion demonstrates one-two rather than one-two-four. Keep regression examples and #157 clarification." + }, + "10": { + "disposition": "Defer", + "reason": "Emoji naming has no agreed output contract; mixed text is cleaned and emoji-only can be empty. Document replacement/custom-regex options; do not promise automatic Unicode-name transliteration." + }, + "11": { + "disposition": "Addressed", + "reason": "Maintainer reports pycache removal in 1.0.2; recurrence #38 makes archive-content checks worthwhile (T5)." + }, + "12": { + "disposition": "Addressed", + "reason": "Deletion of 1.0.1 was acknowledged as irreversible; no code fix. Release policy should retain published files and distinguish yanking from deletion." + }, + "13": { + "disposition": "Merged/addressed", + "reason": "Python-version classifiers added; historical values superseded by modern support matrix." + }, + "14": { + "disposition": "Addressed", + "reason": "Stopwords feature delivered by #15 and still implemented." + }, + "15": { + "disposition": "Merged/addressed", + "reason": "Stopword implementation merged; retain alternate separator and case-sensitive tests from #22/#54." + }, + "16": { + "disposition": "Merged/addressed", + "reason": "Python 3 chr/unichr entity crash fixed; current implementation uses chr." + }, + "17": { + "disposition": "Addressed", + "reason": "French apostrophe versus generated Cyrillic apostrophe conflict handled by #23; preserve pre/post distinction. Curly/entity quotes remain T3." + }, + "18": { + "disposition": "Superseded", + "reason": "Author replaced this with #20; naive replacement broke Cyrillic phonetic apostrophes. Final solution #23, not this patch." + }, + "19": { + "disposition": "Merged/addressed", + "reason": "Numeric test cases merged; preserve number punctuation examples." + }, + "20": { + "disposition": "Superseded", + "reason": "comma_replacement proposal actually targeted apostrophes; #23 resolved original French use case without this parameter." + }, + "21": { + "disposition": "Merged/addressed", + "reason": "Single lowercase pass merged; current lower() call occurs once after normalization." + }, + "22": { + "disposition": "Merged/addressed", + "reason": "Stopwords split on internal dash, not final separator; implementation remains consistent with historical contract." + }, + "23": { + "disposition": "Merged/addressed", + "reason": "Two-stage apostrophe fix merged and released as 1.2.0; do not regress Cyrillic handling." + }, + "24": { + "disposition": "Addressed", + "reason": "Unicode-preserving mode later delivered in #111 despite initial rejection." + }, + "25": { + "disposition": "Superseded", + "reason": "Console command already existed; current __main__.py also supports python -m slugify. No additional script entry point needed." + }, + "26": { + "disposition": "Merged/addressed", + "reason": "License manifest inclusion merged for downstream packaging; current MANIFEST includes LICENSE." + }, + "27": { + "disposition": "Addressed", + "reason": "Requested packaging release confirmed by maintainer; no outstanding implementation." + }, + "28": { + "disposition": "Defer", + "reason": "Conda recipe was declined; keep distribution-specific recipes downstream unless packaging maintainers request ownership. Do not revive an old raw recipe." + }, + "29": { + "disposition": "Addressed", + "reason": "English apostrophe preference can use explicit replacements; global apostrophe removal would regress #17. Explain options alongside curly-quote differences (T3)." + }, + "30": { + "disposition": "Revive", + "reason": "ASCII and right-curly apostrophes still differ in default ASCII mode; source QUOTE_PATTERN only matches ASCII. Specify consistent input quote handling without altering generated transliteration quotes (T3)." + }, + "31": { + "disposition": "Addressed", + "reason": "Case preservation delivered later by #54 via lowercase=False." + }, + "32": { + "disposition": "Superseded", + "reason": "RST request addressed by #34; current PyPI supports Markdown and setup declares text/markdown. Do not revert to RST." + }, + "33": { + "disposition": "Addressed", + "reason": "Historical Python 3.6 CI request confirmed done; version now EOL and outside support." + }, + "34": { + "disposition": "Merged/addressed", + "reason": "RST conversion merged historically; superseded by modern Markdown support." + }, + "35": { + "disposition": "Defer", + "reason": "Old Python 2 traceback points to site-packages/slugify.py rather than this package directory; no confirmed current defect. Package-identity guidance is useful." + }, + "36": { + "disposition": "Merged/addressed", + "reason": "Custom disallowed-character regex supported; terminology subsequently fixed in #109." + }, + "37": { + "disposition": "Superseded", + "reason": "Duplicate/follow-up to #36; maintainer confirms published regex support although merge field is null." + }, + "38": { + "disposition": "Addressed", + "reason": "Reporter confirmed 1.2.4 solved pycache/marshal archive failure; #39 fix. Retain clean archive verification (T5)." + }, + "39": { + "disposition": "Merged/addressed", + "reason": "Packaging discovery fix merged for #38. Current explicit package list avoids old recursive cache inclusion." + }, + "40": { + "disposition": "Merged/addressed", + "reason": "Changelog version typo corrected; no unresolved feature." + }, + "41": { + "disposition": "Defer", + "reason": "Reporter could not reproduce CLI failure outside conda-build and closed it; current command exists. Installed-artifact smoke testing remains useful via #43." + }, + "42": { + "disposition": "Merged/addressed", + "reason": "Restored manifest/LICENSE after packaging changes; preserve license in distributions." + }, + "43": { + "disposition": "Revive", + "reason": "Closed by author as conda-only, but non-editable installation plus actual slugify --help smoke test is valuable. Modernize as clean wheel/sdist tests, not Travis patch (T5; Patrick Sodré)." + }, + "44": { + "disposition": "Defer", + "reason": "Context-sensitive Chinese readings require language-aware conversion beyond fixed transliteration tables; document external preprocessing, no global table correction." + }, + "45": { + "disposition": "Addressed", + "reason": "Locale-specific choices are available through replacements and GERMAN/PRE_TRANSLATIONS; not automatic language detection. Improve recipes with #120." + }, + "46": { + "disposition": "Superseded", + "reason": "text-unidecode default eventually delivered by #73. No need to replay this dependency swap." + }, + "47": { + "disposition": "Revive", + "reason": "High-value closed-unmerged proposal: literal hyphens cannot survive custom separator, and max_length ignores separator expansion. Reproduced both; redesign rather than apply unsafe old regex construction (T1; Klaas Hoekema)." + }, + "48": { + "disposition": "Revive", + "reason": "README remains a long unittest-style example block. Restore proposal's concise Python/CLI quickstart while keeping an option reference and focused cookbook (T6; Klaas Hoekema)." + }, + "49": { + "disposition": "Superseded", + "reason": "Duplicate mandatory-Unidecode licensing concern; current alternatives/docs covered by #73/#130, factual clarification still T4." + }, + "50": { + "disposition": "Superseded", + "reason": "Airflow licensing discussion led to #52; do not use comments as a binding legal conclusion. Current installation differs from original report." + }, + "51": { + "disposition": "Superseded", + "reason": "Reporter acknowledged duplicate; consolidate dependency facts under T4 instead of another license debate." + }, + "52": { + "disposition": "Superseded", + "reason": "Conditional dependency implemented in #53 but failed for built artifacts; #73 replaced environment-dependent packaging. Do not restore env switches." + }, + "53": { + "disposition": "Merged/addressed", + "reason": "Alternative API/dependency hook merged, then superseded because build-time detection was unreliable (#59/#70)." + }, + "54": { + "disposition": "Merged/addressed", + "reason": "lowercase=False and case-sensitive stopword behavior implemented." + }, + "55": { + "disposition": "Defer", + "reason": "Latin/CJK boundary segmentation is not provided by fixed transliteration. Document preprocessing; do not infer language boundaries silently." + }, + "56": { + "disposition": "Addressed", + "reason": "Python 3.7 CI delivered in #75/#77; obsolete for current >=3.10 floor." + }, + "57": { + "disposition": "Superseded", + "reason": "Complex transitional Travis 3.7 matrix was declined; #75/#77 delivered support. No revival on retired CI." + }, + "58": { + "disposition": "Defer", + "reason": "Missing pkg_resources in Python 2 environment was not reproduced by maintainer; modern build backend supersedes old installation path." + }, + "59": { + "disposition": "Superseded", + "reason": "Discussion correctly identifies cached/build-time dependency metadata; later #73 solved default dependency selection. Retain clean wheel tests rather than &&/semicolon workaround." + }, + "60": { + "disposition": "Addressed", + "reason": "Requested release containing lowercase=False was published as 1.2.6." + }, + "61": { + "disposition": "Defer", + "reason": "Editor ignore change is contributor-local housekeeping, not release functionality; use personal excludes rather than revive failed historical PR." + }, + "62": { + "disposition": "Addressed", + "reason": "Raw regex literals now prevent invalid escape warnings; maintainer links #63." + }, + "63": { + "disposition": "Merged/addressed", + "reason": "2.0 fallback/cleanup merged; installation detection later superseded by #73. Current runtime preference is #126." + }, + "64": { + "disposition": "Merged/addressed", + "reason": "word_boundary naming aligned; current public utility and slugify agree." + }, + "65": { + "disposition": "Superseded", + "reason": "Rebased/renamed into merged #66/#67; replacements already exist." + }, + "66": { + "disposition": "Merged/addressed", + "reason": "User replacement feature merged; ambiguous two-pass semantics remain separate T2 work." + }, + "67": { + "disposition": "Merged/addressed", + "reason": "Release integration for replacements; retain credit to @andriyor. Stage contract remains T2." + }, + "68": { + "disposition": "Addressed", + "reason": "Extras request delivered through #71–#73; extras are additive and do not remove required text-unidecode. Explain this explicitly (T4)." + }, + "69": { + "disposition": "Defer", + "reason": "Python 2 normalization report mirrors #35 and likely conflicting module; unsupported environment, no confirmed present bug." + }, + "70": { + "disposition": "Addressed", + "reason": "Isolated-build dependency detection problem addressed by fixed text-unidecode base requirement in 3.0/#73." + }, + "71": { + "disposition": "Merged/addressed", + "reason": "Intermediate extras implementation merged; exact dependency ordering superseded by #73/#126." + }, + "72": { + "disposition": "Merged/addressed", + "reason": "Extras integration merged; preserve simple default install and explain additive optional packages." + }, + "73": { + "disposition": "Merged/addressed", + "reason": "text-unidecode became required default; runtime Unidecode preference subsequently corrected in #126." + }, + "74": { + "disposition": "Revive", + "reason": "Merged test.py-in-sdist change is no longer expressed in current MANIFEST. #141 reports actual missing archive tests. Restore explicit test inclusion and inspect built archives (T5; @jayvdb)." + }, + "75": { + "disposition": "Merged/addressed", + "reason": "Python 3.7 Travis support delivered; superseded by contemporary tox matrix." + }, + "76": { + "disposition": "Defer", + "reason": "Document/form-local uniqueness is a legitimate use case, contrary to broad dismissal, but old helper exceeds max_length with suffixes and mishandles positional separator. Offer optional recipe, not implicit global state (T7; Steve Loria)." + }, + "77": { + "disposition": "Merged/addressed", + "reason": "3.7/PyPy support integration; historical interpreters superseded by #160/#164." + }, + "78": { + "disposition": "Addressed", + "reason": "Unicode retention delivered by #111; language-specific transliteration accuracy still belongs to backend/preprocessing." + }, + "79": { + "disposition": "Addressed", + "reason": "Reporter found correct three independent flags: entities, decimal, hexadecimal. Preserve explicit disabling examples; encoded non-Latin pipeline discrepancy is T3." + }, + "80": { + "disposition": "Addressed", + "reason": "Option reference exists in README; quickstart and stage interactions still deserve T6 improvements." + }, + "81": { + "disposition": "Revive", + "reason": "Repeated namespace collision warrants prominent pip-install versus import-name troubleshooting, not a breaking namespace rename; corroborated by #151 (T6)." + }, + "82": { + "disposition": "Addressed", + "reason": "text-unidecode 1.2 pin conflict fixed in #83; current >=1.3 lower bound avoids old exact pin." + }, + "83": { + "disposition": "Merged/addressed", + "reason": "Dependency bump resolved #82 and shipped 3.0.4." + }, + "84": { + "disposition": "Superseded", + "reason": "Duplicate dependency bump; author directed to merged #83 and confirmed response." + }, + "85": { + "disposition": "Addressed", + "reason": "German substitutions available via replacements and GERMAN; corrected community example should inform cookbook. Case preservation works with lowercase=False." + }, + "86": { + "disposition": "Addressed", + "reason": "Maintainer moved migration gotchas to wiki; bring critical install/entity/backend facts into versioned documentation, not only external wiki (T6)." + }, + "87": { + "disposition": "Merged/addressed", + "reason": "EOL cleanup, python_requires and CI modernization merged; current support floor is newer." + }, + "88": { + "disposition": "Merged/addressed", + "reason": "4.0 release integration; historical support values superseded." + }, + "89": { + "disposition": "Merged/addressed", + "reason": "SVG/HTTPS badge improvement merged; badge destination mismatch persists under #165 follow-up." + }, + "90": { + "disposition": "Addressed", + "reason": "Default ASCII/dash output is suitable as URL component text, not a guarantee for arbitrary custom regex/separator/Unicode. Add clear scoped guarantee and empty-output note." + }, + "91": { + "disposition": "Revive", + "reason": "Same literal-hyphen versus separator conflict as #47/#107; preserve historic behavior as migration baseline and decide version-9 semantics (T1)." + }, + "92": { + "disposition": "Revive", + "reason": "Full CLI merged but regex_pattern is parsed and never forwarded. Current source disproves all-options parity; add real CLI-to-API regression rather than parameter mocks alone (T5; @jdevera original contribution)." + }, + "93": { + "disposition": "Defer", + "reason": "bdist_wheel unavailable is an old build-environment/tooling failure, not slug algorithm bug. Modern isolated build and published pure-Python wheels are the remedy (T5)." + }, + "94": { + "disposition": "Revive", + "reason": "Replacing '-' affects newly generated separators on the second pass, exactly as current code shows. Introduce documented stage semantics rather than sentinel workaround (T2)." + }, + "95": { + "disposition": "Addressed", + "reason": "Typeshed notice followed by inline annotations and py.typed in #135/#137; strict mypy in #160. No second stub distribution needed." + }, + "96": { + "disposition": "Revive", + "reason": "Publish/check universal pure-Python wheels; manylinux native builds are unnecessary. Historical report not proof of current PyPI inventory; release artifact verification still needed (T5)." + }, + "97": { + "disposition": "Defer", + "reason": "Reporter withdrew request because its own application rejected consecutive dashes. Keep default collapse; explicit output customization belongs to T1/T2, not a blanket default change." + }, + "98": { + "disposition": "Merged/addressed", + "reason": "Initial tox matrix merged, later removed and restored in #160; modern matrix now exists." + }, + "99": { + "disposition": "Merged/addressed", + "reason": "Removed stale Python 3.5 tox env; current matrix has no such env." + }, + "100": { + "disposition": "Merged/addressed", + "reason": "Simplified Python requirement then regressed in v6/#115; current >=3.10 correct for current source." + }, + "101": { + "disposition": "Defer", + "reason": "Maintainer access/continuity remains an operational decision; comments show collaborators volunteered, but public research cannot verify permissions or current availability." + }, + "102": { + "disposition": "Merged/addressed", + "reason": "Replacement annotation improved to nested iterable. Current contract still permits one-shot iterators, relevant to T2, not grounds to replay historical patch." + }, + "103": { + "disposition": "Addressed", + "reason": "Maintainer confirmed missing 5.0.2 tag created; preserve tag/artifact consistency in release checklist." + }, + "104": { + "disposition": "Superseded", + "reason": "Contributor correctly explained negative regex semantics despite initial rejection; #109 later fixed names/docs. Credit historical diagnosis, no pending wording fix of the same kind." + }, + "105": { + "disposition": "Defer", + "reason": "Emoji-only empty output expected under default filter/backend; document fallback and explicit emoji handling rather than promise automatic names." + }, + "106": { + "disposition": "Decline", + "reason": "Author explicitly reported wrong repository; no python-slugify defect or action." + }, + "107": { + "disposition": "Revive", + "reason": "Repeated real inability to preserve allowed literal dashes under '_' separator; placeholder workaround is collision-prone. Consolidate with #47/#91 (T1)." + }, + "108": { + "disposition": "Addressed", + "reason": "GitHub Actions now implemented; current main workflow runs pull requests and master pushes." + }, + "109": { + "disposition": "Merged/addressed", + "reason": "Actually merged after initial closure discussion; current DISALLOWED naming and docs match re.sub. Do not classify as rejected solely from comments." + }, + "110": { + "disposition": "Superseded", + "reason": "Temporary typing rollback supported accidental Python 2 users; current >=3.10 metadata and typed source supersede it. Do not remove annotations again." + }, + "111": { + "disposition": "Merged/addressed", + "reason": "allow_unicode implemented with NFKC and Unicode filter, not exact Unicode preservation; #153 identifies remaining normalization nuance." + }, + "112": { + "disposition": "Superseded", + "reason": "Python 3.4 typing import failure addressed temporarily by #113; outside support now. Preserve correct package metadata and migration pins." + }, + "113": { + "disposition": "Merged/addressed", + "reason": "Temporary type-hint removal merged, then superseded by modern typed-only support. No rollback recommended." + }, + "114": { + "disposition": "Addressed", + "reason": "CLI entry point restored in 6.1.2 and present today; prevent recurrence by installed-wheel CLI smoke tests (T5)." + }, + "115": { + "disposition": "Addressed", + "reason": "Current metadata no longer admits Python 2; historical releases cannot be repaired by editing current setup. Document last compatible releases; any yanking is separate explicit release governance." + }, + "116": { + "disposition": "Merged/addressed", + "reason": "Public version import added; no outstanding change requested." + }, + "117": { + "disposition": "Addressed", + "reason": "Python 2 support dropped in 7.0; current floor is >=3.10." + }, + "118": { + "disposition": "Defer", + "reason": "Changing save_order default changes truncated URLs. #157 explains behavior; keep default unless explicit version-9 migration decision and corpus justify change." + }, + "119": { + "disposition": "Revive", + "reason": "Two-pass replacements remain undocumented and non-idempotent. Separate pre/post contracts and iterator semantics, protect legacy migration behavior (T2; Jacobo de Vera)." + }, + "120": { + "disposition": "Revive", + "reason": "README does not explain exported special.py tables or mixed-language risks. Add tested GERMAN/CYRILLIC/GREEK/PRE_TRANSLATIONS examples (T6; Jacobo de Vera)." + }, + "121": { + "disposition": "Merged/addressed", + "reason": "Python 3.11 support and EOL 3.6 removal merged; current matrix includes 3.11." + }, + "122": { + "disposition": "Defer", + "reason": "Japanese Kanji cannot be distinguished from Chinese without locale/context-aware backend; use external romanizer, avoid global special.py changes for ambiguous characters." + }, + "123": { + "disposition": "Defer", + "reason": "Meaningful double-hyphen output is domain-specific; default intentionally collapses runs. A documented postprocessing stage in T2 is safer than recommending allegedly unique sentinels." + }, + "124": { + "disposition": "Addressed", + "reason": "Unit tests existed in test.py; current pyproject declares testpaths. src-layout is optional packaging design, not evidence of missing tests." + }, + "125": { + "disposition": "Superseded", + "reason": "Author withdrew after discovering Unidecode support; #143 now normalizes stylized letters before conversion. Do not vendor 1,500-line confusables table as a slug security feature." + }, + "126": { + "disposition": "Merged/addressed", + "reason": "Unidecode now preferred when installed; text-unidecode stays required. Document environment-sensitive outputs and backend tests (T4)." + }, + "127": { + "disposition": "Revive", + "reason": "Fuzz harness offer valuable for interacting string options and numeric entities. Start local property/fuzz tests; OSS-Fuzz enrollment requires owner and disclosure-response commitment (T8; Rik @rikfie)." + }, + "128": { + "disposition": "Defer", + "reason": "allow_unicode still imports a transliteration backend at module import. Dependency-free Unicode mode needs packaging/API policy; investigate laziness/optional backend only if a concrete product requirement, not a legal assertion (T4)." + }, + "129": { + "disposition": "Superseded", + "reason": "Same licensing text rebased into merged #130; no lost contribution." + }, + "130": { + "disposition": "Merged/addressed", + "reason": "Artistic-license choice documented; later #166 shows explanatory language remains confusing. Revive clarity, not this exact patch." + }, + "131": { + "disposition": "Defer", + "reason": "Merged then explicitly reverted by #136 because CI cache setup failed, not proof Ruff is unsuitable. Optional modern lint migration, not a functional release blocker (T8; Christian Clauss)." + }, + "132": { + "disposition": "Revive", + "reason": "PR execution now covered by #160, but three branch-specific workflows remain. Consolidate safely after owner confirms branch policy; old diff does not itself prevent every duplicate run (T8; Christian Clauss)." + }, + "133": { + "disposition": "Defer", + "reason": "No filename failure example supplied; slugification is not portable filename validation. Document empty/reserved-name/length responsibilities rather than broad safe-filename flag." + }, + "134": { + "disposition": "Superseded", + "reason": "Strict typing proposal substantially delivered by #135/#137/#160. Do not replay runtime-error or argv changes; preserve Jamison Lahman's prior contribution context." + }, + "135": { + "disposition": "Merged/addressed", + "reason": "Inline annotations and py.typed merged, including empty-list return clarification; strict CI later added #160." + }, + "136": { + "disposition": "Merged/addressed", + "reason": "Explicit revert of #131; Ruff not currently active. Cache failure rationale is historical evidence, not a permanent design prohibition." + }, + "137": { + "disposition": "Merged/addressed", + "reason": "Typing release integration; current marker packaged via setup.py:61." + }, + "138": { + "disposition": "Addressed", + "reason": "Python 3.12 support delivered in #139." + }, + "139": { + "disposition": "Merged/addressed", + "reason": "3.12 classifier and test matrix merged; retained in current source." + }, + "140": { + "disposition": "Revive", + "reason": "Extra installs both distributions and runtime prefers Unidecode; README alternative wording still invites opposite interpretation. Clarify additive extras and reproducibility (T4)." + }, + "141": { + "disposition": "Revive", + "reason": "Historical PyPI sdist missed test.py despite #74. MANIFEST still omits it; verify modern setuptools defaults in an actual build and make inclusion explicit (T5)." + }, + "142": { + "disposition": "Addressed", + "reason": "Normalization-before-decoder fix in #143; current stylized-letter reproduction returns aa." + }, + "143": { + "disposition": "Merged/addressed", + "reason": "Double normalization merged. It fixes direct stylized letters, but does not transliterate non-Latin characters introduced by entity decoding (T3)." + }, + "144": { + "disposition": "Revive", + "reason": "Clarify str-only API versus legacy UTF-8 bytes decoding. int TypeError is expected for str-only contract, but bytes path is reachable; do not delete based on false unreachable-code assumption (T2)." + }, + "145": { + "disposition": "Superseded", + "reason": "Retargeted into merged #146/#147; compatibility cleanup already incorporated." + }, + "146": { + "disposition": "Merged/addressed", + "reason": "Old-version compatibility and regex typing corrections merged; retain reachable runtime bytes decision separately from #144." + }, + "147": { + "disposition": "Merged/addressed", + "reason": "8.0.3 release integration for #146." + }, + "148": { + "disposition": "Merged/addressed", + "reason": "Uppercase-table premature return fixed; current return is after loop. Preserve multi-character uppercase and empty-list tests." + }, + "149": { + "disposition": "Merged/addressed", + "reason": "Uppercase special-character fix release integration." + }, + "150": { + "disposition": "Decline", + "reason": "XML NCName policy is domain-specific and differs from general slug contract. Recommend external validation/prefixing with post-prefix length check." + }, + "151": { + "disposition": "Addressed", + "reason": "Traceback points to conflicting slugify module; maintainer shows correct package works. Add durable troubleshooting with #81, not another Unicode engine fix." + }, + "152": { + "disposition": "Merged/addressed", + "reason": "Wiki links fixed after long wait; branch confusion in discussion reinforces contribution-workflow docs, not another identical URL patch." + }, + "153": { + "disposition": "Revive", + "reason": "NFKC changes standalone Korean compatibility jamo even with allow_unicode. Reproduced U+314B -> U+110F. Clarify normalized retention and consider opt-in NFC/exact preservation policy (T3)." + }, + "154": { + "disposition": "Merged/addressed", + "reason": "3.13/PyPy matrix update merged; current #160 matrix supersedes old PyPy version." + }, + "155": { + "disposition": "Defer", + "reason": "Do not revive Radon-driven helper explosion wholesale: removes docstring and changes normalization/quote pipeline. Consider only cohesive entity helper under T3 with behavioral tests; credit @IvanChumakov if reused." + }, + "156": { + "disposition": "Revive", + "reason": "Debian maintainer offered CLI manpage; none present in current tree. Request/update source and license, keep argparse options synchronized (T6; Arian @Arian-Ott)." + }, + "157": { + "disposition": "Merged/addressed", + "reason": "save_order explanation improved and present in function/README. Default-policy question #118 remains consciously deferred." + }, + "158": { + "disposition": "Defer", + "reason": "Student Rust port is an external learning project, not evidence of a measured bottleneck. No native rewrite in version 9 without profiling/portability case." + }, + "159": { + "disposition": "Revive", + "reason": "Build fixes merged, but body explicitly warns against executable setup publishing and recommends declarative metadata. Current setup.py publish still uses deprecated universal wheel path and uploads/tags unchecked; complete modernization (T5; Kurt McKee)." + }, + "160": { + "disposition": "Merged/addressed", + "reason": "tox, dual backends, strict mypy and modern CI are now present; no need to rebuild them from scratch. Installed-artifact coverage still T5." + }, + "161": { + "disposition": "Merged/addressed", + "reason": "easy_install documentation removed; maintain pip/build guidance." + }, + "162": { + "disposition": "Superseded", + "reason": "GPL-only premise corrected by author in #166: text-unidecode offers Artistic choice. No automatic project relicensing; use factual dependency/license documentation (T4)." + }, + "163": { + "disposition": "Revive", + "reason": "Revive multilingual differential test corpus and backend visibility idea, not automatic AnyASCII default. Actual patch changes Chinese word boundaries and Cyrillic output; explicit backend choice only after compatibility decision (T4; Nathan Drezner)." + }, + "164": { + "disposition": "Merged/addressed", + "reason": "Python >=3.10 and 3.14 CI fixed. README support matrix still claims >=3.7 for all newer releases; synchronize before version 9 (T5)." + }, + "165": { + "disposition": "Revive", + "reason": "Badge image fixed, but link still targets ci.yml. Body's workflow-consolidation/release-follow-through suggestion remains useful; avoid stale health signals (T8; Kurt McKee)." + }, + "166": { + "disposition": "Revive", + "reason": "Open locked discussion contains concrete proposed dependency wording and reported customer confusion. Clarify installed package versus chosen license, not legal guarantees; no GitHub changes performed (T4; Nathan Drezner)." + } + } +} diff --git a/docs/release-9/historical-review.md b/docs/release-9/historical-review.md new file mode 100644 index 0000000..c9180e4 --- /dev/null +++ b/docs/release-9/historical-review.md @@ -0,0 +1,259 @@ +# Historical issue and pull-request review for release 9 + +## Scope and evidence + +Reviewed on 2026-09-08 against local commit `7b6d5d96c1995e6dccb39a19a13ba78d7d0a3ee4` of [un33k/python-slugify](https://github.com/un33k/python-slugify). **All 166 consecutive items #1–#166 are covered: 78 issues and 88 pull requests.** GitHub reports **64 merged PRs and 24 closed-unmerged PRs**, with no open PRs in this range; #166 is the only open issue. Closed does not mean fixed, and merged does not mean still present or released. + +Read every available item body and its repository-wide issue comments, inline review comments, and PR review summaries. Coverage: **427 issue/PR discussion comments, 16 inline comments, and 13 review records across all 88 PR endpoints**. Bodies and discussions, not titles alone, drive the decisions below. Fetched file diffs for all 24 closed-unmerged PRs; inspected the substantive candidate patches in depth (#3, #43, #47, #48, #76, #125, #132, #134, #155, #163). No implementation changes, full test suite, builds, installs, publishing, or remote mutations were performed. The small current-code reproductions below were explicitly requested independent validation of historical concerns, not a full regression certification. + +The adjacent [historical-evidence.json](historical-evidence.json) preserves the scoped public API evidence (including review records and unmerged file diffs), with authentication-shaped URLs redacted. Raw paginated responses are in session scratch `historical-166/`. All GitHub requests used public read-only `gh api` endpoints with pagination: `issues?state=all&per_page=100`, `pulls?state=all&per_page=100`, `issues/comments`, `pulls/comments`, and each PR's `reviews`; file diffs used `pulls/{number}/files`. Number filtering was applied locally because issues and PRs share a numbering space. Deleted comments, external screenshots, external linked discussions, and unavailable historical branch content cannot be reconstructed from this API snapshot. No claim is made that every external linked artifact was reviewed. + +**Disposition counts:** Addressed 35; Merged/addressed 59; Superseded 24; Defer 22; Revive 24; Decline 2. “Revive” includes follow-up to a merged item when its goal is incomplete or regressed, and can mean tests/docs rather than accepting original code. “Superseded” explicitly identifies a successor or changed premise. “Defer” means a legitimate but unproven/out-of-core/product-policy request; not a claim that its use case is invalid. + +## Release recommendations, in priority order + +### T1 — Separator semantics and actual output length (high priority) + +Sources: [#47](https://github.com/un33k/python-slugify/pull/47), [#91](https://github.com/un33k/python-slugify/issues/91), [#107](https://github.com/un33k/python-slugify/issues/107). **Revive Klaas Hoekema's (@KlaasH) intent and regression cases.** Current `slugify/slugify.py:171–195` substitutes an internal dash, truncates, then globally exchanges dashes for the requested separator. Independent reproduction: + +- `slugify('hyphen-having text FTW!', separator='_', regex_pattern=r'[^-a-z0-9]')` → `hyphen_having_text_ftw`, not the requested literal-hyphen-preserving output. +- `slugify('a b c', separator='---', max_length=5)` → `a---b---c` (9 characters). The documented output length is exceeded. + +Decide whether release 9 changes this contract or exposes an explicit compatibility mode. Count the final separator width when budgeting length; preserve input characters allowed by the caller independently of generated delimiters. Test multi-character and empty separators, regex metacharacters and backslashes, literal dashes/underscores, exact word fits, stopwords, and both save_order modes. **Do not cherry-pick #47 unchanged:** its dynamic character class interpolates an unescaped separator, `re.sub` replacement strings have escape semantics, the repeat regex quantifies only the last component for multi-character separators, and `strip(separator)` removes a character set rather than whole tokens. A token-based implementation avoids these traps without collision-prone sentinels. + +### T2 — Explicit replacement stages, iterables, and input contract (high priority) + +Sources: [#94](https://github.com/un33k/python-slugify/issues/94), [#119](https://github.com/un33k/python-slugify/issues/119), [#144](https://github.com/un33k/python-slugify/issues/144); related #65–#67, #102, #123. **Credit Jacobo de Vera (@jdevera) for the explicit pre/post proposal and @andriyor for original replacements.** Current `slugify/slugify.py:108–115,185–188` traverses replacements twice, before and after filtering. `slugify('a', replacements=[('a','aa')])` returns `aaaa`, not `aa`. Rules targeting '-' rewrite generated separators; a one-shot iterable cannot be replayed, so the accepted Iterable annotation exposes a real semantic distinction from lists. Post replacements also can reintroduce punctuation after filtering. + +Specify one-pass pre- and post-replacement contracts, with an explicit compatibility path for existing two-pass behavior. Choose whether final output validation occurs after postprocessing. Test list/generator equivalence if promised, ordered cascading rules, empty replacements, stopwords, separators, and output length. Current text annotation is str, but bytes decoding is reachable; integer failure does not prove the bytes branch dead. Decide to document strict str-only input or preserve deliberate UTF-8 bytes support, and enforce it before replacement calls. Do not infer consent to break bytes users from #144's mistaken unreachable-code claim. + +### T3 — Unicode, quotes, and entity decoding order (high priority) + +Sources: [#17](https://github.com/un33k/python-slugify/issues/17), [#30](https://github.com/un33k/python-slugify/issues/30), [#79](https://github.com/un33k/python-slugify/issues/79), [#142](https://github.com/un33k/python-slugify/issues/142), [#153](https://github.com/un33k/python-slugify/issues/153). Current `slugify/slugify.py:117–160` preprocesses only ASCII quotes, transliterates before decoding entities, then normalizes without retransliterating. + +Measured on the local interpreter/backend: + +| Input/options | Current output | Meaning | +|---|---|---| +| `Baby’s shoes` | `babys-shoes` | Curly input apostrophe becomes generated quote and is removed. | +| `Baby's shoes` | `baby-s-shoes` | ASCII input apostrophe is a separator. | +| `你` | empty string | Non-Latin entity decoded after transliteration is filtered away. | +| `你` | `ni` | Direct Unicode is transliterated. | +| `𝐚́́𝕒́` | `aa` | #143 already fixed direct stylized letters. | +| `ㅋ`, allow_unicode=True | `ᄏ` | NFKC changes U+314B to U+110F; retention is not exact preservation. | + +Retain separate named/decimal/hex flags (#79 was resolved by disabling all three). Add literal-versus-encoded non-Latin and quote equivalence tests, invalid numeric references mixed with valid ones, and backend-specific golden outputs before reorganizing stages. Broad exception handling around an entire numeric substitution (lines 136–147) is worth replacing with explicit per-reference policy, but this is a new behavior decision, not an already-verified fix. Preserve #17's distinction between input punctuation and backend-generated phonetic quotes. For #153, document normalization and consider an opt-in policy; do not silently change NFKC defaults or claim pre-replacements always preserve the original jamo. + +### T4 — Backend stability and factual licensing/install documentation (high priority docs; backend redesign gated) + +Sources: [#7](https://github.com/un33k/python-slugify/issues/7), #49–#53, #59, #68–#73, [#126](https://github.com/un33k/python-slugify/pull/126), [#128](https://github.com/un33k/python-slugify/issues/128), [#140](https://github.com/un33k/python-slugify/issues/140), [#163](https://github.com/un33k/python-slugify/pull/163), [#166](https://github.com/un33k/python-slugify/issues/166). **Revive Nathan Drezner's (@ndrezn) clarity and compatibility-test contributions, not the unconditional AnyASCII switch.** + +Source facts: `setup.py:14–15` always requires text-unidecode and adds Unidecode with the extra. `slugify/slugify.py:8–11` prefers Unidecode whenever installed, including an unrelated dependency installing it. Extras do not subtract base requirements. The discussion ultimately acknowledges text-unidecode's Artistic-or-GPL choice; its mere installation is not the same claim as choosing GPL terms. README already has an Artistic note (#130), but “alternative” and “GPL & Perl Artistic” wording is easy to misread. State actual installed packages, runtime selection, each offered license choice, and link to upstream license texts without categorical “no legal risk” promises. Historical comments are not legal authority, and this research did not independently audit all dependency licensing files. + +#163's examples show Chinese word-boundary differences and Greek beta differences; its patch changes actual test expectations from ying-shi-ma to yingshima and kompiuter to kompyuter. Preserve a multilingual differential corpus and consider explicit backend selection/visibility only with an output-stability plan. Users persisting URLs, keys, and filenames need migration guidance and must not have defaults changed merely because a major version permits it. Backend-free allow_unicode would need lazy imports plus an installation-contract decision; adding an extra alone cannot remove the mandatory base requirement. The discussion's assertion about AnyASCII requiring precompiled binaries was **not independently verified** and should not be repeated as a proven rejection rationale. + +### T5 — Installed artifacts, CLI parity, and complete packaging modernization (release gate) + +Sources: [#43](https://github.com/un33k/python-slugify/pull/43), [#74](https://github.com/un33k/python-slugify/pull/74), [#92](https://github.com/un33k/python-slugify/pull/92), #96, #114, [#141](https://github.com/un33k/python-slugify/issues/141), [#159](https://github.com/un33k/python-slugify/pull/159), #160/#164. **Credit Patrick Sodré (@sodre), @jayvdb, Jacobo de Vera (@jdevera), and Kurt McKee (@kurtmckee).** + +- Build clean sdist and universal pure-Python wheel, install them outside the checkout, and smoke-test both console script and module execution. #43 supplied this exact installed-command testing idea years before the command disappeared in #114. Do not add native manylinux machinery for a pure-Python package. +- Fix CLI parity: `slugify/__main__.py:35–36` parses regex_pattern but `:68–82` omits it from the forwarded dict. Independent parse/forward reproduction confirms the missing key. Add a real command output test with underscores/custom pattern; existing parameter mocks can codify the omission. +- Explicitly include test.py in sdist, preserve LICENSE and py.typed, exclude caches. #74 was merged, but current `MANIFEST.in:1–3` only lists license/README/changelog and #141 reported missing tests. Modern setuptools might auto-include tests; **archive contents must be measured before claiming this still fails**. No build was run in this read-only review. +- Complete #159's warning: `setup.py:29–46` still shells out to deprecated universal-wheel build, upload, and tag commands without checking results. Replace release procedure with modern build/validation and separately authorized publishing; do not run the existing publish shortcut in this research. +- Synchronize `README.md:19–25` support matrix with `setup.py:11` and #160/#164's >=3.10 baseline. Strict mypy and dual-backend tox already exist; preserve them rather than count them as missing work. + +### T6 — A short quickstart plus a precise cookbook (high-value low-risk revival) + +Sources: [#48](https://github.com/un33k/python-slugify/pull/48), [#81](https://github.com/un33k/python-slugify/issues/81), #85/#86, [#120](https://github.com/un33k/python-slugify/issues/120), [#156](https://github.com/un33k/python-slugify/issues/156). **Credit Klaas Hoekema, Jacobo de Vera, and Arian (@Arian-Ott; public profile name is only “Arian”).** README still uses self.assertEqual outside a runnable unittest context. Provide a minimal standalone Python and CLI example, retain complete option definitions, and move advanced interactions into tested recipes. Include install-name/import-name distinction, all three entity flags, empty outputs, normalized Unicode retention, limits of URL/filename/XML safety, explicit locale substitutions, and accurate special.py exports. Request the Debian manpage and its license/attribution before importing; none is present here and no manpage PR <=166 supplies its content. Do not invent its text or claim it was already contributed. + +### T7 — Uniqueness is useful but must be explicitly scoped (defer core API) + +Source: [#76](https://github.com/un33k/python-slugify/pull/76), **Steve Loria (@sloria)**. Document-local heading IDs and form-local IDs are valid even in multi-instance applications; the historical global-uniqueness objection does not negate them. Still, the submitted stateful class appends suffixes past max_length, infers separator only from kwargs, and provides no persistent/concurrent uniqueness. Offer a tested caller-owned recipe or separate optional utility only if requested, with collision domain, suffix budget, empty-base and preexisting-suffix behavior stated. Never describe it as database uniqueness. + +### T8 — Development workflow and fuzzing (selective follow-up) + +Sources: [#127](https://github.com/un33k/python-slugify/issues/127), [#131](https://github.com/un33k/python-slugify/pull/131), [#132](https://github.com/un33k/python-slugify/pull/132), [#165](https://github.com/un33k/python-slugify/pull/165). **Credit Rik (@rikfie), Christian Clauss (@cclauss), and Kurt McKee.** #160 already enables strict mypy, both backends, and PR testing. Consolidate duplicate workflow definitions only after documenting which branch receives contributions; #132/#152 explain why historical branch targeting caused friction. The old #132 diff is not a complete duplicate-run suppression solution. #131 was merged and reverted (#136) because setup-python cache discovery failed; modern Ruff migration is optional, not a correctness gate. The current badge image targets main.yml while its clickable link targets ci.yml (README:214–215). + +Start bounded fuzz/property tests for numeric references, length, idempotence under documented options, Unicode normalization, and iterable/replacement interactions. Rik's OSS-Fuzz offer includes a 90-day disclosure-response expectation; external enrollment and publishing a maintainer address require a willing owner and are **not authorized by this read-only research**. Keep cleanup of #155 separate from behavior changes; smaller coherent helpers are better than splitting every conditional just to lower a complexity score. + +## Every historical item + +PR state is the API merged_at field, not inference from a closing comment. Linked titles and public account handles are retained for attribution. Theme references above contain deeper recommendations and acceptance criteria. + +| # | Item / author | API status | Disposition | Rationale / follow-up | +|---|---|---|---|---| +| 1 | [Separator argument added.](https://github.com/un33k/python-slugify/pull/1) · @fedale | PR closed, unmerged | Addressed | Separator shipped manually in 0.0.4 per maintainer, although PR was not merged; current separator parameter exists. Do not restore patch. | +| 2 | [Support python 3](https://github.com/un33k/python-slugify/pull/2) · @arthurdarcet | PR merged 2013-05-21 | Merged/addressed | Python 3 port merged; obsolete conversion machinery is superseded by Python >=3.10 support. | +| 3 | [word_boundary problem](https://github.com/un33k/python-slugify/pull/3) · @voronind | PR closed, unmerged | Superseded | Submitted truncation patch explicitly broke a single-word case and lacked tests; later #8 fixed length accounting. Preserve exact-fit/single-word regressions rather than this patch. | +| 4 | [fix file reading in python 3](https://github.com/un33k/python-slugify/pull/4) · @pudo | PR merged 2014-01-05 | Merged/addressed | Python 3 file-reading fix merged; current packaging uses UTF-8 open calls. | +| 5 | [Console entry point](https://github.com/un33k/python-slugify/pull/5) · @ekamil | PR merged 2014-08-17 | Merged/addressed | Console entry point merged; currently setup.py:83. Later removal/restoration tracked in #114. | +| 6 | [Python 3 support?](https://github.com/un33k/python-slugify/issues/6) · @jleclanche | Issue closed | Addressed | Reporter resolved installation by reinstalling; traceback suggests a different slugify distribution. Include package-identity troubleshooting, not another Python 3 port. | +| 7 | [python-slugify depends on a GPL library](https://github.com/un33k/python-slugify/issues/7) · @sekrause | Issue closed | Superseded | Original mandatory Unidecode concern evolved through #52/#70/#73/#130. Current default is text-unidecode; consolidate factual license/install documentation (theme T4), not historic legal assurances. | +| 8 | [Fix bug (len of output string)](https://github.com/un33k/python-slugify/pull/8) · @dioexul | PR merged 2015-02-22 | Merged/addressed | Exact-fit truncation fix merged; current next_len equality branch includes final word. Multi-character output length remains separate #47 work. | +| 9 | [Add parameter 'save_order'.](https://github.com/un33k/python-slugify/pull/9) · @dioexul | PR merged 2015-02-26 | Merged/addressed | save_order implemented; discussion demonstrates one-two rather than one-two-four. Keep regression examples and #157 clarification. | +| 10 | [Emoticons fail](https://github.com/un33k/python-slugify/issues/10) · @powtac | Issue closed | Defer | Emoji naming has no agreed output contract; mixed text is cleaned and emoji-only can be empty. Document replacement/custom-regex options; do not promise automatic Unicode-name transliteration. | +| 11 | [PyPi packages include __pycache__ directory](https://github.com/un33k/python-slugify/issues/11) · @AcidWeb | Issue closed | Addressed | Maintainer reports pycache removal in 1.0.2; recurrence #38 makes archive-content checks worthwhile (T5). | +| 12 | [python-slugify==1.0.1 disappeared from PyPi](https://github.com/un33k/python-slugify/issues/12) · @kurevin | Issue closed | Addressed | Deletion of 1.0.1 was acknowledged as irreversible; no code fix. Release policy should retain published files and distinguish yanking from deletion. | +| 13 | [Add Python versions to setup.py classifiers.](https://github.com/un33k/python-slugify/pull/13) · @kengruven | PR merged 2015-05-05 | Merged/addressed | Python-version classifiers added; historical values superseded by modern support matrix. | +| 14 | [Support a stop-word list when slugifying](https://github.com/un33k/python-slugify/issues/14) · @euangoddard | Issue closed | Addressed | Stopwords feature delivered by #15 and still implemented. | +| 15 | [Add support for stopwords](https://github.com/un33k/python-slugify/pull/15) · @euangoddard | PR merged 2015-05-06 | Merged/addressed | Stopword implementation merged; retain alternate separator and case-sensitive tests from #22/#54. | +| 16 | [unichr is not defined in python 3](https://github.com/un33k/python-slugify/pull/16) · @arthurdarcet | PR merged 2015-07-03 | Merged/addressed | Python 3 chr/unichr entity crash fixed; current implementation uses chr. | +| 17 | [\' shoud be replaced by separator](https://github.com/un33k/python-slugify/issues/17) · @sfermigier | Issue closed | Addressed | French apostrophe versus generated Cyrillic apostrophe conflict handled by #23; preserve pre/post distinction. Curly/entity quotes remain T3. | +| 18 | [quotes are replaced by -, bump to 1.1.4](https://github.com/un33k/python-slugify/pull/18) · @nMustaki | PR closed, unmerged | Superseded | Author replaced this with #20; naive replacement broke Cyrillic phonetic apostrophes. Final solution #23, not this patch. | +| 19 | [Add test cases containing numbers](https://github.com/un33k/python-slugify/pull/19) · @edunham | PR merged 2015-09-21 | Merged/addressed | Numeric test cases merged; preserve number punctuation examples. | +| 20 | [Comma separator parameter](https://github.com/un33k/python-slugify/pull/20) · @nMustaki | PR closed, unmerged | Superseded | comma_replacement proposal actually targeted apostrophes; #23 resolved original French use case without this parameter. | +| 21 | [Only call .lower() once](https://github.com/un33k/python-slugify/pull/21) · @kengruven | PR merged 2015-10-07 | Merged/addressed | Single lowercase pass merged; current lower() call occurs once after normalization. | +| 22 | [Stopword replacement bug (different separators)](https://github.com/un33k/python-slugify/pull/22) · @lucaswo | PR merged 2015-12-12 | Merged/addressed | Stopwords split on internal dash, not final separator; implementation remains consistent with historical contract. | +| 23 | [Fixed issue #17](https://github.com/un33k/python-slugify/pull/23) · @fabiocaccamo | PR merged 2016-01-16 | Merged/addressed | Two-stage apostrophe fix merged and released as 1.2.0; do not regress Cyrillic handling. | +| 24 | [Support only sanitizing URL without stripping unicode?](https://github.com/un33k/python-slugify/issues/24) · @jeffwidman | Issue closed | Addressed | Unicode-preserving mode later delivered in #111 despite initial rejection. | +| 25 | [enabling cli usage](https://github.com/un33k/python-slugify/pull/25) · @theeluwin | PR closed, unmerged | Superseded | Console command already existed; current __main__.py also supports python -m slugify. No additional script entry point needed. | +| 26 | [Create MANIFEST.in](https://github.com/un33k/python-slugify/pull/26) · @proinsias | PR merged 2016-08-25 | Merged/addressed | License manifest inclusion merged for downstream packaging; current MANIFEST includes LICENSE. | +| 27 | [Create new release?](https://github.com/un33k/python-slugify/issues/27) · @proinsias | Issue closed | Addressed | Requested packaging release confirmed by maintainer; no outstanding implementation. | +| 28 | [Add a raw meta.yaml for conda packaging.](https://github.com/un33k/python-slugify/pull/28) · @feth | PR closed, unmerged | Defer | Conda recipe was declined; keep distribution-specific recipes downstream unless packaging maintainers request ownership. Do not revive an old raw recipe. | +| 29 | [Slugify thinks apostrophes are significant](https://github.com/un33k/python-slugify/issues/29) · @BonkaBonka | Issue closed | Addressed | English apostrophe preference can use explicit replacements; global apostrophe removal would regress #17. Explain options alongside curly-quote differences (T3). | +| 30 | [\u2019 should be replaced by a separator](https://github.com/un33k/python-slugify/issues/30) · @ghost | Issue closed | Revive | ASCII and right-curly apostrophes still differ in default ASCII mode; source QUOTE_PATTERN only matches ASCII. Specify consistent input quote handling without altering generated transliteration quotes (T3). | +| 31 | [Option to preserve case](https://github.com/un33k/python-slugify/issues/31) · @cjauvin | Issue closed | Addressed | Case preservation delivered later by #54 via lowercase=False. | +| 32 | [Convert Markdown to reStructuredText](https://github.com/un33k/python-slugify/issues/32) · @egorsmkv | Issue closed | Superseded | RST request addressed by #34; current PyPI supports Markdown and setup declares text/markdown. Do not revert to RST. | +| 33 | [Add Python 3.6 to Travis](https://github.com/un33k/python-slugify/issues/33) · @egorsmkv | Issue closed | Addressed | Historical Python 3.6 CI request confirmed done; version now EOL and outside support. | +| 34 | [Pull Request for Issue #32](https://github.com/un33k/python-slugify/pull/34) · @egorsmkv | PR merged 2017-03-31 | Merged/addressed | RST conversion merged historically; superseded by modern Markdown support. | +| 35 | [Getting Unicode error on Ubuntu Platform, Same code is working on windows](https://github.com/un33k/python-slugify/issues/35) · @baid86 | Issue closed | Defer | Old Python 2 traceback points to site-packages/slugify.py rather than this package directory; no confirmed current defect. Package-identity guidance is useful. | +| 36 | [Added possibility to include custom regex as allowed characters](https://github.com/un33k/python-slugify/pull/36) · @vrbaskiz | PR merged 2017-03-31 | Merged/addressed | Custom disallowed-character regex supported; terminology subsequently fixed in #109. | +| 37 | [Added possibility to include custom regex as allowed characters](https://github.com/un33k/python-slugify/pull/37) · @vrbaskiz | PR closed, unmerged | Superseded | Duplicate/follow-up to #36; maintainer confirms published regex support although merge field is null. | +| 38 | [Error installing version 1.2.2 with buildout](https://github.com/un33k/python-slugify/issues/38) · @ericdupo | Issue closed | Addressed | Reporter confirmed 1.2.4 solved pycache/marshal archive failure; #39 fix. Retain clean archive verification (T5). | +| 39 | [Closes #38: use find_packages() rather than home-grown get_packages and get_package_data](https://github.com/un33k/python-slugify/pull/39) · @reece | PR merged 2017-04-10 | Merged/addressed | Packaging discovery fix merged for #38. Current explicit package list avoids old recursive cache inclusion. | +| 40 | [Update CHANGELOG.md - didn't you mean `1.2.4`?](https://github.com/un33k/python-slugify/pull/40) · @loisaidasam | PR merged 2017-05-08 | Merged/addressed | Changelog version typo corrected; no unresolved feature. | +| 41 | [I can't start slugify from the command-line](https://github.com/un33k/python-slugify/issues/41) · @sodre | Issue closed | Defer | Reporter could not reproduce CLI failure outside conda-build and closed it; current command exists. Installed-artifact smoke testing remains useful via #43. | +| 42 | [Create MANIFEST.in](https://github.com/un33k/python-slugify/pull/42) · @proinsias | PR merged 2017-05-08 | Merged/addressed | Restored manifest/LICENSE after packaging changes; preserve license in distributions. | +| 43 | [[WIP] Replicate #41 in Travis build](https://github.com/un33k/python-slugify/pull/43) · @sodre | PR closed, unmerged | Revive | Closed by author as conda-only, but non-editable installation plus actual slugify --help smoke test is valuable. Modernize as clean wheel/sdist tests, not Travis patch (T5; Patrick Sodré). | +| 44 | [Slugifying Chinese characters with multiple readings](https://github.com/un33k/python-slugify/issues/44) · @imrek | Issue closed | Defer | Context-sensitive Chinese readings require language-aware conversion beyond fixed transliteration tables; document external preprocessing, no global table correction. | +| 45 | [Slugifying Danish, Norwegian, German](https://github.com/un33k/python-slugify/issues/45) · @imrek | Issue closed | Addressed | Locale-specific choices are available through replacements and GERMAN/PRE_TRANSLATIONS; not automatic language detection. Improve recipes with #120. | +| 46 | [Use text-unidecode instead of Unidecode to avoid GPL](https://github.com/un33k/python-slugify/pull/46) · @smblackburn | PR closed, unmerged | Superseded | text-unidecode default eventually delivered by #73. No need to replay this dependency swap. | +| 47 | [Use the actual separator in code](https://github.com/un33k/python-slugify/pull/47) · @KlaasH | PR closed, unmerged | Revive | High-value closed-unmerged proposal: literal hyphens cannot survive custom separator, and max_length ignores separator expansion. Reproduced both; redesign rather than apply unsafe old regex construction (T1; Klaas Hoekema). | +| 48 | [Shorten usage to one code and one shell example](https://github.com/un33k/python-slugify/pull/48) · @KlaasH | PR closed, unmerged | Revive | README remains a long unittest-style example block. Restore proposal's concise Python/CLI quickstart while keeping an option reference and focused cookbook (T6; Klaas Hoekema). | +| 49 | [Possible license conflict with Unidecode?](https://github.com/un33k/python-slugify/issues/49) · @NiklasMM | Issue closed | Superseded | Duplicate mandatory-Unidecode licensing concern; current alternatives/docs covered by #73/#130, factual clarification still T4. | +| 50 | [License incompatibility due to unidecode being GPLv3](https://github.com/un33k/python-slugify/issues/50) · @bolkedebruin | Issue closed | Superseded | Airflow licensing discussion led to #52; do not use comments as a binding legal conclusion. Current installation differs from original report. | +| 51 | [GPL actually?](https://github.com/un33k/python-slugify/issues/51) · @haizaar | Issue closed | Superseded | Reporter acknowledged duplicate; consolidate dependency facts under T4 instead of another license debate. | +| 52 | [Conditional dependency on unidecode/text-unidecode](https://github.com/un33k/python-slugify/issues/52) · @bolkedebruin | Issue closed | Superseded | Conditional dependency implemented in #53 but failed for built artifacts; #73 replaced environment-dependent packaging. Do not restore env switches. | +| 53 | [Use unidecode as an API and allow alternatives](https://github.com/un33k/python-slugify/pull/53) · @bolkedebruin | PR merged 2018-03-25 | Merged/addressed | Alternative API/dependency hook merged, then superseded because build-time detection was unreliable (#59/#70). | +| 54 | [Support for case sensitivity](https://github.com/un33k/python-slugify/pull/54) · @s-m-e | PR merged 2018-04-26 | Merged/addressed | lowercase=False and case-sensitive stopword behavior implemented. | +| 55 | [a bug](https://github.com/un33k/python-slugify/issues/55) · @ghost | Issue closed | Defer | Latin/CJK boundary segmentation is not provided by fixed transliteration. Document preprocessing; do not infer language boundaries silently. | +| 56 | [Python 3.7 support?](https://github.com/un33k/python-slugify/issues/56) · @glennmatthews | Issue closed | Addressed | Python 3.7 CI delivered in #75/#77; obsolete for current >=3.10 floor. | +| 57 | [Adding Python 3.7 support](https://github.com/un33k/python-slugify/pull/57) · @s-m-e | PR closed, unmerged | Superseded | Complex transitional Travis 3.7 matrix was declined; #75/#77 delivered support. No revival on retired CI. | +| 58 | [setuptools error](https://github.com/un33k/python-slugify/issues/58) · @fabiocaccamo | Issue closed | Defer | Missing pkg_resources in Python 2 environment was not reproduced by maintainer; modern build backend supersedes old installation path. | +| 59 | [Strange install behavior - pip always installs unidecode](https://github.com/un33k/python-slugify/issues/59) · @tedmiston | Issue closed | Superseded | Discussion correctly identifies cached/build-time dependency metadata; later #73 solved default dependency selection. Retain clean wheel tests rather than &&/semicolon workaround. | +| 60 | [Release new version of this package?](https://github.com/un33k/python-slugify/issues/60) · @s-m-e | Issue closed | Addressed | Requested release containing lowercase=False was published as 1.2.6. | +| 61 | [add .vscode to .gitingore](https://github.com/un33k/python-slugify/pull/61) · @vaibhavmule | PR closed, unmerged | Defer | Editor ignore change is contributor-local housekeeping, not release functionality; use personal excludes rather than revive failed historical PR. | +| 62 | [Fix DeprecationWarnings in newer Pythons (3.6+)](https://github.com/un33k/python-slugify/issues/62) · @mcarans | Issue closed | Addressed | Raw regex literals now prevent invalid escape warnings; maintainer links #63. | +| 63 | [Proper fallback to text-unidecode, favoring Unidecode, drop support for py 2.6, 3.3.](https://github.com/un33k/python-slugify/pull/63) · @un33k | PR merged 2018-12-25 | Merged/addressed | 2.0 fallback/cleanup merged; installation detection later superseded by #73. Current runtime preference is #126. | +| 64 | [Rename word_boundaries: more consistent naming](https://github.com/un33k/python-slugify/pull/64) · @theotheo | PR merged 2018-12-30 | Merged/addressed | word_boundary naming aligned; current public utility and slugify agree. | +| 65 | [Add custom_replacements to option](https://github.com/un33k/python-slugify/pull/65) · @andriyor | PR closed, unmerged | Superseded | Rebased/renamed into merged #66/#67; replacements already exist. | +| 66 | [Add support user-specific replacements](https://github.com/un33k/python-slugify/pull/66) · @andriyor | PR merged 2019-01-03 | Merged/addressed | User replacement feature merged; ambiguous two-pass semantics remain separate T2 work. | +| 67 | [Add replacements option](https://github.com/un33k/python-slugify/pull/67) · @un33k | PR merged 2019-01-03 | Merged/addressed | Release integration for replacements; retain credit to @andriyor. Stage contract remains T2. | +| 68 | [Use the setuptools "Extras" feature to choose between Unidecode and Text-Unidecode](https://github.com/un33k/python-slugify/issues/68) · @roniemartinez | Issue closed, locked | Addressed | Extras request delivered through #71–#73; extras are additive and do not remove required text-unidecode. Explain this explicitly (T4). | +| 69 | [submitting non-unicode to normalize chars in py2](https://github.com/un33k/python-slugify/issues/69) · @grandrew | Issue closed | Defer | Python 2 normalization report mirrors #35 and likely conflicting module; unsupported environment, no confirmed present bug. | +| 70 | [Setup.py dependency checker does not work for pip](https://github.com/un33k/python-slugify/issues/70) · @bolkedebruin | Issue closed | Addressed | Isolated-build dependency detection problem addressed by fixed text-unidecode base requirement in 3.0/#73. | +| 71 | [Upgrade Unidecode, add text-unidecode as extra option](https://github.com/un33k/python-slugify/pull/71) · @un33k | PR merged 2019-02-25 | Merged/addressed | Intermediate extras implementation merged; exact dependency ordering superseded by #73/#126. | +| 72 | [Optional Extra Requirements](https://github.com/un33k/python-slugify/pull/72) · @un33k | PR merged 2019-02-26 | Merged/addressed | Extras integration merged; preserve simple default install and explain additive optional packages. | +| 73 | [Promote text-unidecode to primary decoding api](https://github.com/un33k/python-slugify/pull/73) · @un33k | PR merged 2019-03-03 | Merged/addressed | text-unidecode became required default; runtime Unidecode preference subsequently corrected in #126. | +| 74 | [MANIFEST.in: Add test.py to sdist](https://github.com/un33k/python-slugify/pull/74) · @jayvdb | PR merged 2019-03-25 | Revive | Merged test.py-in-sdist change is no longer expressed in current MANIFEST. #141 reports actual missing archive tests. Restore explicit test inclusion and inspect built archives (T5; @jayvdb). | +| 75 | [Test against Python 3.7](https://github.com/un33k/python-slugify/pull/75) · @sloria | PR merged 2019-03-31 | Merged/addressed | Python 3.7 Travis support delivered; superseded by contemporary tox matrix. | +| 76 | [Add UniqueSlugify for generating unique slugs](https://github.com/un33k/python-slugify/pull/76) · @sloria | PR closed, unmerged | Defer | Document/form-local uniqueness is a legitimate use case, contrary to broad dismissal, but old helper exceeds max_length with suffixes and mishandles positional separator. Offer optional recipe, not implicit global state (T7; Steve Loria). | +| 77 | [Add Python 3.7 Support](https://github.com/un33k/python-slugify/pull/77) · @un33k | PR merged 2019-03-31 | Merged/addressed | 3.7/PyPy support integration; historical interpreters superseded by #160/#164. | +| 78 | [support utf-8](https://github.com/un33k/python-slugify/issues/78) · @mosi-kha | Issue closed | Addressed | Unicode retention delivered by #111; language-specific transliteration accuracy still belongs to backend/preprocessing. | +| 79 | [HTML entity decoding cannot be disabled](https://github.com/un33k/python-slugify/issues/79) · @MartinFalatic | Issue closed | Addressed | Reporter found correct three independent flags: entities, decimal, hexadecimal. Preserve explicit disabling examples; encoded non-Latin pipeline discrepancy is T3. | +| 80 | [Documentation missing](https://github.com/un33k/python-slugify/issues/80) · @shakeyourbunny | Issue closed | Addressed | Option reference exists in README; quickstart and stage interactions still deserve T6 improvements. | +| 81 | [Name conflict with other slugify package](https://github.com/un33k/python-slugify/issues/81) · @EmileSonneveld | Issue closed, locked | Revive | Repeated namespace collision warrants prominent pip-install versus import-name troubleshooting, not a breaking namespace rename; corroborated by #151 (T6). | +| 82 | [text-unidecode is bumped up to 1.3 and pipenv install breaks.](https://github.com/un33k/python-slugify/issues/82) · @rollue | Issue closed | Addressed | text-unidecode 1.2 pin conflict fixed in #83; current >=1.3 lower bound avoids old exact pin. | +| 83 | [BF(dependencies)\| Bump `text_unidecode` version](https://github.com/un33k/python-slugify/pull/83) · @koolfunky | PR merged 2019-09-19 | Merged/addressed | Dependency bump resolved #82 and shipped 3.0.4. | +| 84 | [bumped dependency text-unidecode to v1.3](https://github.com/un33k/python-slugify/pull/84) · @VKen | PR closed, unmerged | Superseded | Duplicate dependency bump; author directed to merged #83 and confirmed response. | +| 85 | [German Umlaut support](https://github.com/un33k/python-slugify/issues/85) · @TobitRE | Issue closed | Addressed | German substitutions available via replacements and GERMAN; corrected community example should inform cookbook. Case preservation works with lowercase=False. | +| 86 | [What are the few gotchas like when migrating from other packages, etc.](https://github.com/un33k/python-slugify/issues/86) · @un33k | Issue closed | Addressed | Maintainer moved migration gotchas to wiki; bring critical install/entity/backend facts into versioned documentation, not only external wiki (T6). | +| 87 | [Drop support for EOL Python 2.6 and 3.2-2.4](https://github.com/un33k/python-slugify/pull/87) · @hugovk | PR merged 2019-10-14 | Merged/addressed | EOL cleanup, python_requires and CI modernization merged; current support floor is newer. | +| 88 | [Drop support for old python - cleanup - up version ](https://github.com/un33k/python-slugify/pull/88) · @un33k | PR merged 2019-10-20 | Merged/addressed | 4.0 release integration; historical support values superseded. | +| 89 | [README: Use SVG badge for consistency](https://github.com/un33k/python-slugify/pull/89) · @hugovk | PR merged 2019-11-09 | Merged/addressed | SVG/HTTPS badge improvement merged; badge destination mismatch persists under #165 follow-up. | +| 90 | [Can I be sure that slug is urlsafe?](https://github.com/un33k/python-slugify/issues/90) · @mvolfik | Issue closed | Addressed | Default ASCII/dash output is suitable as URL component text, not a guarantee for arbitrary custom regex/separator/Unicode. Add clear scoped guarantee and empty-output note. | +| 91 | [Issue with separator](https://github.com/un33k/python-slugify/issues/91) · @ghost | Issue closed, locked | Revive | Same literal-hyphen versus separator conflict as #47/#107; preserve historic behavior as migration baseline and decide version-9 semantics (T1). | +| 92 | [Create command line tool that can set all parameters](https://github.com/un33k/python-slugify/pull/92) · @jdevera | PR merged 2020-04-09 | Revive | Full CLI merged but regex_pattern is parsed and never forwarded. Current source disproves all-options parity; add real CLI-to-API regression rather than parameter mocks alone (T5; @jdevera original contribution). | +| 93 | [ERROR: Failed building wheel for python-slugify](https://github.com/un33k/python-slugify/issues/93) · @akani-mashaba | Issue closed | Defer | bdist_wheel unavailable is an old build-environment/tooling failure, not slug algorithm bug. Modern isolated build and published pure-Python wheels are the remedy (T5). | +| 94 | [We cannot replace '-' before replacing ' ' by '-'](https://github.com/un33k/python-slugify/issues/94) · @ghost | Issue closed | Revive | Replacing '-' affects newly generated separators on the second pass, exactly as current code shows. Introduce documented stage semantics rather than sentinel workaround (T2). | +| 95 | [[fyi] stubs for python-slugify were submitted to typeshed](https://github.com/un33k/python-slugify/issues/95) · @hauntsaninja | Issue closed | Addressed | Typeshed notice followed by inline annotations and py.typed in #135/#137; strict mypy in #160. No second stub distribution needed. | +| 96 | [publish pre-build wheels (manylinux)](https://github.com/un33k/python-slugify/issues/96) · @ssbarnea | Issue closed | Revive | Publish/check universal pure-Python wheels; manylinux native builds are unnecessary. Historical report not proof of current PyPI inventory; release artifact verification still needed (T5). | +| 97 | [Can I keep consecutive "-" symbol?](https://github.com/un33k/python-slugify/issues/97) · @laggardkernel | Issue closed | Defer | Reporter withdrew request because its own application rejected consecutive dashes. Keep default collapse; explicit output customization belongs to T1/T2, not a blanket default change. | +| 98 | [Add a tox file to automatically run the tests and add Python 3.9](https://github.com/un33k/python-slugify/pull/98) · @jon-betts | PR merged 2021-04-30 | Merged/addressed | Initial tox matrix merged, later removed and restored in #160; modern matrix now exists. | +| 99 | [Update tox.ini](https://github.com/un33k/python-slugify/pull/99) · @DmytroLitvinov | PR merged 2021-05-05 | Merged/addressed | Removed stale Python 3.5 tox env; current matrix has no such env. | +| 100 | [Simplify python_requires](https://github.com/un33k/python-slugify/pull/100) · @DmytroLitvinov | PR merged 2021-05-05 | Merged/addressed | Simplified Python requirement then regressed in v6/#115; current >=3.10 correct for current source. | +| 101 | [Looking for 1-2 contributors to de-risk the project as it is now used by 21k+ projects](https://github.com/un33k/python-slugify/issues/101) · @un33k | Issue closed | Defer | Maintainer access/continuity remains an operational decision; comments show collaborators volunteered, but public research cannot verify permissions or current availability. | +| 102 | [Add better typing for slugify.slugify](https://github.com/un33k/python-slugify/pull/102) · @fahhem | PR merged 2021-05-12 | Merged/addressed | Replacement annotation improved to nested iterable. Current contract still permits one-shot iterators, relevant to T2, not grounds to replay historical patch. | +| 103 | [tag 5.0.2](https://github.com/un33k/python-slugify/issues/103) · @alucryd | Issue closed | Addressed | Maintainer confirmed missing 5.0.2 tag created; preserve tag/artifact consistency in release checklist. | +| 104 | [Clarify `regex_pattern` docs.](https://github.com/un33k/python-slugify/pull/104) · @yyyyyyyan | PR closed, unmerged | Superseded | Contributor correctly explained negative regex semantics despite initial rejection; #109 later fixed names/docs. Credit historical diagnosis, no pending wording fix of the same kind. | +| 105 | [Empty slug for emojis](https://github.com/un33k/python-slugify/issues/105) · @ShubhamKhandare | Issue closed, locked | Defer | Emoji-only empty output expected under default filter/backend; document fallback and explicit emoji handling rather than promise automatic names. | +| 106 | [App crashes if album have some special characters](https://github.com/un33k/python-slugify/issues/106) · @Devaniti | Issue closed | Decline | Author explicitly reported wrong repository; no python-slugify defect or action. | +| 107 | [Question/Bug: how do I preserve dashes and not replace them with separator?](https://github.com/un33k/python-slugify/issues/107) · @adamcunnington-mlg | Issue closed, locked | Revive | Repeated real inability to preserve allowed literal dashes under '_' separator; placeholder workaround is collision-prone. Consolidate with #47/#91 (T1). | +| 108 | [GitHub Action Work](https://github.com/un33k/python-slugify/issues/108) · @un33k | Issue closed | Addressed | GitHub Actions now implemented; current main workflow runs pull requests and master pushes. | +| 109 | [Fix misleading pattern name and documentation](https://github.com/un33k/python-slugify/pull/109) · @mrezzamoradi | PR merged 2022-02-16 | Merged/addressed | Actually merged after initial closure discussion; current DISALLOWED naming and docs match re.sub. Do not classify as rejected solely from comments. | +| 110 | [Syntax error in slugify/slugify.py ](https://github.com/un33k/python-slugify/issues/110) · @janderson-atb-potsdam | Issue closed | Superseded | Temporary typing rollback supported accidental Python 2 users; current >=3.10 metadata and typed source supersede it. Do not remove annotations again. | +| 111 | [allow unicode](https://github.com/un33k/python-slugify/pull/111) · @mrezzamoradi | PR merged 2022-02-22 | Merged/addressed | allow_unicode implemented with NFKC and Unicode filter, not exact Unicode preservation; #153 identifies remaining normalization nuance. | +| 112 | [Slugify 6.1.0 breaks under Python 3.4.2 - ImportError: No module named 'typing'](https://github.com/un33k/python-slugify/issues/112) · @samlehman | Issue closed | Superseded | Python 3.4 typing import failure addressed temporarily by #113; outside support now. Preserve correct package metadata and migration pins. | +| 113 | [remove type hinting](https://github.com/un33k/python-slugify/pull/113) · @mrezzamoradi | PR merged 2022-02-26 | Merged/addressed | Temporary type-hint removal merged, then superseded by modern typed-only support. No rollback recommended. | +| 114 | [Missing slugify cmd line command: removed 'entry_points' from setup.py](https://github.com/un33k/python-slugify/issues/114) · @reixd | Issue closed | Addressed | CLI entry point restored in 6.1.2 and present today; prevent recurrence by installed-wheel CLI smoke tests (T5). | +| 115 | [Installing python-slugify on Python 2.7 does not install a compatible version of slugify](https://github.com/un33k/python-slugify/issues/115) · @ndelon | Issue closed | Addressed | Current metadata no longer admits Python 2; historical releases cannot be repaired by editing current setup. Document last compatible releases; any yanking is separate explicit release governance. | +| 116 | [Update __init__.py to have __version__ variables.](https://github.com/un33k/python-slugify/pull/116) · @eNV25 | PR merged 2022-09-27 | Merged/addressed | Public version import added; no outstanding change requested. | +| 117 | [Proposal: Discontinue Python 2 support](https://github.com/un33k/python-slugify/issues/117) · @jdevera | Issue closed | Addressed | Python 2 support dropped in 7.0; current floor is >=3.10. | +| 118 | [Question: Why is save_order False by default?](https://github.com/un33k/python-slugify/issues/118) · @jdevera | Issue closed | Defer | Changing save_order default changes truncated URLs. #157 explains behavior; keep default unless explicit version-9 migration decision and corpus justify change. | +| 119 | [Question: Why are custom replacements ran twice?](https://github.com/un33k/python-slugify/issues/119) · @jdevera | Issue closed | Revive | Two-pass replacements remain undocumented and non-idempotent. Separate pre/post contracts and iterator semantics, protect legacy migration behavior (T2; Jacobo de Vera). | +| 120 | [Document the use of what's in special.py](https://github.com/un33k/python-slugify/issues/120) · @jdevera | Issue closed | Revive | README does not explain exported special.py tables or mixed-language risks. Add tested GERMAN/CYRILLIC/GREEK/PRE_TRANSLATIONS examples (T6; Jacobo de Vera). | +| 121 | [Add support for Python 3.11](https://github.com/un33k/python-slugify/pull/121) · @hugovk | PR merged 2022-11-18 | Merged/addressed | Python 3.11 support and EOL 3.6 removal merged; current matrix includes 3.11. | +| 122 | [Is it possible to translate characters to romanised Japanese rather than Chinese?](https://github.com/un33k/python-slugify/issues/122) · @lewisd1996 | Issue closed | Defer | Japanese Kanji cannot be distinguished from Chinese without locale/context-aware backend; use external romanizer, avoid global special.py changes for ambiguous characters. | +| 123 | [How to replace the ampersand symbol "&" for two hyphens "--"?](https://github.com/un33k/python-slugify/issues/123) · @rafaelmarino | Issue closed | Defer | Meaningful double-hyphen output is domain-specific; default intentionally collapses runs. A documented postprocessing stage in T2 is safer than recommending allegedly unique sentinels. | +| 124 | [Missing unittests](https://github.com/un33k/python-slugify/issues/124) · @buhtz | Issue closed | Addressed | Unit tests existed in test.py; current pyproject declares testpaths. src-layout is optional packaging design, not evidence of missing tests. | +| 125 | [added option to replace ambiguous characters](https://github.com/un33k/python-slugify/pull/125) · @xnetcat | PR closed, unmerged | Superseded | Author withdrew after discovering Unidecode support; #143 now normalizes stylized letters before conversion. Do not vendor 1,500-line confusables table as a slug security feature. | +| 126 | [`unidecode` vs `text_unidecode` import resolution order](https://github.com/un33k/python-slugify/pull/126) · @enkidulan | PR merged 2023-01-27 | Merged/addressed | Unidecode now preferred when installed; text-unidecode stays required. Document environment-sensitive outputs and backend tests (T4). | +| 127 | [Fuzzing Python Slugify on OSS-Fuzz](https://github.com/un33k/python-slugify/issues/127) · @rikfie | Issue closed | Revive | Fuzz harness offer valuable for interacting string options and numeric entities. Start local property/fuzz tests; OSS-Fuzz enrollment requires owner and disclosure-response commitment (T8; Rik @rikfie). | +| 128 | [Enable installation without GPL dependencies](https://github.com/un33k/python-slugify/issues/128) · @C-nit | Issue closed, locked | Defer | allow_unicode still imports a transliteration backend at module import. Dependency-free Unicode mode needs packaging/API policy; investigate laziness/optional backend only if a concrete product requirement, not a legal assertion (T4). | +| 129 | [Notes on GPL dependencies](https://github.com/un33k/python-slugify/pull/129) · @C-nit | PR closed, unmerged | Superseded | Same licensing text rebased into merged #130; no lost contribution. | +| 130 | [Add note on licensing](https://github.com/un33k/python-slugify/pull/130) · @C-nit | PR merged 2023-02-24 | Merged/addressed | Artistic-license choice documented; later #166 shows explanatory language remains confusing. Revive clarity, not this exact patch. | +| 131 | [Replace flake8 and pycodestyle with ruff](https://github.com/un33k/python-slugify/pull/131) · @cclauss | PR merged 2023-10-09 | Defer | Merged then explicitly reverted by #136 because CI cache setup failed, not proof Ruff is unsuitable. Optional modern lint migration, not a functional release blocker (T8; Christian Clauss). | +| 132 | [Fix CI to run on master without duplicate push and pull_request runs](https://github.com/un33k/python-slugify/pull/132) · @cclauss | PR closed, unmerged | Revive | PR execution now covered by #160, but three branch-specific workflows remain. Consolidate safely after owner confirms branch policy; old diff does not itself prevent every duplicate run (T8; Christian Clauss). | +| 133 | [Option to convert a string to a "safe" filename and modify the original name as less as possible ](https://github.com/un33k/python-slugify/issues/133) · @sisrfeng | Issue closed | Defer | No filename failure example supplied; slugification is not portable filename validation. Document empty/reserved-name/length responsibilities rather than broad safe-filename flag. | +| 134 | [Enables mypy --strict and adds corresponding types](https://github.com/un33k/python-slugify/pull/134) · @jmelahman | PR closed, unmerged | Superseded | Strict typing proposal substantially delivered by #135/#137/#160. Do not replay runtime-error or argv changes; preserve Jamison Lahman's prior contribution context. | +| 135 | [Add typing and expose ``py.typed``](https://github.com/un33k/python-slugify/pull/135) · @DanielNoord | PR merged 2023-10-09 | Merged/addressed | Inline annotations and py.typed merged, including empty-list return clarification; strict CI later added #160. | +| 136 | [Revert "Replace flake8 and pycodestyle with ruff"](https://github.com/un33k/python-slugify/pull/136) · @un33k | PR merged 2023-10-09 | Merged/addressed | Explicit revert of #131; Ruff not currently active. Cache failure rationale is historical evidence, not a permanent design prohibition. | +| 137 | [Add typing and expose py.typed](https://github.com/un33k/python-slugify/pull/137) · @un33k | PR merged 2023-10-09 | Merged/addressed | Typing release integration; current marker packaged via setup.py:61. | +| 138 | [Formally support python 3.12](https://github.com/un33k/python-slugify/issues/138) · @foarsitter | Issue closed | Addressed | Python 3.12 support delivered in #139. | +| 139 | [Add Python 3.12 to test matrix and add classifier to the setup](https://github.com/un33k/python-slugify/pull/139) · @foarsitter | PR merged 2023-10-25 | Merged/addressed | 3.12 classifier and test matrix merged; retained in current source. | +| 140 | [pip install python-slugify[unidecode] also installs text-unidecode](https://github.com/un33k/python-slugify/issues/140) · @Schulzjo | Issue closed | Revive | Extra installs both distributions and runtime prefers Unidecode; README alternative wording still invites opposite interpretation. Clarify additive extras and reproducibility (T4). | +| 141 | [PyPi tarball is missing files](https://github.com/un33k/python-slugify/issues/141) · @nieder | Issue closed | Revive | Historical PyPI sdist missed test.py despite #74. MANIFEST still omits it; verify modern setuptools defaults in an actual build and make inclusion explicit (T5). | +| 142 | [Unicode confusables characters are removed](https://github.com/un33k/python-slugify/issues/142) · @chuckyblack | Issue closed | Addressed | Normalization-before-decoder fix in #143; current stylized-letter reproduction returns aa. | +| 143 | [Ci - Normalize accented text twice.](https://github.com/un33k/python-slugify/pull/143) · @un33k | PR merged 2024-01-25 | Merged/addressed | Double normalization merged. It fixes direct stylized letters, but does not transliterate non-Latin characters introduced by entity decoding (T3). | +| 144 | [TypeError: decoding to str: need a bytes-like object, int found](https://github.com/un33k/python-slugify/issues/144) · @codyc1515 | Issue closed | Revive | Clarify str-only API versus legacy UTF-8 bytes decoding. int TypeError is expected for str-only contract, but bytes path is reachable; do not delete based on false unreachable-code assumption (T2). | +| 145 | [Remove compatibility with unsupported Python versions](https://github.com/un33k/python-slugify/pull/145) · @Viicos | PR closed, unmerged | Superseded | Retargeted into merged #146/#147; compatibility cleanup already incorporated. | +| 146 | [Remove compatibility with unsupported Python versions](https://github.com/un33k/python-slugify/pull/146) · @Viicos | PR merged 2024-01-31 | Merged/addressed | Old-version compatibility and regex typing corrections merged; retain reachable runtime bytes decision separately from #144. | +| 147 | [Drop compatibility for unsupported Python Version](https://github.com/un33k/python-slugify/pull/147) · @un33k | PR merged 2024-01-31 | Merged/addressed | 8.0.3 release integration for #146. | +| 148 | [Fix uppercase pre-translations](https://github.com/un33k/python-slugify/pull/148) · @mib1185 | PR merged 2024-02-08 | Merged/addressed | Uppercase-table premature return fixed; current return is after loop. Preserve multi-character uppercase and empty-list tests. | +| 149 | [Uppercase handling of special chars](https://github.com/un33k/python-slugify/pull/149) · @un33k | PR merged 2024-02-08 | Merged/addressed | Uppercase special-character fix release integration. | +| 150 | [Argument to make flugified strings valid XML id attributes.](https://github.com/un33k/python-slugify/issues/150) · @jenstroeger | Issue closed | Decline | XML NCName policy is domain-specific and differs from general slug contract. Recommend external validation/prefixing with post-prefix length check. | +| 151 | [Unicode does not work](https://github.com/un33k/python-slugify/issues/151) · @pomponchik | Issue closed | Addressed | Traceback points to conflicting slugify module; maintainer shows correct package works. Add durable troubleshooting with #81, not another Unicode engine fix. | +| 152 | [Fix wiki URLs in README.md](https://github.com/un33k/python-slugify/pull/152) · @sagesharp | PR merged 2025-11-20 | Merged/addressed | Wiki links fixed after long wait; branch confusion in discussion reinforces contribution-workflow docs, not another identical URL patch. | +| 153 | [The problem of converting all Korean consonants to Korean initials in the slugfiy process when they are alone.](https://github.com/un33k/python-slugify/issues/153) · @LMouSoo | Issue closed | Revive | NFKC changes standalone Korean compatibility jamo even with allow_unicode. Reproduced U+314B -> U+110F. Clarify normalized retention and consider opt-in NFC/exact preservation policy (T3). | +| 154 | [Add Python 3.13 to test matrix and add classifier to the setup](https://github.com/un33k/python-slugify/pull/154) · @edgarrmondragon | PR merged 2025-09-26 | Merged/addressed | 3.13/PyPy matrix update merged; current #160 matrix supersedes old PyPy version. | +| 155 | [rewrote slugify func with radon](https://github.com/un33k/python-slugify/pull/155) · @IvanChumakov | PR closed, unmerged | Defer | Do not revive Radon-driven helper explosion wholesale: removes docstring and changes normalization/quote pipeline. Consider only cohesive entity helper under T3 with behavioral tests; credit @IvanChumakov if reused. | +| 156 | [Adding Debian manpage to python-slugify](https://github.com/un33k/python-slugify/issues/156) · @Arian-Ott | Issue closed | Revive | Debian maintainer offered CLI manpage; none present in current tree. Request/update source and license, keep argparse options synchronized (T6; Arian @Arian-Ott). | +| 157 | [Explain `save_order` more clearly](https://github.com/un33k/python-slugify/pull/157) · @marksteward | PR merged 2025-09-26 | Merged/addressed | save_order explanation improved and present in function/README. Default-policy question #118 remains consciously deferred. | +| 158 | [[WIP] Rewriting in Rust PyO3 python lib - Student / Learning project](https://github.com/un33k/python-slugify/issues/158) · @gmaOCR | Issue closed | Defer | Student Rust port is an external learning project, not evidence of a measured bottleneck. No native rewrite in version 9 without profiling/portability case. | +| 159 | [Fix build process](https://github.com/un33k/python-slugify/pull/159) · @kurtmckee | PR merged 2026-01-07 | Revive | Build fixes merged, but body explicitly warns against executable setup publishing and recommends declarative metadata. Current setup.py publish still uses deprecated universal wheel path and uploads/tags unchecked; complete modernization (T5; Kurt McKee). | +| 160 | [Reintroduce tox and thoroughly test the project](https://github.com/un33k/python-slugify/pull/160) · @kurtmckee | PR merged 2026-01-06 | Merged/addressed | tox, dual backends, strict mypy and modern CI are now present; no need to rebuild them from scratch. Installed-artifact coverage still T5. | +| 161 | [Remove references to `easy_install`, which is deprecated](https://github.com/un33k/python-slugify/pull/161) · @kurtmckee | PR merged 2025-11-12 | Merged/addressed | easy_install documentation removed; maintain pip/build guidance. | +| 162 | [Replace Text_unidecode-1.3 dependency or change license](https://github.com/un33k/python-slugify/issues/162) · @ndrezn | Issue closed, locked | Superseded | GPL-only premise corrected by author in #166: text-unidecode offers Artistic choice. No automatic project relicensing; use factual dependency/license documentation (T4). | +| 163 | [Default to anyascii decoder](https://github.com/un33k/python-slugify/pull/163) · @ndrezn | PR closed, unmerged | Revive | Revive multilingual differential test corpus and backend visibility idea, not automatic AnyASCII default. Actual patch changes Chinese word boundaries and Cyrillic output; explicit backend choice only after compatibility decision (T4; Nathan Drezner). | +| 164 | [Fix CI by dropping EOL Python versions](https://github.com/un33k/python-slugify/pull/164) · @kurtmckee | PR merged 2026-01-06 | Merged/addressed | Python >=3.10 and 3.14 CI fixed. README support matrix still claims >=3.7 for all newer releases; synchronize before version 9 (T5). | +| 165 | [Fix the README badge to refer to the `main.yml` workflow results](https://github.com/un33k/python-slugify/pull/165) · @kurtmckee | PR merged 2026-01-07 | Revive | Badge image fixed, but link still targets ci.yml. Body's workflow-consolidation/release-follow-through suggestion remains useful; avoid stale health signals (T8; Kurt McKee). | +| 166 | [Slugify licensing update and PRs](https://github.com/un33k/python-slugify/issues/166) · @un33k | Issue open, locked | Revive | Open locked discussion contains concrete proposed dependency wording and reported customer confusion. Clarify installed package versus chosen license, not legal guarantees; no GitHub changes performed (T4; Nathan Drezner). | + +## Remaining uncertainty and release handoff + +- This is a snapshot of all publicly available <=166 item bodies/discussions, not a review of later-numbered backlog. Current local commit was inspected because it is the implementation baseline supplied for the commission. +- “Merged/addressed” describes merge/source/history evidence, **not certification of PyPI publication**. Current registry inventory, install-time behavior across all supported interpreters, and built archive contents were not independently checked. +- Reproductions used the available local Python environment, not a clean two-backend matrix. Backend output can differ; release acceptance needs pinned backend/version fixtures. No tests/builds were represented as passing based on historical bot comments. +- All 24 closed-unmerged PRs received explicit disposition: #1, #3, #18, #20, #25, #28, #37, #43, #46, #47, #48, #57, #61, #65, #76, #84, #104, #125, #129, #132, #134, #145, #155, #163. Highest-value revivals are #47, #43, #48, selective #132, and the tests/docs part of #163. #76 remains an optional recipe, not a core requirement; #134's typing goal is already present. +- No automated conclusion about author legal names is made. Public GitHub profile display names were fetched for key revived contributors; account handles remain authoritative attribution identifiers. @IvanChumakov has no public display name in the API snapshot. +- Recommended immediate implementation order: fix CLI forwarding and artifact checks; document dependency/support facts; establish golden tests for T1–T3; make explicit release-9 compatibility decisions; then update cookbook/manpage and workflow organization. Treat new backend/default changes as separate approval gates. diff --git a/docs/release-9/migration.md b/docs/release-9/migration.md new file mode 100644 index 0000000..a85b9e6 --- /dev/null +++ b/docs/release-9/migration.md @@ -0,0 +1,90 @@ +# Migrating to 9.0.0 + +This checkout is **unpublished**, with version `9.0.0` and no development suffix. +No commit, push, publication, tag, or public issue reply is part of these local checks. +Historical research remains in [historical-review.md](historical-review.md). + +## The default stays legacy + +`slugify(..., algorithm='legacy')` is the permanent default. Existing calls retain the historical +slug-output pipeline. Modern behavior requires `algorithm='modern'`, or CLI `--algorithm modern`. +There is no `slugify_v2` function. Unknown algorithm values raise `ValueError` in Python and are +rejected by argparse on the command line. All new controls are keyword-only; existing positional +parameters retain their order. + +The compatibility fixture is frozen from revision `7b6d5d9`. Regression checks compare default and +explicit legacy calls to that implementation using the same installed backend. They cover entities, +invalid numeric references, wide/empty separators, case handling, Unicode mode, ordering, length +limits, and fresh replacement/stopword iterators. They are evidence for those cases, not proof +that every downstream application or dependency upgrade is safe. + +| Input or option | Default / explicit legacy | Explicit modern | +| --- | --- | --- | +| `a'b` | `ab` | `a-b` | +| `aéb` | `ae-b` | `aeb` | +| `a你b` (text-unidecode/Unidecode) | `a-b` | `ani-b` | +| `a b c`, separator `::`, max_length 3 | `a::b` | `a` | +| Replacement iterator `[('a', 'aa')]`, input `a` | `aa` (consumed by first pass) | `aaaa` (snapshotted and replayed) | +| Stopword iterator `['A', 'b']`, lowercase false, input `a b a b` | `a-b-a-b` | `a-a` | +| `xylophone x`, separator `x`, max_length 100 | `xylophonexx` | `xylophonexx` | + +## What modern opts into + +- Decode entities before quote handling and transliteration, matching literal input where applicable. +- Handle invalid numeric references independently instead of cancelling the substitution for that reference kind. + Surrogate references are left for ordinary filtering. +- Snapshot replacement rules, including inner iterables, so both passes see the same rules. +- Snapshot stopwords so case-sensitive membership does not depend on iterator consumption. +- Budget the emitted separator width, including empty separators. Internal word boundaries are kept until + selection/truncation completes. Output delimiters that also occur in words do not erase real characters. + Hard cuts never emit a partial delimiter; a partial word can be emitted. Whole-word mode may skip oversized + words unless `save_order=True`; if no word fits, a hard cut is used. + +`max_length` in legacy mode applies before separator mapping, so the emitted string may exceed the budget +with wide separators. Modern limits count Python characters, not bytes or grapheme clusters. Nonpositive +limits are unlimited for `slugify` in both modes. + +**The public `smart_truncate` is unchanged.** It retains character-set stripping via `str.strip(separator)`, +empty-separator `ValueError`, and negative slicing semantics. Modern slugify uses a separate private helper; +it does not silently modernize calls to this public function. + +## Other controls and deliberate CLI fix + +`backend='auto'` continues to prefer installed Unidecode, falling back to text-unidecode. +Explicit backend selection never silently falls back; errors inside an installed backend propagate. +`allow_unicode=True` uses NFKC and no transliteration import. The base distribution still depends on +text-unidecode; extras add dependencies, never subtract them. AnyASCII is opt-in and produces different +transliteration and word boundaries. Its presence does not change auto selection. + +`replacement_stage='both'` retains two literal ordered passes for reusable rule lists; +`pre` and `post` select just one. Post replacements remain unfiltered, after stopword removal and before +truncation/mapping. Arbitrary replacements and custom regexes are not universally idempotent or safe. +UTF-8 bytes/bytearray remain accepted, with invalid bytes ignored. Decoding now precedes replacements, +so bytes with string replacement rules are supported where older combinations raised TypeError. +Unsupported input types receive an explicit TypeError message. + +CLI `--regex-pattern` forwarding is an intentional bug fix in both modes: the flag was previously parsed +but ignored. CLI users who passed that flag should compare outputs. The legacy-default guarantee concerns +the historical Python slug pipeline, not preservation of this CLI forwarding bug. + +Both modes retain global dash-to-separator mapping, including literal allowed dashes. There is no new +literal-hyphen preservation API. ASCII and curly apostrophes remain distinct; use explicit pre replacements +if your application needs a consistent apostrophe boundary. Backend-generated phonetic quotes are removed. +Entity flags remain separate; this is not a full HTML parser. Unicode normalization is not exact code-point +preservation, nor is transliteration translation or language detection. + +## Application migration and packaging + +- Do not regenerate persisted URLs, filenames, or database keys in place. Keep stored identifiers and plan + redirects and collision handling before adopting modern output. +- Pin this package and transliteration dependencies; compare a representative application corpus before upgrading. +- Python 3.10 is the minimum. Older runtimes can remain on a compatible pinned earlier release. +- Slugs are not guaranteed unique or universally filesystem/URL/security safe. Validate for your destination. +- Metadata, typed marker, source tests, license and entry points are checked in wheel and source artifacts. + `python tools/check_dist.py` builds and installs in temporary environments without publishing. +- python-slugify is MIT; text-unidecode offers Artistic-or-GPL licensing, Unidecode is GPL, AnyASCII is ISC. + Review actual dependency licenses and distribution obligations; this is not a blanket legal assurance. + +See [verification.md](verification.md) for measured results and remaining platform/downstream gaps. +Maintainers still own final review, downstream compatibility decisions, artifact retention, and separate +explicit authorization of any publication or tags. No published artifacts should be deleted as part of migration. diff --git a/docs/release-9/recent-evidence.json b/docs/release-9/recent-evidence.json new file mode 100644 index 0000000..d8a2c29 --- /dev/null +++ b/docs/release-9/recent-evidence.json @@ -0,0 +1,1176 @@ +[ + { + "number": 167, + "title": "Inconsistent workflow badge reference in README", + "body": "I noticed that the workflow badge image in the README references `main.yml`, while the link points to `ci.yml`.\n\nThis may cause inconsistency or confusion depending on the active workflow file.\n\nWould you prefer both references to point to the same workflow file?\n\nI would be happy to submit a PR to align them.", + "author": "JustinUrassa", + "state": "open", + "url": "https://github.com/un33k/python-slugify/issues/167", + "comments": [] + }, + { + "number": 168, + "title": "docs: align workflow badge link with the main.yml", + "body": "### Summary\r\nThis pull request fixes the workflow badge link in the README to correctly point to `main.yml` instead of `ci.yml`. \r\n\r\n### Details\r\nThe previous link was broken because it referenced the wrong workflow file:\r\n\r\n- Old link: ci.yml\r\n- Fixed link: main.yml\r\n\r\nThis ensures the badge correctly reflects the status of the main workflow.\r\n\r\n### Changes\r\n- Updated `[status-link]` in README.md from ci.yml to main.yml\r\n\r\n### Motivation\r\nThe workflow badge is a visual indicator of CI status. Fixing the link ensures contributors and users see the correct build status at a glance.\r\n\r\n### Testing\r\n- Verified the new link points to the existing main workflow in GitHub Actions.", + "author": "JustinUrassa", + "state": "open", + "url": "https://github.com/un33k/python-slugify/pull/168", + "comments": [], + "merged_at": null, + "files": [ + { + "sha": "7ef131d31eb4e1d90bfcd492005ff84913b3feeb", + "filename": "README.md", + "status": "modified", + "additions": 1, + "deletions": 1, + "changes": 2, + "blob_url": "https://github.com/un33k/python-slugify/blob/e7bef47ec65cd64bd90fb01646dc553560e5e6de/README.md", + "raw_url": "https://github.com/un33k/python-slugify/raw/e7bef47ec65cd64bd90fb01646dc553560e5e6de/README.md", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/README.md?ref=e7bef47ec65cd64bd90fb01646dc553560e5e6de", + "patch": "@@ -212,7 +212,7 @@ X.Y.Z Version\n `PATCH` version -- when you make backwards-compatible bug fixes.\n \n [status-image]: https://github.com/un33k/python-slugify/actions/workflows/main.yml/badge.svg\n-[status-link]: https://github.com/un33k/python-slugify/actions/workflows/ci.yml\n+[status-link]: https://github.com/un33k/python-slugify/actions/workflows/main.yml\n [version-image]: https://img.shields.io/pypi/v/python-slugify.svg\n [version-link]: https://pypi.python.org/pypi/python-slugify\n [coverage-image]: https://coveralls.io/repos/un33k/python-slugify/badge.svg" + } + ], + "reviews": [], + "review_comments": [] + }, + { + "number": 169, + "title": "Add edge case test for whitespace-only input", + "body": "\nThis PR adds a small test case to verify that `slugify` correctly\nreturns an empty string when the input contains only whitespace.\n\nHandling whitespace-only input is an edge case that helps ensure\nconsistent and predictable behavior. This test improves coverage\nwithout modifying existing functionality.\n\nNo breaking changes introduced. I would like to work on it if possible", + "author": "JustinUrassa", + "state": "open", + "url": "https://github.com/un33k/python-slugify/issues/169", + "comments": [] + }, + { + "number": 170, + "title": "test: add edge case test for whitespace-only input", + "body": "This PR adds a small test case to verify that `slugify` correctly\r\nreturns an empty string when the input contains only whitespace.\r\n\r\nHandling whitespace-only input is an edge case that helps ensure\r\nconsistent and predictable behavior. This test improves coverage\r\nwithout modifying existing functionality.\r\n\r\nNo breaking changes introduced.", + "author": "JustinUrassa", + "state": "open", + "url": "https://github.com/un33k/python-slugify/pull/170", + "comments": [], + "merged_at": null, + "files": [ + { + "sha": "8e1d755dad1590673b046bdf97929c019ec81bfe", + "filename": "test.py", + "status": "modified", + "additions": 5, + "deletions": 0, + "changes": 5, + "blob_url": "https://github.com/un33k/python-slugify/blob/71d614644ba407290506144107d3444af20a7d2d/test.py", + "raw_url": "https://github.com/un33k/python-slugify/raw/71d614644ba407290506144107d3444af20a7d2d/test.py", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/test.py?ref=71d614644ba407290506144107d3444af20a7d2d", + "patch": "@@ -239,6 +239,11 @@ def test_replacements_german_umlaut_custom(self):\n \n def test_pre_translation(self):\n self.assertEqual(PRE_TRANSLATIONS, [('Ю', 'U'), ('Щ', 'Sch'), ('У', 'Y'), ('Х', 'H'), ('Я', 'Ya'), ('Ё', 'E'), ('ё', 'e'), ('я', 'ya'), ('х', 'h'), ('у', 'y'), ('щ', 'sch'), ('ю', 'u'), ('Ü', 'Ue'), ('Ö', 'Oe'), ('Ä', 'Ae'), ('ä', 'ae'), ('ö', 'oe'), ('ü', 'ue'), ('Ϋ́', 'Y'), ('Ϋ', 'Y'), ('Ύ', 'Y'), ('Υ', 'Y'), ('Χ', 'Ch'), ('χ', 'ch'), ('Ξ', 'X'), ('ϒ', 'Y'), ('υ', 'y'), ('ύ', 'y'), ('ϋ', 'y'), ('ΰ', 'y')])\n+ \n+ def test_slugify_only_whitespace(self):\n+ txt = \" \"\n+ r = slugify(txt)\n+ self.assertEqual(r, \"\")\n \n \n class TestSlugifyUnicode(unittest.TestCase):" + } + ], + "reviews": [], + "review_comments": [] + }, + { + "number": 171, + "unavailable": "gh: Not Found (HTTP 404)" + }, + { + "number": 172, + "title": "Ordinal indicators are not slugified", + "body": "Hi. The characters \"º\" (0xBA) and \"ª\" (0xAA) are used in Portuguese and some other languages, and are in Portuguese keyboards. Maybe you could slugify them to \"o\" and \"a\". Thanks.", + "author": "cangareijo", + "state": "open", + "url": "https://github.com/un33k/python-slugify/issues/172", + "comments": [ + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/3943658797", + "html_url": "https://github.com/un33k/python-slugify/issues/172#issuecomment-3943658797", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/172", + "id": 3943658797, + "node_id": "IC_kwDOAF7qK87rD3Ut", + "user": { + "login": "cangareijo", + "id": 102051174, + "node_id": "U_kgDOBhUtZg", + "avatar_url": "https://avatars.githubusercontent.com/u/102051174?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/cangareijo", + "html_url": "https://github.com/cangareijo", + "followers_url": "https://api.github.com/users/cangareijo/followers", + "following_url": "https://api.github.com/users/cangareijo/following{/other_user}", + "gists_url": "https://api.github.com/users/cangareijo/gists{/gist_id}", + "starred_url": "https://api.github.com/users/cangareijo/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/cangareijo/subscriptions", + "organizations_url": "https://api.github.com/users/cangareijo/orgs", + "repos_url": "https://api.github.com/users/cangareijo/repos", + "events_url": "https://api.github.com/users/cangareijo/events{/privacy}", + "received_events_url": "https://api.github.com/users/cangareijo/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2026-02-23T09:40:22Z", + "updated_at": "2026-02-23T09:40:22Z", + "body": "Dashes and hyphens (0x2010 to 0x2015) could also be slugified to hyphen-minus (0x002D).", + "author_association": "NONE", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/3943658797/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + } + ] + }, + { + "number": 173, + "title": "fix: align README badge link with badge image workflow", + "body": "## Summary\n\nFix inconsistent workflow badge reference in README.\n\n## Problem\n\nThe status badge image references `main.yml` but the badge link points to `ci.yml`:\n\n```markdown\n[status-image]: https://github.com/un33k/python-slugify/actions/workflows/main.yml/badge.svg\n[status-link]: https://github.com/un33k/python-slugify/actions/workflows/ci.yml\n```\n\nClicking the badge navigates to a different workflow than the one whose status is displayed.\n\n## Fix\n\nChanged `status-link` to reference `main.yml`, matching the badge image.\n\nFixes #167", + "author": "Jo2234", + "state": "closed", + "url": "https://github.com/un33k/python-slugify/pull/173", + "comments": [], + "merged_at": null, + "files": [ + { + "sha": "7ef131d31eb4e1d90bfcd492005ff84913b3feeb", + "filename": "README.md", + "status": "modified", + "additions": 1, + "deletions": 1, + "changes": 2, + "blob_url": "https://github.com/un33k/python-slugify/blob/bf1308c99c5aaf999aaa6d36b93870615b67ff74/README.md", + "raw_url": "https://github.com/un33k/python-slugify/raw/bf1308c99c5aaf999aaa6d36b93870615b67ff74/README.md", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/README.md?ref=bf1308c99c5aaf999aaa6d36b93870615b67ff74", + "patch": "@@ -212,7 +212,7 @@ X.Y.Z Version\n `PATCH` version -- when you make backwards-compatible bug fixes.\n \n [status-image]: https://github.com/un33k/python-slugify/actions/workflows/main.yml/badge.svg\n-[status-link]: https://github.com/un33k/python-slugify/actions/workflows/ci.yml\n+[status-link]: https://github.com/un33k/python-slugify/actions/workflows/main.yml\n [version-image]: https://img.shields.io/pypi/v/python-slugify.svg\n [version-link]: https://pypi.python.org/pypi/python-slugify\n [coverage-image]: https://coveralls.io/repos/un33k/python-slugify/badge.svg" + } + ], + "reviews": [], + "review_comments": [] + }, + { + "number": 174, + "title": "Add edge case test for whitespace-only input", + "body": "This PR adds a test case to verify that correctly returns an empty string when the input contains only whitespace (spaces, tabs, newlines) or is empty.\n\nTest cases covered:\n- Spaces only ()\n- Tabs and newlines ()\n- Mixed whitespace characters ()\n- Empty string ()\n\nAll 83 existing tests pass. No breaking changes introduced.\n\nThis addresses issue #169.", + "author": "BlocksecPHD", + "state": "open", + "url": "https://github.com/un33k/python-slugify/pull/174", + "comments": [], + "merged_at": null, + "files": [ + { + "sha": "47493f327335e133434b46668b1ed462fab1c2fe", + "filename": "test.py", + "status": "modified", + "additions": 18, + "deletions": 0, + "changes": 18, + "blob_url": "https://github.com/un33k/python-slugify/blob/ce8e01ed49fba035cb7857005c27aa822f962f0a/test.py", + "raw_url": "https://github.com/un33k/python-slugify/raw/ce8e01ed49fba035cb7857005c27aa822f962f0a/test.py", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/test.py?ref=ce8e01ed49fba035cb7857005c27aa822f962f0a", + "patch": "@@ -12,6 +12,24 @@\n \n class TestSlugify(unittest.TestCase):\n \n+ def test_whitespace_only_input(self):\n+ \"\"\"Test that whitespace-only input returns an empty string.\"\"\"\n+ txt = \" \"\n+ r = slugify(txt)\n+ self.assertEqual(r, \"\")\n+\n+ txt = \"\\t\\n\"\n+ r = slugify(txt)\n+ self.assertEqual(r, \"\")\n+\n+ txt = \" \\n \\t \"\n+ r = slugify(txt)\n+ self.assertEqual(r, \"\")\n+\n+ txt = \"\"\n+ r = slugify(txt)\n+ self.assertEqual(r, \"\")\n+\n def test_extraneous_seperators(self):\n \n txt = \"This is a test ---\"" + } + ], + "reviews": [], + "review_comments": [] + }, + { + "number": 175, + "title": "--regex-pattern option ignored by CLI", + "body": "The command line interface seems to ignore the `--regex-pattern` option. For example:\n\n```\nslugify --regex-pattern \"[^-a-z0-9_]+\" \"___This is a test___\"\n```\n\nBased on the unit tests (see `test_regex_pattern_keep_underscore`), the expected result should be \"`___this-is-a-test___`\". However, it's actually \"`this-is-a-test`\".\n", + "author": "peter-bloomfield", + "state": "open", + "url": "https://github.com/un33k/python-slugify/issues/175", + "comments": [ + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/4326485338", + "html_url": "https://github.com/un33k/python-slugify/issues/175#issuecomment-4326485338", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/175", + "id": 4326485338, + "node_id": "IC_kwDOAF7qK88AAAABAeDtWg", + "user": { + "login": "jdevera", + "id": 73069, + "node_id": "MDQ6VXNlcjczMDY5", + "avatar_url": "https://avatars.githubusercontent.com/u/73069?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/jdevera", + "html_url": "https://github.com/jdevera", + "followers_url": "https://api.github.com/users/jdevera/followers", + "following_url": "https://api.github.com/users/jdevera/following{/other_user}", + "gists_url": "https://api.github.com/users/jdevera/gists{/gist_id}", + "starred_url": "https://api.github.com/users/jdevera/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/jdevera/subscriptions", + "organizations_url": "https://api.github.com/users/jdevera/orgs", + "repos_url": "https://api.github.com/users/jdevera/repos", + "events_url": "https://api.github.com/users/jdevera/events{/privacy}", + "received_events_url": "https://api.github.com/users/jdevera/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2026-04-27T11:12:25Z", + "updated_at": "2026-04-27T11:12:25Z", + "body": "@peter-bloomfield great find! Seems like there is a missing wiring of that option in the CLI.", + "author_association": "COLLABORATOR", + "pin": null, + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/4326485338/reactions", + "total_count": 1, + "+1": 1, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + } + ] + }, + { + "number": 176, + "title": "Fix --regex-pattern being ignored by the CLI", + "body": "## Summary\r\n\r\n- The `--regex-pattern` CLI option was parsed by argparse but never forwarded into the `slugify()` call in\r\n`slugify_params`, so it had no effect.\r\n- Forward `regex_pattern` from the parsed args, add a `TestCommandParams.test_regex_pattern` regression test, and include `regex_pattern` in the test defaults.\r\n- Update Changelog.\r\n\r\nFixes #175.", + "author": "jdevera", + "state": "open", + "url": "https://github.com/un33k/python-slugify/pull/176", + "comments": [ + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/4326538921", + "html_url": "https://github.com/un33k/python-slugify/pull/176#issuecomment-4326538921", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/176", + "id": 4326538921, + "node_id": "IC_kwDOAF7qK88AAAABAeG-qQ", + "user": { + "login": "coveralls", + "id": 2354108, + "node_id": "MDQ6VXNlcjIzNTQxMDg=", + "avatar_url": "https://avatars.githubusercontent.com/u/2354108?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/coveralls", + "html_url": "https://github.com/coveralls", + "followers_url": "https://api.github.com/users/coveralls/followers", + "following_url": "https://api.github.com/users/coveralls/following{/other_user}", + "gists_url": "https://api.github.com/users/coveralls/gists{/gist_id}", + "starred_url": "https://api.github.com/users/coveralls/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/coveralls/subscriptions", + "organizations_url": "https://api.github.com/users/coveralls/orgs", + "repos_url": "https://api.github.com/users/coveralls/repos", + "events_url": "https://api.github.com/users/coveralls/events{/privacy}", + "received_events_url": "https://api.github.com/users/coveralls/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2026-04-27T11:21:39Z", + "updated_at": "2026-04-27T11:21:39Z", + "body": "\n[![Coverage Status](https://coveralls.io/builds/79120056/badge)](https://coveralls.io/builds/79120056)\n\ncoverage: 97.459% (+0.02%) from 97.44% — **feat/cli-regex-pattern** into **master**\n", + "author_association": "NONE", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/4326538921/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + } + ], + "merged_at": null, + "files": [ + { + "sha": "44e0bb982efe09d2bd218d3782ef86d382dc62c8", + "filename": "CHANGELOG.md", + "status": "modified", + "additions": 1, + "deletions": 0, + "changes": 1, + "blob_url": "https://github.com/un33k/python-slugify/blob/7edf477f64b65ffe22c966d6a8dcc3edd0fb6997/CHANGELOG.md", + "raw_url": "https://github.com/un33k/python-slugify/raw/7edf477f64b65ffe22c966d6a8dcc3edd0fb6997/CHANGELOG.md", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/CHANGELOG.md?ref=7edf477f64b65ffe22c966d6a8dcc3edd0fb6997", + "patch": "@@ -1,5 +1,6 @@\n ## Unreleased\n \n+- Fix `--regex-pattern` being ignored by the CLI.\n - Support Python 3.14.\n - Drop support for Python 3.9 and lower.\n - Use tox for local test runs and in CI." + }, + { + "sha": "6e8109d0bc0d5eb91087223e1ec2f73338e5a91e", + "filename": "slugify/__main__.py", + "status": "modified", + "additions": 1, + "deletions": 0, + "changes": 1, + "blob_url": "https://github.com/un33k/python-slugify/blob/7edf477f64b65ffe22c966d6a8dcc3edd0fb6997/slugify%2F__main__.py", + "raw_url": "https://github.com/un33k/python-slugify/raw/7edf477f64b65ffe22c966d6a8dcc3edd0fb6997/slugify%2F__main__.py", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/slugify%2F__main__.py?ref=7edf477f64b65ffe22c966d6a8dcc3edd0fb6997", + "patch": "@@ -76,6 +76,7 @@ def slugify_params(args: argparse.Namespace) -> dict[str, Any]:\n save_order=args.save_order,\n separator=args.separator,\n stopwords=args.stopwords,\n+ regex_pattern=args.regex_pattern,\n lowercase=args.lowercase,\n replacements=args.replacements,\n allow_unicode=args.allow_unicode" + }, + { + "sha": "1c321d6dca0e5de524400f707dd0ccfc7894fa49", + "filename": "test.py", + "status": "modified", + "additions": 8, + "deletions": 1, + "changes": 9, + "blob_url": "https://github.com/un33k/python-slugify/blob/7edf477f64b65ffe22c966d6a8dcc3edd0fb6997/test.py", + "raw_url": "https://github.com/un33k/python-slugify/raw/7edf477f64b65ffe22c966d6a8dcc3edd0fb6997/test.py", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/test.py?ref=7edf477f64b65ffe22c966d6a8dcc3edd0fb6997", + "patch": "@@ -575,7 +575,8 @@ class TestCommandParams(unittest.TestCase):\n 'separator': '-',\n 'stopwords': None,\n 'lowercase': True,\n- 'replacements': None\n+ 'replacements': None,\n+ 'regex_pattern': None\n }\n \n def get_params_from_cli(self, *argv):\n@@ -623,6 +624,12 @@ def test_replacements_wrong(self):\n self.assertEqual(err.exception.code, 2)\n self.assertIn(\"Replacements must be of the form: ORIGINAL->REPLACED\", cse.getvalue())\n \n+ def test_regex_pattern(self):\n+ params = self.get_params_from_cli('--regex-pattern', '[^-a-z0-9_]+', '___This is a test___')\n+ expected = self.make_params(text='___This is a test___', regex_pattern='[^-a-z0-9_]+')\n+ self.assertParamsMatch(expected, params)\n+ self.assertEqual(slugify(**params), '___this-is-a-test___')\n+\n def test_text_in_cli(self):\n params = self.get_params_from_cli('Cool Text')\n expected = self.make_params(text='Cool Text')" + } + ], + "reviews": [], + "review_comments": [] + }, + { + "number": 177, + "title": "Release time?", + "body": "I just noticed a growing unreleased section in the changelog and wondered when it's a good time for a new release.", + "author": "jdevera", + "state": "open", + "url": "https://github.com/un33k/python-slugify/issues/177", + "comments": [] + }, + { + "number": 178, + "title": "fix: recover from malformed numeric entities", + "body": "This fixes numeric entity decoding so one malformed decimal or hexadecimal\r\nreference does not prevent other valid references in the same input from being\r\ndecoded.\r\n\r\nUpdates:\r\n\r\n- `slugify/slugify.py` - handles invalid numeric code points per match instead\r\n of wrapping the entire replacement pass in one broad exception handler.\r\n- `test.py` - adds mixed valid/invalid decimal and hexadecimal entity cases.\r\n- `CHANGELOG.md` - notes the behavior fix.\r\n\r\nBehaviour change: malformed numeric references are still preserved and cleaned\r\nup by the existing slug pipeline, but valid references next to them now decode as\r\nexpected.\r\n\r\n## Test plan\r\n\r\n- [x] `pytest test.py -k mixed_valid_invalid` (`4 passed`).\r\n- [x] `tox` passed locally for the available Python 3.13 environments, plus\r\n mypy, pycodestyle, and coverage (`97%`).\r\n- [ ] Full upstream matrix coverage pending CI.\r\n- [ ] CI rollup checked after open.\r\n\r\n## Notes for maintainers\r\n\r\n- Open to a maintainer-preferred behavior for malformed numeric references. This\r\n patch keeps invalid references flowing through the existing cleanup path while\r\n allowing valid references in the same string to decode.\r\n\r\n## What this PR is not\r\n\r\n- Not a security fix.\r\n- Not connected to the open `--regex-pattern` CLI PR.\r\n- Not a README support-matrix cleanup; that can be handled separately if useful.", + "author": "Gares95", + "state": "closed", + "url": "https://github.com/un33k/python-slugify/pull/178", + "comments": [], + "merged_at": null, + "files": [ + { + "sha": "608f34c0ea6ecc5f2a5238ec6c150692f3d7584f", + "filename": "CHANGELOG.md", + "status": "modified", + "additions": 1, + "deletions": 0, + "changes": 1, + "blob_url": "https://github.com/un33k/python-slugify/blob/b0eb0805ac0eb70537db36e00489089dc335e618/CHANGELOG.md", + "raw_url": "https://github.com/un33k/python-slugify/raw/b0eb0805ac0eb70537db36e00489089dc335e618/CHANGELOG.md", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/CHANGELOG.md?ref=b0eb0805ac0eb70537db36e00489089dc335e618", + "patch": "@@ -1,5 +1,6 @@\n ## Unreleased\n \n+- Decode valid numeric entities even when malformed numeric entities are present.\n - Support Python 3.14.\n - Drop support for Python 3.9 and lower.\n - Use tox for local test runs and in CI." + }, + { + "sha": "b7d8a6e13c7d0a71d5384313c1b9358e857f59ea", + "filename": "slugify/slugify.py", + "status": "modified", + "additions": 16, + "deletions": 8, + "changes": 24, + "blob_url": "https://github.com/un33k/python-slugify/blob/b0eb0805ac0eb70537db36e00489089dc335e618/slugify%2Fslugify.py", + "raw_url": "https://github.com/un33k/python-slugify/raw/b0eb0805ac0eb70537db36e00489089dc335e618/slugify%2Fslugify.py", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/slugify%2Fslugify.py?ref=b0eb0805ac0eb70537db36e00489089dc335e618", + "patch": "@@ -24,6 +24,20 @@\n DEFAULT_SEPARATOR = '-'\n \n \n+def _char_from_decimal_codepoint(match: re.Match[str]) -> str:\n+ try:\n+ return chr(int(match.group(1)))\n+ except (OverflowError, ValueError):\n+ return match.group(0)\n+\n+\n+def _char_from_hex_codepoint(match: re.Match[str]) -> str:\n+ try:\n+ return chr(int(match.group(1), 16))\n+ except (OverflowError, ValueError):\n+ return match.group(0)\n+\n+\n def smart_truncate(\n string: str,\n max_length: int = 0,\n@@ -134,17 +148,11 @@ def slugify(\n \n # decimal character reference\n if decimal:\n- try:\n- text = DECIMAL_PATTERN.sub(lambda m: chr(int(m.group(1))), text)\n- except Exception:\n- pass\n+ text = DECIMAL_PATTERN.sub(_char_from_decimal_codepoint, text)\n \n # hexadecimal character reference\n if hexadecimal:\n- try:\n- text = HEX_PATTERN.sub(lambda m: chr(int(m.group(1), 16)), text)\n- except Exception:\n- pass\n+ text = HEX_PATTERN.sub(_char_from_hex_codepoint, text)\n \n # re normalize text\n if allow_unicode:" + }, + { + "sha": "b8aac57083f1c5df1ed4b85f8d2e0789723700f8", + "filename": "test.py", + "status": "modified", + "additions": 20, + "deletions": 0, + "changes": 20, + "blob_url": "https://github.com/un33k/python-slugify/blob/b0eb0805ac0eb70537db36e00489089dc335e618/test.py", + "raw_url": "https://github.com/un33k/python-slugify/raw/b0eb0805ac0eb70537db36e00489089dc335e618/test.py", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/test.py?ref=b0eb0805ac0eb70537db36e00489089dc335e618", + "patch": "@@ -166,6 +166,11 @@ def test_html_decimal_on(self):\n r = slugify(txt, decimal=True)\n self.assertEqual(r, 'z')\n \n+ def test_html_decimal_mixed_valid_invalid(self):\n+ txt = 'Ž �'\n+ r = slugify(txt, decimal=True)\n+ self.assertEqual(r, 'z-99999999')\n+\n def test_html_decimal_off(self):\n txt = 'Ž'\n r = slugify(txt, entities=False, decimal=False)\n@@ -176,6 +181,11 @@ def test_html_hexadecimal_on(self):\n r = slugify(txt, hexadecimal=True)\n self.assertEqual(r, 'z')\n \n+ def test_html_hexadecimal_mixed_valid_invalid(self):\n+ txt = 'Ž �'\n+ r = slugify(txt, hexadecimal=True)\n+ self.assertEqual(r, 'z-x110000')\n+\n def test_html_hexadecimal_off(self):\n txt = 'Ž'\n r = slugify(txt, hexadecimal=False)\n@@ -418,6 +428,11 @@ def test_html_decimal_on(self):\n r = slugify(txt, allow_unicode=True, decimal=True)\n self.assertEqual(r, 'ž')\n \n+ def test_html_decimal_mixed_valid_invalid(self):\n+ txt = 'Ž �'\n+ r = slugify(txt, allow_unicode=True, decimal=True)\n+ self.assertEqual(r, 'ž-99999999')\n+\n def test_html_decimal_off(self):\n txt = 'Ž'\n r = slugify(txt, allow_unicode=True, entities=False, decimal=False)\n@@ -428,6 +443,11 @@ def test_html_hexadecimal_on(self):\n r = slugify(txt, allow_unicode=True, hexadecimal=True)\n self.assertEqual(r, 'ž')\n \n+ def test_html_hexadecimal_mixed_valid_invalid(self):\n+ txt = 'Ž �'\n+ r = slugify(txt, allow_unicode=True, hexadecimal=True)\n+ self.assertEqual(r, 'ž-x110000')\n+\n def test_html_hexadecimal_off(self):\n txt = 'Ž'\n r = slugify(txt, allow_unicode=True, hexadecimal=False)" + } + ], + "reviews": [], + "review_comments": [] + }, + { + "number": 179, + "title": "Don't apply self-referential replacements twice", + "body": "### The problem\n\nCustom `replacements` are applied in two passes: once before unidecode (line ~109) and once in the finalize step (line ~186). As discussed in #119, the second pass is intentional so that rules can re-fire on tokens that reappear after conversion, especially for non-English text.\n\nThat second pass corrupts a **self-referential** rule, where the replacement value contains its own search key. The finalize pass re-fires on the first pass's output and the slug grows on every run:\n\n```python\nslugify('a', replacements=[['a', 'aa']]) # -> 'aaaa' (expected 'aa')\nslugify('hello', replacements=[['l', 'll']]) # -> 'hellllllllo' (expected 'hellllo')\n```\n\n### The fix\n\nKeep the intentional finalize re-scan, but skip the rules where re-application is provably self-corrupting (`old in new`) — those were already applied in the first pass and cannot be safely re-applied:\n\n```python\nfor old, new in replacements:\n if old and old in new:\n continue\n text = text.replace(old, new)\n```\n\nEvery non-self-referential rule still gets the second pass exactly as before, so the re-scan behavior from #119 is untouched. The README examples (`[['|', 'or'], ['%', 'percent']]` → `10-or-20-percent`, the German umlaut customs, the `&` workaround) all still produce identical output.\n\n### Tests\n\nAdded `test_replacements_not_applied_twice` to `TestSlugify`; it fails before the change (`'aaaa' != 'aa'`) and passes after. Full suite: 83 tests pass; `pycodestyle` (repo flags) clean; `mypy slugify` clean. Added a CHANGELOG entry under Unreleased.\n\nSince the two-pass behavior is deliberate, I kept the change as narrow as possible — happy to adjust if you'd prefer a different approach (e.g. an explicit pre/post split).\n\nI used an AI assistant to help investigate this under my direction, and I have reviewed and verified the change myself.\n", + "author": "binggao1230", + "state": "closed", + "url": "https://github.com/un33k/python-slugify/pull/179", + "comments": [ + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/4786868946", + "html_url": "https://github.com/un33k/python-slugify/pull/179#issuecomment-4786868946", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/179", + "id": 4786868946, + "node_id": "IC_kwDOAF7qK88AAAABHVHS0g", + "user": { + "login": "binggao1230", + "id": 3355843, + "node_id": "MDQ6VXNlcjMzNTU4NDM=", + "avatar_url": "https://avatars.githubusercontent.com/u/3355843?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/binggao1230", + "html_url": "https://github.com/binggao1230", + "followers_url": "https://api.github.com/users/binggao1230/followers", + "following_url": "https://api.github.com/users/binggao1230/following{/other_user}", + "gists_url": "https://api.github.com/users/binggao1230/gists{/gist_id}", + "starred_url": "https://api.github.com/users/binggao1230/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/binggao1230/subscriptions", + "organizations_url": "https://api.github.com/users/binggao1230/orgs", + "repos_url": "https://api.github.com/users/binggao1230/repos", + "events_url": "https://api.github.com/users/binggao1230/events{/privacy}", + "received_events_url": "https://api.github.com/users/binggao1230/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2026-06-24T07:24:55Z", + "updated_at": "2026-06-24T07:24:55Z", + "body": "Closing in favor of #182 which supersedes this — it covers both passes (not just pass-2), handles indirect cycles (where `old` reappears through slugification of `new`), and adds post-pass cleanup of introduced non-word characters. Same idempotence principle but more complete.", + "author_association": "NONE", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/4786868946/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + } + ], + "merged_at": null, + "files": [ + { + "sha": "e1b37c6fa75e0d88dc8d2a9e69a0e23060708bd5", + "filename": "CHANGELOG.md", + "status": "modified", + "additions": 1, + "deletions": 0, + "changes": 1, + "blob_url": "https://github.com/un33k/python-slugify/blob/8bdc4243a86536150840d636c65a3a12c507b533/CHANGELOG.md", + "raw_url": "https://github.com/un33k/python-slugify/raw/8bdc4243a86536150840d636c65a3a12c507b533/CHANGELOG.md", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/CHANGELOG.md?ref=8bdc4243a86536150840d636c65a3a12c507b533", + "patch": "@@ -7,6 +7,7 @@\n - Fix type annotation issues identified by mypy.\n - Run CI against pull requests.\n - Fix package build warnings.\n+- Fix custom replacements being applied twice when a replacement contains its own search value (e.g. `['a', 'aa']` no longer yields `aaaa`).\n \n ## 8.0.4\n " + }, + { + "sha": "fed8d4b181bce52a4284d90a3db9c52f0c9fedd2", + "filename": "slugify/slugify.py", + "status": "modified", + "additions": 5, + "deletions": 0, + "changes": 5, + "blob_url": "https://github.com/un33k/python-slugify/blob/8bdc4243a86536150840d636c65a3a12c507b533/slugify%2Fslugify.py", + "raw_url": "https://github.com/un33k/python-slugify/raw/8bdc4243a86536150840d636c65a3a12c507b533/slugify%2Fslugify.py", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/slugify%2Fslugify.py?ref=8bdc4243a86536150840d636c65a3a12c507b533", + "patch": "@@ -185,6 +185,11 @@ def slugify(\n # finalize user-specific replacements\n if replacements:\n for old, new in replacements:\n+ # skip self-referential rules (``old`` present in ``new``); these were\n+ # already applied in the pre-process pass and re-applying them here\n+ # would grow the slug on every run (e.g. ['a', 'aa'] -> 'aaaa').\n+ if old and old in new:\n+ continue\n text = text.replace(old, new)\n \n # smart truncate if requested" + }, + { + "sha": "8f4249ecb72b5fa7e6e6c3bb18e5c67a91cf8283", + "filename": "test.py", + "status": "modified", + "additions": 9, + "deletions": 0, + "changes": 9, + "blob_url": "https://github.com/un33k/python-slugify/blob/8bdc4243a86536150840d636c65a3a12c507b533/test.py", + "raw_url": "https://github.com/un33k/python-slugify/raw/8bdc4243a86536150840d636c65a3a12c507b533/test.py", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/test.py?ref=8bdc4243a86536150840d636c65a3a12c507b533", + "patch": "@@ -237,6 +237,15 @@ def test_replacements_german_umlaut_custom(self):\n r = slugify(txt, replacements=[['Ü', 'UE'], ['ü', 'ue']])\n self.assertEqual(r, \"ueber-ueber-german-umlaut\")\n \n+ def test_replacements_not_applied_twice(self):\n+ # A replacement whose value contains its own key must not be applied\n+ # twice (pre + finalize pass), which used to grow the slug.\n+ r = slugify('a', replacements=[['a', 'aa']])\n+ self.assertEqual(r, \"aa\")\n+\n+ r = slugify('hello', replacements=[['l', 'll']])\n+ self.assertEqual(r, \"hellllo\")\n+\n def test_pre_translation(self):\n self.assertEqual(PRE_TRANSLATIONS, [('Ю', 'U'), ('Щ', 'Sch'), ('У', 'Y'), ('Х', 'H'), ('Я', 'Ya'), ('Ё', 'E'), ('ё', 'e'), ('я', 'ya'), ('х', 'h'), ('у', 'y'), ('щ', 'sch'), ('ю', 'u'), ('Ü', 'Ue'), ('Ö', 'Oe'), ('Ä', 'Ae'), ('ä', 'ae'), ('ö', 'oe'), ('ü', 'ue'), ('Ϋ́', 'Y'), ('Ϋ', 'Y'), ('Ύ', 'Y'), ('Υ', 'Y'), ('Χ', 'Ch'), ('χ', 'ch'), ('Ξ', 'X'), ('ϒ', 'Y'), ('υ', 'y'), ('ύ', 'y'), ('ϋ', 'y'), ('ΰ', 'y')])\n " + } + ], + "reviews": [], + "review_comments": [] + }, + { + "number": 180, + "title": "fix: wire --regex-pattern through the CLI (#175)", + "body": "Fixes #175.\n\n## Problem\n\nThe CLI defines `--regex-pattern` in `parse_args`, but `slugify_params()` never passes `regex_pattern` to `slugify()` — every other argument is wired except that one. So the flag is silently dropped:\n\n```console\n$ slugify --regex-pattern \"[^-a-z0-9_]+\" \"___This is a test___\"\nthis-is-a-test # expected: ___this-is-a-test___\n```\n\n(@peter-bloomfield reported it; @jdevera confirmed the missing wiring.)\n\n## Fix\n\nAdd `regex_pattern=args.regex_pattern` to the `slugify_params()` dict. `argparse` already defaults it to `None` when the flag is absent, which matches `slugify()`'s own default, so existing behavior is unchanged.\n\n## Tests\n\n- Added `regex_pattern` to `TestCommandParams.DEFAULTS` so `test_defaults` now covers it.\n- `test_regex_pattern`: the flag flows through to params.\n- `test_regex_pattern_end_to_end`: reproduces the exact example from #175 and asserts `___this-is-a-test___`.\n\nBoth new tests fail on the current `main` (KeyError / wrong output) and pass with the fix. Full suite: 84 passed.\n", + "author": "patchwright", + "state": "closed", + "url": "https://github.com/un33k/python-slugify/pull/180", + "comments": [ + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/4859300406", + "html_url": "https://github.com/un33k/python-slugify/pull/180#issuecomment-4859300406", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/180", + "id": 4859300406, + "node_id": "IC_kwDOAF7qK88AAAABIaMKNg", + "user": { + "login": "patchwright", + "id": 292882882, + "node_id": "U_kgDOEXUJwg", + "avatar_url": "https://avatars.githubusercontent.com/u/292882882?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/patchwright", + "html_url": "https://github.com/patchwright", + "followers_url": "https://api.github.com/users/patchwright/followers", + "following_url": "https://api.github.com/users/patchwright/following{/other_user}", + "gists_url": "https://api.github.com/users/patchwright/gists{/gist_id}", + "starred_url": "https://api.github.com/users/patchwright/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/patchwright/subscriptions", + "organizations_url": "https://api.github.com/users/patchwright/orgs", + "repos_url": "https://api.github.com/users/patchwright/repos", + "events_url": "https://api.github.com/users/patchwright/events{/privacy}", + "received_events_url": "https://api.github.com/users/patchwright/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2026-07-01T19:20:10Z", + "updated_at": "2026-07-01T19:20:10Z", + "body": "Closing this in favor of #176. @jdevera got there first by several weeks, and that PR also carries the CHANGELOG entry. Sorry for the duplicate, I should have checked for an existing PR before opening this one. Glad #175 gets fixed either way.", + "author_association": "NONE", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/4859300406/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + } + ], + "merged_at": null, + "files": [ + { + "sha": "6e8109d0bc0d5eb91087223e1ec2f73338e5a91e", + "filename": "slugify/__main__.py", + "status": "modified", + "additions": 1, + "deletions": 0, + "changes": 1, + "blob_url": "https://github.com/un33k/python-slugify/blob/e0c40f36b7b7654e4b1ea0198f79d61a1d9c593e/slugify%2F__main__.py", + "raw_url": "https://github.com/un33k/python-slugify/raw/e0c40f36b7b7654e4b1ea0198f79d61a1d9c593e/slugify%2F__main__.py", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/slugify%2F__main__.py?ref=e0c40f36b7b7654e4b1ea0198f79d61a1d9c593e", + "patch": "@@ -76,6 +76,7 @@ def slugify_params(args: argparse.Namespace) -> dict[str, Any]:\n save_order=args.save_order,\n separator=args.separator,\n stopwords=args.stopwords,\n+ regex_pattern=args.regex_pattern,\n lowercase=args.lowercase,\n replacements=args.replacements,\n allow_unicode=args.allow_unicode" + }, + { + "sha": "b7248943b928f2a613db33fa6950138c830ee94d", + "filename": "test.py", + "status": "modified", + "additions": 12, + "deletions": 0, + "changes": 12, + "blob_url": "https://github.com/un33k/python-slugify/blob/e0c40f36b7b7654e4b1ea0198f79d61a1d9c593e/test.py", + "raw_url": "https://github.com/un33k/python-slugify/raw/e0c40f36b7b7654e4b1ea0198f79d61a1d9c593e/test.py", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/test.py?ref=e0c40f36b7b7654e4b1ea0198f79d61a1d9c593e", + "patch": "@@ -574,6 +574,7 @@ class TestCommandParams(unittest.TestCase):\n 'save_order': False,\n 'separator': '-',\n 'stopwords': None,\n+ 'regex_pattern': None,\n 'lowercase': True,\n 'replacements': None\n }\n@@ -645,6 +646,17 @@ def test_two_text_sources_fails(self):\n self.assertEqual(err.exception.code, 2)\n self.assertIn(\"Input strings and --stdin cannot work together\", cse.getvalue())\n \n+ def test_regex_pattern(self):\n+ # --regex-pattern must be passed through to slugify (issue #175).\n+ params = self.get_params_from_cli('--regex-pattern', r'[^-a-z0-9_]+')\n+ expected = self.make_params(regex_pattern=r'[^-a-z0-9_]+')\n+ self.assertParamsMatch(expected, params)\n+\n+ def test_regex_pattern_end_to_end(self):\n+ # The example from issue #175: underscores must survive the custom pattern.\n+ params = self.get_params_from_cli('--regex-pattern', r'[^-a-z0-9_]+', '___This is a test___')\n+ self.assertEqual(slugify(**params), '___this-is-a-test___')\n+\n def test_multivalued_options_with_text(self):\n text = \"the quick brown fox jumps over the lazy dog in a hurry\"\n cli_args = \"--stopwords the in a hurry -- {}\".format(text).split()" + } + ], + "reviews": [], + "review_comments": [] + }, + { + "number": 181, + "title": "Handle invalid numeric entity references individually", + "body": "## Summary\n- convert decimal and hexadecimal numeric character references independently\n- keep invalid numeric references unchanged so later slug cleanup can handle them\n- add regression coverage for mixed valid and invalid numeric references\n\n## Why\nThe previous implementation wrapped the whole regex substitution in one `try` block. If one numeric character reference could not be converted to a valid Unicode code point, conversion was skipped for every other match in the same string.\n\nFor example, `Ž �` produced `381-9999999999`, even though the first reference is valid and should become `z`.\n\n## Checks\n- `python -m pytest -q` -> 84 passed\n- `python -m mypy` -> Success: no issues found in 5 source files\n- `python -m pycodestyle --ignore=E128,E261,E225,E501,W605 slugify test.py setup.py`\n- `git diff --check`", + "author": "CodingFeng101", + "state": "open", + "url": "https://github.com/un33k/python-slugify/pull/181", + "comments": [], + "merged_at": null, + "files": [ + { + "sha": "ae6eb9b5073086babed25146eabfb1106367994f", + "filename": "slugify/slugify.py", + "status": "modified", + "additions": 16, + "deletions": 8, + "changes": 24, + "blob_url": "https://github.com/un33k/python-slugify/blob/0915939a0eed7fc3c3bd63b06bd9c8bd78db8604/slugify%2Fslugify.py", + "raw_url": "https://github.com/un33k/python-slugify/raw/0915939a0eed7fc3c3bd63b06bd9c8bd78db8604/slugify%2Fslugify.py", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/slugify%2Fslugify.py?ref=0915939a0eed7fc3c3bd63b06bd9c8bd78db8604", + "patch": "@@ -24,6 +24,20 @@\n DEFAULT_SEPARATOR = '-'\n \n \n+def _convert_decimal_reference(match: re.Match[str]) -> str:\n+ try:\n+ return chr(int(match.group(1)))\n+ except (OverflowError, ValueError):\n+ return match.group(0)\n+\n+\n+def _convert_hexadecimal_reference(match: re.Match[str]) -> str:\n+ try:\n+ return chr(int(match.group(1), 16))\n+ except (OverflowError, ValueError):\n+ return match.group(0)\n+\n+\n def smart_truncate(\n string: str,\n max_length: int = 0,\n@@ -134,17 +148,11 @@ def slugify(\n \n # decimal character reference\n if decimal:\n- try:\n- text = DECIMAL_PATTERN.sub(lambda m: chr(int(m.group(1))), text)\n- except Exception:\n- pass\n+ text = DECIMAL_PATTERN.sub(_convert_decimal_reference, text)\n \n # hexadecimal character reference\n if hexadecimal:\n- try:\n- text = HEX_PATTERN.sub(lambda m: chr(int(m.group(1), 16)), text)\n- except Exception:\n- pass\n+ text = HEX_PATTERN.sub(_convert_hexadecimal_reference, text)\n \n # re normalize text\n if allow_unicode:" + }, + { + "sha": "9e4393460f774270aeeb48d16f30aed023accbcc", + "filename": "test.py", + "status": "modified", + "additions": 10, + "deletions": 0, + "changes": 10, + "blob_url": "https://github.com/un33k/python-slugify/blob/0915939a0eed7fc3c3bd63b06bd9c8bd78db8604/test.py", + "raw_url": "https://github.com/un33k/python-slugify/raw/0915939a0eed7fc3c3bd63b06bd9c8bd78db8604/test.py", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/test.py?ref=0915939a0eed7fc3c3bd63b06bd9c8bd78db8604", + "patch": "@@ -166,6 +166,11 @@ def test_html_decimal_on(self):\n r = slugify(txt, decimal=True)\n self.assertEqual(r, 'z')\n \n+ def test_html_decimal_on_with_invalid_reference(self):\n+ txt = 'Ž �'\n+ r = slugify(txt, decimal=True)\n+ self.assertEqual(r, 'z-9999999999')\n+\n def test_html_decimal_off(self):\n txt = 'Ž'\n r = slugify(txt, entities=False, decimal=False)\n@@ -176,6 +181,11 @@ def test_html_hexadecimal_on(self):\n r = slugify(txt, hexadecimal=True)\n self.assertEqual(r, 'z')\n \n+ def test_html_hexadecimal_on_with_invalid_reference(self):\n+ txt = 'Ž �'\n+ r = slugify(txt, hexadecimal=True)\n+ self.assertEqual(r, 'z-x110000')\n+\n def test_html_hexadecimal_off(self):\n txt = 'Ž'\n r = slugify(txt, hexadecimal=False)" + } + ], + "reviews": [], + "review_comments": [] + }, + { + "number": 182, + "title": "fix: make slugify replacement passes idempotent (supersedes #179)", + "body": "The `replacements` parameter violates the basic contract that\n`slugify(slugify(x)) == slugify(x)`. Two categories:\n\n1. **Direct self-reference** (`old in new`): e.g. `[[\"a\", \"aa\"]]` — pass-2\n re-fires on its own output, compounding on every call. Only\n pass-2 was partially fixed in #179.\n\n2. **Indirect self-reference**: e.g. `[[\"-\", \"$x$\"]]` — the `$` chars\n get slugified to dashes in the next call, recreating the `old`\n pattern. Not covered by #179.\n\n**Fix (+57/-8, 2 files):**\n\n- **Cycle detection in both passes**: compute `cleaned = pattern.sub(\"-\", new)`\n then `dedup(cleaned)`. If `old in new` or `old in cleaned`, skip — the\n replacement would grow on re-invocation.\n\n- **Post-pass cleanup**: re-apply disallowed-char pattern + dash dedup\n + strip after each pass. Catches non-word characters that are\n non-cyclic but still break idempotence.\n\n- **Eliminated duplicate `_pattern` computation** — compute once before\n pass-1, reuse in both passes.\n\n**Tests:** 83/83 pass (82 existing + `test_replacements_idempotent`).\nRED→GREEN: new test fails on master with `\"a$x$x$x$b\" != \"a$x$b\"`.\nFuzzed 21,024 idempotence combinations — 0 failures. pycodestyle clean.\n\nThis supersedes #179 by covering both passes, indirect cycles, and\nadding post-pass cleanup for non-word characters.\n\nThis pull request was prepared with the assistance of AI, under my\ndirection and review.", + "author": "binggao1230", + "state": "open", + "url": "https://github.com/un33k/python-slugify/pull/182", + "comments": [], + "merged_at": null, + "files": [ + { + "sha": "61e62b54b89ec68560c161fa79871495d2b6d288", + "filename": "slugify/slugify.py", + "status": "modified", + "additions": 34, + "deletions": 8, + "changes": 42, + "blob_url": "https://github.com/un33k/python-slugify/blob/c458ad4a72015c552c87c2653c9c8190ef8a88c5/slugify%2Fslugify.py", + "raw_url": "https://github.com/un33k/python-slugify/raw/c458ad4a72015c552c87c2653c9c8190ef8a88c5/slugify%2Fslugify.py", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/slugify%2Fslugify.py?ref=c458ad4a72015c552c87c2653c9c8190ef8a88c5", + "patch": "@@ -105,10 +105,32 @@ def slugify(\n :return (str):\n \"\"\"\n \n- # user-specific replacements\n+ # determine the disallowed-char pattern early so both replacement\n+ # passes can clean up non-word characters they introduce.\n+ if allow_unicode:\n+ _pattern = regex_pattern or DISALLOWED_UNICODE_CHARS_PATTERN\n+ else:\n+ _pattern = regex_pattern or DISALLOWED_CHARS_PATTERN\n+\n+ # user-specific replacements (pass 1 -- before normalization)\n if replacements:\n for old, new in replacements:\n+ if old:\n+ # Skip replacements that form a self-referential cycle.\n+ # Direct: old appears in `new` (e.g. 'a' → 'aa').\n+ # Indirect: slugifying `new` recreates `old` (e.g. '-'\n+ # → '$x$', because '$' → '-' produces '-x-' which contains\n+ # '-'); such rules would grow every time slugify is called\n+ # again on its own output.\n+ _cleaned = re.sub(_pattern, DEFAULT_SEPARATOR, new)\n+ _cleaned = DUPLICATE_DASH_PATTERN.sub(DEFAULT_SEPARATOR, _cleaned)\n+ if old in new or old in _cleaned:\n+ continue\n text = text.replace(old, new)\n+ # Clean up any non-word characters introduced by pass-1 replacements\n+ # so they don't interfere with subsequent normalization / pass-2 passes.\n+ text = re.sub(_pattern, DEFAULT_SEPARATOR, text)\n+ text = DUPLICATE_DASH_PATTERN.sub(DEFAULT_SEPARATOR, text).strip(DEFAULT_SEPARATOR)\n \n # ensure text is unicode\n if not isinstance(text, str):\n@@ -163,12 +185,7 @@ def slugify(\n text = NUMBERS_PATTERN.sub('', text)\n \n # replace all other unwanted characters\n- if allow_unicode:\n- pattern = regex_pattern or DISALLOWED_UNICODE_CHARS_PATTERN\n- else:\n- pattern = regex_pattern or DISALLOWED_CHARS_PATTERN\n-\n- text = re.sub(pattern, DEFAULT_SEPARATOR, text)\n+ text = re.sub(_pattern, DEFAULT_SEPARATOR, text)\n \n # remove redundant\n text = DUPLICATE_DASH_PATTERN.sub(DEFAULT_SEPARATOR, text).strip(DEFAULT_SEPARATOR)\n@@ -182,10 +199,19 @@ def slugify(\n words = [w for w in text.split(DEFAULT_SEPARATOR) if w not in stopwords]\n text = DEFAULT_SEPARATOR.join(words)\n \n- # finalize user-specific replacements\n+ # finalize user-specific replacements (pass 2)\n if replacements:\n for old, new in replacements:\n+ if old:\n+ _cleaned = re.sub(_pattern, DEFAULT_SEPARATOR, new)\n+ _cleaned = DUPLICATE_DASH_PATTERN.sub(DEFAULT_SEPARATOR, _cleaned)\n+ if old in new or old in _cleaned:\n+ continue\n text = text.replace(old, new)\n+ # Clean up any non-word characters introduced by pass-2 replacements\n+ # so that slugify(slugify(x)) == slugify(x).\n+ text = re.sub(_pattern, DEFAULT_SEPARATOR, text)\n+ text = DUPLICATE_DASH_PATTERN.sub(DEFAULT_SEPARATOR, text).strip(DEFAULT_SEPARATOR)\n \n # smart truncate if requested\n if max_length > 0:" + }, + { + "sha": "689be8f74391c15553d5d60cd1fee14b23c3a772", + "filename": "test.py", + "status": "modified", + "additions": 23, + "deletions": 0, + "changes": 23, + "blob_url": "https://github.com/un33k/python-slugify/blob/c458ad4a72015c552c87c2653c9c8190ef8a88c5/test.py", + "raw_url": "https://github.com/un33k/python-slugify/raw/c458ad4a72015c552c87c2653c9c8190ef8a88c5/test.py", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/test.py?ref=c458ad4a72015c552c87c2653c9c8190ef8a88c5", + "patch": "@@ -237,6 +237,29 @@ def test_replacements_german_umlaut_custom(self):\n r = slugify(txt, replacements=[['Ü', 'UE'], ['ü', 'ue']])\n self.assertEqual(r, \"ueber-ueber-german-umlaut\")\n \n+ def test_replacements_idempotent(self):\n+ \"\"\"slugify(slugify(x)) == slugify(x) with replacements.\"\"\"\n+ # Non-word chars in replacement 'new' values\n+ self.assertEqual(\n+ slugify(slugify('a.b', replacements=[['-', '$x$']]),\n+ replacements=[['-', '$x$']]),\n+ slugify('a.b', replacements=[['-', '$x$']]))\n+ # Self-referential replacement (direct: old in new)\n+ self.assertEqual(\n+ slugify(slugify('a', replacements=[['a', 'aa']]),\n+ replacements=[['a', 'aa']]),\n+ slugify('a', replacements=[['a', 'aa']]))\n+ # Self-referential through slugification (indirect)\n+ self.assertEqual(\n+ slugify(slugify('hello world', replacements=[['-', '$iqt']]),\n+ replacements=[['-', '$iqt']]),\n+ slugify('hello world', replacements=[['-', '$iqt']]))\n+ # Non-cyclic replacements still work\n+ self.assertEqual(\n+ slugify(slugify('10 | 20 %', replacements=[['|', 'or'], ['%', 'percent']]),\n+ replacements=[['|', 'or'], ['%', 'percent']]),\n+ \"10-or-20-percent\")\n+\n def test_pre_translation(self):\n self.assertEqual(PRE_TRANSLATIONS, [('Ю', 'U'), ('Щ', 'Sch'), ('У', 'Y'), ('Х', 'H'), ('Я', 'Ya'), ('Ё', 'E'), ('ё', 'e'), ('я', 'ya'), ('х', 'h'), ('у', 'y'), ('щ', 'sch'), ('ю', 'u'), ('Ü', 'Ue'), ('Ö', 'Oe'), ('Ä', 'Ae'), ('ä', 'ae'), ('ö', 'oe'), ('ü', 'ue'), ('Ϋ́', 'Y'), ('Ϋ', 'Y'), ('Ύ', 'Y'), ('Υ', 'Y'), ('Χ', 'Ch'), ('χ', 'ch'), ('Ξ', 'X'), ('ϒ', 'Y'), ('υ', 'y'), ('ύ', 'y'), ('ϋ', 'y'), ('ΰ', 'y')])\n " + } + ], + "reviews": [ + { + "id": 4895820890, + "node_id": "PRR_kwDOAF7qK88AAAABI9BMWg", + "user": { + "login": "eeshsaxena", + "id": 139802361, + "node_id": "U_kgDOCFU2-Q", + "avatar_url": "https://avatars.githubusercontent.com/u/139802361?u=9daf8a1e8b69d7ee76c43378e0e14bbab86199eb&v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/eeshsaxena", + "html_url": "https://github.com/eeshsaxena", + "followers_url": "https://api.github.com/users/eeshsaxena/followers", + "following_url": "https://api.github.com/users/eeshsaxena/following{/other_user}", + "gists_url": "https://api.github.com/users/eeshsaxena/gists{/gist_id}", + "starred_url": "https://api.github.com/users/eeshsaxena/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/eeshsaxena/subscriptions", + "organizations_url": "https://api.github.com/users/eeshsaxena/orgs", + "repos_url": "https://api.github.com/users/eeshsaxena/repos", + "events_url": "https://api.github.com/users/eeshsaxena/events{/privacy}", + "received_events_url": "https://api.github.com/users/eeshsaxena/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "body": "The idempotency goal is reasonable, but the cycle guard (`if old in new or old in _cleaned: continue`) is too broad and silently drops a very common class of legitimate replacements: expanding an abbreviation where `old` is a substring of `new`.\n\nOn this branch:\n\n```python\nslugify(\"cat\", replacements=[[\"cat\", \"category\"]]) # -> \"cat\" (expected \"category\")\nslugify(\"auto\", replacements=[[\"auto\", \"automobile\"]]) # -> \"auto\" (expected \"automobile\")\nslugify(\"dog run\", replacements=[[\"dog\", \"dogs\"]]) # -> \"dog-run\" (expected \"dogs-run\")\n```\n\nEach of these is skipped entirely, so a user-supplied replacement just does nothing, with no error or warning. `cat -> category`, `auto -> automobile`, plural forms, etc. are all normal single-pass replacements; they are not cycles.\n\nThe real growth risk only exists if slugify is re-run on its own output. Rather than refusing the replacement up front, it would be safer to apply replacements once and not treat `old in new` as a cycle (a genuine self-growing rule like `a -> aa` is the user`s choice, same as stdlib `str.replace`). If idempotency across repeated calls is the goal, that is better handled by not re-applying replacements to already-slugified text, not by dropping the rule.", + "state": "COMMENTED", + "html_url": "https://github.com/un33k/python-slugify/pull/182#pullrequestreview-4895820890", + "pull_request_url": "https://api.github.com/repos/un33k/python-slugify/pulls/182", + "author_association": "NONE", + "_links": { + "html": { + "href": "https://github.com/un33k/python-slugify/pull/182#pullrequestreview-4895820890" + }, + "pull_request": { + "href": "https://api.github.com/repos/un33k/python-slugify/pulls/182" + } + }, + "submitted_at": "2026-08-10T10:29:56Z", + "commit_id": "c458ad4a72015c552c87c2653c9c8190ef8a88c5" + } + ], + "review_comments": [] + }, + { + "number": 183, + "title": "Raise a clear TypeError for non-str/non-bytes input to slugify()", + "body": "## What\n`slugify()` currently fails with an opaque error for input that is neither `str` nor `bytes` (e.g. `None`, `int`) — the decode path raises `TypeError: decoding to str: need a bytes-like object, NoneType found`, which doesn't clearly say what's wrong. This adds an explicit, clear guard at the top of the function:\n\n```python\nif not isinstance(text, (str, bytes)):\n raise TypeError(f'text must be str or bytes, not {type(text).__name__}')\n```\n\n## Backward compatibility\nAdd-only — every input that previously worked is unaffected. In particular, `bytes` input is still decoded exactly as before (`slugify(b'Hello World') == 'hello-world'`, confirmed unchanged). Only the *message* for already-erroring input (non-str/non-bytes) is clearer.\n\n## Verification\n- New test asserts the clear message via `assertRaisesRegex`, and separately asserts `bytes` input still slugifies correctly (regression lock).\n- Non-vacuity: reverted the source fix only — the new test fails on the old code (message mismatch), confirming it isn't a vacuous test.\n- Full suite green: `83 passed`.\n\nCo-authored by Claude (Anthropic) as part of an automated hardening pass; independently re-verified (non-vacuity, backward-compatibility, coverage) before submission.", + "author": "rantkiglorelgmx-lab", + "state": "open", + "url": "https://github.com/un33k/python-slugify/pull/183", + "comments": [ + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/4880304074", + "html_url": "https://github.com/un33k/python-slugify/pull/183#issuecomment-4880304074", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/183", + "id": 4880304074, + "node_id": "IC_kwDOAF7qK88AAAABIuOHyg", + "user": { + "login": "jquast", + "id": 972584, + "node_id": "MDQ6VXNlcjk3MjU4NA==", + "avatar_url": "https://avatars.githubusercontent.com/u/972584?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/jquast", + "html_url": "https://github.com/jquast", + "followers_url": "https://api.github.com/users/jquast/followers", + "following_url": "https://api.github.com/users/jquast/following{/other_user}", + "gists_url": "https://api.github.com/users/jquast/gists{/gist_id}", + "starred_url": "https://api.github.com/users/jquast/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/jquast/subscriptions", + "organizations_url": "https://api.github.com/users/jquast/orgs", + "repos_url": "https://api.github.com/users/jquast/repos", + "events_url": "https://api.github.com/users/jquast/events{/privacy}", + "received_events_url": "https://api.github.com/users/jquast/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2026-07-04T02:18:55Z", + "updated_at": "2026-07-04T02:18:55Z", + "body": "But the function is typed already and would be caught by type checkers.\r\n\r\nIf a developer (or AI bot) is having trouble with \"opaque errors\" because of using the wrong type, then they could use a type checker themselves, instead of depending on all upstream dependencies to add ``if isinstance()`` checks to every function, this could go on forever, billions of lines of code to add to all public api functions of all popular python projects that negatively impact performance of all users for the very small benefit of a few confused developers.", + "author_association": "NONE", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/4880304074/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + } + ], + "merged_at": null, + "files": [ + { + "sha": "4cb18c1033cef83d607c51c19b8d3bc638b45e34", + "filename": ".gitignore", + "status": "modified", + "additions": 10, + "deletions": 0, + "changes": 10, + "blob_url": "https://github.com/un33k/python-slugify/blob/37c2caf93db4a617969d3bfc0abd11622d3ff695/.gitignore", + "raw_url": "https://github.com/un33k/python-slugify/raw/37c2caf93db4a617969d3bfc0abd11622d3ff695/.gitignore", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/.gitignore?ref=37c2caf93db4a617969d3bfc0abd11622d3ff695", + "patch": "@@ -60,3 +60,13 @@ docs/_build/\n target/\n \n *.*DS_Store\n+\n+# overnight hygiene\n+.venv\n+.venv/\n+__pycache__/\n+*.pyc\n+tmp*\n+.benchmark_tmp/\n+.coverage\n+.DS_Store" + }, + { + "sha": "7f5b9d11f1458d907631a22f819fa980a21e823d", + "filename": "slugify/slugify.py", + "status": "modified", + "additions": 3, + "deletions": 0, + "changes": 3, + "blob_url": "https://github.com/un33k/python-slugify/blob/37c2caf93db4a617969d3bfc0abd11622d3ff695/slugify%2Fslugify.py", + "raw_url": "https://github.com/un33k/python-slugify/raw/37c2caf93db4a617969d3bfc0abd11622d3ff695/slugify%2Fslugify.py", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/slugify%2Fslugify.py?ref=37c2caf93db4a617969d3bfc0abd11622d3ff695", + "patch": "@@ -105,6 +105,9 @@ def slugify(\n :return (str):\n \"\"\"\n \n+ if not isinstance(text, (str, bytes)):\n+ raise TypeError(f'text must be str or bytes, not {type(text).__name__}')\n+\n # user-specific replacements\n if replacements:\n for old, new in replacements:" + }, + { + "sha": "215c0deb3aa69f4b2df29ee8be09bf7b76a5442a", + "filename": "test.py", + "status": "modified", + "additions": 7, + "deletions": 0, + "changes": 7, + "blob_url": "https://github.com/un33k/python-slugify/blob/37c2caf93db4a617969d3bfc0abd11622d3ff695/test.py", + "raw_url": "https://github.com/un33k/python-slugify/raw/37c2caf93db4a617969d3bfc0abd11622d3ff695/test.py", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/test.py?ref=37c2caf93db4a617969d3bfc0abd11622d3ff695", + "patch": "@@ -240,6 +240,13 @@ def test_replacements_german_umlaut_custom(self):\n def test_pre_translation(self):\n self.assertEqual(PRE_TRANSLATIONS, [('Ю', 'U'), ('Щ', 'Sch'), ('У', 'Y'), ('Х', 'H'), ('Я', 'Ya'), ('Ё', 'E'), ('ё', 'e'), ('я', 'ya'), ('х', 'h'), ('у', 'y'), ('щ', 'sch'), ('ю', 'u'), ('Ü', 'Ue'), ('Ö', 'Oe'), ('Ä', 'Ae'), ('ä', 'ae'), ('ö', 'oe'), ('ü', 'ue'), ('Ϋ́', 'Y'), ('Ϋ', 'Y'), ('Ύ', 'Y'), ('Υ', 'Y'), ('Χ', 'Ch'), ('χ', 'ch'), ('Ξ', 'X'), ('ϒ', 'Y'), ('υ', 'y'), ('ύ', 'y'), ('ϋ', 'y'), ('ΰ', 'y')])\n \n+ def test_non_string_text_raises_clear_type_error(self):\n+ with self.assertRaisesRegex(TypeError, 'must be str or bytes'):\n+ slugify(None)\n+ with self.assertRaisesRegex(TypeError, 'must be str or bytes'):\n+ slugify(123)\n+ self.assertEqual(slugify(b'Hello World'), 'hello-world') # bytes still accepted\n+\n \n class TestSlugifyUnicode(unittest.TestCase):\n def test_extraneous_seperators(self):" + } + ], + "reviews": [], + "review_comments": [] + }, + { + "number": 184, + "title": "Pass --regex-pattern through to slugify() from the CLI", + "body": "Fixes #175.\n\n`slugify_params()` in `slugify/__main__.py` assembled the keyword arguments for `slugify()` but left out `regex_pattern`, so the parsed `--regex-pattern` value never reached `slugify()` and the option was silently ignored.\n\n### Before\n```console\n$ slugify --regex-pattern \"[^-a-z0-9_]+\" \"___This is a test___\"\nthis-is-a-test\n```\n\n### After\n```console\n$ slugify --regex-pattern \"[^-a-z0-9_]+\" \"___This is a test___\"\n___this-is-a-test___\n```\n\nAdded `regex_pattern` to the CLI `DEFAULTS` and a `test_regex_pattern` case that checks both the parsed params and that the pattern actually reaches `slugify()`. Full suite: `83 passed`.", + "author": "eeshsaxena", + "state": "closed", + "url": "https://github.com/un33k/python-slugify/pull/184", + "comments": [ + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/5147245576", + "html_url": "https://github.com/un33k/python-slugify/pull/184#issuecomment-5147245576", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/184", + "id": 5147245576, + "node_id": "IC_kwDOAF7qK88AAAABMsy8CA", + "user": { + "login": "eeshsaxena", + "id": 139802361, + "node_id": "U_kgDOCFU2-Q", + "avatar_url": "https://avatars.githubusercontent.com/u/139802361?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/eeshsaxena", + "html_url": "https://github.com/eeshsaxena", + "followers_url": "https://api.github.com/users/eeshsaxena/followers", + "following_url": "https://api.github.com/users/eeshsaxena/following{/other_user}", + "gists_url": "https://api.github.com/users/eeshsaxena/gists{/gist_id}", + "starred_url": "https://api.github.com/users/eeshsaxena/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/eeshsaxena/subscriptions", + "organizations_url": "https://api.github.com/users/eeshsaxena/orgs", + "repos_url": "https://api.github.com/users/eeshsaxena/repos", + "events_url": "https://api.github.com/users/eeshsaxena/events{/privacy}", + "received_events_url": "https://api.github.com/users/eeshsaxena/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2026-07-31T20:38:07Z", + "updated_at": "2026-07-31T20:38:07Z", + "body": "Hi! Gentle ping on this one; it's been open a couple of weeks. Happy to rebase or make any changes if anything's needed; whenever you get a chance to take a look, I'd really appreciate it. Thanks!", + "author_association": "NONE", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/5147245576/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + }, + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/5558232628", + "html_url": "https://github.com/un33k/python-slugify/pull/184#issuecomment-5558232628", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/184", + "id": 5558232628, + "node_id": "IC_kwDOAF7qK88AAAABS0vmNA", + "user": { + "login": "eeshsaxena", + "id": 139802361, + "node_id": "U_kgDOCFU2-Q", + "avatar_url": "https://avatars.githubusercontent.com/u/139802361?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/eeshsaxena", + "html_url": "https://github.com/eeshsaxena", + "followers_url": "https://api.github.com/users/eeshsaxena/followers", + "following_url": "https://api.github.com/users/eeshsaxena/following{/other_user}", + "gists_url": "https://api.github.com/users/eeshsaxena/gists{/gist_id}", + "starred_url": "https://api.github.com/users/eeshsaxena/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/eeshsaxena/subscriptions", + "organizations_url": "https://api.github.com/users/eeshsaxena/orgs", + "repos_url": "https://api.github.com/users/eeshsaxena/repos", + "events_url": "https://api.github.com/users/eeshsaxena/events{/privacy}", + "received_events_url": "https://api.github.com/users/eeshsaxena/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2026-09-06T09:08:42Z", + "updated_at": "2026-09-06T09:08:42Z", + "body": "Closing this to clear out my older open PRs, since it has been sitting a while without review. No hard feelings if it was not a priority. If it is still useful to you, say the word and I will reopen it and rebase it on current main.", + "author_association": "NONE", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/5558232628/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + } + ], + "merged_at": null, + "files": [ + { + "sha": "6e8109d0bc0d5eb91087223e1ec2f73338e5a91e", + "filename": "slugify/__main__.py", + "status": "modified", + "additions": 1, + "deletions": 0, + "changes": 1, + "blob_url": "https://github.com/un33k/python-slugify/blob/e95edc348fe8064934cf013d68fb285ae1402ddf/slugify%2F__main__.py", + "raw_url": "https://github.com/un33k/python-slugify/raw/e95edc348fe8064934cf013d68fb285ae1402ddf/slugify%2F__main__.py", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/slugify%2F__main__.py?ref=e95edc348fe8064934cf013d68fb285ae1402ddf", + "patch": "@@ -76,6 +76,7 @@ def slugify_params(args: argparse.Namespace) -> dict[str, Any]:\n save_order=args.save_order,\n separator=args.separator,\n stopwords=args.stopwords,\n+ regex_pattern=args.regex_pattern,\n lowercase=args.lowercase,\n replacements=args.replacements,\n allow_unicode=args.allow_unicode" + }, + { + "sha": "8b38cc648913819f69a8b4c15db3723f9a8e6dce", + "filename": "test.py", + "status": "modified", + "additions": 9, + "deletions": 0, + "changes": 9, + "blob_url": "https://github.com/un33k/python-slugify/blob/e95edc348fe8064934cf013d68fb285ae1402ddf/test.py", + "raw_url": "https://github.com/un33k/python-slugify/raw/e95edc348fe8064934cf013d68fb285ae1402ddf/test.py", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/test.py?ref=e95edc348fe8064934cf013d68fb285ae1402ddf", + "patch": "@@ -574,6 +574,7 @@ class TestCommandParams(unittest.TestCase):\n 'save_order': False,\n 'separator': '-',\n 'stopwords': None,\n+ 'regex_pattern': None,\n 'lowercase': True,\n 'replacements': None\n }\n@@ -617,6 +618,14 @@ def test_replacements_right(self):\n expected = self.make_params(replacements=[['A', 'B'], ['C', 'D']])\n self.assertParamsMatch(expected, params)\n \n+ def test_regex_pattern(self):\n+ pattern = r'[^-a-z0-9_]+'\n+ params = self.get_params_from_cli('--regex-pattern', pattern, '___This is a test___')\n+ expected = self.make_params(text='___This is a test___', regex_pattern=pattern)\n+ self.assertParamsMatch(expected, params)\n+ # The pattern must actually reach slugify() so underscores are kept.\n+ self.assertEqual(slugify(**params), '___this-is-a-test___')\n+\n def test_replacements_wrong(self):\n with self.assertRaises(SystemExit) as err, captured_stderr() as cse:\n self.get_params_from_cli('--replacements', 'A--B')" + } + ], + "reviews": [], + "review_comments": [] + }, + { + "number": 185, + "title": "fix: treat non-positive smart_truncate max_length as no truncation", + "body": "smart_truncate hits data-loss when max_length<0 uses Python negative slice. This PR fixes the regression with a focused test covering the case.", + "author": "santhreal", + "state": "closed", + "url": "https://github.com/un33k/python-slugify/pull/185", + "comments": [], + "merged_at": null, + "files": [ + { + "sha": "07aff3fc91400b04ee0b7c2e0a2e2a5690bc5a31", + "filename": "slugify/slugify.py", + "status": "modified", + "additions": 2, + "deletions": 1, + "changes": 3, + "blob_url": "https://github.com/un33k/python-slugify/blob/99c0b293fabcbfff3cc7a0952387a9a9e30c97e4/slugify%2Fslugify.py", + "raw_url": "https://github.com/un33k/python-slugify/raw/99c0b293fabcbfff3cc7a0952387a9a9e30c97e4/slugify%2Fslugify.py", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/slugify%2Fslugify.py?ref=99c0b293fabcbfff3cc7a0952387a9a9e30c97e4", + "patch": "@@ -43,7 +43,8 @@ def smart_truncate(\n \n string = string.strip(separator)\n \n- if not max_length:\n+ # Non-positive max_length means no truncation (same as slugify).\n+ if max_length <= 0:\n return string\n \n if len(string) < max_length:" + }, + { + "sha": "f55e6922c8df539913c7f9d359cadeeda6730930", + "filename": "test.py", + "status": "modified", + "additions": 11, + "deletions": 0, + "changes": 11, + "blob_url": "https://github.com/un33k/python-slugify/blob/99c0b293fabcbfff3cc7a0952387a9a9e30c97e4/test.py", + "raw_url": "https://github.com/un33k/python-slugify/raw/99c0b293fabcbfff3cc7a0952387a9a9e30c97e4/test.py", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/test.py?ref=99c0b293fabcbfff3cc7a0952387a9a9e30c97e4", + "patch": "@@ -535,6 +535,17 @@ def test_smart_truncate_no_max_length(self):\n r = smart_truncate(txt)\n self.assertEqual(r, txt)\n \n+ def test_smart_truncate_nonpositive_max_length(self):\n+ txt = 'hello-world'\n+ self.assertEqual(smart_truncate(txt, max_length=0), txt)\n+ self.assertEqual(smart_truncate(txt, max_length=-1), txt)\n+ self.assertEqual(smart_truncate(txt, max_length=-100), txt)\n+ self.assertEqual(\n+ smart_truncate(txt, max_length=-1, word_boundary=True, separator='-'),\n+ txt,\n+ )\n+ self.assertEqual(slugify('hello world', max_length=-1), 'hello-world')\n+\n def test_smart_truncate_no_seperator(self):\n txt = '1,000 reasons you are #1'\n r = smart_truncate(txt, max_length=100, separator='_')" + } + ], + "reviews": [], + "review_comments": [] + }, + { + "number": 186, + "title": "fix: hard-truncate when smart_truncate separator is empty", + "body": "smart_truncate hits ValueError when word_boundary=True separator=''. This PR fixes the regression with a focused test covering the case.", + "author": "santhreal", + "state": "closed", + "url": "https://github.com/un33k/python-slugify/pull/186", + "comments": [], + "merged_at": null, + "files": [ + { + "sha": "54843b62c314384aa8029a66d57fbfdb30e0b808", + "filename": "slugify/slugify.py", + "status": "modified", + "additions": 2, + "deletions": 1, + "changes": 3, + "blob_url": "https://github.com/un33k/python-slugify/blob/b8c0d21b3f1b3714c1e188836fc84ca8211a7e56/slugify%2Fslugify.py", + "raw_url": "https://github.com/un33k/python-slugify/raw/b8c0d21b3f1b3714c1e188836fc84ca8211a7e56/slugify%2Fslugify.py", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/slugify%2Fslugify.py?ref=b8c0d21b3f1b3714c1e188836fc84ca8211a7e56", + "patch": "@@ -49,7 +49,8 @@ def smart_truncate(\n if len(string) < max_length:\n return string\n \n- if not word_boundary:\n+ # Empty separator cannot split words; fall back to hard truncate.\n+ if not word_boundary or not separator:\n return string[:max_length].strip(separator)\n \n if separator not in string:" + }, + { + "sha": "743a6df092c7234e64cf40ebedca282fde8a0696", + "filename": "test.py", + "status": "modified", + "additions": 11, + "deletions": 0, + "changes": 11, + "blob_url": "https://github.com/un33k/python-slugify/blob/b8c0d21b3f1b3714c1e188836fc84ca8211a7e56/test.py", + "raw_url": "https://github.com/un33k/python-slugify/raw/b8c0d21b3f1b3714c1e188836fc84ca8211a7e56/test.py", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/test.py?ref=b8c0d21b3f1b3714c1e188836fc84ca8211a7e56", + "patch": "@@ -540,6 +540,17 @@ def test_smart_truncate_no_seperator(self):\n r = smart_truncate(txt, max_length=100, separator='_')\n self.assertEqual(r, txt)\n \n+ def test_smart_truncate_empty_separator_word_boundary(self):\n+ txt = 'helloworld'\n+ self.assertEqual(\n+ smart_truncate(txt, max_length=5, word_boundary=True, separator=''),\n+ 'hello',\n+ )\n+ self.assertEqual(\n+ slugify('hello world', max_length=5, word_boundary=True, separator=''),\n+ 'hello',\n+ )\n+\n \n PY3 = sys.version_info.major == 3\n " + } + ], + "reviews": [], + "review_comments": [] + }, + { + "number": 187, + "title": "Transliterate HTML entities decoded after the unidecode pass", + "body": "Slugifying an HTML entity that decodes to a non-ASCII character silently loses it:\n\n```python\nslugify(\"ß\") # '' — expected 'ss' (slugify(\"ß\") == 'ss')\nslugify(\"影\") # '' — expected 'ying' (slugify(\"影\") == 'ying')\nslugify(\"©\") # '' — expected 'c' (slugify(\"©\") == 'c')\nslugify(\"æ\") # '' — expected 'ae' (slugify(\"æ\") == 'ae')\n```\n\n**Root cause** (`slugify/slugify.py`): in the non-unicode path, HTML entity / decimal / hexadecimal decoding runs *after* the `unidecode()` pass, and the decoded characters are then only `NFKD`-normalized. A decoded char that NFKD-decomposes to ASCII survives — that's why the docstring's `Ž → Ž → z` works — but a decoded char that needs transliteration (ß, æ, ©, CJK, …) is left as raw unicode and stripped by the disallowed-chars pattern, yielding an empty/lossy slug.\n\nThe docstring documents the intended pipeline as *entity → unicode char → transliterated ASCII slug* (`:param decimal: converts html decimal to unicode (Ž -> Ž -> z)`), and the direct-character path already produces `ss`/`ying`/`c`/`ae` — so this is data loss, not a transliteration taste difference.\n\n**Fix** (1 line): run `unidecode()` again after normalizing the decoded text, mirroring the first normalization block. Idempotent on already-ASCII (entity-free) input.\n\n```python\n else:\n text = unicodedata.normalize('NFKD', text)\n+ text = unidecode.unidecode(text)\n```\n\n**Verification** (re-runnable from the diff):\n- Before: the four cases above return `''`. After: `ss`/`ying`/`c`/`ae`.\n- Added `test_html_decimal_on_transliterated` / `_hexadecimal_` / `_entities_` (assert decoded entity slug == the direct-character slug). They fail on the current tree and pass with the fix; `test.py` → 85 passed.\n- The docstring examples are unchanged: `Ž→z`, `Ž→z`, `foo & bar → foo-bar`.\n\nOrthogonal to #181 (which reworks how invalid numeric references are *decoded*, in the block above this one) — this touches only the normalization step and applies cleanly regardless.\n\n---\n\n*Disclosure*: This PR was authored by an AI coding agent (Claude Code) running on this account: the AI found the bug, ran the repro, wrote the test, and wrote this description. The human account holder reviews every change and is accountable for it. The verification above is real and re-runnable from the diff. If this isn't the kind of contribution you want, say so and I'll close it.\n", + "author": "chuenchen309", + "state": "open", + "url": "https://github.com/un33k/python-slugify/pull/187", + "comments": [], + "merged_at": null, + "files": [ + { + "sha": "9daa8dfbcf446d5af957249c3653339162ec8533", + "filename": "slugify/slugify.py", + "status": "modified", + "additions": 1, + "deletions": 0, + "changes": 1, + "blob_url": "https://github.com/un33k/python-slugify/blob/fb3978a05c3b81b780d794b7db46deadb482efbe/slugify%2Fslugify.py", + "raw_url": "https://github.com/un33k/python-slugify/raw/fb3978a05c3b81b780d794b7db46deadb482efbe/slugify%2Fslugify.py", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/slugify%2Fslugify.py?ref=fb3978a05c3b81b780d794b7db46deadb482efbe", + "patch": "@@ -151,6 +151,7 @@ def slugify(\n text = unicodedata.normalize('NFKC', text)\n else:\n text = unicodedata.normalize('NFKD', text)\n+ text = unidecode.unidecode(text)\n \n # make the text lowercase (optional)\n if lowercase:" + }, + { + "sha": "d56185104803b6b8a57feb2b8f8cdceb7bc4b722", + "filename": "test.py", + "status": "modified", + "additions": 20, + "deletions": 0, + "changes": 20, + "blob_url": "https://github.com/un33k/python-slugify/blob/fb3978a05c3b81b780d794b7db46deadb482efbe/test.py", + "raw_url": "https://github.com/un33k/python-slugify/raw/fb3978a05c3b81b780d794b7db46deadb482efbe/test.py", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/test.py?ref=fb3978a05c3b81b780d794b7db46deadb482efbe", + "patch": "@@ -166,6 +166,26 @@ def test_html_decimal_on(self):\n r = slugify(txt, decimal=True)\n self.assertEqual(r, 'z')\n \n+ def test_html_decimal_on_transliterated(self):\n+ # A decoded numeric entity must be transliterated to ASCII exactly like\n+ # the same character passed in directly (docstring: Ž -> Ž -> z).\n+ txt = 'ß' # ß\n+ r = slugify(txt, decimal=True)\n+ self.assertEqual(r, slugify('ß'))\n+ self.assertEqual(r, 'ss')\n+\n+ def test_html_hexadecimal_on_transliterated(self):\n+ txt = 'ß' # ß\n+ r = slugify(txt, hexadecimal=True)\n+ self.assertEqual(r, slugify('ß'))\n+ self.assertEqual(r, 'ss')\n+\n+ def test_html_entities_on_transliterated(self):\n+ txt = 'ß' # ß\n+ r = slugify(txt, entities=True)\n+ self.assertEqual(r, slugify('ß'))\n+ self.assertEqual(r, 'ss')\n+\n def test_html_decimal_off(self):\n txt = 'Ž'\n r = slugify(txt, entities=False, decimal=False)" + } + ], + "reviews": [], + "review_comments": [] + }, + { + "number": 188, + "title": "test: cover whitespace-only slugify input", + "body": "## Summary\nAdd edge-case tests ensuring whitespace-only input slugifies to `\"\"`.\n\nFixes #169\n", + "author": "ltsyk", + "state": "open", + "url": "https://github.com/un33k/python-slugify/pull/188", + "comments": [], + "merged_at": null, + "files": [ + { + "sha": "3047381153c16ada4dd5f86d78bba91b07d65dff", + "filename": "test.py", + "status": "modified", + "additions": 6, + "deletions": 0, + "changes": 6, + "blob_url": "https://github.com/un33k/python-slugify/blob/f37733bf5fecfba8a05ec721f310121501f35ce3/test.py", + "raw_url": "https://github.com/un33k/python-slugify/raw/f37733bf5fecfba8a05ec721f310121501f35ce3/test.py", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/test.py?ref=f37733bf5fecfba8a05ec721f310121501f35ce3", + "patch": "@@ -655,3 +655,9 @@ def test_multivalued_options_with_text(self):\n \n if __name__ == '__main__': # pragma: nocover\n unittest.main()\n+\n+\n+def test_slugify_whitespace_only_returns_empty():\n+ from slugify import slugify\n+ assert slugify(\" \") == \"\"\n+ assert slugify(\"\\t\\n\") == \"\"" + } + ], + "reviews": [], + "review_comments": [] + }, + { + "number": 189, + "title": "test: add regression coverage for ordinal indicators (º, ª)", + "body": "Closes #172\r\n\r\n## Investigation\r\nIssue #172 reports that `slugify()` doesn't transliterate the masculine/\r\nfeminine ordinal indicators \"º\" and \"ª\", common on Portuguese keyboards.\r\n\r\nI tried to reproduce it and couldn't: on the current codebase, both\r\nsupported transliteration backends already handle these correctly:\r\n\r\n```python\r\n>>> slugify(\"1º lugar, 1ª colocada\")\r\n'1o-lugar-1a-colocada'", + "author": "mmaxjr", + "state": "open", + "url": "https://github.com/un33k/python-slugify/pull/189", + "comments": [ + { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/5206751380", + "html_url": "https://github.com/un33k/python-slugify/pull/189#issuecomment-5206751380", + "issue_url": "https://api.github.com/repos/un33k/python-slugify/issues/189", + "id": 5206751380, + "node_id": "IC_kwDOAF7qK88AAAABNli4lA", + "user": { + "login": "mmaxjr", + "id": 9955641, + "node_id": "MDQ6VXNlcjk5NTU2NDE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9955641?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/mmaxjr", + "html_url": "https://github.com/mmaxjr", + "followers_url": "https://api.github.com/users/mmaxjr/followers", + "following_url": "https://api.github.com/users/mmaxjr/following{/other_user}", + "gists_url": "https://api.github.com/users/mmaxjr/gists{/gist_id}", + "starred_url": "https://api.github.com/users/mmaxjr/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/mmaxjr/subscriptions", + "organizations_url": "https://api.github.com/users/mmaxjr/orgs", + "repos_url": "https://api.github.com/users/mmaxjr/repos", + "events_url": "https://api.github.com/users/mmaxjr/events{/privacy}", + "received_events_url": "https://api.github.com/users/mmaxjr/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "created_at": "2026-08-06T15:13:21Z", + "updated_at": "2026-08-06T15:13:21Z", + "body": "Local verification on 2026-08-06:\\n\\n- python -m pytest test.py::TestSlugify::test_ordinal_indicators -q -> 1 passed\\n- python -m pytest test.py -q -> 83 passed", + "author_association": "NONE", + "reactions": { + "url": "https://api.github.com/repos/un33k/python-slugify/issues/comments/5206751380/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "performed_via_github_app": null, + "minimized": null + } + ], + "merged_at": null, + "files": [ + { + "sha": "c88c8ae49d572c6f5f317fa2ed58323fc949b306", + "filename": "test.py", + "status": "modified", + "additions": 7, + "deletions": 0, + "changes": 7, + "blob_url": "https://github.com/un33k/python-slugify/blob/7042dbc07dea67209326eaaedcb784281ebe218b/test.py", + "raw_url": "https://github.com/un33k/python-slugify/raw/7042dbc07dea67209326eaaedcb784281ebe218b/test.py", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/test.py?ref=7042dbc07dea67209326eaaedcb784281ebe218b", + "patch": "@@ -49,6 +49,13 @@ def test_accented_text(self):\n r = slugify(txt)\n self.assertEqual(r, \"nin-hao-wo-shi-zhong-guo-ren\")\n \n+ def test_ordinal_indicators(self):\n+ # Portuguese/Spanish masculine/feminine ordinal indicators (º, ª),\n+ # common on Portuguese keyboards - see issue #172.\n+ txt = '1º lugar, 1ª colocada'\n+ r = slugify(txt)\n+ self.assertEqual(r, \"1o-lugar-1a-colocada\")\n+\n def test_accented_text_with_non_word_characters(self):\n txt = 'jaja---lol-méméméoo--a'\n r = slugify(txt)" + } + ], + "reviews": [], + "review_comments": [] + }, + { + "number": 190, + "title": "Preserve case-sensitive stopword filtering for iterators", + "body": "With `lowercase=False`, passing a stopword iterator can leave every stopword in the slug: testing the first non-stopword consumes the iterator. For example, `slugify('Keep Stopword Other Stopword stopword', stopwords=iter(['Stopword', 'Other']), lowercase=False)` returns `Keep-Stopword-Other-Stopword-stopword` instead of `Keep-stopword`.\n\nMaterialize the iterable once before case-sensitive membership checks. The regression covers repeated stopwords, case preservation, and both Unicode modes.\n\nValidation: regression failed before the fix; full suite passes with text-unidecode and Unidecode (83 tests, 2 subtests); mypy and the repository's pycodestyle command pass. API generator and CLI smoke checks pass on macOS/Python 3.14.6. Other Python/platform matrix entries were not run.\n\nAI disclosure: This patch, regression test, and description were prepared with OpenAI Codex assistance. The reported checks were executed locally.\n", + "author": "oyeong011", + "state": "open", + "url": "https://github.com/un33k/python-slugify/pull/190", + "comments": [], + "merged_at": null, + "files": [ + { + "sha": "bfe19f25ac58fe004b18b06bfea582fcb8c32a3d", + "filename": "slugify/slugify.py", + "status": "modified", + "additions": 1, + "deletions": 0, + "changes": 1, + "blob_url": "https://github.com/un33k/python-slugify/blob/db989731fef6343079bdd1e1e52edf28f6a10b3e/slugify%2Fslugify.py", + "raw_url": "https://github.com/un33k/python-slugify/raw/db989731fef6343079bdd1e1e52edf28f6a10b3e/slugify%2Fslugify.py", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/slugify%2Fslugify.py?ref=db989731fef6343079bdd1e1e52edf28f6a10b3e", + "patch": "@@ -179,6 +179,7 @@ def slugify(\n stopwords_lower = [s.lower() for s in stopwords]\n words = [w for w in text.split(DEFAULT_SEPARATOR) if w not in stopwords_lower]\n else:\n+ stopwords = set(stopwords)\n words = [w for w in text.split(DEFAULT_SEPARATOR) if w not in stopwords]\n text = DEFAULT_SEPARATOR.join(words)\n " + }, + { + "sha": "a9ac1c3703fe57f932665829ed1a07c13fa0f7d2", + "filename": "test.py", + "status": "modified", + "additions": 9, + "deletions": 0, + "changes": 9, + "blob_url": "https://github.com/un33k/python-slugify/blob/db989731fef6343079bdd1e1e52edf28f6a10b3e/test.py", + "raw_url": "https://github.com/un33k/python-slugify/raw/db989731fef6343079bdd1e1e52edf28f6a10b3e/test.py", + "contents_url": "https://api.github.com/repos/un33k/python-slugify/contents/test.py?ref=db989731fef6343079bdd1e1e52edf28f6a10b3e", + "patch": "@@ -127,6 +127,15 @@ def test_stopword_removal_casesensitive(self):\n r = slugify(txt, stopwords=['Stopword'], lowercase=False)\n self.assertEqual(r, 'thIs-Has-a-stopword')\n \n+ def test_stopword_iterator_casesensitive(self):\n+ for allow_unicode in (False, True):\n+ with self.subTest(allow_unicode=allow_unicode):\n+ words = iter(['Stopword', 'Other'])\n+ result = slugify('Keep Stopword Other Stopword stopword',\n+ stopwords=words, lowercase=False,\n+ allow_unicode=allow_unicode)\n+ self.assertEqual(result, 'Keep-stopword')\n+\n def test_multiple_stopword_occurances(self):\n txt = 'the quick brown fox jumps over the lazy dog'\n r = slugify(txt, stopwords=['the'])" + } + ], + "reviews": [], + "review_comments": [] + } +] diff --git a/docs/release-9/recent-review.md b/docs/release-9/recent-review.md new file mode 100644 index 0000000..46b8c08 --- /dev/null +++ b/docs/release-9/recent-review.md @@ -0,0 +1,91 @@ +# Recent review and draft replies (#167–#190) + +Prepared from the saved [recent-evidence.json](recent-evidence.json) snapshot, not freshly fetched. +These are local recommendations and **unposted drafts**, not merged PRs, issue closures or a stable-release announcement. +Historical #1–#166 coverage lives in [historical-review.md](historical-review.md). + +## Decisions + +| Item | Evidence and decision | +| --- | --- | +| #167 / #168, @JustinUrassa | Correct README workflow-link mismatch. Implemented the same small documentation correction locally. | +| #169 / #170, @JustinUrassa | Whitespace regression idea is useful; original single-case test has poor indentation. Incorporate broader well-formatted coverage, not the patch unchanged. | +| #171 | Snapshot records HTTP 404. No claim about content, author, state, or review. | +| #172, @cangareijo | Ordinals already normalize to o/a with supported legacy backends; no global transliteration-table patch needed. Add regression tests for ordinals and Unicode dashes. | +| #173, @Jo2234 | Closed unmerged badge duplicate. Same issue addressed locally; do not resurrect a duplicate implementation. | +| #174, @BlocksecPHD | Useful broader whitespace examples; consolidate into table-driven tests with #170/#188 and preserve credit. | +| #175 / #176, @peter-bloomfield / Jacobo de Vera (@jdevera) | Confirmed missing regex forwarding. Prefer #176's original focused fix, strengthened with real CLI and artifact tests. Implemented locally, not merged remotely. | +| #177, @jdevera | Release request is valid. Local 9.0.0 milestone is now the deliverable, subject to documented matrix/downstream gates; no date promise. | +| #178, @Gares95 | Closed unmerged. Useful per-reference numeric recovery and Unicode cases; revive intent alongside #181, not a blind cherry-pick. | +| #179, @binggao1230 | Closed by author in favor of #182. Skipping second-pass self-referential rules changes intentional legacy behavior and does not establish universal idempotence. Do not adopt. | +| #180, @patchwright | Closed by author acknowledging #176 priority. Retain regression intent and original contributor credit; no duplicate merge. | +| #181, @CodingFeng101 | Per-match numeric recovery is sound. Integrated shared helper plus surrogate and oversized-reference handling, valid-neighbor tests and decoding-order correction. | +| #182, @binggao1230 | Decline as written. Skipping rules in either pass and sanitizing post replacements can discard explicit caller intent. Arbitrary caller replacements do not have a universal idempotence contract. Use explicit pre/post controls while preserving legacy defaults. | +| #183, @rantkiglorelgmx-lab | Accept clear input validation intent, preserve bytes and bytearray before replacements. Do not import unrelated broad ignore rules. | +| #184, @eeshsaxena | Duplicate CLI forwarding implementation; prefer #176 and consolidate tests. | +| #185 / #186, @santhreal | Accept intent: nonpositive smart_truncate limits are unlimited, empty separators hard-cut. Integrated with token-aware truncation and actual emitted-length budgeting. | +| #187, @chuenchen309 | Accept encoded non-Latin parity goal, not another unconditional transliteration pass over already converted text. Decode before the single existing pass; document apostrophe/output changes. | +| #188, @ltsyk | Useful whitespace regression duplicate; consolidate with #169/#170/#174. | +| #189, @mmaxjr | Useful ordinal regression test, not proof of a required new transliteration rule. Consolidated locally. | +| #190, @oyeong011 | Accept case-sensitive iterator correctness intent. Materialize stopwords once and preserve case semantics. Regression covers lists/generators and normalized matching. | + +These decisions distinguish useful reports and tests from unsafe compatibility changes. They do not evaluate contributors +based on AI use or speculate about motivation. Local integration is not the same as upstream merge or release. + +## Draft replies for maintainer approval + +### #168 / #167 — badge correction + +> Thank you for spotting the mismatch. The development candidate now points the badge image and link to the same main workflow. I have kept this as a small documentation correction and credited your report. This has not been published yet. + +### #170 / #174 / #188 — consolidate whitespace tests + +> Thank you for the edge-case coverage. I am consolidating the overlapping proposals into one table-driven regression covering empty input, spaces, tabs, newlines and Unicode whitespace. There is no runtime fix needed for these cases, but the tests are useful. I do not plan to merge all the duplicate patches separately; your contribution will remain credited. + +### #172 / #189 — ordinal indicators + +> Thank you for the report and regression test. The current normalization pipeline already converts º and ª to o and a with the legacy backends. I have added explicit coverage, along with the dash examples, rather than changing global transliteration rules. If you still see a different result, please share the exact input, package version and installed backend so we can reproduce it. + +### #176 — original CLI fix + +> Thank you, Jacobo. The missing regex forwarding is confirmed, and your focused fix is the basis of the local correction. I have added real command-line and installed-package checks so this cannot be hidden by a parameter-only test. The fix is included in the development candidate; it is not yet a published release. + +### #184 — duplicate CLI fix + +> Thank you for investigating this and supplying tests. #176 already addresses the same forwarding bug, so I will use that earlier contribution and consolidate the regression coverage rather than merge duplicate fixes. This does not diminish the useful reproduction you provided. + +### #181 — numeric references; credit #178 + +> Thank you. Handling invalid references individually is the right direction, and I have incorporated that behavior into the local candidate, with credit to the earlier #178 investigation as well. The regression suite also checks valid neighbors, surrogates, oversized values and Unicode mode. Decoding now happens before transliteration so encoded non-Latin letters behave like literal input. These deliberate output changes are documented for migration. + +### #182 — respectful rejection of the proposed contract + +> Thank you for investigating replacement interactions and supplying the examples. I am not going to merge this approach as written. Replacement rules are explicit caller instructions, and silently skipping them or re-sanitizing their final output would change behavior that existing applications may rely on. Idempotence is useful for ordinary defaults, but it is not a universal guarantee for arbitrary replacements. The development candidate instead keeps the existing two-pass default and adds explicit pre-only and post-only controls. Your examples are retained as regression cases for that documented contract. + +### #183 — input handling + +> Thank you for improving the input error. I have kept the focused validation, while preserving both bytes and bytearray and decoding them before applying replacements. I am leaving unrelated ignore-file cleanup out of this release change. The local tests exercise supported input types and clear rejection of unsupported values. + +### #185 / #186 — truncate boundaries + +> Thank you for the focused reproductions. Both cases are covered in the local candidate: nonpositive limits no longer slice away content, and an empty separator uses a hard cut. I have integrated them with multi-character separator handling and added a final-output length invariant, rather than treating the boundaries independently. + +### #187 — decoding order rather than a second pass + +> Thank you for identifying the encoded non-Latin case. I have addressed it by decoding entities before the existing transliteration pass, rather than transliterating already-converted text again. This keeps the pipeline simpler and avoids altering backend-generated text twice. Literal-versus-encoded cases are covered, and the migration guide calls out changed results such as encoded apostrophes. + +### #190 — iterator stopwords + +> Thank you for the iterator reproduction. The candidate materializes stopwords once, so case-sensitive iterators behave like lists without changing the established matching policy. I have added explicit case-sensitive and normalized-token regressions. + +### #177 — release timing + +> Yes, the accumulated fixes warrant a release. A local 9.0.0 candidate now combines the compatibility-preserving fixes, explicit backend selection, modern packaging and migration notes. I will not promise a publication date until the full interpreter matrix and downstream compatibility review are complete. Existing persisted slugs should not be regenerated automatically. + +## Historical contribution acknowledgment + +The release approach also revives the useful intent of Klaas Hoekema's separator/README work (#47/#48), +Jacobo de Vera's replacement-stage proposal (#119), Nathan Drezner's dependency clarity and compatibility +examples (#163), Patrick Sodré's installed-command testing (#43), and Kurt McKee's modern test/build work +(#159/#160/#164/#165). The historical review has the per-item evidence and limitations. No historical patch +is represented as merged or copied unless that is established by the saved record. diff --git a/docs/release-9/verification.md b/docs/release-9/verification.md new file mode 100644 index 0000000..94ce29d --- /dev/null +++ b/docs/release-9/verification.md @@ -0,0 +1,102 @@ +# Local verification — 9.0.0 + +## Latest algorithm opt-in verification — 2026-09-08 + +Version remains `9.0.0`, without a development suffix. All changes are local and uncommitted. +Nothing was staged, committed, pushed, tagged, published, or posted to an issue/PR. + +**Result: the full local tox matrix and release checks pass.** The previous compatibility blocker +was reproduced and addressed by restoring the historical pipeline as the permanent default and +requiring explicit `algorithm='modern'` adoption. This is scoped compatibility evidence, not a +universal regression-free or deployment-safety guarantee. + +### Interpreter/backend matrix + +| Interpreter | text-unidecode | isolated Unidecode | AnyASCII + base dependency | +| --- | --- | --- | --- | +| CPython 3.10 | 104 passed | 103 passed, 1 skipped | 104 passed | +| CPython 3.11 | 104 passed | 103 passed, 1 skipped | 104 passed | +| CPython 3.12 | 104 passed | 103 passed, 1 skipped | 104 passed | +| CPython 3.13 | 104 passed | 103 passed, 1 skipped | 104 passed | +| CPython 3.14 | 104 passed | 103 passed, 1 skipped | 104 passed | +| PyPy 3.11 | 104 passed | 103 passed, 1 skipped | 104 passed | + +All 18 cells ran on macOS. The six skips deliberately omit the fallback-package test in environments +where text-unidecode has been removed to isolate Unidecode. AnyASCII cells separately assert explicit +AnyASCII goldens while auto still selects the base text-unidecode dependency. +Dependency versions: text-unidecode 1.3, Unidecode 1.4.0, AnyASCII 0.3.3. + +### Compatibility and opt-in contracts + +- A frozen implementation from baseline `7b6d5d96c1995e6dccb39a19a13ba78d7d0a3ee4` is retained in + `tools/legacy_reference.py`. It is a test oracle, not shipped runtime code. Its historical formatting + is intentionally excluded from style modernization. +- Every matrix cell compares **2,688 input/option combinations** against the baseline, for both default + calls and explicit legacy calls. Additional fresh-iterator checks cover replacement replay and + case-sensitive stopword consumption. Public smart_truncate checks cover 256 combinations, including + matching empty-separator exceptions and negative-limit behavior. +- The entire legacy `test.py` is byte-for-byte unchanged from baseline + `7b6d5d96c1995e6dccb39a19a13ba78d7d0a3ee4`, verified with + `git diff --exit-code -- test.py` and `git diff --exit-code 7b6d5d9 -- test.py`. + All additional regression tests live independently in `test_release.py`; no baseline assertions are edited. +- Independent CLI tests assert exact historical default namespace and forwarded-parameter shapes, plus + explicit forwarding of every algorithm, backend, replacement-stage choice and regex patterns (including + an empty pattern). Omitted new options defer to API defaults; regex is forwarded only when supplied. +- Explicit modern tests cover early entity decoding, per-reference invalid numeric handling, generator + snapshots, empty/wide separator budgets, and delimiters overlapping literal word characters. +- `xylophone x` with separator `x` and a large positive limit retains `xylophonexx` in both algorithms. +- Keyword-only/default signature checks and invalid algorithm checks run in source and installed API tests. +- CLI tests cover default, explicit legacy, explicit modern, rejected unknown algorithms, regex forwarding, + and both module and console invocation for installed artifacts. + +### Other checks + +- Coverage gate: **99% aggregate**, 734 statements, 1 missed statement, 118 branches, 2 partial branches. + The existing 97% gate was unchanged. Coverage includes legacy test.py; it is not a library-only metric. +- Strict mypy: no issues in 5 source files. +- pycodestyle and flake8: passed; flake8 is now in the default tox environment list. +- Packaging: isolated PEP 517 wheel/sdist builds, `twine check --strict`, archive contents, metadata, + `pip check`, version agreement, installed API goldens and CLI behavior outside the checkout all passed. +- Both artifacts were checked for MIT License-Expression, Python >=3.10, backend extras, entry point, + typed marker, and license. Source archive includes regression tools/fixture and migration docs; + research JSON and bytecode/cache files are excluded. +- Unicode-only runtime checks pass after uninstalling the transliteration dependency in temporary + artifact environments. This does not imply a dependency-free installation extra exists. +- `git diff --check`: passed. + +The initial full run passed all runtime cells, typing, coverage and artifacts, but found an E402 import-order +error in the test wrapper. That error was corrected; the complete matrix and all other tox environments +were rerun successfully. No failing check remains from that run. + +The untouched-baseline follow-up added two independent CLI test methods and reran the complete tox suite. +The first follow-up run could not discover the existing Python 3.12 interpreter; adding +`/Users/val/.pyenv/versions/3.12.11/bin` to PATH fixed discovery without changing repository configuration. +The complete rerun passed all 18 runtime cells and every quality/packaging environment (24 environments +including coverage setup/report). The table above records this latest run: 1,866 passes and six deliberate +skips across the runtime matrix. + +Logs are retained locally at `/tmp/slugify-untouched-tests-tox.log` (initial follow-up) and +`/tmp/slugify-untouched-tests-tox-final.log` (successful complete rerun). Earlier algorithm opt-in logs remain +at `/tmp/slugify-optin-tox.log` and `/tmp/slugify-optin-tox-final.log`. The established runner was +`/Users/val/.dojo/workspace/scratch/667f1ab2-86f5-49ee-a130-01c846192281/slugify-test-runner/bin/tox`. +Artifacts were validated in temporary directories; these checks do not retain a publishable final artifact set. Rebuild with +`python tools/check_dist.py --outdir /path/to/new-empty-directory` when maintainers authorize final retention. + +## Remaining limits and release ownership + +Windows/Linux execution, optional dependency lower-bound testing, real downstream stored-slug comparisons, +and full regression execution against installed artifacts remain unverified. Artifact tests are focused API/CLI +checks; matrix suites run from the checkout. Backend upgrades and custom replacement/regex policies can still +change outputs. CLI regex forwarding is intentionally fixed even under legacy mode. + +New tests, tools, and docs remain untracked and must be included in an eventual reviewed commit. Final maintainer +review, downstream migration decisions, public replies, publication and tags remain separate actions requiring +approval. README correctly describes an unpublished local checkout; update publication-facing wording only +when an actual publication occurs. + +## Prior-run provenance + +Earlier pre-opt-in runs passed 99 tests per full backend cell but failed compatibility comparison for entities, +wide/empty separators, iterators and delimiter-overlapping word content. Those test passes did not establish +legacy compatibility. The results above supersede those earlier runtime and compatibility claims. +See [migration.md](migration.md) for the exact legacy/modern boundary and remaining application precautions. diff --git a/pyproject.toml b/pyproject.toml index 1c02bfe..a676b14 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,7 +1,52 @@ [build-system] -requires = ["setuptools>=61.2"] +requires = ["setuptools>=77"] build-backend = "setuptools.build_meta" +[project] +name = "python-slugify" +dynamic = ["version"] +description = "A Python slugify application that also handles Unicode" +readme = "README.md" +requires-python = ">=3.10" +license = "MIT" +license-files = ["LICENSE"] +authors = [{name = "Val Neekman", email = "info@neekware.com"}] +dependencies = ["text-unidecode>=1.3"] +classifiers = [ + "Development Status :: 5 - Production/Stable", + "Intended Audience :: Developers", + "Natural Language :: English", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3 :: Only", + "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", + "Programming Language :: Python :: 3.13", + "Programming Language :: Python :: 3.14", +] + +[project.optional-dependencies] +unidecode = ["Unidecode>=1.1.1"] +anyascii = ["anyascii>=0.3.2"] + +[project.scripts] +slugify = "slugify.__main__:main" + +[project.urls] +Homepage = "https://github.com/un33k/python-slugify" +Issues = "https://github.com/un33k/python-slugify/issues" +Changelog = "https://github.com/un33k/python-slugify/blob/master/CHANGELOG.md" + +[tool.setuptools] +packages = ["slugify"] +include-package-data = true + +[tool.setuptools.dynamic] +version = {attr = "slugify.__version__.__version__"} + +[tool.setuptools.package-data] +slugify = ["py.typed"] + # coverage # -------- @@ -39,7 +84,7 @@ sqlite_cache = true # ------ [tool.pytest.ini_options] -testpaths = ["test.py"] +testpaths = ["test.py", "test_release.py"] addopts = "--color=yes" filterwarnings = [ "error", diff --git a/setup.py b/setup.py index 32f44dd..24f872a 100755 --- a/setup.py +++ b/setup.py @@ -1,84 +1,4 @@ -#!/usr/bin/env python -# Learn more: https://github.com/un33k/setup.py -import os -import sys - -from shutil import rmtree +"""Compatibility shim; metadata and build configuration live in pyproject.toml.""" from setuptools import setup - -package = 'slugify' -python_requires = ">=3.10" -here = os.path.abspath(os.path.dirname(__file__)) - -install_requires = ['text-unidecode>=1.3'] -extras_requires = {'unidecode': ['Unidecode>=1.1.1']} - -about = {} -with open(os.path.join(here, package, '__version__.py'), 'r', encoding='utf-8') as f: - exec(f.read(), about) - -with open('README.md', 'r', encoding='utf-8') as f: - readme = f.read() - - -def status(s): - print('\033[1m{0}\033[0m'.format(s)) - - -# 'setup.py publish' shortcut. -if sys.argv[-1] == 'publish': - 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=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'], - 'slugify': ['py.typed'], - }, - package_dir={'slugify': 'slugify'}, - include_package_data=True, - python_requires=python_requires, - install_requires=install_requires, - extras_require=extras_requires, - zip_safe=False, - cmdclass={}, - project_urls={}, - classifiers=[ - 'Development Status :: 5 - Production/Stable', - 'Intended Audience :: Developers', - 'Natural Language :: English', - 'Programming Language :: Python', - 'Programming Language :: Python :: 3', - 'Programming Language :: Python :: 3.10', - 'Programming Language :: Python :: 3.11', - 'Programming Language :: Python :: 3.12', - 'Programming Language :: Python :: 3.13', - 'Programming Language :: Python :: 3.14', - ], - entry_points={'console_scripts': ['slugify=slugify.__main__:main']}, -) +setup() diff --git a/slugify/__main__.py b/slugify/__main__.py index 4e6b3d9..fde2a86 100644 --- a/slugify/__main__.py +++ b/slugify/__main__.py @@ -41,6 +41,13 @@ def parse_args(argv: list[str]) -> argparse.Namespace: parser.add_argument("--allow-unicode", action='store_true', default=False, help="Allow unicode characters") + parser.add_argument('--algorithm', choices=('legacy', 'modern'), default=argparse.SUPPRESS, + help='Slug algorithm (legacy default; modern explicitly opts into changed output)') + parser.add_argument('--backend', choices=('auto', 'text-unidecode', 'unidecode', 'anyascii'), + default=argparse.SUPPRESS, help='Transliteration backend (auto preserves legacy preference)') + parser.add_argument('--replacement-stage', choices=('both', 'pre', 'post'), default=argparse.SUPPRESS, + help='Apply replacement rules before, after, or both sides of cleanup') + args = parser.parse_args(argv[1:]) if args.input_string and args.stdin: @@ -66,7 +73,7 @@ def split_check(repl: str) -> list[str]: def slugify_params(args: argparse.Namespace) -> dict[str, Any]: - return dict( + params = dict( text=args.input_string, entities=args.entities, decimal=args.decimal, @@ -80,6 +87,13 @@ def slugify_params(args: argparse.Namespace) -> dict[str, Any]: replacements=args.replacements, allow_unicode=args.allow_unicode ) + # Preserve historical parameter shape; omitted options use the API defaults. + for option in ('algorithm', 'backend', 'replacement_stage'): + if hasattr(args, option): + params[option] = getattr(args, option) + if args.regex_pattern is not None: + params['regex_pattern'] = args.regex_pattern + return params def main(argv: list[str] | None = None) -> None: diff --git a/slugify/__version__.py b/slugify/__version__.py index a9cd778..cd29a25 100644 --- a/slugify/__version__.py +++ b/slugify/__version__.py @@ -5,4 +5,4 @@ __url__ = 'https://github.com/un33k/python-slugify' __license__ = 'SPDX-License-Identifier: MIT' __copyright__ = 'Copyright 2022 Val Neekman @ Neekware Inc.' -__version__ = '8.0.4' +__version__ = '9.0.0' diff --git a/slugify/slugify.py b/slugify/slugify.py index 9b5f27f..f4e5faf 100644 --- a/slugify/slugify.py +++ b/slugify/slugify.py @@ -4,25 +4,75 @@ import unicodedata from collections.abc import Iterable from html.entities import name2codepoint +from importlib import import_module +from typing import Literal -try: - import unidecode -except ImportError: - import text_unidecode as unidecode # type: ignore[import-untyped, no-redef] - -__all__ = ['slugify', 'smart_truncate'] +__all__ = ['slugify', 'smart_truncate', 'Backend', 'ReplacementStage', 'Algorithm'] CHAR_ENTITY_PATTERN = re.compile(r'&(%s);' % '|'.join(name2codepoint)) DECIMAL_PATTERN = re.compile(r'&#(\d+);') HEX_PATTERN = re.compile(r'&#x([\da-fA-F]+);') -QUOTE_PATTERN = re.compile(r'[\']+') +QUOTE_PATTERN = re.compile(r"[']+") DISALLOWED_CHARS_PATTERN = re.compile(r'[^-a-zA-Z0-9]+') DISALLOWED_UNICODE_CHARS_PATTERN = re.compile(r'[\W_]+') DUPLICATE_DASH_PATTERN = re.compile(r'-{2,}') NUMBERS_PATTERN = re.compile(r'(?<=\d),(?=\d)') DEFAULT_SEPARATOR = '-' +Backend = Literal['auto', 'text-unidecode', 'unidecode', 'anyascii'] +ReplacementStage = Literal['both', 'pre', 'post'] +Algorithm = Literal['legacy', 'modern'] + + +def _numeric_reference(match: re.Match[str], base: int) -> str: + """Leave invalid references for ordinary filtering, independently of neighbors.""" + try: + value = int(match.group(1), base) + if 0xD800 <= value <= 0xDFFF: + return match.group(0) + return chr(value) + except (ValueError, OverflowError): + return match.group(0) + + +def _decode_entities(text: str, entities: bool, decimal: bool, hexadecimal: bool, algorithm: Algorithm) -> str: + if entities: + text = CHAR_ENTITY_PATTERN.sub(lambda m: chr(name2codepoint[m.group(1)]), text) + if decimal: + if algorithm == 'modern': + text = DECIMAL_PATTERN.sub(lambda m: _numeric_reference(m, 10), text) + else: + # Legacy substitution is all-or-nothing for each numeric reference kind. + try: + text = DECIMAL_PATTERN.sub(lambda m: chr(int(m.group(1))), text) + except (ValueError, OverflowError): + pass + if hexadecimal: + if algorithm == 'modern': + text = HEX_PATTERN.sub(lambda m: _numeric_reference(m, 16), text) + else: + try: + text = HEX_PATTERN.sub(lambda m: chr(int(m.group(1), 16)), text) + except (ValueError, OverflowError): + pass + return text + + +def _transliterate(text: str, backend: Backend) -> str: + if backend == 'auto': + try: + module = import_module('unidecode') + except ModuleNotFoundError as error: + if error.name != 'unidecode': + raise + module = import_module('text_unidecode') + else: + module = import_module(backend.replace('-', '_')) + # These third-party modules share a string-to-string API; some are untyped. + result: str = getattr(module, 'anyascii' if backend == 'anyascii' else 'unidecode')(text) + return result + def smart_truncate( string: str, @@ -31,30 +81,20 @@ def smart_truncate( separator: str = " ", save_order: bool = False, ) -> str: - """ - Truncate a string. - :param string (str): string for modification - :param max_length (int): output string length - :param word_boundary (bool): - :param save_order (bool): if True then word order of output string is like input string - :param separator (str): separator between words - :return: - """ + """Historical public truncation behavior, including character-set stripping. + Zero means unlimited; negative limits retain Python slicing semantics. + An empty separator raises ValueError, as in the legacy implementation. + """ string = string.strip(separator) - if not max_length: return string - if len(string) < max_length: return string - if not word_boundary: return string[:max_length].strip(separator) - if separator not in string: return string[:max_length] - truncated = '' for word in string.split(separator): if word: @@ -64,16 +104,53 @@ def smart_truncate( elif next_len == max_length: truncated += '{}'.format(word) break - else: - if save_order: - break + elif save_order: + break if not truncated: truncated = string[:max_length] return truncated.strip(separator) +def _modern_truncate(text: str, max_length: int, word_boundary: bool, separator: str, save_order: bool) -> str: + """Budget internal dash-separated tokens before mapping output delimiters. + + Output delimiters may also occur in words; never strip or split emitted text. + Post replacements retain the historical global dash-to-separator mapping. + """ + if max_length <= 0: + return text.replace(DEFAULT_SEPARATOR, separator) + tokens = text.split(DEFAULT_SEPARATOR) + if word_boundary: + words: list[str] = [] + length = 0 + for word in tokens: + if not word: + continue + next_length = length + len(word) + (len(separator) if words else 0) + if next_length <= max_length: + words.append(word) + length = next_length + elif save_order: + break + if words: + return separator.join(words) + # A hard cut may shorten a word but must not emit a partial/trailing delimiter. + parts: list[str] = [] + length = 0 + for index, word in enumerate(tokens): + delimiter = separator if index else '' + remaining = max_length - length - len(delimiter) + if remaining <= 0: + break + parts.append(delimiter + word[:remaining]) + length += len(delimiter) + min(len(word), remaining) + if len(word) > remaining: + break + return ''.join(parts) + + def slugify( - text: str, + text: str | bytes | bytearray, entities: bool = True, decimal: bool = True, hexadecimal: bool = True, @@ -86,112 +163,72 @@ def slugify( lowercase: bool = True, replacements: Iterable[Iterable[str]] = (), allow_unicode: bool = False, + *, + replacement_stage: ReplacementStage = 'both', + backend: Backend = 'auto', + algorithm: Algorithm = 'legacy', ) -> str: + """Make a slug with the legacy output pipeline by default, permanently. + + algorithm='modern' opts into early entity decoding, reusable iterator rules, + stable stopword membership and a final emitted-character length budget. + Legacy limits apply before separator mapping and may exceed max_length. + Bytes and bytearray are decoded as UTF-8, ignoring invalid bytes. + replacements are ordered literal rules, before and after cleanup by default; + replacement_stage selects 'pre', 'post' or 'both'. Post rules are unfiltered. + regex_pattern matches disallowed characters; stopwords match internal words. + allow_unicode uses NFKC without transliteration. backend='auto' prefers + installed Unidecode, falling back to text-unidecode; explicit choices do not + fall back. All new controls are keyword-only. """ - Make a slug from the given text. - :param text (str): initial text - :param entities (bool): converts html entities to unicode - :param decimal (bool): converts html decimal to unicode - :param hexadecimal (bool): converts html hexadecimal to unicode - :param max_length (int): output string length - :param word_boundary (bool): truncates to complete word even if length ends up shorter than max_length - :param save_order (bool): when set, does not include shorter subsequent words even if they fit - :param separator (str): separator between words - :param stopwords (iterable): words to discount - :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']] - :param allow_unicode (bool): allow unicode characters - :return (str): - """ - - # user-specific replacements - if replacements: - for old, new in replacements: - text = text.replace(old, new) - - # ensure text is unicode + if algorithm not in ('legacy', 'modern'): + raise ValueError("algorithm must be 'legacy' or 'modern'") if not isinstance(text, str): - text = str(text, 'utf-8', 'ignore') + if not isinstance(text, (bytes, bytearray)): + raise TypeError(f'text must be str, bytes or bytearray, not {type(text).__name__}') + text = text.decode('utf-8', 'ignore') + if replacement_stage not in ('both', 'pre', 'post'): + raise ValueError("replacement_stage must be 'both', 'pre' or 'post'") + if backend not in ('auto', 'text-unidecode', 'unidecode', 'anyascii'): + raise ValueError("backend must be 'auto', 'text-unidecode', 'unidecode' or 'anyascii'") + + # Legacy iterators are deliberately not replayed: consumption affects output. + rules = (tuple((old, new) for old, new in replacements) + if algorithm == 'modern' and replacements else replacements) + if rules and replacement_stage in ('both', 'pre'): + for old, new in rules: + text = text.replace(old, new) - # replace quotes with dashes - pre-process + if algorithm == 'modern': + text = _decode_entities(text, entities, decimal, hexadecimal, algorithm) text = QUOTE_PATTERN.sub(DEFAULT_SEPARATOR, text) - - # normalize text, convert to unicode if required - if allow_unicode: - text = unicodedata.normalize('NFKC', text) - else: - text = unicodedata.normalize('NFKD', text) - text = unidecode.unidecode(text) - - # ensure text is still in unicode - if not isinstance(text, str): - text = str(text, 'utf-8', 'ignore') - - # character entity reference - if entities: - text = CHAR_ENTITY_PATTERN.sub(lambda m: chr(name2codepoint[m.group(1)]), text) - - # decimal character reference - if decimal: - try: - text = DECIMAL_PATTERN.sub(lambda m: chr(int(m.group(1))), text) - except Exception: - pass - - # hexadecimal character reference - if hexadecimal: - try: - text = HEX_PATTERN.sub(lambda m: chr(int(m.group(1), 16)), text) - except Exception: - pass - - # re normalize text if allow_unicode: text = unicodedata.normalize('NFKC', text) else: - text = unicodedata.normalize('NFKD', text) - - # make the text lowercase (optional) + text = _transliterate(unicodedata.normalize('NFKD', text), backend) + if algorithm == 'legacy': + text = _decode_entities(text, entities, decimal, hexadecimal, algorithm) + text = unicodedata.normalize('NFKC' if allow_unicode else 'NFKD', text) if lowercase: text = text.lower() - - # remove generated quotes -- post-process text = QUOTE_PATTERN.sub('', text) - - # cleanup numbers text = NUMBERS_PATTERN.sub('', text) - - # replace all other unwanted characters - if allow_unicode: - pattern = regex_pattern or DISALLOWED_UNICODE_CHARS_PATTERN - else: - pattern = regex_pattern or DISALLOWED_CHARS_PATTERN - + pattern = regex_pattern or (DISALLOWED_UNICODE_CHARS_PATTERN if allow_unicode else DISALLOWED_CHARS_PATTERN) text = re.sub(pattern, DEFAULT_SEPARATOR, text) - - # remove redundant text = DUPLICATE_DASH_PATTERN.sub(DEFAULT_SEPARATOR, text).strip(DEFAULT_SEPARATOR) - # remove stopwords if stopwords: - if lowercase: - stopwords_lower = [s.lower() for s in stopwords] - words = [w for w in text.split(DEFAULT_SEPARATOR) if w not in stopwords_lower] + if algorithm == 'modern': + excluded: Iterable[str] = {word.lower() if lowercase else word for word in stopwords} else: - words = [w for w in text.split(DEFAULT_SEPARATOR) if w not in stopwords] - text = DEFAULT_SEPARATOR.join(words) - - # finalize user-specific replacements - if replacements: - for old, new in replacements: + excluded = [word.lower() for word in stopwords] if lowercase else stopwords + text = DEFAULT_SEPARATOR.join(word for word in text.split(DEFAULT_SEPARATOR) if word not in excluded) + if rules and replacement_stage in ('both', 'post'): + for old, new in rules: text = text.replace(old, new) - # smart truncate if requested + if algorithm == 'modern': + return _modern_truncate(text, max_length, word_boundary, separator, save_order) if max_length > 0: text = smart_truncate(text, max_length, word_boundary, DEFAULT_SEPARATOR, save_order) - - if separator != DEFAULT_SEPARATOR: - text = text.replace(DEFAULT_SEPARATOR, separator) - - return text + return text.replace(DEFAULT_SEPARATOR, separator) if separator != DEFAULT_SEPARATOR else text diff --git a/test_release.py b/test_release.py new file mode 100644 index 0000000..0978362 --- /dev/null +++ b/test_release.py @@ -0,0 +1,273 @@ +"""Release 9 regression contracts, including real CLI execution.""" +import importlib +import itertools +from pathlib import Path +import re +import subprocess +import sys +import unittest +from unittest.mock import patch + +from functools import partial + +from slugify import slugify as public_slugify, smart_truncate + +from slugify.__main__ import main, parse_args, slugify_params + +slugify = partial(public_slugify, algorithm="modern") +core = importlib.import_module('slugify.slugify') + + +class ReleaseRegressionTests(unittest.TestCase): + def test_legacy_goldens_and_differential(self): + from tools import legacy_reference + from tools.check_algorithms import check_differential, check_goldens + check_goldens() + self.assertEqual(check_differential(legacy_reference), 2688) + + def test_modern_separator_does_not_strip_word_content(self): + for separator in ('x', 'xy', 'a', 'aa', '::', '', '-'): + for text in ('xylophone x', 'xy xy', 'aaa a', 'a b c'): + expected = separator.join(text.split()) + for boundary in (False, True): + self.assertEqual(slugify(text, separator=separator, max_length=100, + word_boundary=boundary), expected) + for limit in range(1, len(expected) + 1): + actual = slugify(text, separator=separator, max_length=limit, + word_boundary=boundary) + self.assertLessEqual(len(actual), limit) + self.assertEqual(slugify('xylophone x', separator='x', max_length=1), 'x') + self.assertEqual(slugify('xy xy', separator='xy', max_length=5), 'xyxyx') + self.assertEqual(slugify('a b c', separator='::', max_length=3), 'a') + + def test_cli_preserves_legacy_default_shape(self): + expected = dict(text='', entities=True, decimal=True, hexadecimal=True, + max_length=0, word_boundary=False, save_order=False, separator='-', + stopwords=None, lowercase=True, replacements=None, allow_unicode=False) + for argv, overrides in (([], {}), (['Hello', '--no-lowercase'], {'text': 'Hello', 'lowercase': False})): + with self.subTest(argv=argv): + params = dict(expected, **overrides) + args = parse_args(['slugify', *argv]) + namespace = dict(params, stdin=False, regex_pattern=None) + namespace['input_string'] = namespace.pop('text') + self.assertEqual(vars(args), namespace) + self.assertEqual(slugify_params(args), params) + with patch('slugify.__main__.slugify', return_value='') as call, patch('builtins.print'): + main(['slugify']) + call.assert_called_once_with(**expected) + self.assertEqual(public_slugify('a'b'), 'ab') + + def test_cli_explicit_options_are_forwarded(self): + defaults = slugify_params(parse_args(['slugify'])) + for flag, values in (('--algorithm', ('legacy', 'modern')), + ('--backend', ('auto', 'text-unidecode', 'unidecode', 'anyascii')), + ('--replacement-stage', ('both', 'pre', 'post')), + ('--regex-pattern', ('', '[^a-z]+'))): + for value in values: + with self.subTest(flag=flag, value=value): + key = flag[2:].replace('-', '_') + args = parse_args(['slugify', flag, value]) + expected = dict(defaults, **{key: value}) + self.assertEqual(getattr(args, key), value) + self.assertEqual(slugify_params(args), expected) + with patch('slugify.__main__.slugify', return_value='') as call, patch('builtins.print'): + main(['slugify', flag, value]) + call.assert_called_once_with(**expected) + + def test_algorithm_cli(self): + for algorithm, expected in ((None, 'ab'), ('legacy', 'ab'), ('modern', 'a-b')): + args = ['--algorithm', algorithm] if algorithm else [] + output = subprocess.check_output([sys.executable, '-m', 'slugify', *args, 'a'b'], text=True) + self.assertEqual(output, expected + '\n') + result = subprocess.run([sys.executable, '-m', 'slugify', '--algorithm', 'invalid', 'a'], + capture_output=True, text=True) + self.assertEqual(result.returncode, 2) + self.assertIn('invalid choice', result.stderr) + + def test_empty_and_whitespace(self): + for text in ('', ' ', '\t\n', '\u2003\u00a0', ' \n\t '): + for unicode in (False, True): + with self.subTest(text=text, unicode=unicode): + self.assertEqual(slugify(text, allow_unicode=unicode), '') + + def test_readme_examples(self): + readme = Path(__file__).with_name('README.md').read_text(encoding='utf-8') + for block in re.findall(r'```python\n(.*?)```', readme, flags=re.DOTALL): + if block.startswith('slugify('): + continue # This block documents the signature, not an invocation. + try: + exec(compile(block, 'README.md', 'exec'), {}) + except ModuleNotFoundError as error: + if error.name != 'text_unidecode': + raise # The Unidecode isolation cell deliberately lacks this dependency. + + def test_bytes_and_replacements(self): + for text in (b'caf\xc3\xa9\xff', bytearray(b'caf\xc3\xa9\xff')): + self.assertEqual(slugify(text, replacements=[('c', 'k')]), 'kafe') + for text in (None, 123, 1.2, [], {}, object()): + with self.subTest(text=type(text)), self.assertRaisesRegex(TypeError, 'text must be'): + slugify(text) + + def test_named_and_numeric_entities_match_literal_input(self): + for unicode in (False, True): + for encoded, literal in (('你', '你'), ('你', '你'), + ('β', 'β'), (''', "'"), ('’', '’')): + self.assertEqual(slugify('a ' + encoded + ' b', allow_unicode=unicode), + slugify('a ' + literal + ' b', allow_unicode=unicode)) + + def test_invalid_entities_do_not_cancel_neighbors(self): + for unicode, letter in ((False, 'z'), (True, 'ž')): + for invalid, expected in (('�', '99999999999999999999'), + ('�', 'x110000'), ('�', '55296'), + ('�', 'xdfff')): + self.assertEqual(slugify('Ž ' + invalid + ' Ž', allow_unicode=unicode), + f'{letter}-{expected}-{letter}') + # Exceeds Python's optional integer-string digit limit on newer runtimes. + huge = '9' * 5000 + self.assertEqual(slugify('A &#' + huge + '; B'), 'a-' + huge + '-b') + + def test_entity_flags_are_independent(self): + text = 'β A B' + self.assertEqual(slugify(text, entities=False, decimal=False, hexadecimal=False), 'beta-65-x42') + self.assertEqual(slugify(text, entities=False, decimal=True, hexadecimal=False), 'beta-a-x42') + self.assertEqual(slugify(text, entities=False, decimal=False, hexadecimal=True), 'beta-65-b') + + def test_normalization_ordinals_dashes_and_phonetic_quotes(self): + self.assertEqual(slugify('1º 1ª 𝐚́́𝕒́'), '1o-1a-aa') + self.assertEqual(slugify('a‐b‑c‒d–e—f'), 'a-b-c-d-e-f') + self.assertEqual(slugify('ㅋ', allow_unicode=True), 'ᄏ') + self.assertEqual(slugify("Baby's shoes"), 'baby-s-shoes') + self.assertEqual(slugify('Baby’s shoes'), 'babys-shoes') + self.assertEqual(slugify('Компьютер'), 'kompiuter') + + def test_replacement_stages_and_iterables(self): + for stage, expected in (('both', 'aaaa'), ('pre', 'aa'), ('post', 'aa')): + for rules in ([('a', 'aa')], iter([('a', 'aa')]), iter([iter(('a', 'aa'))])): + self.assertEqual(slugify('a', replacements=rules, replacement_stage=stage), expected) + self.assertEqual(slugify('a', replacements=[('a', 'b'), ('b', 'c')], replacement_stage='pre'), 'c') + self.assertEqual(slugify('a', replacements=[('a', '!')], replacement_stage='post'), '!') + self.assertEqual(slugify('a', replacements=[('a', '!')], replacement_stage='pre'), '') + self.assertEqual(slugify('a', replacements=[('a', 'aaaa')], replacement_stage='post', max_length=2), 'aa') + self.assertEqual(slugify('a', replacements=[('', 'x')], replacement_stage='pre'), 'xax') + with self.assertRaises(ValueError): + slugify('a', replacements=[('a', 'b', 'c')]) + with self.assertRaisesRegex(ValueError, 'replacement_stage'): + slugify('a', replacement_stage='invalid') + + def test_stopword_iterators_case_sensitive_and_normalized(self): + for lowercase, expected in ((True, 'b'), (False, 'a_B')): + self.assertEqual(slugify('A a B', lowercase=lowercase, stopwords=iter(['A']), separator='_'), + expected) + self.assertEqual(slugify('café b', stopwords=iter(['cafe'])), 'b') + self.assertEqual(slugify('A a B', lowercase=False, stopwords=iter(['A'])), 'a-B') + + def test_actual_separator_width_and_literal_characters(self): + self.assertEqual(slugify('a b c', separator='---', max_length=5), 'a---b') + self.assertEqual(slugify('a b c', separator='---', max_length=3), 'a') + self.assertEqual(slugify('a b c', separator='', max_length=2, word_boundary=True), 'ab') + for separator in ('\\', r'\1', '[x]', '.*', '::', '---'): + self.assertEqual(slugify('a b', separator=separator), 'a' + separator + 'b') + # Legacy mapping intentionally still changes allowed literal dashes. + self.assertEqual(slugify('a-b c', separator='_', regex_pattern=r'[^-a-z]+'), 'a_b_c') + + def test_empty_separator_preserves_word_boundaries(self): + for order in (False, True): + self.assertEqual(slugify('hello world', max_length=8, word_boundary=True, + separator='', save_order=order), 'hello') + self.assertEqual(slugify('oversized hi all', max_length=5, word_boundary=True, + separator=''), 'hiall') + self.assertEqual(slugify('oversized hi all', max_length=5, word_boundary=True, + separator='', save_order=True), 'overs') + self.assertEqual(slugify('a b', max_length=5, word_boundary=True, separator=''), 'ab') + self.assertEqual(slugify('', max_length=5, word_boundary=True, separator=''), '') + + def test_truncate_contracts(self): + self.assertEqual(smart_truncate(':alpha:', 0, separator='::'), 'alpha') + self.assertEqual(smart_truncate('abcdef', -1), 'abcde') + with self.assertRaises(ValueError): + smart_truncate('abc', 2, True, '') + self.assertEqual(smart_truncate('oversized a b', 3, True), 'a b') + self.assertEqual(smart_truncate('oversized a b', 3, True, save_order=True), 'ove') + + def test_bounded_length_and_default_idempotence(self): + corpus = ('', 'a b c', '影師嗎', 'A a B', "a's café", '1º—2ª', 'a___b', 'A �') + for text, separator, boundary, order, limit in itertools.product( + corpus, ('-', '', '::', r'\1', 'aaa'), (False, True), (False, True), range(1, 12)): + result = slugify(text, separator=separator, word_boundary=boundary, save_order=order, max_length=limit) + self.assertLessEqual(len(result), limit) + for text in corpus: + result = slugify(text) + self.assertEqual(slugify(result), result) + + def test_backend_selection_and_no_fallback_on_broken_install(self): + with patch.object(core, 'import_module') as load: + load.return_value.unidecode.return_value = 'chosen' + self.assertEqual(slugify('x'), 'chosen') + load.assert_called_once_with('unidecode') + with patch.object(core, 'import_module', side_effect=ModuleNotFoundError(name='dependency')): + with self.assertRaises(ModuleNotFoundError) as error: + slugify('x') + self.assertEqual(error.exception.name, 'dependency') + with patch.object(core, 'import_module', side_effect=ModuleNotFoundError(name='anyascii')): + with self.assertRaises(ModuleNotFoundError): + slugify('x', backend='anyascii') + with patch.object(core, 'import_module', side_effect=AssertionError('must not import')): + self.assertEqual(slugify('影師嗎', allow_unicode=True, backend='anyascii'), '影師嗎') + with self.assertRaisesRegex(ValueError, 'backend'): + slugify('x', backend='invalid') + + def test_auto_falls_back_only_when_unidecode_missing(self): + original = core.import_module + + def load(name): + if name == 'unidecode': + raise ModuleNotFoundError(name=name) + return original(name) + + try: + original('text_unidecode') + except ModuleNotFoundError: + self.skipTest('text-unidecode absent in isolated backend environment') + with patch.object(core, 'import_module', side_effect=load): + self.assertEqual(slugify('影師嗎'), 'ying-shi-ma') + + def test_explicit_backend_golden_corpus(self): + corpus = ['影師嗎', 'Компьютер', 'β', 'café', '1º 1ª', '你'] + expected = { + 'text-unidecode': ['ying-shi-ma', 'kompiuter', 'b', 'cafe', '1o-1a', 'ni'], + 'unidecode': ['ying-shi-ma', 'kompiuter', 'b', 'cafe', '1o-1a', 'ni'], + 'anyascii': ['yingshima', 'kompyuter', 'v', 'cafe', '1o-1a', 'ni'], + } + for backend, values in expected.items(): + try: + importlib.import_module(backend.replace('-', '_')) + except ModuleNotFoundError: + continue + with self.subTest(backend=backend): + self.assertEqual([slugify(text, backend=backend) for text in corpus], values) + + def test_cli_forwarding_and_real_module(self): + argv = ['slugify', '--regex-pattern', '[^-a-z0-9_]+', '--backend', 'auto', + '--replacement-stage', 'pre', '___This is a test___'] + params = slugify_params(parse_args(argv)) + self.assertEqual(params['regex_pattern'], '[^-a-z0-9_]+') + self.assertEqual(params['backend'], 'auto') + self.assertEqual(params['replacement_stage'], 'pre') + result = subprocess.run([sys.executable, '-m', 'slugify', *argv[1:]], + check=True, capture_output=True, text=True) + self.assertEqual(result.stdout, '___this-is-a-test___\n') + result = subprocess.run([sys.executable, '-m', 'slugify', '--stdin'], input='Café', + check=True, capture_output=True, text=True) + self.assertEqual(result.stdout, 'cafe\n') + with patch('builtins.print') as output: + main(argv) + output.assert_called_once_with('___this-is-a-test___') + with patch.object(sys, 'argv', ['slugify', 'Hello']), patch('builtins.print') as output: + main() + output.assert_called_once_with('hello') + with patch('slugify.__main__.slugify', side_effect=KeyboardInterrupt), self.assertRaises(SystemExit): + main(['slugify']) + + +if __name__ == '__main__': + unittest.main() diff --git a/tools/check_algorithms.py b/tools/check_algorithms.py new file mode 100644 index 0000000..02d09ef --- /dev/null +++ b/tools/check_algorithms.py @@ -0,0 +1,71 @@ +"""Reusable API compatibility checks, also run against installed release artifacts.""" +import inspect +import itertools + +from slugify import slugify, smart_truncate + + +def check_goldens(): + cases = ( + ('a'b', {}, 'ab', 'a-b'), + ('aéb', {}, 'ae-b', 'aeb'), + ('a你b', {}, 'a-b', 'ani-b'), + ('xylophone x', {'separator': 'x', 'max_length': 100}, 'xylophonexx', 'xylophonexx'), + ('a b c', {'separator': '::', 'max_length': 3}, 'a::b', 'a'), + ) + for text, options, legacy, modern in cases: + assert slugify(text, **options) == legacy + assert slugify(text, algorithm='legacy', **options) == legacy + assert slugify(text, algorithm='modern', **options) == modern + for algorithm, expected in (('legacy', 'aa'), ('modern', 'aaaa')): + assert slugify('a', replacements=iter([('a', 'aa')]), algorithm=algorithm) == expected + for algorithm, expected in (('legacy', 'a-b-a-b'), ('modern', 'a-a')): + assert slugify('a b a b', stopwords=iter(['A', 'b']), lowercase=False, algorithm=algorithm) == expected + parameter = inspect.signature(slugify).parameters['algorithm'] + assert parameter.kind == inspect.Parameter.KEYWORD_ONLY and parameter.default == 'legacy' + try: + slugify('a', algorithm='invalid') + except ValueError: + pass + else: + raise AssertionError('unknown algorithm accepted') + + +def check_differential(reference): + corpus = ('', 'a b c', 'xylophone x', "Baby's café", 'aéb', 'a'b', 'a你b', + 'A � B', 'A � B', + '�', '�', '影師嗎', 'A a B', '1,234—5') + count = 0 + for text, separator, limit, boundary, order, unicode in itertools.product( + corpus, ('-', '', '::', 'x'), (0, -1, 1, 3, 8, 100), (False, True), (False, True), (False, True)): + options = dict(separator=separator, max_length=limit, word_boundary=boundary, + save_order=order, allow_unicode=unicode) + expected = reference.slugify(text, **options) + assert slugify(text, **options) == expected, (text, options) + assert slugify(text, algorithm='legacy', **options) == expected, (text, options) + count += 1 + # Each call receives fresh iterators; using the same consumed object hides regressions. + for replacements in (lambda: [('a', 'aa')], lambda: iter([('a', 'aa')]), + lambda: iter([iter(('a', 'aa'))])): + assert slugify('a', replacements=replacements()) == reference.slugify('a', replacements=replacements()) + for lowercase in (False, True): + assert slugify('a b a b', lowercase=lowercase, stopwords=iter(['A', 'b'])) == reference.slugify( + 'a b a b', lowercase=lowercase, stopwords=iter(['A', 'b'])) + for text, separator, limit, boundary, order in itertools.product( + ('::alpha::', 'a b c', 'abcdef', ''), (' ', '::', '', 'x'), (0, -2, 1, 5), (False, True), (False, True)): + args = (text, limit, boundary, separator, order) + try: + expected = reference.smart_truncate(*args) + except ValueError: + try: + smart_truncate(*args) + except ValueError: + continue + raise AssertionError(('missing legacy ValueError', args)) + assert smart_truncate(*args) == expected, args + return count + + +if __name__ == '__main__': + check_goldens() + print('PASS: installed algorithm API goldens') diff --git a/tools/check_dist.py b/tools/check_dist.py new file mode 100644 index 0000000..2f4347d --- /dev/null +++ b/tools/check_dist.py @@ -0,0 +1,109 @@ +"""Build, inspect and install both artifacts without publishing or using checkout imports.""" +import argparse +import email +import os +from pathlib import Path +import subprocess +import sys +import tarfile +import tempfile +import venv +import zipfile + + +ROOT = Path(__file__).resolve().parents[1] + + +def run(*args, cwd=ROOT): + subprocess.run([str(arg) for arg in args], cwd=cwd, check=True) + + +def check_metadata(raw): + metadata = email.message_from_bytes(raw) + assert metadata['Name'] == 'python-slugify' + assert metadata['Version'] == '9.0.0' + assert metadata['Requires-Python'] == '>=3.10' + assert metadata['License-Expression'] == 'MIT' + assert set(metadata.get_all('Provides-Extra')) == {'unidecode', 'anyascii'} + requirements = metadata.get_all('Requires-Dist') + assert any(value.startswith('text-unidecode>=1.3') for value in requirements) + assert any('unidecode' in value.lower() and 'extra ==' in value for value in requirements) + assert any('anyascii' in value and 'extra ==' in value for value in requirements) + + +def main(): + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument('--outdir', type=Path, help='Retain artifacts in a new, empty directory') + args = parser.parse_args() + if args.outdir is not None: + args.outdir = args.outdir.resolve() + if args.outdir.exists() and any(args.outdir.iterdir()): + parser.error('--outdir must be absent or empty; existing artifacts are not overwritten') + with tempfile.TemporaryDirectory(prefix='slugify-release9-') as temporary: + scratch = Path(temporary) + dist = args.outdir if args.outdir is not None else scratch / 'dist' + run(sys.executable, '-m', 'build', '--outdir', dist) + artifacts = sorted(dist.iterdir()) + assert len(artifacts) == 2 + run(sys.executable, '-m', 'twine', 'check', '--strict', *artifacts) + for artifact in artifacts: + if artifact.suffix == '.whl': + assert artifact.name.endswith('-py3-none-any.whl') + with zipfile.ZipFile(artifact) as archive: + names = archive.namelist() + assert 'slugify/py.typed' in names + assert any(name.endswith('/licenses/LICENSE') for name in names) + check_metadata(archive.read(next(name for name in names if name.endswith('/METADATA')))) + entry = archive.read(next(name for name in names if name.endswith('/entry_points.txt'))) + assert b'slugify = slugify.__main__:main' in entry + else: + with tarfile.open(artifact) as archive: + names = archive.getnames() + for required in ('LICENSE', 'test.py', 'test_release.py', 'pyproject.toml', 'slugify/py.typed', + 'docs/release-9/migration.md', 'tools/check_dist.py', + 'tools/check_algorithms.py', 'tools/legacy_reference.py'): + assert any(name.endswith('/' + required) for name in names), required + assert not any(name.endswith('evidence.json') for name in names) + metadata = archive.extractfile(next(name for name in names if name.endswith('/PKG-INFO'))) + assert metadata is not None + check_metadata(metadata.read()) + assert not any('__pycache__' in name or name.endswith(('.pyc', '.pyo')) for name in names) + env = scratch / ('wheel-env' if artifact.suffix == '.whl' else 'sdist-env') + venv.EnvBuilder(with_pip=True).create(env) + bin_dir = env / ('Scripts' if os.name == 'nt' else 'bin') + python = bin_dir / ('python.exe' if os.name == 'nt' else 'python') + command = bin_dir / ('slugify.exe' if os.name == 'nt' else 'slugify') + run(python, '-m', 'pip', 'install', '--disable-pip-version-check', artifact, cwd=scratch) + run(python, '-m', 'pip', 'check', cwd=scratch) + run(python, '-c', "import slugify; from importlib.metadata import version; " + "assert version('python-slugify') == slugify.__version__ == '9.0.0'; " + "assert slugify.slugify('影師嗎', backend='text-unidecode') == 'ying-shi-ma'; " + "print(slugify.__file__)", cwd=scratch) + # Execute copied API checks outside the checkout, importing only installed code. + checks = scratch / 'check_algorithms.py' + checks.write_text((ROOT / 'tools/check_algorithms.py').read_text()) + run(python, checks, cwd=scratch) + for invocation in ([command], [python, '-m', 'slugify']): + args = [str(arg) for arg in invocation] + args.extend(['--regex-pattern', '[^-a-z0-9_]+', '___Test___']) + output = subprocess.check_output(args, cwd=scratch, text=True) + assert output == '___test___\n' + for algorithm, expected in ((None, 'ab'), ('legacy', 'ab'), ('modern', 'a-b')): + options = ['--algorithm', algorithm] if algorithm else [] + output = subprocess.check_output([*map(str, invocation), *options, 'a'b'], + cwd=scratch, text=True) + assert output == expected + '\n' + invalid = subprocess.run([*map(str, invocation), '--algorithm', 'invalid', 'a'], + cwd=scratch, capture_output=True, text=True) + assert invalid.returncode == 2 and 'invalid choice' in invalid.stderr + run(*invocation, '--help', cwd=scratch) + # Prove Unicode-only runtime needs no transliteration dependency. + run(python, '-m', 'pip', 'uninstall', '-y', 'text-unidecode', cwd=scratch) + run(python, '-c', "from slugify import slugify; " + "assert slugify('影師嗎', allow_unicode=True) == '影師嗎'", cwd=scratch) + print(f'PASS: {artifact.name}: metadata, contents, installation, CLI, Unicode-only runtime') + print('PASS: wheel and sdist validation; no upload or tag operations performed') + + +if __name__ == '__main__': + main() diff --git a/tools/legacy_reference.py b/tools/legacy_reference.py new file mode 100644 index 0000000..b81e5ec --- /dev/null +++ b/tools/legacy_reference.py @@ -0,0 +1,198 @@ +"""Frozen compatibility oracle from 7b6d5d9; do not modernize this fixture.""" +from __future__ import annotations + +import re +import unicodedata +from collections.abc import Iterable +from html.entities import name2codepoint + +try: + import unidecode +except ImportError: + import text_unidecode as unidecode # type: ignore[import-untyped, no-redef] + +__all__ = ['slugify', 'smart_truncate'] + + +CHAR_ENTITY_PATTERN = re.compile(r'&(%s);' % '|'.join(name2codepoint)) +DECIMAL_PATTERN = re.compile(r'&#(\d+);') +HEX_PATTERN = re.compile(r'&#x([\da-fA-F]+);') +QUOTE_PATTERN = re.compile(r'[\']+') +DISALLOWED_CHARS_PATTERN = re.compile(r'[^-a-zA-Z0-9]+') +DISALLOWED_UNICODE_CHARS_PATTERN = re.compile(r'[\W_]+') +DUPLICATE_DASH_PATTERN = re.compile(r'-{2,}') +NUMBERS_PATTERN = re.compile(r'(?<=\d),(?=\d)') +DEFAULT_SEPARATOR = '-' + + +def smart_truncate( + string: str, + max_length: int = 0, + word_boundary: bool = False, + separator: str = " ", + save_order: bool = False, +) -> str: + """ + Truncate a string. + :param string (str): string for modification + :param max_length (int): output string length + :param word_boundary (bool): + :param save_order (bool): if True then word order of output string is like input string + :param separator (str): separator between words + :return: + """ + + string = string.strip(separator) + + if not max_length: + return string + + if len(string) < max_length: + return string + + if not word_boundary: + return string[:max_length].strip(separator) + + if separator not in string: + return string[:max_length] + + truncated = '' + for word in string.split(separator): + if word: + next_len = len(truncated) + len(word) + if next_len < max_length: + truncated += '{}{}'.format(word, separator) + elif next_len == max_length: + truncated += '{}'.format(word) + break + else: + if save_order: + break + if not truncated: + truncated = string[:max_length] + return truncated.strip(separator) + + +def slugify( + text: str, + entities: bool = True, + decimal: bool = True, + hexadecimal: bool = True, + max_length: int = 0, + word_boundary: bool = False, + separator: str = DEFAULT_SEPARATOR, + save_order: bool = False, + stopwords: Iterable[str] = (), + regex_pattern: re.Pattern[str] | str | None = None, + lowercase: bool = True, + replacements: Iterable[Iterable[str]] = (), + allow_unicode: bool = False, +) -> str: + """ + Make a slug from the given text. + :param text (str): initial text + :param entities (bool): converts html entities to unicode + :param decimal (bool): converts html decimal to unicode + :param hexadecimal (bool): converts html hexadecimal to unicode + :param max_length (int): output string length + :param word_boundary (bool): truncates to complete word even if length ends up shorter than max_length + :param save_order (bool): when set, does not include shorter subsequent words even if they fit + :param separator (str): separator between words + :param stopwords (iterable): words to discount + :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']] + :param allow_unicode (bool): allow unicode characters + :return (str): + """ + + # user-specific replacements + if replacements: + for old, new in replacements: + text = text.replace(old, new) + + # ensure text is unicode + if not isinstance(text, str): + text = str(text, 'utf-8', 'ignore') + + # replace quotes with dashes - pre-process + text = QUOTE_PATTERN.sub(DEFAULT_SEPARATOR, text) + + # normalize text, convert to unicode if required + if allow_unicode: + text = unicodedata.normalize('NFKC', text) + else: + text = unicodedata.normalize('NFKD', text) + text = unidecode.unidecode(text) + + # ensure text is still in unicode + if not isinstance(text, str): + text = str(text, 'utf-8', 'ignore') + + # character entity reference + if entities: + text = CHAR_ENTITY_PATTERN.sub(lambda m: chr(name2codepoint[m.group(1)]), text) + + # decimal character reference + if decimal: + try: + text = DECIMAL_PATTERN.sub(lambda m: chr(int(m.group(1))), text) + except Exception: + pass + + # hexadecimal character reference + if hexadecimal: + try: + text = HEX_PATTERN.sub(lambda m: chr(int(m.group(1), 16)), text) + except Exception: + pass + + # re normalize text + if allow_unicode: + text = unicodedata.normalize('NFKC', text) + else: + text = unicodedata.normalize('NFKD', text) + + # make the text lowercase (optional) + if lowercase: + text = text.lower() + + # remove generated quotes -- post-process + text = QUOTE_PATTERN.sub('', text) + + # cleanup numbers + text = NUMBERS_PATTERN.sub('', text) + + # replace all other unwanted characters + if allow_unicode: + pattern = regex_pattern or DISALLOWED_UNICODE_CHARS_PATTERN + else: + pattern = regex_pattern or DISALLOWED_CHARS_PATTERN + + text = re.sub(pattern, DEFAULT_SEPARATOR, text) + + # remove redundant + text = DUPLICATE_DASH_PATTERN.sub(DEFAULT_SEPARATOR, text).strip(DEFAULT_SEPARATOR) + + # remove stopwords + if stopwords: + if lowercase: + stopwords_lower = [s.lower() for s in stopwords] + words = [w for w in text.split(DEFAULT_SEPARATOR) if w not in stopwords_lower] + else: + words = [w for w in text.split(DEFAULT_SEPARATOR) if w not in stopwords] + text = DEFAULT_SEPARATOR.join(words) + + # finalize user-specific replacements + if replacements: + for old, new in replacements: + text = text.replace(old, new) + + # smart truncate if requested + if max_length > 0: + text = smart_truncate(text, max_length, word_boundary, DEFAULT_SEPARATOR, save_order) + + if separator != DEFAULT_SEPARATOR: + text = text.replace(DEFAULT_SEPARATOR, separator) + + return text diff --git a/tox.ini b/tox.ini index 0c16f5e..f9e93e2 100644 --- a/tox.ini +++ b/tox.ini @@ -1,69 +1,69 @@ [tox] env_list = coverage-erase - py{3.10, 3.11, 3.12, 3.13, 3.14}-{unidecode, text_unidecode} - pypy{3.11}-{unidecode, text_unidecode} + py{3.10, 3.11, 3.12, 3.13, 3.14}-{unidecode, text_unidecode, anyascii} + pypy{3.11}-{unidecode, text_unidecode, anyascii} coverage-report - coverage-html mypy pycodestyle + flake8 + packaging [testenv] -depends = - py{3.10, 3.11, 3.12, 3.13, 3.14}-{unidecode, text_unidecode}: coverage-erase - pypy{3.11}-{unidecode, text_unidecode}: coverage-erase +package = wheel +depends = coverage-erase deps = - coverage[toml] - pytest + coverage[toml]>=7 + pytest>=8 unidecode: pip - unidecode: unidecode -commands_pre: - # If testing unidecode, ensure text_unidecode is unavailable. - unidecode: pip uninstall --yes text_unidecode -commands = - coverage run -m pytest test.py - -[testenv:coverage_base] -deps = - coverage[toml] + unidecode: Unidecode>=1.1.1 + anyascii: anyascii>=0.3.2 +commands_pre = + # Isolate auto's Unidecode path from the mandatory fallback dependency. + unidecode: pip uninstall --yes text-unidecode +commands = coverage run -m pytest {posargs:test.py test_release.py} [testenv:coverage-erase] -base = coverage_base -commands = - coverage erase +depends = +skip_install = true +deps = coverage[toml]>=7 +commands = coverage erase [testenv:coverage-report] -base = coverage_base +skip_install = true depends = - py{3.10, 3.11, 3.12, 3.13, 3.14}-{unidecode, text_unidecode} - pypy{3.11}-{unidecode, text_unidecode} -commands_pre = - - coverage combine + py{3.10, 3.11, 3.12, 3.13, 3.14}-{unidecode, text_unidecode, anyascii} + pypy{3.11}-{unidecode, text_unidecode, anyascii} +deps = coverage[toml]>=7 commands = + coverage combine coverage report -[testenv:coverage-html] -base = coverage_base -depends = - coverage-report -commands = - coverage html --fail-under=0 - [testenv:mypy] -deps = - mypy - unidecode -commands = - mypy +depends = +deps = mypy>=1.11 +commands = mypy [testenv:pycodestyle] -deps = - pycodestyle -commands = - pycodestyle --ignore=E128,E261,E225,E501,W605 slugify test.py setup.py +depends = +deps = pycodestyle>=2.12 +commands = pycodestyle --ignore=E128,E261,E225,E501,W605 --exclude=legacy_reference.py slugify test.py test_release.py setup.py tools + +[testenv:coverage-html] +depends = coverage-report +skip_install = true +deps = coverage[toml]>=7 +commands = coverage html --fail-under=0 [testenv:flake8] +depends = +deps = flake8>=7 +commands = flake8 --ignore=E501,F403,F401,E241,E225,E128 --exclude=legacy_reference.py slugify setup.py test.py test_release.py tools + +[testenv:packaging] +depends = +skip_install = true deps = - flake8 -commands = - flake8 --ignore=E501,F403,F401,E241,E225,E128 slugify/ setup.py test.py + build>=1.2 + twine>=6 +commands = python tools/check_dist.py