Skip to content

Commit

Permalink
Bundle Jinja2 2.8
Browse files Browse the repository at this point in the history
  • Loading branch information
matthewrmshin committed Oct 18, 2016
1 parent ddfa6d7 commit 1c99638
Show file tree
Hide file tree
Showing 42 changed files with 12,057 additions and 30 deletions.
1 change: 0 additions & 1 deletion .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,6 @@ install:
- sudo apt-get install build-essential
- sudo apt-get install at python-pip python-dev graphviz libgraphviz-dev python-gtk2-dev
heirloom-mailx
- pip install Jinja2
# Pygraphviz needs special treatment to avoid an error from "from . import release"
- pip install pygraphviz --install-option="--include-path=/usr/include/graphviz" --install-option="--library-path=/usr/lib/graphviz/"
- pip install pep8
Expand Down
2 changes: 1 addition & 1 deletion INSTALL.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ hosts.*
### External Software Packages.

Several external packages required on suite hosts are not needed on task hosts:
*Jinja2*, *graphviz*, and *pygraphviz*. These should only need to be installed
*graphviz*, and *pygraphviz*. These should only need to be installed
once, and then updated infrequently.

### Installing Cylc Releases
Expand Down
12 changes: 9 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -49,13 +49,19 @@ cylc. If not, see [GNU licenses](http://www.gnu.org/licenses/).
## Acknowledgement For Non-Cylc Work:
Licences for non-cylc work included in this distribution can be found in the
`licences/` directory.
* `lib/cherrypy`:
* `lib/cherrypy/`:
External software library released under a BSD license.
Minor modification to ignore an import warning.
See [cherrypy](http://www.cherrypy.org).
See [cherrypy](http://www.cherrypy.org/).
* `lib/isodatetime/`:
Unmodified external software library released under the LGPL license.
See [metomi/isodatetime](https://github.com/metomi/isodatetime).
See [metomi/isodatetime](https://github.com/metomi/isodatetime/).
* `lib/jinja2/`:
External software library released under a BSD license.
See [Jinja2](http://jinja.pocoo.org/).
* `lib/markupsafe/`:
External software library released under a BSD license, used by Jinja2.
See [MarkupSafe](http://www.pocoo.org/projects/markupsafe/).
* `lib/xdot.py`:
External software released under the LGPL license.
Modifications based on version 0.6. See
Expand Down
3 changes: 1 addition & 2 deletions bin/cylc-check-software
Original file line number Diff line number Diff line change
Expand Up @@ -77,8 +77,7 @@ fi

# Python packages
# sqlite3 is part of the standard library since Python 2.5
PKGS="Jinja2:jinja2 \
pygraphviz:pygraphviz \
PKGS="pygraphviz:pygraphviz \
pygtk:pygtk"

echo "Checking for Python packages:"
Expand Down
20 changes: 8 additions & 12 deletions doc/cug.tex
Original file line number Diff line number Diff line change
Expand Up @@ -396,9 +396,7 @@ \section{Required Software}
\end{myitemize}

The following packages are technically optional as you can construct
and run cylc suites without dependency graphing, the gcylc GUI, or
template processing {\em but this is not recommended, and without
Jinja2 you will not be able to run many of the example suites}:
and run cylc suites without dependency graphing and the gcylc GUI:

\begin{myitemize}
\item {\bf PyGTK}, a Python wrapper for the GTK+ GUI toolkit,
Expand All @@ -410,10 +408,6 @@ \section{Required Software}
interface to it.
\newline \url{http://www.graphviz.org}
\newline \url{http://pygraphviz.github.io/}
\item {\bf Jinja2}, a template processor for Python (latest tested:
2.6). Jinja2 allows use of general programming constructs in
suite definitions.
\newline \url{http://jinja.pocoo.org/docs}
\end{myitemize}

If you use a binary package manager to install graphviz you may also
Expand Down Expand Up @@ -451,6 +445,11 @@ \section{Required Software}
\newline \url{http://www.cherrypy.org/}
\newline \url{http://docs.python-requests.org/}

Cylc includes Jinja2 2.8, a full featured template engine for Python and its
dependency MarkupSafe 0.23, both BSD licensed.
\newline \url{http://jinja.pocoo.org/}
\newline \url{http://www.pocoo.org/projects/markupsafe/}

Finally, cylc makes heavy use of Python {\em ordered dictionary}
data structures. Significant speedup in parsing large suites can be had
by installing the
Expand Down Expand Up @@ -508,7 +507,7 @@ \section{Installation}

\subsection{Install The External Dependencies}

First install graphviz, Pygraphviz, Jinja2, \TeX, and ImageMagick
First install graphviz, Pygraphviz, \TeX, and ImageMagick
using the package manager on your system if possible; otherwise download
the packages manually and follow their native installation documentation.
On a modern Linux system, this is very easy. For example, to install
Expand All @@ -529,7 +528,6 @@ \subsection{Install The External Dependencies}
shell$ yum install ImageMagick

# Python packages:
shell$ easy_install Jinja2 # (2.6)
shell$ easy_install pygraphviz

# (sqlite 3.7.13 already installed on the system)
Expand All @@ -549,7 +547,6 @@ \subsection{Install The External Dependencies}
+ Graphviz ... ok
+ sqlite ... ok
Checking for Python packages:
+ Jinja2 ... ok
+ pygraphviz ... ok
+ pygtk ... ok
\end{lstlisting}
Expand Down Expand Up @@ -657,7 +654,6 @@ \subsubsection{Some Guidelines}
+ Graphviz ... ok
+ sqlite ... ok
Checking for Python packages:
+ Jinja2 ... ok
+ pygraphviz ... ok
+ pygtk ... ok
\end{lstlisting}
Expand Down Expand Up @@ -1387,7 +1383,7 @@ \subsection{Remote Tasks}
is used.

\item Cylc must be installed on the task host. Other software dependencies like
graphviz and Jinja2 are not required there.
graphviz are not required there.

\item Any files needed by a remote task must be installed on the task
host. In this example there is nothing to install because the
Expand Down
2 changes: 2 additions & 0 deletions lib/cherrypy/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,8 @@
import warnings

warnings.filterwarnings('ignore', 'Module cherrypy was already imported')
warnings.filterwarnings('ignore', 'Module jinja2 was already imported')
warnings.filterwarnings('ignore', 'Module markupsafe was already imported')
try:
import pkg_resources
except ImportError:
Expand Down
33 changes: 33 additions & 0 deletions lib/jinja2/AUTHORS
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
Jinja is written and maintained by the Jinja Team and various
contributors:

Lead Developer:

- Armin Ronacher <armin.ronacher@active-4.com>

Developers:

- Christoph Hack
- Georg Brandl

Contributors:

- Bryan McLemore
- Mickaël Guérin <kael@crocobox.org>
- Cameron Knight
- Lawrence Journal-World.
- David Cramer

Patches and suggestions:

- Ronny Pfannschmidt
- Axel Böhm
- Alexey Melchakov
- Bryan McLemore
- Clovis Fabricio (nosklo)
- Cameron Knight
- Peter van Dijk (Habbie)
- Stefan Ebner
- Rene Leonhardt
- Thomas Waldmann
- Cory Benfield (Lukasa)
31 changes: 31 additions & 0 deletions lib/jinja2/LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
Copyright (c) 2009 by the Jinja Team, see AUTHORS for more details.

Some rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:

* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.

* Redistributions in binary form must reproduce the above
copyright notice, this list of conditions and the following
disclaimer in the documentation and/or other materials provided
with the distribution.

* The names of the contributors may not be used to endorse or
promote products derived from this software without specific
prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
70 changes: 70 additions & 0 deletions lib/jinja2/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
# -*- coding: utf-8 -*-
"""
jinja2
~~~~~~
Jinja2 is a template engine written in pure Python. It provides a
Django inspired non-XML syntax but supports inline expressions and
an optional sandboxed environment.
Nutshell
--------
Here a small example of a Jinja2 template::
{% extends 'base.html' %}
{% block title %}Memberlist{% endblock %}
{% block content %}
<ul>
{% for user in users %}
<li><a href="{{ user.url }}">{{ user.username }}</a></li>
{% endfor %}
</ul>
{% endblock %}
:copyright: (c) 2010 by the Jinja Team.
:license: BSD, see LICENSE for more details.
"""
__docformat__ = 'restructuredtext en'
__version__ = '2.8'

# high level interface
from jinja2.environment import Environment, Template

# loaders
from jinja2.loaders import BaseLoader, FileSystemLoader, PackageLoader, \
DictLoader, FunctionLoader, PrefixLoader, ChoiceLoader, \
ModuleLoader

# bytecode caches
from jinja2.bccache import BytecodeCache, FileSystemBytecodeCache, \
MemcachedBytecodeCache

# undefined types
from jinja2.runtime import Undefined, DebugUndefined, StrictUndefined, \
make_logging_undefined

# exceptions
from jinja2.exceptions import TemplateError, UndefinedError, \
TemplateNotFound, TemplatesNotFound, TemplateSyntaxError, \
TemplateAssertionError

# decorators and public utilities
from jinja2.filters import environmentfilter, contextfilter, \
evalcontextfilter
from jinja2.utils import Markup, escape, clear_caches, \
environmentfunction, evalcontextfunction, contextfunction, \
is_undefined

__all__ = [
'Environment', 'Template', 'BaseLoader', 'FileSystemLoader',
'PackageLoader', 'DictLoader', 'FunctionLoader', 'PrefixLoader',
'ChoiceLoader', 'BytecodeCache', 'FileSystemBytecodeCache',
'MemcachedBytecodeCache', 'Undefined', 'DebugUndefined',
'StrictUndefined', 'TemplateError', 'UndefinedError', 'TemplateNotFound',
'TemplatesNotFound', 'TemplateSyntaxError', 'TemplateAssertionError',
'ModuleLoader', 'environmentfilter', 'contextfilter', 'Markup', 'escape',
'environmentfunction', 'contextfunction', 'clear_caches', 'is_undefined',
'evalcontextfilter', 'evalcontextfunction', 'make_logging_undefined',
]
111 changes: 111 additions & 0 deletions lib/jinja2/_compat.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
# -*- coding: utf-8 -*-
"""
jinja2._compat
~~~~~~~~~~~~~~
Some py2/py3 compatibility support based on a stripped down
version of six so we don't have to depend on a specific version
of it.
:copyright: Copyright 2013 by the Jinja team, see AUTHORS.
:license: BSD, see LICENSE for details.
"""
import sys

PY2 = sys.version_info[0] == 2
PYPY = hasattr(sys, 'pypy_translation_info')
_identity = lambda x: x


if not PY2:
unichr = chr
range_type = range
text_type = str
string_types = (str,)
integer_types = (int,)

iterkeys = lambda d: iter(d.keys())
itervalues = lambda d: iter(d.values())
iteritems = lambda d: iter(d.items())

import pickle
from io import BytesIO, StringIO
NativeStringIO = StringIO

def reraise(tp, value, tb=None):
if value.__traceback__ is not tb:
raise value.with_traceback(tb)
raise value

ifilter = filter
imap = map
izip = zip
intern = sys.intern

implements_iterator = _identity
implements_to_string = _identity
encode_filename = _identity
get_next = lambda x: x.__next__

else:
unichr = unichr
text_type = unicode
range_type = xrange
string_types = (str, unicode)
integer_types = (int, long)

iterkeys = lambda d: d.iterkeys()
itervalues = lambda d: d.itervalues()
iteritems = lambda d: d.iteritems()

import cPickle as pickle
from cStringIO import StringIO as BytesIO, StringIO
NativeStringIO = BytesIO

exec('def reraise(tp, value, tb=None):\n raise tp, value, tb')

from itertools import imap, izip, ifilter
intern = intern

def implements_iterator(cls):
cls.next = cls.__next__
del cls.__next__
return cls

def implements_to_string(cls):
cls.__unicode__ = cls.__str__
cls.__str__ = lambda x: x.__unicode__().encode('utf-8')
return cls

get_next = lambda x: x.next

def encode_filename(filename):
if isinstance(filename, unicode):
return filename.encode('utf-8')
return filename


def with_metaclass(meta, *bases):
# This requires a bit of explanation: the basic idea is to make a
# dummy metaclass for one level of class instanciation that replaces
# itself with the actual metaclass. Because of internal type checks
# we also need to make sure that we downgrade the custom metaclass
# for one level to something closer to type (that's why __call__ and
# __init__ comes back from type etc.).
#
# This has the advantage over six.with_metaclass in that it does not
# introduce dummy classes into the final MRO.
class metaclass(meta):
__call__ = type.__call__
__init__ = type.__init__
def __new__(cls, name, this_bases, d):
if this_bases is None:
return type.__new__(cls, name, (), d)
return meta(name, bases, d)
return metaclass('temporary_class', None, {})


try:
from urllib.parse import quote_from_bytes as url_quote
except ImportError:
from urllib import quote as url_quote
Loading

0 comments on commit 1c99638

Please sign in to comment.