Skip to content

Commit d1a990f

Browse files
committed
REF: Replace os.path with pathlib.Path in pandas_web.py
1 parent 2096b28 commit d1a990f

File tree

1 file changed

+25
-29
lines changed

1 file changed

+25
-29
lines changed

web/pandas_web.py

Lines changed: 25 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -100,20 +100,17 @@ def blog_add_posts(context):
100100
posts = []
101101
# posts from the file system
102102
if context["blog"]["posts_path"]:
103-
posts_path = os.path.join(
104-
context["source_path"], *context["blog"]["posts_path"].split("/")
103+
posts_path = pathlib.Path(context["source_path"]) / pathlib.Path(
104+
context["blog"]["posts_path"]
105105
)
106-
for fname in os.listdir(posts_path):
107-
if fname.startswith("index."):
106+
for fname in posts_path.iterdir():
107+
if fname.name.startswith("index."):
108108
continue
109-
link = (
110-
f"/{context['blog']['posts_path']}"
111-
f"/{os.path.splitext(fname)[0]}.html"
112-
)
109+
link = f"/{context['blog']['posts_path']}/{fname.stem}.html"
113110
md = markdown.Markdown(
114111
extensions=context["main"]["markdown_extensions"]
115112
)
116-
with open(os.path.join(posts_path, fname), encoding="utf-8") as f:
113+
with fname.open(encoding="utf-8") as f:
117114
html = md.convert(f.read())
118115
title = md.Meta["title"][0]
119116
summary = re.sub(tag_expr, "", html)
@@ -394,7 +391,7 @@ def get_context(config_fname: str, **kwargs):
394391
with open(config_fname, encoding="utf-8") as f:
395392
context = yaml.safe_load(f)
396393

397-
context["source_path"] = os.path.dirname(config_fname)
394+
context["source_path"] = pathlib.Path(config_fname).parent
398395
context.update(kwargs)
399396

400397
preprocessors = (
@@ -414,9 +411,9 @@ def get_source_files(source_path: str) -> typing.Generator[str, None, None]:
414411
Generate the list of files present in the source directory.
415412
"""
416413
for root, dirs, fnames in os.walk(source_path):
417-
root_rel_path = os.path.relpath(root, source_path)
414+
root_rel_path = pathlib.Path(root).relative_to(source_path)
418415
for fname in fnames:
419-
yield os.path.join(root_rel_path, fname)
416+
yield str(root_rel_path / fname)
420417

421418

422419
def extend_base_template(content: str, base_template: str) -> str:
@@ -442,16 +439,16 @@ def main(
442439
before copying them. ``.md`` files are transformed to HTML.
443440
"""
444441
# Sanity check: validate that versions.json is valid JSON
445-
versions_path = os.path.join(source_path, "versions.json")
446-
with open(versions_path, encoding="utf-8") as f:
442+
versions_path = pathlib.Path(source_path) / "versions.json"
443+
with versions_path.open(encoding="utf-8") as f:
447444
try:
448445
json.load(f)
449446
except json.JSONDecodeError as e:
450447
raise RuntimeError(
451448
f"Invalid versions.json: {e}. Ensure it is valid JSON."
452449
) from e
453450

454-
config_fname = os.path.join(source_path, "config.yml")
451+
config_fname = pathlib.Path(source_path) / "config.yml"
455452

456453
shutil.rmtree(target_path, ignore_errors=True)
457454
os.makedirs(target_path, exist_ok=True)
@@ -460,20 +457,19 @@ def main(
460457
context = get_context(config_fname, target_path=target_path)
461458
sys.stderr.write("Context generated\n")
462459

463-
templates_path = os.path.join(source_path, context["main"]["templates_path"])
460+
templates_path = pathlib.Path(source_path) / context["main"]["templates_path"]
464461
jinja_env = jinja2.Environment(loader=jinja2.FileSystemLoader(templates_path))
465462

466463
for fname in get_source_files(source_path):
467-
if os.path.normpath(fname) in context["main"]["ignore"]:
464+
if str(pathlib.Path(fname)) in context["main"]["ignore"]:
468465
continue
469-
470466
sys.stderr.write(f"Processing {fname}\n")
471-
dirname = os.path.dirname(fname)
472-
os.makedirs(os.path.join(target_path, dirname), exist_ok=True)
467+
dirname = pathlib.Path(fname).parent
468+
(target_path / dirname).mkdir(parents=True, exist_ok=True)
473469

474-
extension = os.path.splitext(fname)[-1]
470+
extension = pathlib.Path(fname).suffix
475471
if extension in (".html", ".md"):
476-
with open(os.path.join(source_path, fname), encoding="utf-8") as f:
472+
with (pathlib.Path(source_path) / fname).open(encoding="utf-8") as f:
477473
content = f.read()
478474
if extension == ".md":
479475
if "pdeps/" in fname:
@@ -503,17 +499,17 @@ def main(
503499
# Python-Markdown doesn't let us config table attributes by hand
504500
body = body.replace("<table>", '<table class="table table-bordered">')
505501
content = extend_base_template(body, context["main"]["base_template"])
506-
context["base_url"] = "".join(["../"] * os.path.normpath(fname).count("/"))
502+
context["base_url"] = "".join(
503+
["../"] * pathlib.Path(fname).parts.count("/")
504+
)
507505
content = jinja_env.from_string(content).render(**context)
508-
fname_html = os.path.splitext(fname)[0] + ".html"
509-
with open(
510-
os.path.join(target_path, fname_html), "w", encoding="utf-8"
506+
fname_html = pathlib.Path(fname).with_suffix(".html").name
507+
with (pathlib.Path(target_path) / fname_html).open(
508+
"w", encoding="utf-8"
511509
) as f:
512510
f.write(content)
513511
else:
514-
shutil.copy(
515-
os.path.join(source_path, fname), os.path.join(target_path, dirname)
516-
)
512+
shutil.copy(pathlib.Path(source_path) / fname, target_path / dirname)
517513

518514

519515
if __name__ == "__main__":

0 commit comments

Comments
 (0)