Universal scientific data I/O with a plugin format registry
Drift inferred · capture-to-capture
- HIGH code analysis flagged dynamic code execution ×5 in scitex-ai/scitex-io
- HIGH code analysis flagged dynamic code execution ×4 in scitex-ai/scitex-io
- HIGH code analysis flagged dynamic code execution ×4 in scitex-ai/scitex-io
transport stdio counts 22 tools · 0 res
· 0 prompts
permission surface via code analysis
tools
-
io_clear_load_cache
-
io_configure_cache
-
io_embed_metadata
-
io_explore_h5
-
io_explore_zarr
-
io_get_cache_info
-
io_get_loader
-
io_get_saver
-
io_glob
-
io_has_h5_key
-
io_has_metadata
-
io_has_zarr_key
-
io_json2md
-
io_list_formats
-
io_load
-
io_load_configs
-
io_parse_glob
-
io_read_metadata
-
io_register_info
-
io_save
-
io_skills_get
-
io_skills_list
prompt-surface
shipped agent-instruction files + hidden-content / dangerous-code findings —
quoted from the analyzed source
analyzed commit 999f13a · analyzer v28 · 3d ago
skills & prompt files 1
danger signals5
- dynamic code execution eval()/exec() scitex-ai-scitex-io-999f13a/src/scitex_io/_glob.py :67
found_paths = _natsorted(_glob(eval(glob_pattern), recursive=recursive)) - dynamic code execution pickle.loads() scitex-ai-scitex-io-999f13a/src/scitex_io/_load_modules/_H5Explorer.py :137
return pickle.loads(data.tobytes()) - dynamic code execution pickle.loads() scitex-ai-scitex-io-999f13a/src/scitex_io/_load_modules/_hdf5.py :65
return pickle.loads(data.tobytes()) - dynamic code execution pickle.loads() scitex-ai-scitex-io-999f13a/src/scitex_io/_load_modules/_zarr.py :110
return pickle.loads(pickled_bytes.tobytes()) - dynamic code execution unsafe yaml.load() scitex-ai-scitex-io-999f13a/tests/scitex_io/_save_modules/test__yaml.py :136
loaded = yaml.load(f)
evidence-backed
findings quoted directly from the published source artifact — not inferred
code files: 389
filesystem 73
- fs scitex-ai-scitex-io-999f13a/src/scitex_io/_cache.py :10
from pathlib import Path - fs scitex-ai-scitex-io-999f13a/src/scitex_io/_cli/_skills.py :11
from pathlib import Path - fs scitex-ai-scitex-io-999f13a/src/scitex_io/_glob.py :10
from pathlib import Path - fs scitex-ai-scitex-io-999f13a/src/scitex_io/_json2md.py :45
with open(args.input, "r") as f: - fs scitex-ai-scitex-io-999f13a/src/scitex_io/_linter/plugin.py :155
message="`open()` detected — use `stx.io.save()`/`stx.io.load()` which includes auto-logging", - fs scitex-ai-scitex-io-999f13a/src/scitex_io/_load_modules/_ZarrExplorer.py :23
self.store = zarr.open(storepath, mode=mode) - fs scitex-ai-scitex-io-999f13a/src/scitex_io/_load_modules/_bibtex.py :52
with open(lpath, "r", encoding=encoding) as f: - fs scitex-ai-scitex-io-999f13a/src/scitex_io/_load_modules/_image.py :41
return Image.open(lpath, **pil_kwargs) - fs scitex-ai-scitex-io-999f13a/src/scitex_io/_load_modules/_joblib.py :15
with open(lpath, "rb") as f: - fs scitex-ai-scitex-io-999f13a/src/scitex_io/_load_modules/_json.py :16
with open(lpath, "r") as f: - fs scitex-ai-scitex-io-999f13a/src/scitex_io/_load_modules/_markdown.py :44
with open(lpath_md, "r") as file: - fs scitex-ai-scitex-io-999f13a/src/scitex_io/_load_modules/_pdf_content_extractors.py :69
with pdfplumber.open(lpath) as pdf: - fs scitex-ai-scitex-io-999f13a/src/scitex_io/_load_modules/_pdf_text_extractors.py :48
doc = fitz.open(lpath) - fs scitex-ai-scitex-io-999f13a/src/scitex_io/_load_modules/_pdf_utils.py :142
with open(lpath, "rb") as f: - fs scitex-ai-scitex-io-999f13a/src/scitex_io/_load_modules/_pickle.py :14
with gzip.open(lpath, "rb") as f: - fs scitex-ai-scitex-io-999f13a/src/scitex_io/_load_modules/_txt.py :25
# with open(lpath, "r", encoding="utf-8") as f: - fs scitex-ai-scitex-io-999f13a/src/scitex_io/_load_modules/_yaml.py :16
with open(lpath) as f: - fs scitex-ai-scitex-io-999f13a/src/scitex_io/_load_modules/_zarr.py :32
from pathlib import Path - fs scitex-ai-scitex-io-999f13a/src/scitex_io/_loading/_load.py :15
from pathlib import Path - fs scitex-ai-scitex-io-999f13a/src/scitex_io/_loading/_load_configs.py :14
from pathlib import Path - fs scitex-ai-scitex-io-999f13a/src/scitex_io/_mcp/_resources.py :50
with open(path, "w") as f: - fs scitex-ai-scitex-io-999f13a/src/scitex_io/_mcp/_tools_extra.py :20
"""Glob filesystem paths with natural sort and optional placeholder parsing. Drop-in upgrade for `glob.glob`/`pathlib.Path.glob` that returns natsort-ordered hits and (with `parse=True`) extracts `{na - fs scitex-ai-scitex-io-999f13a/src/scitex_io/_mcp/server.py :182
' with open(path, "w") as f:\n' - fs scitex-ai-scitex-io-999f13a/src/scitex_io/_metadata_modules/embed_metadata_jpeg.py :29
img = Image.open(image_path) - fs scitex-ai-scitex-io-999f13a/src/scitex_io/_metadata_modules/embed_metadata_pdf.py :49
with open(image_path, "wb") as output_file: - fs scitex-ai-scitex-io-999f13a/src/scitex_io/_metadata_modules/embed_metadata_png.py :19
img = Image.open(image_path) - fs scitex-ai-scitex-io-999f13a/src/scitex_io/_metadata_modules/embed_metadata_svg.py :21
with open(image_path, encoding="utf-8") as f: - fs scitex-ai-scitex-io-999f13a/src/scitex_io/_metadata_modules/read_metadata_jpeg.py :24
img = Image.open(image_path) - fs scitex-ai-scitex-io-999f13a/src/scitex_io/_metadata_modules/read_metadata_png.py :24
img = Image.open(image_path) - fs scitex-ai-scitex-io-999f13a/src/scitex_io/_metadata_modules/read_metadata_svg.py :24
with open(image_path, encoding="utf-8") as f: - fs scitex-ai-scitex-io-999f13a/src/scitex_io/_observers/__init__.py :26
from pathlib import Path - fs scitex-ai-scitex-io-999f13a/src/scitex_io/_path_modules/_mv_to_tmp.py :6
from shutil import move - fs scitex-ai-scitex-io-999f13a/src/scitex_io/_path_modules/_path.py :172
import pathlib - fs scitex-ai-scitex-io-999f13a/src/scitex_io/_path_modules/_symlink.py :17
from pathlib import Path - fs scitex-ai-scitex-io-999f13a/src/scitex_io/_registry.py :30
... with open(path, "w") as f: - fs scitex-ai-scitex-io-999f13a/src/scitex_io/_save.py :33
from pathlib import Path - fs scitex-ai-scitex-io-999f13a/src/scitex_io/_save_modules/_bibtex.py :72
with open(spath, "w", encoding=encoding) as f: - fs scitex-ai-scitex-io-999f13a/src/scitex_io/_save_modules/_hdf5.py :13
import shutil - fs scitex-ai-scitex-io-999f13a/src/scitex_io/_save_modules/_html.py :43
with open(spath, "w") as f: - fs scitex-ai-scitex-io-999f13a/src/scitex_io/_save_modules/_image.py :139
img = Image.open(buf) - fs scitex-ai-scitex-io-999f13a/src/scitex_io/_save_modules/_joblib.py :24
with open(spath, "wb") as s: - fs scitex-ai-scitex-io-999f13a/src/scitex_io/_save_modules/_json.py :69
with open(spath, "w") as f: - fs scitex-ai-scitex-io-999f13a/src/scitex_io/_save_modules/_listed_dfs_as_csv.py :44
with open(spath_csv, mode="a") as f: - fs scitex-ai-scitex-io-999f13a/src/scitex_io/_save_modules/_pickle.py :25
with open(spath, "wb") as s: - fs scitex-ai-scitex-io-999f13a/src/scitex_io/_save_modules/_tex.py :153
with open(spath, "w") as f: - fs scitex-ai-scitex-io-999f13a/src/scitex_io/_save_modules/_text.py :22
with open(spath, "w") as file: - fs scitex-ai-scitex-io-999f13a/src/scitex_io/_save_modules/_yaml.py :6
from pathlib import Path - fs scitex-ai-scitex-io-999f13a/src/scitex_io/_save_modules/_zarr.py :69
root = zarr.open(store, mode="w") - fs scitex-ai-scitex-io-999f13a/src/scitex_io/_utils.py :8
from pathlib import Path - fs scitex-ai-scitex-io-999f13a/src/scitex_io/bundle/_Bundle.py :15
from pathlib import Path - fs scitex-ai-scitex-io-999f13a/src/scitex_io/bundle/_children.py :20
from pathlib import Path - fs scitex-ai-scitex-io-999f13a/src/scitex_io/bundle/_core.py :16
import shutil - fs scitex-ai-scitex-io-999f13a/src/scitex_io/bundle/_loader.py :18
from pathlib import Path - fs scitex-ai-scitex-io-999f13a/src/scitex_io/bundle/_manifest.py :21
from pathlib import Path - fs scitex-ai-scitex-io-999f13a/src/scitex_io/bundle/_mpl_helpers.py :379
from pathlib import Path - fs scitex-ai-scitex-io-999f13a/src/scitex_io/bundle/_nested.py :31
from pathlib import Path - fs scitex-ai-scitex-io-999f13a/src/scitex_io/bundle/_saver.py :35
from pathlib import Path - fs scitex-ai-scitex-io-999f13a/src/scitex_io/bundle/_storage.py :20
from pathlib import Path - fs scitex-ai-scitex-io-999f13a/src/scitex_io/bundle/_validation.py :24
from pathlib import Path - fs scitex-ai-scitex-io-999f13a/src/scitex_io/bundle/_zip.py :19
import shutil - fs scitex-ai-scitex-io-999f13a/src/scitex_io/bundle/kinds/_figure/_bundle.py :16
import shutil - fs scitex-ai-scitex-io-999f13a/src/scitex_io/bundle/kinds/_image/__init__.py :15
from pathlib import Path - fs scitex-ai-scitex-io-999f13a/src/scitex_io/bundle/kinds/_plot/_backend/_export.py :5
from pathlib import Path - fs scitex-ai-scitex-io-999f13a/src/scitex_io/bundle/kinds/_plot/_legacy.py :19
import shutil - fs scitex-ai-scitex-io-999f13a/src/scitex_io/bundle/kinds/_plot/_overview.py :18
from pathlib import Path - fs scitex-ai-scitex-io-999f13a/src/scitex_io/bundle/kinds/_stats/_integration.py :22
from pathlib import Path - fs scitex-ai-scitex-io-999f13a/src/scitex_io/bundle/kinds/_table/_latex/_editor/_app.py :27
from pathlib import Path - fs scitex-ai-scitex-io-999f13a/src/scitex_io/bundle/kinds/_table/_latex/_export.py :8
from pathlib import Path - fs scitex-ai-scitex-io-999f13a/src/scitex_io/bundle/kinds/_table/_latex/_figure_exporter.py :8
from pathlib import Path - fs scitex-ai-scitex-io-999f13a/src/scitex_io/bundle/kinds/_table/_latex/_table_exporter.py :11
from pathlib import Path - fs scitex-ai-scitex-io-999f13a/src/scitex_io/bundle/kinds/_table/_latex/_validator.py :12
from pathlib import Path - fs scitex-ai-scitex-io-999f13a/src/scitex_io/bundle/schemas/__init__.py :9
from pathlib import Path - fs scitex-ai-scitex-io-999f13a/src/scitex_io/utils/h5_to_zarr.py :10
from pathlib import Path
shell / exec 3
- shell scitex-ai-scitex-io-999f13a/src/scitex_io/_path_modules/_symlink.py :16
import subprocess - shell scitex-ai-scitex-io-999f13a/src/scitex_io/bundle/kinds/_table/_latex/_editor/_app.py :24
import subprocess - shell scitex-ai-scitex-io-999f13a/src/scitex_io/bundle/kinds/_table/_latex/_validator.py :8
import subprocess
network 1
- net scitex-ai-scitex-io-999f13a/src/scitex_io/bundle/kinds/_table/_latex/_editor/_app.py :23
import socket
tool registrations 22
- io_glob scitex-ai-scitex-io-999f13a/src/scitex_io/_mcp/_tools_extra.py :16
- io_parse_glob scitex-ai-scitex-io-999f13a/src/scitex_io/_mcp/_tools_extra.py :42
- io_get_loader scitex-ai-scitex-io-999f13a/src/scitex_io/_mcp/_tools_extra.py :64
- io_get_saver scitex-ai-scitex-io-999f13a/src/scitex_io/_mcp/_tools_extra.py :83
- io_read_metadata scitex-ai-scitex-io-999f13a/src/scitex_io/_mcp/_tools_extra.py :102
- io_has_metadata scitex-ai-scitex-io-999f13a/src/scitex_io/_mcp/_tools_extra.py :119
- io_embed_metadata scitex-ai-scitex-io-999f13a/src/scitex_io/_mcp/_tools_extra.py :136
- io_get_cache_info scitex-ai-scitex-io-999f13a/src/scitex_io/_mcp/_tools_extra.py :156
- io_clear_load_cache scitex-ai-scitex-io-999f13a/src/scitex_io/_mcp/_tools_extra.py :164
- io_configure_cache scitex-ai-scitex-io-999f13a/src/scitex_io/_mcp/_tools_extra.py :173
- io_explore_h5 scitex-ai-scitex-io-999f13a/src/scitex_io/_mcp/_tools_extra.py :196
- io_explore_zarr scitex-ai-scitex-io-999f13a/src/scitex_io/_mcp/_tools_extra.py :214
- io_has_h5_key scitex-ai-scitex-io-999f13a/src/scitex_io/_mcp/_tools_extra.py :232
- io_has_zarr_key scitex-ai-scitex-io-999f13a/src/scitex_io/_mcp/_tools_extra.py :251
- io_json2md scitex-ai-scitex-io-999f13a/src/scitex_io/_mcp/_tools_extra.py :270
- io_list_formats scitex-ai-scitex-io-999f13a/src/scitex_io/_mcp/server.py :28
- io_load scitex-ai-scitex-io-999f13a/src/scitex_io/_mcp/server.py :43
- io_save scitex-ai-scitex-io-999f13a/src/scitex_io/_mcp/server.py :92
- io_load_configs scitex-ai-scitex-io-999f13a/src/scitex_io/_mcp/server.py :127
- io_register_info scitex-ai-scitex-io-999f13a/src/scitex_io/_mcp/server.py :167
- io_skills_list scitex-ai-scitex-io-999f13a/src/scitex_io/_mcp/server.py :197
- io_skills_get scitex-ai-scitex-io-999f13a/src/scitex_io/_mcp/server.py :219
declared dependencies 22
- fastmcp@>=2.0
- tqdm@*
- PyYAML@*
- ruamel.yaml@*
- mne@*
- scipy@*
- h5py@*
- zarr@>=3
- numcodecs@*
- matplotlib@*
- optuna@*
- figrecipe@>=0.28
- scitex-db@>=0.1.11
- pytest@>=7.0
- pytest-cov@*
- plotly@*
- Pillow@*
- sphinx@>=7.0
- sphinx-rtd-theme@>=2.0
- myst-parser@>=2.0
- sphinx-copybutton@>=0.5
- sphinx-autodoc-typehints@>=1.25