Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
P
pystache_custom
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
OpenEdx
pystache_custom
Commits
a11cded3
Commit
a11cded3
authored
May 22, 2012
by
Chris Jerdonek
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Address issue #121: improve the 2to3 conversion experience.
parent
05afa526
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
71 additions
and
23 deletions
+71
-23
README.md
+32
-8
setup.py
+39
-15
No files found.
README.md
View file @
a11cded3
...
@@ -40,6 +40,11 @@ Pystache is tested with--
...
@@ -40,6 +40,11 @@ Pystache is tested with--
-
Python 3.1
-
Python 3.1
-
Python 3.2
-
Python 3.2
[
Distribute
](
http://packages.python.org/distribute/
)
(
the
setuptools fork)
is recommended over setuptools, and is required in some cases (e.g. for
Python 3 support). If you use
[
pip
](
http://www.pip-installer.org/
)
,
you probably already satisfy this requirement.
JSON support is needed only for the command-line interface and to run
JSON support is needed only for the command-line interface and to run
the spec tests. We require simplejson for earlier versions of Python
the spec tests. We require simplejson for earlier versions of Python
since Python's
[
json
](
http://docs.python.org/library/json.html
)
module
since Python's
[
json
](
http://docs.python.org/library/json.html
)
module
...
@@ -202,18 +207,37 @@ To run a subset of the tests, you can use
...
@@ -202,18 +207,37 @@ To run a subset of the tests, you can use
pip install nose
pip install nose
nosetests --tests pystache/tests/test_context.py:GetValueTests.test_dictionary__key_present
nosetests --tests pystache/tests/test_context.py:GetValueTests.test_dictionary__key_present
**Running Pystache from source with Python 3.**
Pystache is written in
### Using Python 3 with Pystache from source
Python 2 and must be converted with
[
2to3
](
http://docs.python.org/library/2to3.html
)
prior to running under
Pystache is written in Python 2 and must be converted to Python 3 prior to
Python 3. The installation process (and tox) do this conversion
running under Python 3. The installation process (and tox) do this
automatically.
automatically.
To convert the source code to Python 3 (while using Python 3)--
python setup.py build
And while using Python 2--
python setup.py --force2to3 build
These commands write the converted code to a subdirectory called
`build`
.
To do this manually (without using setup.py), you can use
[
2to3
](
http://docs.python.org/library/2to3.html
)
in two steps--
2to3 --write --nobackups --no-diffs --doctests_only pystache
2to3 --write --nobackups --no-diffs pystache
This converts the code in-place.
To
`import pystache`
from a source distribution while using Python 3, be
To
`import pystache`
from a source distribution while using Python 3, be
sure that you are importing from a directory containing a converted
sure that you are importing from a directory containing a converted
version (e.g. from your site-packages directory after manually
version (e.g. from the
`build`
directory after converting), and not from
installing) and not from the original source directory. Otherwise, you
the unconverted source directory. Otherwise, you will get a syntax error.
will get a syntax error. You can help ensure this by not running the
You can help ensure this by not running the Python IDE from the project
Python IDE from the project directory when importing Pystache.
directory when importing Pystache.
Mailing List
Mailing List
------------
------------
...
...
setup.py
View file @
a11cded3
...
@@ -73,6 +73,8 @@ import shutil
...
@@ -73,6 +73,8 @@ import shutil
import
sys
import
sys
OPTION_FORCE_2TO3
=
'--force2to3'
py_version
=
sys
.
version_info
py_version
=
sys
.
version_info
# distutils does not seem to support the following setup() arguments.
# distutils does not seem to support the following setup() arguments.
...
@@ -247,20 +249,6 @@ def convert_md_to_rst(path):
...
@@ -247,20 +249,6 @@ def convert_md_to_rst(path):
return
temp_path
return
temp_path
# We follow the guidance here for compatibility with using setuptools instead
# of Distribute under Python 2 (on the subject of new, unrecognized keyword
# arguments to setup()):
#
# http://packages.python.org/distribute/python3.html#note-on-compatibility-with-setuptools
#
if
py_version
<
(
3
,
):
extra
=
{}
else
:
extra
=
{
# Causes 2to3 to be run during the build step.
'use_2to3'
:
True
,
}
# We use the package simplejson for older Python versions since Python
# We use the package simplejson for older Python versions since Python
# does not contain the module json before 2.6:
# does not contain the module json before 2.6:
#
#
...
@@ -291,12 +279,47 @@ PACKAGES = [
...
@@ -291,12 +279,47 @@ PACKAGES = [
]
]
def
parse_args
(
sys_argv
):
"""
Modify sys_argv in place and return whether to force use of 2to3.
"""
should_force2to3
=
False
if
len
(
sys_argv
)
>
1
and
sys_argv
[
1
]
==
OPTION_FORCE_2TO3
:
sys_argv
.
pop
(
1
)
should_force2to3
=
True
return
should_force2to3
# The purpose of this function is to follow the guidance suggested here:
#
# http://packages.python.org/distribute/python3.html#note-on-compatibility-with-setuptools
#
# The guidance is for better compatibility when using setuptools (e.g. with
# earlier versions of Python 2) instead of Distribute, because of new
# keyword arguments to setup() that setuptools may not recognize.
def
get_extra_args
(
should_force2to3
):
"""
Return a dictionary of extra args to pass to setup().
"""
extra
=
{}
if
py_version
>=
(
3
,
)
or
should_force2to3
:
# Causes 2to3 to be run during the build step.
extra
[
'use_2to3'
]
=
True
return
extra
def
main
(
sys_argv
):
def
main
(
sys_argv
):
# TODO: use the logging module instead of printing.
# TODO: use the logging module instead of printing.
# TODO: include the following in a verbose mode.
# TODO: include the following in a verbose mode.
print
(
"pystache: using: version
%
s of
%
s"
%
(
repr
(
dist
.
__version__
),
repr
(
dist
)))
print
(
"pystache: using: version
%
s of
%
s"
%
(
repr
(
dist
.
__version__
),
repr
(
dist
)))
should_force2to3
=
parse_args
(
sys_argv
)
command
=
sys_argv
[
-
1
]
command
=
sys_argv
[
-
1
]
if
command
==
'publish'
:
if
command
==
'publish'
:
...
@@ -308,6 +331,7 @@ def main(sys_argv):
...
@@ -308,6 +331,7 @@ def main(sys_argv):
long_description
=
read
(
DESCRIPTION_PATH
)
long_description
=
read
(
DESCRIPTION_PATH
)
template_files
=
[
'*.mustache'
,
'*.txt'
]
template_files
=
[
'*.mustache'
,
'*.txt'
]
extra_args
=
get_extra_args
(
should_force2to3
)
setup
(
name
=
'pystache'
,
setup
(
name
=
'pystache'
,
version
=
VERSION
,
version
=
VERSION
,
...
@@ -334,7 +358,7 @@ def main(sys_argv):
...
@@ -334,7 +358,7 @@ def main(sys_argv):
],
],
},
},
classifiers
=
CLASSIFIERS
,
classifiers
=
CLASSIFIERS
,
**
extra
**
extra
_args
)
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment