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

Kickstarting v1 Development & Repository Restructuring #151

Open
imanshafiei540 opened this issue Feb 5, 2025 · 0 comments
Open

Kickstarting v1 Development & Repository Restructuring #151

imanshafiei540 opened this issue Feb 5, 2025 · 0 comments
Assignees

Comments

@imanshafiei540
Copy link
Collaborator

Context

We are transitioning earthdaily-python-client from v0to v1 while ensuring long-term support for previous versions.

The goal is to establish a structured workflow, migrate existing functionality, and introduce a modular architecture that supports all of our services like platform, agriculture, ordering, and etc.

To maintain backward compatibility, there will be a major version bump to v1 to make sure all the v0 users are not going to be affected.

We will move the v0 implementation to the agriculture (naming TBD) optional dependency, all of the functionalities will be the same and this will allow us to refine and improve the agriculture service later in future releases of v1.

Objectives

✅ A stable repository structure for `v1` to support different services could be added and removed.
✅ Migrate existing v0 features to the `agriculture` dependency. This will allow `v0` users to migrate to `v1` more easily.
✅ Establish versioning & tagging for `lts/beta/stable` releases (PEP 440 for beta releases).
✅ Set up deployment workflow to PyPi.
✅ Refactor for modularity without breaking existing functionality

Needs to be done

1️⃣ Repository & Branching Setup

  • Create lts/0.x branch for ongoing support of v0
  • Create beta/1.x branch for active v1 development.
  • Establish release/1.x for pre-release finalization.

2️⃣ Migrating v0 to Agriculture Module

  • Move v0 codebase into agriculture/
  • Ensure everything works without breaking existing functionality.
  • Decide on future refactoring once v1 stabilizes.

3️⃣ Versioning & Releases

  • Follow PEP 440 for beta releases (v1.0.0b1, v1.0.0b2, etc.)
  • Manually tag releases as needed.
  • Prepare the first beta release (v1.0.0b1)

4️⃣ Deployment to PyPi

  • Configure deployment workflow to push pre-releases to PyPi

5️⃣ New Repository Structure

earthdaily-python-client/
│
├── __init__.py
├── _api_requester.py
├── _auth_client.py
├── _downloader.py
├── _eds_client.py
├── _eds_config.py
├── _eds_models.py
├── _http_client.py
├── _uploader.py
├── _zipper.py
├── exceptions.py
│
└── platform/
    ├── __init__.py
    ├── _search.py
    ├── ...
    └── models.py
└── agriculture/  (🚀 v0)
    ├── __init__.py
    ├── _parallel_search.py
    ├── _scales_collections.py
    ├── ...
    └── models.py

🔔 Note

The agriculture module will initially house the v0 implementation as an optional dependency, ensuring no immediate breaking changes. Future improvements can be made iteratively.

Examples

Current (v0)

from earthdaily import EarthDataStore

eds = EarthDataStore()

eds.explore(...)
eds.search(...)

Future (v1)

from earthdatastore import EDSClient, EDSConfig

config = EDSConfig()
eds = EDSClient(config)

eds.explore(...)
eds.agriculture.search(...)

🔔 Note

With this approach, we can ensure a smooth migration while enabling modular enhancements in v1 for all other earthdaily services.

Feedback & Suggestions

This issue serves as the foundation for v1 development. If you have any suggestions, improvements, or concerns, please feel free to comment below.

⚠️ Naming & Finalization Notice

All folder names, class names, method names, and API structures are subject to change. We will finalize these details with the marketing team before releasing the stable version to ensure consistency and alignment with product branding.

Next Steps

📌 Discuss and finalize this structure before implementation.
📌 Align on the first milestone for v1 (v1.0.0b1).

cc: @nkarasiak

Thank you!

🚀 🚀 🚀

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

No branches or pull requests

1 participant