summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJensDiemer <git@jensdiemer.de>2011-08-31 16:09:04 +0200
committerJensDiemer <git@jensdiemer.de>2011-08-31 16:09:04 +0200
commit7954bbdd5c189f6d6242fe6cc7074ffd1818bd3e (patch)
treebd70ee53b79821cd997614828aad92d791fb2566
parentcf1dec4629715821cf2135996daca9ec8124dc4d (diff)
downloadcreole-7954bbdd5c189f6d6242fe6cc7074ffd1818bd3e.tar.gz
turn the lazy class into a non-lazy function. It's better for compatibility.
-rw-r--r--README.creole1
-rw-r--r--creole/setup_utils.py149
-rwxr-xr-xsetup.py4
3 files changed, 74 insertions, 80 deletions
diff --git a/README.creole b/README.creole
index c057478..e9e43f5 100644
--- a/README.creole
+++ b/README.creole
@@ -98,6 +98,7 @@ How to do this, read: https://code.google.com/p/python-creole/wiki/UseInSetup
* v0.8.1
** Bugfix for installation under python 2.5
+** Note: [[https://code.google.com/p/python-creole/wiki/UseInSetup|setup helper]] changed: rename {{{GetLongDescription(...)}}} to {{{get_long_description(...)}}}
* v0.8
** New GetLongDescription() helper for setup.py, see: https://code.google.com/p/python-creole/wiki/UseInSetup
* v0.7.3
diff --git a/creole/setup_utils.py b/creole/setup_utils.py
index c881640..c4f29d0 100644
--- a/creole/setup_utils.py
+++ b/creole/setup_utils.py
@@ -21,7 +21,7 @@
PACKAGE_ROOT = os.path.dirname(os.path.abspath(__file__))
try:
- from creole.setup_utils import GetLongDescription
+ from creole.setup_utils import get_long_description
except ImportError:
if "register" in sys.argv or "sdist" in sys.argv or "--long-description" in sys.argv:
etype, evalue, etb = sys.exc_info()
@@ -29,7 +29,7 @@
raise etype, evalue, etb
long_description = None
else:
- long_description = GetLongDescription(PACKAGE_ROOT)
+ long_description = get_long_description(PACKAGE_ROOT)
setup(
...
@@ -45,93 +45,86 @@
import codecs
import os
import sys
+import warnings
from creole import creole2html, html2rest
+from creole.shared.unknown_tags import raise_unknown_node, transparent_unknown_nodes
-class GetLongDescription(object):
+RAISE_ERRORS_ARGS = (
+ "register", "sdist", "bdist", "upload", "--long-description",
+)
+
+
+def should_raise_errors():
"""
- Read and convert README.creole lazy to ReStructuredText.
+ Raise only errors, if one of RAISE_ERRORS_ARGS is in sys.argv
+ or if no argument presents.
"""
- RAISE_ERRORS_ARGS = ("register", "sdist", "--long-description")
-
- def __init__(self, package_root, filename="README.creole", raise_errors=None):
- self.package_root = package_root
- self.filename = filename
- self.raise_errors = raise_errors
-
- self.long_description_origin = ""
- self.long_description_html = None
- self.long_description_rest_unicode = None
- self.long_description_rest = None
-
- def should_raise_errors(self):
- """
- Raise only errors, if one of self.RAISE_ERRORS_ARGS is in sys.argv
- or if no argument presents.
- """
- if len(sys.argv) == 1:
+ if len(sys.argv) == 1:
+ return True
+
+ for arg in RAISE_ERRORS_ARGS:
+ if arg in sys.argv:
return True
+ return False
+
+
+def get_long_description(package_root, filename="README.creole", raise_errors=None):
+ """ read README file and convert it on-the-fly to ReStructuredText. """
+ if raise_errors is None:
+ raise_errors = should_raise_errors()
+
+ if raise_errors:
+ # raise a error if a unknown node found
+ unknown_emit = raise_unknown_node
+ else:
+ # ignore unknown nodes
+ unknown_emit = transparent_unknown_nodes
+
+ filepath = os.path.join(package_root, filename)
+ try:
+ # Read creole README
+ f = codecs.open(filepath, "r", encoding="utf-8")
+ long_description_origin = f.read().strip()
+ f.close()
+
+ # convert creole into html
+ long_description_html = creole2html(long_description_origin)
+
+ # convert html to ReSt
+ long_description_rest_unicode = html2rest(
+ long_description_html,
+ emitter_kwargs={"unknown_emit":unknown_emit}
+ )
+ long_description_rest = long_description_rest_unicode.encode("utf-8")
+ except Exception, err:
+ if raise_errors:
+ raise
+ # Don't raise the error e.g. in ./setup install process
+ long_description_rest = "[Error: %s]\n%s" % (
+ err, long_description_origin
+ )
+ else:
+ if raise_errors:
+ # Test created ReSt code
+ from creole.rest2html.clean_writer import rest2html
+ rest2html(long_description_rest_unicode)
+
+ return long_description_rest
- for arg in self.RAISE_ERRORS_ARGS:
- if arg in sys.argv:
- return True
- return False
-
- def read_long_description(self):
- """ read README file and convert it to ReStructuredText. """
- if self.raise_errors is None:
- self.raise_errors = self.should_raise_errors()
-
- if self.raise_errors:
- # raise a error if a unknown node found
- from creole.shared.unknown_tags import raise_unknown_node as unknown_emit
- else:
- # ignore unknown nodes
- from creole.shared.unknown_tags import transparent_unknown_nodes as unknown_emit
-
- filepath = os.path.join(self.package_root, self.filename)
- try:
- # Read creole README
- f = codecs.open(filepath, "r", encoding="utf-8")
- self.long_description_origin = f.read().strip()
- f.close()
-
- # convert creole into html
- self.long_description_html = creole2html(self.long_description_origin)
-
- # convert html to ReSt
- self.long_description_rest_unicode = html2rest(
- self.long_description_html,
- emitter_kwargs={"unknown_emit":unknown_emit}
- )
- self.long_description_rest = self.long_description_rest_unicode.encode("utf-8")
- except Exception, err:
- if self.raise_errors:
- raise
- # Don't raise the error e.g. in ./setup install process
- self.long_description_rest = "[Error: %s]\n%s" % (
- err, self.long_description_origin
- )
- else:
- if self.raise_errors:
- # Test created ReSt code
- from creole.rest2html.clean_writer import rest2html
- rest2html(self.long_description_rest_unicode)
-
- def __str__(self):
- if self.long_description_rest is None:
- self.read_long_description()
- return self.long_description_rest
-
- def __unicode__(self):
- if self.long_description_rest_unicode is None:
- self.read_long_description()
- return self.long_description_rest_unicode
+def _get_long_description(*args, **kwargs):
+ msg = "'GetLongDescription' is deprecated, use 'get_long_description' instead."
+ if should_raise_errors():
+ raise DeprecationWarning(msg)
+ else:
+ warnings.warn(msg, DeprecationWarning)
+ return get_long_description(*args, **kwargs)
+GetLongDescription = _get_long_description # for backward-compatibility
if __name__ == "__main__":
package_root = os.path.abspath("../")
- long_description = GetLongDescription(package_root)
+ long_description = get_long_description(package_root)
print long_description
diff --git a/setup.py b/setup.py
index 543159d..9f109c6 100755
--- a/setup.py
+++ b/setup.py
@@ -16,7 +16,7 @@ import sys
from setuptools import setup, find_packages
from creole import VERSION_STRING
-from creole.setup_utils import GetLongDescription
+from creole.setup_utils import get_long_description
PACKAGE_ROOT = os.path.dirname(os.path.abspath(__file__))
@@ -36,7 +36,7 @@ setup(
name='python-creole',
version=VERSION_STRING,
description='python-creole is an open-source (GPL) markup converter in pure Python for: creole2html, html2creole, html2ReSt, html2textile',
- long_description=str(GetLongDescription(PACKAGE_ROOT)),
+ long_description=str(get_long_description(PACKAGE_ROOT)),
author=get_authors(),
maintainer="Jens Diemer",
url='http://code.google.com/p/python-creole/',