Let your code take comprehensive notes and publish notes and figures as a beautiful consolidated PDF document.
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.
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.
A documentation and API reference can be found on ReadTheDocs:
- Magazine (class)
- Publish (context manager)
- PDF commands (class)
pip install magazine
Requires:
- fpdf2
- habanero (optional, for academic citations)
- neatlogger (wrapper for loguru)
- Uses the Google font Roboto as it just looks great in PDFs.