Metadata-Version: 2.1
Name: py2ls
Version: 0.1.10.20
Summary: py(thon)2(too)ls
Author: Jianfeng
Author-email: Jianfeng.Liu0413@gmail.com
Requires-Python: >=3.10,<4.0
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Provides-Extra: extr
Requires-Dist: Babel (>=2.15.0)
Requires-Dist: CacheControl (>=0.13.1)
Requires-Dist: CairoSVG (>=2.7.1)
Requires-Dist: Cython (>=3.0.10)
Requires-Dist: Deprecated (>=1.2.14)
Requires-Dist: EbookLib (>=0.18)
Requires-Dist: Flask (>=3.0.3)
Requires-Dist: GitPython (>=3.1.43)
Requires-Dist: Jinja2 (>=3.1.4)
Requires-Dist: Levenshtein (>=0.25.1)
Requires-Dist: Markdown (>=3.6)
Requires-Dist: MarkupSafe (>=2.1.5)
Requires-Dist: MechanicalSoup (>=1.3.0)
Requires-Dist: MouseInfo (>=0.1.3)
Requires-Dist: PyAutoGUI (>=0.9.54)
Requires-Dist: PyGetWindow (>=0.0.9)
Requires-Dist: PyMatting (>=1.1.12)
Requires-Dist: PyMsgBox (>=1.0.9)
Requires-Dist: PyNaCl (>=1.5.0)
Requires-Dist: PyOpenGL (>=3.1.7)
Requires-Dist: PyPDF2 (>=3.0.1)
Requires-Dist: PyQt5 (>=5.15.11)
Requires-Dist: PyQt5-Qt5 (>=5.15.14)
Requires-Dist: PyQt5_sip (>=12.15.0)
Requires-Dist: PyQtWebEngine (>=5.15.7)
Requires-Dist: PyQtWebEngine-Qt5 (>=5.15.14)
Requires-Dist: PyRect (>=0.2.0)
Requires-Dist: PyScreeze (>=1.0.1)
Requires-Dist: PySocks (>=1.7.1)
Requires-Dist: PyYAML (>=6.0.1)
Requires-Dist: Pygments (>=2.18.0)
Requires-Dist: QtPy (>=2.4.1)
Requires-Dist: SciencePlots (>=2.1.1)
Requires-Dist: Send2Trash (>=1.8.3)
Requires-Dist: Wand (>=0.6.13)
Requires-Dist: Werkzeug (>=3.0.3)
Requires-Dist: XlsxWriter (>=3.2.0)
Requires-Dist: absl-py (>=2.1.0)
Requires-Dist: ae-ffmpeg (>=1.2.0)
Requires-Dist: affine (>=2.4.0)
Requires-Dist: altgraph (>=0.17.4)
Requires-Dist: annotated-types (>=0.7.0)
Requires-Dist: anyio (>=4.4.0)
Requires-Dist: appnope (>=0.1.4)
Requires-Dist: argon2-cffi (>=23.1.0)
Requires-Dist: argon2-cffi-bindings (>=21.2.0)
Requires-Dist: arrow (>=1.3.0)
Requires-Dist: asciitree (>=0.3.3)
Requires-Dist: astor (>=0.8.1)
Requires-Dist: asttokens (>=2.4.1)
Requires-Dist: astunparse (>=1.6.3)
Requires-Dist: async-lru (>=2.0.4)
Requires-Dist: auto-editor (>=24.24.1)
Requires-Dist: bcrypt (>=4.2.0)
Requires-Dist: beautifulsoup4 (>=4.12.3)
Requires-Dist: binaryornot (>=0.4.4)
Requires-Dist: black (>=21.12b0)
Requires-Dist: blackcellmagic (>=0.0.3)
Requires-Dist: bleach (>=6.1.0)
Requires-Dist: blinker (>=1.8.2)
Requires-Dist: blis (>=0.7.11)
Requires-Dist: bokeh (>=3.4.3)
Requires-Dist: branca (>=0.7.2)
Requires-Dist: briefcase (>=0.3.19)
Requires-Dist: bs4 (>=0.0.2)
Requires-Dist: build (>=1.2.1)
Requires-Dist: cairocffi (>=1.7.0)
Requires-Dist: catalogue (>=2.0.10)
Requires-Dist: certifi (>=2024.6.2)
Requires-Dist: cffi (>=1.16.0)
Requires-Dist: chardet (>=3.0.4)
Requires-Dist: charset-normalizer (>=3.3.2)
Requires-Dist: cleo (>=2.1.0)
Requires-Dist: click (>=8.1.7)
Requires-Dist: click-plugins (>=1.1.1)
Requires-Dist: cligj (>=0.7.2)
Requires-Dist: cloudpathlib (>=0.18.1)
Requires-Dist: cloudpickle (>=3.0.0)
Requires-Dist: colorcet (>=3.1.0)
Requires-Dist: coloredlogs (>=15.0.1)
Requires-Dist: comm (>=0.2.2)
Requires-Dist: confection (>=0.1.5)
Requires-Dist: contextily (>=1.6.1)
Requires-Dist: contourpy (>=1.2.1)
Requires-Dist: cookiecutter (>=2.6.0)
Requires-Dist: coverage (>=7.6.0)
Requires-Dist: coveralls (>=4.0.1)
Requires-Dist: crashtest (>=0.4.1)
Requires-Dist: cryptography (>=43.0.0)
Requires-Dist: cssselect2 (>=0.7.0)
Requires-Dist: cycler (>=0.12.1)
Requires-Dist: cymem (>=2.0.8)
Requires-Dist: czifile (>=2019.7.2)
Requires-Dist: dash (>=2.17.1)
Requires-Dist: dash-core-components (>=2.0.0)
Requires-Dist: dash-html-components (>=2.0.0)
Requires-Dist: dash-table (>=5.0.0)
Requires-Dist: dash-vtk (>=0.0.9)
Requires-Dist: dash_daq (>=0.5.0)
Requires-Dist: dask (>=2024.7.1)
Requires-Dist: db2ls (>=0.1.3)
Requires-Dist: debugpy (>=1.8.2)
Requires-Dist: decorator (>=5.1.1)
Requires-Dist: defusedxml (>=0.7.1)
Requires-Dist: distlib (>=0.3.8)
Requires-Dist: dmgbuild (>=1.6.2)
Requires-Dist: docopt (>=0.6.2)
Requires-Dist: docx (>=0.2.4)
Requires-Dist: docx2pdf (>=0.1.8)
Requires-Dist: ds-store (>=1.3.1)
Requires-Dist: duckdb (>=1.0.0)
Requires-Dist: duckduckgo_search (>=6.1.12)
Requires-Dist: dulwich (>=0.21.7)
Requires-Dist: emoji (>=2.12.1)
Requires-Dist: et-xmlfile (>=1.1.0)
Requires-Dist: executing (>=2.0.1)
Requires-Dist: faiss-cpu (>=1.8.0.post1)
Requires-Dist: fake-useragent (>=1.5.1)
Requires-Dist: fasteners (>=0.19)
Requires-Dist: fastjsonschema (>=2.20.0)
Requires-Dist: feedparser (>=6.0.11)
Requires-Dist: filelock (>=3.15.4)
Requires-Dist: fire (>=0.6.0)
Requires-Dist: flake8 (>=7.1.0)
Requires-Dist: flatbuffers (>=24.3.25)
Requires-Dist: folium (>=0.17.0)
Requires-Dist: fonttools (>=4.53.1)
Requires-Dist: fpdf (>=1.7.2)
Requires-Dist: fqdn (>=1.5.1)
Requires-Dist: fsspec (>=2024.6.1)
Requires-Dist: fuzzywuzzy (>=0.18.0)
Requires-Dist: gast (>=0.6.0)
Requires-Dist: geographiclib (>=2.0)
Requires-Dist: geopandas (>=1.0.1)
Requires-Dist: geopy (>=2.4.1)
Requires-Dist: ghp-import (>=2.1.0)
Requires-Dist: gitdb (>=4.0.11)
Requires-Dist: google-pasta (>=0.2.0)
Requires-Dist: googletrans (>=4.0.0rc1)
Requires-Dist: grpcio (>=1.66.0)
Requires-Dist: h11 (>=0.9.0)
Requires-Dist: h2 (>=3.2.0)
Requires-Dist: h5py (>=3.11.0)
Requires-Dist: holoviews (>=1.19.1)
Requires-Dist: hpack (>=3.0.0)
Requires-Dist: hstspreload (>=2024.7.1)
Requires-Dist: httpcore (>=0.9.1)
Requires-Dist: httpx (>=0.13.3)
Requires-Dist: humanfriendly (>=10.0)
Requires-Dist: hyperframe (>=5.2.0)
Requires-Dist: idna (>=2.10)
Requires-Dist: imageio (>=2.34.2)
Requires-Dist: img2pdf (>=0.5.1)
Requires-Dist: imgaug (>=0.4.0)
Requires-Dist: importlib_metadata (>=8.2.0)
Requires-Dist: inexactsearch (>=1.0.2)
Requires-Dist: iniconfig (>=2.0.0)
Requires-Dist: installer (>=0.7.0)
Requires-Dist: ipykernel (>=6.29.5)
Requires-Dist: ipython (>=8.26.0)
Requires-Dist: ipywidgets (>=8.1.3)
Requires-Dist: isoduration (>=20.11.0)
Requires-Dist: itsdangerous (>=2.2.0)
Requires-Dist: jedi (>=0.19.1)
Requires-Dist: joblib (>=1.4.2)
Requires-Dist: joypy (>=0.2.6)
Requires-Dist: json5 (>=0.9.25)
Requires-Dist: jsonpointer (>=3.0.0)
Requires-Dist: jsonschema (>=4.22.0)
Requires-Dist: jsonschema-specifications (>=2023.12.1)
Requires-Dist: jupyter (>=1.0.0)
Requires-Dist: jupyter-console (>=6.6.3)
Requires-Dist: jupyter-events (>=0.10.0)
Requires-Dist: jupyter-lsp (>=2.2.5)
Requires-Dist: jupyter_client (>=8.6.2)
Requires-Dist: jupyter_core (>=5.7.2)
Requires-Dist: jupyter_server (>=2.14.2)
Requires-Dist: jupyter_server_terminals (>=0.5.3)
Requires-Dist: jupyterlab (>=4.2.4)
Requires-Dist: jupyterlab_pygments (>=0.3.0)
Requires-Dist: jupyterlab_server (>=2.27.3)
Requires-Dist: jupyterlab_widgets (>=3.0.11)
Requires-Dist: keras (>=3.5.0)
Requires-Dist: kiwisolver (>=1.4.5)
Requires-Dist: langcodes (>=3.4.0)
Requires-Dist: langdetect (>=1.0.9)
Requires-Dist: language_data (>=1.2.0)
Requires-Dist: lazy_loader (>=0.4)
Requires-Dist: libclang (>=18.1.1)
Requires-Dist: libretranslatepy (>=2.1.1)
Requires-Dist: linkify-it-py (>=2.0.3)
Requires-Dist: llvmlite (>=0.42.0)
Requires-Dist: lmdb (>=1.5.1)
Requires-Dist: locket (>=1.0.0)
Requires-Dist: lxml (>=4.9.4)
Requires-Dist: mac-alias (>=2.2.2)
Requires-Dist: macholib (>=1.16.3)
Requires-Dist: marisa-trie (>=1.2.0)
Requires-Dist: markdown-it-py (>=3.0.0)
Requires-Dist: matplotlib (>=3.9.1)
Requires-Dist: matplotlib-inline (>=0.1.7)
Requires-Dist: mccabe (>=0.7.0)
Requires-Dist: mdit-py-plugins (>=0.4.1)
Requires-Dist: mdurl (>=0.1.2)
Requires-Dist: memory-profiler (>=0.61.0)
Requires-Dist: mercantile (>=1.2.1)
Requires-Dist: mergedeep (>=1.3.4)
Requires-Dist: mistune (>=3.0.2)
Requires-Dist: mkdocs (>=1.6.0)
Requires-Dist: mkdocs-get-deps (>=0.2.0)
Requires-Dist: ml-dtypes (>=0.4.0)
Requires-Dist: mne (>=1.7.1)
Requires-Dist: modulegraph (>=0.19.6)
Requires-Dist: more-itertools (>=10.3.0)
Requires-Dist: mpmath (>=1.3.0)
Requires-Dist: msgpack (>=1.0.8)
Requires-Dist: mtscomp (>=1.0.2)
Requires-Dist: multipledispatch (>=1.0.0)
Requires-Dist: murmurhash (>=1.0.10)
Requires-Dist: mypy-extensions (>=1.0.0)
Requires-Dist: namex (>=0.0.8)
Requires-Dist: natsort (>=8.4.0)
Requires-Dist: nbclient (>=0.10.0)
Requires-Dist: nbconvert (>=7.16.4)
Requires-Dist: nbformat (>=5.10.4)
Requires-Dist: neo (>=0.13.1)
Requires-Dist: nest-asyncio (>=1.6.0)
Requires-Dist: networkx (>=3.3)
Requires-Dist: ninja (>=1.11.1.1)
Requires-Dist: nltk (>=3.8.1)
Requires-Dist: notebook (>=7.2.1)
Requires-Dist: notebook_shim (>=0.2.4)
Requires-Dist: numba (>=0.59.1)
Requires-Dist: numcodecs (>=0.13.0)
Requires-Dist: numerizer (>=0.2.3)
Requires-Dist: numpy (>=1.26.4)
Requires-Dist: onnxruntime (>=1.18.1)
Requires-Dist: opencv-contrib-python (>=4.10.0.84)
Requires-Dist: opencv-python (>=4.10.0.84)
Requires-Dist: opencv-python-headless (>=4.10.0.84)
Requires-Dist: openpyxl (>=3.1.5)
Requires-Dist: opt-einsum (>=3.3.0)
Requires-Dist: optree (>=0.12.1)
Requires-Dist: orjson (>=3.10.6)
Requires-Dist: outcome (>=1.3.0.post0)
Requires-Dist: overrides (>=7.7.0)
Requires-Dist: packaging (>=24.1)
Requires-Dist: paddleocr (>=2.8.1)
Requires-Dist: paddlepaddle (>=2.6.2)
Requires-Dist: pandas (>=2.2.2)
Requires-Dist: pandas-flavor (>=0.6.0)
Requires-Dist: pandocfilters (>=1.5.1)
Requires-Dist: panel (>=1.4.5)
Requires-Dist: param (>=2.1.1)
Requires-Dist: paramiko (>=3.4.1)
Requires-Dist: parso (>=0.8.4)
Requires-Dist: partd (>=1.4.2)
Requires-Dist: pathspec (>=0.12.1)
Requires-Dist: patsy (>=0.5.6)
Requires-Dist: pdf2image (>=1.17.0)
Requires-Dist: pdf2img (>=0.1.2)
Requires-Dist: pdfminer (>=20191125)
Requires-Dist: pexpect (>=4.9.0)
Requires-Dist: phylib (>=2.6.0)
Requires-Dist: pikepdf (>=9.1.0)
Requires-Dist: pillow (>=10.4.0)
Requires-Dist: pingouin (>=0.5.4)
Requires-Dist: pkginfo (>=1.11.1)
Requires-Dist: pkuseg (>=0.0.25)
Requires-Dist: platformdirs (>=3.11.0)
Requires-Dist: plotly (>=5.23.0)
Requires-Dist: pluggy (>=1.5.0)
Requires-Dist: poetry (>=1.7.0)
Requires-Dist: poetry-core (>=1.8.1)
Requires-Dist: poetry-plugin-export (>=1.6.0)
Requires-Dist: polars (>=0.20.31)
Requires-Dist: pooch (>=1.8.2)
Requires-Dist: preshed (>=3.0.9)
Requires-Dist: probeinterface (>=0.2.23)
Requires-Dist: prometheus_client (>=0.20.0)
Requires-Dist: prompt_toolkit (>=3.0.47)
Requires-Dist: protobuf (>=5.27.3)
Requires-Dist: psutil (>=5.9.8)
Requires-Dist: ptyprocess (>=0.7.0)
Requires-Dist: pure_eval (>=0.2.3)
Requires-Dist: py2app (>=0.28.8)
Requires-Dist: py4j (>=0.10.9.7)
Requires-Dist: pyarrow (>=16.1.0)
Requires-Dist: pyav (>=12.1.0)
Requires-Dist: pycairo (>=1.26.0)
Requires-Dist: pyclipper (>=1.3.0.post5)
Requires-Dist: pycodestyle (>=2.12.0)
Requires-Dist: pycparser (>=2.22)
Requires-Dist: pycryptodome (>=3.20.0)
Requires-Dist: pydantic (>=2.8.2)
Requires-Dist: pydantic_core (>=2.20.1)
Requires-Dist: pyflakes (>=3.2.0)
Requires-Dist: pyjanitor (>=0.27.0)
Requires-Dist: pynput (>=1.7.7)
Requires-Dist: pyobjc-core (>=10.3.1)
Requires-Dist: pyobjc-framework-Cocoa (>=10.3.1)
Requires-Dist: pyobjc-framework-CoreText (>=10.3.1)
Requires-Dist: pyobjc-framework-Quartz (>=10.3.1)
Requires-Dist: pyocr (>=0.8.5)
Requires-Dist: pyogrio (>=0.9.0)
Requires-Dist: pypandoc (>=1.13)
Requires-Dist: pyparsing (>=3.1.2)
Requires-Dist: pyperclip (>=1.9.0)
Requires-Dist: pyproj (>=3.6.1)
Requires-Dist: pyproject_hooks (>=1.1.0)
Requires-Dist: pyreqwest_impersonate (>=0.4.9)
Requires-Dist: pyrsistent (>=0.20.0)
Requires-Dist: pyspellchecker (>=0.8.1)
Requires-Dist: pytesseract (>=0.3.13)
Requires-Dist: pytest (>=8.3.3)
Requires-Dist: pytest-cov (>=5.0.0)
Requires-Dist: pytest-qt (>=4.4.0)
Requires-Dist: python-Levenshtein (>=0.25.1)
Requires-Dist: python-bidi (>=0.5.1)
Requires-Dist: python-box (>=7.2.0)
Requires-Dist: python-dateutil (>=2.9.0.post0)
Requires-Dist: python-docx (>=1.1.2)
Requires-Dist: python-dotenv (>=1.0.1)
Requires-Dist: python-json-logger (>=2.0.7)
Requires-Dist: python-pptx (>=0.6.23)
Requires-Dist: python-slugify (>=8.0.4)
Requires-Dist: pytweening (>=1.2.0)
Requires-Dist: pytz (>=2024.1)
Requires-Dist: pyviz_comms (>=3.0.3)
Requires-Dist: pyyaml_env_tag (>=0.1)
Requires-Dist: pyzmq (>=26.0.3)
Requires-Dist: qtconsole (>=5.5.2)
Requires-Dist: quantities (>=0.15.0)
Requires-Dist: rapidfuzz (>=3.9.5)
Requires-Dist: rasterio (>=1.3.10)
Requires-Dist: referencing (>=0.35.1)
Requires-Dist: regex (>=2024.5.15)
Requires-Dist: rembg (>=2.0.57)
Requires-Dist: reportlab (>=4.2.0)
Requires-Dist: requests (>=2.32.3)
Requires-Dist: requests-toolbelt (>=1.0.0)
Requires-Dist: responses (>=0.25.3)
Requires-Dist: retrying (>=1.3.4)
Requires-Dist: rfc3339-validator (>=0.1.4)
Requires-Dist: rfc3986 (>=1.5.0)
Requires-Dist: rfc3986-validator (>=0.1.1)
Requires-Dist: rich (>=13.7.1)
Requires-Dist: ridgeplot (>=0.1.25)
Requires-Dist: rpds-py (>=0.18.1)
Requires-Dist: rubicon-objc (>=0.4.9)
Requires-Dist: schedule (>=1.2.2)
Requires-Dist: scikit-image (>=0.24.0)
Requires-Dist: scikit-learn (>=1.5.1)
Requires-Dist: scipy (>=1.0.0)
Requires-Dist: seaborn (>=0.13.2)
Requires-Dist: selenium (>=4.24.0)
Requires-Dist: setuptools (>=72.1.0)
Requires-Dist: sgmllib3k (>=1.0.0)
Requires-Dist: shapely (>=2.0.5)
Requires-Dist: shellingham (>=1.5.4)
Requires-Dist: silpa_common (>=0.3)
Requires-Dist: six (>=1.16.0)
Requires-Dist: skimpy (>=0.0.15)
Requires-Dist: smart-open (>=7.0.4)
Requires-Dist: smmap (>=5.0.1)
Requires-Dist: sniffio (>=1.3.1)
Requires-Dist: snuggs (>=1.4.7)
Requires-Dist: sortedcontainers (>=2.4.0)
Requires-Dist: soundex (>=1.1.3)
Requires-Dist: soupsieve (>=2.5)
Requires-Dist: spacy (>=3.7.5)
Requires-Dist: spacy-legacy (>=3.0.12)
Requires-Dist: spacy-loggers (>=1.0.5)
Requires-Dist: spellchecker (>=0.4)
Requires-Dist: spikeinterface (>=0.100.7)
Requires-Dist: srsly (>=2.4.8)
Requires-Dist: stack-data (>=0.6.3)
Requires-Dist: stanza (>=1.8.2)
Requires-Dist: statsmodels (>=0.14.2)
Requires-Dist: std-nslog (>=1.0.3)
Requires-Dist: stem (>=1.8.2)
Requires-Dist: svglib (>=1.5.1)
Requires-Dist: sympy (>=1.13.1)
Requires-Dist: tabulate (>=0.9.0)
Requires-Dist: tenacity (>=8.5.0)
Requires-Dist: tensorboard (>=2.17.1)
Requires-Dist: tensorboard-data-server (>=0.7.2)
Requires-Dist: tensorflow (>=2.17.0)
Requires-Dist: termcolor (>=2.4.0)
Requires-Dist: terminado (>=0.18.1)
Requires-Dist: text-unidecode (>=1.3)
Requires-Dist: thinc (>=8.2.5)
Requires-Dist: threadpoolctl (>=3.5.0)
Requires-Dist: tifffile (>=2024.7.24)
Requires-Dist: tinycss2 (>=1.3.0)
Requires-Dist: toga-cocoa (>=0.4.6)
Requires-Dist: toga-core (>=0.4.6)
Requires-Dist: toml (>=0.10.2)
Requires-Dist: tomli (>=1.2.3)
Requires-Dist: tomli_w (>=1.0.0)
Requires-Dist: tomlkit (>=0.13.0)
Requires-Dist: toolz (>=0.12.1)
Requires-Dist: torch (>=2.4.0)
Requires-Dist: torchvision (>=0.19.0)
Requires-Dist: tornado (>=6.4.1)
Requires-Dist: tqdm (>=4.66.4)
Requires-Dist: traitlets (>=5.14.3)
Requires-Dist: translate (>=3.6.1)
Requires-Dist: travertino (>=0.3.0)
Requires-Dist: trio (>=0.25.1)
Requires-Dist: trio-websocket (>=0.11.1)
Requires-Dist: trove-classifiers (>=2024.7.2)
Requires-Dist: typeguard (>=4.2.1)
Requires-Dist: typer (>=0.12.3)
Requires-Dist: types-python-dateutil (>=2.9.0.20240316)
Requires-Dist: typing_extensions (>=4.12.2)
Requires-Dist: tzdata (>=2024.1)
Requires-Dist: uc-micro-py (>=1.0.3)
Requires-Dist: uri-template (>=1.3.0)
Requires-Dist: urllib3 (>=2.2.2)
Requires-Dist: virtualenv (>=20.26.3)
Requires-Dist: vtk (>=9.3.1)
Requires-Dist: wasabi (>=1.1.3)
Requires-Dist: watchdog (>=4.0.1)
Requires-Dist: wcwidth (>=0.2.13)
Requires-Dist: weasel (>=0.4.1)
Requires-Dist: webcolors (>=24.6.0)
Requires-Dist: webdriver-manager (>=4.0.2)
Requires-Dist: webencodings (>=0.5.1)
Requires-Dist: websocket-client (>=1.8.0)
Requires-Dist: wheel (>=0.44.0)
Requires-Dist: widgetsnbextension (>=4.0.11)
Requires-Dist: wrapt (>=1.16.0)
Requires-Dist: wsproto (>=1.2.0)
Requires-Dist: xarray (>=2024.6.0)
Requires-Dist: xlrd (>=2.0.1)
Requires-Dist: xyzservices (>=2024.6.0)
Requires-Dist: zarr (>=2.17.2)
Requires-Dist: zipp (>=3.19.2)
Description-Content-Type: text/markdown

