Skip to content

[RFC] Define a public API #25

@ripariancommit

Description

@ripariancommit

Situation

Whereas...

  1. The project claims to conform to semantic versioning. And the semver spec 2.0 requires that you define a "public API" - changes to which should either rev the major or minor version number depending on if they are backwards compatible or not.

  2. PEP 8 recommends that you use the __all__ module variable to define your public interface.

  3. We do not clearly define a public API.

Proposal

  1. Make use of the PEP 8 __all__ variable throughout the project to define our public interface.

  2. In all submodules, add an __all__ variable that defines what classes and methods within that module are considered "public".

  3. In the top-level rule34Py module, import all submodule elements declared in __all__; thereby creating a top-level public interface.

  4. Update our project documentation to make our public interface clear.

  5. Update our project policy to require a major version upgrade when changes are merged that break backwards compatibility in the public API, and a minor version change when merging changes that alter the public API in a backwards compatible way.

Metadata

Metadata

Assignees

No one assigned

    Labels

    documentationImprovements or additions to documentationenhancementNew feature or requesthelp wantedExtra attention is needed

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions