excel-list-transform 0.8.2__tar.gz → 0.8.4__tar.gz
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.
- {excel_list_transform-0.8.2/excel_list_transform.egg-info → excel_list_transform-0.8.4}/PKG-INFO +12 -10
- {excel_list_transform-0.8.2 → excel_list_transform-0.8.4}/README.md +1 -1
- {excel_list_transform-0.8.2 → excel_list_transform-0.8.4}/README_pypi.md +3 -1
- {excel_list_transform-0.8.2 → excel_list_transform-0.8.4/excel_list_transform.egg-info}/PKG-INFO +12 -10
- excel_list_transform-0.8.4/excel_list_transform.egg-info/requires.txt +13 -0
- {excel_list_transform-0.8.2 → excel_list_transform-0.8.4}/pyproject.toml +1 -1
- {excel_list_transform-0.8.2 → excel_list_transform-0.8.4}/setup.py +9 -9
- {excel_list_transform-0.8.2 → excel_list_transform-0.8.4}/src/excel_list_transform/commontypes.py +11 -11
- {excel_list_transform-0.8.2 → excel_list_transform-0.8.4}/src/excel_list_transform/config_excel_list_transform.py +33 -27
- {excel_list_transform-0.8.2 → excel_list_transform-0.8.4}/src/excel_list_transform/config_factory.py +3 -3
- {excel_list_transform-0.8.2 → excel_list_transform-0.8.4}/src/excel_list_transform/generate_cfg.py +26 -26
- {excel_list_transform-0.8.2 → excel_list_transform-0.8.4}/src/excel_list_transform/handle_excel.py +2 -2
- {excel_list_transform-0.8.2 → excel_list_transform-0.8.4}/src/excel_list_transform/transform_cmd.py +2 -2
- excel_list_transform-0.8.2/excel_list_transform.egg-info/requires.txt +0 -13
- {excel_list_transform-0.8.2 → excel_list_transform-0.8.4}/LICENSE.txt +0 -0
- {excel_list_transform-0.8.2 → excel_list_transform-0.8.4}/excel_list_transform.egg-info/SOURCES.txt +0 -0
- {excel_list_transform-0.8.2 → excel_list_transform-0.8.4}/excel_list_transform.egg-info/dependency_links.txt +0 -0
- {excel_list_transform-0.8.2 → excel_list_transform-0.8.4}/excel_list_transform.egg-info/top_level.txt +0 -0
- {excel_list_transform-0.8.2 → excel_list_transform-0.8.4}/setup.cfg +0 -0
- {excel_list_transform-0.8.2 → excel_list_transform-0.8.4}/src/excel_list_transform/__init__.py +0 -0
- {excel_list_transform-0.8.2 → excel_list_transform-0.8.4}/src/excel_list_transform/__main__.py +0 -0
- {excel_list_transform-0.8.2 → excel_list_transform-0.8.4}/src/excel_list_transform/assert_dict_equal.py +0 -0
- {excel_list_transform-0.8.2 → excel_list_transform-0.8.4}/src/excel_list_transform/check_indata_common.py +0 -0
- {excel_list_transform-0.8.2 → excel_list_transform-0.8.4}/src/excel_list_transform/config.py +0 -0
- {excel_list_transform-0.8.2 → excel_list_transform-0.8.4}/src/excel_list_transform/config_auto_change_hook.py +0 -0
- {excel_list_transform-0.8.2 → excel_list_transform-0.8.4}/src/excel_list_transform/config_enums.py +0 -0
- {excel_list_transform-0.8.2 → excel_list_transform-0.8.4}/src/excel_list_transform/config_xls_list_transf_name.py +0 -0
- {excel_list_transform-0.8.2 → excel_list_transform-0.8.4}/src/excel_list_transform/config_xls_list_transf_num.py +0 -0
- {excel_list_transform-0.8.2 → excel_list_transform-0.8.4}/src/excel_list_transform/file_extension.py +0 -0
- {excel_list_transform-0.8.2 → excel_list_transform-0.8.4}/src/excel_list_transform/file_must_exist.py +0 -0
- {excel_list_transform-0.8.2 → excel_list_transform-0.8.4}/src/excel_list_transform/generate_txt.py +0 -0
- {excel_list_transform-0.8.2 → excel_list_transform-0.8.4}/src/excel_list_transform/handle_csv.py +0 -0
- {excel_list_transform-0.8.2 → excel_list_transform-0.8.4}/src/excel_list_transform/handle_empty_column.py +0 -0
- {excel_list_transform-0.8.2 → excel_list_transform-0.8.4}/src/excel_list_transform/migrate_cfg.py +0 -0
- {excel_list_transform-0.8.2 → excel_list_transform-0.8.4}/src/excel_list_transform/migrate_cfg_warn_hook.py +0 -0
- {excel_list_transform-0.8.2 → excel_list_transform-0.8.4}/src/excel_list_transform/num_named_conversion.py +0 -0
- {excel_list_transform-0.8.2 → excel_list_transform-0.8.4}/src/excel_list_transform/py.typed +0 -0
- {excel_list_transform-0.8.2 → excel_list_transform-0.8.4}/src/excel_list_transform/recode.py +0 -0
- {excel_list_transform-0.8.2 → excel_list_transform-0.8.4}/src/excel_list_transform/rewrite_value.py +0 -0
- {excel_list_transform-0.8.2 → excel_list_transform-0.8.4}/src/excel_list_transform/row_split_merge.py +0 -0
- {excel_list_transform-0.8.2 → excel_list_transform-0.8.4}/src/excel_list_transform/str_to_enum.py +0 -0
- {excel_list_transform-0.8.2 → excel_list_transform-0.8.4}/src/excel_list_transform/transform_func.py +0 -0
- {excel_list_transform-0.8.2 → excel_list_transform-0.8.4}/src/excel_list_transform/transform_func_common.py +0 -0
- {excel_list_transform-0.8.2 → excel_list_transform-0.8.4}/src/excel_list_transform/transform_func_named.py +0 -0
- {excel_list_transform-0.8.2 → excel_list_transform-0.8.4}/src/excel_list_transform/transform_func_num.py +0 -0
- {excel_list_transform-0.8.2 → excel_list_transform-0.8.4}/src/excel_list_transform/version_information.py +0 -0
{excel_list_transform-0.8.2/excel_list_transform.egg-info → excel_list_transform-0.8.4}/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: excel-list-transform
|
|
3
|
-
Version: 0.8.
|
|
3
|
+
Version: 0.8.4
|
|
4
4
|
Summary: Transform a list in excel or CSV
|
|
5
5
|
Author: Tom Björkholm
|
|
6
6
|
Author-email: Tom Björkholm <klausuler_linnet0q@icloud.com>
|
|
@@ -12,17 +12,17 @@ Requires-Python: <3.13,>=3.12
|
|
|
12
12
|
Description-Content-Type: text/markdown
|
|
13
13
|
License-File: LICENSE.txt
|
|
14
14
|
Requires-Dist: openpyxl>=3.1.5
|
|
15
|
-
Requires-Dist: types-openpyxl>=3.1.5.
|
|
15
|
+
Requires-Dist: types-openpyxl>=3.1.5.20250919
|
|
16
16
|
Requires-Dist: pylightxl>=1.61
|
|
17
|
-
Requires-Dist: XlsxWriter>=3.2.
|
|
18
|
-
Requires-Dist: argcomplete>=3.6.
|
|
19
|
-
Requires-Dist: pypi-simple>=1.
|
|
20
|
-
Requires-Dist: requests>=2.32.
|
|
21
|
-
Requires-Dist: types-requests>=2.32.4.
|
|
17
|
+
Requires-Dist: XlsxWriter>=3.2.9
|
|
18
|
+
Requires-Dist: argcomplete>=3.6.3
|
|
19
|
+
Requires-Dist: pypi-simple>=1.8.0
|
|
20
|
+
Requires-Dist: requests>=2.32.5
|
|
21
|
+
Requires-Dist: types-requests>=2.32.4.20250913
|
|
22
22
|
Requires-Dist: packaging>=25.0
|
|
23
|
-
Requires-Dist: pip>=25.
|
|
23
|
+
Requires-Dist: pip>=25.3
|
|
24
24
|
Requires-Dist: setuptools>=80.9.0
|
|
25
|
-
Requires-Dist: build>=1.
|
|
25
|
+
Requires-Dist: build>=1.3.0
|
|
26
26
|
Requires-Dist: wheel>=0.45.1
|
|
27
27
|
Dynamic: author
|
|
28
28
|
Dynamic: license-file
|
|
@@ -92,6 +92,8 @@ pip install --upgrade excel-list-transform
|
|
|
92
92
|
| 0.8.1 | 23 Jul 2025 | 3.11.x | Backport 0.8.3 to Python 3.11 |
|
|
93
93
|
| 0.8.2 | 23 Jul 2025 | 3.12.x | Backport 0.8.3 to Python 3.12 |
|
|
94
94
|
| 0.8.3 | 23 Jul 2025 | 3.13 or newer | Add split-row and merge-row |
|
|
95
|
+
| 0.8.4 | 23 Nov 2025 | 3.12.x | Backport 0.8.5 to Python 3.12 |
|
|
96
|
+
| 0.8.5 | 23 Nov 2025 | 3.13 or newer | Adapted to Python 3.14 |
|
|
95
97
|
|
|
96
98
|
## Running the application
|
|
97
99
|
|
|
@@ -509,4 +511,4 @@ Source code and tests are available at [https://bitbucket.org/tom-bjorkholm/exce
|
|
|
509
511
|
* Test result: 4119 passed in 14s
|
|
510
512
|
* No Flake8 warnings.
|
|
511
513
|
* No mypy errors found.
|
|
512
|
-
* 0.8.
|
|
514
|
+
* 0.8.4 built and tested using python version: Python 3.12.6
|
|
@@ -82,4 +82,4 @@ After running doBuild.zsh you can do manual test of the built and installed appl
|
|
|
82
82
|
* Test result: 4119 passed in 14s
|
|
83
83
|
* No Flake8 warnings.
|
|
84
84
|
* No mypy errors found.
|
|
85
|
-
* 0.8.
|
|
85
|
+
* 0.8.4 built and tested using python version: Python 3.12.6
|
|
@@ -61,6 +61,8 @@ pip install --upgrade excel-list-transform
|
|
|
61
61
|
| 0.8.1 | 23 Jul 2025 | 3.11.x | Backport 0.8.3 to Python 3.11 |
|
|
62
62
|
| 0.8.2 | 23 Jul 2025 | 3.12.x | Backport 0.8.3 to Python 3.12 |
|
|
63
63
|
| 0.8.3 | 23 Jul 2025 | 3.13 or newer | Add split-row and merge-row |
|
|
64
|
+
| 0.8.4 | 23 Nov 2025 | 3.12.x | Backport 0.8.5 to Python 3.12 |
|
|
65
|
+
| 0.8.5 | 23 Nov 2025 | 3.13 or newer | Adapted to Python 3.14 |
|
|
64
66
|
|
|
65
67
|
## Running the application
|
|
66
68
|
|
|
@@ -478,4 +480,4 @@ Source code and tests are available at [https://bitbucket.org/tom-bjorkholm/exce
|
|
|
478
480
|
* Test result: 4119 passed in 14s
|
|
479
481
|
* No Flake8 warnings.
|
|
480
482
|
* No mypy errors found.
|
|
481
|
-
* 0.8.
|
|
483
|
+
* 0.8.4 built and tested using python version: Python 3.12.6
|
{excel_list_transform-0.8.2 → excel_list_transform-0.8.4/excel_list_transform.egg-info}/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: excel-list-transform
|
|
3
|
-
Version: 0.8.
|
|
3
|
+
Version: 0.8.4
|
|
4
4
|
Summary: Transform a list in excel or CSV
|
|
5
5
|
Author: Tom Björkholm
|
|
6
6
|
Author-email: Tom Björkholm <klausuler_linnet0q@icloud.com>
|
|
@@ -12,17 +12,17 @@ Requires-Python: <3.13,>=3.12
|
|
|
12
12
|
Description-Content-Type: text/markdown
|
|
13
13
|
License-File: LICENSE.txt
|
|
14
14
|
Requires-Dist: openpyxl>=3.1.5
|
|
15
|
-
Requires-Dist: types-openpyxl>=3.1.5.
|
|
15
|
+
Requires-Dist: types-openpyxl>=3.1.5.20250919
|
|
16
16
|
Requires-Dist: pylightxl>=1.61
|
|
17
|
-
Requires-Dist: XlsxWriter>=3.2.
|
|
18
|
-
Requires-Dist: argcomplete>=3.6.
|
|
19
|
-
Requires-Dist: pypi-simple>=1.
|
|
20
|
-
Requires-Dist: requests>=2.32.
|
|
21
|
-
Requires-Dist: types-requests>=2.32.4.
|
|
17
|
+
Requires-Dist: XlsxWriter>=3.2.9
|
|
18
|
+
Requires-Dist: argcomplete>=3.6.3
|
|
19
|
+
Requires-Dist: pypi-simple>=1.8.0
|
|
20
|
+
Requires-Dist: requests>=2.32.5
|
|
21
|
+
Requires-Dist: types-requests>=2.32.4.20250913
|
|
22
22
|
Requires-Dist: packaging>=25.0
|
|
23
|
-
Requires-Dist: pip>=25.
|
|
23
|
+
Requires-Dist: pip>=25.3
|
|
24
24
|
Requires-Dist: setuptools>=80.9.0
|
|
25
|
-
Requires-Dist: build>=1.
|
|
25
|
+
Requires-Dist: build>=1.3.0
|
|
26
26
|
Requires-Dist: wheel>=0.45.1
|
|
27
27
|
Dynamic: author
|
|
28
28
|
Dynamic: license-file
|
|
@@ -92,6 +92,8 @@ pip install --upgrade excel-list-transform
|
|
|
92
92
|
| 0.8.1 | 23 Jul 2025 | 3.11.x | Backport 0.8.3 to Python 3.11 |
|
|
93
93
|
| 0.8.2 | 23 Jul 2025 | 3.12.x | Backport 0.8.3 to Python 3.12 |
|
|
94
94
|
| 0.8.3 | 23 Jul 2025 | 3.13 or newer | Add split-row and merge-row |
|
|
95
|
+
| 0.8.4 | 23 Nov 2025 | 3.12.x | Backport 0.8.5 to Python 3.12 |
|
|
96
|
+
| 0.8.5 | 23 Nov 2025 | 3.13 or newer | Adapted to Python 3.14 |
|
|
95
97
|
|
|
96
98
|
## Running the application
|
|
97
99
|
|
|
@@ -509,4 +511,4 @@ Source code and tests are available at [https://bitbucket.org/tom-bjorkholm/exce
|
|
|
509
511
|
* Test result: 4119 passed in 14s
|
|
510
512
|
* No Flake8 warnings.
|
|
511
513
|
* No mypy errors found.
|
|
512
|
-
* 0.8.
|
|
514
|
+
* 0.8.4 built and tested using python version: Python 3.12.6
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
openpyxl>=3.1.5
|
|
2
|
+
types-openpyxl>=3.1.5.20250919
|
|
3
|
+
pylightxl>=1.61
|
|
4
|
+
XlsxWriter>=3.2.9
|
|
5
|
+
argcomplete>=3.6.3
|
|
6
|
+
pypi-simple>=1.8.0
|
|
7
|
+
requests>=2.32.5
|
|
8
|
+
types-requests>=2.32.4.20250913
|
|
9
|
+
packaging>=25.0
|
|
10
|
+
pip>=25.3
|
|
11
|
+
setuptools>=80.9.0
|
|
12
|
+
build>=1.3.0
|
|
13
|
+
wheel>=0.45.1
|
|
@@ -5,7 +5,7 @@ from setuptools import setup
|
|
|
5
5
|
|
|
6
6
|
setup(
|
|
7
7
|
name='excel-list-transform',
|
|
8
|
-
version='0.8.
|
|
8
|
+
version='0.8.4',
|
|
9
9
|
description='Transform a list in excel or CSV.',
|
|
10
10
|
author='Tom Björkholm',
|
|
11
11
|
author_email='klausuler_linnet0q@icloud.com',
|
|
@@ -15,17 +15,17 @@ setup(
|
|
|
15
15
|
package_data={'excel_list_transform': ['src/py.typed']},
|
|
16
16
|
install_requires=[
|
|
17
17
|
'openpyxl >= 3.1.5',
|
|
18
|
-
'types-openpyxl >= 3.1.5.
|
|
18
|
+
'types-openpyxl >= 3.1.5.20250919',
|
|
19
19
|
'pylightxl >= 1.61',
|
|
20
|
-
'XlsxWriter >= 3.2.
|
|
21
|
-
'argcomplete >= 3.6.
|
|
22
|
-
'pypi-simple >= 1.
|
|
23
|
-
'requests >= 2.32.
|
|
24
|
-
'types-requests >= 2.32.4.
|
|
20
|
+
'XlsxWriter >= 3.2.9',
|
|
21
|
+
'argcomplete >= 3.6.3',
|
|
22
|
+
'pypi-simple >= 1.8.0',
|
|
23
|
+
'requests >= 2.32.5',
|
|
24
|
+
'types-requests >= 2.32.4.20250913',
|
|
25
25
|
'packaging >= 25.0',
|
|
26
|
-
'pip >= 25.
|
|
26
|
+
'pip >= 25.3',
|
|
27
27
|
'setuptools >= 80.9.0',
|
|
28
|
-
'build >= 1.
|
|
28
|
+
'build >= 1.3.0',
|
|
29
29
|
'wheel>=0.45.1'
|
|
30
30
|
]
|
|
31
31
|
)
|
{excel_list_transform-0.8.2 → excel_list_transform-0.8.4}/src/excel_list_transform/commontypes.py
RENAMED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
# MIT License
|
|
6
6
|
|
|
7
7
|
|
|
8
|
-
from typing import
|
|
8
|
+
from typing import Optional, cast, Sequence, Mapping, TypeVar, \
|
|
9
9
|
Any
|
|
10
10
|
from datetime import datetime
|
|
11
11
|
# imports needed by mypy, but not by python:
|
|
@@ -13,20 +13,20 @@ from typing import Union, List, Dict # pylint: disable=unused-import,ungrouped-
|
|
|
13
13
|
|
|
14
14
|
|
|
15
15
|
# types used to describe input and output data
|
|
16
|
-
Value
|
|
17
|
-
NumRow
|
|
18
|
-
NumRowSeq
|
|
19
|
-
NameRow
|
|
16
|
+
type Value = Optional[str | int | float | datetime]
|
|
17
|
+
type NumRow = list[Value]
|
|
18
|
+
type NumRowSeq = Sequence[Value]
|
|
19
|
+
type NameRow = dict[str, Value]
|
|
20
20
|
Row = TypeVar('Row', NumRow, NameRow)
|
|
21
|
-
NameRowMap
|
|
22
|
-
NumData
|
|
23
|
-
NumDataSeq
|
|
24
|
-
NameData
|
|
25
|
-
NameDataMap
|
|
21
|
+
type NameRowMap = Mapping[str, Value]
|
|
22
|
+
type NumData = list[NumRow]
|
|
23
|
+
type NumDataSeq = list[NumRowSeq]
|
|
24
|
+
type NameData = list[NameRow]
|
|
25
|
+
type NameDataMap = Sequence[NameRowMap]
|
|
26
26
|
type Data[Row] = list[Row]
|
|
27
27
|
DataCov = TypeVar('DataCov', NumDataSeq, NameDataMap)
|
|
28
28
|
|
|
29
|
-
JsonType
|
|
29
|
+
type JsonType = \
|
|
30
30
|
'Union[None, int, str, bool, List[JsonType], Dict[str, JsonType]]'
|
|
31
31
|
|
|
32
32
|
# helper functions
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
import sys
|
|
9
9
|
from copy import deepcopy
|
|
10
10
|
from enum import Enum
|
|
11
|
-
from typing import Optional, Callable,
|
|
11
|
+
from typing import Optional, Callable, TypeVar, NamedTuple, \
|
|
12
12
|
Generic, TypedDict
|
|
13
13
|
from csv import Dialect
|
|
14
14
|
from excel_list_transform.config import Config, ParseConverter, \
|
|
@@ -21,36 +21,42 @@ from excel_list_transform.config_auto_change_hook import ConfigAutoChangeHook
|
|
|
21
21
|
from excel_list_transform.migrate_cfg_warn_hook import MigrateCfgWarnHook
|
|
22
22
|
|
|
23
23
|
|
|
24
|
-
CsvSpec
|
|
24
|
+
type CsvSpec = dict[str, Optional[str]]
|
|
25
25
|
Column = TypeVar('Column', int, str)
|
|
26
|
-
SingleRule
|
|
27
|
-
Rule
|
|
28
|
-
SingleRuleSplit
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
26
|
+
type SingleRule[Column] = dict[str, Optional[Column | str]]
|
|
27
|
+
type Rule[Column] = list[SingleRule[Column]]
|
|
28
|
+
type SingleRuleSplit[Column] = dict[str, Optional[Column | str | SplitWhere]]
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
class SingleRuleRowSplit[Column](TypedDict):
|
|
32
|
+
"""Sinle rule for splitting a column."""
|
|
33
|
+
|
|
34
|
+
column: Column
|
|
35
|
+
separators: list[str]
|
|
36
|
+
not_separators: list[str]
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
type RuleSplit[Column] = list[SingleRuleSplit[Column]]
|
|
40
|
+
type RuleRowSplit[Column] = list[SingleRuleRowSplit[Column]]
|
|
41
|
+
type RuleOrder = list[str]
|
|
42
|
+
type RulePlace = list[int]
|
|
43
|
+
type RuleRemove = RulePlace
|
|
44
|
+
type RulePlaceOrOrder = RulePlace | RuleOrder
|
|
45
|
+
type SingleRuleRewrite[Column] = dict[str,
|
|
46
|
+
Optional[Column | str |
|
|
47
|
+
list[str] |
|
|
48
|
+
RewriteKind |
|
|
49
|
+
CaseSensitivity]]
|
|
50
|
+
type RuleRewrite[Column] = list[SingleRuleRewrite[Column]]
|
|
51
|
+
type SingleRuleMerge[Column] = dict[str, list[Column] | str]
|
|
52
|
+
type RuleMerge[Column] = list[SingleRuleMerge[Column]]
|
|
53
|
+
type DupCheckKeyArg[Column] = \
|
|
48
54
|
SingleRule[Column] | SingleRuleMerge[Column] | SingleRuleSplit[Column]
|
|
49
|
-
DupCheckKey
|
|
55
|
+
type DupCheckKey[Column] = \
|
|
50
56
|
Callable[[DupCheckKeyArg[Column]], Column | list[Column]]
|
|
51
|
-
IncrCheckKey
|
|
57
|
+
type IncrCheckKey[Column] = \
|
|
52
58
|
Callable[[SingleRuleMerge[Column]], Column | list[Column]]
|
|
53
|
-
NoDupKeydType
|
|
59
|
+
type NoDupKeydType[Column] = \
|
|
54
60
|
Rule[Column] | RuleMerge[Column] | RuleSplit[Column]
|
|
55
61
|
|
|
56
62
|
|
{excel_list_transform-0.8.2 → excel_list_transform-0.8.4}/src/excel_list_transform/config_factory.py
RENAMED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
# MIT License
|
|
6
6
|
|
|
7
7
|
|
|
8
|
-
from typing import Optional
|
|
8
|
+
from typing import Optional
|
|
9
9
|
import sys
|
|
10
10
|
from json import loads as json_loads
|
|
11
11
|
from json import JSONDecodeError
|
|
@@ -21,10 +21,10 @@ from excel_list_transform.config_auto_change_hook import ConfigAutoChangeHook
|
|
|
21
21
|
from excel_list_transform.migrate_cfg_warn_hook import MigrateCfgWarnHook
|
|
22
22
|
|
|
23
23
|
|
|
24
|
-
Configs
|
|
24
|
+
type Configs = \
|
|
25
25
|
dict[ColumnRef,
|
|
26
26
|
type[ConfigXlsListTransfName] | type[ConfigXlsListTransfNum]]
|
|
27
|
-
DerivedConfig
|
|
27
|
+
type DerivedConfig = ConfigXlsListTransfName | ConfigXlsListTransfNum
|
|
28
28
|
|
|
29
29
|
_CONFIGS: Configs = {ColumnRef.BY_NAME: ConfigXlsListTransfName,
|
|
30
30
|
ColumnRef.BY_NUMBER: ConfigXlsListTransfNum}
|
{excel_list_transform-0.8.2 → excel_list_transform-0.8.4}/src/excel_list_transform/generate_cfg.py
RENAMED
|
@@ -17,7 +17,7 @@ from excel_list_transform.config_xls_list_transf_name import \
|
|
|
17
17
|
from excel_list_transform.config_xls_list_transf_num import \
|
|
18
18
|
ConfigXlsListTransfNum
|
|
19
19
|
|
|
20
|
-
|
|
20
|
+
SYNTAX_PHONE_FIX: str = '''
|
|
21
21
|
The phone number has to be in international format '+' followed by only
|
|
22
22
|
digits for RRS, but the sailors filling in the form sometimes use
|
|
23
23
|
national format (no + and no country code). Also the sailors filling
|
|
@@ -29,7 +29,7 @@ phone numbers. For other countries s09_rewrite_columns need to be
|
|
|
29
29
|
adjusted.
|
|
30
30
|
'''
|
|
31
31
|
|
|
32
|
-
|
|
32
|
+
SYNYAX_O2X_COMMON: str = '''
|
|
33
33
|
|
|
34
34
|
Column names are changed from another language (Swedish) and sometimes from
|
|
35
35
|
a more instuctive naming to the names understood by RRS.
|
|
@@ -38,15 +38,15 @@ The events does not use divisions, boat names and WhatsApp. Thus the
|
|
|
38
38
|
form did not ask for these. They are inserted as empty columns to please
|
|
39
39
|
RRS.
|
|
40
40
|
|
|
41
|
-
''' +
|
|
41
|
+
''' + SYNTAX_PHONE_FIX
|
|
42
42
|
|
|
43
|
-
|
|
43
|
+
SYNTAX_ONLY_O2R_COMMON: str = '''
|
|
44
44
|
This an example of taking a registration list from the excel file received
|
|
45
45
|
from office forms or google forms and transforming it for importing into
|
|
46
46
|
RRS ( https://www.racingrulesofsailing.org ).
|
|
47
47
|
'''
|
|
48
48
|
|
|
49
|
-
|
|
49
|
+
BY_NAME_COMMON: str = '''
|
|
50
50
|
|
|
51
51
|
s10_column_order both tells the order the columns shall be written
|
|
52
52
|
in, and what columns to write out. The columns not listed here
|
|
@@ -56,16 +56,16 @@ This configuration files references columns "BY_NAME", which is the
|
|
|
56
56
|
preferred way to reference columns.
|
|
57
57
|
'''
|
|
58
58
|
|
|
59
|
-
|
|
59
|
+
BY_NUMBER_COMMON: str = '''
|
|
60
60
|
|
|
61
61
|
This configuration files references columns "BY_NUMBER".
|
|
62
62
|
The preferred way to reference columns in configuration files
|
|
63
63
|
is "BY_NAME".
|
|
64
64
|
'''
|
|
65
65
|
|
|
66
|
-
|
|
66
|
+
SYNTAX_O2R_COMMON: str = SYNTAX_ONLY_O2R_COMMON + SYNYAX_O2X_COMMON
|
|
67
67
|
|
|
68
|
-
|
|
68
|
+
SYNTAX_SW2R_COMMON: str = '''
|
|
69
69
|
|
|
70
70
|
In this example the input data is exported as JSON or XML from SailWave
|
|
71
71
|
https://www.sailwave.com . The data as a list in excel format is then
|
|
@@ -77,9 +77,9 @@ before it can be imported into RRS https://www.racingrulesofsailing.org/
|
|
|
77
77
|
The Name column is split into First Name and Last Name columns.
|
|
78
78
|
The column WhatsApp is added with no data.
|
|
79
79
|
|
|
80
|
-
''' +
|
|
80
|
+
''' + SYNTAX_PHONE_FIX
|
|
81
81
|
|
|
82
|
-
|
|
82
|
+
SYNTAX_SA2R_COMMON: str = '''
|
|
83
83
|
|
|
84
84
|
In this example the input data is exported from SailArena to RRS.
|
|
85
85
|
This input format is a comma separated values text file, with the
|
|
@@ -87,7 +87,7 @@ old character encoding scheme cp1252.
|
|
|
87
87
|
|
|
88
88
|
The only fixes needed are to read CSV in cp1252 encoding, fix the
|
|
89
89
|
format of the phone number and save to excel.
|
|
90
|
-
''' +
|
|
90
|
+
''' + SYNTAX_PHONE_FIX
|
|
91
91
|
|
|
92
92
|
|
|
93
93
|
def rewrite_phone_46_cfg(cfg: ConfigXlsListTransfName | ConfigXlsListTransfNum,
|
|
@@ -171,8 +171,8 @@ def generate_syntax_sw2r_name(filename: str, colref: ColumnRef) -> None:
|
|
|
171
171
|
cfg.write(to_json_filename=filename)
|
|
172
172
|
|
|
173
173
|
|
|
174
|
-
TXT_SW2R_NAME =
|
|
175
|
-
TXT_SA2R_NAME =
|
|
174
|
+
TXT_SW2R_NAME = SYNTAX_SW2R_COMMON + BY_NAME_COMMON
|
|
175
|
+
TXT_SA2R_NAME = SYNTAX_SA2R_COMMON + BY_NAME_COMMON
|
|
176
176
|
|
|
177
177
|
|
|
178
178
|
def generate_syntax_sa2r_num(filename: str, colref: ColumnRef) -> None:
|
|
@@ -224,8 +224,8 @@ def generate_syntax_sw2r_num(filename: str, colref: ColumnRef) -> None:
|
|
|
224
224
|
cfg.write(to_json_filename=filename)
|
|
225
225
|
|
|
226
226
|
|
|
227
|
-
TXT_SW2R_NUM =
|
|
228
|
-
TXT_SA2R_NUM =
|
|
227
|
+
TXT_SW2R_NUM = SYNTAX_SW2R_COMMON + BY_NUMBER_COMMON
|
|
228
|
+
TXT_SA2R_NUM = SYNTAX_SA2R_COMMON + BY_NUMBER_COMMON
|
|
229
229
|
|
|
230
230
|
|
|
231
231
|
def generate_syntax_o2r_name(filename: str, colref: ColumnRef) -> None:
|
|
@@ -260,7 +260,7 @@ def generate_syntax_o2r_name(filename: str, colref: ColumnRef) -> None:
|
|
|
260
260
|
cfg.write(to_json_filename=filename)
|
|
261
261
|
|
|
262
262
|
|
|
263
|
-
TXT_O2R_NAME =
|
|
263
|
+
TXT_O2R_NAME = SYNTAX_O2R_COMMON + BY_NAME_COMMON
|
|
264
264
|
|
|
265
265
|
|
|
266
266
|
def generate_syntax_o2r_num(filename: str, colref: ColumnRef) -> None:
|
|
@@ -293,15 +293,15 @@ def generate_syntax_o2r_num(filename: str, colref: ColumnRef) -> None:
|
|
|
293
293
|
cfg.write(to_json_filename=filename)
|
|
294
294
|
|
|
295
295
|
|
|
296
|
-
TXT_O2R_NUM =
|
|
296
|
+
TXT_O2R_NUM = SYNTAX_O2R_COMMON + BY_NUMBER_COMMON
|
|
297
297
|
|
|
298
|
-
|
|
298
|
+
SYNTAX_ONLY_O2S_COMMON: str = '''
|
|
299
299
|
This an example of taking a registration list from the excel file received
|
|
300
300
|
from office forms or google forms and transforming it for importing into
|
|
301
301
|
SailWave regatta scoring program ( https://www.sailwave.com ).
|
|
302
302
|
'''
|
|
303
303
|
|
|
304
|
-
|
|
304
|
+
SYNTAX_O2S_COMMON: str = SYNTAX_ONLY_O2R_COMMON + SYNYAX_O2X_COMMON
|
|
305
305
|
|
|
306
306
|
|
|
307
307
|
def generate_syntax_o2s_name(filename: str, colref: ColumnRef) -> None:
|
|
@@ -333,7 +333,7 @@ def generate_syntax_o2s_name(filename: str, colref: ColumnRef) -> None:
|
|
|
333
333
|
cfg.write(to_json_filename=filename)
|
|
334
334
|
|
|
335
335
|
|
|
336
|
-
TXT_O2S_NAME =
|
|
336
|
+
TXT_O2S_NAME = SYNTAX_O2S_COMMON + BY_NAME_COMMON
|
|
337
337
|
|
|
338
338
|
|
|
339
339
|
def generate_syntax_o2s_num(filename: str, colref: ColumnRef) -> None:
|
|
@@ -364,10 +364,10 @@ def generate_syntax_o2s_num(filename: str, colref: ColumnRef) -> None:
|
|
|
364
364
|
cfg.write(to_json_filename=filename)
|
|
365
365
|
|
|
366
366
|
|
|
367
|
-
TXT_O2S_NUM =
|
|
367
|
+
TXT_O2S_NUM = SYNTAX_O2S_COMMON + BY_NUMBER_COMMON
|
|
368
368
|
|
|
369
369
|
|
|
370
|
-
|
|
370
|
+
SYNTAX_R2S_COMMON: str = '''
|
|
371
371
|
This an example of taking a registration list from the excel file
|
|
372
372
|
exported from RRS ( https://www.racingrulesofsailing.org ) and
|
|
373
373
|
transforming it for importing into SailWave regatta scoring
|
|
@@ -411,7 +411,7 @@ def generate_syntax_r2s_name(filename: str, colref: ColumnRef) -> None:
|
|
|
411
411
|
cfg.write(to_json_filename=filename)
|
|
412
412
|
|
|
413
413
|
|
|
414
|
-
TXT_R2S_NAME =
|
|
414
|
+
TXT_R2S_NAME = SYNTAX_R2S_COMMON + BY_NAME_COMMON
|
|
415
415
|
|
|
416
416
|
|
|
417
417
|
def generate_syntax_r2s_num(filename: str, colref: ColumnRef) -> None:
|
|
@@ -448,7 +448,7 @@ def generate_syntax_r2s_num(filename: str, colref: ColumnRef) -> None:
|
|
|
448
448
|
cfg.write(to_json_filename=filename)
|
|
449
449
|
|
|
450
450
|
|
|
451
|
-
TXT_R2S_NUM =
|
|
451
|
+
TXT_R2S_NUM = SYNTAX_R2S_COMMON + BY_NUMBER_COMMON
|
|
452
452
|
|
|
453
453
|
|
|
454
454
|
def generate_syntax_example(filename: str, colref: ColumnRef) -> None:
|
|
@@ -518,8 +518,8 @@ identical values in the "To" column.
|
|
|
518
518
|
Finally we specify the new column order.
|
|
519
519
|
'''
|
|
520
520
|
|
|
521
|
-
TXT_ROWSPLITMERGE_NAME = TXT_ROWSPLITMERGE +
|
|
522
|
-
TXT_ROWSPLITMERGE_NUM = TXT_ROWSPLITMERGE +
|
|
521
|
+
TXT_ROWSPLITMERGE_NAME = TXT_ROWSPLITMERGE + BY_NAME_COMMON
|
|
522
|
+
TXT_ROWSPLITMERGE_NUM = TXT_ROWSPLITMERGE + BY_NUMBER_COMMON
|
|
523
523
|
|
|
524
524
|
|
|
525
525
|
dispatch = {'forms_to_rrs': {ColumnRef.BY_NAME: generate_syntax_o2r_name,
|
{excel_list_transform-0.8.2 → excel_list_transform-0.8.4}/src/excel_list_transform/handle_excel.py
RENAMED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
import sys
|
|
11
11
|
from datetime import datetime, date, time
|
|
12
12
|
from copy import deepcopy
|
|
13
|
-
from typing import Optional,
|
|
13
|
+
from typing import Optional, Any
|
|
14
14
|
from decimal import Decimal
|
|
15
15
|
from xlsxwriter import Workbook as xlsxwriter_wb # type: ignore
|
|
16
16
|
from pylightxl import readxl as pl_readxl # type: ignore
|
|
@@ -30,7 +30,7 @@ from excel_list_transform.num_named_conversion import \
|
|
|
30
30
|
named_cols_from_num_cols, num_cols_from_named_cols
|
|
31
31
|
|
|
32
32
|
|
|
33
|
-
_AnyCellValue
|
|
33
|
+
type _AnyCellValue = Any # AnyOf _CellGetValue # noqa: Y047
|
|
34
34
|
seentypes: list[str] = []
|
|
35
35
|
|
|
36
36
|
|
{excel_list_transform-0.8.2 → excel_list_transform-0.8.4}/src/excel_list_transform/transform_cmd.py
RENAMED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
|
|
9
9
|
from copy import deepcopy
|
|
10
10
|
from sys import argv as sys_argv
|
|
11
|
-
from typing import Optional
|
|
11
|
+
from typing import Optional
|
|
12
12
|
import argparse
|
|
13
13
|
import argcomplete
|
|
14
14
|
from excel_list_transform.transform_func import transform_named_files
|
|
@@ -90,7 +90,7 @@ SEE_MAIN_HELP = '''
|
|
|
90
90
|
See also help text for main command without sub-commands.
|
|
91
91
|
'''
|
|
92
92
|
|
|
93
|
-
SubParseAct
|
|
93
|
+
type SubParseAct = 'argparse._SubParsersAction[argparse.ArgumentParser]'
|
|
94
94
|
|
|
95
95
|
|
|
96
96
|
def gen_cfg_args_named(subparsers: SubParseAct, sub_pars_name: str) -> None:
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
openpyxl>=3.1.5
|
|
2
|
-
types-openpyxl>=3.1.5.20250602
|
|
3
|
-
pylightxl>=1.61
|
|
4
|
-
XlsxWriter>=3.2.5
|
|
5
|
-
argcomplete>=3.6.2
|
|
6
|
-
pypi-simple>=1.6.1
|
|
7
|
-
requests>=2.32.4
|
|
8
|
-
types-requests>=2.32.4.20250611
|
|
9
|
-
packaging>=25.0
|
|
10
|
-
pip>=25.1.1
|
|
11
|
-
setuptools>=80.9.0
|
|
12
|
-
build>=1.2.2.post1
|
|
13
|
-
wheel>=0.45.1
|
|
File without changes
|
{excel_list_transform-0.8.2 → excel_list_transform-0.8.4}/excel_list_transform.egg-info/SOURCES.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{excel_list_transform-0.8.2 → excel_list_transform-0.8.4}/src/excel_list_transform/__init__.py
RENAMED
|
File without changes
|
{excel_list_transform-0.8.2 → excel_list_transform-0.8.4}/src/excel_list_transform/__main__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{excel_list_transform-0.8.2 → excel_list_transform-0.8.4}/src/excel_list_transform/config.py
RENAMED
|
File without changes
|
|
File without changes
|
{excel_list_transform-0.8.2 → excel_list_transform-0.8.4}/src/excel_list_transform/config_enums.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{excel_list_transform-0.8.2 → excel_list_transform-0.8.4}/src/excel_list_transform/file_extension.py
RENAMED
|
File without changes
|
|
File without changes
|
{excel_list_transform-0.8.2 → excel_list_transform-0.8.4}/src/excel_list_transform/generate_txt.py
RENAMED
|
File without changes
|
{excel_list_transform-0.8.2 → excel_list_transform-0.8.4}/src/excel_list_transform/handle_csv.py
RENAMED
|
File without changes
|
|
File without changes
|
{excel_list_transform-0.8.2 → excel_list_transform-0.8.4}/src/excel_list_transform/migrate_cfg.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{excel_list_transform-0.8.2 → excel_list_transform-0.8.4}/src/excel_list_transform/recode.py
RENAMED
|
File without changes
|
{excel_list_transform-0.8.2 → excel_list_transform-0.8.4}/src/excel_list_transform/rewrite_value.py
RENAMED
|
File without changes
|
|
File without changes
|
{excel_list_transform-0.8.2 → excel_list_transform-0.8.4}/src/excel_list_transform/str_to_enum.py
RENAMED
|
File without changes
|
{excel_list_transform-0.8.2 → excel_list_transform-0.8.4}/src/excel_list_transform/transform_func.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|