From ca4478a220467f2d2ec4cbc34c6b17dc2e946eae Mon Sep 17 00:00:00 2001
From: Pouria Hadjibagheri
Date: Sun, 12 Mar 2017 20:35:32 +0000
Subject: [PATCH] New version strategy: updates only needed in __init__, docs
and setup files will then automatically follow.
---
markdownx/__init__.py | 48 +++++++++++++++++
setup.py | 123 ++++++++++++++++++++++++++++++------------
2 files changed, 137 insertions(+), 34 deletions(-)
diff --git a/markdownx/__init__.py b/markdownx/__init__.py
index e69de29..2787187 100755
--- a/markdownx/__init__.py
+++ b/markdownx/__init__.py
@@ -0,0 +1,48 @@
+"""
+Django MarkdownX is a comprehensive `Markdown `_ editor built for
+`Django `_, the renowned high-level Python web framework.
+
+
+Key features
+------------
+
+* Raw editing.
+* Live preview.
+* Drag & drop image uploads (automatically stored in the designated location in the `Media` directory).
+* Customizable image insertion tag.
+* Definition of maximum size for an image.
+* Definition of acceptable image formats (PNG, JPEG, SVG).
+* Image manipulations (compression, size reduction, cropping, upscaling).
+* Pre- and post- text modification.
+* Easy template customization, layout modification, and personalization.
+* Multiple editors per page.
+* Django Admin support.
+
+.. image:: https://github.com/adi-/django-markdownx/raw/master/django-markdownx-preview.gif?raw=true
+ :target: https://github.com/adi-/django-markdownx
+ :align: center
+ :alt: django-markdownx preview
+"""
+
+# ~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=
+# Imports
+# ~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-
+# None
+
+# ~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=
+# Documentations
+# ~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-
+__author__ = 'Adi'
+__description__ = 'A comprehensive Markdown editor built for Django.'
+__credits__ = 'Adi, Pouria Hadjibagheri'
+__copyright__ = 'Copyright 2017'
+__license__ = 'BSD'
+__maintainer__ = 'Adi, Pouria Hadjibagheri'
+__version__ = '1.8.1'
+# ~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-
+
+
+if __name__ == '__main__':
+ raise RuntimeError(
+ 'MarkdownX is a Django plugin. It is not meant to be run an stand-alone module.'
+ )
diff --git a/setup.py b/setup.py
index e26a843..0485472 100755
--- a/setup.py
+++ b/setup.py
@@ -1,49 +1,95 @@
-from setuptools import setup, find_packages
+"""
+Automatic setup protocols.
+
+Django MarkdownX may be installed directly using Python Package Index (PyPi); however, should you wish to download and
+install it using the source code, you can do as follows:
+
+**Note**: Make sure you have activated your virtual environment if you're using one.
+
+* We start off by downloading the source code from GitHub:
+.. code:: bash
+ https://github.com/adi-/django-markdownx.git
+
+* navigate to the downloaded directory:
+.. code:: bash
+ cd django-markdownx/
+
+* Install the package. You can replace `python3` with `python` or any other supported version of Python (2.7, 3.4+) if
+you have multiple versions installed on your machine:
+.. code:: bash
+ python3 setup.py install
+"""
+
+from setuptools import setup, find_packages
+from os import environ, link
+from os.path import join, dirname
+from re import compile as re_compile
+
+
+if 'vagrant' in str(environ):
+ del link
+
+
+def get_meta():
+ values = {
+ 'author',
+ 'description',
+ 'credits',
+ 'copyright',
+ 'license',
+ 'maintainer',
+ 'version'
+ }
+
+ # Constructing the parsing pattern for metadata:
+ template = str.join('|', values)
+ pattern = re_compile(
+ r"^_{{2}}"
+ r"(?P({}))"
+ r"_{{2}}.+[\'\"]"
+ r"(?P(.+))"
+ r"[\'\"][.\n]?$".format(template)
+ )
+
+ meta = dict()
+
+ # Parsing metadata from `./markdownx/__init__.py`:
+ path = join(dirname(__file__), 'markdownx', '__init__.py')
+ with open(path, 'r') as data:
+ for line in data:
+ if not line.startswith('__'):
+ continue
+ found = pattern.search(line)
+ if found is not None:
+ meta[found.group('name')] = found.group('value')
+
+ return meta
-import os
-if 'vagrant' in str(os.environ):
- del os.link
def get_requirements():
- return open('requirements.txt').read().splitlines()
+ with open('requirements.txt') as requirements:
+ req = requirements.read().splitlines()
+ return req
+
+
+metadata = get_meta()
setup(
name='django-markdownx',
- version='1.8.1',
+ version=metadata.get('version'),
packages=find_packages(),
+ author=metadata.get('author'),
+ maintainer=metadata.get('maintainer'),
include_package_data=True,
- description='django-markdownx is a Markdown editor built for Django.',
- long_description='''https://github.com/adi-/django-markdownx/
-
-Key features
-------------
-
-* raw editing
-* live preview
-* drag&drop image uploads (stored locally in `MEDIA` folder)
-* customizable image insertion tag
-* image filtering using content types and max file size
-* image manipulations (compression, size, cropping, upscaling)
-* pre-&post- text altering
-* easy template customization for layout purposes
-* multiple editors on one page
-* Django Admin support
-
-Preview
--------
-
-.. image:: https://github.com/adi-/django-markdownx/raw/master/django-markdownx-preview.gif?raw=true
- :target: https://github.com/adi-/django-markdownx
- :alt: django-markdownx preview
-
-*(using Bootstrap for layout and styling)*
-''',
+ description=metadata.get('description'),
+ long_description=metadata.get('doc'),
url='https://github.com/adi-/django-markdownx',
- license='BSD',
+ license=metadata.get('license'),
classifiers=[
'Development Status :: 5 - Production/Stable',
'Environment :: Web Environment',
+ 'Environment :: Plugins',
'Framework :: Django',
'Framework :: Django :: 1.8',
'Framework :: Django :: 1.9',
@@ -57,9 +103,18 @@ Preview
'Programming Language :: Python :: 3.4',
'Programming Language :: Python :: 3.5',
'Programming Language :: Python :: 3.6',
+ 'Programming Language :: JavaScript',
'Topic :: Software Development :: Libraries :: Python Modules',
+ 'Topic :: Multimedia :: Graphics',
+ 'Topic :: Text Processing :: Markup',
+ 'Topic :: Text Editors :: Text Processing',
+ 'Topic :: Text Editors :: Word Processors',
+ 'Topic :: Text Processing :: Markup :: HTML',
+ 'Topic :: Multimedia :: Graphics :: Presentation',
+ 'Topic :: Internet :: WWW/HTTP',
+ 'Topic :: Internet :: WWW/HTTP :: Site Management'
],
- keywords='django markdown markdownx django-markdownx editor image upload drag&drop',
+ keywords='django markdown markdownx django-markdownx editor image upload drag&drop ajax',
tests_require=get_requirements(),
test_suite='runtests',
install_requires=get_requirements(),