Skip to content
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

fix conflicting use of datetime.datetime and datetime.timedelta #106

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

Conversation

MarritL
Copy link

@MarritL MarritL commented Feb 26, 2025

Fix:
self.ifgram_dir, self.pairs = self.get_interferogram_pairs()
File "/home/mambauser/tools/MiaplPy/src/miaplpy/miaplpyApp.py", line 436, in get_interferogram_pairs
one_years = fb.find_one_year_interferograms(self.date_list)
File "/opt/conda/lib/python3.10/site-packages/miaplpy/find_short_baselines.py", line 260, in find_one_year_interferograms
dates = np.array([datetime.datetime.strptime(date, '%Y%m%d') for date in date_list])
File "/opt/conda/lib/python3.10/site-packages/miaplpy/find_short_baselines.py", line 260, in
dates = np.array([datetime.datetime.strptime(date, '%Y%m%d') for date in date_list])
AttributeError: type object 'datetime.datetime' has no attribute 'datetime

The file has an import of import datetime.datetime and in function 'find_shortbaseline.py' it assumed an import of only the package datetime, hence the use of datetime.datetime.strptime returned an AttributeError. The same counts for datetime.timedelta (because the imported datetime.datetime has no attribute timedelta).

Summary by Sourcery

Bug Fixes:

  • Fixes an AttributeError caused by the incorrect usage of datetime.datetime and datetime.timedelta within the find_short_baselines.py module. The code was assuming an import of only the datetime package, but was referencing datetime.datetime.strptime which caused the error.

…time referres to datetime.datetime and therefore timedelta could not be used without import)
Copy link

sourcery-ai bot commented Feb 26, 2025

Reviewer's Guide by Sourcery

This pull request fixes an AttributeError caused by the conflicting use of datetime.datetime and datetime.timedelta within the find_short_baselines.py file. The original code imported datetime but then incorrectly tried to access datetime.datetime.strptime and datetime.timedelta, leading to the error. The fix involves directly importing datetime and timedelta from the datetime module and using them directly.

Updated class diagram for datetime usage

classDiagram
    class find_short_baselines {
      -dates: np.array
      +find_one_year_interferograms(date_list: list[str])
    }

    note for find_short_baselines.find_one_year_interferograms "Uses datetime.strptime and datetime.timedelta directly after importing them from datetime module."
Loading

File-Level Changes

Change Details Files
Corrected the import statement and usage of datetime and timedelta.
  • Changed the import statement from from datetime import datetime to from datetime import datetime, timedelta.
  • Updated the calls to datetime.datetime.strptime to datetime.strptime.
  • Updated the calls to datetime.timedelta to timedelta.
src/miaplpy/find_short_baselines.py

Tips and commands

Interacting with Sourcery

  • Trigger a new review: Comment @sourcery-ai review on the pull request.
  • Continue discussions: Reply directly to Sourcery's review comments.
  • Generate a GitHub issue from a review comment: Ask Sourcery to create an
    issue from a review comment by replying to it. You can also reply to a
    review comment with @sourcery-ai issue to create an issue from it.
  • Generate a pull request title: Write @sourcery-ai anywhere in the pull
    request title to generate a title at any time. You can also comment
    @sourcery-ai title on the pull request to (re-)generate the title at any time.
  • Generate a pull request summary: Write @sourcery-ai summary anywhere in
    the pull request body to generate a PR summary at any time exactly where you
    want it. You can also comment @sourcery-ai summary on the pull request to
    (re-)generate the summary at any time.
  • Generate reviewer's guide: Comment @sourcery-ai guide on the pull
    request to (re-)generate the reviewer's guide at any time.
  • Resolve all Sourcery comments: Comment @sourcery-ai resolve on the
    pull request to resolve all Sourcery comments. Useful if you've already
    addressed all the comments and don't want to see them anymore.
  • Dismiss all Sourcery reviews: Comment @sourcery-ai dismiss on the pull
    request to dismiss all existing Sourcery reviews. Especially useful if you
    want to start fresh with a new review - don't forget to comment
    @sourcery-ai review to trigger a new review!
  • Generate a plan of action for an issue: Comment @sourcery-ai plan on
    an issue to generate a plan of action for it.

Customizing Your Experience

Access your dashboard to:

  • Enable or disable review features such as the Sourcery-generated pull request
    summary, the reviewer's guide, and others.
  • Change the review language.
  • Add, remove or edit custom review instructions.
  • Adjust other review settings.

Getting Help

Copy link

codeautopilot bot commented Feb 26, 2025

PR summary

This Pull Request addresses an AttributeError caused by conflicting imports of the datetime module in the find_short_baselines.py file. The error occurred because the code attempted to use datetime.datetime.strptime and datetime.timedelta, assuming a direct import of the datetime module, while the actual import was from datetime import datetime. This PR resolves the issue by correctly using datetime.strptime and timedelta directly, aligning with the imported modules. This change ensures that the find_one_year_interferograms function can correctly parse dates and calculate date ranges without encountering attribute errors, improving the reliability of the interferogram pair generation process.

Review Checklist

  • Correct usage of imported modules
  • Resolution of AttributeError
  • Consistency in date handling

Suggestion

Consider adding unit tests for the find_one_year_interferograms function to ensure that date parsing and range calculations are functioning as expected. This will help prevent similar issues in the future and improve the robustness of the codebase.

This comment was generated by AI. Information provided may be incorrect.

Current plan usage: 0%

Have feedback or need help?
Documentation
[email protected]

Copy link

@sourcery-ai sourcery-ai bot left a comment

Choose a reason for hiding this comment

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

Hey @MarritL - I've reviewed your changes - here's some feedback:

Overall Comments:

  • This change fixes the immediate error, but consider whether from datetime import datetime is the correct import statement throughout the codebase.
Here's what I looked at during the review
  • 🟢 General issues: all looks good
  • 🟢 Security: all looks good
  • 🟢 Testing: all looks good
  • 🟢 Complexity: all looks good
  • 🟢 Documentation: all looks good

Sourcery is free for open source - if you like our reviews please consider sharing them ✨
Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.

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.

1 participant