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

fix!: make datacenter argument optional when creating a primary ip #363

Conversation

jooola
Copy link
Member

@jooola jooola commented Feb 19, 2024

Create a primary ips assigned to a resource without having to pass the datacenter argument.

@jooola
Copy link
Member Author

jooola commented Feb 19, 2024

This is a breaking change, but I'd argue it is a necessary bug fix.

@apricote Should we release a v2, and try to pack a few breaking changes in addition to this one?

Copy link

codecov bot commented Feb 19, 2024

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 92.97%. Comparing base (6b977e2) to head (ee62dea).
Report is 39 commits behind head on main.

Additional details and impacted files
@@           Coverage Diff           @@
##             main     #363   +/-   ##
=======================================
  Coverage   92.96%   92.97%           
=======================================
  Files          64       64           
  Lines        2873     2874    +1     
=======================================
+ Hits         2671     2672    +1     
  Misses        202      202           

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

@apricote
Copy link
Member

This is a breaking change, but I'd argue it is a necessary bug fix.

@apricote Should we release a v2, and try to pack a few breaking changes in addition to this one?

To be sure, this is breaking change for the reasons outlined in #223?

Is it possible to just define the = None for the datacenter argument in its current position? While it does "fix" the issue for callers using positional arguments, it allows callers to use named arguments instead for the remaining two required arguments name and type and omit datacenter. Not sure if thats possible in Python though.

@jooola
Copy link
Member Author

jooola commented Feb 20, 2024

To be sure, this is breaking change for the reasons outlined in #223?

Sort of, adding the star in the argument list will help us to prevent this specific problem in the future indeed. But I am not sure if implementing #223 is a good idea right now, as it will break a LOT of functions.

Is it possible to just define the = None for the datacenter argument in its current position? While it does "fix" the issue for callers using positional arguments, it allows callers to use named arguments instead for the remaining two required arguments name and type and omit datacenter. Not sure if thats possible in Python though.

Python does not allow having optional arguments before required arguments, we MUST move the required name argument before the datacenter one. The order is the breaking change:

-client.primary_ips.create("ipv4", None, "my-ip", assignee_id=12345)
+client.primary_ips.create("ipv4", "my-ip", assignee_id=12345)
-client.primary_ips.create("ipv4", datacenter, "my-ip")
+client.primary_ips.create("ipv4", "my-ip", datacenter)

Using named arguments should be safe with the breaking change:

client.primary_ips.create(type="ipv4", datacenter=None, name="my-ip", assignee_id=12345)

@jooola jooola added this to the v2.0.0 milestone Mar 15, 2024
Copy link

This PR has been marked as stale because it has not had recent activity. The bot will close the PR if no further action occurs.

@github-actions github-actions bot added the Stale label Jun 13, 2024
@jooola jooola force-pushed the make-datacenter-argument-optional-when-creating-a-ip branch from 8252f5c to 3d34391 Compare July 1, 2024 16:38
Create a primary ips assigned to a resource without having to pass the datacenter argument.
@jooola jooola force-pushed the make-datacenter-argument-optional-when-creating-a-ip branch from 3d34391 to ee62dea Compare July 2, 2024 10:13
@jooola jooola merged commit ebef774 into hetznercloud:main Jul 2, 2024
10 checks passed
@jooola jooola deleted the make-datacenter-argument-optional-when-creating-a-ip branch July 2, 2024 10:20
jooola pushed a commit that referenced this pull request Jul 3, 2024
🤖 I have created a release *beep* *boop*
---


##
[2.0.0](v1.35.0...v2.0.0)
(2024-07-03)


### ⚠ BREAKING CHANGES

* return full rebuild response in `Client.servers.rebuild`
([#406](#406))
* make `datacenter` argument optional when creating a primary ip
([#363](#363))
* remove deprecated `include_wildcard_architecture` argument in
`IsosClient.get_list` and `IsosClient.get_all`
([#402](#402))
* make `Client.request` `tries` a private argument
([#399](#399))
* make `Client.poll_interval` a private property
([#398](#398))
* return empty dict on empty responses in `Client.request`
([#400](#400))
* remove deprecated `hcloud.hcloud` module
([#401](#401))
* move `hcloud.__version__.VERSION` to `hcloud.__version__`
([#397](#397))

### Features

* add `trace_id` to API exceptions
([#404](#404))
([8375261](8375261))
* allow using a custom poll_interval function
([#403](#403))
([93eb56b](93eb56b))
* make `Client.poll_interval` a private property
([#398](#398))
([d5f24db](d5f24db))
* make `Client.request` `tries` a private argument
([#399](#399))
([428ea7e](428ea7e))
* move `hcloud.__version__.VERSION` to `hcloud.__version__`
([#397](#397))
([4e3f638](4e3f638)),
closes [#234](#234)
* remove deprecated `hcloud.hcloud` module
([#401](#401))
([db37e63](db37e63))
* remove deprecated `include_wildcard_architecture` argument in
`IsosClient.get_list` and `IsosClient.get_all`
([#402](#402))
([6b977e2](6b977e2))
* return empty dict on empty responses in `Client.request`
([#400](#400))
([9f46adb](9f46adb))
* return full rebuild response in `Client.servers.rebuild`
([#406](#406))
([1970d84](1970d84))


### Bug Fixes

* make `datacenter` argument optional when creating a primary ip
([#363](#363))
([ebef774](ebef774))


### Dependencies

* update dependency coverage to >=7.5,<7.6
([#386](#386))
([5660691](5660691))
* update dependency mypy to >=1.10,<1.11
([#387](#387))
([35c933b](35c933b))
* update dependency myst-parser to v3
([#385](#385))
([9f18270](9f18270))
* update dependency pylint to >=3,<3.3
([#391](#391))
([4a6f005](4a6f005))
* update dependency pytest to >=8,<8.3
([#390](#390))
([584a36b](584a36b))
* update dependency sphinx to >=7.3.4,<7.4
([#383](#383))
([69c2e16](69c2e16))
* update pre-commit hook asottile/pyupgrade to v3.16.0
([0ce5fbc](0ce5fbc))
* update pre-commit hook pre-commit/pre-commit-hooks to v4.6.0
([5ef25ab](5ef25ab))
* update pre-commit hook psf/black-pre-commit-mirror to v24.4.0
([0941fbf](0941fbf))
* update pre-commit hook psf/black-pre-commit-mirror to v24.4.1
([fec08c5](fec08c5))
* update pre-commit hook psf/black-pre-commit-mirror to v24.4.2
([#389](#389))
([2b2e21f](2b2e21f))
* update pre-commit hook pycqa/flake8 to v7.1.0
([3bc651d](3bc651d))


### Documentation

* add v2 upgrade notes
([#405](#405))
([c77f771](c77f771))
* cx11 is name, not an id
([#381](#381))
([b745d40](b745d40))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants