Magazine
Let your code take comprehensive notes and publish notes and figures as a beautiful consolidated PDF document.
Idea
The magazine package helps you to create beautiful PDF reports of what has been done during the execution of your app.
- Your scripts or submodules can write topical reports in plain human-readable text, which could also include numerical results, data tables, figures, or citations.
- The collection of topics can be used to publish a glossy PDF document.
Example
from magazine import Magazine, Publish
E = 42
Magazine.report("Experiment", "The analysis found that energy equals {} Joule.", E)
Magazine.cite("10.1002/andp.19163540702")
with Publish("Report.pdf", "My physics report", info="Version 0.1") as M:
M.add_topic("Experiment")
M.add_references()
- View the resulting magazine in output/Report.pdf.
Instead of inline commands, you can also use a decorator to automatically write and format the content of the docstring section "Report" and its "References" section into the report.
@Magazine.reporting("Physics")
def Method_A(a, b, c=3):
"""
A complex method to calculate the sum of numbers.
Report
------
The method "{function}" used input parameters a={a}, b={b}, and c={c}.
Calculations have been performed following Einstein et al. (1935).
The result was: {return}. During the process, the magic number {magic} appeared.
References
----------
Einstein, A., Podolsky, B., & Rosen, N. (1935). Can Quantum-Mechanical Description of Physical Reality Be Considered Complete? Physical Review, 47(10), 777–780. https://doi.org/10.1103/physrev.47.777
"""
result = a + b + c
# Function "_report" is provided by the decorator to communicate more variables
magic = 42
return result
# When the function is called, it is automatically reported.
Method_A(2, 3, c=4)
Output in the PDF:
The method "Method_A" used input parameters (2, 3), and c=4. Calculations have been performed following Einstein et al. (1935). The result was: 9. During the process, the magic number 42 appeared.
Check also example.py and output/Magazine.pdf for more full examples.
Documentation
A documentation and API reference can be found on ReadTheDocs:
- Magazine (class)
- Publish (context manager)
- PDF commands (class)
Install
pip install magazine
If you are working with uv, use uv add magazine.
Requires:
- fpdf2
- habanero (optional, for academic citations)
- neatlogger (wrapper for loguru)
Acknowledgements
- Uses the Google font Roboto as it just looks great in PDFs.
Metadata
Release files for Magazine 0.4.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| magazine-0.4.0.tar.gz | 292.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| magazine-0.4.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 585.9 kB
Release files / magazine-0.4.0.tar.gz
| Download URL | magazine-0.4.0.tar.gz |
|---|---|
| Size | 292.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
99c0ed467ba0f8d0a5bd755de857ec9d024a80409815ba3906eeee0522f37535
|
|
BLAKE2b-256 checksum How to use checksums |
eba6ca03814468e38a07c7ae699961ffa34c22bbad76c461cf6d9d0c63873bef
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.8.5
|
Release files / magazine-0.4.0-py3-none-any.whl
| Download URL | magazine-0.4.0-py3-none-any.whl |
|---|---|
| Size | 293.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
97d88d091667593771973c0b04e02f8ca7826cd44b6aa35064a53eeec608bd4e
|
|
BLAKE2b-256 checksum How to use checksums |
4fb04d8ae073eac89edefa334aab00254c1a4226607e2a552e095b567bc7093d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.8.5
|