Skip to main content

Transcrypt is a tool to precompile a fairly extensive subset of Python into compact, readable Javascript. It has the following characteristics:

  • Allows for classical OO programming with multiple inheritance using pure Python syntax, parsed by CPython’s native parser

  • Seamless integration with the universe of high-quality web-oriented JavaScript libraries, rather than the desktop-oriented Python ones

  • Hierarchical URL based module system to prevent name conflicts

  • Simple relation between Python source and generated JavaScript code for easy debugging

  • Multi-level sourcemaps and optional annotation of target code with source references

  • Compact downloads, kB’s rather than MB’s

  • Lightning fast JavaScript code, using memoization (call caching) to optionally bypass the prototype lookup chain

  • Operator overloading can be switched on and off locally to facilitate use for numerical math that’s both readable and efficient

Logo

Transcription once used to be manual labour

Documentation with code examples

Take a look at the documentation with code examples at the Transcrypt website: http://www.transcrypt.org .

Status of latest release

Release: Athens (PyPi v3.5.222, GitHub #9)

This release contains:

  • Improved support for the new, redesigned core of Numscrypt. While Numscrypt is still in its infancy, its scope has been widened from merely educational to general use for computations in the browser. A number of optimizations have been put in place, resulting in performance comparable to pure JS numerical libraries. The difference is that Transcrypt (or rather Python), with its facilities for operator overloading, allows a much more concise and readable notation of numerical algorithms. Plans are to gradually build out Numscrypt with more functionality.

  • Optional static type validation (experimental) using type annotations. Static type validation is activated simply by a command switch. Internally it relies on the mypy project. While this project is still in flux, the resulting productivity improvement is already impressive. Since static type validation is optional and cannot break your code, you can get 90% of the benefits from it rightnow without risk. Even only statically typing the interfaces between modules immediately pays off, especially when working with a team. Don’t believe it, try it!

  • Diverse bug fixes.

Thanks to everyone who contributed!

Jacques de Hooge

What’s new in the latest commits

  • Release 9

  • Truthyness of instances of custom classes fixed (see issue #110)

  • Source map generation bug fixed (see issue #104)

  • Optional static type validation using mypy (experimental)

  • Small doc improvements

  • Some more fixes for Numscrypt

  • Fix to enable Numscrypt development

  • *args now also can be used in calling pure javascript methods (see issue #102)

  • Pragma’s else and elif fixed for use in .py rather than .js files

Known restrictions

  • Only a very limited selection of standard libs have been chosen for inclusion in the Transcrypt distribution. Use or encapsulate the JavaScript ones, that’s part of the concept. Some additional standard libs may be ported in the future though.

  • A few methods of builtin types are currently left out, especially when they (almost) duplicate functionality of other methods. Also method decorators (as opposed to function decorators and class decorators) are not supported, with the exception of @classmethod. This results from a deliberate choice to keep Transcrypt lean and simple.

  • No eval and exec of Python code. This is again part of the concept. Transcrypt code is compiled, optimized and minified in advance to warant fast page loads. In this respect its design goal is fundamentally different from tools that compile on the fly in the browser. Transcrypt is targeted towards building professional, extensive, real world web applications that load and run as fast as their JavaScript counterparts, but offers Pythonically clean, modular structure and maintainability.

  • No threading of any kind. Will probably stay that way as long as JavaScript doesn’t properly support that.

Known bugs

None

Readability

As can be seen below, there’s a simple parallel between the Python and the JavaScript code. So it should be easy to debug. Also, code can be tested from the command prompt using stubs.

Screenshot of Python versus JavaScript code

Classic OO with multiple inheritance in JavaScript

Other packages you might like

Licence

Copyright 2014, 2015, 2016 Jacques de Hooge, GEATEC engineering, www.geatec.com

Licensed under the Apache License, Version 2.0 (the “License”); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an “AS IS” BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Metadata

Release files for Transcrypt 3.5.222

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for Transcrypt 3.5.222
File Size Uploaded
Transcrypt-3.5.222.zip 14.2 MB Details

Release files / Transcrypt-3.5.222.zip

Download URL Transcrypt-3.5.222.zip
Size 14.2 MB
Tags Source
SHA-256 checksum
How to use checksums
2b99695fc23dcb2c300a05b60e7ed44d07338660aa9b875df98eb7c55ed32d9c
BLAKE2b-256 checksum
How to use checksums
a323cc30bdf908a5a5cfbae70dec97a6125b078a884e9f49b69ccf29d34e1770
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

3.9.5

2 release files

3.9.4

2 release files

3.9.3

2 release files

3.9.2

2 release files

3.9.1

2 release files

3.9.0

2 release files

3.7.16

1 release file

3.7.15

1 release file

3.7.14

1 release file

3.7.13

1 release file

3.7.12

1 release file

3.7.11

1 release file

3.7.10

1 release file

3.7.9

1 release file

3.7.8

1 release file

3.7.6

1 release file

3.7.5

1 release file

3.7.4

1 release file

3.7.3

1 release file

3.7.2

1 release file

3.7.1

1 release file

3.6.101

1 release file

3.6.100

1 release file

3.6.98

1 release file

3.6.97

1 release file

3.6.96

1 release file

3.6.95

1 release file

3.6.94

1 release file

3.6.93

1 release file

3.6.92

1 release file

3.6.91

1 release file

3.6.90

1 release file

3.6.89

1 release file

3.6.88

1 release file

3.6.87

1 release file

3.6.86

1 release file

3.6.85

1 release file

3.6.84

1 release file

3.6.83

1 release file

3.6.82

1 release file

3.6.80

1 release file

3.6.70

1 release file

3.6.69

1 release file

3.6.68

1 release file

3.6.67

1 release file

3.6.66

1 release file

3.6.65

1 release file

3.6.64

1 release file

3.6.63

1 release file

3.6.62

1 release file

3.6.61

1 release file

3.6.60

1 release file

3.6.59

1 release file

3.6.58

1 release file

3.6.57

1 release file

3.6.56

1 release file

3.6.55

1 release file

3.6.54

1 release file

3.6.53

1 release file

3.6.52

1 release file

3.6.51

1 release file

3.6.50

1 release file

3.6.49

1 release file

3.6.47

1 release file

3.6.46

1 release file

3.6.45

1 release file

3.6.44

1 release file

3.6.43

1 release file

3.6.42

1 release file

3.6.41

1 release file

3.6.40

1 release file

3.6.39

1 release file

3.6.38

1 release file

3.6.37

1 release file

3.6.36

1 release file

3.6.35

1 release file

3.6.34

1 release file

3.6.33

1 release file

3.6.32

1 release file

3.6.31

1 release file

3.6.30

1 release file

3.6.29

1 release file

3.6.28

1 release file

3.6.27

1 release file

3.6.26

1 release file

3.6.25

1 release file

3.6.24

1 release file

3.6.22

1 release file

3.6.21

1 release file

3.6.20

1 release file

3.6.19

1 release file

3.6.18

1 release file

3.6.17

1 release file

3.6.16

1 release file

3.6.15

1 release file

3.6.14

1 release file

3.6.13

1 release file

3.6.12

1 release file

3.6.11

1 release file

3.6.10

1 release file

3.6.9

1 release file

3.6.8

1 release file

3.6.7

1 release file

3.6.6

1 release file

3.6.5

1 release file

3.6.4

1 release file

3.6.3

1 release file

3.6.1

1 release file

3.6.0

1 release file

3.5.238

1 release file

3.5.234

1 release file

3.5.233

1 release file

3.5.232

1 release file

3.5.231

1 release file

3.5.227

1 release file

3.5.226

1 release file

3.5.225

1 release file

3.5.224

1 release file

3.5.223

1 release file

This release

3.5.222 This release

1 release file

3.5.221

1 release file

3.5.217

1 release file

3.5.216

1 release file

3.5.215

1 release file

3.5.213

1 release file

3.5.202

1 release file

3.5.201

1 release file

3.5.200

1 release file

3.5.199

1 release file

3.5.198

1 release file

3.5.197

1 release file

3.5.194

1 release file

3.5.193

1 release file

3.5.192

1 release file

3.5.191

1 release file

3.5.189

1 release file

3.5.188

1 release file

3.5.187

1 release file

3.5.186

1 release file

3.5.185

1 release file

3.5.184

1 release file

3.5.183

1 release file

3.5.182

1 release file

3.5.181

1 release file

3.5.178

1 release file

3.5.177

1 release file

3.5.176

1 release file

3.5.175

1 release file

3.5.174

1 release file

3.5.173

1 release file

3.5.172

1 release file

3.5.171

1 release file

3.5.170

1 release file

3.5.165

1 release file

3.5.164

1 release file

3.5.162

1 release file

3.5.161

1 release file

3.5.160

1 release file

3.5.159

1 release file

3.5.158

1 release file

3.5.157

1 release file

3.5.156

1 release file

3.5.155

1 release file

3.5.151

1 release file

3.5.150

1 release file

3.5.149

1 release file

3.5.148

1 release file

3.5.146

1 release file

3.5.145

1 release file

3.5.144

1 release file

3.5.143

1 release file

3.5.140

1 release file

3.5.139

1 release file

3.5.138

1 release file

3.5.137

1 release file

3.5.136

1 release file

3.5.135

1 release file

3.5.134

1 release file

3.5.133

1 release file

3.5.132

1 release file

3.5.131

1 release file

3.5.130

1 release file

3.5.129

1 release file

3.5.128

1 release file

3.5.127

1 release file

3.5.126

1 release file

3.5.125

1 release file

3.5.124

1 release file

3.5.123

1 release file

3.5.122

1 release file

3.5.120

1 release file

3.5.118

1 release file

3.5.117

1 release file

3.5.116

1 release file

3.5.115

1 release file

3.5.114

1 release file

3.5.113

1 release file

3.5.112

1 release file

3.5.104

3.5.103

3.5.102

3.5.97

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page