# Install

```python
pip install py2ls
```



# ips

### listdir, basename, dirname, newfolder, finfo

e.g., 

```python
fpath = "....../"
ips.listdir(fpath, kind='pdf', sort_by="size", ascending=0, output = 'df')
```

it filters the ‘.pdf’ files, and sort by the (file-size/name, length of name, create_time, mod_time, last_open_time …) it returns a DataFrame or BoxList (setting by ‘output’)

```python
dir_data, dir_fig = newfolder(fpath, {'data', 'fig'}) # create folder
```

```python
finfo(fpath) # get info: size, creation time, mod time, parent_path, fname, kind...
```

```python
dir_lib(lib_of_interest) # get the fpath
```



### list_func/func_list (same)

list functions in a package

### fload, fsave, figsave

e.g., 

```python
fload(fpath, kind=None, **kwargs)
```

load file (docx, pdf, image, md, json,csv,txt, html, yaml, xml, xlsx…) or save file.

```python
# figsave, as used in matlab. 
figsave(dir_save, "fname.pdf", dpi=300)
```



### pdf2img, img2pdf, docx2pdf

extract images from a PDF, or merge images into a pdf file

```python
pdf2img(dir_pdf, dir_save=None, page=None, kind="png",verbose=True, **kws)
pdf2img(fpath, page=[None, None])  # means extract all pages
# processing page: 1
# processing page: 2
# processing page: 3
# processing page: 4
# processing page: 5

```

```python
img2pdf(dir_img, kind="jpeg",page=None, dir_save=None, page_size="a4", dpi=300)
```

```python
docx2pdf(dir_docx, dir_save) # convert docx to pdf
```

### paper_size

quickly get the size info

```python
paper_size('a4') # [210, 297]
paper_size('card') # [85.6, 53.98]
```



### str2num, num2str, str2list

```python
str2num(“123.345 dollers”,2)# => 123.35 (float) 
```

```python
str2list("abcd") # ['a','b','c','d']
```

```python
list2str(['a','b','c','d']) # 'abcd'
```

### ssplit, sreplace

```python
sreplace(text, dict_replace=None, robust=True)
```

```python
ssplit(text, by="space", verbose=False, **kws) # by = "word", "sentence", ", ","num_strings","digital".....,"length", "upper followed lower", "lower followed upper"
```

```python
text = "The most pronounced physiological changes in sleep occur in the brain.[10] The brain uses significantly less energy during sleep than it does when awake, especially during non-REM sleep. In areas with reduced activity, the brain restores its supply of adenosine triphosphate (ATP), the molecule used for short-term storage and transport of energy.[11] In quiet waking, the brain is responsible for 20% of the body's energy use, thus this reduction has a noticeable effect on overall energy consumption.[12]"
ssplit(text, by=["[10]", "[11]", "[12]"])
# ['The most pronounced physiological changes in sleep occur in the brain.',
# ' The brain uses significantly less energy during sleep than it does when awake, especially during non-REM sleep. In areas with reduced activity, the brain restores its supply of adenosine triphosphate (ATP), the molecule used for short-term storage and transport of energy.',
# " In quiet waking, the brain is responsible for 20% of the body's energy use, thus this reduction has a noticeable effect on overall energy consumption.",
 # '']
```

