mgtx-xlwings-utils 0.1.0__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.
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 MeiraGTx LLC
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,163 @@
1
+ Metadata-Version: 2.4
2
+ Name: mgtx-xlwings-utils
3
+ Version: 0.1.0
4
+ Summary: Reusable xlwings and pandas helpers for Excel automation workflows.
5
+ Author-email: Omar Eweis <omar.eweis@meiragtx.com>
6
+ Maintainer-email: Omar Eweis <omar.eweis@meiragtx.com>
7
+ License-Expression: MIT
8
+ Project-URL: Homepage, https://github.com/MGTX-Data-Science/xlwings_package
9
+ Project-URL: Repository, https://github.com/MGTX-Data-Science/xlwings_package
10
+ Project-URL: Issues, https://github.com/MGTX-Data-Science/xlwings_package/issues
11
+ Keywords: xlwings,excel,pandas,automation,spreadsheet,benchling,office,com
12
+ Classifier: Development Status :: 4 - Beta
13
+ Classifier: Intended Audience :: Developers
14
+ Classifier: Intended Audience :: Science/Research
15
+ Classifier: Operating System :: Microsoft :: Windows
16
+ Classifier: Programming Language :: Python :: 3
17
+ Classifier: Programming Language :: Python :: 3.10
18
+ Classifier: Programming Language :: Python :: 3.11
19
+ Classifier: Programming Language :: Python :: 3.12
20
+ Classifier: Topic :: Office/Business :: Financial :: Spreadsheet
21
+ Classifier: Topic :: Scientific/Engineering
22
+ Classifier: Typing :: Typed
23
+ Requires-Python: <4.0,>=3.10.11
24
+ Description-Content-Type: text/markdown
25
+ License-File: LICENSE
26
+ Requires-Dist: xlwings>=0.30
27
+ Requires-Dist: pandas>=2.0
28
+ Requires-Dist: numpy>=1.24
29
+ Requires-Dist: matplotlib>=3.7
30
+ Requires-Dist: webcolors>=1.13
31
+ Provides-Extra: benchling
32
+ Requires-Dist: mgtx-benchling-wrapper>=0.1.7; extra == "benchling"
33
+ Requires-Dist: keyring>=24.0; extra == "benchling"
34
+ Requires-Dist: cryptography>=41.0; extra == "benchling"
35
+ Provides-Extra: dev
36
+ Requires-Dist: pytest>=8.0; extra == "dev"
37
+ Requires-Dist: pytest-cov>=5.0; extra == "dev"
38
+ Requires-Dist: pytest-mock>=3.14; extra == "dev"
39
+ Requires-Dist: pytest-profiling>=1.7; extra == "dev"
40
+ Requires-Dist: openpyxl>=3.1; extra == "dev"
41
+ Requires-Dist: build>=1.2; extra == "dev"
42
+ Requires-Dist: twine>=5.0; extra == "dev"
43
+ Dynamic: license-file
44
+
45
+ # mgtx-xlwings-utils
46
+
47
+ Package-first xlwings and pandas helpers for Excel automation workflows at MeiraGTx.
48
+
49
+ ---
50
+
51
+ ## Install
52
+
53
+ ```bash
54
+ pip install mgtx-xlwings-utils
55
+
56
+ # With Benchling integration:
57
+ pip install "mgtx-xlwings-utils[benchling]"
58
+ ```
59
+
60
+ For local development (editable install with test + build tooling):
61
+
62
+ ```bash
63
+ pip install -e ".[dev]"
64
+ ```
65
+
66
+ Python requirement: `>=3.10.11,<4.0`
67
+
68
+ ---
69
+
70
+ ## Documentation
71
+
72
+ ๐ŸŒ **Live docs site: <https://mgtx-data-science.github.io/xlwings_package/>**
73
+ &nbsp;ยท&nbsp; source: **[docs/index.md](https://github.com/MGTX-Data-Science/xlwings_package/blob/master/docs/index.md)**
74
+ &nbsp;ยท&nbsp; also mirrored on the **[GitHub Wiki](https://github.com/MGTX-Data-Science/xlwings_package/wiki)**.
75
+
76
+ Every guide is **full-lifecycle** โ€” initialise โ†’ paste data in โ†’ read it back
77
+ out โ†’ update โ†’ format โ†’ save โ€” with inline Excel-grid diagrams showing exactly
78
+ what to highlight and what each step does to the sheet.
79
+
80
+ **Scenario guides**
81
+
82
+ - **[Normal named-range tables](https://github.com/MGTX-Data-Science/xlwings_package/blob/master/docs/guides/normal-tables.md)**
83
+ โ€” build a table by hand in Excel and drive it from Python (no Benchling).
84
+ - **[One Benchling table](https://github.com/MGTX-Data-Science/xlwings_package/blob/master/docs/guides/benchling-single.md)**
85
+ โ€” pull a single result schema onto a sheet and write results back.
86
+ - **[Many Benchling tables (multi-sheet)](https://github.com/MGTX-Data-Science/xlwings_package/blob/master/docs/guides/benchling-multiple.md)**
87
+ โ€” lay out several schemas across multiple sheets from a dict of ids.
88
+ - **[Plates](https://github.com/MGTX-Data-Science/xlwings_package/blob/master/docs/guides/plates.md)**
89
+ โ€” 6 / 12 / 24 / 48 / 96 / 384 / 1536-well and custom layouts with
90
+ named-range round-trips.
91
+
92
+ **Understand the engine**
93
+
94
+ - **[Stacked tables & Benchling reinitialise](https://github.com/MGTX-Data-Science/xlwings_package/blob/master/docs/concepts/stacked-tables-and-reinit.md)**
95
+ โ€” how managed tables stack (disjoint rows, danger zone, auto-heal), and how
96
+ reinitialising with more columns auto-widens a table while protecting the
97
+ neighbour below.
98
+
99
+ **Reference & operational**
100
+
101
+ - **[Full tools reference](https://github.com/MGTX-Data-Science/xlwings_package/blob/master/docs/reference/tools.md)**
102
+ โ€” every public function + exception, with verbatim signatures and examples.
103
+ - **[Credentials](https://github.com/MGTX-Data-Science/xlwings_package/blob/master/docs/credentials.md)**
104
+ โ€” constructing the Benchling `ctx`.
105
+ - **[Common patterns](https://github.com/MGTX-Data-Science/xlwings_package/blob/master/docs/common-patterns.md)**
106
+ โ€” config cells, dropdowns, sheet management, plotting, file IO.
107
+
108
+ ---
109
+
110
+ ## Quickstart
111
+
112
+ ```python
113
+ import xlwings as xw
114
+ from xlwings_package import initialize_workbook, initialise_table_benchling
115
+
116
+ wb = xw.Book.caller()
117
+ initialize_workbook(wb)
118
+
119
+ # Pull a Benchling schema and lay it out on a sheet.
120
+ results = initialise_table_benchling(
121
+ wb,
122
+ "Assay Results",
123
+ ["assaysch_abc123"],
124
+ ctx=my_benchling_context, # see the Credentials guide
125
+ )
126
+ ```
127
+
128
+ See the **[single-Benchling guide](https://github.com/MGTX-Data-Science/xlwings_package/blob/master/docs/guides/benchling-single.md)**
129
+ for the full seven-step pattern (init โ†’ headers โ†’ read โ†’ transform โ†’ write โ†’
130
+ colour โ†’ save).
131
+
132
+ ---
133
+
134
+ ## Testing
135
+
136
+ ```bash
137
+ # Unit tests (no Excel required) โ€” pure-Python fake workbook harness.
138
+ pytest tests/unit/ -q
139
+
140
+ # Integration tests (require a live Excel installation on Windows).
141
+ pytest tests/integration/ -q
142
+ ```
143
+
144
+ Integration tests write inspectable artifacts to
145
+ `tests/integration/excel_table_tests/` โ€” open any `.xlsx` to see what each
146
+ test produced.
147
+
148
+ ---
149
+
150
+ ## Debugging
151
+
152
+ Best-effort operations (cell merges, sheet moves, bookmark auto-heal)
153
+ swallow Excel COM errors so they don't interrupt your workflow. To surface
154
+ those errors during debugging:
155
+
156
+ ```python
157
+ import logging
158
+ logging.basicConfig(level=logging.DEBUG)
159
+ ```
160
+
161
+ Production code paths that detect data-corruption risks (occupancy
162
+ conflicts, column overflow, missing schema metadata) always raise โ€” debug
163
+ logs are only relevant for cosmetic / non-load-bearing failures.
@@ -0,0 +1,119 @@
1
+ # mgtx-xlwings-utils
2
+
3
+ Package-first xlwings and pandas helpers for Excel automation workflows at MeiraGTx.
4
+
5
+ ---
6
+
7
+ ## Install
8
+
9
+ ```bash
10
+ pip install mgtx-xlwings-utils
11
+
12
+ # With Benchling integration:
13
+ pip install "mgtx-xlwings-utils[benchling]"
14
+ ```
15
+
16
+ For local development (editable install with test + build tooling):
17
+
18
+ ```bash
19
+ pip install -e ".[dev]"
20
+ ```
21
+
22
+ Python requirement: `>=3.10.11,<4.0`
23
+
24
+ ---
25
+
26
+ ## Documentation
27
+
28
+ ๐ŸŒ **Live docs site: <https://mgtx-data-science.github.io/xlwings_package/>**
29
+ &nbsp;ยท&nbsp; source: **[docs/index.md](https://github.com/MGTX-Data-Science/xlwings_package/blob/master/docs/index.md)**
30
+ &nbsp;ยท&nbsp; also mirrored on the **[GitHub Wiki](https://github.com/MGTX-Data-Science/xlwings_package/wiki)**.
31
+
32
+ Every guide is **full-lifecycle** โ€” initialise โ†’ paste data in โ†’ read it back
33
+ out โ†’ update โ†’ format โ†’ save โ€” with inline Excel-grid diagrams showing exactly
34
+ what to highlight and what each step does to the sheet.
35
+
36
+ **Scenario guides**
37
+
38
+ - **[Normal named-range tables](https://github.com/MGTX-Data-Science/xlwings_package/blob/master/docs/guides/normal-tables.md)**
39
+ โ€” build a table by hand in Excel and drive it from Python (no Benchling).
40
+ - **[One Benchling table](https://github.com/MGTX-Data-Science/xlwings_package/blob/master/docs/guides/benchling-single.md)**
41
+ โ€” pull a single result schema onto a sheet and write results back.
42
+ - **[Many Benchling tables (multi-sheet)](https://github.com/MGTX-Data-Science/xlwings_package/blob/master/docs/guides/benchling-multiple.md)**
43
+ โ€” lay out several schemas across multiple sheets from a dict of ids.
44
+ - **[Plates](https://github.com/MGTX-Data-Science/xlwings_package/blob/master/docs/guides/plates.md)**
45
+ โ€” 6 / 12 / 24 / 48 / 96 / 384 / 1536-well and custom layouts with
46
+ named-range round-trips.
47
+
48
+ **Understand the engine**
49
+
50
+ - **[Stacked tables & Benchling reinitialise](https://github.com/MGTX-Data-Science/xlwings_package/blob/master/docs/concepts/stacked-tables-and-reinit.md)**
51
+ โ€” how managed tables stack (disjoint rows, danger zone, auto-heal), and how
52
+ reinitialising with more columns auto-widens a table while protecting the
53
+ neighbour below.
54
+
55
+ **Reference & operational**
56
+
57
+ - **[Full tools reference](https://github.com/MGTX-Data-Science/xlwings_package/blob/master/docs/reference/tools.md)**
58
+ โ€” every public function + exception, with verbatim signatures and examples.
59
+ - **[Credentials](https://github.com/MGTX-Data-Science/xlwings_package/blob/master/docs/credentials.md)**
60
+ โ€” constructing the Benchling `ctx`.
61
+ - **[Common patterns](https://github.com/MGTX-Data-Science/xlwings_package/blob/master/docs/common-patterns.md)**
62
+ โ€” config cells, dropdowns, sheet management, plotting, file IO.
63
+
64
+ ---
65
+
66
+ ## Quickstart
67
+
68
+ ```python
69
+ import xlwings as xw
70
+ from xlwings_package import initialize_workbook, initialise_table_benchling
71
+
72
+ wb = xw.Book.caller()
73
+ initialize_workbook(wb)
74
+
75
+ # Pull a Benchling schema and lay it out on a sheet.
76
+ results = initialise_table_benchling(
77
+ wb,
78
+ "Assay Results",
79
+ ["assaysch_abc123"],
80
+ ctx=my_benchling_context, # see the Credentials guide
81
+ )
82
+ ```
83
+
84
+ See the **[single-Benchling guide](https://github.com/MGTX-Data-Science/xlwings_package/blob/master/docs/guides/benchling-single.md)**
85
+ for the full seven-step pattern (init โ†’ headers โ†’ read โ†’ transform โ†’ write โ†’
86
+ colour โ†’ save).
87
+
88
+ ---
89
+
90
+ ## Testing
91
+
92
+ ```bash
93
+ # Unit tests (no Excel required) โ€” pure-Python fake workbook harness.
94
+ pytest tests/unit/ -q
95
+
96
+ # Integration tests (require a live Excel installation on Windows).
97
+ pytest tests/integration/ -q
98
+ ```
99
+
100
+ Integration tests write inspectable artifacts to
101
+ `tests/integration/excel_table_tests/` โ€” open any `.xlsx` to see what each
102
+ test produced.
103
+
104
+ ---
105
+
106
+ ## Debugging
107
+
108
+ Best-effort operations (cell merges, sheet moves, bookmark auto-heal)
109
+ swallow Excel COM errors so they don't interrupt your workflow. To surface
110
+ those errors during debugging:
111
+
112
+ ```python
113
+ import logging
114
+ logging.basicConfig(level=logging.DEBUG)
115
+ ```
116
+
117
+ Production code paths that detect data-corruption risks (occupancy
118
+ conflicts, column overflow, missing schema metadata) always raise โ€” debug
119
+ logs are only relevant for cosmetic / non-load-bearing failures.
@@ -0,0 +1,94 @@
1
+ [build-system]
2
+ requires = ["setuptools>=77", "wheel"]
3
+ build-backend = "setuptools.build_meta"
4
+
5
+ [project]
6
+ name = "mgtx-xlwings-utils"
7
+ dynamic = ["version"]
8
+ description = "Reusable xlwings and pandas helpers for Excel automation workflows."
9
+ readme = "README.md"
10
+ requires-python = ">=3.10.11,<4.0"
11
+ license = "MIT"
12
+ license-files = ["LICENSE"]
13
+ authors = [{ name = "Omar Eweis", email = "omar.eweis@meiragtx.com" }]
14
+ maintainers = [{ name = "Omar Eweis", email = "omar.eweis@meiragtx.com" }]
15
+ keywords = [
16
+ "xlwings",
17
+ "excel",
18
+ "pandas",
19
+ "automation",
20
+ "spreadsheet",
21
+ "benchling",
22
+ "office",
23
+ "com",
24
+ ]
25
+ classifiers = [
26
+ "Development Status :: 4 - Beta",
27
+ "Intended Audience :: Developers",
28
+ "Intended Audience :: Science/Research",
29
+ "Operating System :: Microsoft :: Windows",
30
+ "Programming Language :: Python :: 3",
31
+ "Programming Language :: Python :: 3.10",
32
+ "Programming Language :: Python :: 3.11",
33
+ "Programming Language :: Python :: 3.12",
34
+ "Topic :: Office/Business :: Financial :: Spreadsheet",
35
+ "Topic :: Scientific/Engineering",
36
+ "Typing :: Typed",
37
+ ]
38
+ dependencies = [
39
+ "xlwings>=0.30",
40
+ "pandas>=2.0",
41
+ "numpy>=1.24",
42
+ "matplotlib>=3.7",
43
+ "webcolors>=1.13",
44
+ ]
45
+
46
+ [project.optional-dependencies]
47
+ benchling = [
48
+ "mgtx-benchling-wrapper>=0.1.7",
49
+ "keyring>=24.0",
50
+ "cryptography>=41.0",
51
+ ]
52
+ dev = [
53
+ "pytest>=8.0",
54
+ "pytest-cov>=5.0",
55
+ "pytest-mock>=3.14",
56
+ "pytest-profiling>=1.7",
57
+ "openpyxl>=3.1",
58
+ "build>=1.2",
59
+ "twine>=5.0",
60
+ ]
61
+
62
+ [project.urls]
63
+ Homepage = "https://github.com/MGTX-Data-Science/xlwings_package"
64
+ Repository = "https://github.com/MGTX-Data-Science/xlwings_package"
65
+ Issues = "https://github.com/MGTX-Data-Science/xlwings_package/issues"
66
+
67
+ [tool.setuptools.dynamic]
68
+ version = { attr = "xlwings_package.__version__" }
69
+
70
+ [tool.setuptools]
71
+ package-dir = { "" = "src" }
72
+
73
+ [tool.setuptools.packages.find]
74
+ where = ["src"]
75
+
76
+ [tool.setuptools.package-data]
77
+ xlwings_package = ["py.typed"]
78
+
79
+ [tool.pytest.ini_options]
80
+ testpaths = ["tests"]
81
+ pythonpath = ["."]
82
+ addopts = [
83
+ "--durations=10",
84
+ "--cov=src/xlwings_package",
85
+ "--cov-report=term-missing",
86
+ "--cov-report=html:htmlcov",
87
+ "--cov-fail-under=60",
88
+ ]
89
+ markers = [
90
+ "unit: fast unit tests, no Excel required",
91
+ "integration: requires a live Excel instance",
92
+ "slow: tests that take >1s",
93
+ "smoke: critical path sanity checks",
94
+ ]
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+
@@ -0,0 +1,163 @@
1
+ Metadata-Version: 2.4
2
+ Name: mgtx-xlwings-utils
3
+ Version: 0.1.0
4
+ Summary: Reusable xlwings and pandas helpers for Excel automation workflows.
5
+ Author-email: Omar Eweis <omar.eweis@meiragtx.com>
6
+ Maintainer-email: Omar Eweis <omar.eweis@meiragtx.com>
7
+ License-Expression: MIT
8
+ Project-URL: Homepage, https://github.com/MGTX-Data-Science/xlwings_package
9
+ Project-URL: Repository, https://github.com/MGTX-Data-Science/xlwings_package
10
+ Project-URL: Issues, https://github.com/MGTX-Data-Science/xlwings_package/issues
11
+ Keywords: xlwings,excel,pandas,automation,spreadsheet,benchling,office,com
12
+ Classifier: Development Status :: 4 - Beta
13
+ Classifier: Intended Audience :: Developers
14
+ Classifier: Intended Audience :: Science/Research
15
+ Classifier: Operating System :: Microsoft :: Windows
16
+ Classifier: Programming Language :: Python :: 3
17
+ Classifier: Programming Language :: Python :: 3.10
18
+ Classifier: Programming Language :: Python :: 3.11
19
+ Classifier: Programming Language :: Python :: 3.12
20
+ Classifier: Topic :: Office/Business :: Financial :: Spreadsheet
21
+ Classifier: Topic :: Scientific/Engineering
22
+ Classifier: Typing :: Typed
23
+ Requires-Python: <4.0,>=3.10.11
24
+ Description-Content-Type: text/markdown
25
+ License-File: LICENSE
26
+ Requires-Dist: xlwings>=0.30
27
+ Requires-Dist: pandas>=2.0
28
+ Requires-Dist: numpy>=1.24
29
+ Requires-Dist: matplotlib>=3.7
30
+ Requires-Dist: webcolors>=1.13
31
+ Provides-Extra: benchling
32
+ Requires-Dist: mgtx-benchling-wrapper>=0.1.7; extra == "benchling"
33
+ Requires-Dist: keyring>=24.0; extra == "benchling"
34
+ Requires-Dist: cryptography>=41.0; extra == "benchling"
35
+ Provides-Extra: dev
36
+ Requires-Dist: pytest>=8.0; extra == "dev"
37
+ Requires-Dist: pytest-cov>=5.0; extra == "dev"
38
+ Requires-Dist: pytest-mock>=3.14; extra == "dev"
39
+ Requires-Dist: pytest-profiling>=1.7; extra == "dev"
40
+ Requires-Dist: openpyxl>=3.1; extra == "dev"
41
+ Requires-Dist: build>=1.2; extra == "dev"
42
+ Requires-Dist: twine>=5.0; extra == "dev"
43
+ Dynamic: license-file
44
+
45
+ # mgtx-xlwings-utils
46
+
47
+ Package-first xlwings and pandas helpers for Excel automation workflows at MeiraGTx.
48
+
49
+ ---
50
+
51
+ ## Install
52
+
53
+ ```bash
54
+ pip install mgtx-xlwings-utils
55
+
56
+ # With Benchling integration:
57
+ pip install "mgtx-xlwings-utils[benchling]"
58
+ ```
59
+
60
+ For local development (editable install with test + build tooling):
61
+
62
+ ```bash
63
+ pip install -e ".[dev]"
64
+ ```
65
+
66
+ Python requirement: `>=3.10.11,<4.0`
67
+
68
+ ---
69
+
70
+ ## Documentation
71
+
72
+ ๐ŸŒ **Live docs site: <https://mgtx-data-science.github.io/xlwings_package/>**
73
+ &nbsp;ยท&nbsp; source: **[docs/index.md](https://github.com/MGTX-Data-Science/xlwings_package/blob/master/docs/index.md)**
74
+ &nbsp;ยท&nbsp; also mirrored on the **[GitHub Wiki](https://github.com/MGTX-Data-Science/xlwings_package/wiki)**.
75
+
76
+ Every guide is **full-lifecycle** โ€” initialise โ†’ paste data in โ†’ read it back
77
+ out โ†’ update โ†’ format โ†’ save โ€” with inline Excel-grid diagrams showing exactly
78
+ what to highlight and what each step does to the sheet.
79
+
80
+ **Scenario guides**
81
+
82
+ - **[Normal named-range tables](https://github.com/MGTX-Data-Science/xlwings_package/blob/master/docs/guides/normal-tables.md)**
83
+ โ€” build a table by hand in Excel and drive it from Python (no Benchling).
84
+ - **[One Benchling table](https://github.com/MGTX-Data-Science/xlwings_package/blob/master/docs/guides/benchling-single.md)**
85
+ โ€” pull a single result schema onto a sheet and write results back.
86
+ - **[Many Benchling tables (multi-sheet)](https://github.com/MGTX-Data-Science/xlwings_package/blob/master/docs/guides/benchling-multiple.md)**
87
+ โ€” lay out several schemas across multiple sheets from a dict of ids.
88
+ - **[Plates](https://github.com/MGTX-Data-Science/xlwings_package/blob/master/docs/guides/plates.md)**
89
+ โ€” 6 / 12 / 24 / 48 / 96 / 384 / 1536-well and custom layouts with
90
+ named-range round-trips.
91
+
92
+ **Understand the engine**
93
+
94
+ - **[Stacked tables & Benchling reinitialise](https://github.com/MGTX-Data-Science/xlwings_package/blob/master/docs/concepts/stacked-tables-and-reinit.md)**
95
+ โ€” how managed tables stack (disjoint rows, danger zone, auto-heal), and how
96
+ reinitialising with more columns auto-widens a table while protecting the
97
+ neighbour below.
98
+
99
+ **Reference & operational**
100
+
101
+ - **[Full tools reference](https://github.com/MGTX-Data-Science/xlwings_package/blob/master/docs/reference/tools.md)**
102
+ โ€” every public function + exception, with verbatim signatures and examples.
103
+ - **[Credentials](https://github.com/MGTX-Data-Science/xlwings_package/blob/master/docs/credentials.md)**
104
+ โ€” constructing the Benchling `ctx`.
105
+ - **[Common patterns](https://github.com/MGTX-Data-Science/xlwings_package/blob/master/docs/common-patterns.md)**
106
+ โ€” config cells, dropdowns, sheet management, plotting, file IO.
107
+
108
+ ---
109
+
110
+ ## Quickstart
111
+
112
+ ```python
113
+ import xlwings as xw
114
+ from xlwings_package import initialize_workbook, initialise_table_benchling
115
+
116
+ wb = xw.Book.caller()
117
+ initialize_workbook(wb)
118
+
119
+ # Pull a Benchling schema and lay it out on a sheet.
120
+ results = initialise_table_benchling(
121
+ wb,
122
+ "Assay Results",
123
+ ["assaysch_abc123"],
124
+ ctx=my_benchling_context, # see the Credentials guide
125
+ )
126
+ ```
127
+
128
+ See the **[single-Benchling guide](https://github.com/MGTX-Data-Science/xlwings_package/blob/master/docs/guides/benchling-single.md)**
129
+ for the full seven-step pattern (init โ†’ headers โ†’ read โ†’ transform โ†’ write โ†’
130
+ colour โ†’ save).
131
+
132
+ ---
133
+
134
+ ## Testing
135
+
136
+ ```bash
137
+ # Unit tests (no Excel required) โ€” pure-Python fake workbook harness.
138
+ pytest tests/unit/ -q
139
+
140
+ # Integration tests (require a live Excel installation on Windows).
141
+ pytest tests/integration/ -q
142
+ ```
143
+
144
+ Integration tests write inspectable artifacts to
145
+ `tests/integration/excel_table_tests/` โ€” open any `.xlsx` to see what each
146
+ test produced.
147
+
148
+ ---
149
+
150
+ ## Debugging
151
+
152
+ Best-effort operations (cell merges, sheet moves, bookmark auto-heal)
153
+ swallow Excel COM errors so they don't interrupt your workflow. To surface
154
+ those errors during debugging:
155
+
156
+ ```python
157
+ import logging
158
+ logging.basicConfig(level=logging.DEBUG)
159
+ ```
160
+
161
+ Production code paths that detect data-corruption risks (occupancy
162
+ conflicts, column overflow, missing schema metadata) always raise โ€” debug
163
+ logs are only relevant for cosmetic / non-load-bearing failures.
@@ -0,0 +1,20 @@
1
+ LICENSE
2
+ README.md
3
+ pyproject.toml
4
+ src/mgtx_xlwings_utils.egg-info/PKG-INFO
5
+ src/mgtx_xlwings_utils.egg-info/SOURCES.txt
6
+ src/mgtx_xlwings_utils.egg-info/dependency_links.txt
7
+ src/mgtx_xlwings_utils.egg-info/requires.txt
8
+ src/mgtx_xlwings_utils.egg-info/top_level.txt
9
+ src/xlwings_package/__init__.py
10
+ src/xlwings_package/benchling_io.py
11
+ src/xlwings_package/dataframe_utils.py
12
+ src/xlwings_package/excel_io.py
13
+ src/xlwings_package/excel_utils.py
14
+ src/xlwings_package/exceptions.py
15
+ src/xlwings_package/file_io.py
16
+ src/xlwings_package/formatting.py
17
+ src/xlwings_package/plate_functions.py
18
+ src/xlwings_package/plotting.py
19
+ src/xlwings_package/py.typed
20
+ src/xlwings_package/ui.py
@@ -0,0 +1,19 @@
1
+ xlwings>=0.30
2
+ pandas>=2.0
3
+ numpy>=1.24
4
+ matplotlib>=3.7
5
+ webcolors>=1.13
6
+
7
+ [benchling]
8
+ mgtx-benchling-wrapper>=0.1.7
9
+ keyring>=24.0
10
+ cryptography>=41.0
11
+
12
+ [dev]
13
+ pytest>=8.0
14
+ pytest-cov>=5.0
15
+ pytest-mock>=3.14
16
+ pytest-profiling>=1.7
17
+ openpyxl>=3.1
18
+ build>=1.2
19
+ twine>=5.0