Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

✨ feat: json and bytes field support in options #985

Open
wants to merge 19 commits into
base: master
Choose a base branch
from

Conversation

mhkarimi1383
Copy link

@mhkarimi1383 mhkarimi1383 commented Sep 9, 2024

Hi

Some times there is a need to have results as bytes (that is builtin supported by click.STRING)
and also there is a need of decoding entire value as an json object (useful when some params are too dynamic or getting that option in a prompt). I wanted to also add pydantic support (for both single option as json and all of the options in a single model) there and also use orjson (by checking if that's installed as an optional dependency), If that's Ok.

@svlandeg svlandeg added the feature New feature, enhancement or request label Sep 10, 2024
Copy link

📝 Docs preview for commit 137e1bc at: https://5f9b3d47.typertiangolo.pages.dev

Signed-off-by: Muhammed Hussein Karimi <[email protected]>
Copy link

📝 Docs preview for commit 0f5a1b3 at: https://ae7752e5.typertiangolo.pages.dev

Copy link

📝 Docs preview for commit 432a48c at: https://b02f882e.typertiangolo.pages.dev

Signed-off-by: Muhammed Hussein Karimi <[email protected]>
@mhkarimi1383 mhkarimi1383 changed the title ✨ feat: json and bytes field suppport in options ✨ feat: json and bytes field support in options Sep 10, 2024
Copy link

Signed-off-by: Muhammed Hussein Karimi <[email protected]>
Copy link

@mhkarimi1383
Copy link
Author

@svlandeg it's ok to ignore coverage on newly created class?

@svlandeg
Copy link
Member

No, in general we really need all the code in the main modules to be fully tested 🙏

Copy link

Copy link

@mhkarimi1383
Copy link
Author

mhkarimi1383 commented Sep 17, 2024

@svlandeg

I have added tests for newly created class

coverage is 100% again :)

@mhkarimi1383
Copy link
Author

If changes are Ok so far I can work on Pydantic support, Or move Pydantic support in another PR?

@svlandeg

@svlandeg
Copy link
Member

HI @mhkarimi1383!

We haven't yet been able to review this PR in detail. When we do, we'll update here. No need to ping individual maintainers in the meantime 😉

In terms of adding more functionality, it's always best to open separate PRs for distinct functionality. It makes the review process much easier if one PR deals with one "atomic" change.

Do have a look at existing PRs - if I recall correctly there's already a few PRs open with proposals for Pydantic support.

@svlandeg svlandeg self-assigned this Oct 23, 2024
@svlandeg
Copy link
Member

svlandeg commented Jan 8, 2025

Thanks again for this PR @mhkarimi1383! I'm going to start reviewing it in detail and will push some changes directly to your branch as I'm working on this. I'll put this PR in draft while I do so.

@svlandeg svlandeg marked this pull request as draft January 8, 2025 15:19
Copy link

github-actions bot commented Jan 8, 2025

@svlandeg
Copy link
Member

svlandeg commented Jan 8, 2025

Related issue: #130

Copy link

Copy link

Copy link

Copy link

Copy link
Member

@svlandeg svlandeg left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think the status of this PR should now be good enough for me to pass it onwards to Tiangolo for further review 🙏

@svlandeg svlandeg marked this pull request as ready for review January 10, 2025 16:28
@svlandeg svlandeg removed their assignment Jan 10, 2025
@mhkarimi1383
Copy link
Author

We are calling it dict, but cli arg should be provided as JSON since we are using json to parse input

@svlandeg
Copy link
Member

We are calling it dict, but cli arg should be provided as JSON since we are using json to parse input

Yea, I'm a little on the fence as to what to call it best. In the tutorial it's about parameter types and there it is typed as a dict though... Will let Sebastián weigh in on this one.

@mhkarimi1383
Copy link
Author

Yeah, but I think in the repr we can call it JSON, So CLi users that they want to use our application should know that the input has to be JSON

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feature New feature, enhancement or request
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants