Skip to content

Commit 6988af2

Browse files
committed
REF: Replace os.path with pathlib.Path in pandas_web.py
1 parent cfe54bd commit 6988af2

File tree

1 file changed

+23
-27
lines changed

1 file changed

+23
-27
lines changed

web/pandas_web.py

Lines changed: 23 additions & 27 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:
@@ -441,7 +438,7 @@ def main(
441438
For ``.md`` and ``.html`` files, render them with the context
442439
before copying them. ``.md`` files are transformed to HTML.
443440
"""
444-
config_fname = os.path.join(source_path, "config.yml")
441+
config_fname = pathlib.Path(source_path) / "config.yml"
445442

446443
shutil.rmtree(target_path, ignore_errors=True)
447444
os.makedirs(target_path, exist_ok=True)
@@ -450,20 +447,19 @@ def main(
450447
context = get_context(config_fname, target_path=target_path)
451448
sys.stderr.write("Context generated\n")
452449

453-
templates_path = os.path.join(source_path, context["main"]["templates_path"])
450+
templates_path = pathlib.Path(source_path) / context["main"]["templates_path"]
454451
jinja_env = jinja2.Environment(loader=jinja2.FileSystemLoader(templates_path))
455452

456453
for fname in get_source_files(source_path):
457-
if os.path.normpath(fname) in context["main"]["ignore"]:
454+
if str(pathlib.Path(fname)) in context["main"]["ignore"]:
458455
continue
459-
460456
sys.stderr.write(f"Processing {fname}\n")
461-
dirname = os.path.dirname(fname)
462-
os.makedirs(os.path.join(target_path, dirname), exist_ok=True)
457+
dirname = pathlib.Path(fname).parent
458+
(target_path / dirname).mkdir(parents=True, exist_ok=True)
463459

464-
extension = os.path.splitext(fname)[-1]
460+
extension = pathlib.Path(fname).suffix
465461
if extension in (".html", ".md"):
466-
with open(os.path.join(source_path, fname), encoding="utf-8") as f:
462+
with (pathlib.Path(source_path) / fname).open(encoding="utf-8") as f:
467463
content = f.read()
468464
if extension == ".md":
469465
body = markdown.markdown(
@@ -473,17 +469,17 @@ def main(
473469
# Python-Markdown doesn't let us config table attributes by hand
474470
body = body.replace("<table>", '<table class="table table-bordered">')
475471
content = extend_base_template(body, context["main"]["base_template"])
476-
context["base_url"] = "".join(["../"] * os.path.normpath(fname).count("/"))
472+
context["base_url"] = "".join(
473+
["../"] * pathlib.Path(fname).parts.count("/")
474+
)
477475
content = jinja_env.from_string(content).render(**context)
478-
fname_html = os.path.splitext(fname)[0] + ".html"
479-
with open(
480-
os.path.join(target_path, fname_html), "w", encoding="utf-8"
476+
fname_html = pathlib.Path(fname).with_suffix(".html").name
477+
with (pathlib.Path(target_path) / fname_html).open(
478+
"w", encoding="utf-8"
481479
) as f:
482480
f.write(content)
483481
else:
484-
shutil.copy(
485-
os.path.join(source_path, fname), os.path.join(target_path, dirname)
486-
)
482+
shutil.copy(pathlib.Path(source_path) / fname, target_path / dirname)
487483

488484

489485
if __name__ == "__main__":

0 commit comments

Comments
 (0)