summaryrefslogtreecommitdiff
path: root/creole/setup_utils.py
diff options
context:
space:
mode:
Diffstat (limited to 'creole/setup_utils.py')
-rw-r--r--creole/setup_utils.py149
1 files changed, 71 insertions, 78 deletions
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