python-trio / python-trio/trio

Expose most of trio._util and trio._deprecate for the benefit of the Trio ecosystem

Open
#1,504 3 comments 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

project meta user happiness
Dominant language
Python
Stars
7.3k
Forks
431
Avg merge
2d 17h
Merged PRs (30d)
6

Description

Trio has great tools for dealing with some of the minutiae of making a polished Python package in general, but they're private; libraries that depend on Trio need to copy-paste or reimplement these tools if they want to offer equivalent functionality. If they reimplement, they probably won't do as good of a job.

I think we should add a new public Trio submodule (trio.libtools?) which provides:

  • From trio._util: Final, NoPublicConstructor, generic_function, fixup_module_metadata, async_wraps, ConflictDetector
  • A factory for creating modules like trio._deprecate, substituting a project's own deprecation warning, issue URL, and name.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reading trio._util and trio._deprecate to understand which utilities and deprecation behavior are intended for reuse. Define the scope of a public trio.libtools module and its project-customizable deprecation factory; done means the listed utilities and equivalent deprecation support are exposed for Trio-dependent libraries.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
api, developer-experience
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.