PyMD
==================
[![License](https://img.shields.io/badge/license-MIT-black.svg)](https://opensource.org/licenses/MIT)
# Overview
This packages provides an intuitive way to generate markdown files. While sweeping over parameters for a project, results can be neatly organized and stored within a markdown file.
# Features
* Index over subsections
* Assign multiple section types to each section
* Add text, images, figures, lists, tables, checkboxes, and hyperlinks to the markdown.
* Save and load as JSON
# Installation
## Pip
Use pip to install PyMD:
```bash
pip install .
```
# Markdown File Examples
## Create MDGenerator Object
When creating the `MDGenerator` Object, either the save path and filename can be given together in the `save_path` or separately. If given together, this will neglect the `file_name` parameter, and the file descriptor must be given with the `save_path`. File descriptor is not needed if `file_name` is given separately.
A list of authors can be provided or a single name. It will be formatted accordingly.
```python
from PyMD import MDGenerator
md = MDGenerator(save_path="folder/filename.md", title="Title of MD file", author="John Smith")
# Add sections to the md object
# Save when done to generate md file
md.save()
```
## Create and Index Section Headers
Section headers are automatically created when a section get or set is made. Levels or subsections can be addressed by a file system format. Examples would be:
### Indexing using base object
```python
md.add_text("Section 1/Subsection 1/Subsubsection 1","This is placed in the subsubsection of the first section and first subsection.")
```
### Dictionary Single Indexing
```python
md["Section 1/Subsection 1/Subsubsection 1"].add_text("This is placed in the subsubsection of the first section and first subsection.")
```
### Dictionary Multi Indexing
```python
md["Section 1"]["Subsection 1"]["Subsubsection 1"].add_text("This is placed in the subsubsection of the first section and first subsection.")
```
### Variation of Single and Multi Indexing
```python
md["Section 1/Subsection 1"]["Subsubsection 1"].add_text("This is placed in the subsubsection of the first section and first subsection.")
```
However, indexing through a function call can only be done by the base object. Not a membering object.
## Assignment Functions
Each function will have its own parameters, but the provided functions are the following:
```python
md.add_text(text)
md.add_code(text)
md.add_figure(figure)
md.add_image(image_path)
md.add_table(table)
md.add_list(text_list)
md.add_link(link, text)
md.add_checkbox(text_list, checked)
```
## Default Assignments
To speed up common assignments, text, figures, tables, and lists are allowed to be assigned to the dictionary. For examples, each assignment can be made to add to a section:
### Text Assignmnet
```python
md["Section 1"]["Subsection 1"]["Subsubsection 1"] = "This is placed in the subsubsection of the first section and first subsection."
```
### Figure Assignment
```python
from matplotlib import pyplot as plt
fig, ax = plt.subplots()
# Add to the figure
md["Figure or Image Section"] = fig
```
### Dataframe Assignment
```python
from pandas import DataFrame
# Create array instance with or without columns
table = DataFrame(array, columns=columns)
md["Table Section"] = table
```
### Numpy Assignment
```python
import numpy
# Create array instance
md["Table Section"] = array
```
### List Assignment
```python
md["List Section"] = ["Item 1", "Item 2", "Item 3"]
```
## Save and Load JSON file
```python
md.save_json()
```
```python
md.save_json(new_file_name)
```
```python
md = MDGenerator(save_path=json_file_location)
md.load_json()
```
```python
md = MDGenerator()
md.load_json(json_file_location)
```
Raw data
{
"_id": null,
"home_page": null,
"name": "RPyMD",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.6",
"maintainer_email": null,
"keywords": "markdown, MarkDown, generator, report, results, evaluation",
"author": null,
"author_email": "Randall Fowler <randallfowler77@yahoo.com>",
"download_url": "https://files.pythonhosted.org/packages/0d/71/9be579daff126f8e28190df20194396a154ddaaa5c589cc8a8164896f112/rpymd-1.0.0.tar.gz",
"platform": null,
"description": "PyMD\n==================\n\n[![License](https://img.shields.io/badge/license-MIT-black.svg)](https://opensource.org/licenses/MIT)\n\n# Overview\nThis packages provides an intuitive way to generate markdown files. While sweeping over parameters for a project, results can be neatly organized and stored within a markdown file.\n\n# Features\n* Index over subsections\n* Assign multiple section types to each section\n* Add text, images, figures, lists, tables, checkboxes, and hyperlinks to the markdown.\n* Save and load as JSON\n\n# Installation\n## Pip\nUse pip to install PyMD:\n```bash\npip install .\n``` \n\n# Markdown File Examples\n\n## Create MDGenerator Object\nWhen creating the `MDGenerator` Object, either the save path and filename can be given together in the `save_path` or separately. If given together, this will neglect the `file_name` parameter, and the file descriptor must be given with the `save_path`. File descriptor is not needed if `file_name` is given separately.\n\nA list of authors can be provided or a single name. It will be formatted accordingly.\n\n```python\nfrom PyMD import MDGenerator\n\nmd = MDGenerator(save_path=\"folder/filename.md\", title=\"Title of MD file\", author=\"John Smith\")\n\n# Add sections to the md object\n\n# Save when done to generate md file\nmd.save()\n``` \n\n## Create and Index Section Headers\nSection headers are automatically created when a section get or set is made. Levels or subsections can be addressed by a file system format. Examples would be:\n\n### Indexing using base object\n```python\nmd.add_text(\"Section 1/Subsection 1/Subsubsection 1\",\"This is placed in the subsubsection of the first section and first subsection.\")\n``` \n\n### Dictionary Single Indexing\n```python\nmd[\"Section 1/Subsection 1/Subsubsection 1\"].add_text(\"This is placed in the subsubsection of the first section and first subsection.\")\n``` \n\n### Dictionary Multi Indexing\n```python\nmd[\"Section 1\"][\"Subsection 1\"][\"Subsubsection 1\"].add_text(\"This is placed in the subsubsection of the first section and first subsection.\")\n``` \n\n### Variation of Single and Multi Indexing\n```python\nmd[\"Section 1/Subsection 1\"][\"Subsubsection 1\"].add_text(\"This is placed in the subsubsection of the first section and first subsection.\")\n``` \nHowever, indexing through a function call can only be done by the base object. Not a membering object.\n\n## Assignment Functions\nEach function will have its own parameters, but the provided functions are the following:\n```python\nmd.add_text(text)\nmd.add_code(text)\nmd.add_figure(figure)\nmd.add_image(image_path)\nmd.add_table(table)\nmd.add_list(text_list)\nmd.add_link(link, text)\nmd.add_checkbox(text_list, checked)\n``` \n\n## Default Assignments\nTo speed up common assignments, text, figures, tables, and lists are allowed to be assigned to the dictionary. For examples, each assignment can be made to add to a section:\n\n### Text Assignmnet\n```python\nmd[\"Section 1\"][\"Subsection 1\"][\"Subsubsection 1\"] = \"This is placed in the subsubsection of the first section and first subsection.\"\n``` \n\n### Figure Assignment\n```python\nfrom matplotlib import pyplot as plt\n\nfig, ax = plt.subplots()\n# Add to the figure\nmd[\"Figure or Image Section\"] = fig\n```\n\n### Dataframe Assignment\n```python\nfrom pandas import DataFrame\n\n# Create array instance with or without columns\ntable = DataFrame(array, columns=columns)\nmd[\"Table Section\"] = table\n```\n\n### Numpy Assignment\n```python\nimport numpy\n\n# Create array instance\nmd[\"Table Section\"] = array\n```\n\n### List Assignment\n```python\nmd[\"List Section\"] = [\"Item 1\", \"Item 2\", \"Item 3\"]\n```\n\n## Save and Load JSON file\n```python\nmd.save_json()\n```\n```python\nmd.save_json(new_file_name)\n```\n\n```python\nmd = MDGenerator(save_path=json_file_location)\nmd.load_json()\n```\n```python\nmd = MDGenerator()\nmd.load_json(json_file_location)\n```\n",
"bugtrack_url": null,
"license": "MIT License",
"summary": "Library for recording in a markdown file.",
"version": "1.0.0",
"project_urls": {
"Homepage": "https://github.com/Th3RandyMan/PyMD"
},
"split_keywords": [
"markdown",
" markdown",
" generator",
" report",
" results",
" evaluation"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "12ced815e39462385b1609c9724d70b058cd948183a8b968bb5f5b47b8ec6db2",
"md5": "0103c58bc3776176246dcd4df96f1857",
"sha256": "06dafbda3827653d1b52d5a53741359f373a70d9e6a089153dbb623d0325a810"
},
"downloads": -1,
"filename": "RPyMD-1.0.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "0103c58bc3776176246dcd4df96f1857",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.6",
"size": 12579,
"upload_time": "2024-07-17T18:44:25",
"upload_time_iso_8601": "2024-07-17T18:44:25.407603Z",
"url": "https://files.pythonhosted.org/packages/12/ce/d815e39462385b1609c9724d70b058cd948183a8b968bb5f5b47b8ec6db2/RPyMD-1.0.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "0d719be579daff126f8e28190df20194396a154ddaaa5c589cc8a8164896f112",
"md5": "9d1cc299072d4fbdb5d099a027db9322",
"sha256": "e7e5cc982309c2b9b68a0264a70a0d50c0686a37346e51253759654b415e9ac6"
},
"downloads": -1,
"filename": "rpymd-1.0.0.tar.gz",
"has_sig": false,
"md5_digest": "9d1cc299072d4fbdb5d099a027db9322",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.6",
"size": 14644,
"upload_time": "2024-07-17T18:44:27",
"upload_time_iso_8601": "2024-07-17T18:44:27.027016Z",
"url": "https://files.pythonhosted.org/packages/0d/71/9be579daff126f8e28190df20194396a154ddaaa5c589cc8a8164896f112/rpymd-1.0.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-07-17 18:44:27",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "Th3RandyMan",
"github_project": "PyMD",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"requirements": [
{
"name": "matplotlib",
"specs": [
[
"==",
"3.7.5"
]
]
},
{
"name": "matplotlib-inline",
"specs": [
[
"==",
"0.1.7"
]
]
},
{
"name": "mdutils",
"specs": [
[
"==",
"1.6.0"
]
]
},
{
"name": "numpy",
"specs": [
[
"==",
"1.24.4"
]
]
},
{
"name": "pandas",
"specs": [
[
"==",
"2.0.3"
]
]
},
{
"name": "pathlib",
"specs": [
[
"==",
"1.0.1"
]
]
},
{
"name": "typing-extensions",
"specs": [
[
"==",
"4.12.2"
]
]
}
],
"lcname": "rpymd"
}