```python
ssplit(text[:30], by="len", length=5)
# ['The m', 'ost p', 'ronou', 'nced ', 'physi', 'ologi']
```

```python
ssplit(text, by="non_alphanumeric")
# ['The most pronounced physiological changes in sleep occur in the brain.[',
#  '10',
#  '] The brain uses significantly less energy during sleep than it does when awake, especially during non-REM sleep. In areas with reduced activity, the brain restores its supply of adenosine triphosphate (ATP), the molecule used for short-term storage and transport of energy.[',
#  '11',
#  '] In quiet waking, the brain is responsible for ',
#  '20',
#  "% of the body's energy use, thus this reduction has a noticeable effect on overall energy consumption.[",
#  '12',
#  ']']
```

```python
ssplit(text, by="sent")
#['The most pronounced physiological changes in sleep occur in the brain.',
 #'[10] The brain uses significantly less energy during sleep than it does when awake, especially during non-REM sleep.',
 #'In areas with reduced activity, the brain restores its supply of adenosine triphosphate (ATP), the molecule used for short-term storage and transport of energy.',
 #"[11] In quiet waking, the brain is responsible for 20% of the body's energy use, thus this reduction has a noticeable effect on overall energy consumption.",
 #'[12]']
```

```python
ssplit(text, by="lowup")
# ["The most pronounced physiological changes in sleep occur in the brain.[10] The brain uses significantly less energy during sleep than it does when awake, especially during non-REM sleep. In areas with reduced activity, the brain restores its supply of adenosine triphosphate (ATP), the molecule used for short-term storage and transport of energy.[11] In quiet waking, the brain is responsible for 20% of the body's energy use, thus this reduction has a noticeable effect on overall energy consumption.[12]"]

```

```python
sreplace(text, dict_replace=None, robust=True)
```

```python
text= 'The most pronounced physiological changes in sleep occur in the brain.[10] '
 'The brain uses significantly less energy during sleep than it does when '
 'awake, especially during non-REM sleep. In areas with reduced activity, the '
 'brain restores its supply of adenosine triphosphate (ATP), the molecule used '
 'for short-term storage and transport of energy.[11] In quiet waking, the '
 "brain is responsible for 20% of the body's energy use, thus this reduction "
 'has a noticeable effect on overall energy consumption.[12]'
sreplace(text)
"The most pronounced physiological changes in sleep occur in the brain"
sreplace(text,{"sleep":"wakewake"}) # sreplace(text,dict(sleep="wakewake"))
"The most pronounced physiological changes in wakewake occur in the brain."
```

### stats

#### **FuncCmpt** ( two groups cmp)

```python
FuncCmpt(X1, X2, pmc='auto', pair='unpaired')
e.g., 
X1 = [19, 22, 16, 29, 24]
X2 = [20, 11, 17, 12, 22]
p, res = FumcCmpt(X1,X2, pmc='pmc', pair = 'unpair')
# normally distributed
# normally distributed
# unpaired t text
# t(8) = 1.81117, p=0.1077
p,res = FuncCmpt(x1,x2, pmc='pmc',pair='pair')
# paired t test
# t(4)=1.55556,p=0.19479
```

