Skip to main content

Code snippet extraction for documentation

Project description

Snippet

Package Documentation PyPI PyPI - Status PyPI - Python Version

License Compliance

Build Status Test Coverage Maintainability

Overview

A tool to extract code snippets from source files

Essentially, snippet extracts marked sections of text from a given set of input files and saves them elsewhere.

Features include:

  • Works on any text file, e.g. any coding language by reading from source files
  • Uses customisable markup syntax
  • Writes to templated output (e.g. .md code blocks)
  • Hides sections from output
  • Performs validation to help avoid snippets breaking as code changes

Rationale

Code documentation usually needs a written example demonstrating use of some code. This example code can however become quite easily outdated as a project evolves or even contain its own errors. One solution is to write the examples as tests which can be run within the test system of choice. This ensures that the code of the examples is always valid and working. snippet can then be used to extract the relevant and informative part of the test and put it in a form which can then be rendered by the documentation system, providing fully tested code examples.

Releases

For release notes and a history of changes of all production releases, please see the following:

For a the list of all available versions please, please see the:

Versioning

The version scheme used follows PEP440 and Semantic Versioning. For production quality releases the version will look as follows:

  • <major>.<minor>.<patch>

Beta releases are used to give early access to new functionality, for testing and to get feedback on experimental features. As such these releases may not be stable and should not be used for production. Additionally any interfaces introduced in a beta release may be removed or changed without notice. For beta releases the version will look as follows:

  • <major>.<minor>.<patch>-beta.<pre-release-number>

Installation

It is recommended that a virtual environment such as Pipenv is used for all installations to avoid Python dependency conflicts.

To install the most recent production quality release use:

pip install code-snippet

To install a specific release:

pip install code-snippet==<version>

Usage

Configuration

Place a config file in the toml format in your project directory (e.g. snippet.toml). Any value defined in the config object can be overridden.

As an example, basic configuration typically includes input and output directories:

[snippet] 
input_glob = 'tests/unit/*.py' 
output_dir = 'docs/examples' 

Run

Run the following command in your project:

snippet 

Alternatively, run snippet from anywhere and specify a working directory and config file:

snippet path/to/root --config=path/to/config.toml 

Config files can be specified as glob patterns, defaulting to *.toml, and can be set multiple times. Multiple files will be loaded in the order specified and discovered. Settings loaded last will take precedence.

For more information about how to use the tool, please have a look at the Usage page The full CLI options are:

> snippet --help 
usage: __main__.py [-h] [--config CONFIG] [-v] [dir] 

positional arguments: 
  dir              path to project root, used by any relative paths in loaded 
                   configs [cwd] 

optional arguments: 
  -h, --help       show this help message and exit 
  --config CONFIG  paths (or globs) to config files 
  -v, --verbosity  increase output verbosity 

Interface definition and usage documentation (for developers of tooling) is available for the most recent production release here:

Project Structure

The follow described the major aspects of the project structure:

  • azure-pipelines/ - CI configuration files for Azure Pipelines.
  • docs/ - Interface definition and usage documentation.
  • examples/ - Usage examples.
  • snippet/ - Python source files.
  • news/ - Collection of news files for unreleased changes.
  • tests/ - Unit and integration tests.

Getting Help

  • For interface definition and usage documentation, please see GitHub Pages.
  • For a list of known issues and possible work arounds, please see Known Issues.
  • To raise a defect or enhancement please use GitHub Issues.
  • To ask a question please use the Mbed Forum.

Contributing

  • Snippet is an open source project and we are committed to fostering a welcoming community, please see our Code of Conduct for more information.
  • For ways to contribute to the project, please see the Contributions Guidelines
  • For a technical introduction into developing this package, please see the Development Guide

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

code-snippet-2.0.1.tar.gz (18.2 kB view details)

Uploaded Source

Built Distribution

code_snippet-2.0.1-py3-none-any.whl (18.4 kB view details)

Uploaded Python 3

File details

Details for the file code-snippet-2.0.1.tar.gz.

File metadata

  • Download URL: code-snippet-2.0.1.tar.gz
  • Upload date:
  • Size: 18.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.1.3 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.7.6

File hashes

Hashes for code-snippet-2.0.1.tar.gz
Algorithm Hash digest
SHA256 1aa6cd498681a14f51dae378c5e3abffc997d7b21affa3c616814a58bde9f6bb
MD5 ed15c64311500194f035b60830ac9f31
BLAKE2b-256 faad366338504f68de27285cb7d709f5b6c01284b201fccc58a92c146dbf8449

See more details on using hashes here.

File details

Details for the file code_snippet-2.0.1-py3-none-any.whl.

File metadata

  • Download URL: code_snippet-2.0.1-py3-none-any.whl
  • Upload date:
  • Size: 18.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.1.3 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.7.6

File hashes

Hashes for code_snippet-2.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 5f1bc2899ec82d5c462411afa34769d4011538d878f6e84286e351eb5b50873d
MD5 ae33fb5604453080c6c919545ecea124
BLAKE2b-256 173d19f6de19db8e3b9a4733aa72e6c1e1ebe724318d239c80abd156859e6003

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page