Commit graph

69 commits

Author SHA1 Message Date
John Purviance
3e37e01979
Add support for custom types and parsers (updates/builds upon PR #443) (#583)
* Support custom parameter types

While most CLI parameters are strings, ints, etc, we sometimes need custom
types.

Currently typer has no support for it (See #77), and while there are a few hacks, the
likely solution is to add a 'str' argument and parse it inside the main function.

This PR adds support for custom types in 3 different ways:
- Manually specifying a `click_type`
- Manually specifying a `parse` function
- Using a Callable type annotation (It is very common for types to have a string constructor, like `int("1")`)

* Document how to parse custom objects with Typer.

Typer supports parsing of cutom types with:
- A user provided parser class
- A click custom type parser

* 🎨 [pre-commit.ci] Auto format from pre-commit.com hooks

* 📝 Tweak and simplify docs

*  Tweak tests to run scripts and remove pragma: nocover in examples

* 📝 Tweak examples for docs, add types and remove # pragma: nocover

* ♻️ Tweak implementation checking for parser and Click type

---------

Co-authored-by: Paulo Costa <me@paulo.costa.nom.br>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Sebastián Ramírez <tiangolo@gmail.com>
2023-05-01 03:03:26 -07:00
Xuan (Sean) Hu
915f89b6f8
✏️ Fix typo in datetime docs (#495) 2022-11-10 22:45:09 +01:00
Oskar Skjærvø Gjølga
9f2d7ebe05
✏️ Add quotes to package name that includes brackets in docs (#475)
Adds quotes to package name with brackets

Co-authored-by: Sebastián Ramírez <tiangolo@gmail.com>
2022-11-06 15:12:01 +00:00
Sebastián Ramírez
36e40806b7
Make typer.run() not add completion scripts by default, it only makes sense in installed apps (#488) 2022-11-05 16:13:37 +00:00
Taranjeet Singh
7c88b2d191
📝 Add note about how subcommands with function names using underscores are converted to dashes (#403)
Co-authored-by: Sebastián Ramírez <tiangolo@gmail.com>
2022-11-05 15:39:04 +01:00
Fernando Pérez-García
7345567538
📝 Fix typo in docs at docs/tutorial/commands/help.md (#466)
Co-authored-by: Sebastián Ramírez <tiangolo@gmail.com>
2022-11-05 14:33:39 +00:00
Jakub Jakubec
523a6501bf
✏ Fix link in docs to datetime.strptime() (#464)
Co-authored-by: Sebastián Ramírez <tiangolo@gmail.com>
2022-11-05 14:32:02 +00:00
Sean McCarthy
aac4ce175c
✏ Update first-steps.md, clarify distinction between parameter and argument (#176)
Co-authored-by: Sebastián Ramírez <tiangolo@gmail.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2022-07-17 08:15:44 +00:00
Sebastián Ramírez
c750f8206e
Refactor and document handling pretty exceptions (#422)
* ♻️ Rename pretty_errors_ to pretty_exceptions_ to avoid confusion with validation errors

*  Add source examples for pretty_exceptions

* 📝 Add docs for pretty exceptions

* 🔧 Add Exceptions docs to MkDocs

*  Add tests for tutorial about exceptions

*  Update trackeback tests, remove tests covered by tutorial

*  Fix test for module
2022-07-12 21:06:51 +02:00
Sebastián Ramírez
33dcb53129
📝 Add docs for using Rich with Typer (#421) 2022-07-12 18:38:50 +00:00
Sebastián Ramírez
6208b5b208
Richify, add integrations with Rich everywhere (#419) 2022-07-12 16:45:43 +00:00
Sebastián Ramírez
252ed30936
Add pretty error tracebacks for user errors and support for Rich (#412) 2022-07-06 13:32:19 +02:00
Nils K
e56521f7dd
✏ Fix typo, "ASCII codes" to "ANSI escape sequences" (#308)
Co-authored-by: Sebastián Ramírez <tiangolo@gmail.com>
2022-07-04 11:20:17 +02:00
Christophe Gabard
f4a5ee1bef
📝 Clarify testing documentation about checking stderr (#335)
Co-authored-by: Sebastián Ramírez <tiangolo@gmail.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2022-07-02 17:36:25 +00:00
graue70
0fe8f472f5
✏ Fix typo in docs for CLI Option autocompletion (#288)
Co-authored-by: Sebastián Ramírez <tiangolo@gmail.com>
2022-05-12 19:17:49 +00:00
Brian Cohan
7f65b64d8b
🎨 Fix header format for "Standard Input" in docs/tutorial/printing.md (#386)
Co-authored-by: Sebastián Ramírez <tiangolo@gmail.com>
2022-05-12 19:14:59 +00:00
Kian-Meng Ang
cf7ffa4792
✏ Fix typo in docs/tutorial/terminating.md (#382)
Co-authored-by: Sebastián Ramírez <tiangolo@gmail.com>
2022-05-12 19:13:47 +00:00
Ryan Streur
d5223d6de4
✏ Fix syntax typo in docs/tutorial/package.md (#333)
Co-authored-by: Sebastián Ramírez <tiangolo@gmail.com>
2022-05-12 19:13:14 +00:00
Michael Rios
808a15f942
✏ Fix typo, duplicated word in docs/tutorial/options/required.md. (#316)
Co-authored-by: Sebastián Ramírez <tiangolo@gmail.com>
2022-05-12 19:12:34 +00:00
Roald Storm
a55c9b086b
✏ Fix minor typo in index.md (#274)
Co-authored-by: Sebastián Ramírez <tiangolo@gmail.com>
2022-05-12 19:07:19 +00:00
Nicoló Lino
2fc51f2c33
✏ Fix double "and" typo in first-steps tutorial (#225)
Co-authored-by: Sebastián Ramírez <tiangolo@gmail.com>
2022-05-12 19:05:04 +00:00
Diego Piloni
e61aa15596
🎨 Fix format in docs explaining datetime parameter type (#220)
Co-authored-by: Sebastián Ramírez <tiangolo@gmail.com>
2022-05-12 19:02:22 +00:00
Sebastián Ramírez
a1ee41186f
🔧 Add pre-commit config and formatting (#392) 2022-05-11 19:59:56 -05:00
Sebastián Ramírez
b97298181b
Add support for Click 8 while keeping compatibility with Click 7 (#317) 2021-08-30 09:57:12 +02:00
JAYATI SHRIVASTAVA
39a6552808
📝 Update docs with the new --help argument (#135)
Co-authored-by: Sebastián Ramírez <tiangolo@gmail.com>
2020-08-16 14:19:40 +02:00
Rupsi Kaushik
32436f0b1a
📝 Add Optional to docs for CLI Arguments and Options with a None default (#131)
Co-authored-by: Sebastián Ramírez <tiangolo@gmail.com>
2020-08-16 14:01:19 +02:00
Cathal O'Callaghan
26ccd5f6b7
📝 Add date string formats to docs (#122) 2020-08-16 13:27:44 +02:00
Sebastián Ramírez
89ddc35372
⬆ Upgrade Isort to version 5.x.x (#137)
* 🚚 Move docs src files to root docs_src

* 🚚 Update example includes from root docs_src

* 🚚 Import docs src examples for tests from docs_src

* ⬆️ Upgrade isort and configs

* 🎨 Update format in testing

* 🔧 Update configs with root docs_src

* 🔥 Remove obsolete/unecessary section in contributing guide

* 🎨 Re-format multi-file example

*  Revert format for multi-file examples

* 🔧 Add isort skips for multi-file examples
2020-07-09 22:09:53 +02:00
Sebastián Ramírez
15380ddc07
Add support for help for CLI arguments (#123)
*  Implement custom TyperCommand and TyperArgument

to support help in CLI Arguments

*  Update data models to store help for CLI Arguments

*  Add help to typer.Argument()

*  Use new TyperCommand and TyperArgument classes by default

to support CLI Arguments with help

*  Update failing test

*  Make showing default values default to true and support arguments hidden from help text

*  Add docs for CLI arguments with defaults, help, and new features

* 📝 Update CLI options with new show_default=True by default

* 📝 Add example of CLI arguments with tuples

* 📝 Update docs with new generated help text for CLI arguments

* 📝 Use Optional for None example in micro-intro to types

*  Add tests for new CLI argument features from docs examples

*  Update tests with new generated help text for CLI arguments

*  Add tests for CLI arguments with tuple defaults

* 🔧 Update MkDocs with new sections

*  make show_envvar default to True

*  Add docs for envvar in CLI arguments

*  Add tests for CLI arguments with env vars from docs

* 🎨 Add format to CLI usage examples in docs

* 🔧 Add section about CLI arguments with env vars to MkDocs

* 📝 Fix link in docs with new structure

* 🎨 Fix format in first-steps
2020-06-24 21:05:21 +02:00
Sebastián Ramírez
fe60816e56
📝 Add docs for __main__.py (#121) 2020-06-23 14:52:19 +02:00
Evan E. Baird
877cf18296
✏ Fix typo in docs (#98)
Co-authored-by: Sebastián Ramírez <tiangolo@gmail.com>
2020-06-22 19:19:46 +02:00
Sebastián Ramírez
57343e1402 🎨 Update format in docs 2020-06-22 19:05:58 +02:00
Evan E. Baird
a3316193be
✏ Fix typos and rewording in docs (#97) 2020-06-22 18:56:53 +02:00
Sebastián Ramírez
372efa998b
📝 Add emphasis note about using typer.echo instead of print (#89) 2020-04-18 12:46:55 +02:00
Sebastián Ramírez
a89fc4ebb7
white_check_mark: Add coverage instructions to tests (#72)
*  Add coverage instructions to tests

* 📝 Update docs note about coverage in features

* 🎨 Fix format

* 🎨 Update testing docs format
2020-03-19 14:44:43 +01:00
Sebastián Ramírez
0830c023b9
📝 Add docs section, build a package from scratch (#71)
* 📝 Add docs section, build a package from scratch

* 📝 Update Package docs

* ✏️ Fix internal links
2020-03-19 13:42:23 +01:00
Sebastián Ramírez
48698ff2ad
📝 Add docs for using Click with Typer (#70)
* 📝 Add docs for using Click with Typer

*  Add tests for integrating Click and Typer
2020-03-19 10:30:42 +01:00
Sebastián Ramírez
5a6379ffc6
Add docs for testing, password, version, context. Extra tests, include callback and autocompletion PR (#68)
*  Implement custom handling for callbacks with types

*  Implement type-based handling for completion functions

*  Add examples for custom completion

* 📝 Add docs for custom autocompletion

*  Add tests for autocompletion

*  Document using the context

*  Add tests for using the context

*  Add tests init for context

* 🔧 Update Mypy config

*  Add extra tests for completion

* ✏️ Fix format, typos, and minor texts

*  Update docs for printing, include stdout, stderr, and stdin

* ✏️ Add references to FastAPI, fix typos

* ✏️ Fix typo in Typer CLI

* 📝 Update docs for version

* 📝 Update docs for callbacks

* 📝 Update references to stdout/stderr in autocompletion

* 📝 Add docs for password in CLI option

* 📝 Add docs and tests for Testing

* 📝 Add new sections to docs

* 🎨 Fix formatting
2020-03-18 21:17:47 +01:00
Sebastián Ramírez
12eef051c8
🐛 Fix docs format with hl_lines (#65) 2020-03-12 10:46:32 +01:00
Sebastián Ramírez
96731c43be
Docs for Typer CLI (#64)
*  Add docs for Typer CLI

* 📝 Update references to Typer CLI in docs

* 🔧 Update tests to check files and linting before tests, to error out early

* 📝 Sync README.md with docs/index.md
2020-03-11 17:16:49 +01:00
Sebastián Ramírez
96b29e9639
Add support for Click 7.1.1 (#60)
* ⬆️ Upgrade required Click to 7.1.1 and pin it to patch versions

as a MINOR version broke compatibility, so I'll have to upgrade manually every time

* 📌 Fix pinning Click to MINOR version

*  Upgrade code to be compatible with latest Click changes

*  Update tests with new format for errors

* 📝 Update docs to keep them in sync with actual output
2020-03-10 18:49:29 +01:00
Sebastián Ramírez
2af83b0be5 📝 Refactor docs with internal links 2020-01-18 19:35:49 +01:00
Sebastián Ramírez
fc902304b6 🎨 Tweak external link format 2020-01-17 16:27:17 +01:00
Sebastián Ramírez
5e063d8446 📝 Update docs for First Steps 2020-01-05 22:23:55 +01:00
Sebastián Ramírez
fb8622b8bb 📝 Add docs and examples for CLI parameters with multiple values 2020-01-05 22:09:41 +01:00
Sebastián Ramírez
421468c04c 📝 Add/extend docs and examples for param types. bool, int. 2020-01-05 21:52:46 +01:00
Sebastián Ramírez
56bb2576c4 📝 Add docs for callbacks and one or multiple commands 2020-01-05 21:37:44 +01:00
Sebastián Ramírez
daeb3b7656 Add docs and examples for subcommands 2020-01-05 20:47:16 +01:00
Sebastián Ramírez
b36c75b5a7 Add SubCommands sections 2020-01-04 02:25:02 +01:00
Sebastián Ramírez
bc4709cc9d 📝 Add docs for launching applications 2020-01-02 19:09:36 +01:00