#### FuncMultiCmpt ( multiple groups cmp)

```python
FuncMultiCmpt(pmc='pmc', pair='unpair', data=None, dv=None, factor=None,
                  ss_type=2, detailed=True, effsize='np2',
                  correction='auto', between=None, within=None,
                  subject=None, group=None
                  )
```

```python
df = pd.DataFrame({'score': [64, 66, 68, 75, 78, 94, 98, 79, 71, 80,
                             91, 92, 93, 90, 97, 94, 82, 88, 95, 96,
                             79, 78, 88, 94, 92, 85, 83, 85, 82, 81],
                   'group': np.repeat(['strat1', 'strat2', 'strat3'],repeats=10)})
res = FuncMultiCmpt(pmc='auto',pair='unpaired',data=df, dv='score', factor='group', group='group')
res["APA"] 
# ['group:F(2, 17)=9.71719,p=0.0016']
```

#### FuncStars

```python
FuncStars(ax,
              pval=None,
              Ylim=None,
              Xlim=None,
              symbol='*',
              yscale=0.95,
              x1=0,
              x2=1,
              alpha=0.05,
              fontsize=14,
              fontsize_note=6,
              rotation=0,
              fontname='Arial',
              values_below=None,
              linego=True,
              linestyle='-',
              linecolor='k',
              linewidth=.8,
              nsshow='off',
              symbolcolor='k',
              tailindicator=[0.06, 0.06],
              report=None,
              report_scale=-0.1,
              report_loc=None)



```

