mikedoc


Namemikedoc JSON
Version 0.0.2 PyPI version JSON
download
home_pagehttps://pyrustic.github.com
SummaryNeat docstring format for generating API references
upload_time2024-04-30 20:02:16
maintainerPyrustic Evangelist
docs_urlNone
authorPyrustic Evangelist
requires_python>=3.5
licenseMIT
keywords docs docstring documentation docs-generator
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            [![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"
}
        
Elapsed time: 0.27160s