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

Cleaner client constructors #92

Open
wants to merge 7 commits into
base: main
Choose a base branch
from

Conversation

melwil
Copy link
Contributor

@melwil melwil commented Oct 23, 2023

This PR aims to improve the constructor for new clients.

I've removed all code related to AsyncClient from client.py, and allowed you to directly make AsyncClient. This does mean it's a breaking change, but one that is easily caught by tests or type checkers.

There are a couple of reasons for this:

  • When typing up the client (PR Add return types to client functions. #68), the reasoning was that there should be less ambiguity about which types we are getting. Having new_client() making both types means that a typed project doesn't know if it has a Client or AsyncClient, and it has to be validated before use.
  • Allowing developers to specifically choose sync or async clients is just better, especially if for some reason one would use both, so that type checkers can validate properly.
  • Removed the environment variable support for making sync/async client, since it makes no sense to configure this on runtime. The clients are not interchangeable, you need to await async calls, and you either programmed for this or you didn't.

Finally, I will concede that it's not the greatest idea to repeat the code for getting the env vars and validating them in both constructors, it could be moved to some sort of utility function. I can do that if desireable, but in this case it's not a great chance for reusability.

@codecov-commenter
Copy link

Codecov Report

Attention: 9 lines in your changes are missing coverage. Please review.

Comparison is base (8b31f93) 77.08% compared to head (708a6cc) 76.83%.

❗ Your organization needs to install the Codecov GitHub app to enable full functionality.

Additional details and impacted files
@@            Coverage Diff             @@
##             main      #92      +/-   ##
==========================================
- Coverage   77.08%   76.83%   -0.25%     
==========================================
  Files          27       27              
  Lines        1933     1943      +10     
==========================================
+ Hits         1490     1493       +3     
- Misses        443      450       +7     
Files Coverage Δ
src/onepasswordconnectsdk/__init__.py 100.00% <100.00%> (ø)
src/tests/test_client_items.py 100.00% <100.00%> (ø)
src/tests/test_client_vaults.py 100.00% <100.00%> (ø)
src/onepasswordconnectsdk/client.py 62.87% <66.66%> (-0.50%) ⬇️
src/onepasswordconnectsdk/async_client.py 63.09% <38.46%> (-2.07%) ⬇️

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

@volodymyrZotov
Copy link
Contributor

@melwil Agree on the changes you've introduced, that will make it work well for type checkers. However, it will be a breaching change, as in case somebody's already used the client with is_async parameter, this new version will break for them. But there is no problem with that, we can release v2.0.0 an mention this change in the release notes.

Could you resolve the conflict, please?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants