(self, version, byteorder, temp_file)
| 2000 | @pytest.mark.parametrize("version", [118, 119, None]) |
| 2001 | @pytest.mark.parametrize("byteorder", ["little", "big"]) |
| 2002 | def test_utf8_writer(self, version, byteorder, temp_file): |
| 2003 | cat = pd.Categorical(["a", "β", "ĉ"], ordered=True) |
| 2004 | data = DataFrame( |
| 2005 | [ |
| 2006 | [1.0, 1, "ᴬ", "ᴀ relatively long ŝtring"], |
| 2007 | [2.0, 2, "ᴮ", ""], |
| 2008 | [3.0, 3, "ᴰ", None], |
| 2009 | ], |
| 2010 | columns=["Å", "β", "ĉ", "strls"], |
| 2011 | ) |
| 2012 | data["ᴐᴬᵀ"] = cat |
| 2013 | variable_labels = { |
| 2014 | "Å": "apple", |
| 2015 | "β": "ᵈᵉᵊ", |
| 2016 | "ĉ": "ᴎტჄႲႳႴႶႺ", |
| 2017 | "strls": "Long Strings", |
| 2018 | "ᴐᴬᵀ": "", |
| 2019 | } |
| 2020 | data_label = "ᴅaᵀa-label" |
| 2021 | value_labels = {"β": {1: "label", 2: "æøå", 3: "ŋot valid latin-1"}} |
| 2022 | data["β"] = data["β"].astype(np.int32) |
| 2023 | writer = StataWriterUTF8( |
| 2024 | temp_file, |
| 2025 | data, |
| 2026 | data_label=data_label, |
| 2027 | convert_strl=["strls"], |
| 2028 | variable_labels=variable_labels, |
| 2029 | write_index=False, |
| 2030 | byteorder=byteorder, |
| 2031 | version=version, |
| 2032 | value_labels=value_labels, |
| 2033 | ) |
| 2034 | writer.write_file() |
| 2035 | reread_encoded = read_stata(temp_file) |
| 2036 | # Missing is intentionally converted to empty strl |
| 2037 | data["strls"] = data["strls"].fillna("") |
| 2038 | # Variable with value labels is reread as categorical |
| 2039 | data["β"] = ( |
| 2040 | data["β"].replace(value_labels["β"]).astype("category").cat.as_ordered() |
| 2041 | ) |
| 2042 | tm.assert_frame_equal(data, reread_encoded) |
| 2043 | with StataReader(temp_file) as reader: |
| 2044 | assert reader.data_label == data_label |
| 2045 | assert reader.variable_labels() == variable_labels |
| 2046 | |
| 2047 | data.to_stata(temp_file, version=version, write_index=False) |
| 2048 | reread_to_stata = read_stata(temp_file) |
| 2049 | tm.assert_frame_equal(data, reread_to_stata) |
| 2050 | |
| 2051 | def test_writer_118_exceptions(self, temp_file): |
| 2052 | df = DataFrame(np.zeros((1, 33000), dtype=np.int8)) |
nothing calls this directly
no test coverage detected