Skip to content

REF: Replace os.path with pathlib.Path in pandas_web.py #61604

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

iabhi4
Copy link
Contributor

@iabhi4 iabhi4 commented Jun 7, 2025

Replaces os.path with pathlib.Path in pandas_web.py, as suggested by @datapythonista in 61578. No functional changes, verified site generation remains correct

  • Ran pre-commit check

Copy link
Member

@datapythonista datapythonista left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good, but we need to make everything that is a path a pathlib object when it's first created. Not create it as a string and cast it for every operation.

@@ -100,20 +100,17 @@ def blog_add_posts(context):
posts = []
# posts from the file system
if context["blog"]["posts_path"]:
posts_path = os.path.join(
context["source_path"], *context["blog"]["posts_path"].split("/")
posts_path = pathlib.Path(context["source_path"]) / pathlib.Path(
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think the second one needs to be a pathlib object if tbe first it's already one, it should work if it's a string

@@ -394,7 +391,7 @@ def get_context(config_fname: str, **kwargs):
with open(config_fname, encoding="utf-8") as f:
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Shouldn't config_fname be a pathlib too?

@@ -414,9 +411,9 @@ def get_source_files(source_path: str) -> typing.Generator[str, None, None]:
Generate the list of files present in the source directory.
"""
for root, dirs, fnames in os.walk(source_path):
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If you make source_path a pathlib I don't think you need to convert later.

try:
json.load(f)
except json.JSONDecodeError as e:
raise RuntimeError(
f"Invalid versions.json: {e}. Ensure it is valid JSON."
) from e

config_fname = os.path.join(source_path, "config.yml")
config_fname = pathlib.Path(source_path) / "config.yml"
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You are making source_path a pathlib twice. Ideally we want paths to be a pathlib since they are created. Not create them as str and convert when there is an operation. For everything that is a path, also config_path and others

jinja_env = jinja2.Environment(loader=jinja2.FileSystemLoader(templates_path))

for fname in get_source_files(source_path):
if os.path.normpath(fname) in context["main"]["ignore"]:
if str(pathlib.Path(fname)) in context["main"]["ignore"]:
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think there is an attribute for that, right?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants