Commit graph

10 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
Matthias Bach
416c612fb2
👷‍♂️ Consistently use sys.executable to run subprocesses, needed by OpenSUSE (#408)
Co-authored-by: Sebastián Ramírez <tiangolo@gmail.com>
2022-11-07 19:01:54 +01:00
Sebastián Ramírez
6208b5b208
Richify, add integrations with Rich everywhere (#419) 2022-07-12 16:45:43 +00:00
Irvin Ho
722a4febf5
🐛 Fix type conversion for List and Tuple and their internal types (#143)
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 19:26:03 +02:00
Leron Gray
778d5bdb61
🐛 Fix context_settings for a Typer app with a single command (#210)
Co-authored-by: Sebastián Ramírez <tiangolo@gmail.com>
2022-07-02 18:36:55 +02: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
Sebastián Ramírez
a93e6b2f86
Add support for forward references (#93)
*  Add support for forward references

*  Add forward references test

* 🐛 Fix coverage in completion

* 🐛 Fix testing with Pytest and Pytest-sugar

* 📌 Pin Pytest
2020-04-26 15:42:13 +02: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
1d3337a4da
Re-implement completion, fixes, add PowerShell support (#66)
*  Re-implement completion

*  Add tests for re-implemented completion

* 🎨 Move mypy config to file

* 🙈 Update .gitignore

*  Remove click-completion, add support for autodetection with shellingham

*  Fix test for PowerShell

* 🐛 Fix PowerShell permissions/test

* 🎨 Format test

* 🏁 Fix PowerShell script for Windows and PowerShell 5

* 📝 Update docs, internal implementation of completion
2020-03-16 13:21:58 +01:00
Sebastián Ramírez
3efee0a551 Add 4 extra tests for edge cases 2020-01-05 22:20:54 +01:00