Differences between revisions 1 and 15 (spanning 14 versions)
Revision 1 as of 2016-05-11 20:51:44
Size: 148
Editor: SamatJain
Comment:
Revision 15 as of 2019-06-05 08:10:22
Size: 2919
Editor: SamatJain
Comment: Typing
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
## page was renamed from Python
<<TableOfContents>>

[[CodingStyle/Python]] is another relevant page.
Line 9: Line 14:
python-wheel
Line 12: Line 16:

== cffi and numpy ==

https://github.com/SimonSapin/azureblur/tree/master/azureblur: Example of using cffi to interact w/ a C++ class.

[[http://stackoverflow.com/questions/37881503/how-do-i-convert-a-numpy-nd-array-to-a-cffi-c-array-and-back-again|python - How do I convert a numpy ND-array to a CFFI C++ array and back again? - Stack Overflow]]

[[http://stackoverflow.com/questions/23056057/why-is-cffi-so-much-quicker-than-numpy/23058665#23058665|python - Why is cffi so much quicker than numpy? - Stack Overflow]]

== Neat Web frameworks ==

[[http://aspen.io|aspen.io]]. Filesystem-based dispatch library. Used by Liberapay.

== Neat packages ==

[[https://github.com/nvbn/py-backwards|nvbn/py-backwards]]: Python transcompiler. Lets you use Python 3.6 features in older versions, as old as Python 2.7.

[[https://github.com/asottile/future-fstrings|asottile/future-fstrings]]. Allows formatted string literals (AKA f-strings) in Python 2.7–3.5 by hacking built-in codecs.

[[https://github.com/crsmithdev/arrow/|arrow]] (relatively mature) and [[https://github.com/zachwill/moment|moment]], a port of Moment.js, are date-handling libraries with a better API than Python's stdlib.

== Compilers ==

[[http://nuitka.net/|Nuitka]]: Python native-code compiler, binary will still link to libpython.

== Typing ==

[[https://github.com/ambv/retype|ambv/retype]]: Re-applies type annotations from *.pyi stubs to a codebase.

For reference:

 * [[https://www.python.org/dev/peps/pep-0591/|PEP-591: Final and @final]]
 * [[https://www.python.org/dev/peps/pep-0589/|PEP-589: Typing for nested dictionaries]]

== Porting projects from Python 2 to Python 3 ==

=== Backports ===

==== subprocess ====

[[https://github.com/google/python-subprocess32|python-subprocess32]]: Backport of Python 3.2 `subprocess` module to 2.7. Use:

{{{#!highlight python numbers=off
if os.name == 'posix' and sys.version_info[0] < 3:
    import subprocess32 as subprocess
else:
    import subprocess
}}}

Can serve as a complete replacement for Python 2.7's `subprocess` module.

=== 2to3 libraries ===

 * [[http://python-future.org/|python-future]]
 * [[https://pythonhosted.org/six/|six]], along with [[https://python-modernize.readthedocs.io/|python-modernize]]

=== Guides ===

 * [[https://portingguide.readthedocs.io/en/latest/index.html|The Conservative Python 3 Porting Guide]]
 * [[https://docs.python.org/3/howto/pyporting.html|Porting Python 2 Code to Python 3]]

=== Notes ===

 * [[https://docs.python.org/3/howto/sorting.html#the-old-way-using-the-cmp-parameter|Sorting and using Python 3.2's funcutils.cmp_to_key()]]

CodingStyle/Python is another relevant page.

Development packages for Debian

Current for Ubuntu 16.04.

fabric
python-pip
python3-pip
python-wheel-common

cffi and numpy

https://github.com/SimonSapin/azureblur/tree/master/azureblur: Example of using cffi to interact w/ a C++ class.

python - How do I convert a numpy ND-array to a CFFI C++ array and back again? - Stack Overflow

python - Why is cffi so much quicker than numpy? - Stack Overflow

Neat Web frameworks

aspen.io. Filesystem-based dispatch library. Used by Liberapay.

Neat packages

nvbn/py-backwards: Python transcompiler. Lets you use Python 3.6 features in older versions, as old as Python 2.7.

asottile/future-fstrings. Allows formatted string literals (AKA f-strings) in Python 2.7–3.5 by hacking built-in codecs.

arrow (relatively mature) and moment, a port of Moment.js, are date-handling libraries with a better API than Python's stdlib.

Compilers

Nuitka: Python native-code compiler, binary will still link to libpython.

Typing

ambv/retype: Re-applies type annotations from *.pyi stubs to a codebase.

For reference:

Porting projects from Python 2 to Python 3

Backports

subprocess

python-subprocess32: Backport of Python 3.2 subprocess module to 2.7. Use:

if os.name == 'posix' and sys.version_info[0] < 3:
    import subprocess32 as subprocess
else:
    import subprocess

Can serve as a complete replacement for Python 2.7's subprocess module.

2to3 libraries

Guides

Notes

SamatsWiki: ProgrammingLanguages/Python (last edited 2021-04-09 17:46:53 by SamatJain)