toolsos 0.2.6__py3-none-any.whl → 0.2.8__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- toolsos/geo.py +19 -5
- toolsos/huisstijl/maps/__init__.py +0 -0
- toolsos/huisstijl/tables/tables.py +22 -4
- {toolsos-0.2.6.dist-info → toolsos-0.2.8.dist-info}/METADATA +1 -1
- {toolsos-0.2.6.dist-info → toolsos-0.2.8.dist-info}/RECORD +7 -6
- {toolsos-0.2.6.dist-info → toolsos-0.2.8.dist-info}/WHEEL +0 -0
- {toolsos-0.2.6.dist-info → toolsos-0.2.8.dist-info}/top_level.txt +0 -0
toolsos/geo.py
CHANGED
|
@@ -2,6 +2,7 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
from typing import Any, Union
|
|
4
4
|
|
|
5
|
+
import geopandas as gpd
|
|
5
6
|
import requests
|
|
6
7
|
|
|
7
8
|
|
|
@@ -17,15 +18,20 @@ def get_geo_json(
|
|
|
17
18
|
Returns:
|
|
18
19
|
dict[str, str]: geo json containg of the desired level and year
|
|
19
20
|
"""
|
|
20
|
-
base_url = "https://gitlab.com/os-amsterdam/datavisualisatie-onderzoek-en-statistiek/-/raw/main/public/geo
|
|
21
|
+
base_url = "https://gitlab.com/os-amsterdam/datavisualisatie-onderzoek-en-statistiek/-/raw/main/public/geo"
|
|
22
|
+
|
|
23
|
+
if level not in ["buurten", "wijken", "gebieden", "stadsdelen"]:
|
|
24
|
+
raise ValueError(
|
|
25
|
+
"level should be 'buurten', 'wijken', 'gebieden' or 'stadsdelen'"
|
|
26
|
+
)
|
|
21
27
|
|
|
22
28
|
if mra:
|
|
23
29
|
level = f"{level}-mra"
|
|
24
|
-
base_url = f"{base_url}mra
|
|
30
|
+
base_url = f"{base_url}/mra"
|
|
25
31
|
else:
|
|
26
|
-
base_url = f"{base_url}amsterdam
|
|
32
|
+
base_url = f"{base_url}/amsterdam"
|
|
27
33
|
|
|
28
|
-
if (year <= 2020)
|
|
34
|
+
if (year <= 2020) and not mra:
|
|
29
35
|
year = "2015-2020"
|
|
30
36
|
|
|
31
37
|
if with_water:
|
|
@@ -33,11 +39,19 @@ def get_geo_json(
|
|
|
33
39
|
else:
|
|
34
40
|
url = f"{base_url}/{year}/{level}-{year}-zw-geo.json"
|
|
35
41
|
|
|
36
|
-
print(url)
|
|
37
42
|
json = requests.get(url).json()
|
|
43
|
+
|
|
38
44
|
return json
|
|
39
45
|
|
|
40
46
|
|
|
47
|
+
def get_geo_dataframe(
|
|
48
|
+
level: str, year: Union[int, Any], with_water: bool = False, mra: bool = False
|
|
49
|
+
):
|
|
50
|
+
return gpd.read_file(
|
|
51
|
+
get_geo_json(level=level, year=year, with_water=with_water, mra=mra)
|
|
52
|
+
)
|
|
53
|
+
|
|
54
|
+
|
|
41
55
|
def extract_name_code_table(geo_json: dict[str, str]) -> dict[str, str]:
|
|
42
56
|
"""_summary_
|
|
43
57
|
|
|
File without changes
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import functools
|
|
2
2
|
import json
|
|
3
3
|
import re
|
|
4
|
+
import warnings
|
|
4
5
|
from itertools import groupby
|
|
5
6
|
from typing import Any, Callable, Dict
|
|
6
7
|
|
|
@@ -277,7 +278,14 @@ def get_cols_id_with_pattern(df: pd.DataFrame, pattern: str) -> list[int]:
|
|
|
277
278
|
Returns:
|
|
278
279
|
list[int]: list with column indices matching pattern
|
|
279
280
|
"""
|
|
280
|
-
|
|
281
|
+
|
|
282
|
+
if isinstance(df.columns, pd.MultiIndex):
|
|
283
|
+
# Use the lowest level in the multi-index column
|
|
284
|
+
return [
|
|
285
|
+
idx for idx, col in enumerate(df.columns) if re.findall(pattern, col[-1])
|
|
286
|
+
]
|
|
287
|
+
else:
|
|
288
|
+
return [idx for idx, col in enumerate(df.columns) if re.findall(pattern, col)]
|
|
281
289
|
|
|
282
290
|
|
|
283
291
|
def get_string_cols_ids(df: pd.DataFrame) -> list[int]:
|
|
@@ -502,7 +510,8 @@ def write_table(
|
|
|
502
510
|
blue_border: bool | None = True,
|
|
503
511
|
blue_border_row_ids: int | list[int] | None = None,
|
|
504
512
|
number_format: str = "0.0",
|
|
505
|
-
autofit_columns: str | None =
|
|
513
|
+
autofit_columns: str | None = None,
|
|
514
|
+
column_widths: list[int] | None = None,
|
|
506
515
|
min_column_width: int | None = None,
|
|
507
516
|
col_filter: bool | None = False,
|
|
508
517
|
style: str = "old",
|
|
@@ -542,6 +551,7 @@ def write_table(
|
|
|
542
551
|
blue_border_row_ids=blue_border_row_ids,
|
|
543
552
|
number_format=number_format,
|
|
544
553
|
autofit_columns=autofit_columns,
|
|
554
|
+
column_widths=column_widths,
|
|
545
555
|
min_column_width=min_column_width,
|
|
546
556
|
col_filter=col_filter,
|
|
547
557
|
combine_multiindex=combine_multiindex,
|
|
@@ -590,7 +600,8 @@ def format_worksheet(
|
|
|
590
600
|
blue_border: bool | None = True,
|
|
591
601
|
blue_border_row_ids: int | list[int] | None = None,
|
|
592
602
|
number_format: str = "0.0",
|
|
593
|
-
autofit_columns: str | None =
|
|
603
|
+
autofit_columns: str | None = None,
|
|
604
|
+
column_widths: list[int] | None = None,
|
|
594
605
|
min_column_width: int | None = None,
|
|
595
606
|
col_filter: bool | None = False,
|
|
596
607
|
combine_multiindex: bool | int = False,
|
|
@@ -692,7 +703,14 @@ def format_worksheet(
|
|
|
692
703
|
if combine_multiindex:
|
|
693
704
|
cells_to_merge = get_cells_to_merge(df)
|
|
694
705
|
|
|
695
|
-
if
|
|
706
|
+
if column_widths:
|
|
707
|
+
if len(arr[0]) != len(column_widths):
|
|
708
|
+
raise Warning(
|
|
709
|
+
"The number of widths defined in column_widths should be equal to the number of columsn in the dataframe"
|
|
710
|
+
)
|
|
711
|
+
col_widths = column_widths
|
|
712
|
+
|
|
713
|
+
elif (autofit_columns == "column_names") or (autofit_columns is None):
|
|
696
714
|
col_widths = get_max_col_widths(df)
|
|
697
715
|
elif autofit_columns == "all_data":
|
|
698
716
|
col_widths = get_max_col_widths(arr)
|
|
@@ -2,7 +2,7 @@ toolsos/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
|
2
2
|
toolsos/cbs_tools.py,sha256=361cogk0aIU4D4BKHaa7YSOBh64t5C3zrHlqtWx0iIc,3465
|
|
3
3
|
toolsos/create_tables.py,sha256=43FHK3EERjumBtnGhngIdtthZzcc_Qi37lJ1MgATzBg,908
|
|
4
4
|
toolsos/download.py,sha256=88hehmPL5m5d1nrcJjltuh4xrCItF5EYHaZdHOcSt-g,2652
|
|
5
|
-
toolsos/geo.py,sha256=
|
|
5
|
+
toolsos/geo.py,sha256=AUPwGCsIjS_JktiyK4D8LQUq1y-kXx_PUMWzScgkBc8,2851
|
|
6
6
|
toolsos/helpers.py,sha256=VeOl-fLgePCbjEmAQdVmYe7z8OE1pISeDDuP1t5QSxM,997
|
|
7
7
|
toolsos/polars_helpers.py,sha256=P3RHLQFeDL7-9U_Q1n4ma_NSkdYAiker4pnc57uluHw,770
|
|
8
8
|
toolsos/database/database_connection.py,sha256=HCP8H_-iE2BOOQDp9v1HOgfUSX45XS-aqw7Nzf8drAU,4359
|
|
@@ -15,11 +15,12 @@ toolsos/huisstijl/graphs/graph_styles.py,sha256=Z9LLH7j8ODTsYMYK0rslacphuiRDcq5_
|
|
|
15
15
|
toolsos/huisstijl/graphs/linegraph.py,sha256=dMUarRe31SXaY78OCXLy-PgnU8LlVJ9KkzKaHhDtuuI,698
|
|
16
16
|
toolsos/huisstijl/graphs/piegraph.py,sha256=aEFiEM-9QuhBOjKHSXVuE5bTh-8uucq4FP6O8Vk1vZI,703
|
|
17
17
|
toolsos/huisstijl/graphs/styler.py,sha256=-uZ7pjY1G39XvmaGHQd31gPRxjxmJGhYZk8xhy2JUWc,6623
|
|
18
|
+
toolsos/huisstijl/maps/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
18
19
|
toolsos/huisstijl/tables/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
19
20
|
toolsos/huisstijl/tables/table_helpers.py,sha256=jsQ6lw93sxtGJGrUn8X2_LyA2vYYnytngpUI5A_wpWQ,2037
|
|
20
21
|
toolsos/huisstijl/tables/table_styles.py,sha256=oYU6GJcfqlKpZof5PUjPsA7woJ3Tew78CHPyT0_jY6w,1343
|
|
21
|
-
toolsos/huisstijl/tables/tables.py,sha256=
|
|
22
|
-
toolsos-0.2.
|
|
23
|
-
toolsos-0.2.
|
|
24
|
-
toolsos-0.2.
|
|
25
|
-
toolsos-0.2.
|
|
22
|
+
toolsos/huisstijl/tables/tables.py,sha256=yeHiZd4EuOoeb_CeRE74xM1r1j6gCMNM1-I3Lpd2tyQ,24728
|
|
23
|
+
toolsos-0.2.8.dist-info/METADATA,sha256=1copLfCg6pko0yR08KsSLxsVKiXmxS6iLEV-oMghV7I,2683
|
|
24
|
+
toolsos-0.2.8.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
|
|
25
|
+
toolsos-0.2.8.dist-info/top_level.txt,sha256=2ClEjUBbtfDQ8oPwvWRy1Sz2nrkLCXlg0mHaMdCWia0,8
|
|
26
|
+
toolsos-0.2.8.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|