From 3402c5cb1e9dd22a7067726aa549a9882dd7326c Mon Sep 17 00:00:00 2001 From: Debian Science Team Date: Mon, 21 Oct 2024 19:43:11 +0100 Subject: [PATCH] Remove code from Stack Overflow Stack Overflow content is CC-BY-SA licensed, which this package is not supposed to be. These snippets may be too small to be copyrightable, but removing them to be safe. https://lists.debian.org/debian-legal/2020/04/threads.html#00018 Author: Rebecca N. Palmer Forwarded: no - deletes some tests/examples without replacement Gbp-Pq: Name remove_ccbysa_snippets.patch --- doc/source/user_guide/cookbook.rst | 22 ++++++++++++++ doc/source/user_guide/index.rst | 1 - pandas/io/sql.py | 10 +++---- pandas/tests/groupby/test_categorical.py | 22 -------------- .../multiindex/test_chaining_and_caching.py | 29 ------------------- .../tests/indexing/multiindex/test_setitem.py | 29 ------------------- .../indexing/test_chaining_and_caching.py | 21 -------------- .../io/parser/common/test_common_basic.py | 17 ----------- 8 files changed, 27 insertions(+), 124 deletions(-) create mode 100644 doc/source/user_guide/cookbook.rst diff --git a/doc/source/user_guide/cookbook.rst b/doc/source/user_guide/cookbook.rst new file mode 100644 index 00000000..62a1aad9 --- /dev/null +++ b/doc/source/user_guide/cookbook.rst @@ -0,0 +1,22 @@ +.. _cookbook: + +{{ header }} + +.. _cookbook.idioms: +.. _cookbook.selection: +.. _cookbook.multi_index: +.. _cookbook.missing_data: +.. _cookbook.grouping: +.. _cookbook.pivot: +.. _cookbook.resample: +.. _cookbook.merge: +.. _cookbook.plotting: +.. _cookbook.csv: +.. _cookbook.csv.multiple_files: +.. _cookbook.sql: +.. _cookbook.excel: +.. _cookbook.html: +.. _cookbook.hdf: +.. _cookbook.binary: + +This page has been removed for copyright reasons. diff --git a/doc/source/user_guide/index.rst b/doc/source/user_guide/index.rst index f0d6a76f..3eb776f0 100644 --- a/doc/source/user_guide/index.rst +++ b/doc/source/user_guide/index.rst @@ -87,4 +87,3 @@ Guides scale sparse gotchas - cookbook diff --git a/pandas/io/sql.py b/pandas/io/sql.py index 3e171751..ce013079 100644 --- a/pandas/io/sql.py +++ b/pandas/io/sql.py @@ -2465,14 +2465,14 @@ def _get_valid_sqlite_name(name: object): # Replace all " with "". # Wrap the entire thing in double quotes. - uname = _get_unicode_name(name) - if not len(uname): + name = _get_unicode_name(name) + if not len(name): raise ValueError("Empty table or column name specified") - nul_index = uname.find("\x00") - if nul_index >= 0: + if '\0' in name: raise ValueError("SQLite identifier cannot contain NULs") - return '"' + uname.replace('"', '""') + '"' + name = name.replace('"', '""') + return '"' + name + '"' class SQLiteTable(SQLTable): diff --git a/pandas/tests/groupby/test_categorical.py b/pandas/tests/groupby/test_categorical.py index f60ff655..75320bb9 100644 --- a/pandas/tests/groupby/test_categorical.py +++ b/pandas/tests/groupby/test_categorical.py @@ -988,28 +988,6 @@ def test_groupby_empty_with_category(): tm.assert_series_equal(result, expected) -def test_sort(): - # https://stackoverflow.com/questions/23814368/sorting-pandas- - # categorical-labels-after-groupby - # This should result in a properly sorted Series so that the plot - # has a sorted x axis - # self.cat.groupby(['value_group'])['value_group'].count().plot(kind='bar') - - df = DataFrame({"value": np.random.default_rng(2).integers(0, 10000, 100)}) - labels = [f"{i} - {i+499}" for i in range(0, 10000, 500)] - cat_labels = Categorical(labels, labels) - - df = df.sort_values(by=["value"], ascending=True) - df["value_group"] = pd.cut( - df.value, range(0, 10500, 500), right=False, labels=cat_labels - ) - - res = df.groupby(["value_group"], observed=False)["value_group"].count() - exp = res[sorted(res.index, key=lambda x: float(x.split()[0]))] - exp.index = CategoricalIndex(exp.index, name=exp.index.name) - tm.assert_series_equal(res, exp) - - @pytest.mark.parametrize("ordered", [True, False]) def test_sort2(sort, ordered): # dataframe groupby sort was being ignored # GH 8868 diff --git a/pandas/tests/indexing/multiindex/test_chaining_and_caching.py b/pandas/tests/indexing/multiindex/test_chaining_and_caching.py index 0dd1a568..473a59c8 100644 --- a/pandas/tests/indexing/multiindex/test_chaining_and_caching.py +++ b/pandas/tests/indexing/multiindex/test_chaining_and_caching.py @@ -13,35 +13,6 @@ from pandas import ( import pandas._testing as tm -def test_detect_chained_assignment(using_copy_on_write, warn_copy_on_write): - # Inplace ops, originally from: - # https://stackoverflow.com/questions/20508968/series-fillna-in-a-multiindex-dataframe-does-not-fill-is-this-a-bug - a = [12, 23] - b = [123, None] - c = [1234, 2345] - d = [12345, 23456] - tuples = [("eyes", "left"), ("eyes", "right"), ("ears", "left"), ("ears", "right")] - events = { - ("eyes", "left"): a, - ("eyes", "right"): b, - ("ears", "left"): c, - ("ears", "right"): d, - } - multiind = MultiIndex.from_tuples(tuples, names=["part", "side"]) - zed = DataFrame(events, index=["a", "b"], columns=multiind) - - if using_copy_on_write: - with tm.raises_chained_assignment_error(): - zed["eyes"]["right"].fillna(value=555, inplace=True) - elif warn_copy_on_write: - with tm.assert_produces_warning(None): - zed["eyes"]["right"].fillna(value=555, inplace=True) - else: - msg = "A value is trying to be set on a copy of a slice from a DataFrame" - with pytest.raises(SettingWithCopyError, match=msg): - with tm.assert_produces_warning(None): - zed["eyes"]["right"].fillna(value=555, inplace=True) - @td.skip_array_manager_invalid_test # with ArrayManager df.loc[0] is not a view def test_cache_updating(using_copy_on_write, warn_copy_on_write): diff --git a/pandas/tests/indexing/multiindex/test_setitem.py b/pandas/tests/indexing/multiindex/test_setitem.py index 53ad4d6b..3c7784a7 100644 --- a/pandas/tests/indexing/multiindex/test_setitem.py +++ b/pandas/tests/indexing/multiindex/test_setitem.py @@ -154,36 +154,7 @@ class TestMultiIndexSetItem: with pytest.raises(TypeError, match=msg): df.loc["bar"] *= 2 - def test_multiindex_setitem2(self): - # from SO - # https://stackoverflow.com/questions/24572040/pandas-access-the-level-of-multiindex-for-inplace-operation - df_orig = DataFrame.from_dict( - { - "price": { - ("DE", "Coal", "Stock"): 2, - ("DE", "Gas", "Stock"): 4, - ("DE", "Elec", "Demand"): 1, - ("FR", "Gas", "Stock"): 5, - ("FR", "Solar", "SupIm"): 0, - ("FR", "Wind", "SupIm"): 0, - } - } - ) - df_orig.index = MultiIndex.from_tuples( - df_orig.index, names=["Sit", "Com", "Type"] - ) - - expected = df_orig.copy() - expected.iloc[[0, 1, 3]] *= 2 - - idx = pd.IndexSlice - df = df_orig.copy() - df.loc[idx[:, :, "Stock"], :] *= 2 - tm.assert_frame_equal(df, expected) - df = df_orig.copy() - df.loc[idx[:, :, "Stock"], "price"] *= 2 - tm.assert_frame_equal(df, expected) def test_multiindex_assignment(self): # GH3777 part 2 diff --git a/pandas/tests/indexing/test_chaining_and_caching.py b/pandas/tests/indexing/test_chaining_and_caching.py index b97df376..5c20958c 100644 --- a/pandas/tests/indexing/test_chaining_and_caching.py +++ b/pandas/tests/indexing/test_chaining_and_caching.py @@ -429,27 +429,6 @@ class TestChaining: df["column1"] = df["column1"] + "c" str(df) - @pytest.mark.arm_slow - def test_detect_chained_assignment_undefined_column( - self, using_copy_on_write, warn_copy_on_write - ): - # from SO: - # https://stackoverflow.com/questions/24054495/potential-bug-setting-value-for-undefined-column-using-iloc - df = DataFrame(np.arange(0, 9), columns=["count"]) - df["group"] = "b" - df_original = df.copy() - - if using_copy_on_write: - with tm.raises_chained_assignment_error(): - df.iloc[0:5]["group"] = "a" - tm.assert_frame_equal(df, df_original) - elif warn_copy_on_write: - with tm.raises_chained_assignment_error(): - df.iloc[0:5]["group"] = "a" - else: - with pytest.raises(SettingWithCopyError, match=msg): - with tm.raises_chained_assignment_error(): - df.iloc[0:5]["group"] = "a" @pytest.mark.arm_slow def test_detect_chained_assignment_changing_dtype( diff --git a/pandas/tests/io/parser/common/test_common_basic.py b/pandas/tests/io/parser/common/test_common_basic.py index 7ffc49e9..ab756ac1 100644 --- a/pandas/tests/io/parser/common/test_common_basic.py +++ b/pandas/tests/io/parser/common/test_common_basic.py @@ -381,23 +381,6 @@ def test_trailing_delimiters(all_parsers): tm.assert_frame_equal(result, expected) -def test_escapechar(all_parsers): - # https://stackoverflow.com/questions/13824840/feature-request-for- - # pandas-read-csv - data = '''SEARCH_TERM,ACTUAL_URL -"bra tv board","http://www.ikea.com/se/sv/catalog/categories/departments/living_room/10475/?se%7cps%7cnonbranded%7cvardagsrum%7cgoogle%7ctv_bord" -"tv p\xc3\xa5 hjul","http://www.ikea.com/se/sv/catalog/categories/departments/living_room/10475/?se%7cps%7cnonbranded%7cvardagsrum%7cgoogle%7ctv_bord" -"SLAGBORD, \\"Bergslagen\\", IKEA:s 1700-tals series","http://www.ikea.com/se/sv/catalog/categories/departments/living_room/10475/?se%7cps%7cnonbranded%7cvardagsrum%7cgoogle%7ctv_bord"''' - - parser = all_parsers - result = parser.read_csv( - StringIO(data), escapechar="\\", quotechar='"', encoding="utf-8" - ) - - assert result["SEARCH_TERM"][2] == 'SLAGBORD, "Bergslagen", IKEA:s 1700-tals series' - - tm.assert_index_equal(result.columns, Index(["SEARCH_TERM", "ACTUAL_URL"])) - def test_ignore_leading_whitespace(all_parsers): # see gh-3374, gh-6607 -- 2.30.2