mirror of
https://github.com/sphinx-doc/sphinx.git
synced 2025-02-25 18:55:22 -06:00
Split out `sphinx.ext.apidoc._shared
`
This commit is contained in:
parent
5176a8f33a
commit
2c117bbbf0
@ -13,28 +13,9 @@ from __future__ import annotations
|
|||||||
|
|
||||||
from typing import TYPE_CHECKING
|
from typing import TYPE_CHECKING
|
||||||
|
|
||||||
from sphinx.locale import __
|
from sphinx.ext.apidoc._cli import main
|
||||||
from sphinx.util import logging
|
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from collections.abc import Sequence
|
from collections.abc import Sequence
|
||||||
from pathlib import Path
|
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
__all__: Sequence[str] = ('main',)
|
||||||
|
|
||||||
|
|
||||||
def _remove_old_files(
|
|
||||||
written_files: Sequence[Path], destdir: Path, suffix: str
|
|
||||||
) -> None:
|
|
||||||
files_to_keep = frozenset(written_files)
|
|
||||||
for existing in destdir.rglob(f'*.{suffix}'):
|
|
||||||
if existing not in files_to_keep:
|
|
||||||
try:
|
|
||||||
existing.unlink()
|
|
||||||
except OSError as exc:
|
|
||||||
logger.warning(
|
|
||||||
__('Failed to remove %s: %s'),
|
|
||||||
existing,
|
|
||||||
exc.strerror,
|
|
||||||
type='autodoc',
|
|
||||||
)
|
|
||||||
|
@ -13,12 +13,12 @@ from typing import TYPE_CHECKING, Any
|
|||||||
import sphinx.locale
|
import sphinx.locale
|
||||||
from sphinx import __display_version__
|
from sphinx import __display_version__
|
||||||
from sphinx.cmd.quickstart import EXTENSIONS
|
from sphinx.cmd.quickstart import EXTENSIONS
|
||||||
from sphinx.ext.apidoc import _remove_old_files, logger
|
|
||||||
from sphinx.ext.apidoc._generate import (
|
from sphinx.ext.apidoc._generate import (
|
||||||
CliOptions,
|
CliOptions,
|
||||||
create_modules_toc_file,
|
create_modules_toc_file,
|
||||||
recurse_tree,
|
recurse_tree,
|
||||||
)
|
)
|
||||||
|
from sphinx.ext.apidoc._shared import LOGGER, _remove_old_files
|
||||||
from sphinx.locale import __
|
from sphinx.locale import __
|
||||||
from sphinx.util.osutil import ensuredir
|
from sphinx.util.osutil import ensuredir
|
||||||
|
|
||||||
@ -293,7 +293,7 @@ def _parse_args(argv: Sequence[str], /) -> CliOptions:
|
|||||||
args.module_path = root_path = Path(args.module_path).resolve()
|
args.module_path = root_path = Path(args.module_path).resolve()
|
||||||
args.destdir = Path(args.destdir)
|
args.destdir = Path(args.destdir)
|
||||||
if not root_path.is_dir():
|
if not root_path.is_dir():
|
||||||
logger.error(__('%s is not a directory.'), root_path)
|
LOGGER.error(__('%s is not a directory.'), root_path)
|
||||||
raise SystemExit(1)
|
raise SystemExit(1)
|
||||||
|
|
||||||
if args.header is None:
|
if args.header is None:
|
||||||
|
@ -9,7 +9,7 @@ from pathlib import Path
|
|||||||
from typing import TYPE_CHECKING
|
from typing import TYPE_CHECKING
|
||||||
|
|
||||||
from sphinx import package_dir
|
from sphinx import package_dir
|
||||||
from sphinx.ext.apidoc import logger
|
from sphinx.ext.apidoc._shared import LOGGER
|
||||||
from sphinx.locale import __
|
from sphinx.locale import __
|
||||||
from sphinx.util.osutil import FileAvoidWrite
|
from sphinx.util.osutil import FileAvoidWrite
|
||||||
from sphinx.util.template import ReSTRenderer
|
from sphinx.util.template import ReSTRenderer
|
||||||
@ -64,14 +64,14 @@ def write_file(name: str, text: str, opts: CliOptions) -> Path:
|
|||||||
fname = Path(opts.destdir, f'{name}.{opts.suffix}')
|
fname = Path(opts.destdir, f'{name}.{opts.suffix}')
|
||||||
if opts.dryrun:
|
if opts.dryrun:
|
||||||
if not opts.quiet:
|
if not opts.quiet:
|
||||||
logger.info(__('Would create file %s.'), fname)
|
LOGGER.info(__('Would create file %s.'), fname)
|
||||||
return fname
|
return fname
|
||||||
if not opts.force and fname.is_file():
|
if not opts.force and fname.is_file():
|
||||||
if not opts.quiet:
|
if not opts.quiet:
|
||||||
logger.info(__('File %s already exists, skipping.'), fname)
|
LOGGER.info(__('File %s already exists, skipping.'), fname)
|
||||||
else:
|
else:
|
||||||
if not opts.quiet:
|
if not opts.quiet:
|
||||||
logger.info(__('Creating file %s.'), fname)
|
LOGGER.info(__('Creating file %s.'), fname)
|
||||||
with FileAvoidWrite(fname) as f:
|
with FileAvoidWrite(fname) as f:
|
||||||
f.write(text)
|
f.write(text)
|
||||||
return fname
|
return fname
|
||||||
|
30
sphinx/ext/apidoc/_shared.py
Normal file
30
sphinx/ext/apidoc/_shared.py
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
from typing import TYPE_CHECKING
|
||||||
|
|
||||||
|
from sphinx.locale import __
|
||||||
|
from sphinx.util import logging
|
||||||
|
|
||||||
|
if TYPE_CHECKING:
|
||||||
|
from collections.abc import Sequence
|
||||||
|
from pathlib import Path
|
||||||
|
from typing import Final
|
||||||
|
|
||||||
|
LOGGER: Final[logging.SphinxLoggerAdapter] = logging.getLogger('sphinx.ext.apidoc')
|
||||||
|
|
||||||
|
|
||||||
|
def _remove_old_files(
|
||||||
|
written_files: Sequence[Path], destdir: Path, suffix: str
|
||||||
|
) -> None:
|
||||||
|
files_to_keep = frozenset(written_files)
|
||||||
|
for existing in destdir.rglob(f'*.{suffix}'):
|
||||||
|
if existing not in files_to_keep:
|
||||||
|
try:
|
||||||
|
existing.unlink()
|
||||||
|
except OSError as exc:
|
||||||
|
LOGGER.warning(
|
||||||
|
__('Failed to remove %s: %s'),
|
||||||
|
existing,
|
||||||
|
exc.strerror,
|
||||||
|
type='autodoc',
|
||||||
|
)
|
Loading…
Reference in New Issue
Block a user