[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
[![PyPI package version](https://img.shields.io/pypi/v/mikedoc)](https://pypi.org/project/mikedoc)
[![Downloads](https://static.pepy.tech/badge/mikedoc)](https://pepy.tech/project/mikedoc)
<!-- Cover -->
<div align="center">
<img src="https://raw.githubusercontent.com/pyrustic/misc/master/assets/mikedoc/cover.jpg" alt="Cover image" width="572">
<p align="center">
<a href="https://commons.wikimedia.org/wiki/File:Tavernier_Jean_Mielot.jpg">Jean Le Tavernier</a>, Public domain, via Wikimedia Commons
</p>
</div>
<!-- Intro Text -->
# MikeDoc
<b>Neat docstring format for generating API references</b>
## Table of contents
- [Overview](#overview)
- [Usage](#usage)
- [Demo](#demo)
- [Docstring format](#docstring-format)
- [Config file](#config-file)
- [Command-line interface](#command-line-interface)
- [Application programming interface](#application-programming-interface)
- [API reference coverage](#api-reference-coverage)
- [API reference rendering and navigation](#api-reference-rendering-and-navigation)
- [Miscellaneous](#miscellaneous)
- [Testing and contributing](#testing-and-contributing)
- [Installation](#installation)
# Overview
**MikeDoc** (pronounced `/ˈmaɪkdɒk/`) is a neat [docstring](https://en.wikipedia.org/wiki/Docstring) format for generating API references.
Its eponymous lightweight reference [library](#installation) exposes functions and classes for parsing docstrings as well as traversing any arbitrary [Python](https://www.python.org/) codebase, iteratively yielding the fields, classes, and functions contained within each module.
The library also offers to generate API references consisting of [Markdown](https://en.wikipedia.org/wiki/Markdown) documents from the command line or programmatically. Once generated, an API reference can be browsed offline with a Markdown reader or online with [GitHub](https://en.wikipedia.org/wiki/GitHub) or another platform.
# Usage
**MikeDoc**'s [Python package](#installation) can be used both as a tool to generate API references, or as a library to traverse an arbitrary Python codebase (for example, to create a new tool to generate API references).
## Building an API reference
From the command-line:
```bash
# cd in the project root dir
$ cd /path/to/project
# create the config file
$ mikedoc init
Config file 'mikedoc.dict' created !
# build the api reference
$ mikedoc build
API reference built in 'docs/api' !
```
Programmatically:
```python
from mikedoc import build
# config
root_dir = "/path/to/project"
project_name = "ProjectName"
project_url = "/README.md"
pkg_dir = "src/package"
api_dir = "docs/api"
# build the API reference
build(root_dir, project_name, project_url, pkg_dir, api_dir)
```
## Traversing a codebase
The following script uses three loops to access the methods of all classes in order to print their docstrings:
```python
import mikedoc
root_dir = "/path/to/project"
pkg_dir = "src/package"
# === LOOP 1 === Accessing each module
for module_info, members in mikedoc.browse(root_dir, pkg_dir):
# 'module_info' is a namedtuple and 'members' is an iterator
# to iterate over fields, funcs, and classes in the module
assert isinstance(module_info, mikedoc.ModuleInfo)
# === LOOP 2 === Accessing each member in the module
for member_info in members:
# 'member_info' is a namedtuple
assert isinstance(member_info, mikedoc.MemberInfo)
# skip if member isn't a class
if not member_info.is_class:
continue
# 'class_members' is a sequence of namedtuples
class_members = member_info.members
# === LOOP 3 === Accessing each member in the class
for class_member_info in class_members:
# class_member_info is a namedtuple
assert isinstance(class_member_info, mikedoc.ClassMemberInfo)
# print the parsed docstring of each method in the class
if class_member_info.is_method:
# get the docstring
docstring = class_member_info.doc
# parse the docstring
data = mikedoc.parse_docstring(docstring)
# print the docstring
print(docstring)
```
## Parsing a docstring
```python
from mikedoc import parse_docstring
docstring = """
A multiline description
for a *function* that adds two numbers
[param]
- a: left-hand integer operand
- b: right-hand integer operand
[return]
Sum of `a` and `b`"""
# returns a dictionary
data = parse_docstring(docstring)
print(data)
```
The code above would output this:
```
{'': 'A multiline description\nfor a *function* that adds two numbers',
'param': {'a': 'left-hand integer operand',
'b': 'right-hand integer operand'},
'return': 'Sum of `a` and `b`'}
```
# Demo
**MikeDoc**'s API reference itself can serve as an explorable demo as well as those from other projects such as **Braq** and **Paradict**.
| Project | API reference |
| --- | --- |
| [MikeDoc](#readme): Neat docstring format for generating API references | [mikedoc/docs/api](/docs/api) |
| [Braq](https://github.com/pyrustic/braq): Customizable data format for config files, AI prompts, and more | [braq/docs/api](https://github.com/pyrustic/braq/tree/master/docs/api) |
| [Paradict](https://github.com/pyrustic/paradict): Streamable multi-format serialization with schema | [paradict/docs/api](https://github.com/pyrustic/paradict/tree/master/docs/api) |
# Docstring format
The format can be summarized as follows:
```python
def arbitrary_function(a, b):
"""
A description of the **function** that
might span multiple lines.
[param]
Optional short text to introduce parameters.
- a: Short or long description that might
span multiple lines.
- b: Short or long description that might
span multiple lines.
[return]
This section describes the value to return.
[yield]
This section describes the value to yield.
[except]
Optional short text to introduce
exceptions that might be raised.
- Exception: Short or long description that might
span multiple lines.
"""
...
```
The **MikeDoc** format uses [Braq](https://github.com/pyrustic/braq) to structure the docstring into sections. The unnamed section represents the description of the function/class/method. The `param` and `except` sections are hyphenated key-value pairs to describe parameters and exceptions (which might be raised), respectively.
> The docstring format allows reasonable use of [Markdown](https://en.wikipedia.org/wiki/Markdown) like emphasis and links. It is recommended to keep it simple.
# Config file
To be able to build a reference API for an arbitrary Python project, a `mikedoc.dict` [config file](https://github.com/pyrustic/paradict) should be placed at the root of the codebase directory. The file can be generated with the `init` command from the CLI.
Here is the `mikedoc.dict` config file placed at the root of **MikeDoc** itself:
```
# project name
project_name = 'MikeDoc'
# project's website or README
project_url = '/README.md'
# package directory (relative path)
pkg_dir = 'mikedoc'
# API directory (relative path)
api_dir = 'docs/api'
```
For a project named **my-project**, whose package (**my_project**) isn't placed directly at the root of the project directory but inside the `src` folder, the `pkg_dir` would contain the string `'src/my_project'`.
> Only the **slash character** is allowed as path separator in the config file.
>
> **For most cases**, the generated config file doesn't need to be edited.
# Command-line interface
The `init` and `build` commands are all you need:
```bash
# cd in the project root dir
$ cd /path/to/project/root
# create the config file
$ mikedoc init
Config file 'mikedoc.dict' created !
# build the api reference
$ mikedoc build
API reference built in 'docs/api' !
```
> **For most cases**, the generated config file doesn't need to be edited.
# Application programming interface
> Explore the [API Reference](/docs/api) !
# API reference coverage
An API reference generated by this tool would comprehensively cover various elements of a **Python** codebase, including:
- **Modules:** A module represents the main unit of a codebase.
- **Fields:** Variables and constants.
- **Functions**
- **Classes**
- **Regular classes**
- **Fields:** Also referred to as `class attributes`.
- **Properties:** `Getters`, `setters`, and `deleters`.
- **Methods**
- **Regular methods**
- **Static methods**
- **Class methods**
- **Enumerations**
- **Fields:** Also referred to as `enum members`.
- **Named Tuples**
- **Fields**
# API reference rendering and navigation
**MikeDoc** generates [Markdown](https://github.github.com/gfm/) files that can be rendered and browsed online on [GitHub](https://github.com/pyrustic/mikedoc) or explored offline with a Markdown reader. Markdown files are organized in directories that mirror the organization of the codebase.
```
project
mikedoc.dict
src
package [1]
module1.py
sub_package
module2.py
docs
api [2]
README.md [3]
MIKEDOC
modules
package
module1
README.md [4]
class-MyClass1.md [5]
fields.md [6]
funcs.md [7]
sub_package
module2
README.md
class-MyClass2.md
fields.md
funcs.md
```
- [1] - The package directory: `pkg_dir = 'src/package'`.
- [2] - The API directory: `api_dir = 'docs/api'`.
- [3] - Home page for the API reference.
- [4] - Overview page for the `package.module1` module.
- [5] - Page for documenting `MyClass1` exposed in `package.module1`.
- [6] - Page for documenting public fields (variables and constants) exposed in `package.module1`.
- [7] - Page for documenting public functions exposed in `package.module1`.
> **Navigation between pages** relies on **links** all **relative** to the **root directory**. These relative links are prefixed with a slash `/`.
# Miscellaneous
Miscellaneous stuff...
## Underlined links on GitHub
In **Python**, underscores are very common in identifiers. When these identifiers are rendered as underlined links, it becomes hard to notice the underscores.
> To change the visibility of underlines on links that are adjacent to text, check the GitHub [accessibility settings](https://github.com/settings/accessibility).
# Testing and contributing
Feel free to **open an issue** to report a bug, suggest some changes, show some useful code snippets, or discuss anything related to this project. You can also directly email [me](https://pyrustic.github.io/#contact).
## Setup your development environment
Following are instructions to setup your development environment
```bash
# create and activate a virtual environment
python -m venv venv
source venv/bin/activate
# clone the project then change into its directory
git clone https://github.com/pyrustic/mikedoc.git
cd mikedoc
# install the package locally (editable mode)
pip install -e .
# run tests
python -m unittest discover -f -s tests -t .
# deactivate the virtual environment
deactivate
```
<p align="right"><a href="#readme">Back to top</a></p>
# Installation
**MikeDoc** is **cross-platform**. It is built on [Ubuntu](https://ubuntu.com/download/desktop) and should work on **Python 3.5** or **newer**.
## Create and activate a virtual environment
```bash
python -m venv venv
source venv/bin/activate
```
## Install for the first time
```bash
pip install mikedoc
```
## Upgrade the package
```bash
pip install mikedoc --upgrade --upgrade-strategy eager
```
## Deactivate the virtual environment
```bash
deactivate
```
<p align="right"><a href="#readme">Back to top</a></p>
# About the author
Hello world, I'm Alex, a tech enthusiast ! Feel free to get in touch with [me](https://pyrustic.github.io/#contact) !
<br>
<br>
<br>
[Back to top](#readme)
Raw data
{
"_id": null,
"home_page": "https://pyrustic.github.com",
"name": "mikedoc",
"maintainer": "Pyrustic Evangelist",
"docs_url": null,
"requires_python": ">=3.5",
"maintainer_email": "rusticalex@yahoo.com",
"keywords": "docs, docstring, documentation, docs-generator",
"author": "Pyrustic Evangelist",
"author_email": "rusticalex@yahoo.com",
"download_url": "https://files.pythonhosted.org/packages/cc/52/a39c01b1c95d38afd621b614b503515a45c67c339fb0f96111943148b1a8/mikedoc-0.0.2.tar.gz",
"platform": null,
"description": "[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![PyPI package version](https://img.shields.io/pypi/v/mikedoc)](https://pypi.org/project/mikedoc)\n[![Downloads](https://static.pepy.tech/badge/mikedoc)](https://pepy.tech/project/mikedoc)\n\n<!-- Cover -->\n<div align=\"center\">\n <img src=\"https://raw.githubusercontent.com/pyrustic/misc/master/assets/mikedoc/cover.jpg\" alt=\"Cover image\" width=\"572\">\n <p align=\"center\"> \n <a href=\"https://commons.wikimedia.org/wiki/File:Tavernier_Jean_Mielot.jpg\">Jean Le Tavernier</a>, Public domain, via Wikimedia Commons\n </p>\n</div>\n\n<!-- Intro Text -->\n# MikeDoc\n<b>Neat docstring format for generating API references</b>\n\n\n## Table of contents\n- [Overview](#overview)\n- [Usage](#usage)\n- [Demo](#demo)\n- [Docstring format](#docstring-format)\n- [Config file](#config-file)\n- [Command-line interface](#command-line-interface)\n- [Application programming interface](#application-programming-interface)\n- [API reference coverage](#api-reference-coverage)\n- [API reference rendering and navigation](#api-reference-rendering-and-navigation)\n- [Miscellaneous](#miscellaneous)\n- [Testing and contributing](#testing-and-contributing)\n- [Installation](#installation)\n\n\n# Overview\n**MikeDoc** (pronounced `/\u02c8ma\u026akd\u0252k/`) is a neat [docstring](https://en.wikipedia.org/wiki/Docstring) format for generating API references.\n\nIts eponymous lightweight reference [library](#installation) exposes functions and classes for parsing docstrings as well as traversing any arbitrary [Python](https://www.python.org/) codebase, iteratively yielding the fields, classes, and functions contained within each module.\n\nThe library also offers to generate API references consisting of [Markdown](https://en.wikipedia.org/wiki/Markdown) documents from the command line or programmatically. Once generated, an API reference can be browsed offline with a Markdown reader or online with [GitHub](https://en.wikipedia.org/wiki/GitHub) or another platform.\n\n\n# Usage\n**MikeDoc**'s [Python package](#installation) can be used both as a tool to generate API references, or as a library to traverse an arbitrary Python codebase (for example, to create a new tool to generate API references).\n\n## Building an API reference\nFrom the command-line:\n\n```bash\n# cd in the project root dir\n$ cd /path/to/project\n\n# create the config file\n$ mikedoc init\nConfig file 'mikedoc.dict' created !\n\n# build the api reference\n$ mikedoc build\nAPI reference built in 'docs/api' !\n```\n\nProgrammatically:\n```python\nfrom mikedoc import build\n\n# config\nroot_dir = \"/path/to/project\"\nproject_name = \"ProjectName\"\nproject_url = \"/README.md\"\npkg_dir = \"src/package\"\napi_dir = \"docs/api\"\n\n# build the API reference\nbuild(root_dir, project_name, project_url, pkg_dir, api_dir)\n```\n## Traversing a codebase\nThe following script uses three loops to access the methods of all classes in order to print their docstrings:\n\n```python\nimport mikedoc\n\nroot_dir = \"/path/to/project\"\npkg_dir = \"src/package\"\n\n# === LOOP 1 === Accessing each module\nfor module_info, members in mikedoc.browse(root_dir, pkg_dir):\n # 'module_info' is a namedtuple and 'members' is an iterator\n # to iterate over fields, funcs, and classes in the module\n assert isinstance(module_info, mikedoc.ModuleInfo)\n\n # === LOOP 2 === Accessing each member in the module\n for member_info in members:\n # 'member_info' is a namedtuple\n assert isinstance(member_info, mikedoc.MemberInfo)\n # skip if member isn't a class\n if not member_info.is_class:\n continue\n # 'class_members' is a sequence of namedtuples\n class_members = member_info.members\n\n # === LOOP 3 === Accessing each member in the class\n for class_member_info in class_members:\n # class_member_info is a namedtuple\n assert isinstance(class_member_info, mikedoc.ClassMemberInfo)\n # print the parsed docstring of each method in the class\n if class_member_info.is_method:\n # get the docstring\n docstring = class_member_info.doc\n # parse the docstring\n data = mikedoc.parse_docstring(docstring)\n # print the docstring\n print(docstring)\n```\n\n## Parsing a docstring\n```python\nfrom mikedoc import parse_docstring\n\ndocstring = \"\"\"\nA multiline description\nfor a *function* that adds two numbers\n\n[param]\n- a: left-hand integer operand\n- b: right-hand integer operand\n\n[return]\nSum of `a` and `b`\"\"\"\n\n# returns a dictionary\ndata = parse_docstring(docstring)\n\nprint(data)\n```\nThe code above would output this:\n```\n{'': 'A multiline description\\nfor a *function* that adds two numbers',\n 'param': {'a': 'left-hand integer operand',\n 'b': 'right-hand integer operand'}, \n 'return': 'Sum of `a` and `b`'}\n```\n\n\n# Demo\n**MikeDoc**'s API reference itself can serve as an explorable demo as well as those from other projects such as **Braq** and **Paradict**.\n\n| Project | API reference |\n| --- | --- |\n| [MikeDoc](#readme): Neat docstring format for generating API references | [mikedoc/docs/api](/docs/api) |\n| [Braq](https://github.com/pyrustic/braq): Customizable data format for config files, AI prompts, and more | [braq/docs/api](https://github.com/pyrustic/braq/tree/master/docs/api) |\n| [Paradict](https://github.com/pyrustic/paradict): Streamable multi-format serialization with schema | [paradict/docs/api](https://github.com/pyrustic/paradict/tree/master/docs/api) |\n\n# Docstring format\nThe format can be summarized as follows:\n\n```python\ndef arbitrary_function(a, b):\n \"\"\"\n A description of the **function** that\n might span multiple lines.\n \n [param]\n Optional short text to introduce parameters.\n - a: Short or long description that might\n span multiple lines.\n - b: Short or long description that might\n span multiple lines.\n \n [return]\n This section describes the value to return.\n \n [yield]\n This section describes the value to yield.\n \n [except]\n Optional short text to introduce\n exceptions that might be raised.\n - Exception: Short or long description that might\n span multiple lines.\n \"\"\"\n ...\n```\n\nThe **MikeDoc** format uses [Braq](https://github.com/pyrustic/braq) to structure the docstring into sections. The unnamed section represents the description of the function/class/method. The `param` and `except` sections are hyphenated key-value pairs to describe parameters and exceptions (which might be raised), respectively.\n\n> The docstring format allows reasonable use of [Markdown](https://en.wikipedia.org/wiki/Markdown) like emphasis and links. It is recommended to keep it simple.\n\n# Config file\nTo be able to build a reference API for an arbitrary Python project, a `mikedoc.dict` [config file](https://github.com/pyrustic/paradict) should be placed at the root of the codebase directory. The file can be generated with the `init` command from the CLI.\n\nHere is the `mikedoc.dict` config file placed at the root of **MikeDoc** itself:\n\n```\n# project name\nproject_name = 'MikeDoc'\n\n# project's website or README\nproject_url = '/README.md'\n\n# package directory (relative path)\npkg_dir = 'mikedoc'\n\n# API directory (relative path)\napi_dir = 'docs/api'\n```\n\nFor a project named **my-project**, whose package (**my_project**) isn't placed directly at the root of the project directory but inside the `src` folder, the `pkg_dir` would contain the string `'src/my_project'`.\n\n> Only the **slash character** is allowed as path separator in the config file.\n> \n> **For most cases**, the generated config file doesn't need to be edited.\n\n# Command-line interface\nThe `init` and `build` commands are all you need:\n\n```bash\n# cd in the project root dir\n$ cd /path/to/project/root\n\n# create the config file\n$ mikedoc init\nConfig file 'mikedoc.dict' created !\n\n# build the api reference\n$ mikedoc build\nAPI reference built in 'docs/api' !\n```\n\n> **For most cases**, the generated config file doesn't need to be edited.\n\n# Application programming interface\n> Explore the [API Reference](/docs/api) !\n\n# API reference coverage\nAn API reference generated by this tool would comprehensively cover various elements of a **Python** codebase, including:\n- **Modules:** A module represents the main unit of a codebase.\n - **Fields:** Variables and constants.\n - **Functions**\n - **Classes**\n - **Regular classes**\n - **Fields:** Also referred to as `class attributes`.\n - **Properties:** `Getters`, `setters`, and `deleters`.\n - **Methods**\n - **Regular methods**\n - **Static methods**\n - **Class methods**\n - **Enumerations**\n - **Fields:** Also referred to as `enum members`.\n - **Named Tuples**\n - **Fields**\n\n# API reference rendering and navigation\n**MikeDoc** generates [Markdown](https://github.github.com/gfm/) files that can be rendered and browsed online on [GitHub](https://github.com/pyrustic/mikedoc) or explored offline with a Markdown reader. Markdown files are organized in directories that mirror the organization of the codebase.\n\n```\nproject\n mikedoc.dict\n src\n package [1]\n module1.py\n sub_package\n module2.py\n docs\n api [2]\n README.md [3]\n MIKEDOC\n modules\n package\n module1\n README.md [4]\n class-MyClass1.md [5]\n fields.md [6]\n funcs.md [7]\n sub_package\n module2\n README.md\n class-MyClass2.md\n fields.md\n funcs.md\n```\n\n- [1] - The package directory: `pkg_dir = 'src/package'`.\n- [2] - The API directory: `api_dir = 'docs/api'`.\n- [3] - Home page for the API reference.\n- [4] - Overview page for the `package.module1` module.\n- [5] - Page for documenting `MyClass1` exposed in `package.module1`.\n- [6] - Page for documenting public fields (variables and constants) exposed in `package.module1`.\n- [7] - Page for documenting public functions exposed in `package.module1`.\n\n\n> **Navigation between pages** relies on **links** all **relative** to the **root directory**. These relative links are prefixed with a slash `/`.\n\n# Miscellaneous\nMiscellaneous stuff...\n## Underlined links on GitHub\nIn **Python**, underscores are very common in identifiers. When these identifiers are rendered as underlined links, it becomes hard to notice the underscores. \n\n> To change the visibility of underlines on links that are adjacent to text, check the GitHub [accessibility settings](https://github.com/settings/accessibility).\n\n\n# Testing and contributing\nFeel free to **open an issue** to report a bug, suggest some changes, show some useful code snippets, or discuss anything related to this project. You can also directly email [me](https://pyrustic.github.io/#contact).\n\n## Setup your development environment\nFollowing are instructions to setup your development environment\n\n```bash\n# create and activate a virtual environment\npython -m venv venv\nsource venv/bin/activate\n\n# clone the project then change into its directory\ngit clone https://github.com/pyrustic/mikedoc.git\ncd mikedoc\n\n# install the package locally (editable mode)\npip install -e .\n\n# run tests\npython -m unittest discover -f -s tests -t .\n\n# deactivate the virtual environment\ndeactivate\n```\n\n<p align=\"right\"><a href=\"#readme\">Back to top</a></p>\n\n# Installation\n**MikeDoc** is **cross-platform**. It is built on [Ubuntu](https://ubuntu.com/download/desktop) and should work on **Python 3.5** or **newer**.\n\n## Create and activate a virtual environment\n```bash\npython -m venv venv\nsource venv/bin/activate\n```\n\n## Install for the first time\n\n```bash\npip install mikedoc\n```\n\n## Upgrade the package\n```bash\npip install mikedoc --upgrade --upgrade-strategy eager\n```\n\n## Deactivate the virtual environment\n```bash\ndeactivate\n```\n\n<p align=\"right\"><a href=\"#readme\">Back to top</a></p>\n\n# About the author\nHello world, I'm Alex, a tech enthusiast ! Feel free to get in touch with [me](https://pyrustic.github.io/#contact) !\n\n<br>\n<br>\n<br>\n\n[Back to top](#readme)\n\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Neat docstring format for generating API references",
"version": "0.0.2",
"project_urls": {
"Homepage": "https://pyrustic.github.com"
},
"split_keywords": [
"docs",
" docstring",
" documentation",
" docs-generator"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "0298fdfccc1df9a49ebd9fe9af4e6b86b185cf12051c3944d186828f4cf6825e",
"md5": "4bfa081ea76d47f5cd369ae654c0636b",
"sha256": "1c2e6390bed20e12697906a5489e035b62a27aad8decb1dc4582dbbdfbac9577"
},
"downloads": -1,
"filename": "mikedoc-0.0.2-py3-none-any.whl",
"has_sig": false,
"md5_digest": "4bfa081ea76d47f5cd369ae654c0636b",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.5",
"size": 21869,
"upload_time": "2024-04-30T20:02:15",
"upload_time_iso_8601": "2024-04-30T20:02:15.133074Z",
"url": "https://files.pythonhosted.org/packages/02/98/fdfccc1df9a49ebd9fe9af4e6b86b185cf12051c3944d186828f4cf6825e/mikedoc-0.0.2-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "cc52a39c01b1c95d38afd621b614b503515a45c67c339fb0f96111943148b1a8",
"md5": "99b597a1926a6ba8459b39e7e42cd41b",
"sha256": "d302e0faf0876fc38b0f59c04b8ef46fcbd5a7de72e50b5a4d1222c60259a397"
},
"downloads": -1,
"filename": "mikedoc-0.0.2.tar.gz",
"has_sig": false,
"md5_digest": "99b597a1926a6ba8459b39e7e42cd41b",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.5",
"size": 22809,
"upload_time": "2024-04-30T20:02:16",
"upload_time_iso_8601": "2024-04-30T20:02:16.901318Z",
"url": "https://files.pythonhosted.org/packages/cc/52/a39c01b1c95d38afd621b614b503515a45c67c339fb0f96111943148b1a8/mikedoc-0.0.2.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-04-30 20:02:16",
"github": false,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"lcname": "mikedoc"
}