github Python analyzed 999f13a

scitex-ai/scitex-io

github

Universal scientific data I/O with a plugin format registry

maintainer
scitex-ai
license
AGPL-3.0
first seen
2026-07-11
last seen
2026-07-21
releases · 30d
1
short id

Drift inferred · capture-to-capture

  1. HIGH code analysis flagged dynamic code execution ×5 in scitex-ai/scitex-io
  2. HIGH code analysis flagged dynamic code execution ×4 in scitex-ai/scitex-io
  3. HIGH code analysis flagged dynamic code execution ×4 in scitex-ai/scitex-io
capabilities 22 tools
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
skills & danger signals github-tarball
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

code evidence vv0.4.0 · github-tarball
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