Commit 67fde735 authored by Michal Čihař's avatar Michal Čihař

New upstream version 0.24.0

parent 08483d41
......@@ -15,3 +15,4 @@ Charles Leifer
Florian Apolloner <apollo13@apolloner.eu>
Andrew Pryde <andrew@rocketpod.co.uk>
John Whitlock <jwhitlock@mozilla.com>
Jon Dufresne <jon.dufresne@gmail.com>
This diff is collapsed.
......@@ -3,7 +3,6 @@ include CHANGELOG.txt
include LICENSE
include README.rst
include tox.ini
include runtests.py
recursive-include docs *
recursive-include taggit/locale *
recursive-include tests *
Metadata-Version: 1.1
Metadata-Version: 1.2
Name: django-taggit
Version: 0.22.1
Version: 0.24.0
Summary: django-taggit is a reusable Django application for simple tagging.
Home-page: http://github.com/alex/django-taggit/tree/master
Home-page: https://github.com/jazzband/django-taggit/tree/master
Author: Alex Gaynor
Author-email: alex.gaynor@gmail.com
License: BSD
Description: django-taggit
=============
.. image:: https://travis-ci.org/alex/django-taggit.svg?branch=master
:target: https://travis-ci.org/alex/django-taggit
.. image:: https://codecov.io/gh/alex/django-taggit/coverage.svg?branch=master
:target: https://codecov.io/gh/alex/django-taggit?branch=master
.. image:: https://jazzband.co/static/img/badge.svg
:target: https://jazzband.co/
:alt: Jazzband
.. image:: https://travis-ci.org/jazzband/django-taggit.svg?branch=master
:target: https://travis-ci.org/jazzband/django-taggit
.. image:: https://codecov.io/gh/jazzband/django-taggit/coverage.svg?branch=master
:target: https://codecov.io/gh/jazzband/django-taggit?branch=master
This is a `Jazzband <https://jazzband.co>`_ project. By contributing you agree
to abide by the `Contributor Code of Conduct
<https://jazzband.co/about/conduct>`_ and follow the `guidelines
<https://jazzband.co/about/guidelines>`_.
``django-taggit`` a simpler approach to tagging with Django. Add ``"taggit"`` to your
``INSTALLED_APPS`` then just add a TaggableManager to your model and go:
......@@ -44,26 +55,29 @@ Description: django-taggit
Tags will show up for you automatically in forms and the admin.
``django-taggit`` requires Django 1.8 or greater.
``django-taggit`` requires Django 1.11 or greater.
For more info check out the `documentation <https://django-taggit.readthedocs.io/en/latest/>`_. And for questions about usage or
development you can contact the
`mailinglist <http://groups.google.com/group/django-taggit>`_.
`mailinglist <https://groups.google.com/group/django-taggit>`_.
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
Classifier: Environment :: Web Environment
Classifier: Framework :: Django
Classifier: Framework :: Django :: 1.8
Classifier: Framework :: Django :: 1.9
Classifier: Framework :: Django :: 1.10
Classifier: Framework :: Django :: 1.11
Classifier: Framework :: Django :: 2.0
Classifier: Framework :: Django :: 2.1
Classifier: Framework :: Django :: 2.2
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: BSD License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 2
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3.3
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.4
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Requires-Python: >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*
django-taggit
=============
.. image:: https://travis-ci.org/alex/django-taggit.svg?branch=master
:target: https://travis-ci.org/alex/django-taggit
.. image:: https://codecov.io/gh/alex/django-taggit/coverage.svg?branch=master
:target: https://codecov.io/gh/alex/django-taggit?branch=master
.. image:: https://jazzband.co/static/img/badge.svg
:target: https://jazzband.co/
:alt: Jazzband
.. image:: https://travis-ci.org/jazzband/django-taggit.svg?branch=master
:target: https://travis-ci.org/jazzband/django-taggit
.. image:: https://codecov.io/gh/jazzband/django-taggit/coverage.svg?branch=master
:target: https://codecov.io/gh/jazzband/django-taggit?branch=master
This is a `Jazzband <https://jazzband.co>`_ project. By contributing you agree
to abide by the `Contributor Code of Conduct
<https://jazzband.co/about/conduct>`_ and follow the `guidelines
<https://jazzband.co/about/guidelines>`_.
``django-taggit`` a simpler approach to tagging with Django. Add ``"taggit"`` to your
``INSTALLED_APPS`` then just add a TaggableManager to your model and go:
......@@ -36,8 +47,8 @@ Then you can use the API like so:
Tags will show up for you automatically in forms and the admin.
``django-taggit`` requires Django 1.8 or greater.
``django-taggit`` requires Django 1.11 or greater.
For more info check out the `documentation <https://django-taggit.readthedocs.io/en/latest/>`_. And for questions about usage or
development you can contact the
`mailinglist <http://groups.google.com/group/django-taggit>`_.
`mailinglist <https://groups.google.com/group/django-taggit>`_.
Metadata-Version: 1.1
Metadata-Version: 1.2
Name: django-taggit
Version: 0.22.1
Version: 0.24.0
Summary: django-taggit is a reusable Django application for simple tagging.
Home-page: http://github.com/alex/django-taggit/tree/master
Home-page: https://github.com/jazzband/django-taggit/tree/master
Author: Alex Gaynor
Author-email: alex.gaynor@gmail.com
License: BSD
Description: django-taggit
=============
.. image:: https://travis-ci.org/alex/django-taggit.svg?branch=master
:target: https://travis-ci.org/alex/django-taggit
.. image:: https://codecov.io/gh/alex/django-taggit/coverage.svg?branch=master
:target: https://codecov.io/gh/alex/django-taggit?branch=master
.. image:: https://jazzband.co/static/img/badge.svg
:target: https://jazzband.co/
:alt: Jazzband
.. image:: https://travis-ci.org/jazzband/django-taggit.svg?branch=master
:target: https://travis-ci.org/jazzband/django-taggit
.. image:: https://codecov.io/gh/jazzband/django-taggit/coverage.svg?branch=master
:target: https://codecov.io/gh/jazzband/django-taggit?branch=master
This is a `Jazzband <https://jazzband.co>`_ project. By contributing you agree
to abide by the `Contributor Code of Conduct
<https://jazzband.co/about/conduct>`_ and follow the `guidelines
<https://jazzband.co/about/guidelines>`_.
``django-taggit`` a simpler approach to tagging with Django. Add ``"taggit"`` to your
``INSTALLED_APPS`` then just add a TaggableManager to your model and go:
......@@ -44,26 +55,29 @@ Description: django-taggit
Tags will show up for you automatically in forms and the admin.
``django-taggit`` requires Django 1.8 or greater.
``django-taggit`` requires Django 1.11 or greater.
For more info check out the `documentation <https://django-taggit.readthedocs.io/en/latest/>`_. And for questions about usage or
development you can contact the
`mailinglist <http://groups.google.com/group/django-taggit>`_.
`mailinglist <https://groups.google.com/group/django-taggit>`_.
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
Classifier: Environment :: Web Environment
Classifier: Framework :: Django
Classifier: Framework :: Django :: 1.8
Classifier: Framework :: Django :: 1.9
Classifier: Framework :: Django :: 1.10
Classifier: Framework :: Django :: 1.11
Classifier: Framework :: Django :: 2.0
Classifier: Framework :: Django :: 2.1
Classifier: Framework :: Django :: 2.2
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: BSD License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 2
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3.3
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.4
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Requires-Python: >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*
......@@ -3,7 +3,6 @@ CHANGELOG.txt
LICENSE
MANIFEST.in
README.rst
runtests.py
setup.cfg
setup.py
tox.ini
......@@ -11,6 +10,7 @@ django_taggit.egg-info/PKG-INFO
django_taggit.egg-info/SOURCES.txt
django_taggit.egg-info/dependency_links.txt
django_taggit.egg-info/not-zip-safe
django_taggit.egg-info/requires.txt
django_taggit.egg-info/top_level.txt
docs/Makefile
docs/admin.txt
......@@ -70,6 +70,7 @@ tests/models.py
tests/settings.py
tests/tests.py
tests/urls.py
tests/views.py
tests/migrations/0001_initial.py
tests/migrations/0002_uuid_models.py
tests/migrations/__init__.py
......
......@@ -8,13 +8,13 @@ If you are specifying :attr:`ModelAdmin.fieldsets`, include the name
of the :class:`TaggableManager` as a field::
fieldsets = (
(None, {'fields': ('tags')}),
(None, {'fields': ('tags',)}),
)
Including tags in :attr:`ModelAdmin.list_display`
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
One important thing to note is that you *cannot* include a :class:`TaggableManager`
One important thing to note is that you *cannot* include a :class:`TaggableManager`
in :attr:`ModelAdmin.list_display`. If you do you'll see an exception that looks
like::
......@@ -29,7 +29,7 @@ minimize queries::
class MyModelAdmin(admin.ModelAdmin):
list_display = ['tag_list']
def get_queryset(self, request):
return super(MyModelAdmin, self).get_queryset(request).prefetch_related('tags')
......@@ -37,4 +37,4 @@ minimize queries::
return u", ".join(o.name for o in obj.tags.all())
For details, see the
`Django documentation <http://docs.djangoproject.com/en/1.8/ref/contrib/admin/#django.contrib.admin.ModelAdmin.list_display>`_.
`Django documentation <https://docs.djangoproject.com/en/stable/ref/contrib/admin/#django.contrib.admin.ModelAdmin.list_display>`_.
......@@ -17,183 +17,188 @@ import sys
# If extensions (or modules to document with autodoc) are in another directory,
# add these directories to sys.path here. If the directory is relative to the
# documentation root, use os.path.abspath to make it absolute, like shown here.
#sys.path.append(os.path.abspath('.'))
# sys.path.append(os.path.abspath('.'))
# -- General configuration -----------------------------------------------------
# Add any Sphinx extension module names here, as strings. They can be extensions
# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
extensions = ['sphinx.ext.intersphinx']
extensions = ["sphinx.ext.intersphinx"]
# Add any paths that contain templates here, relative to this directory.
templates_path = ['_templates']
templates_path = ["_templates"]
# The suffix of source filenames.
source_suffix = '.txt'
source_suffix = ".txt"
# The encoding of source files.
#source_encoding = 'utf-8'
# source_encoding = 'utf-8'
# The master toctree document.
master_doc = 'index'
master_doc = "index"
# General information about the project.
project = u'django-taggit'
copyright = u'2010-2014, Alex Gaynor and others.'
project = u"django-taggit"
copyright = u"2010-2014, Alex Gaynor and others."
# The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the
# built documents.
#
# The short X.Y version.
version = '0.12'
version = "0.24"
# The full version, including alpha/beta/rc tags.
release = '0.12'
release = "0.24.0"
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
#language = None
# language = None
# There are two options for replacing |today|: either, you set today to some
# non-false value, then it is used:
#today = ''
# today = ''
# Else, today_fmt is used as the format for a strftime call.
#today_fmt = '%B %d, %Y'
# today_fmt = '%B %d, %Y'
# List of documents that shouldn't be included in the build.
#unused_docs = []
# unused_docs = []
# List of directories, relative to source directory, that shouldn't be searched
# for source files.
exclude_trees = ['_build']
exclude_trees = ["_build"]
# The reST default role (used for this markup: `text`) to use for all documents.
#default_role = None
# default_role = None
# If true, '()' will be appended to :func: etc. cross-reference text.
#add_function_parentheses = True
# add_function_parentheses = True
# If true, the current module name will be prepended to all description
# unit titles (such as .. function::).
#add_module_names = True
# add_module_names = True
# If true, sectionauthor and moduleauthor directives will be shown in the
# output. They are ignored by default.
#show_authors = False
# show_authors = False
# The name of the Pygments (syntax highlighting) style to use.
pygments_style = 'sphinx'
pygments_style = "sphinx"
# A list of ignored prefixes for module index sorting.
#modindex_common_prefix = []
# modindex_common_prefix = []
# -- Options for HTML output ---------------------------------------------------
# The theme to use for HTML and HTML Help pages. Major themes that come with
# Sphinx are currently 'default' and 'sphinxdoc'.
html_theme = 'default'
html_theme = "default"
# Theme options are theme-specific and customize the look and feel of a theme
# further. For a list of options available for each theme, see the
# documentation.
#html_theme_options = {}
# html_theme_options = {}
# Add any paths that contain custom themes here, relative to this directory.
#html_theme_path = []
# html_theme_path = []
# The name for this set of Sphinx documents. If None, it defaults to
# "<project> v<release> documentation".
#html_title = None
# html_title = None
# A shorter title for the navigation bar. Default is the same as html_title.
#html_short_title = None
# html_short_title = None
# The name of an image file (relative to this directory) to place at the top
# of the sidebar.
#html_logo = None
# html_logo = None
# The name of an image file (within the static path) to use as favicon of the
# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32
# pixels large.
#html_favicon = None
# html_favicon = None
# Add any paths that contain custom static files (such as style sheets) here,
# relative to this directory. They are copied after the builtin static files,
# so a file named "default.css" will overwrite the builtin "default.css".
#html_static_path = ['_static']
# html_static_path = ['_static']
# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
# using the given strftime format.
#html_last_updated_fmt = '%b %d, %Y'
# html_last_updated_fmt = '%b %d, %Y'
# If true, SmartyPants will be used to convert quotes and dashes to
# typographically correct entities.
#html_use_smartypants = True
# html_use_smartypants = True
# Custom sidebar templates, maps document names to template names.
#html_sidebars = {}
# html_sidebars = {}
# Additional templates that should be rendered to pages, maps page names to
# template names.
#html_additional_pages = {}
# html_additional_pages = {}
# If false, no module index is generated.
#html_use_modindex = True
# html_use_modindex = True
# If false, no index is generated.
#html_use_index = True
# html_use_index = True
# If true, the index is split into individual pages for each letter.
#html_split_index = False
# html_split_index = False
# If true, links to the reST sources are added to the pages.
#html_show_sourcelink = True
# html_show_sourcelink = True
# If true, an OpenSearch description file will be output, and all pages will
# contain a <link> tag referring to it. The value of this option must be the
# base URL from which the finished HTML is served.
#html_use_opensearch = ''
# html_use_opensearch = ''
# If nonempty, this is the file name suffix for HTML files (e.g. ".xhtml").
#html_file_suffix = ''
# html_file_suffix = ''
# Output file base name for HTML help builder.
htmlhelp_basename = 'django-taggitdoc'
htmlhelp_basename = "django-taggitdoc"
# -- Options for LaTeX output --------------------------------------------------
# The paper size ('letter' or 'a4').
#latex_paper_size = 'letter'
# latex_paper_size = 'letter'
# The font size ('10pt', '11pt' or '12pt').
#latex_font_size = '10pt'
# latex_font_size = '10pt'
# Grouping the document tree into LaTeX files. List of tuples
# (source start file, target name, title, author, documentclass [howto/manual]).
latex_documents = [
('index', 'django-taggit.tex', u'django-taggit Documentation',
u'Alex Gaynor', 'manual'),
(
"index",
"django-taggit.tex",
u"django-taggit Documentation",
u"Alex Gaynor",
"manual",
)
]
# The name of an image file (relative to this directory) to place at the top of
# the title page.
#latex_logo = None
# latex_logo = None
# For "manual" documents, if this is true, then toplevel headings are parts,
# not chapters.
#latex_use_parts = False
# latex_use_parts = False
# Additional stuff for the LaTeX preamble.
#latex_preamble = ''
# latex_preamble = ''
# Documents to append as an appendix to all manuals.
#latex_appendices = []
# latex_appendices = []
# If false, no module index is generated.
#latex_use_modindex = True
# latex_use_modindex = True
# Example configuration for intersphinx: refer to the Python standard library.
intersphinx_mapping = {'http://docs.python.org/': None}
intersphinx_mapping = {"https://docs.python.org/": None}
Contributing to taggit
======================
Thank you for taking the time to contribute to django-taggit.
Follow these guidelines to speed up the process.
.. contents:: **Table of Contents**:
:backlinks: none
:depth: 3
Reach out before you start
--------------------------
Before opening a new issue, try the following steps:
- look if somebody else has already started working on the same issue
by looking in the `github issues <https://github.com/alex/django-taggit/issues>`_
and `pull requests <https://github.com/alex/django-taggit/pulls>`_
- look also in the `django-taggit mailinglist <http://groups.google.com/group/django-taggit>`_
- announce your intentions by opening a new issue
- present yourself on the mailing list
Fork repo and install your fork
-------------------------------
Once you have forked this repository to your own github account or organization,
install your own fork in your development environment:
.. code-block:: shell
git clone git@github.com:<your_fork>/django-taggit.git
cd django-taggit
python setup.py develop
Running tests
-------------
.. code-block:: shell
make test
Opening the django shell
------------------------
.. code-block:: shell
./manage.py shell
Creating new migrations
---------------------
.. code-block:: shell
./manage.py makemigrations
Follow style conventions (PEP8, isort)
--------------------------------------
Check that your changes are not breaking the style conventions with:
.. code-block:: shell
flake8 taggit
python setup.py isort
For more information, please see:
- `PEP8: Style Guide for Python Code <https://www.python.org/dev/peps/pep-0008/>`_
- `isort: a python utility / library to sort imports <https://github.com/timothycrosley/isort>`_
Update documentation
--------------------
If you introduce new features or change existing documented behavior,
please remember to update the documentation!
The documentation is located in the ``/docs`` directory
of the repository.
To do work on the docs, proceed with the following steps:
.. code-block:: shell
cd docs/
pip install sphinx
# update the text files with your favorite text editor
make html
Send pull request
-----------------
Now is time to push your changes to github and open a
`pull request <https://github.com/alex/django-taggit/pulls>`_!
.. include:: ../CONTRIBUTING.rst
......@@ -77,12 +77,6 @@ For example, if your primary key is a string::
GenericUUIDTaggedItemBase
~~~~~~~~~~~~~~~~~~~~~~~~~
.. note::
``GenericUUIDTaggedItemBase`` relies on Django UUIDField introduced with
Django 1.8. Therefore ``GenericUUIDTaggedItemBase`` is only defined
if you are using Django 1.8+.
A common use case of a non-integer primary key, is UUID primary key.
``django-taggit`` provides a base class ``GenericUUIDTaggedItemBase`` ready
to use with models using an UUID primary key::
......@@ -160,8 +154,8 @@ model named ``"tag"``:
.. method:: slugify(tag, i=None)
By default ``taggit`` uses :func:`django.template.defaultfilters.slugify`
to calculate a slug for a given tag. However, if you want to implement
By default ``taggit`` uses :func:`django.utils.text.slugify` to
calculate a slug for a given tag. However, if you want to implement
your own logic you can override this method, which receives the ``tag``
(a string), and ``i``, which is either ``None`` or an integer, which
signifies how many times the slug for this tag has been attempted to be
......
......@@ -11,7 +11,7 @@ of interest.
official, nor have they in any way been reviewed or tested.
If you have an application that you'd like to see listed here, simply fork
`django-taggit on github <https://github.com/alex/django-taggit>`_,
`django-taggit on github <https://github.com/jazzband/django-taggit>`_,
add it to this list, and send a pull request.
* `django-taggit-helpers <https://github.com/mfcovington/django-taggit-helpers>`_:
......
Welcome to django-taggit's documentation!
=========================================
``django-taggit`` is a reusable Django application designed to making adding
``django-taggit`` is a reusable Django application designed to make adding
tagging to your project easy and fun.
``django-taggit`` works with Django 1.8+ and Python 2.7-3.X.
``django-taggit`` works with Django 1.11+ and Python 2.7 / 3.4+.
.. toctree::
:maxdepth: 2
......
#!/usr/bin/env python
import sys
import warnings
from django.conf import settings
from django.core.management import execute_from_command_line
if not settings.configured:
settings.configure(
DATABASES={
'default': {
'ENGINE': 'django.db.backends.sqlite3',
}
},
INSTALLED_APPS=[
'django.contrib.contenttypes',
'taggit',
'tests',
],
MIDDLEWARE_CLASSES=[],
TEMPLATES=[
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'APP_DIRS': True,
}
],
)
warnings.simplefilter('default', DeprecationWarning)
warnings.simplefilter('default', PendingDeprecationWarning)
def runtests():
argv = sys.argv[:1] + ['test'] + sys.argv[1:]
execute_from_command_line(argv)
if __name__ == '__main__':
runtests()
[metadata]
license-file = LICENSE
[wheel]
[bdist_wheel]
universal = 1
[flake8]
max-line-length = 119
ignore = E501,E302
exclude = migrations,docs
ignore = E501
exclude =
.tox
docs
[isort]
forced_separate = tests,taggit
skip = migrations,.tox,docs
combine_as_imports = True
force_grid_wrap = 0
forced_separate = taggit
include_trailing_comma = True
line_length = 88
multi_line_output = 3
not_skip = __init__.py
skip =
.tox
[egg_info]
tag_build =
......
......@@ -2,45 +2,42 @@ from setuptools import find_packages, setup
import taggit
with open('README.rst') as f:
with open("README.rst") as f:
readme = f.read()
setup(
name='django-taggit',
version='.'.join(str(i) for i in taggit.VERSION),
description='django-taggit is a reusable Django application for simple tagging.',
name="django-taggit",
version=".".join(str(i) for i in taggit.VERSION),
description="django-taggit is a reusable Django application for simple tagging.",
long_description=readme,
author='Alex Gaynor',
author_email='alex.gaynor@gmail.com',
url='http://github.com/alex/django-taggit/tree/master',
packages=find_packages(exclude=('tests*',)),
package_data={
'taggit': [
'locale/*/LC_MESSAGES/*',
],
},
license='BSD',
author="Alex Gaynor",
author_email="alex.gaynor@gmail.com",
url="https://github.com/jazzband/django-taggit/tree/master",
packages=find_packages(exclude=("tests*",)),
package_data={"taggit": ["locale/*/LC_MESSAGES/*"]},
license="BSD",
python_requires=">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*",
install_requires=["Django>=1.11"],
classifiers=[
'Development Status :: 5 - Production/Stable',
'Environment :: Web Environment',
'Framework :: Django',
'Framework :: Django :: 1.8',
'Framework :: Django :: 1.9',
'Framework :: Django :: 1.10',
'Framework :: Django :: 1.11',
'Intended Audience :: Developers',
'License :: OSI Approved :: BSD License',
'Operating System :: OS Independent',
'Programming Language :: Python',
'Programming Language :: Python :: 2.7',
'Programming Language :: Python :: 3.3',
'Programming Language :: Python :: 3.4',
'Programming Language :: Python :: 3.5',
'Programming Language :: Python :: 3.6',
"Development Status :: 5 - Production/Stable",
"Environment :: Web Environment",
"Framework :: Django",
"Framework :: Django :: 1.11",
"Framework :: Django :: 2.0",
"Framework :: Django :: 2.1",
"Framework :: Django :: 2.2",
"Intended Audience :: Developers",
"License :: OSI Approved :: BSD License",
"Operating System :: OS Independent",
"Programming Language :: Python",
"Programming Language :: Python :: 2",
"Programming Language :: Python :: 2.7",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.4",
"Programming Language :: Python :: 3.5",
"Programming Language :: Python :: 3.6",