晋太元中,武陵人捕鱼为业。缘溪行,忘路之远近。忽逢桃花林,夹岸数百步,中无杂树,芳草鲜美,落英缤纷。渔人甚异之,复前行,欲穷其林。 林尽水源,便得一山,山有小口,仿佛若有光。便舍船,从口入。初极狭,才通人。复行数十步,豁然开朗。土地平旷,屋舍俨然,有良田、美池、桑竹之属。阡陌交通,鸡犬相闻。其中往来种作,男女衣着,悉如外人。黄发垂髫,并怡然自乐。 见渔人,乃大惊,问所从来。具答之。便要还家,设酒杀鸡作食。村中闻有此人,咸来问讯。自云先世避秦时乱,率妻子邑人来此绝境,不复出焉,遂与外人间隔。问今是何世,乃不知有汉,无论魏晋。此人一一为具言所闻,皆叹惋。余人各复延至其家,皆出酒食。停数日,辞去。此中人语云:“不足为外人道也。”(间隔 一作:隔绝) 既出,得其船,便扶向路,处处志之。及郡下,诣太守,说如此。太守即遣人随其往,寻向所志,遂迷,不复得路。 南阳刘子骥,高尚士也,闻之,欣然规往。未果,寻病终。后遂无问津者。
| DIR:/opt/cloudlinux/venv/lib64/python3.11/site-packages/setuptools/ |
| Current File : //opt/cloudlinux/venv/lib64/python3.11/site-packages/setuptools/unicode_utils.py |
import sys
import unicodedata
from configparser import RawConfigParser
from .compat import py39
from .warnings import SetuptoolsDeprecationWarning
# HFS Plus uses decomposed UTF-8
def decompose(path):
if isinstance(path, str):
return unicodedata.normalize('NFD', path)
try:
path = path.decode('utf-8')
path = unicodedata.normalize('NFD', path)
path = path.encode('utf-8')
except UnicodeError:
pass # Not UTF-8
return path
def filesys_decode(path):
"""
Ensure that the given path is decoded,
``None`` when no expected encoding works
"""
if isinstance(path, str):
return path
fs_enc = sys.getfilesystemencoding() or 'utf-8'
candidates = fs_enc, 'utf-8'
for enc in candidates:
try:
return path.decode(enc)
except UnicodeDecodeError:
continue
return None
def try_encode(string, enc):
"turn unicode encoding into a functional routine"
try:
return string.encode(enc)
except UnicodeEncodeError:
return None
def _read_utf8_with_fallback(file: str, fallback_encoding=py39.LOCALE_ENCODING) -> str:
"""
First try to read the file with UTF-8, if there is an error fallback to a
different encoding ("locale" by default). Returns the content of the file.
Also useful when reading files that might have been produced by an older version of
setuptools.
"""
try:
with open(file, "r", encoding="utf-8") as f:
return f.read()
except UnicodeDecodeError: # pragma: no cover
_Utf8EncodingNeeded.emit(file=file, fallback_encoding=fallback_encoding)
with open(file, "r", encoding=fallback_encoding) as f:
return f.read()
def _cfg_read_utf8_with_fallback(
cfg: RawConfigParser, file: str, fallback_encoding=py39.LOCALE_ENCODING
) -> None:
"""Same idea as :func:`_read_utf8_with_fallback`, but for the
:meth:`RawConfigParser.read` method.
This method may call ``cfg.clear()``.
"""
try:
cfg.read(file, encoding="utf-8")
except UnicodeDecodeError: # pragma: no cover
_Utf8EncodingNeeded.emit(file=file, fallback_encoding=fallback_encoding)
cfg.clear()
cfg.read(file, encoding=fallback_encoding)
class _Utf8EncodingNeeded(SetuptoolsDeprecationWarning):
_SUMMARY = """
`encoding="utf-8"` fails with {file!r}, trying `encoding={fallback_encoding!r}`.
"""
_DETAILS = """
Fallback behavior for UTF-8 is considered **deprecated** and future versions of
`setuptools` may not implement it.
Please encode {file!r} with "utf-8" to ensure future builds will succeed.
If this file was produced by `setuptools` itself, cleaning up the cached files
and re-building/re-installing the package with a newer version of `setuptools`
(e.g. by updating `build-system.requires` in its `pyproject.toml`)
might solve the problem.
"""
# TODO: Add a deadline?
# Will we be able to remove this?
# The question comes to mind mainly because of sdists that have been produced
# by old versions of setuptools and published to PyPI...
|