From 409bdd0303c2268c028087e3be9a8ca9b749a961 Mon Sep 17 00:00:00 2001 From: Gavin Burnell Date: Sun, 21 Dec 2025 17:05:18 +0000 Subject: [PATCH 01/12] Change references from master to main --- README.rst | 6 +++--- doc/readme.rst | 6 +++--- doc/samples/lmfit_demo_url.py | 4 ++-- tests/Stoner/test_FileFormats.py | 6 +++--- 4 files changed, 11 insertions(+), 11 deletions(-) diff --git a/README.rst b/README.rst index 76e826029..52f61dbfa 100755 --- a/README.rst +++ b/README.rst @@ -1,8 +1,8 @@ .. image:: https://github.com/stonerlab/Stoner-PythonCode/actions/workflows/run-tests-action.yaml/badge.svg?branch=stable :target: https://github.com/stonerlab/Stoner-PythonCode/actions/workflows/run-tests-action.yaml -.. image:: https://coveralls.io/repos/github/stonerlab/Stoner-PythonCode/badge.svg?branch=master - :target: https://coveralls.io/github/stonerlab/Stoner-PythonCode?branch=master +.. image:: https://coveralls.io/repos/github/stonerlab/Stoner-PythonCode/badge.svg?branch=main + :target: https://coveralls.io/github/stonerlab/Stoner-PythonCode?branch=main .. image:: https://app.codacy.com/project/badge/Grade/a9069a1567114a22b25d63fd4c50b228 :target: https://app.codacy.com/gh/stonerlab/Stoner-PythonCode/dashboard?utm_source=gh&utm_medium=referral&utm_content=&utm_campaign=Badge_grade @@ -199,7 +199,7 @@ making beta packages available. Development Version ------------------- -The current development version is currently on a stable branch and is version 0.11.x. The master branch contains work +The current development version is currently on a stable branch and is version 0.11.x. The main branch contains work in progress to migrate to using Pandas dataframes as the underlying data store - this is however largely broken! Build Status diff --git a/doc/readme.rst b/doc/readme.rst index 76e826029..52f61dbfa 100755 --- a/doc/readme.rst +++ b/doc/readme.rst @@ -1,8 +1,8 @@ .. image:: https://github.com/stonerlab/Stoner-PythonCode/actions/workflows/run-tests-action.yaml/badge.svg?branch=stable :target: https://github.com/stonerlab/Stoner-PythonCode/actions/workflows/run-tests-action.yaml -.. image:: https://coveralls.io/repos/github/stonerlab/Stoner-PythonCode/badge.svg?branch=master - :target: https://coveralls.io/github/stonerlab/Stoner-PythonCode?branch=master +.. image:: https://coveralls.io/repos/github/stonerlab/Stoner-PythonCode/badge.svg?branch=main + :target: https://coveralls.io/github/stonerlab/Stoner-PythonCode?branch=main .. image:: https://app.codacy.com/project/badge/Grade/a9069a1567114a22b25d63fd4c50b228 :target: https://app.codacy.com/gh/stonerlab/Stoner-PythonCode/dashboard?utm_source=gh&utm_medium=referral&utm_content=&utm_campaign=Badge_grade @@ -199,7 +199,7 @@ making beta packages available. Development Version ------------------- -The current development version is currently on a stable branch and is version 0.11.x. The master branch contains work +The current development version is currently on a stable branch and is version 0.11.x. The main branch contains work in progress to migrate to using Pandas dataframes as the underlying data store - this is however largely broken! Build Status diff --git a/doc/samples/lmfit_demo_url.py b/doc/samples/lmfit_demo_url.py index 0f953f4b4..c483153e2 100755 --- a/doc/samples/lmfit_demo_url.py +++ b/doc/samples/lmfit_demo_url.py @@ -7,12 +7,12 @@ from Stoner.analysis.fitting.models import cfg_data_from_ini, cfg_model_from_ini with urllib.request.urlopen( - "https://raw.githubusercontent.com/stonerlab/Stoner-PythonCode/master/scripts/PCAR-chi%5E2.ini" + "https://raw.githubusercontent.com/stonerlab/Stoner-PythonCode/main/scripts/PCAR-chi%5E2.ini" ) as uri: config = io.StringIO(uri.read().decode()) with urllib.request.urlopen( - "https://github.com/stonerlab/Stoner-PythonCode/raw/master/sample-data/PCAR%20Co%20Data.csv" + "https://github.com/stonerlab/Stoner-PythonCode/raw/main/sample-data/PCAR%20Co%20Data.csv" ) as uri: datafile = io.StringIO(uri.read().decode()) diff --git a/tests/Stoner/test_FileFormats.py b/tests/Stoner/test_FileFormats.py index 5c927fd49..6d9de1698 100755 --- a/tests/Stoner/test_FileFormats.py +++ b/tests/Stoner/test_FileFormats.py @@ -147,12 +147,12 @@ def test_arb_class_load(): def test_url_load(): """Test URL scheme openers.""" - t1 = Data("https://github.com/stonerlab/Stoner-PythonCode/raw/master/sample-data/hairboRaman.spc") + t1 = Data("https://github.com/stonerlab/Stoner-PythonCode/raw/main/sample-data/hairboRaman.spc") assert t1 == Data(__datapath__ / "hairboRaman.spc") - t2 = Data("https://github.com/stonerlab/Stoner-PythonCode/raw/master/sample-data/New-XRay-Data.dql") + t2 = Data("https://github.com/stonerlab/Stoner-PythonCode/raw/main/sample-data/New-XRay-Data.dql") assert t2 == Data(__datapath__ / "New-XRay-Data.dql") resp = urllib.request.urlopen( - "https://github.com/stonerlab/Stoner-PythonCode/raw/master/sample-data/New-XRay-Data.dql" + "https://github.com/stonerlab/Stoner-PythonCode/raw/main/sample-data/New-XRay-Data.dql" ) t3 = Data(resp) assert t3 == t2 From 5a43f37a08d64f3153eae1bebc221c6f7b7f0a25 Mon Sep 17 00:00:00 2001 From: Gavin Burnell Date: Mon, 16 Mar 2026 22:42:37 +0000 Subject: [PATCH 02/12] Add measurelink sequence files --- Stoner/formats/data/zip.py | 47 ++++++++++ Stoner/tools/json.py | 156 +++++++++++++++++++++++++++++++++ sample-data/Rxx_Rxy_v_T.mlseq | Bin 0 -> 124697 bytes sample-data/Sequence~002.mlseq | Bin 0 -> 40556 bytes 4 files changed, 203 insertions(+) create mode 100755 Stoner/tools/json.py create mode 100755 sample-data/Rxx_Rxy_v_T.mlseq create mode 100755 sample-data/Sequence~002.mlseq diff --git a/Stoner/formats/data/zip.py b/Stoner/formats/data/zip.py index 4045cdcb4..11439b7df 100755 --- a/Stoner/formats/data/zip.py +++ b/Stoner/formats/data/zip.py @@ -1,10 +1,13 @@ # -*- coding: utf-8 -*- """Loader for zip files.""" +import json import pathlib import zipfile as zf from os import path from traceback import format_exc +import chardet + from ...compat import path_types, str2bytes from ...core.data import Data from ...core.exceptions import StonerLoadError @@ -14,6 +17,8 @@ from ..decorators import register_loader, register_saver from ..utils.zip import test_is_zip +from ...tools.json import flatten_json, find_paths, find_parent_dicts + def _split_filename(filename: Filename, **kwargs: Kwargs) -> Filename: """Try to get the member and filename parts.""" @@ -27,6 +32,48 @@ def _split_filename(filename: Filename, **kwargs: Kwargs) -> Filename: return filename +@register_loader(patterns=(".mlseq", 16), mime_types=("application/zip", 16), name="MeasureLinkFile", what="Data") +def load_measure_linkfile(new_data: Data, *args: Args, **kwargs: Kwargs) -> Data: + """Load a MeasureLink sequence file and assemble as a data object. + + Args: + new_data (Data): + Data instance into whoch to load the new data. + *args: + Other positional arguments passed to get_filename. + + Keyword Arguments: + **kwargs: + Other keyword arguments passed to get_filename. + + Returns: + (Data): + Loaded Data instance. + + Notes: + `.mlseq` files are actually zip archives containing a collection of json files and a flat list of sub-folders + The subfolders contain json for the node operations and optionally (if the key HasData is True) a csv file. + """ + filename, args, kwargs = get_filename(args, kwargs) + with zf.ZipFile(filename, "r") as seq: + if "FileInfo.json" not in seq.namelist(): + raise StonerLoadError("Missing the Measurelink Sequence FileInfo.json entry") + with seq.open("FileInfo.json", "r") as fileinfo_json: + fileinfo = fileinfo_json.read() + fileinfo = fileinfo.decode(chardet.detect(fileinfo)["encoding"]) + fileinfo = json.loads(fileinfo) + new_data.metadata.update(flatten_json(fileinfo)) + with seq.open("Model.json", "r") as model_json: + model = model_json.read() + model = model.decode(chardet.detect(model)["encoding"]) + has_data = find_paths(model, "HasData", True) + new_data.model = model + new_data.has_data = has_data + + new_data.filename = filename + return new_data + + @register_loader(patterns=(".zip", 16), mime_types=("application/zip", 16), name="ZippedFile", what="Data") def load_zipfile(new_data: Data, *args: Args, **kwargs: Kwargs) -> Data: """Load a file from the zip file, opening it as necessary. diff --git a/Stoner/tools/json.py b/Stoner/tools/json.py new file mode 100755 index 000000000..477b604d9 --- /dev/null +++ b/Stoner/tools/json.py @@ -0,0 +1,156 @@ +# -*- coding: utf-8 -*- +"""Tools for manipulating json.""" + + +def flatten_json(data, parent_key=""): + """Flatten a nested JSON-like structure into a dotted-key dictionary. + + Args: + data: The JSON-like structure to flatten. May contain dictionaries, + lists, and scalar values. + parent_key: The prefix to prepend to keys in the flattened output. + Used internally during recursion. + + Returns: + dict: A flat dictionary mapping dotted/bracketed key paths to scalar + values. + + This function recursively flattens nested dictionaries and lists into a + single-level dictionary where: + + * Nested dictionary keys are joined using dot notation. + * List indices are represented using bracket notation, e.g. "[0]". + * Scalar values (str, int, float, bool, None) become the final values. + + The function is pure: it does not mutate input data and does not rely on + side effects. Each recursive call returns a new dictionary, and the caller + merges results. + + Examples: + >>> flatten_json({"a": {"b": 1}, "c": [10, 20]}) + {'a.b': 1, 'c[0]': 10, 'c[1]': 20} + + >>> flatten_json({"x": {"y": {"z": True}}}) + {'x.y.z': True} + """ + items = {} + + match data: + case dict(): + for key, value in data.items(): + new_key = f"{parent_key}.{key}" if parent_key else key + items.update(flatten_json(value, new_key)) + + case list(): + for idx, value in enumerate(data): + new_key = f"{parent_key}[{idx}]" + items.update(flatten_json(value, new_key)) + + case _: + items[parent_key] = data + + return items + + +def find_paths(data, target_key, target_value, path=None): + """Yield all paths leading to a key/value pair in a nested structure. + + Args: + data: The JSON-like structure to search. May contain dictionaries, + lists, and scalar values. + target_key: The dictionary key to match. + target_value: The value that must be associated with `target_key` + for a path to be considered a match. + path: Internal recursion parameter. A list representing the path + taken so far. Users should not supply this argument. + + Yields: + list[str]: A list of path components representing the full ancestry + from the root to the matching key/value pair. + + + This function recursively traverses a nested JSON-like structure + (dictionaries, lists, and scalar values) and yields every path where + `target_key` equals `target_value`. Paths are returned as lists of + components, where dictionary keys are plain strings and list indices + are represented as bracketed strings (e.g., "[0]"). + + Examples: + >>> data = {"A": {"B": {"HasData": True}}} + >>> list(find_paths(data, "HasData", True)) + [['A', 'B', 'HasData']] + + >>> data = {"items": [{"HasData": True}, {"HasData": False}]} + >>> list(find_paths(data, "HasData", True)) + [['items', '[0]', 'HasData']] + """ + if path is None: + path = [] + + match data: + case dict(): + for key, value in data.items(): + new_path = path + [key] + if key == target_key and value == target_value: + yield new_path + yield from find_paths(value, target_key, target_value, new_path) + + case list(): + for idx, value in enumerate(data): + new_path = path + [idx] + yield from find_paths(value, target_key, target_value, new_path) + + case _: + return + + +def find_parent_dicts(data, target_key, target_value): + """Yield dictionaries that contain a matching key/value pair. + + Args: + data: The JSON-like structure to search. May contain dictionaries, + lists, and scalar values. + target_key: The dictionary key to match. + target_value: The required value associated with `target_key`. + + Yields: + dict: A dictionary that contains the matching key/value pair. + + This function recursively searches a nested JSON-like structure and + yields every dictionary in which `target_key` exists and its value + equals `target_value`. Unlike `find_paths`, this function returns the + dictionary object itself, allowing callers to inspect sibling keys or + modify the parent structure. + + Examples: + >>> data = {"A": {"B": {"HasData": True, "Other": 5}}} + >>> list(find_parent_dicts(data, "HasData", True)) + [{'HasData': True, 'Other': 5}] + + >>> data = {"items": [{"HasData": True}, {"HasData": False}]} + >>> list(find_parent_dicts(data, "HasData", True)) + [{'HasData': True}] + """ + match data: + case dict(): + if target_key in data and data[target_key] == target_value: + yield data + for value in data.values(): + yield from find_parent_dicts(value, target_key, target_value) + + case list(): + for value in data: + yield from find_parent_dicts(value, target_key, target_value) + + case _: + return + + +if __name__ == "__main__": + data = { + "key1": {"subkey1": 1, "subkey2": 2}, + "key2": ["value2.1", {"subkey3": "value2.2.1", "subkey4": "value2.2.2", "HasData": True}], + } + output = flatten_json(data) + output2 = [pth for pth in find_paths(data, "HasData", True)] + output3 = [pth for pth in find_parent_dicts(data, "HasData", True)] diff --git a/sample-data/Rxx_Rxy_v_T.mlseq b/sample-data/Rxx_Rxy_v_T.mlseq new file mode 100755 index 0000000000000000000000000000000000000000..a4d644733fd06c426017be071b105f7a0bad64df GIT binary patch literal 124697 zcmeFZWmufewk=9R0tuSnP7*A*ySqbhx5nMw0t9z!+})*dO^_zIy9T$$U2l_bpR?D# z>)d;PtiP8Z?^9h}HOs~vV?NdM<(o9@8w?m2n0GMjrqM)>2va}cN(H$Yw5vA|TNzoKwT3X> z0d#L9I{X)L;D&5cw+}dro^O3SI#yc=f0T2RfxfVUNa3jkRNsWsVaQN`@XOQ?D{tXY zstkV4wZj$QrbU+_8XBfxalTW^C80NDv_kwq>4hd_-!WcoeJ1oa)Xz$rNF`s^s!=|j z&lxM>O%&lbVozb;&2Pv4G2dgrSp5-IZmpvzL3#RX0I84-)ZNgky+)egZN(`$8OlNu zuWvt?M$uzsn~MW9mTT)ORO0eV+r><|M|n-HQrlp{vI<^fl(L&AVDL=yvV7c=y!XKX zQ^0hiBnPIV+Fp*ce3Va|axfl)#ZK{>Hfs=|YpAhBKV#nzX$_FJkqS_FdpJLhGLgGv z^iYVrnS(*yL8lD3`W2m6xR543-U(LOY06ljb;7MTPf|#8$z&a)HR#Q3$%xkb_CHSH z*Uesj0XGax%lEf12+&iIwKX!f`g;Tr?*oSoj<};|bo&**ocZMB`D!CY*Gs3-AM{&P zwn=3?z}6PaA}$L`gj!C~SiHE>TGQNBi{}jDosU-vBh&;i`J^##BnE)isZS0KjWkU5 z(xfrJ-<+I2KW07OS3N&=vQ(Vf{(<BhwQd*&u3ED$>hek zuG>=}F^so;aZOnBlOmbZlVGCJQ$ks^F@k5XkNHApt}lk@M`raqBe^9zf;iDJE_}RT zRlCh*=6j31v>Zq?4Zr5v7>=j(>KFUCQ|k|Lw>7rDWPBBy6QSWdWEEv62ix<_kQO5; z;t?5&PiZ@bXh990y>qiF1<}!MTU|M$sK6X?y}&1jcrmx(R7We;9yR#zKu78}d7wD1 zF1@TTUYo;kC`ri}Rj^QH-mMiu>gU+$sE+k6z%;kB@Oo<@NlE@s;IPl$eVrDa%yn4% ztd<9xcO02cxFNTGqVF-0yCW6SWFmGCXd&qOyZw(rO3rukRHp=v*zxZH{$}W1;=+8vH6T�%Mhe=3CF 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
s)C6@_dsMX_^U-Qgfo@6%7aJ!rChMY>HPtiB}_ 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 literal 0 HcmV?d00001 diff --git a/sample-data/Sequence~002.mlseq b/sample-data/Sequence~002.mlseq new file mode 100755 index 0000000000000000000000000000000000000000..acdef7cbc7109b84847f3998128a2bb9c13e71d2 GIT binary patch literal 40556 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 literal 0 HcmV?d00001 From 73b70cf7e8793c32d8fb006c784a3b133f0c178e Mon Sep 17 00:00:00 2001 From: Gavin Burnell Date: Tue, 17 Mar 2026 21:36:57 +0000 Subject: [PATCH 03/12] Get mlseq files reading --- Stoner/analysis/functions.py | 2 +- Stoner/core/array.py | 2 +- Stoner/formats/data/zip.py | 20 +++++++++++++++++--- 3 files changed, 19 insertions(+), 5 deletions(-) diff --git a/Stoner/analysis/functions.py b/Stoner/analysis/functions.py index 0e500a9c6..cf2682a56 100755 --- a/Stoner/analysis/functions.py +++ b/Stoner/analysis/functions.py @@ -175,7 +175,7 @@ def decompose( ycol = [ycol] if hysteretic: - from .Util import split_up_down # pylint: disable=import-outside-toplevel + from .utils import split_up_down # pylint: disable=import-outside-toplevel fldr = split_up_down(datafile, datafile.xcol) for grp in ["rising", "falling"]: diff --git a/Stoner/core/array.py b/Stoner/core/array.py index 756d2f0f6..f1bc90100 100755 --- a/Stoner/core/array.py +++ b/Stoner/core/array.py @@ -481,7 +481,7 @@ def _col_args( break else: # User didn't set any values, setas will win no_guess = kwargs.get("no_guess", False) - ret = AttributeStore(self.setas._get_cols(no_guess=no_guess)) + ret = AttributeStore(self.setas._get_cols(no_guess=no_guess, startx=kwargs.get("startx", 0))) force_list = kwargs.get("force_list", not scalar) for c in list(cols.keys()): if isnone(cols[c]): # Not defined, fallback on setas diff --git a/Stoner/formats/data/zip.py b/Stoner/formats/data/zip.py index 11439b7df..d2023b5ba 100755 --- a/Stoner/formats/data/zip.py +++ b/Stoner/formats/data/zip.py @@ -1,5 +1,6 @@ # -*- coding: utf-8 -*- """Loader for zip files.""" +import fnmatch import json import pathlib import zipfile as zf @@ -7,6 +8,7 @@ from traceback import format_exc import chardet +import pandas as pd from ...compat import path_types, str2bytes from ...core.data import Data @@ -66,15 +68,27 @@ def load_measure_linkfile(new_data: Data, *args: Args, **kwargs: Kwargs) -> Data with seq.open("Model.json", "r") as model_json: model = model_json.read() model = model.decode(chardet.detect(model)["encoding"]) + model = json.loads(model) + # new_data.metadata.update(flatten_json(model)) + for ix, pth in enumerate(fnmatch.filter(seq.namelist(), "*.csv")): + with seq.open(pth) as dataframe: + df = pd.read_csv(dataframe) + if ix == 0: + data = df + else: + data = pd.concat([data, df]) + + data = data.select_dtypes(include="number") + new_data.data = data.values + new_data.column_headers = list(data.columns) + has_data = find_paths(model, "HasData", True) - new_data.model = model - new_data.has_data = has_data new_data.filename = filename return new_data -@register_loader(patterns=(".zip", 16), mime_types=("application/zip", 16), name="ZippedFile", what="Data") +@register_loader(patterns=(".zip", 24), mime_types=("application/zip", 16), name="ZippedFile", what="Data") def load_zipfile(new_data: Data, *args: Args, **kwargs: Kwargs) -> Data: """Load a file from the zip file, opening it as necessary. From 681e23a703e6f3e8d916f6a0aab9fbf53a3fdabb Mon Sep 17 00:00:00 2001 From: Gavin Burnell Date: Tue, 17 Mar 2026 22:21:25 +0000 Subject: [PATCH 04/12] Update tests --- Stoner/formats/data/zip.py | 2 ++ tests/Stoner/folders/test_Folders.py | 10 +++++----- tests/Stoner/tools/test_widgets.py | 2 +- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/Stoner/formats/data/zip.py b/Stoner/formats/data/zip.py index d2023b5ba..8023fbacc 100755 --- a/Stoner/formats/data/zip.py +++ b/Stoner/formats/data/zip.py @@ -57,6 +57,8 @@ def load_measure_linkfile(new_data: Data, *args: Args, **kwargs: Kwargs) -> Data The subfolders contain json for the node operations and optionally (if the key HasData is True) a csv file. """ filename, args, kwargs = get_filename(args, kwargs) + if not test_is_zip(filename): + raise StonerLoadError("Must be a zip file to load as a measurement sequence.") with zf.ZipFile(filename, "r") as seq: if "FileInfo.json" not in seq.namelist(): raise StonerLoadError("Missing the Measurelink Sequence FileInfo.json entry") diff --git a/tests/Stoner/folders/test_Folders.py b/tests/Stoner/folders/test_Folders.py index 3042daa47..2358cb869 100755 --- a/tests/Stoner/folders/test_Folders.py +++ b/tests/Stoner/folders/test_Folders.py @@ -135,7 +135,7 @@ def test_Operators(): fldr2 = DataFolder(path.join(datadir, "NLIV"), pattern="*.txt") fldr2.group(lambda x: "zero" if x["iterator"] % 2 == 0 else "one") fldr3 = fldr + fldr2 - assert fldr3.shape == (52, {"one": (9, {}), "zero": (7, {})}), "Adding two DataFolders with groups failed" + assert fldr3.shape == (54, {"one": (9, {}), "zero": (7, {})}), "Adding two DataFolders with groups failed" fldr4 = fldr3 - fldr2 fldr4.prune() assert fldr4.shape == fldr.shape, "Failed to subtract one DataFolder from another :{}".format(fldr4.shape) @@ -149,7 +149,7 @@ def test_Operators(): fldr = DataFolder(datadir, debug=False, recursive=False) names = list(fldr.ls)[::2] fldr -= names - assert len(fldr) == 26, "Failed to delete from a sequence" + assert len(fldr) == 27, "Failed to delete from a sequence" with pytest.raises(TypeError): fldr - 0.34 with pytest.raises(RuntimeError): @@ -186,7 +186,7 @@ def test_Base_Operators(): fldr2 = DataFolder(path.join(datadir, "NLIV"), pattern="*.txt") fldr2.group(lambda x: "zero" if x["iterator"] % 2 == 0 else "one") fldr3 = fldr + fldr2 - assert fldr3.shape == (52, {"one": (9, {}), "zero": (7, {})}), "Adding two DataFolders with groups failed" + assert fldr3.shape == (54, {"one": (9, {}), "zero": (7, {})}), "Adding two DataFolders with groups failed" fldr4 = fldr3 - fldr2 fldr4.prune() assert fldr4.shape == fldr.shape, "Failed to subtract one DataFolder from another :{}".format(fldr4.shape) @@ -200,7 +200,7 @@ def test_Base_Operators(): fldr = DataFolder(datadir, debug=False, recursive=False) names = list(fldr.ls)[::2] fldr -= names - assert len(fldr) == 26, "Failed to delete from a sequence" + assert len(fldr) == 27, "Failed to delete from a sequence" with pytest.raises(TypeError): fldr - 0.34 with pytest.raises(RuntimeError): @@ -217,7 +217,7 @@ def test_Properties(): fldr /= "Loaded as" grps = list(fldr.lsgrp) skip = 0 if Hyperspy_ok else 1 - assert len(grps) == 27 - skip, f"Length of lsgrp not as expected: {len(grps)} not {27-skip}" + assert len(grps) == 28 - skip, f"Length of lsgrp not as expected: {len(grps)} not {27-skip}" fldr.debug = True fldr = fldr assert fldr["XRDFile"][0].debug, "Setting debug on folder failed!" diff --git a/tests/Stoner/tools/test_widgets.py b/tests/Stoner/tools/test_widgets.py index 8abbcbaf2..3cae5a0a2 100755 --- a/tests/Stoner/tools/test_widgets.py +++ b/tests/Stoner/tools/test_widgets.py @@ -78,7 +78,7 @@ def test_loader(): fldr = DataFolder(False) del fldr["bad_data"] assert fldr.shape == ( - 52, + 54, { "attocube_scan": (15, {}), "maximus_scan": (2, {"MPI_210127021": (3, {})}), From 4b27e13cd301200c74ff23c29e77cfbd3f1d6d17 Mon Sep 17 00:00:00 2001 From: Gavin Burnell Date: Tue, 17 Mar 2026 22:50:12 +0000 Subject: [PATCH 05/12] Update test environments and dependencies to include chardet --- recipe/meta.yaml | 1 + requirements.txt | 3 ++- tests/test-env.yml | 1 + 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/recipe/meta.yaml b/recipe/meta.yaml index ebf6a6ef5..995fa2f32 100755 --- a/recipe/meta.yaml +++ b/recipe/meta.yaml @@ -44,6 +44,7 @@ requirements: - python-dateutil >=2.8 - looseversion >=1.0 - rosettasciio + - chardet diff --git a/requirements.txt b/requirements.txt index 8614098a0..f24731158 100755 --- a/requirements.txt +++ b/requirements.txt @@ -18,4 +18,5 @@ dill>=0.2.8 urllib3>=1.26 dateutil>=2.8 seaborn>=0.13 -looseversion>=1.0 \ No newline at end of file +looseversion>=1.0 +chardet>=5.2.0 diff --git a/tests/test-env.yml b/tests/test-env.yml index 79712a05f..736314d68 100755 --- a/tests/test-env.yml +++ b/tests/test-env.yml @@ -36,3 +36,4 @@ dependencies: - looseversion >=1.0 - rosettasciio - fabio + - chardet From ef3e35d100c0cbfbcfdbc5274ba78a9f4d960a22 Mon Sep 17 00:00:00 2001 From: Gavin Burnell Date: Wed, 18 Mar 2026 20:17:07 +0000 Subject: [PATCH 06/12] Fix Core tests to work with current package versions --- tests/Stoner/test_Core.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tests/Stoner/test_Core.py b/tests/Stoner/test_Core.py index 6a73f1d86..4a3bfe9e0 100755 --- a/tests/Stoner/test_Core.py +++ b/tests/Stoner/test_Core.py @@ -97,6 +97,9 @@ def test_constructor(): d = selfd.clone df = d.to_pandas() e = Data(df) + for bad_key in ["Loaded as","TDI Format"]: # These are non-vital keys that don't survice transfer + d.pop(bad_key,None) + e.pop(bad_key,None) assert d == e, "Roundtripping through Pandas DataFrame failed." d = selfd.clone e = Data(d.dict_records) @@ -288,6 +291,8 @@ def test_dir(): "__getstate__", "__static_attributes__", "__firstlineno__", + '__annotate_func__', + '__annotations_cache__', ] ) attrs = set(dir(selfd)) - bad_keys From a92656ce4edbef7a98f97f7cad8762499f0d2877 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 18 Mar 2026 20:19:27 +0000 Subject: [PATCH 07/12] Initial plan From d7e60740aef07aa53b33be7eb4ea2a823bbc36a7 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 18 Mar 2026 20:22:48 +0000 Subject: [PATCH 08/12] Replace conda with mamba (micromamba) in GitHub Actions workflows Co-authored-by: gb119 <4428426+gb119@users.noreply.github.com> --- .github/workflows/build_conda.yaml | 10 ++++------ .github/workflows/run-tests-action.yaml | 25 ++++++++++++------------- 2 files changed, 16 insertions(+), 19 deletions(-) diff --git a/.github/workflows/build_conda.yaml b/.github/workflows/build_conda.yaml index e2adc41bf..b535c8cd5 100755 --- a/.github/workflows/build_conda.yaml +++ b/.github/workflows/build_conda.yaml @@ -16,14 +16,12 @@ jobs: - name: Checkout uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 - name: Conda environment creation and activation - uses: conda-incubator/setup-miniconda@505e6394dae86d6a5c7fbb6e3fb8938e3e863830 + uses: mamba-org/setup-micromamba@v2 with: - python-version: "3.12" environment-file: recipe/build-env.yml - activate-environment: build-environment - auto-update-conda: true - auto-activate-base: false - show-channel-urls: true + environment-name: build-environment + create-args: python=3.12 + init-shell: bash - name: Build and upload the conda packages uses: uibcdf/action-build-and-upload-conda-packages@4940704d2be7906d3bda5b00e3c3e4472fd7808f with: diff --git a/.github/workflows/run-tests-action.yaml b/.github/workflows/run-tests-action.yaml index 5e30a69c5..2eb5a71c5 100755 --- a/.github/workflows/run-tests-action.yaml +++ b/.github/workflows/run-tests-action.yaml @@ -15,21 +15,20 @@ jobs: steps: - name: Check out repository code uses: actions/checkout@v4 - - name: Install Conda environment with Micromamba - uses: conda-incubator/setup-miniconda@v3 + - name: Install Mamba environment + uses: mamba-org/setup-micromamba@v2 with: environment-file: tests/test-env.yml - python: ${{ matrix.python-version }} - channels: conda-forge,phygbu - channel-priority: flexible - activate-environment: test-environment - auto-activate-base: false - - name: Conda information + environment-name: test-environment + create-args: >- + python=${{ matrix.python-version }} + --channel-priority flexible + init-shell: bash + - name: Mamba information run: | - conda info - conda list - conda config --show-sources - conda config --show + micromamba info + micromamba list + micromamba config --show-sources - name: install package run: pip install --no-deps . - name: Install headless server @@ -39,7 +38,7 @@ jobs: sudo apt-get install qtbase5-dev - name: Test with xvfb run: | - xvfb-run --auto-servernum /usr/share/miniconda/envs/test-environment/bin/pytest -n 2 --cov-report= --cov=Stoner --junitxml pytest.xml + xvfb-run --auto-servernum pytest -n 2 --cov-report= --cov=Stoner --junitxml pytest.xml coverage xml env: TZ: Europe/London From 3786d3d1cd9eae0d9c406de22ef595d49ce607c7 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 18 Mar 2026 20:30:43 +0000 Subject: [PATCH 09/12] Pin all GitHub Actions to SHA hashes for supply chain security Co-authored-by: gb119 <4428426+gb119@users.noreply.github.com> --- .github/workflows/build_conda.yaml | 4 ++-- .github/workflows/run-tests-action.yaml | 16 ++++++++-------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/.github/workflows/build_conda.yaml b/.github/workflows/build_conda.yaml index b535c8cd5..127001487 100755 --- a/.github/workflows/build_conda.yaml +++ b/.github/workflows/build_conda.yaml @@ -14,9 +14,9 @@ jobs: steps: - name: Checkout - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Conda environment creation and activation - uses: mamba-org/setup-micromamba@v2 + uses: mamba-org/setup-micromamba@add3a49764cedee8ee24e82dfde87f5bc2914462 # v2.0.7 with: environment-file: recipe/build-env.yml environment-name: build-environment diff --git a/.github/workflows/run-tests-action.yaml b/.github/workflows/run-tests-action.yaml index 2eb5a71c5..73d1fa1cc 100755 --- a/.github/workflows/run-tests-action.yaml +++ b/.github/workflows/run-tests-action.yaml @@ -14,9 +14,9 @@ jobs: os: ["ubuntu-latest"] steps: - name: Check out repository code - uses: actions/checkout@v4 + uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1 - name: Install Mamba environment - uses: mamba-org/setup-micromamba@v2 + uses: mamba-org/setup-micromamba@add3a49764cedee8ee24e82dfde87f5bc2914462 # v2.0.7 with: environment-file: tests/test-env.yml environment-name: test-environment @@ -45,16 +45,16 @@ jobs: LC_CTYPE: en_GB.UTF-8 GH_ACTION: True - name: Cleanup X11 server - uses: bcomnes/cleanup-xvfb@v1 + uses: bcomnes/cleanup-xvfb@9e016c43bb8d73fe7d5933d2ef00fd770c1a7c50 # v1.0.9 - name: Coveralls Parallel - uses: coverallsapp/github-action@v2 + uses: coverallsapp/github-action@5cbfd81b66ca5d10c19b062c04de0199c215fb6e # v2.3.7 with: flag-name: run-${{ join(matrix.*, '-') }} format: cobertura github-token: ${{ secrets.GITHUB_TOKEN }} - name: Upload Unit Test Results if: always() - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 with: name: Unit Test Results (Python ${{ matrix.python-version }}) path: pytest.xml @@ -71,12 +71,12 @@ jobs: steps: - name: Download Artifacts - uses: actions/download-artifact@v4 + uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0 with: path: artifacts - name: Publish Unit Test Results - uses: EnricoMi/publish-unit-test-result-action@v2 + uses: EnricoMi/publish-unit-test-result-action@c950f6fb443cb5af20a377fd0dfaa78838901040 # v2.23.0 with: files: artifacts/**/*.xml @@ -85,7 +85,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Coveralls Finished - uses: coverallsapp/github-action@v2 + uses: coverallsapp/github-action@5cbfd81b66ca5d10c19b062c04de0199c215fb6e # v2.3.7 with: parallel-finished: true carryforward: "run-1,run-2" From 68ccda151a6185e2522a8396099659952a6b6758 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 18 Mar 2026 21:19:59 +0000 Subject: [PATCH 10/12] Pin Actions to SHA hashes, switch to micromamba, add permissions, fix test_is_zip for bytes with null bytes Co-authored-by: gb119 <4428426+gb119@users.noreply.github.com> --- .github/workflows/build_conda.yaml | 70 ++++----- .github/workflows/run-tests-action.yaml | 191 ++++++++++++------------ Stoner/formats/utils/zip.py | 8 +- Stoner/tools/file.py | 8 +- 4 files changed, 148 insertions(+), 129 deletions(-) diff --git a/.github/workflows/build_conda.yaml b/.github/workflows/build_conda.yaml index e2adc41bf..ef8b8b358 100755 --- a/.github/workflows/build_conda.yaml +++ b/.github/workflows/build_conda.yaml @@ -1,35 +1,35 @@ - -name: Conda - -on: - release: - types: ['released', 'prereleased'] - -# workflow_dispatch: # Un comment line if you also want to trigger action manually - -jobs: - conda_deployment_with_new_tag: - name: Conda deployment of package for platform ${{ matrix.os }} with Python ${{ matrix.python-version }} - runs-on: ubuntu-latest - - steps: - - name: Checkout - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 - - name: Conda environment creation and activation - uses: conda-incubator/setup-miniconda@505e6394dae86d6a5c7fbb6e3fb8938e3e863830 - with: - python-version: "3.12" - environment-file: recipe/build-env.yml - activate-environment: build-environment - auto-update-conda: true - auto-activate-base: false - show-channel-urls: true - - name: Build and upload the conda packages - uses: uibcdf/action-build-and-upload-conda-packages@4940704d2be7906d3bda5b00e3c3e4472fd7808f - with: - meta_yaml_dir: recipe - overwrite: true - python-version: "3.12" - user: phygbu - label: main - token: ${{ secrets.ANACONDA }} # Replace with the right name of your secret + +name: Conda + +on: + release: + types: ['released', 'prereleased'] + +# workflow_dispatch: # Un comment line if you also want to trigger action manually + +jobs: + conda_deployment_with_new_tag: + name: Conda deployment of package for platform ${{ matrix.os }} with Python ${{ matrix.python-version }} + runs-on: ubuntu-latest + permissions: + contents: read + + steps: + - name: Checkout + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + - name: Conda environment creation and activation + uses: mamba-org/setup-micromamba@add3a49764cedee8ee24e82dfde87f5bc2914462 # v2.0.7 + with: + environment-file: recipe/build-env.yml + environment-name: build-environment + create-args: python=3.12 + init-shell: bash + - name: Build and upload the conda packages + uses: uibcdf/action-build-and-upload-conda-packages@4940704d2be7906d3bda5b00e3c3e4472fd7808f + with: + meta_yaml_dir: recipe + overwrite: true + python-version: "3.12" + user: phygbu + label: main + token: ${{ secrets.ANACONDA }} # Replace with the right name of your secret diff --git a/.github/workflows/run-tests-action.yaml b/.github/workflows/run-tests-action.yaml index 5e30a69c5..744f3e73e 100755 --- a/.github/workflows/run-tests-action.yaml +++ b/.github/workflows/run-tests-action.yaml @@ -1,92 +1,99 @@ -name: pytest -on: push -jobs: - run_pytest: - name: run-tests (${{ matrix.python-version }}, ${{ matrix.os }}) - runs-on: ${{ matrix.os }} - defaults: - run: - shell: bash -l {0} - strategy: - fail-fast: false - matrix: - python-version: ["3.11", "3.12","3.13"] - os: ["ubuntu-latest"] - steps: - - name: Check out repository code - uses: actions/checkout@v4 - - name: Install Conda environment with Micromamba - uses: conda-incubator/setup-miniconda@v3 - with: - environment-file: tests/test-env.yml - python: ${{ matrix.python-version }} - channels: conda-forge,phygbu - channel-priority: flexible - activate-environment: test-environment - auto-activate-base: false - - name: Conda information - run: | - conda info - conda list - conda config --show-sources - conda config --show - - name: install package - run: pip install --no-deps . - - name: Install headless server - run: | - sudo apt-get update - sudo apt-get install xvfb - sudo apt-get install qtbase5-dev - - name: Test with xvfb - run: | - xvfb-run --auto-servernum /usr/share/miniconda/envs/test-environment/bin/pytest -n 2 --cov-report= --cov=Stoner --junitxml pytest.xml - coverage xml - env: - TZ: Europe/London - LC_CTYPE: en_GB.UTF-8 - GH_ACTION: True - - name: Cleanup X11 server - uses: bcomnes/cleanup-xvfb@v1 - - name: Coveralls Parallel - uses: coverallsapp/github-action@v2 - with: - flag-name: run-${{ join(matrix.*, '-') }} - format: cobertura - github-token: ${{ secrets.GITHUB_TOKEN }} - - name: Upload Unit Test Results - if: always() - uses: actions/upload-artifact@v4 - with: - name: Unit Test Results (Python ${{ matrix.python-version }}) - path: pytest.xml - - name: Post Coveraage result to Codacy - run: | - export CODACY_PROJECT_TOKEN=${{ secrets.CODACY_PROJECT_TOKEN }} - bash <(curl -Ls https://coverage.codacy.com/get.sh) report -r coverage.xml - - publish-test-results: - name: "Publish Unit Tests Results" - needs: run_pytest - runs-on: ubuntu-latest - if: always() - - steps: - - name: Download Artifacts - uses: actions/download-artifact@v4 - with: - path: artifacts - - - name: Publish Unit Test Results - uses: EnricoMi/publish-unit-test-result-action@v2 - with: - files: artifacts/**/*.xml - - coverage-finish: - needs: run_pytest - runs-on: ubuntu-latest - steps: - - name: Coveralls Finished - uses: coverallsapp/github-action@v2 - with: - parallel-finished: true - carryforward: "run-1,run-2" +name: pytest +on: push +jobs: + run_pytest: + name: run-tests (${{ matrix.python-version }}, ${{ matrix.os }}) + runs-on: ${{ matrix.os }} + permissions: + contents: read + checks: write + defaults: + run: + shell: bash -l {0} + strategy: + fail-fast: false + matrix: + python-version: ["3.11", "3.12","3.13"] + os: ["ubuntu-latest"] + steps: + - name: Check out repository code + uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1 + - name: Install Mamba environment + uses: mamba-org/setup-micromamba@add3a49764cedee8ee24e82dfde87f5bc2914462 # v2.0.7 + with: + environment-file: tests/test-env.yml + environment-name: test-environment + create-args: >- + python=${{ matrix.python-version }} + --channel-priority flexible + init-shell: bash + - name: Mamba information + run: | + micromamba info + micromamba list + micromamba config --show-sources + - name: install package + run: pip install --no-deps . + - name: Install headless server + run: | + sudo apt-get update + sudo apt-get install xvfb + sudo apt-get install qtbase5-dev + - name: Test with xvfb + run: | + xvfb-run --auto-servernum pytest -n 2 --cov-report= --cov=Stoner --junitxml pytest.xml + coverage xml + env: + TZ: Europe/London + LC_CTYPE: en_GB.UTF-8 + GH_ACTION: True + - name: Cleanup X11 server + uses: bcomnes/cleanup-xvfb@9e016c43bb8d73fe7d5933d2ef00fd770c1a7c50 # v1.0.9 + - name: Coveralls Parallel + uses: coverallsapp/github-action@5cbfd81b66ca5d10c19b062c04de0199c215fb6e # v2.3.7 + with: + flag-name: run-${{ join(matrix.*, '-') }} + format: cobertura + github-token: ${{ secrets.GITHUB_TOKEN }} + - name: Upload Unit Test Results + if: always() + uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 + with: + name: Unit Test Results (Python ${{ matrix.python-version }}) + path: pytest.xml + - name: Post Coveraage result to Codacy + run: | + export CODACY_PROJECT_TOKEN=${{ secrets.CODACY_PROJECT_TOKEN }} + bash <(curl -Ls https://coverage.codacy.com/get.sh) report -r coverage.xml + + publish-test-results: + name: "Publish Unit Tests Results" + needs: run_pytest + runs-on: ubuntu-latest + if: always() + permissions: + checks: write + pull-requests: write + + steps: + - name: Download Artifacts + uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0 + with: + path: artifacts + + - name: Publish Unit Test Results + uses: EnricoMi/publish-unit-test-result-action@c950f6fb443cb5af20a377fd0dfaa78838901040 # v2.23.0 + with: + files: artifacts/**/*.xml + + coverage-finish: + needs: run_pytest + runs-on: ubuntu-latest + permissions: + checks: write + steps: + - name: Coveralls Finished + uses: coverallsapp/github-action@5cbfd81b66ca5d10c19b062c04de0199c215fb6e # v2.3.7 + with: + parallel-finished: true + carryforward: "run-1,run-2" diff --git a/Stoner/formats/utils/zip.py b/Stoner/formats/utils/zip.py index 06fb1ad90..7fc4ca46b 100755 --- a/Stoner/formats/utils/zip.py +++ b/Stoner/formats/utils/zip.py @@ -23,7 +23,13 @@ def test_is_zip(filename, member=""): """ if not filename or str(filename) == "": return False - if zf.is_zipfile(filename): + if isinstance(filename, (bytes, bytearray)) and b"\x00" in filename: + return False + try: + is_zip = zf.is_zipfile(filename) + except (ValueError, TypeError, OSError): + return False + if is_zip: return filename, member part = path.basename(filename) newfile = path.dirname(filename) diff --git a/Stoner/tools/file.py b/Stoner/tools/file.py index e4e9e864a..f0ae36bca 100755 --- a/Stoner/tools/file.py +++ b/Stoner/tools/file.py @@ -67,7 +67,13 @@ def test_is_zip(filename, member=""): """ if not filename or str(filename) == "": return False - if zipfile.is_zipfile(filename): + if isinstance(filename, (bytes, bytearray)) and b"\x00" in filename: + return False + try: + is_zip = zipfile.is_zipfile(filename) + except (ValueError, TypeError, OSError): + return False + if is_zip: return filename, member part = os.path.basename(filename) newfile = os.path.dirname(filename) From 00020b764fa5414302736f8419dd5b2ca67ae771 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 18 Mar 2026 21:36:28 +0000 Subject: [PATCH 11/12] Remove unsupported micromamba config --show-sources from Mamba information step Co-authored-by: gb119 <4428426+gb119@users.noreply.github.com> --- .github/workflows/run-tests-action.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/run-tests-action.yaml b/.github/workflows/run-tests-action.yaml index 744f3e73e..caf015658 100755 --- a/.github/workflows/run-tests-action.yaml +++ b/.github/workflows/run-tests-action.yaml @@ -31,7 +31,6 @@ jobs: run: | micromamba info micromamba list - micromamba config --show-sources - name: install package run: pip install --no-deps . - name: Install headless server From 12b82a126d662a11badaaa70d84baf86ec9593b4 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 18 Mar 2026 21:56:57 +0000 Subject: [PATCH 12/12] Speed up mamba install step by enabling environment and download caching Co-authored-by: gb119 <4428426+gb119@users.noreply.github.com> --- .github/workflows/run-tests-action.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/run-tests-action.yaml b/.github/workflows/run-tests-action.yaml index caf015658..132d04740 100755 --- a/.github/workflows/run-tests-action.yaml +++ b/.github/workflows/run-tests-action.yaml @@ -27,6 +27,8 @@ jobs: python=${{ matrix.python-version }} --channel-priority flexible init-shell: bash + cache-downloads: true + cache-environment: true - name: Mamba information run: | micromamba info