Buckets:
MisterAI/LocalAI_Demo_backends / cpu-diffusers.upgrade-tmp /venv /lib /python3.10 /site-packages /jupyter_client /utils.py
| """ | |
| utils: | |
| - provides utility wrappers to run asynchronous functions in a blocking environment. | |
| - vendor functions from ipython_genutils that should be retired at some point. | |
| """ | |
| from __future__ import annotations | |
| import os | |
| from collections.abc import Sequence | |
| from jupyter_core.utils import ensure_async, run_sync # noqa: F401 # noqa: F401 | |
| from .session import utcnow # noqa | |
| def _filefind(filename: str, path_dirs: str | Sequence[str] | None = None) -> str: | |
| """Find a file by looking through a sequence of paths. | |
| This iterates through a sequence of paths looking for a file and returns | |
| the full, absolute path of the first occurrence of the file. If no set of | |
| path dirs is given, the filename is tested as is, after running through | |
| :func:`expandvars` and :func:`expanduser`. Thus a simple call:: | |
| filefind('myfile.txt') | |
| will find the file in the current working dir, but:: | |
| filefind('~/myfile.txt') | |
| Will find the file in the users home directory. This function does not | |
| automatically try any paths, such as the cwd or the user's home directory. | |
| Parameters | |
| ---------- | |
| filename : str | |
| The filename to look for. | |
| path_dirs : str, None or sequence of str | |
| The sequence of paths to look for the file in. If None, the filename | |
| need to be absolute or be in the cwd. If a string, the string is | |
| put into a sequence and the searched. If a sequence, walk through | |
| each element and join with ``filename``, calling :func:`expandvars` | |
| and :func:`expanduser` before testing for existence. | |
| Returns | |
| ------- | |
| Raises :exc:`IOError` or returns absolute path to file. | |
| """ | |
| # If paths are quoted, abspath gets confused, strip them... | |
| filename = filename.strip('"').strip("'") | |
| # If the input is an absolute path, just check it exists | |
| if os.path.isabs(filename) and os.path.isfile(filename): | |
| return filename | |
| if path_dirs is None: | |
| path_dirs = ("",) | |
| elif isinstance(path_dirs, str): | |
| path_dirs = (path_dirs,) | |
| for path in path_dirs: | |
| if path == ".": | |
| path = os.getcwd() # noqa | |
| testname = _expand_path(os.path.join(path, filename)) | |
| if os.path.isfile(testname): | |
| return os.path.abspath(testname) | |
| msg = f"File {filename!r} does not exist in any of the search paths: {path_dirs!r}" | |
| raise OSError(msg) | |
| def _expand_path(s: str) -> str: | |
| """Expand $VARS and ~names in a string, like a shell | |
| :Examples: | |
| In [2]: os.environ['FOO']='test' | |
| In [3]: expand_path('variable FOO is $FOO') | |
| Out[3]: 'variable FOO is test' | |
| """ | |
| # This is a pretty subtle hack. When expand user is given a UNC path | |
| # on Windows (\\server\share$\%username%), os.path.expandvars, removes | |
| # the $ to get (\\server\share\%username%). I think it considered $ | |
| # alone an empty var. But, we need the $ to remains there (it indicates | |
| # a hidden share). | |
| if os.name == "nt": | |
| s = s.replace("$\\", "IPYTHON_TEMP") | |
| s = os.path.expandvars(os.path.expanduser(s)) | |
| if os.name == "nt": | |
| s = s.replace("IPYTHON_TEMP", "$\\") | |
| return s | |
Xet Storage Details
- Size:
- 3.19 kB
- Xet hash:
- 0be67a18e9b946f0f34a872920b740cbdd2eddcca3c07c4b8e3dc95cbb3d5c7c
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.