### plots

#### stdshade

```python
stdshade(ax=None,*args, **kwargs)
```

#### add_colorbar

```python
add_colorbar(im, width=None, pad=None, **kwargs)
```

#### get_color

```python
get_color(n=1, cmap='auto')
```

```python
get_color(12)
# ['#474747',
#  '#FF2C00',
#  '#0C5DA5',
#  '#845B97',
#  '#58BBCC',
#  '#FF9500',
#  '#D57DBE',
#  '#474747',
#  '#FF2C00',
#  '#0C5DA5',
#  '#845B97',
#  '#58BBCC']
```

```python
get_color(5, cmap="jet") # ['#000080', '#000084', '#000089', '#00008d', '#000092']
get_color(5,cmap="rainbow") #['#8000ff', '#7e03ff', '#7c06ff', '#7a09ff', '#780dff']
```

#### img appearance

#### imgsets

```python
imgsets(
    img,
    sets=None,
    show=True,
    show_axis=False,
    size=None,
    dpi=100,
    figsize=None,
    auto=False,
    filter_kws=None,
)
```

```python
img = imgsets(
    fpath,
    sets={"rota": -5, "sharp": 10},
    dpi=200,
    # show_axis=True,
)
figsave(dir_save, "test1_sharp.pdf")


img2 = imgsets(
    fpath,
    sets={"rota": -5, "crop": [100, 100, 300, 400], "sharp": 10},
    dpi=200,
    filter_kws={
        "sharpen": 10,
    },
    # show_axis=True,
)
figsave(dir_save, "test2_crop.pdf")
```

