npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

modeldoc

v0.1.14

Published

Auto generates mkdocs from python model files.

Downloads

5

Readme

Modeldoc

Modeldoc is a tool for creating mkdoc files from Python models. Specifically, it parses classes (generally dataclass or Pydantic) from Python files, outputting .md files designed for Material for MkDocs.

from typing import List

class Town():
    name: str = "Defaultville"
    mayor: Person
    streets: List[Street]

'''
Town
Towns are generally larger than villages but smaller than cities
'''

'''
mayor
A mayor is the highest-ranking official in a municipal
government such as that of a city or a town.
'''

becomes

Usage

From within the project folder:

npx modeldoc

This expects models to be in /models and outputs .md files to /docs or can be configured

Features

  • Links between models
  • Enables model and field meta-data:
    • key-value pairs
    • tags
  • Accepts markdown descriptions in comments
  • Constructs dependency tree page

Limitations

Modeldoc is not that smart. It does not actually interpret the python, so:

  • it won't understand type/model aliases
  • inheritance will be ignored

Also, it only has a JSON-like support of primitive types:

  • string
  • boolean
  • integer
  • float
  • null (None)
  • array (List)
  • object (Dict)

Comment format

Comments are used to provide additional information about a field or model:

'''
<name>
[<tag>, <tag>]
<key> -> <value>
<key> -> <value>
<markdown description>
'''

E.g.

'''
user_id
[primary key, immutable]
database table -> User
max length -> 12
Generated during ``create_user()``
'''

The tag or key-value lines are optional but need to come before the description body. Everything after the "header" (name, tags, key-values) will be considered the description. Each field or value needs to be placed in it's own separate comment.

Configuration

Modeldoc can be configured by creating a modeldoc.yml file in the project directory. The default values are:

inputDirectory: models/
docDirectory: docs/
docModelDirectory: models/
navFolder: Models
mkdocsFile: mkdocs
includeDependencies: true
dependenciesTitle: Model dependencies
outputFile: null
  • inputDirectory: where modeldoc expects to find the .py model files, relative to project
  • docDirectory: mkdocs source directory relative to project
  • docModelDirectory: output model directory relative to doc directory
  • navFolder: directory within mkdocs navigation for models
  • mkdocsFile: filename of mkdocs yaml file
  • includeDependencies: whether or not to create a dependency graph page
  • dependenciesTitle: title of dependencies graph page
  • outputFile: generate a JSON file with data extracted from the .py model files