pyWebLP: In Python, Yet Another Literate Programming Tool
Literate programming is an attempt to reconcile the opposing needs of clear presentation to people with the technical issues of creating code that will work with our current set of tools.
Presentation to people requires extensive and sophisticated typesetting techniques. Further, the “narrative arc” of a presentation may not follow the source code as layed out for the compiler.
py-web-tool is a literate programming tool based on Knuth’s Web to combine the actions of weaving a document with tangling source files. It is independent of any particular document markup or source language. Is uses a simple set of markup tags to define chunks of code and documentation.
The pyweb.w file is the source for the various pyweb module and script files. The various source code files are created by applying a tangle operation to the .w file. The final documentation is created by applying a weave operation to the .w file.
Installation
This requires Python 3.10.
python -m pip install py-web-lp
This will install the pyweb module and all of its dependencies.
Produce Documentation
The supplied documentation uses RST markup; it requires docutils.
python3 -m pip install docutils
python3 -m pyweb src/pyweb.w -o src rst2html.py src/pyweb.rst src/pyweb.html
Operation
After installation and authoring, you can then run py-web-lp with the following command
python3 -m pyweb src/pyweb.w -o src
This will create the various output files from the source .w file.
pyweb.rst is the final woven document. This can be run through docutils for publication.
pyweb.py, tangle.py, weave.py are the tangled code files.
All of the files are produced from a single source.
Testing
The tests directory includes pyweb_test.w, which will create a complete test suite. You can create this with the following command
python3 -m pyweb tests/pyweb_test.w -o tests
This weaves a tests/pyweb_test.rst file. This can be run through docutils for publication.
This tangles several test modules: test.py, test_tangler.py, test_weaver.py, test_loader.py, test_unit.py, and test_scripts.py.
Use pytest to run all the tests.
Here’s a typical sequence, used during development:
python3 bootstrap/pyweb.py -xw src/pyweb.w -o src
python3 src/pyweb.py tests/pyweb_test.w -o tests
PYTHONPATH=${PWD}/src pytest
rst2html.py tests/pyweb_test.rst tests/pyweb_test.html
mypy --strict src
Note that a previous release, untouched, is saved in the project’s bootstrap directory. This is not changed during development, since py-web-lp is written with py-web-lp.
Metadata
Release files for py-web-lp 3.2.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| py-web-lp-3.2.1.tar.gz | 206.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| py_web_lp-3.2.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 226.8 kB
Release files / py-web-lp-3.2.1.tar.gz
| Download URL | py-web-lp-3.2.1.tar.gz |
|---|---|
| Size | 206.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
e96e5b3b6850d6374444e77a676e95138584886cb2a3a37517af12fdf655404f
|
|
BLAKE2b-256 checksum How to use checksums |
1399393bb9e6c1c63723d23991c0458031610151aa899dd0ad119776d86eefb4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.2 CPython/3.10.4
|
Release files / py_web_lp-3.2.1-py3-none-any.whl
| Download URL | py_web_lp-3.2.1-py3-none-any.whl |
|---|---|
| Size | 20.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
16442e26c03e9f7b524059f065693fec9f849f0b5faa3292683b39ff6c4f4646
|
|
BLAKE2b-256 checksum How to use checksums |
78d75595c23430c965a9a53b6919dce76dcf87bdd289862dcae15ceb9d7333a2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.2 CPython/3.10.4
|