Skip to content

Commit 8c64fde

Browse files
geirfreyssonGeir Freysson
andauthored
Add text key to crosstab (#51)
* Add text_key parameter to crosstab. * Bump version number * Skip confirmit api tests for now * Fix list of valid text keys * Decode strings in excel painter Co-authored-by: Geir Freysson <[email protected]>
1 parent fc8d5c0 commit 8c64fde

File tree

5 files changed

+30
-7
lines changed

5 files changed

+30
-7
lines changed

quantipy/core/dataset.py

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@
5555
import importlib
5656

5757
VALID_TKS = [
58-
'en-GB', 'da-DK', 'fi-FI', 'nb-NO', 'sv-SE', 'de-DE', 'fr-FR', 'ar-AR',
58+
'en-GB', 'en-US', 'da-DK', 'fi-FI', 'nb-NO', 'sv-SE', 'de-DE', 'is-IS', 'fr-FR', 'ar-AR',
5959
'es-ES', 'it-IT', 'pl-PL', 'en']
6060

6161
VAR_SUFFIXES = [
@@ -1878,7 +1878,7 @@ def parents(self, name):
18781878
@verify(variables={'x': 'both', 'y': 'both_nested', 'w': 'columns'})
18791879
def crosstab(self, x, y=[], w=None, f=None, ci='counts', base='auto', stats=False,
18801880
sig_level=None, rules=False, decimals=1, xtotal=False,
1881-
painted=True):
1881+
painted=True, text_key=None):
18821882
"""
18831883
Return a well formated crosstab. (New version)
18841884
Parameters
@@ -1916,6 +1916,8 @@ def crosstab(self, x, y=[], w=None, f=None, ci='counts', base='auto', stats=Fals
19161916
regular frequency of the x column.
19171917
painted: bool, default True
19181918
Add texts from the meta to the index and columns.
1919+
text_key: string, default None
1920+
What language text key to use when returning the result.
19191921
"""
19201922
def _rounding(x, dec):
19211923
try:
@@ -2014,7 +2016,10 @@ def _rounding(x, dec):
20142016
folder = 'ct')
20152017

20162018
if painted:
2017-
cm.paint_all(totalize=True)
2019+
if text_key is not None:
2020+
cm.paint_all(totalize=True, text_key=text_key)
2021+
else:
2022+
cm.paint_all(totalize=True)
20182023

20192024
dfs = []
20202025
for chain in cm['ct']:

quantipy/sandbox/excel.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -715,7 +715,7 @@ def set_row(self, row, height, label=None, font_name=None, font_size=None):
715715
else:
716716
fact = 1
717717

718-
dimensions = self.truetype.getsize(label)
718+
dimensions = self.truetype.getsize(label.encode("utf-8"))
719719

720720
if (dimensions[1] * units_to_pixels) - padding > height:
721721
# text too tall

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ def version_libs(libs, precisions, versions):
3939
INSTALL_REQUIRES = version_libs(libs, precisions, versions)
4040

4141
setup(name='quantipy3',
42-
version='0.2.9',
42+
version='0.2.10',
4343
author='Geir Freysson',
4444
author_email='[email protected]',
4545
packages=find_packages(exclude=['tests']),

tests/test_confirmit_reader.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -460,7 +460,7 @@ def test_loop_variables(confirmit_dataset):
460460
}
461461
""")
462462

463-
463+
@pytest.mark.skip(reason="confirmit api has changed")
464464
def test_read_from_api():
465465
dataset_from_api = qp.DataSet("confirmit")
466466
dataset_from_api.read_confirmit_api(projectid="p913481003361",
@@ -488,7 +488,7 @@ def test_read_from_api():
488488
"value": 2}],
489489
"text": {"en": "Use script to set values"}}""")
490490

491-
491+
@pytest.mark.skip(reason="confirmit api has changed")
492492
def test_writer_to_api():
493493
dataset = qp.DataSet("confirmit")
494494
response = dataset.write_confirmit_api(projectid="p913481003361",

tests/test_dataset.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -895,6 +895,24 @@ def test_crosstab2(self):
895895
assert result.shape == (13,2)
896896
assert with_sigdiff.shape == (37,4)
897897

898+
def test_crosstab_with_lang_key(self):
899+
dataset = self._get_dataset()
900+
dataset.set_variable_text(name='gender', new_text='Kyn', text_key='is-IS')
901+
dataset.set_value_texts(name='gender', renamed_vals={1:'Maður', 2:"Kona"}, text_key='is-IS')
902+
dataset.set_variable_text(name='locality', new_text='Búseta', text_key='is-IS')
903+
dataset.set_value_texts(name='locality',
904+
renamed_vals={
905+
1:"Verslunarkjarni",
906+
2:"Þéttbýli",
907+
3:"Úthverfi",
908+
4:"Dreifbýli",
909+
5:"Afskekkt"
910+
},
911+
text_key='is-IS')
912+
913+
result = dataset.crosstab(x='locality', y='gender', text_key='is-IS')
914+
assert result.columns.get_level_values(1).to_list() == ['Maður', 'Kona']
915+
898916
def test_crosstab(self):
899917
x = 'q14r01c01'
900918
dataset = self._get_dataset()

0 commit comments

Comments
 (0)