docs/management-tasks.md
These are the tasks that can be performed to manage the Typer repository by team members{.internal-link target=_blank}.
/// tip
This section is useful only to a handful of people, team members with permissions to manage the repository. You can probably skip it. 😉
///
...so, you are a team member of Typer{.internal-link target=_blank}? Wow, you are so cool! 😎
You can help with everything on Help Typer - Get Help{.internal-link target=_blank} the same ways as external contributors. But additionally, there are some tasks that only you (as part of the team) can perform.
Here are the general instructions for the tasks you can perform.
Thanks a lot for your help. 🙇
First of all, be nice. 😊
You probably are super nice if you were added to the team, but it's worth mentioning it. 🤓
When things are great, everything is easier, so that doesn't need much instructions. But when things are difficult, here are some guidelines.
Try to find the good side. In general, if people are not being unfriendly, try to thank their effort and interest, even if you disagree with the main subject (discussion, PR), just thank them for being interested in the project, or for having dedicated some time to try to do something.
It's difficult to convey emotion in text, use emojis to help. 😅
In discussions and PRs, in many cases, people bring their frustration and show it without filter, in many cases exaggerating, complaining, being entitled, etc. That's really not nice, and when it happens, it lowers our priority to solve their problems. But still, try to breath, and be gentle with your answers.
Try to avoid using bitter sarcasm or potentially passive-aggressive comments. If something is wrong, it's better to be direct (try to be gentle) than sarcastic.
Try to be as specific and objective as possible, avoid generalizations.
For conversations that are more difficult, for example to reject a PR, you can ask me (@tiangolo) to handle it directly.
🐛 instead of :bug:. This is so that it shows up correctly outside of GitHub, for example in the release notes.Add, Refactor, Fix, etc. This way the title will say the action that the PR does. Like Add support for teleporting, instead of Teleporting wasn't working, so this PR fixes it.Adding support for teleporting use Add support for teleporting.Add support for teleporting instead of Create TeleportAdapter class..).Once the PR is merged, a GitHub Action (<a href="https://github.com/tiangolo/latest-changes" class="external-link" target="_blank">latest-changes</a>) will use the PR title to update the latest changes automatically.
So, having a nice PR title will not only look nice in GitHub, but also in the release notes. 📝
The same GitHub Action <a href="https://github.com/tiangolo/latest-changes" class="external-link" target="_blank">latest-changes</a> uses one label in the PR to decide the section in the release notes to put this PR in.
Make sure you use a supported label from the <a href="https://github.com/tiangolo/latest-changes#using-labels" class="external-link" target="_blank">latest-changes list of labels</a>:
breaking: Breaking Changes
security: Security Fixes
feature: Features
bug: Fixes
refactor: Refactors
upgrade: Upgrades
pyproject.toml. So, things that would affect final users, they would end up receiving the upgrade in their code base once they update. But this is not for upgrades to internal dependencies used for development, testing, docs, etc. Those internal dependencies or GitHub Action versions should be marked as internal, not upgrade.docs: Docs
docs/en/docs. The original version of the docs is always in English, so in docs/en/docs.internal: Internal
/// tip
Some tools like Dependabot, will add some labels, like dependencies, but have in mind that this label is not used by the latest-changes GitHub Action, so it won't be used in the release notes. Please make sure one of the labels above is added.
///
If a PR doesn't explain what it does or why, if it seems like it could be useful, ask for more information. Otherwise, feel free to close it.
If a PR seems to be spam, meaningless, only to change statistics (to appear as "contributor") or similar, you can simply mark it as invalid, and it will be automatically closed.
If a PR seems to be AI generated, and seems like reviewing it would take more time from you than the time it took to write the prompt, mark it as maybe-ai, and it will be automatically closed.
A PR should have a specific use case that it is solving.
If the PR is for a feature, it should have docs.
The docs should include a source example file, not write Python directly in Markdown.
If the source example(s) file can have different syntax for different Python versions, there should be different versions of the file, and they should be shown in tabs in the docs.
There should be tests testing the source example.
Before the PR is applied, the new tests should fail.
After applying the PR, the new tests should pass.
Coverage should stay at 100%.
If you see the PR makes sense, or we discussed it and considered it should be accepted, you can add commits on top of the PR to tweak it, to add docs, tests, format, refactor, remove extra files, etc.
Feel free to comment in the PR to ask for more information, to suggest changes, etc.
Once you think the PR is ready, move it in the internal GitHub project for me to review it.
Dependabot will create PRs to update dependencies for several things, and those PRs all look similar, but some are way more delicate than others.
pyproject.toml in the main dependencies, don't merge it. 😱 Let me check it first. There's a good chance that some additional tweaks or updates are needed.dev in pyproject.toml, or GitHub Action versions, if the tests are passing, the release notes (shown in a summary in the PR) don't show any obvious potential breaking change, you can merge it. 😎When a question in GitHub Discussions has been answered, mark the answer by clicking "Mark as answer".
You can filter discussions by <a href="https://github.com/fastapi/typer/discussions/categories/questions?discussions_q=category:Questions+is:open+is:unanswered" class="external-link" target="_blank">Questions that are Unanswered</a>.