From 086e0382082457ad1a0e69f4b583ade258dd6dce Mon Sep 17 00:00:00 2001 From: noatamir <6564007+noatamir@users.noreply.github.com> Date: Wed, 15 Feb 2023 17:53:47 +0100 Subject: [PATCH 01/19] init pdep0 revision. Need to add links. --- .../pdeps/0001-purpose-and-guidelines.md | 82 +++++++++++++++---- 1 file changed, 66 insertions(+), 16 deletions(-) diff --git a/web/pandas/pdeps/0001-purpose-and-guidelines.md b/web/pandas/pdeps/0001-purpose-and-guidelines.md index e09c5bd01204f..5e6bb304b5b34 100644 --- a/web/pandas/pdeps/0001-purpose-and-guidelines.md +++ b/web/pandas/pdeps/0001-purpose-and-guidelines.md @@ -12,15 +12,21 @@ A PDEP (pandas enhancement proposal) is a proposal for a **major** change in pandas, in a similar way as a Python [PEP](https://peps.python.org/pep-0001/) or a NumPy [NEP](https://numpy.org/neps/nep-0000.html). -Bug fixes and conceptually minor changes (e.g. adding a parameter to a function) -are out of the scope of PDEPs. A PDEP should be used for changes that are not -immediate and not obvious, and are expected to require a significant amount of -discussion and require detailed documentation before being implemented. - -PDEP are appropriate for user facing changes, internal changes and organizational -discussions. Examples of topics worth a PDEP could include moving a module from -pandas to a separate repository, a refactoring of the pandas block manager or -a proposal of a new code of conduct. +Bug fixes and conceptually minor changes (e.g. adding a parameter to a function) are out of the +scope of PDEPs. A PDEP should be used for changes that are not immediate and not obvious, when +everybody in the pandas community needs to be aware of the possibility of an upcoming change. +Such changes require detailed documentation before being implemented and frequently lead to a +significant discussion within the community. + +PDEP are appropriate for user facing changes, internal changes and significant discussions. +Examples of topics worth a PDEP could include substantial API changes, breaking behavior changes, +moving a module from pandas to a separate repository, a refactoring of the pandas block manager +or a proposal of a new code of conduct. It is not always trivial to know which issue has enough +scope to require the full PDEP process. Some simple API changes have sufficient consensus among +the core team, and minimal impact on the community. On the other hand, if an issue becomes +controversial, i.e. it generated a significant discussion, one could suggest opening a PDEP to +formalize and document the discussion, making it easier for the wider community to participate. +For context, see the list of issues that could have been a PDEP at the bottom of this page. ## PDEP guidelines @@ -40,11 +46,11 @@ consider when writing a PDEP are: ### PDEP authors -Anyone can propose a PDEP, but in most cases developers of pandas itself and related -projects are expected to author PDEPs. If you are unsure if you should be opening -an issue or creating a PDEP, it's probably safe to start by -[opening an issue](https://github.com/pandas-dev/pandas/issues/new/choose), which can -be eventually moved to a PDEP. +Anyone can propose a PDEP, but core members need to sponsor a proposal made by non-core +contributors. To submit a PDEP as a community member, please propose the PDEP concept on +[an issue](https://github.com/pandas-dev/pandas/issues/new/choose), and find a pandas team +member to collaborate with. They can co-author the PDEP with you and submit it to the PDEPs +repository. ### Workflow @@ -63,8 +69,11 @@ Proposing a PDEP is done by creating a PR adding a new file to `web/pdeps/`. The file is a markdown file, you can use `web/pdeps/0001.md` as a reference for the expected format. -The initial status of a PDEP will be `Status: Under discussion`. This will be changed -to `Status: Accepted` when the PDEP is ready and have the approval of the core team. +The initial status of a PDEP will be `Status: Draft`. Once it is ready for discussion, the author(s) +change it to `Status: Under discussion`, and the following are notified: core and triage teams +and the pandas-dev mailing list. This will be changed to `Status: Accepted` when the PDEP is ready +and have the approval of the core team. + #### Accepted PDEP @@ -123,6 +132,47 @@ be edited, its `Revision: X` label will be increased by one, and a note will be to the `PDEP-N history` section. This will let readers understand that the PDEP has changed and avoid confusion. +## List of issues that could have been PDEPs for context +### Clear examples for potential PDEPs: +- Adding a new parameter to many existing methods, or deprecating one in many places. For example: + - The numeric_only deprecation affected many methods and could have been a PDEP. +- Adding a new data type has impact on a variety of places that need to handle the data type. + Such wide-ranging impact would require a PDEP. For example: + - Categorical (GH-7217, GH-8074), StringDtype (GH-8640), ArrowDtype +- A significant (breaking) change in existing behavior. For example: + - copy/view changes (GH-36195) +- Support of new python features with a wide impact on the project. For example: + - Supporting typing within pandas vs. creation of pandas-stubs (GH-43197, GH-45253) New + required dependency + +### Borderline examples: +- Small changes to core functionality, such as DataFrame and Series, should always be considered + as a PDEP candidate as it will likely have a big impact on users. But the same types of changes in other methods would not be good PDEP candidates. That said, any discussion, no matter how small the change, which becomes controversial is a PDEP candidate. Consider if more attention and/or a formal decision-making process would help. Following are some examples we hope can help clarify our meaning here: +- API breaking changes, or discussion thereof, could be a PDEP. For example: + - Value counts rename (GH-49497). The scope doesn’t justify a PDEP at first, but later a + discussion about whether it should be executed as breaking change or with deprecation emerges, which could benefit from a PDEP process. +- Adding new parameters or methods to an existing method typically won't require a PDEP for + non-core features. For example: + - Both dropna(percentage) (GH-35299), and Timestamp.normalize() (GH-8794) wouldn't have + required a PDEP. + - On the other hand, DataFrame.assign() might. While it's a single method without backwards + compatibility concerns, it’s also a core feature and the discussion should be highly visible. +- Deprecating or removing a single method would not require a PDEP in most cases. For example: + - DataFrame.xs (GH-6249) is an example of depredations on core features that would be good a + candidate for a PDEP. +- Changing the default value of parameters in a core pandas method is another edge case. For + example: + - Such changes in dropna, DataFrame.groupby, or in Series.groupby could be PDEPs. +- New top level modules and/or exposing internal classes. For example: + - Add pandas.api.typing (GH-48577) is relatively small and wouldn’t necessarily require a PDEP. + +### A counter-example: +- Significant changes to developer/contributor processes don't require a PDEP as they aren't +going to have an impact on users. For example: + - Changing the build system to meson + + ### PDEP-1 History - 3 August 2022: Initial version +- 15 February 2023: Revision 1 From 665a5e621141e0adfde994996dd6bb7c42407e52 Mon Sep 17 00:00:00 2001 From: noatamir <6564007+noatamir@users.noreply.github.com> Date: Wed, 15 Feb 2023 23:15:52 +0100 Subject: [PATCH 02/19] added links --- .../pdeps/0001-purpose-and-guidelines.md | 50 +++++++++++++------ 1 file changed, 34 insertions(+), 16 deletions(-) diff --git a/web/pandas/pdeps/0001-purpose-and-guidelines.md b/web/pandas/pdeps/0001-purpose-and-guidelines.md index 5e6bb304b5b34..6ef1c08f68b06 100644 --- a/web/pandas/pdeps/0001-purpose-and-guidelines.md +++ b/web/pandas/pdeps/0001-purpose-and-guidelines.md @@ -26,7 +26,7 @@ scope to require the full PDEP process. Some simple API changes have sufficient the core team, and minimal impact on the community. On the other hand, if an issue becomes controversial, i.e. it generated a significant discussion, one could suggest opening a PDEP to formalize and document the discussion, making it easier for the wider community to participate. -For context, see the list of issues that could have been a PDEP at the bottom of this page. +For context, see [the list of issues that could have been a PDEP](#List-of-issues). ## PDEP guidelines @@ -132,43 +132,49 @@ be edited, its `Revision: X` label will be increased by one, and a note will be to the `PDEP-N history` section. This will let readers understand that the PDEP has changed and avoid confusion. -## List of issues that could have been PDEPs for context +## List of issues that could have been PDEPs for context ### Clear examples for potential PDEPs: - Adding a new parameter to many existing methods, or deprecating one in many places. For example: - The numeric_only deprecation affected many methods and could have been a PDEP. - Adding a new data type has impact on a variety of places that need to handle the data type. Such wide-ranging impact would require a PDEP. For example: - - Categorical (GH-7217, GH-8074), StringDtype (GH-8640), ArrowDtype + - Categorical ([GH-7217][7217], [GH-8074][8074]), StringDtype ([GH-8640][8640]), ArrowDtype - A significant (breaking) change in existing behavior. For example: - - copy/view changes (GH-36195) + - copy/view changes ([GH-36195][36195]) - Support of new python features with a wide impact on the project. For example: - - Supporting typing within pandas vs. creation of pandas-stubs (GH-43197, GH-45253) New - required dependency + - Supporting typing within pandas vs. creation of pandas-stubs ([GH-43197][43197], + [GH-45253][45253]) New required dependency ### Borderline examples: - Small changes to core functionality, such as DataFrame and Series, should always be considered - as a PDEP candidate as it will likely have a big impact on users. But the same types of changes in other methods would not be good PDEP candidates. That said, any discussion, no matter how small the change, which becomes controversial is a PDEP candidate. Consider if more attention and/or a formal decision-making process would help. Following are some examples we hope can help clarify our meaning here: + as a PDEP candidate as it will likely have a big impact on users. But the same types of + changes in other methods would not be good PDEP candidates. That said, any discussion, no + matter how small the change, which becomes controversial is a PDEP candidate. Consider if more + attention and/or a formal decision-making process would help. Following are some examples we + hope can help clarify our meaning here: - API breaking changes, or discussion thereof, could be a PDEP. For example: - - Value counts rename (GH-49497). The scope doesn’t justify a PDEP at first, but later a - discussion about whether it should be executed as breaking change or with deprecation emerges, which could benefit from a PDEP process. + - Value counts rename ([GH-49497][49497]). The scope doesn’t justify a PDEP at first, but later a + discussion about whether it should be executed as breaking change or with deprecation + emerges, which could benefit from a PDEP process. - Adding new parameters or methods to an existing method typically won't require a PDEP for non-core features. For example: - - Both dropna(percentage) (GH-35299), and Timestamp.normalize() (GH-8794) wouldn't have - required a PDEP. + - Both dropna(percentage) ([GH-35299][35299]), and Timestamp.normalize() ([GH-8794][8794]) + wouldn't have required a PDEP. - On the other hand, DataFrame.assign() might. While it's a single method without backwards compatibility concerns, it’s also a core feature and the discussion should be highly visible. - Deprecating or removing a single method would not require a PDEP in most cases. For example: - - DataFrame.xs (GH-6249) is an example of depredations on core features that would be good a - candidate for a PDEP. + - DataFrame.xs ([GH-6249][6249]) is an example of depredations on core features that would be + good a candidate for a PDEP. - Changing the default value of parameters in a core pandas method is another edge case. For example: - Such changes in dropna, DataFrame.groupby, or in Series.groupby could be PDEPs. - New top level modules and/or exposing internal classes. For example: - - Add pandas.api.typing (GH-48577) is relatively small and wouldn’t necessarily require a PDEP. + - Add pandas.api.typing ([GH-48577][48577]) is relatively small and wouldn’t necessarily + require a PDEP. ### A counter-example: -- Significant changes to developer/contributor processes don't require a PDEP as they aren't -going to have an impact on users. For example: +- Significant changes to contributors' processes don't require a PDEP as they aren't going to + have an impact on users. For example: - Changing the build system to meson @@ -176,3 +182,15 @@ going to have an impact on users. For example: - 3 August 2022: Initial version - 15 February 2023: Revision 1 + +[7217]: https://github.com/pandas-dev/pandas/pull/7217 +[8074]: https://github.com/pandas-dev/pandas/issues/8074 +[8640]: https://github.com/pandas-dev/pandas/issues/8640 +[36195]: https://github.com/pandas-dev/pandas/issues/36195 +[43197]: https://github.com/pandas-dev/pandas/issues/43197 +[45253]: https://github.com/pandas-dev/pandas/issues/45253 +[49497]: https://github.com/pandas-dev/pandas/issues/49497 +[35299]: https://github.com/pandas-dev/pandas/issues/35299 +[8794]: https://github.com/pandas-dev/pandas/issues/8794 +[6249]: https://github.com/pandas-dev/pandas/issues/6249 +[48577]: https://github.com/pandas-dev/pandas/issues/48577 From 07144d36e675676b3253369017c368c8d0165dc3 Mon Sep 17 00:00:00 2001 From: noatamir <6564007+noatamir@users.noreply.github.com> Date: Thu, 16 Feb 2023 00:27:34 +0100 Subject: [PATCH 03/19] formatting --- .../pdeps/0001-purpose-and-guidelines.md | 24 ++++++++++--------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/web/pandas/pdeps/0001-purpose-and-guidelines.md b/web/pandas/pdeps/0001-purpose-and-guidelines.md index 6ef1c08f68b06..1e02bdd937628 100644 --- a/web/pandas/pdeps/0001-purpose-and-guidelines.md +++ b/web/pandas/pdeps/0001-purpose-and-guidelines.md @@ -18,7 +18,7 @@ everybody in the pandas community needs to be aware of the possibility of an upc Such changes require detailed documentation before being implemented and frequently lead to a significant discussion within the community. -PDEP are appropriate for user facing changes, internal changes and significant discussions. +PDEPs are appropriate for user facing changes, internal changes and significant discussions. Examples of topics worth a PDEP could include substantial API changes, breaking behavior changes, moving a module from pandas to a separate repository, a refactoring of the pandas block manager or a proposal of a new code of conduct. It is not always trivial to know which issue has enough @@ -135,18 +135,19 @@ changed and avoid confusion. ## List of issues that could have been PDEPs for context ### Clear examples for potential PDEPs: - Adding a new parameter to many existing methods, or deprecating one in many places. For example: - - The numeric_only deprecation affected many methods and could have been a PDEP. + - The `numeric_only` deprecation affected many methods and could have been a PDEP. - Adding a new data type has impact on a variety of places that need to handle the data type. Such wide-ranging impact would require a PDEP. For example: - - Categorical ([GH-7217][7217], [GH-8074][8074]), StringDtype ([GH-8640][8640]), ArrowDtype + - `Categorical` ([GH-7217][7217], [GH-8074][8074]), `StringDtype` ([GH-8640][8640]), `ArrowDtype` - A significant (breaking) change in existing behavior. For example: - copy/view changes ([GH-36195][36195]) - Support of new python features with a wide impact on the project. For example: - Supporting typing within pandas vs. creation of pandas-stubs ([GH-43197][43197], - [GH-45253][45253]) New required dependency + [GH-45253][45253]) +- New required dependency ### Borderline examples: -- Small changes to core functionality, such as DataFrame and Series, should always be considered +- Small changes to core functionality, such as `DataFrame` and `Series`, should always be considered as a PDEP candidate as it will likely have a big impact on users. But the same types of changes in other methods would not be good PDEP candidates. That said, any discussion, no matter how small the change, which becomes controversial is a PDEP candidate. Consider if more @@ -158,24 +159,24 @@ changed and avoid confusion. emerges, which could benefit from a PDEP process. - Adding new parameters or methods to an existing method typically won't require a PDEP for non-core features. For example: - - Both dropna(percentage) ([GH-35299][35299]), and Timestamp.normalize() ([GH-8794][8794]) + - Both `dropna(percentage)` ([GH-35299][35299]), and `Timestamp.normalize()` ([GH-8794][8794]) wouldn't have required a PDEP. - - On the other hand, DataFrame.assign() might. While it's a single method without backwards + - On the other hand, `DataFrame.assign()` might. While it's a single method without backwards compatibility concerns, it’s also a core feature and the discussion should be highly visible. - Deprecating or removing a single method would not require a PDEP in most cases. For example: - - DataFrame.xs ([GH-6249][6249]) is an example of depredations on core features that would be + - `DataFrame.xs` ([GH-6249][6249]) is an example of deprecations on core features that would be good a candidate for a PDEP. - Changing the default value of parameters in a core pandas method is another edge case. For example: - - Such changes in dropna, DataFrame.groupby, or in Series.groupby could be PDEPs. + - Such changes in `dropna`, `DataFrame.groupby`, or in `Series.groupby` could be PDEPs. - New top level modules and/or exposing internal classes. For example: - - Add pandas.api.typing ([GH-48577][48577]) is relatively small and wouldn’t necessarily + - Add pandas.api.typing` ([GH-48577][48577]) is relatively small and wouldn’t necessarily require a PDEP. ### A counter-example: - Significant changes to contributors' processes don't require a PDEP as they aren't going to have an impact on users. For example: - - Changing the build system to meson + - Changing the build system to meson ([GH-49115][49115]) ### PDEP-1 History @@ -194,3 +195,4 @@ changed and avoid confusion. [8794]: https://github.com/pandas-dev/pandas/issues/8794 [6249]: https://github.com/pandas-dev/pandas/issues/6249 [48577]: https://github.com/pandas-dev/pandas/issues/48577 +[49115]: https://github.com/pandas-dev/pandas/pull/49115 From 353fb5885b1ebe6bc879cd0e9a7075bbaa4a5264 Mon Sep 17 00:00:00 2001 From: noatamir <6564007+noatamir@users.noreply.github.com> Date: Thu, 16 Feb 2023 00:28:27 +0100 Subject: [PATCH 04/19] formatting --- web/pandas/pdeps/0001-purpose-and-guidelines.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web/pandas/pdeps/0001-purpose-and-guidelines.md b/web/pandas/pdeps/0001-purpose-and-guidelines.md index 1e02bdd937628..e591b9db01ea2 100644 --- a/web/pandas/pdeps/0001-purpose-and-guidelines.md +++ b/web/pandas/pdeps/0001-purpose-and-guidelines.md @@ -170,7 +170,7 @@ changed and avoid confusion. example: - Such changes in `dropna`, `DataFrame.groupby`, or in `Series.groupby` could be PDEPs. - New top level modules and/or exposing internal classes. For example: - - Add pandas.api.typing` ([GH-48577][48577]) is relatively small and wouldn’t necessarily + - Add `pandas.api.typing` ([GH-48577][48577]) is relatively small and wouldn’t necessarily require a PDEP. ### A counter-example: From 3102dce09957b4ee08db8dbd7d41d1b6967ff426 Mon Sep 17 00:00:00 2001 From: noatamir <6564007+noatamir@users.noreply.github.com> Date: Thu, 16 Feb 2023 00:33:05 +0100 Subject: [PATCH 05/19] formatting --- web/pandas/pdeps/0001-purpose-and-guidelines.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/web/pandas/pdeps/0001-purpose-and-guidelines.md b/web/pandas/pdeps/0001-purpose-and-guidelines.md index e591b9db01ea2..95a7e03ddcd62 100644 --- a/web/pandas/pdeps/0001-purpose-and-guidelines.md +++ b/web/pandas/pdeps/0001-purpose-and-guidelines.md @@ -140,9 +140,9 @@ changed and avoid confusion. Such wide-ranging impact would require a PDEP. For example: - `Categorical` ([GH-7217][7217], [GH-8074][8074]), `StringDtype` ([GH-8640][8640]), `ArrowDtype` - A significant (breaking) change in existing behavior. For example: - - copy/view changes ([GH-36195][36195]) + - Copy/view changes ([GH-36195][36195]) - Support of new python features with a wide impact on the project. For example: - - Supporting typing within pandas vs. creation of pandas-stubs ([GH-43197][43197], + - Supporting typing within pandas vs. creation of `pandas-stubs` ([GH-43197][43197], [GH-45253][45253]) - New required dependency From 0a6062c1c209144e9b5b1179b0b9187bbbfa8a88 Mon Sep 17 00:00:00 2001 From: noatamir <6564007+noatamir@users.noreply.github.com> Date: Wed, 15 Mar 2023 18:17:20 +0100 Subject: [PATCH 06/19] incorporating feedback --- .../pdeps/0001-purpose-and-guidelines.md | 52 +++++++++++-------- 1 file changed, 29 insertions(+), 23 deletions(-) diff --git a/web/pandas/pdeps/0001-purpose-and-guidelines.md b/web/pandas/pdeps/0001-purpose-and-guidelines.md index 95a7e03ddcd62..839f28ac2444a 100644 --- a/web/pandas/pdeps/0001-purpose-and-guidelines.md +++ b/web/pandas/pdeps/0001-purpose-and-guidelines.md @@ -4,7 +4,7 @@ - Status: Accepted - Discussion: [#47444](https://github.com/pandas-dev/pandas/pull/47444) - Author: [Marc Garcia](https://github.com/datapythonista) -- Revision: 1 +- Revision: 2 ## PDEP definition, purpose and scope @@ -20,13 +20,13 @@ significant discussion within the community. PDEPs are appropriate for user facing changes, internal changes and significant discussions. Examples of topics worth a PDEP could include substantial API changes, breaking behavior changes, -moving a module from pandas to a separate repository, a refactoring of the pandas block manager -or a proposal of a new code of conduct. It is not always trivial to know which issue has enough -scope to require the full PDEP process. Some simple API changes have sufficient consensus among -the core team, and minimal impact on the community. On the other hand, if an issue becomes -controversial, i.e. it generated a significant discussion, one could suggest opening a PDEP to -formalize and document the discussion, making it easier for the wider community to participate. -For context, see [the list of issues that could have been a PDEP](#List-of-issues). +moving a module from pandas to a separate repository, or a refactoring of the pandas block manager. +It is not always trivial to know which issue has enough scope to require the full PDEP process. +Some simple API changes have sufficient consensus among the core team, and minimal impact on the +community. On the other hand, if an issue becomes controversial, i.e. it generated a significant +discussion, one could suggest opening a PDEP to formalize and document the discussion, making it +easier for the wider community to participate. For context, see +[the list of issues that could have been a PDEP](#List-of-issues). ## PDEP guidelines @@ -46,11 +46,11 @@ consider when writing a PDEP are: ### PDEP authors -Anyone can propose a PDEP, but core members need to sponsor a proposal made by non-core -contributors. To submit a PDEP as a community member, please propose the PDEP concept on +Anyone can propose a PDEP, but a core member should be engaged to advise on a proposal made by +non-core contributors. To submit a PDEP as a community member, please propose the PDEP concept on [an issue](https://github.com/pandas-dev/pandas/issues/new/choose), and find a pandas team -member to collaborate with. They can co-author the PDEP with you and submit it to the PDEPs -repository. +member to collaborate with. They can advise you on the PDEP process and should be listed as an +advisor on the PDEP when it is submitted to the PDEP repository. ### Workflow @@ -70,9 +70,10 @@ The file is a markdown file, you can use `web/pdeps/0001.md` as a reference for the expected format. The initial status of a PDEP will be `Status: Draft`. Once it is ready for discussion, the author(s) -change it to `Status: Under discussion`, and the following are notified: core and triage teams -and the pandas-dev mailing list. This will be changed to `Status: Accepted` when the PDEP is ready -and have the approval of the core team. +change it to `Status: Under discussion`, and the following are notified: core and triage teams +(by tagging them on GitHub: `@pandas-core`, `@triage teams`) and the +[pandas-dev mailing list](mailto:pandas-dev@python.org). This will be changed to `Status: +Accepted` when the PDEP is ready and have the approval of the core team. #### Accepted PDEP @@ -134,6 +135,7 @@ changed and avoid confusion. ## List of issues that could have been PDEPs for context ### Clear examples for potential PDEPs: + - Adding a new parameter to many existing methods, or deprecating one in many places. For example: - The `numeric_only` deprecation affected many methods and could have been a PDEP. - Adding a new data type has impact on a variety of places that need to handle the data type. @@ -144,15 +146,17 @@ changed and avoid confusion. - Support of new python features with a wide impact on the project. For example: - Supporting typing within pandas vs. creation of `pandas-stubs` ([GH-43197][43197], [GH-45253][45253]) -- New required dependency +- New required dependency. For example: + - Moving rarely used I/O connectors to a separate repository [GH-28409](28409) ### Borderline examples: -- Small changes to core functionality, such as `DataFrame` and `Series`, should always be considered - as a PDEP candidate as it will likely have a big impact on users. But the same types of - changes in other methods would not be good PDEP candidates. That said, any discussion, no - matter how small the change, which becomes controversial is a PDEP candidate. Consider if more - attention and/or a formal decision-making process would help. Following are some examples we - hope can help clarify our meaning here: +Small changes to core functionality, such as `DataFrame` and `Series`, should always be +considered as a PDEP candidate as it will likely have a big impact on users. But the same types +of changes in to functionalities would not be good PDEP candidates. That said, any discussion, +no matter how small the change, which becomes controversial is a PDEP candidate. Consider if more +attention and/or a formal decision-making process would help. Following are some examples we +hope can help clarify our meaning here: + - API breaking changes, or discussion thereof, could be a PDEP. For example: - Value counts rename ([GH-49497][49497]). The scope doesn’t justify a PDEP at first, but later a discussion about whether it should be executed as breaking change or with deprecation @@ -174,6 +178,7 @@ changed and avoid confusion. require a PDEP. ### A counter-example: + - Significant changes to contributors' processes don't require a PDEP as they aren't going to have an impact on users. For example: - Changing the build system to meson ([GH-49115][49115]) @@ -182,7 +187,7 @@ changed and avoid confusion. ### PDEP-1 History - 3 August 2022: Initial version -- 15 February 2023: Revision 1 +- 15 February 2023: Version 2 [7217]: https://github.com/pandas-dev/pandas/pull/7217 [8074]: https://github.com/pandas-dev/pandas/issues/8074 @@ -196,3 +201,4 @@ changed and avoid confusion. [6249]: https://github.com/pandas-dev/pandas/issues/6249 [48577]: https://github.com/pandas-dev/pandas/issues/48577 [49115]: https://github.com/pandas-dev/pandas/pull/49115 +[28409]: https://github.com/pandas-dev/pandas/issues/28409 From 1f7e52bb8a88240965331d3a85f397b589e3338d Mon Sep 17 00:00:00 2001 From: noatamir <6564007+noatamir@users.noreply.github.com> Date: Wed, 15 Mar 2023 19:41:42 +0100 Subject: [PATCH 07/19] revert status change --- web/pandas/pdeps/0001-purpose-and-guidelines.md | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/web/pandas/pdeps/0001-purpose-and-guidelines.md b/web/pandas/pdeps/0001-purpose-and-guidelines.md index 839f28ac2444a..ca3a1af1bf8c1 100644 --- a/web/pandas/pdeps/0001-purpose-and-guidelines.md +++ b/web/pandas/pdeps/0001-purpose-and-guidelines.md @@ -69,12 +69,8 @@ Proposing a PDEP is done by creating a PR adding a new file to `web/pdeps/`. The file is a markdown file, you can use `web/pdeps/0001.md` as a reference for the expected format. -The initial status of a PDEP will be `Status: Draft`. Once it is ready for discussion, the author(s) -change it to `Status: Under discussion`, and the following are notified: core and triage teams -(by tagging them on GitHub: `@pandas-core`, `@triage teams`) and the -[pandas-dev mailing list](mailto:pandas-dev@python.org). This will be changed to `Status: -Accepted` when the PDEP is ready and have the approval of the core team. - +The initial status of a PDEP will be `Status: Under discussion`. This will be changed to +`Status: Accepted` when the PDEP is ready and have the approval of the core team. #### Accepted PDEP From 04e051b913ac99ba83f0e9b4fdf7d375647f9c8a Mon Sep 17 00:00:00 2001 From: noatamir <6564007+noatamir@users.noreply.github.com> Date: Thu, 16 Mar 2023 10:47:30 +0100 Subject: [PATCH 08/19] amend counter example, add links --- web/pandas/pdeps/0001-purpose-and-guidelines.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/web/pandas/pdeps/0001-purpose-and-guidelines.md b/web/pandas/pdeps/0001-purpose-and-guidelines.md index ca3a1af1bf8c1..e8fc2623775c0 100644 --- a/web/pandas/pdeps/0001-purpose-and-guidelines.md +++ b/web/pandas/pdeps/0001-purpose-and-guidelines.md @@ -144,6 +144,9 @@ changed and avoid confusion. [GH-45253][45253]) - New required dependency. For example: - Moving rarely used I/O connectors to a separate repository [GH-28409](28409) +- Significant changes to contributors' processes aren't going to have an impact on users, but + the do benefit from structured discussion among the contributors. For example: + - Changing the build system to meson ([GH-49115][49115]) ### Borderline examples: Small changes to core functionality, such as `DataFrame` and `Series`, should always be @@ -173,17 +176,11 @@ hope can help clarify our meaning here: - Add `pandas.api.typing` ([GH-48577][48577]) is relatively small and wouldn’t necessarily require a PDEP. -### A counter-example: - -- Significant changes to contributors' processes don't require a PDEP as they aren't going to - have an impact on users. For example: - - Changing the build system to meson ([GH-49115][49115]) - ### PDEP-1 History -- 3 August 2022: Initial version -- 15 February 2023: Version 2 +- 3 August 2022: Initial version ([GH-47938][47938]) +- 15 February 2023: Version 2 ([GH-51417][51417]) [7217]: https://github.com/pandas-dev/pandas/pull/7217 [8074]: https://github.com/pandas-dev/pandas/issues/8074 @@ -198,3 +195,6 @@ hope can help clarify our meaning here: [48577]: https://github.com/pandas-dev/pandas/issues/48577 [49115]: https://github.com/pandas-dev/pandas/pull/49115 [28409]: https://github.com/pandas-dev/pandas/issues/28409 +[47938]: https://github.com/pandas-dev/pandas/pull/47938 +[51417]: https://github.com/pandas-dev/pandas/pull/51417 + From 98d980597da854d7ed3254494f689b37d8ab78e2 Mon Sep 17 00:00:00 2001 From: noatamir <6564007+noatamir@users.noreply.github.com> Date: Mon, 20 Mar 2023 19:48:43 +0100 Subject: [PATCH 09/19] fix wording --- .../pdeps/0001-purpose-and-guidelines.md | 25 ++++++++++--------- 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/web/pandas/pdeps/0001-purpose-and-guidelines.md b/web/pandas/pdeps/0001-purpose-and-guidelines.md index e8fc2623775c0..54efb14d2fd8c 100644 --- a/web/pandas/pdeps/0001-purpose-and-guidelines.md +++ b/web/pandas/pdeps/0001-purpose-and-guidelines.md @@ -104,7 +104,7 @@ PDEPs, since there are discussions that are worth having, and decisions about changes to pandas being made. They will be merged with `Status: Rejected`, so there is visibility on what was discussed and what was the outcome of the discussion. A PDEP can be rejected for different reasons, for example good ideas -that aren't backward-compatible, and the breaking changes aren't considered worth +that are not backward-compatible, and the breaking changes are not considered worth implementing. #### Invalid PDEP @@ -117,7 +117,7 @@ good as an accepted PDEP, but where the final decision was to not implement the ## Evolution of PDEPs -Most PDEPs aren't expected to change after accepted. Once there is agreement in the changes, +Most PDEPs are not expected to change after accepted. Once there is agreement in the changes, and they are implemented, the PDEP will be only useful to understand why the development happened, and the details of the discussion. @@ -142,45 +142,46 @@ changed and avoid confusion. - Support of new python features with a wide impact on the project. For example: - Supporting typing within pandas vs. creation of `pandas-stubs` ([GH-43197][43197], [GH-45253][45253]) -- New required dependency. For example: +- New required dependency. +- Removing module from the project or splitting it off to a seperate repository: - Moving rarely used I/O connectors to a separate repository [GH-28409](28409) -- Significant changes to contributors' processes aren't going to have an impact on users, but +- Significant changes to contributors' processes are not going to have an impact on users, but the do benefit from structured discussion among the contributors. For example: - Changing the build system to meson ([GH-49115][49115]) ### Borderline examples: Small changes to core functionality, such as `DataFrame` and `Series`, should always be considered as a PDEP candidate as it will likely have a big impact on users. But the same types -of changes in to functionalities would not be good PDEP candidates. That said, any discussion, +of changes in other functionalities would not be good PDEP candidates. That said, any discussion, no matter how small the change, which becomes controversial is a PDEP candidate. Consider if more attention and/or a formal decision-making process would help. Following are some examples we hope can help clarify our meaning here: - API breaking changes, or discussion thereof, could be a PDEP. For example: - - Value counts rename ([GH-49497][49497]). The scope doesn’t justify a PDEP at first, but later a + - Value counts rename ([GH-49497][49497]). The scope does not justify a PDEP at first, but later a discussion about whether it should be executed as breaking change or with deprecation emerges, which could benefit from a PDEP process. -- Adding new parameters or methods to an existing method typically won't require a PDEP for +- Adding new parameters or methods to an existing method typically will not require a PDEP for non-core features. For example: - Both `dropna(percentage)` ([GH-35299][35299]), and `Timestamp.normalize()` ([GH-8794][8794]) wouldn't have required a PDEP. - - On the other hand, `DataFrame.assign()` might. While it's a single method without backwards - compatibility concerns, it’s also a core feature and the discussion should be highly visible. + - On the other hand, `DataFrame.assign()` might. While it is a single method without backwards + compatibility concerns, it is also a core feature and the discussion should be highly visible. - Deprecating or removing a single method would not require a PDEP in most cases. For example: - `DataFrame.xs` ([GH-6249][6249]) is an example of deprecations on core features that would be - good a candidate for a PDEP. + a good candidate for a PDEP. - Changing the default value of parameters in a core pandas method is another edge case. For example: - Such changes in `dropna`, `DataFrame.groupby`, or in `Series.groupby` could be PDEPs. - New top level modules and/or exposing internal classes. For example: - - Add `pandas.api.typing` ([GH-48577][48577]) is relatively small and wouldn’t necessarily + - Add `pandas.api.typing` ([GH-48577][48577]) is relatively small and would not necessarily require a PDEP. ### PDEP-1 History - 3 August 2022: Initial version ([GH-47938][47938]) -- 15 February 2023: Version 2 ([GH-51417][51417]) +- 15 February 2023: Version 2 ([GH-51417][51417]) clarifies the scope of PDEPs and adds examples [7217]: https://github.com/pandas-dev/pandas/pull/7217 [8074]: https://github.com/pandas-dev/pandas/issues/8074 From 3499e13573744d7cb9ac287fe88d885774dc891a Mon Sep 17 00:00:00 2001 From: Noa Tamir <6564007+noatamir@users.noreply.github.com> Date: Wed, 22 Mar 2023 18:23:36 +0100 Subject: [PATCH 10/19] proof-reading fixes Co-authored-by: Irv Lustig --- web/pandas/pdeps/0001-purpose-and-guidelines.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/web/pandas/pdeps/0001-purpose-and-guidelines.md b/web/pandas/pdeps/0001-purpose-and-guidelines.md index 54efb14d2fd8c..b84ff89b0d057 100644 --- a/web/pandas/pdeps/0001-purpose-and-guidelines.md +++ b/web/pandas/pdeps/0001-purpose-and-guidelines.md @@ -117,7 +117,7 @@ good as an accepted PDEP, but where the final decision was to not implement the ## Evolution of PDEPs -Most PDEPs are not expected to change after accepted. Once there is agreement in the changes, +Most PDEPs are not expected to change after they are accepted. However, this PDEP (PDEP-1), which governs the PDEP process, may change as the process evolves. Once there is agreement on the changes, and they are implemented, the PDEP will be only useful to understand why the development happened, and the details of the discussion. @@ -143,10 +143,10 @@ changed and avoid confusion. - Supporting typing within pandas vs. creation of `pandas-stubs` ([GH-43197][43197], [GH-45253][45253]) - New required dependency. -- Removing module from the project or splitting it off to a seperate repository: +- Removing module from the project or splitting it off to a separate repository: - Moving rarely used I/O connectors to a separate repository [GH-28409](28409) - Significant changes to contributors' processes are not going to have an impact on users, but - the do benefit from structured discussion among the contributors. For example: + they do benefit from structured discussion among the contributors. For example: - Changing the build system to meson ([GH-49115][49115]) ### Borderline examples: @@ -159,12 +159,12 @@ hope can help clarify our meaning here: - API breaking changes, or discussion thereof, could be a PDEP. For example: - Value counts rename ([GH-49497][49497]). The scope does not justify a PDEP at first, but later a - discussion about whether it should be executed as breaking change or with deprecation + discussion about whether it should be executed as a breaking change or with deprecation emerges, which could benefit from a PDEP process. - Adding new parameters or methods to an existing method typically will not require a PDEP for non-core features. For example: - Both `dropna(percentage)` ([GH-35299][35299]), and `Timestamp.normalize()` ([GH-8794][8794]) - wouldn't have required a PDEP. + would not have required a PDEP. - On the other hand, `DataFrame.assign()` might. While it is a single method without backwards compatibility concerns, it is also a core feature and the discussion should be highly visible. - Deprecating or removing a single method would not require a PDEP in most cases. For example: From b8afd7ad6096292e0b2d0d9b857e6219840954d4 Mon Sep 17 00:00:00 2001 From: noatamir <6564007+noatamir@users.noreply.github.com> Date: Wed, 22 Mar 2023 18:45:44 +0100 Subject: [PATCH 11/19] remove white spaces --- .../pdeps/0001-purpose-and-guidelines.md | 37 +++++++++---------- 1 file changed, 18 insertions(+), 19 deletions(-) diff --git a/web/pandas/pdeps/0001-purpose-and-guidelines.md b/web/pandas/pdeps/0001-purpose-and-guidelines.md index b84ff89b0d057..529c75a85a69f 100644 --- a/web/pandas/pdeps/0001-purpose-and-guidelines.md +++ b/web/pandas/pdeps/0001-purpose-and-guidelines.md @@ -20,13 +20,13 @@ significant discussion within the community. PDEPs are appropriate for user facing changes, internal changes and significant discussions. Examples of topics worth a PDEP could include substantial API changes, breaking behavior changes, -moving a module from pandas to a separate repository, or a refactoring of the pandas block manager. -It is not always trivial to know which issue has enough scope to require the full PDEP process. -Some simple API changes have sufficient consensus among the core team, and minimal impact on the -community. On the other hand, if an issue becomes controversial, i.e. it generated a significant -discussion, one could suggest opening a PDEP to formalize and document the discussion, making it -easier for the wider community to participate. For context, see -[the list of issues that could have been a PDEP](#List-of-issues). +moving a module from pandas to a separate repository, or a refactoring of the pandas block manager. +It is not always trivial to know which issue has enough scope to require the full PDEP process. +Some simple API changes have sufficient consensus among the core team, and minimal impact on the +community. On the other hand, if an issue becomes controversial, i.e. it generated a significant +discussion, one could suggest opening a PDEP to formalize and document the discussion, making it +easier for the wider community to participate. For context, see +[the list of issues that could have been a PDEP](#List-of-issues). ## PDEP guidelines @@ -46,7 +46,7 @@ consider when writing a PDEP are: ### PDEP authors -Anyone can propose a PDEP, but a core member should be engaged to advise on a proposal made by +Anyone can propose a PDEP, but a core member should be engaged to advise on a proposal made by non-core contributors. To submit a PDEP as a community member, please propose the PDEP concept on [an issue](https://github.com/pandas-dev/pandas/issues/new/choose), and find a pandas team member to collaborate with. They can advise you on the PDEP process and should be listed as an @@ -69,7 +69,7 @@ Proposing a PDEP is done by creating a PR adding a new file to `web/pdeps/`. The file is a markdown file, you can use `web/pdeps/0001.md` as a reference for the expected format. -The initial status of a PDEP will be `Status: Under discussion`. This will be changed to +The initial status of a PDEP will be `Status: Under discussion`. This will be changed to `Status: Accepted` when the PDEP is ready and have the approval of the core team. #### Accepted PDEP @@ -142,19 +142,19 @@ changed and avoid confusion. - Support of new python features with a wide impact on the project. For example: - Supporting typing within pandas vs. creation of `pandas-stubs` ([GH-43197][43197], [GH-45253][45253]) -- New required dependency. +- New required dependency. - Removing module from the project or splitting it off to a separate repository: - Moving rarely used I/O connectors to a separate repository [GH-28409](28409) -- Significant changes to contributors' processes are not going to have an impact on users, but - they do benefit from structured discussion among the contributors. For example: +- Significant changes to contributors' processes are not going to have an impact on users, but +they do benefit from structured discussion among the contributors. For example: - Changing the build system to meson ([GH-49115][49115]) ### Borderline examples: -Small changes to core functionality, such as `DataFrame` and `Series`, should always be -considered as a PDEP candidate as it will likely have a big impact on users. But the same types -of changes in other functionalities would not be good PDEP candidates. That said, any discussion, -no matter how small the change, which becomes controversial is a PDEP candidate. Consider if more -attention and/or a formal decision-making process would help. Following are some examples we +Small changes to core functionality, such as `DataFrame` and `Series`, should always be +considered as a PDEP candidate as it will likely have a big impact on users. But the same types +of changes in other functionalities would not be good PDEP candidates. That said, any discussion, +no matter how small the change, which becomes controversial is a PDEP candidate. Consider if more +attention and/or a formal decision-making process would help. Following are some examples we hope can help clarify our meaning here: - API breaking changes, or discussion thereof, could be a PDEP. For example: @@ -180,7 +180,7 @@ hope can help clarify our meaning here: ### PDEP-1 History -- 3 August 2022: Initial version ([GH-47938][47938]) +- 3 August 2022: Initial version ([GH-47938][47938]) - 15 February 2023: Version 2 ([GH-51417][51417]) clarifies the scope of PDEPs and adds examples [7217]: https://github.com/pandas-dev/pandas/pull/7217 @@ -198,4 +198,3 @@ hope can help clarify our meaning here: [28409]: https://github.com/pandas-dev/pandas/issues/28409 [47938]: https://github.com/pandas-dev/pandas/pull/47938 [51417]: https://github.com/pandas-dev/pandas/pull/51417 - From d02e464037a645e57c0abfc14971452e27087355 Mon Sep 17 00:00:00 2001 From: Noa Tamir <6564007+noatamir@users.noreply.github.com> Date: Mon, 3 Apr 2023 17:06:17 +0200 Subject: [PATCH 12/19] fix sentence Co-authored-by: Terji Petersen --- web/pandas/pdeps/0001-purpose-and-guidelines.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web/pandas/pdeps/0001-purpose-and-guidelines.md b/web/pandas/pdeps/0001-purpose-and-guidelines.md index 529c75a85a69f..0509a293ee49b 100644 --- a/web/pandas/pdeps/0001-purpose-and-guidelines.md +++ b/web/pandas/pdeps/0001-purpose-and-guidelines.md @@ -161,7 +161,7 @@ hope can help clarify our meaning here: - Value counts rename ([GH-49497][49497]). The scope does not justify a PDEP at first, but later a discussion about whether it should be executed as a breaking change or with deprecation emerges, which could benefit from a PDEP process. -- Adding new parameters or methods to an existing method typically will not require a PDEP for +- Adding new methods or parameters to an existing method typically will not require a PDEP for non-core features. For example: - Both `dropna(percentage)` ([GH-35299][35299]), and `Timestamp.normalize()` ([GH-8794][8794]) would not have required a PDEP. From 8c97fc2d0bc54207ed53c5823f5628c111b39101 Mon Sep 17 00:00:00 2001 From: noatamir <6564007+noatamir@users.noreply.github.com> Date: Tue, 4 Apr 2023 13:49:18 +0200 Subject: [PATCH 13/19] Update header --- web/pandas/pdeps/0001-purpose-and-guidelines.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/web/pandas/pdeps/0001-purpose-and-guidelines.md b/web/pandas/pdeps/0001-purpose-and-guidelines.md index 0509a293ee49b..8d52cbd22c6c6 100644 --- a/web/pandas/pdeps/0001-purpose-and-guidelines.md +++ b/web/pandas/pdeps/0001-purpose-and-guidelines.md @@ -2,8 +2,10 @@ - Created: 3 August 2022 - Status: Accepted -- Discussion: [#47444](https://github.com/pandas-dev/pandas/pull/47444) -- Author: [Marc Garcia](https://github.com/datapythonista) +- Discussion: [#47444](https://github.com/pandas-dev/pandas/pull/47444), + [#51417](https://github.com/pandas-dev/pandas/pull/51417) +- Author: [Marc Garcia](https://github.com/datapythonista), + [Noa Tamir](https://github.com/noatamir) - Revision: 2 ## PDEP definition, purpose and scope From d33a8d6f3f6f8571137b32ffc9e3a7947858ca5b Mon Sep 17 00:00:00 2001 From: Marc Garcia Date: Fri, 7 Apr 2023 13:51:05 +0400 Subject: [PATCH 14/19] Fix CI (tailing whitespaces) --- web/pandas/pdeps/0001-purpose-and-guidelines.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/web/pandas/pdeps/0001-purpose-and-guidelines.md b/web/pandas/pdeps/0001-purpose-and-guidelines.md index 8d52cbd22c6c6..ef9f5c59d94de 100644 --- a/web/pandas/pdeps/0001-purpose-and-guidelines.md +++ b/web/pandas/pdeps/0001-purpose-and-guidelines.md @@ -2,9 +2,9 @@ - Created: 3 August 2022 - Status: Accepted -- Discussion: [#47444](https://github.com/pandas-dev/pandas/pull/47444), +- Discussion: [#47444](https://github.com/pandas-dev/pandas/pull/47444), [#51417](https://github.com/pandas-dev/pandas/pull/51417) -- Author: [Marc Garcia](https://github.com/datapythonista), +- Author: [Marc Garcia](https://github.com/datapythonista), [Noa Tamir](https://github.com/noatamir) - Revision: 2 From d28300b0bf61e01e766d33ea535ba52b8546d22b Mon Sep 17 00:00:00 2001 From: Joris Van den Bossche Date: Tue, 11 Apr 2023 18:39:11 +0200 Subject: [PATCH 15/19] Apply suggestions from code review Co-authored-by: Simon Hawkins --- web/pandas/pdeps/0001-purpose-and-guidelines.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/web/pandas/pdeps/0001-purpose-and-guidelines.md b/web/pandas/pdeps/0001-purpose-and-guidelines.md index ef9f5c59d94de..33b9eb0f3f11c 100644 --- a/web/pandas/pdeps/0001-purpose-and-guidelines.md +++ b/web/pandas/pdeps/0001-purpose-and-guidelines.md @@ -72,7 +72,7 @@ The file is a markdown file, you can use `web/pdeps/0001.md` as a reference for the expected format. The initial status of a PDEP will be `Status: Under discussion`. This will be changed to -`Status: Accepted` when the PDEP is ready and have the approval of the core team. +`Status: Accepted` when the PDEP is ready and has the approval of the core team. #### Accepted PDEP @@ -141,7 +141,7 @@ changed and avoid confusion. - `Categorical` ([GH-7217][7217], [GH-8074][8074]), `StringDtype` ([GH-8640][8640]), `ArrowDtype` - A significant (breaking) change in existing behavior. For example: - Copy/view changes ([GH-36195][36195]) -- Support of new python features with a wide impact on the project. For example: +- Support of new Python features with a wide impact on the project. For example: - Supporting typing within pandas vs. creation of `pandas-stubs` ([GH-43197][43197], [GH-45253][45253]) - New required dependency. @@ -160,9 +160,9 @@ attention and/or a formal decision-making process would help. Following are some hope can help clarify our meaning here: - API breaking changes, or discussion thereof, could be a PDEP. For example: - - Value counts rename ([GH-49497][49497]). The scope does not justify a PDEP at first, but later a + - `value_counts` result rename ([GH-49497][49497]). The scope does not justify a PDEP at first, but later a discussion about whether it should be executed as a breaking change or with deprecation - emerges, which could benefit from a PDEP process. + emerges, which could benefit from the PDEP process. - Adding new methods or parameters to an existing method typically will not require a PDEP for non-core features. For example: - Both `dropna(percentage)` ([GH-35299][35299]), and `Timestamp.normalize()` ([GH-8794][8794]) From 8a886092d82cff2103c684df268430d49844ba67 Mon Sep 17 00:00:00 2001 From: Noa Tamir <6564007+noatamir@users.noreply.github.com> Date: Wed, 12 Apr 2023 16:00:33 +0200 Subject: [PATCH 16/19] apply feedback Co-authored-by: Simon Hawkins --- web/pandas/pdeps/0001-purpose-and-guidelines.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web/pandas/pdeps/0001-purpose-and-guidelines.md b/web/pandas/pdeps/0001-purpose-and-guidelines.md index 33b9eb0f3f11c..9ba90831a7f9c 100644 --- a/web/pandas/pdeps/0001-purpose-and-guidelines.md +++ b/web/pandas/pdeps/0001-purpose-and-guidelines.md @@ -119,7 +119,7 @@ good as an accepted PDEP, but where the final decision was to not implement the ## Evolution of PDEPs -Most PDEPs are not expected to change after they are accepted. However, this PDEP (PDEP-1), which governs the PDEP process, may change as the process evolves. Once there is agreement on the changes, +Most PDEPs are not expected to change after they are accepted. Once there is agreement on the changes, and they are implemented, the PDEP will be only useful to understand why the development happened, and the details of the discussion. From c1a4f98930519871112f510e3a960b936eb52016 Mon Sep 17 00:00:00 2001 From: noatamir <6564007+noatamir@users.noreply.github.com> Date: Wed, 12 Apr 2023 17:23:10 +0200 Subject: [PATCH 17/19] fix wording, add links --- web/pandas/pdeps/0001-purpose-and-guidelines.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/web/pandas/pdeps/0001-purpose-and-guidelines.md b/web/pandas/pdeps/0001-purpose-and-guidelines.md index 9ba90831a7f9c..5690d07bda1b2 100644 --- a/web/pandas/pdeps/0001-purpose-and-guidelines.md +++ b/web/pandas/pdeps/0001-purpose-and-guidelines.md @@ -135,7 +135,7 @@ changed and avoid confusion. ### Clear examples for potential PDEPs: - Adding a new parameter to many existing methods, or deprecating one in many places. For example: - - The `numeric_only` deprecation affected many methods and could have been a PDEP. + - The `numeric_only` deprecation ([GH-28900][28900]) affected many methods and could have been a PDEP. - Adding a new data type has impact on a variety of places that need to handle the data type. Such wide-ranging impact would require a PDEP. For example: - `Categorical` ([GH-7217][7217], [GH-8074][8074]), `StringDtype` ([GH-8640][8640]), `ArrowDtype` @@ -170,8 +170,8 @@ hope can help clarify our meaning here: - On the other hand, `DataFrame.assign()` might. While it is a single method without backwards compatibility concerns, it is also a core feature and the discussion should be highly visible. - Deprecating or removing a single method would not require a PDEP in most cases. For example: - - `DataFrame.xs` ([GH-6249][6249]) is an example of deprecations on core features that would be - a good candidate for a PDEP. + - That said, `DataFrame.append` ([GH-35407][35407]) is an example of deprecations on core + features that would be a good candidate for a PDEP. - Changing the default value of parameters in a core pandas method is another edge case. For example: - Such changes in `dropna`, `DataFrame.groupby`, or in `Series.groupby` could be PDEPs. @@ -200,3 +200,5 @@ hope can help clarify our meaning here: [28409]: https://github.com/pandas-dev/pandas/issues/28409 [47938]: https://github.com/pandas-dev/pandas/pull/47938 [51417]: https://github.com/pandas-dev/pandas/pull/51417 +[28900]: https://github.com/pandas-dev/pandas/issues/28900 +[35407]: https://github.com/pandas-dev/pandas/issues/35407 From 30d5033b769d103185af03a41253c9e0b964c3c3 Mon Sep 17 00:00:00 2001 From: noatamir <6564007+noatamir@users.noreply.github.com> Date: Wed, 12 Apr 2023 17:31:30 +0200 Subject: [PATCH 18/19] fix wording --- web/pandas/pdeps/0001-purpose-and-guidelines.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web/pandas/pdeps/0001-purpose-and-guidelines.md b/web/pandas/pdeps/0001-purpose-and-guidelines.md index 5690d07bda1b2..ced595fb8c69a 100644 --- a/web/pandas/pdeps/0001-purpose-and-guidelines.md +++ b/web/pandas/pdeps/0001-purpose-and-guidelines.md @@ -174,7 +174,7 @@ hope can help clarify our meaning here: features that would be a good candidate for a PDEP. - Changing the default value of parameters in a core pandas method is another edge case. For example: - - Such changes in `dropna`, `DataFrame.groupby`, or in `Series.groupby` could be PDEPs. + - Such changes for `dropna` in `DataFrame.groupby` and `Series.groupby` could be a PDEP. - New top level modules and/or exposing internal classes. For example: - Add `pandas.api.typing` ([GH-48577][48577]) is relatively small and would not necessarily require a PDEP. From 711f05afb3185d5072f0d79d17095bf712cc6f03 Mon Sep 17 00:00:00 2001 From: Joris Van den Bossche Date: Thu, 13 Apr 2023 17:17:31 +0200 Subject: [PATCH 19/19] Remove 'For example:' --- web/pandas/pdeps/0001-purpose-and-guidelines.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web/pandas/pdeps/0001-purpose-and-guidelines.md b/web/pandas/pdeps/0001-purpose-and-guidelines.md index ced595fb8c69a..24c91fbab0808 100644 --- a/web/pandas/pdeps/0001-purpose-and-guidelines.md +++ b/web/pandas/pdeps/0001-purpose-and-guidelines.md @@ -169,7 +169,7 @@ hope can help clarify our meaning here: would not have required a PDEP. - On the other hand, `DataFrame.assign()` might. While it is a single method without backwards compatibility concerns, it is also a core feature and the discussion should be highly visible. -- Deprecating or removing a single method would not require a PDEP in most cases. For example: +- Deprecating or removing a single method would not require a PDEP in most cases. - That said, `DataFrame.append` ([GH-35407][35407]) is an example of deprecations on core features that would be a good candidate for a PDEP. - Changing the default value of parameters in a core pandas method is another edge case. For