skip to navigation
skip to content

python-creole 1.0.7

python-creole is an open-source (GPL) markup converter in pure Python for: creole2html, html2creole, html2ReSt, html2textile

Latest Version: 1.3.2


python-creole is a OpenSource (GPL) Python lib for converting markups. python-creole is pure python. No external libs needed. It’s compatible with Python v2.6-v3.2 and PyPy.

Existing converters:

  • creole -> html
  • html -> creole markup
  • reSt -> html (for clean html code)
  • html -> reStructuredText markup (only a subset of reSt supported)
  • html -> textile markup (not completed yet)

The creole2html part based on the creole markup parser and emitter from the MoinMoin project by Radomir Dopieralski and Thomas Waldmann.


Python packages available on:

~$ pip install python-creole


For the most parts (creole2html and html2creole) no external libraries are needed.

For all functionality (and running the unittests) these modules are needed:

  • docutils (for the ReStructuredText stuff)
  • textile (for html2textile tests)



Convert creole markup to html code:

>>> from creole import creole2html
>>> creole2html("This is **creole //markup//**")
u'<p>This is <strong>creole <i>markup</i></strong></p>\n'


Convert html code back into creole markup:

>>> from creole import html2creole
>>> html2creole(u'<p>This is <strong>creole <i>markup</i></strong></p>\n')
u'This is **creole //markup//**'


Convert ReStructuredText into clean html code (needs docutils):

>>> from creole.rest2html.clean_writer import rest2html
>>> rest2html(u"A ReSt link to `PyLucid CMS <>`_ :)")
u'<p>A ReSt link to <a href="">PyLucid CMS</a> :)</p>\\n'

(more information: rest2html wiki page)


Convert html code into ReStructuredText markup:

>>> from creole import html2rest
>>> html2rest(u'<p>This is <strong>ReStructuredText</strong> <em>markup</em>!</p>')
u'This is **ReStructuredText** *markup*!'


Convert html code into textile markup

>>> from creole import html2textile
>>> html2textile(u'<p>This is <strong>textile <i>markup</i></strong>!</p>')
u'This is *textile __markup__*!'

See also:


We store documentation/exmplate into the project wiki:

How to handle unknown html tags in html2creole:

Contributers should take a look at this page:

run unittests

From source package, use to run unittests (Works without install python-creole):

.../path/to/python-creole$ python test

If you have installed python-creole do this to run unittests:

~$ cd /path/to/site-packages
...path/to/site-packages/$ cd
...path/to/site-packages/python_creole-0.9.0.pre-py2.7.egg$ cd /creole/tests
...path/to/site-packages/python_creole-0.9.0.pre-py2.7.egg/creole/tests$ python


  • You can pass the arguments --verbose or --quite to and
  • If you get a error like ImportError: ... No module named creole, then python-creole is not installed successfully, because it’s not found in Python sys.path

You can also run tests inside interactive python:

>>> from creole.tests import run_unittests
>>> run_unittests()
Ran 126 tests in 0.966s

>>> from creole.tests.all_tests import run_all_doctests
>>> run_all_doctests()
Ran 21 DocTests from 49 files in 0.368s: failed=0, attempted=88

or do this:

~$ python -c "from creole.tests import run_unittests;run_unittests()"
Ran 126 tests in 0.917s

~$ python -c "from creole.tests.all_tests import run_all_doctests;run_all_doctests()"
Ran 21 DocTests from 49 files in 0.368s: failed=0, attempted=88

We using Shining Panda and Travis CI for running unittests automaticly on GIT changes, see:

Use creole in README

With python-creole you can convert a README on-the-fly from creole into ReStructuredText in How to do this, read:

Note: In this case you must install docutils! See above.


  • v1.0.7 - 2013-08.07

    • Bugfix in ‘clean reStructuredText html writer’ if docutils => v0.11 used.
    • Bugfix for PyPy 2.1 usage
  • v1.0.6 - 2012-10-15

    • Security fix in rest2html: Disable “file_insertion_enabled” and “raw_enabled” as default.
  • v1.0.5 - 2012-09-03

    • made automatic protocol links more strict: Only whitespace before and at the end are allowed.
    • Bugfix: Don’t allow ftp:/broken (Only one slash) to be a link.
  • v1.0.4 - 2012-06-11

    • html2rest: Handle double link/image substitution and raise better error messages
    • Bugfix in unittests (include test README file in python package). Thanks to Wen Heping for reporting this.
  • v1.0.3 - 2012-06-11

    • Bugfix: AttributeError: 'module' object has no attribute 'interesting_cdata' from HTMLParser patch. Thanks to Wen Heping for reporting this.
    • Fix a bug in get_long_description() ReSt test for Py3k and his unittests.
    • Use Travis CI, too.
  • v1.0.2 - 2012-04-04

  • v1.0.1 - 2011-11-16

  • v1.0.0 - 2011-10-20

    • Change API: Replace ‘parser_kwargs’ and ‘emitter_kwargs’ with separate arguments. (More information on API Wiki Page)
  • v0.9.2

    • Turn zip_safe in on and change unittests API.
  • v0.9.1

    • Many Bugfixes, tested with CPython 2.6, 2.7, 3.2 and PyPy v1.6
  • v0.9.0

  • v0.8.5

    • Bugfix in html2creole: ignore links without href
  • v0.8.4

  • v0.8.3

  • v0.8.2

    • Bugfix in get_long_description() error handling (local variable ‘long_description_origin’ referenced before assignment)
  • v0.8.1

    • Bugfix for installation under python 2.5
    • Note: setup helper changed: rename GetLongDescription(...) to get_long_description(...)
  • v0.8

  • v0.7.3

    • Bugfix in html2rest:

      • table without <th> header
      • new line after table
      • create reference hyperlinks in table cells intead of embedded urls.
      • Don’t always use raise_unknown_node()
    • Add child content to raise_unknown_node()

  • v0.7.2

    • Activate ---- to <hr> in html2rest
    • Update
  • v0.7.1

    • Bugfix if docutils are not installed
    • API change: rest2html is now here: from creole.rest2html.clean_writer import rest2html
  • v0.7.0

    • NEW: Add a html2reStructuredText converter (only a subset of reSt supported)
  • v0.6.1

    • Bugfix: separate lines with one space in “wiki style line breaks” mode
  • v0.6

    • NEW: html2textile converter
    • some API changed!
  • v0.5

    • API changed:

      • Html2CreoleEmitter optional argument ‘unknown_emit’ takes now a callable for handle unknown html tags.
      • No macros used as default in creole2html converting.
      • We remove the support for callable macros. Only dict and modules are allowed.
    • remove unknown html tags is default behaviour in html2creole converting.

    • restructure and cleanup sourcecode files.

  • v0.4

    • only emit children of empty tags like div and span (contributed by Eric O’Connell)
    • remove inter wiki links and doesn’t check the protocol
  • v0.3.3

    • Use <tt> when {{{ … }}} is inline and not <pre>, see: PyLucid Forum Thread
    • Bugfix in html2creole: insert newline before new list. TODO: apply to all block tags: issues 16
  • v0.3.2

    • Bugfix for spaces after Headline: issues 15
  • v0.3.1

    • Make argument ‘block_rules’ in Parser() optional
  • v0.3.0

    • creole2html() has the optional parameter ‘blog_line_breaks’ to switch from default blog to wiki line breaks
  • v0.2.8

    • bugfix in
  • v0.2.7

    • handle obsolete non-closed <br> tag
  • v0.2.6

    • bugfix in
    • Cleanup DocStrings
    • add unittests
  • v0.2.5

    • creole2html: Bugfix if “–”, “//” etc. stands alone, see also: issues 12
    • Note: bold, italic etc. can’t cross line any more.
  • v0.2.4

    • creole2html: ignore file extensions in image tag

  • v0.2.3

    • html2creole bugfix/enhanced: convert image tag without alt attribute:

      • see also: issues 6
      • Thanks Betz Stefan alias ‘encbladexp’
  • v0.2.2

    • html2creole bugfix: convert <a href="/url/">Search & Destroy</a>
  • v0.2.1

    • html2creole bugfixes in:

      • converting tables: ignore tbody tag and better handling p and a tags in td
      • converting named entity
  • v0.2

    • remove all django template tag stuff: issues 3
    • html code always escaped
  • v0.1.1

    • improve macros stuff, patch by Vitja Makarov: issues 2
  • v0.1.0


File Type Py Version Uploaded on Size
python-creole-1.0.7.tar.gz (md5) Source 2013-08-07 64KB