```python
fload(dir_img)
```

![image-20240613233304196](./README.assets/image-20240613233304196.png)

```python
imgsets(img, sets={"color": 1.5}, show=0)
```

![image-20240613233356996](./README.assets/image-20240613233356996.png)

```python
imgsets(img, sets={"pad": (300, 300), "bgcolor": (73, 162, 127)}, show=0)
```

![image-20240613233423144](./README.assets/image-20240613233423144.png)

```python
imgsets(
    img,
    sets={"contrast": 1.3, "color": 1.5, "pad": (300, 300)},
    show=0,
    filter_kws=dict(sh=1050, EDG=10, gaus=5),
)
```

![image-20240613233503718](./README.assets/image-20240613233503718.png)

```python
imgsets(
    img,
    sets={"color": 10.5},
    show=0,
    filter_kws=dict(EDGE_ENHANCE=50, EDGE_NHANCEmore=50),
)
```

![image-20240613233525291](./README.assets/image-20240613233525291.png)

```python
imgsets(
    img,
    sets=dict(contr=1.5, rm="default"),
    show=0,
    # filter_kws=dict(sharp=1),
)
```

![image-20240613233554225](./README.assets/image-20240613233554225.png)

```python
imgsets(
    img,
    sets=dict(contr=0, rm="default"),
    show=0,
    filter_kws=dict(sharp=1),
)
```

![image-20240613233611627](./README.assets/image-20240613233611627.png)

#### figsets

```python
figsets(*args)
```

```python
cm = 1 / 2.54
# plt.style.use("paper")
plt.figure(figsize=[8 * cm, 5 * cm])
for i in range(2, 4):
    plt.plot(x, y * i, ls="-")
figsets(
    plt.gca(),
    {
        "xlabel": f"time([{x[0]}:{x[-1]}])",
        "ylabel": "Amplitude (signals)",
        # "titel": "paper",
        "xlim": [0, 600],
        "xtick": np.arange(0, 620, 150),
        "xlabel": "test xticklabel",
        # "ylim": [-2.5, 2.5],
        "sp": "go",
        # "style": "paper",
        "box": ":",
        "grid": "on",
        "minorticks": "on",
        "ticks": {"c": "k"},
    },
)
figsets('style','paper')
```

```python
cm = 1/2.54  # centimeters in inches
fig, ax = plt.subplots(1, 1, figsize=(7*cm, 5*cm))
x = np.linspace(0, 2 * np.pi, 50) * 100
y = np.sin(x)
c=get_color(7)

for i in range(2,7):
    plt.plot(x, y*i,c=c[i])
figsets(
    ax,
    {
        "xlim": [0, 450],
        # "ylim": [-1.5, 1.5],
        "xlabel": "2222",
        # "style":"paper",
        "yticks": np.arange(-5,5, 2),
        "ylabel": "ylabelsssss",
        "xtkbel": range(0, 800, 100),
        # "spine": 5,
        "suptitle": "supertitle",
        # "minorticks": "y",
        # "ticksloc":"lt",
        # "ticks": {"direction": "out",'c':'b'},
        "rotation":45,
        # 'box':"lt",
        # "labellocation":'r',
        # "ax_color":'b',
        # 'grid':{"which":'minor','lw':1,"ls":'-.','c':'b','al':0.3},
    },
)
```


