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

gh-117398: datetime: Use wrappers for C-API functions #118115

Closed
wants to merge 9 commits into from
Closed

gh-117398: datetime: Use wrappers for C-API functions #118115

wants to merge 9 commits into from

Conversation

neonene
Copy link
Contributor

@neonene neonene commented Apr 19, 2024

This introduces the following wrapper functions for the public C-API, so that the wrapped functions can have more arguments, such as a module state:

  • new_datetime_nofold_capi() wraps the new_datetime_ex funcion
  • new_time_nofold_capi(), renamed from new_time_ex, as it is internally unused.
  • new_timezone_capi() wraps the new_timezone funcion
  • new_datetime_capi() wraps the new_datetime_ex2 funcion
  • new_time_capi() wraps the new_time_ex2 funcion
  • new_date_capi() wraps the new_date_ex function
  • new_delta_capi() wraps the new_delta_ex function
  • datetime_fromtimestamp_capi() wraps the datetime_fromtimestamp function

Subsequently, some internal *_ex?() functions are renamed as well.
The wrappers need to get a module state from the C-API class or a given object's type.


cc @vstinner @erlend-aasland: I'd like to prepare as much as possible.

This introduces the following wrapper functions for the public C-API, so that the wrapped functions (`_capi` un-suffixed) can have more arguments, such as a module state:

 * `new_datetime_ex_capi()`
 * `new_time_ex_capi()`, renamed from `new_time_ex`, as it is internally unused.
 * `new_timezone_capi()`
 * `new_datetime_ex2_capi()`
 * `new_time_ex2_capi()`

The wrappers need to get a module state from the C-API class or a given object's type.
@@ -1047,6 +1047,24 @@ new_datetime_ex(int year, int month, int day, int hour, int minute,
tzinfo, 0, type);
}

static PyObject *
new_datetime_ex_capi(int year, int month, int day, int hour, int minute,
Copy link
Member

Choose a reason for hiding this comment

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

I don't think that "_ex" is useful. Just rename it to "new_datetime_capi", no? Same remark for other functions.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Your suggestion includes non-capi functions?

@neonene
Copy link
Contributor Author

neonene commented Apr 21, 2024

87408a9 is an attempt to strip _ex? from the non-capi functions except reduce().

@neonene neonene closed this May 23, 2024
@neonene neonene deleted the wrapper branch May 23, 2024 14:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants