Skip to main content

This package is an extension for Sphinx that creates a '-start' companion and a '-end' companion for every registered class-based directive.

Project description

Sphinx Gated Directives

This package is an extension for Sphinx that creates a start directive and an end directive for every registered class-based directive.

What does it do?

This extension performs the following steps:

  1. It scans the Sphinx environment for all registered class-based directives.
  2. For each directive found, it automatically registers two new directives:
    • A start directive that marks the beginning of a block.
    • An end directive that marks the end of a block.
  3. On build time, it processes these start and end directives to ensure that content between them is handled correctly.

For example, if you have a directive called warning, this extension will create (with default settings) two new directives: warning-start and warning-end. The code:

:::{warning}
This is a warning message.

So, be careful!
:::

can now be replaced with the code

:::{warning-start}
This is a warning message.
:::

So, be careful!

:::{warning-end}
:::

In short:

  • This extension splits the original directive into a start and end directive.
  • The start directive has the same options as the original directive.
  • Anything inside the start directive is processed as usual.
  • Anything between the start and end directives is processed as usual, and then added to the output of the start directive.
  • The end directive is mandatory to close the directive.
  • Anything inside the end directive is ignored.

This allows two things:

  1. More granular control over where the directive starts and ends, which can be useful in complex documents. This is similar to how HTML tags and LaTeX environments work.
  2. The ability to nest directives more easily, as the start and end markers can be placed independently. A major benefit of this is that it allows for nesting of code-cells.

[!CAUTION] Some directives parse the content inside the directive. If that content is moved between the start and end directives, it may not be parsed as expected, as it will be parsed separately. Please see to the Examples section for more details.

Installation

To use this extension, follow these steps:

Step 1: Install the Package

Install the module sphinx-gated-directives package using pip:

pip install sphinx-gated-directives

Step 2: Add to requirements.txt

Make sure that the package is included in your project's requirements.txt to track the dependency:

sphinx-gated-directives

Step 3: Enable in _config.yml

In your _config.yml file, add the extension to the list of Sphinx extra extensions (important: underscore, not dash this time):

sphinx: 
    extra_extensions:
        .
        .
        .
        - sphinx_gated_directives
        .
        .
        .

or similarly in your conf.py file.

Configuration

This extension can be configured via the _config.yml file in your JupyterBook project (or similarly in conf.py for standard Sphinx projects).

The default configuration options are as follows:

sphinx:
  config:
    sphinx_gated_directives:
      suffix_start: start    # Suffix for the start directive
      suffix_end: end        # Suffix for the end directive
      suffix_separator: '-'     # Separator between the original directive name and the suffix
      override_existing: false  # Whether to override existing gated directives with the same name

Per key the meanings are:

  • suffix_start: The suffix to append to the original directive name for the start directive.
    • Default is start.
    • Must be a non-empty string containing only a-z.
  • suffix_end: The suffix to append to the original directive name for the end directive.
    • Default is end.
    • Must be a non-empty string containing only a-z.
  • suffix_separator: The separator to use between the original directive name and the suffix.
    • Default is -.
    • Must be a single character, no space, no underscore, no colon, or empty string.
  • override_existing: Whether to override existing gated directives with the same name.
    • Default is false.
    • Must be a boolean value (true or false), a single string or a list of strings.
    • If false, none existing gated directives will be overridden.
    • If true, all existing gated directives will be overridden.
    • If a string or a list of strings, only the existing gated directives with names in the list/string will be overridden.

[!WARNING] Setting override_existing to anything other than false may lead to unexpected behavior if those directives are already in use.

Use with caution.

Examples

Examples for this extension is available in the TeachBooks manual.

Contribute

This tool's repository is stored on GitHub. If you'd like to contribute, you can create a fork and open a pull request on the GitHub repository.

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

sphinx_gated_directives-1.0.1.tar.gz (14.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

sphinx_gated_directives-1.0.1-py3-none-any.whl (10.7 kB view details)

Uploaded Python 3

File details

Details for the file sphinx_gated_directives-1.0.1.tar.gz.

File metadata

  • Download URL: sphinx_gated_directives-1.0.1.tar.gz
  • Upload date:
  • Size: 14.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for sphinx_gated_directives-1.0.1.tar.gz
Algorithm Hash digest
SHA256 128139004c48bd3e81ef52ebfa6d8ede664c5f28559760fd20444986dccf874f
MD5 a4579fdce68ebb6e9e8f01a427f5de40
BLAKE2b-256 b978e986e59affad683dc9608828dec298d8a079a8982dff3258ac3b6f3ac1e3

See more details on using hashes here.

Provenance

The following attestation bundles were made for sphinx_gated_directives-1.0.1.tar.gz:

Publisher: python-publish.yml on TeachBooks/Sphinx-Gated-Directives

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sphinx_gated_directives-1.0.1-py3-none-any.whl.

File metadata

File hashes

Hashes for sphinx_gated_directives-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 7c6024d3d4d6f43d82a43d621021ac5ef8f7f15e5888da465db3cc40ef16c4d0
MD5 f621f46aeab1693b4185f4fc5da1415f
BLAKE2b-256 08b7c9ef5e8184b347a08ccc6dab3c03e560a2ddc897babc175d90acd896a5fd

See more details on using hashes here.

Provenance

The following attestation bundles were made for sphinx_gated_directives-1.0.1-py3-none-any.whl:

Publisher: python-publish.yml on TeachBooks/Sphinx-Gated-Directives

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

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