# sciengdox
A python package for creating scientific and engineering documents
via [`pandoc`](https://pandoc.org/) including inline-executable Python code.
## Key Features
1. [Pandoc filter](https://pandoc.org/filters.html) for converting pandoc
markdown to other formats (especially HTML and PDF).
2. Codeblock execution
3. Helper functions for generating tables, SVG
[matplotlib](https://matplotlib.org/) plots, etc.
# Motivation
This is inspired by [`pweave`](http://mpastell.com/pweave/),
[`codebraid`](https://github.com/gpoore/codebraid),
[`knitr`](https://yihui.name/knitr/), and cousins, but I always seemed to have
to do some pre/post-processing to get things the way I want them. I already use
other pandoc filters (e.g. pandoc-citeproc, pandoc-crossref), so why not simply
have another pandoc filter that will execute inline code and insert the results?
Another key is getting quality diagrams from scientific python code. For
example, pweave automatically inserts generated images, but there doesn't seem
to be a way to get SVG images without, again, pre- and post-processing in
another script. SVG plots are, obviously, scalable and work much better for web
and PDF outputs.
# Development
Use [`poetry`](https://python-poetry.org/) for local environment management.
After cloning the repository:
```shell
$ cd <project-repo>
$ poetry install
$ poetry shell
```
To package and release:
```shell
$ poetry build
$ poetry publish
```
Be sure to
[configure your credentials](https://python-poetry.org/docs/repositories/#configuring-credentials)
prior to publishing.
See also [this page](https://packaging.python.org/tutorials/packaging-projects/).
# Use and Example
An example Pandoc markdown file can be found in `example`. To process this
file, you need to have [`pandoc`](https://pandoc.org/) installed and in your
path. You also need to install the Pandoc filters
[pandoc-crossref](https://github.com/lierdakil/pandoc-crossref) and
[pandoc-citeproc](https://github.com/jgm/pandoc-citeproc) which provide nice
cross-referencing and reference/bibliography handling.
## Installation
When working with macOS or Linux or
[Linux on Windows via WSL](https://gist.github.com/gbingersoll/9e18afb9f4c3acd8674f5595c7e010f5)
`pandoc` and the filters can be installed via [Homebrew](https://brew.sh/). (On
Linux/WSL, install [linuxbrew](https://docs.brew.sh/Homebrew-on-Linux).) Then
simply run:
```shell
$ brew install pandoc
$ brew install pandoc-crossref
$ brew install pandoc-citeproc
$ brew install librsvg
```
Then, of course, you need to install this filter and some other helpers for the
example. The example helpers can be installed into your Python virtual
environment by running:
```shell
$ poetry install -E examples
```
### Windows-specific Install
To set up an environment for Windows from scratch including terminals, editors,
Python, etc., see
[this gist](https://gist.github.com/gbingersoll/c3033f8cb41c3eb865563c0711a30545).
Additional installation steps to use this library include installing `pandoc`
and additional filters and utilities.
Install `pandoc` by [downloading the installer](https://pandoc.org/installing.html)
and following the standard instructions. This should also get you
`pandoc-citeproc.exe` for managing citations.
Install `pandoc-crossref` (for managing intra-document cross-references) by
[downloading](https://github.com/lierdakil/pandoc-crossref/releases) the zipped
Windows release. Unzip it, and move `pandoc-crossref.exe` to a location that is
on your system path. For example, you can move to next to `pandoc-citeproc.exe`
in `C:\Program Files\Pandoc`.
Finally, to handle embedding SVG images in PDF documents, this library relies on
`rsvg-convert`. This can be installed via
[Chocolatey](https://chocolatey.org/). Install the Chocolatey package manager
if you do not already have it, and then run:
```shell
$ choco install rsvg-convert
```
Instead of (or in addition to) Chocolately, you can also install the
[Scoop](https://scoop.sh/) installer. Scoop does not currently have a formula
for `rsvg-convert`, but it can also be installed from
[SourceForge](https://sourceforge.net/projects/tumagcc/files/rsvg-convert-dll-2.40.16.7z/download?use_mirror=phoenixnap)
if you do not want to use Chocolatey.
#### UTF-8 Note
The underlying Pandoc filter for executing Python code embedded in your
documents relies on inter-process communication with a Python REPL behind the
scenes. The default inter-process character encoding for Python on Windows is
[CP-1252](https://en.wikipedia.org/wiki/Windows-1252), and this can cause
problems if your Python scripts generate output with special characters (and if
you are doing any scientific or engineering writing, they definitely will).
Fortunately, this is easily worked-around by setting a Windows environment
variable `PYTHONIOENCODING` to `utf-8`. After setting this, be sure to restart
any open terminal windows for the change to take effect.
#### Matplotlib Note
If you use `matplotlib` for generating plots in inline Python code in your
document, you should explicity set the `Agg` backend early in your document (see
the `example/example.md` in this repo). Without this, document conversion can
hang when the `svg_figure` helper function is called.
Somewhere near the top of your Markdown document, add an executable Python code
block (without `.echo` so it won't appear in the output) that includes:
```python
import matplotlib
matplotlib.use('Agg')
```
#### Panflute Version Note
This plugin relies on the
[`panflute`](https://github.com/sergiocorreia/panflute) Python package as a
bridge between Python and `pandoc`'s Haskell. The `panflute`
[README](https://github.com/sergiocorreia/panflute#supported-pandoc-versions)
lists API compatibility requirements between versions of `panflute` and versions
of `pandoc`. Double-check this if you run into errors that mention `panflute`
when compiling a document.
If you are running an older version of `pandoc` (e.g. 2.9.2) and start a new
project, you will need to explicitly install the compatible `panflute` version
in your environment with e.g. `poetry add panflute@1.12.5`. Or
alternatively install a `pandoc` version 2.11.x or later.
### PDF Generation
To generate PDF files through Pandoc, you need to have `xelatex` installed.
On Linux/WSL:
```shell
$ sudo apt-get install texlive-xetex
```
On macOS:
```shell
$ brew install --cask mactex
```
On Windows (without WSL):
[Download the MikTeX installer](https://miktex.org/download) and install as
usual. Then ensure that the binary folder is in your path (e.g.
`C:\Users\<username>\AppData\Local\Programs\MiKTeX 2.9\miktex\bin\x64\`). Note
that the first time you generate a document, MikTex will prompt you to install a
lot of packages, so watch for a MikTeX window popping up (possibly behind other
windows) and follow the prompts.
### Fonts
The example templates rely on having a few fonts installed.
The fonts to get are the Google
[Source Sans Pro](https://fonts.google.com/specimen/Source+Sans+Pro),
[Source Code Pro](https://fonts.google.com/specimen/Source+Code+Pro), and
[Source Serif Pro](https://fonts.google.com/specimen/Source+Serif+Pro) families.
On macOS or Windows (without WSL), these can simply be downloaded and installed
as you would any other font. On Linux via WSL, you can install these normally
on the Windows side and then synchronize the Windows font folder to the Linux
side. To do this, edit (using `sudo`) `/etc/fonts/local.conf` and add:
```xml
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
<dir>/mnt/c/Windows/Fonts</dir>
</fontconfig>
```
Then update the font cache on the Linux side:
```shell
$ sudo fc-cache -fv
```
### Stylesheets
The example file uses an HTML template that includes a CSS stylesheet that is
generated from [SCSS](https://sass-lang.com/documentation/syntax). To compile
this automatically, you need to have
[SASS installed](https://sass-lang.com/install).
On macOS, this can be installed via Homebrew:
```shell
$ brew install sass/sass/sass
```
On macOS/Linux/WSL/Windows it can be installed as a Node.js package (assuming
you already have [Node.js/npm](https://nodejs.org/) installed):
```shell
$ npm install -g sass
```
## Building
This Python library provides a script, `compiledoc`, that will appear in your
`poetry` or `pipenv` virtual environment's path (or globally) once the library
is installed. In general, you provide an output directory and an input markdown
file, and it will build an HTML output when the `--html` flag is used (and also
by default).
```shell
$ compiledoc -o output --html mydoc.md
```
To build a PDF (via `xelatex`):
```shell
$ compiledoc -o output --pdf mydoc.md
```
To build a Markdown file with executable Python output included (e.g. for
debugging purposes), specify `--md`. This will generate a file in the output
directory with (perhaps confusingly) the same name as the input:
```shell
$ compiledoc -o output --md mydoc.md
```
To build everything, specify `--all`:
```shell
$ compiledoc -o output --all mydoc.md
```
To see all available command line options (for specifying templates, paths to
required external executables, static files like images and bibliography files,
etc.):
```shell
$ compiledoc --help
```
## Building the Example
Once everything is setup, compile the example HTML file by running:
```shell
$ cd example
$ compiledoc -o output example.md
```
Open `example/output/example.html` in your browser or use e.g. the [Live
Server](https://marketplace.visualstudio.com/items?itemName=ritwickdey.LiveServer)
plugin for VS Code.
## Auto Regen
To autoregenerate the document (e.g. the HTML version, the output of which is
watched by the
[Live Server](https://marketplace.visualstudio.com/items?itemName=ritwickdey.LiveServer)
), you can use [Watchman](https://facebook.github.io/watchman/).
To create a trigger on a particular directory (`doc/` in this example) with a
`notebook.md` file (change this to suit your purposes), copy the following into
a temporary `trigger.json` file:
```json
[
"trigger",
"doc/",
{
"name": "build_html",
"expression": [
"anyof",
[
"match",
"notebook.md",
"wholename"
]
],
"command": [
"poetry",
"run",
"compiledoc",
"-o",
"output",
"--html",
"notebook.md"
]
}
]
```
Then from your project root directory run:
```shell
watchman -j < trigger.json
rm trigger.json
```
It is also recommended that you add a `.watchmanconfig` file to the watched
directory (e.g. `doc/`; also add `.watchmanconfig` to your `.gitignore`) with
the following contents:
```json
{
"settle": 3000
}
```
The settle parameter is in milliseconds.
To turn off watchman:
```shell
watchman shutdown-server
```
To turn it back on:
```shell
cd <project-root>
watchman watch doc/
```
To watch the Watchman:
```shell
tail -f /usr/local/var/run/watchman/<username>-state/log
```
(Note that on Windows/WSL, to get `tail` to work the way you expect, you need to
add `---disable-inotify` to the command; and yes, that's three `-` for some
reason.)
## Older pandoc Versions
For `pandoc` 2.9 and earlier, the citation manager `pandoc-citeproc` was a
separate filter that gets added to the compliation pipeline. The path to this
filter can be specified on the command line to `compiledoc` with the
`--pandoc-citeproc PATH` flag.
In newer versions of `pandoc` (2.11 and beyond), the citeproc filter is built-in
to pandoc and is run by adding `--citeproc` to the `pandoc` command-line. The
`compiledoc` script adds this by default unless the flag `--use-pandoc-citeproc`
is added, in which case the older filter will be used.
If you do not with to run `citeproc` at all, you can add the flag
`compiledoc --no-citeproc` to skip citation processing altogether.
Raw data
{
"_id": null,
"home_page": "https://github.com/gbingersoll/sciengdox",
"name": "sciengdox",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.9,<4.0",
"maintainer_email": "",
"keywords": "science,engineering,documentation,scipy,pandoc",
"author": "Greg Ingersoll",
"author_email": "greg.ingersoll@convolutionresearch.com",
"download_url": "https://files.pythonhosted.org/packages/6b/59/97a3613cebf611ffb711ad089ea8e0493f0e5639e284cec3d864adca87e1/sciengdox-0.11.0.tar.gz",
"platform": null,
"description": "# sciengdox\n\nA python package for creating scientific and engineering documents\nvia [`pandoc`](https://pandoc.org/) including inline-executable Python code.\n\n\n## Key Features\n\n1. [Pandoc filter](https://pandoc.org/filters.html) for converting pandoc\n markdown to other formats (especially HTML and PDF).\n2. Codeblock execution\n3. Helper functions for generating tables, SVG\n [matplotlib](https://matplotlib.org/) plots, etc.\n\n\n# Motivation\n\nThis is inspired by [`pweave`](http://mpastell.com/pweave/),\n[`codebraid`](https://github.com/gpoore/codebraid),\n[`knitr`](https://yihui.name/knitr/), and cousins, but I always seemed to have\nto do some pre/post-processing to get things the way I want them. I already use\nother pandoc filters (e.g. pandoc-citeproc, pandoc-crossref), so why not simply\nhave another pandoc filter that will execute inline code and insert the results?\n\nAnother key is getting quality diagrams from scientific python code. For\nexample, pweave automatically inserts generated images, but there doesn't seem\nto be a way to get SVG images without, again, pre- and post-processing in\nanother script. SVG plots are, obviously, scalable and work much better for web\nand PDF outputs.\n\n\n# Development\n\nUse [`poetry`](https://python-poetry.org/) for local environment management.\nAfter cloning the repository:\n\n```shell\n$ cd <project-repo>\n$ poetry install\n$ poetry shell\n```\n\nTo package and release:\n\n```shell\n$ poetry build\n$ poetry publish\n```\n\nBe sure to\n[configure your credentials](https://python-poetry.org/docs/repositories/#configuring-credentials)\nprior to publishing.\n\nSee also [this page](https://packaging.python.org/tutorials/packaging-projects/).\n\n# Use and Example\n\nAn example Pandoc markdown file can be found in `example`. To process this\nfile, you need to have [`pandoc`](https://pandoc.org/) installed and in your\npath. You also need to install the Pandoc filters\n[pandoc-crossref](https://github.com/lierdakil/pandoc-crossref) and\n[pandoc-citeproc](https://github.com/jgm/pandoc-citeproc) which provide nice\ncross-referencing and reference/bibliography handling.\n\n## Installation\n\nWhen working with macOS or Linux or\n[Linux on Windows via WSL](https://gist.github.com/gbingersoll/9e18afb9f4c3acd8674f5595c7e010f5)\n`pandoc` and the filters can be installed via [Homebrew](https://brew.sh/). (On\nLinux/WSL, install [linuxbrew](https://docs.brew.sh/Homebrew-on-Linux).) Then\nsimply run:\n\n```shell\n$ brew install pandoc\n$ brew install pandoc-crossref\n$ brew install pandoc-citeproc\n$ brew install librsvg\n```\n\nThen, of course, you need to install this filter and some other helpers for the\nexample. The example helpers can be installed into your Python virtual\nenvironment by running:\n\n```shell\n$ poetry install -E examples\n```\n\n### Windows-specific Install\n\nTo set up an environment for Windows from scratch including terminals, editors,\nPython, etc., see\n[this gist](https://gist.github.com/gbingersoll/c3033f8cb41c3eb865563c0711a30545).\nAdditional installation steps to use this library include installing `pandoc`\nand additional filters and utilities.\n\nInstall `pandoc` by [downloading the installer](https://pandoc.org/installing.html)\nand following the standard instructions. This should also get you\n`pandoc-citeproc.exe` for managing citations.\n\nInstall `pandoc-crossref` (for managing intra-document cross-references) by\n[downloading](https://github.com/lierdakil/pandoc-crossref/releases) the zipped\nWindows release. Unzip it, and move `pandoc-crossref.exe` to a location that is\non your system path. For example, you can move to next to `pandoc-citeproc.exe`\nin `C:\\Program Files\\Pandoc`.\n\nFinally, to handle embedding SVG images in PDF documents, this library relies on\n`rsvg-convert`. This can be installed via\n[Chocolatey](https://chocolatey.org/). Install the Chocolatey package manager\nif you do not already have it, and then run:\n\n```shell\n$ choco install rsvg-convert\n```\n\nInstead of (or in addition to) Chocolately, you can also install the\n[Scoop](https://scoop.sh/) installer. Scoop does not currently have a formula\nfor `rsvg-convert`, but it can also be installed from\n[SourceForge](https://sourceforge.net/projects/tumagcc/files/rsvg-convert-dll-2.40.16.7z/download?use_mirror=phoenixnap)\nif you do not want to use Chocolatey.\n\n\n#### UTF-8 Note\n\nThe underlying Pandoc filter for executing Python code embedded in your\ndocuments relies on inter-process communication with a Python REPL behind the\nscenes. The default inter-process character encoding for Python on Windows is\n[CP-1252](https://en.wikipedia.org/wiki/Windows-1252), and this can cause\nproblems if your Python scripts generate output with special characters (and if\nyou are doing any scientific or engineering writing, they definitely will).\n\nFortunately, this is easily worked-around by setting a Windows environment\nvariable `PYTHONIOENCODING` to `utf-8`. After setting this, be sure to restart\nany open terminal windows for the change to take effect.\n\n#### Matplotlib Note\n\nIf you use `matplotlib` for generating plots in inline Python code in your\ndocument, you should explicity set the `Agg` backend early in your document (see\nthe `example/example.md` in this repo). Without this, document conversion can\nhang when the `svg_figure` helper function is called.\n\nSomewhere near the top of your Markdown document, add an executable Python code\nblock (without `.echo` so it won't appear in the output) that includes:\n\n```python\nimport matplotlib\nmatplotlib.use('Agg')\n```\n\n#### Panflute Version Note\n\nThis plugin relies on the\n[`panflute`](https://github.com/sergiocorreia/panflute) Python package as a\nbridge between Python and `pandoc`'s Haskell. The `panflute`\n[README](https://github.com/sergiocorreia/panflute#supported-pandoc-versions)\nlists API compatibility requirements between versions of `panflute` and versions\nof `pandoc`. Double-check this if you run into errors that mention `panflute`\nwhen compiling a document.\n\nIf you are running an older version of `pandoc` (e.g. 2.9.2) and start a new\nproject, you will need to explicitly install the compatible `panflute` version\nin your environment with e.g. `poetry add panflute@1.12.5`. Or\nalternatively install a `pandoc` version 2.11.x or later.\n\n### PDF Generation\n\nTo generate PDF files through Pandoc, you need to have `xelatex` installed.\nOn Linux/WSL:\n\n```shell\n$ sudo apt-get install texlive-xetex\n```\n\nOn macOS:\n\n```shell\n$ brew install --cask mactex\n```\n\nOn Windows (without WSL):\n\n[Download the MikTeX installer](https://miktex.org/download) and install as\nusual. Then ensure that the binary folder is in your path (e.g. \n`C:\\Users\\<username>\\AppData\\Local\\Programs\\MiKTeX 2.9\\miktex\\bin\\x64\\`). Note\nthat the first time you generate a document, MikTex will prompt you to install a\nlot of packages, so watch for a MikTeX window popping up (possibly behind other\nwindows) and follow the prompts.\n\n\n### Fonts\n\nThe example templates rely on having a few fonts installed.\nThe fonts to get are the Google\n[Source Sans Pro](https://fonts.google.com/specimen/Source+Sans+Pro),\n[Source Code Pro](https://fonts.google.com/specimen/Source+Code+Pro), and\n[Source Serif Pro](https://fonts.google.com/specimen/Source+Serif+Pro) families.\n\nOn macOS or Windows (without WSL), these can simply be downloaded and installed\nas you would any other font. On Linux via WSL, you can install these normally\non the Windows side and then synchronize the Windows font folder to the Linux\nside. To do this, edit (using `sudo`) `/etc/fonts/local.conf` and add:\n\n```xml\n<?xml version=\"1.0\"?>\n<!DOCTYPE fontconfig SYSTEM \"fonts.dtd\">\n<fontconfig>\n <dir>/mnt/c/Windows/Fonts</dir>\n</fontconfig>\n```\n\nThen update the font cache on the Linux side:\n\n```shell\n$ sudo fc-cache -fv\n```\n\n### Stylesheets\n\nThe example file uses an HTML template that includes a CSS stylesheet that is\ngenerated from [SCSS](https://sass-lang.com/documentation/syntax). To compile\nthis automatically, you need to have\n[SASS installed](https://sass-lang.com/install).\n\nOn macOS, this can be installed via Homebrew:\n\n```shell\n$ brew install sass/sass/sass\n```\n\nOn macOS/Linux/WSL/Windows it can be installed as a Node.js package (assuming\nyou already have [Node.js/npm](https://nodejs.org/) installed):\n\n```shell\n$ npm install -g sass\n```\n\n## Building\n\nThis Python library provides a script, `compiledoc`, that will appear in your\n`poetry` or `pipenv` virtual environment's path (or globally) once the library\nis installed. In general, you provide an output directory and an input markdown\nfile, and it will build an HTML output when the `--html` flag is used (and also\nby default).\n\n```shell\n$ compiledoc -o output --html mydoc.md\n```\n\nTo build a PDF (via `xelatex`):\n\n```shell\n$ compiledoc -o output --pdf mydoc.md\n```\n\nTo build a Markdown file with executable Python output included (e.g. for\ndebugging purposes), specify `--md`. This will generate a file in the output\ndirectory with (perhaps confusingly) the same name as the input:\n\n```shell\n$ compiledoc -o output --md mydoc.md\n```\n\nTo build everything, specify `--all`:\n\n```shell\n$ compiledoc -o output --all mydoc.md\n```\n\nTo see all available command line options (for specifying templates, paths to\nrequired external executables, static files like images and bibliography files,\netc.):\n\n```shell\n$ compiledoc --help\n```\n\n## Building the Example\n\nOnce everything is setup, compile the example HTML file by running:\n\n```shell\n$ cd example\n$ compiledoc -o output example.md\n```\n\nOpen `example/output/example.html` in your browser or use e.g. the [Live\nServer](https://marketplace.visualstudio.com/items?itemName=ritwickdey.LiveServer)\nplugin for VS Code.\n\n## Auto Regen\n\nTo autoregenerate the document (e.g. the HTML version, the output of which is\nwatched by the\n[Live Server](https://marketplace.visualstudio.com/items?itemName=ritwickdey.LiveServer)\n), you can use [Watchman](https://facebook.github.io/watchman/).\n\nTo create a trigger on a particular directory (`doc/` in this example) with a\n`notebook.md` file (change this to suit your purposes), copy the following into\na temporary `trigger.json` file:\n\n```json\n[\n \"trigger\",\n \"doc/\",\n {\n \"name\": \"build_html\",\n \"expression\": [\n \"anyof\",\n [\n \"match\",\n \"notebook.md\",\n \"wholename\"\n ]\n ],\n \"command\": [\n \"poetry\",\n \"run\",\n \"compiledoc\",\n \"-o\",\n \"output\",\n \"--html\",\n \"notebook.md\"\n ]\n }\n]\n```\n\nThen from your project root directory run:\n\n```shell\nwatchman -j < trigger.json\nrm trigger.json\n```\n\nIt is also recommended that you add a `.watchmanconfig` file to the watched\ndirectory (e.g. `doc/`; also add `.watchmanconfig` to your `.gitignore`) with\nthe following contents:\n\n```json\n{\n \"settle\": 3000\n}\n```\n\nThe settle parameter is in milliseconds.\n\nTo turn off watchman:\n\n```shell\nwatchman shutdown-server\n```\n\nTo turn it back on:\n\n```shell\ncd <project-root>\nwatchman watch doc/\n```\n\nTo watch the Watchman:\n\n```shell\ntail -f /usr/local/var/run/watchman/<username>-state/log\n```\n\n(Note that on Windows/WSL, to get `tail` to work the way you expect, you need to\nadd `---disable-inotify` to the command; and yes, that's three `-` for some\nreason.)\n\n## Older pandoc Versions\n\nFor `pandoc` 2.9 and earlier, the citation manager `pandoc-citeproc` was a\nseparate filter that gets added to the compliation pipeline. The path to this\nfilter can be specified on the command line to `compiledoc` with the\n`--pandoc-citeproc PATH` flag.\n\nIn newer versions of `pandoc` (2.11 and beyond), the citeproc filter is built-in\nto pandoc and is run by adding `--citeproc` to the `pandoc` command-line. The\n`compiledoc` script adds this by default unless the flag `--use-pandoc-citeproc`\nis added, in which case the older filter will be used.\n\nIf you do not with to run `citeproc` at all, you can add the flag\n`compiledoc --no-citeproc` to skip citation processing altogether.\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Science/engineering dynamic doc generation",
"version": "0.11.0",
"split_keywords": [
"science",
"engineering",
"documentation",
"scipy",
"pandoc"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "e92606cd9e681812b6e348d7be024176e561c82a182388bd6ba7144f51f640c5",
"md5": "e666a26d7cd7361f747099c94a940444",
"sha256": "4f7b4d9c8b898cbb694705aacf30eaa1ea3c266bafc8509ffe5c18b1b0f790e2"
},
"downloads": -1,
"filename": "sciengdox-0.11.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "e666a26d7cd7361f747099c94a940444",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.9,<4.0",
"size": 32873,
"upload_time": "2023-02-06T22:54:27",
"upload_time_iso_8601": "2023-02-06T22:54:27.840142Z",
"url": "https://files.pythonhosted.org/packages/e9/26/06cd9e681812b6e348d7be024176e561c82a182388bd6ba7144f51f640c5/sciengdox-0.11.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "6b5997a3613cebf611ffb711ad089ea8e0493f0e5639e284cec3d864adca87e1",
"md5": "c123631bed818ef2e440a3df009e9da7",
"sha256": "0b25fbe9b70b54c70b2f9d671b84d17522b11484a0b302917b665fbbaad8a419"
},
"downloads": -1,
"filename": "sciengdox-0.11.0.tar.gz",
"has_sig": false,
"md5_digest": "c123631bed818ef2e440a3df009e9da7",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.9,<4.0",
"size": 29566,
"upload_time": "2023-02-06T22:54:30",
"upload_time_iso_8601": "2023-02-06T22:54:30.449500Z",
"url": "https://files.pythonhosted.org/packages/6b/59/97a3613cebf611ffb711ad089ea8e0493f0e5639e284cec3d864adca87e1/sciengdox-0.11.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-02-06 22:54:30",
"github": true,
"gitlab": false,
"bitbucket": false,
"github_user": "gbingersoll",
"github_project": "sciengdox",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"lcname": "sciengdox"
}