-
Notifications
You must be signed in to change notification settings - Fork 692
feat: Add Conda environment configuration for easier development setup #203
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
base: main
Are you sure you want to change the base?
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull request overview
This PR introduces a Conda environment configuration file to simplify the development setup process by providing pre-compiled binaries for complex dependencies with C/C++ extensions.
- Adds
environment.ymlwith a hybrid Conda/pip approach for dependency management - Uses Conda for binary dependencies (faiss-cpu, grpcio, psycopg) and pip for fast-moving AI SDKs
- Updates README to recommend using Conda/Mamba for development setup
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated no comments.
| File | Description |
|---|---|
| environment.yml | New Conda environment configuration specifying Python 3.10, binary dependencies via conda-forge, and AI SDKs via pip |
| README.md | Updated contributing section to recommend Conda/Mamba for development environment setup |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
|
Thanks for this contribution. Conda is a powerful tool and we are evaluating this PR internally. I am curious, did you have issues getting setup with uv? |
Thanks so much for the contribution! 🙌 This is definitely a nice-to-have improvement and we appreciate the effort you put into making the development setup smoother. However, as part of our new feature request policy, we need to collect community votes (at least 3 developers raising the same need) before merging changes that affect the project setup or tooling. To follow the process, we’re moving this into an open issue #212 so others can provide feedback and upvote. Once we gather enough signals, we can revisit and proceed accordingly. |
I personally didn't have any issues with my setup using uv, and I agree that uv is an excellent, incredibly fast dependency resolver and package manager. The motivation for this PR wasn't to solve my own setup problems. I found this interesting project while browsing trending, and noticed the reliance on dependencies with complex C/C++ extensions. Conda, as a mature environment manager that provides pre-compiled binaries for these complex dependencies (especially for packages like faiss-cpu and grpcio), significantly enhances the stability and success rate of development environment setup for new contributors across different operating systems. I was happy to spend some time making this contribution, and I hope it helps streamline the process for future developers : ) |
Thank you for the detailed feedback and for appreciating the contribution! I completely understand and respect the policy to gather community consensus for changes affecting the core project setup and tooling. I'm happy to see it moved to Issue #212. I will monitor that issue closely. |
📝 Description
This PR adds an environment.yml file to the repository to streamline the development setup process.
🚀 Motivation
The project currently depends on several libraries with complex C/C++ extensions, such as faiss-cpu, grpcio, and psycopg. Installing these purely via pip can sometimes lead to build errors depending on the operating system and system-level libraries.
Using Conda provides pre-compiled binaries for these core dependencies, making the setup significantly more stable and faster for contributors.
🛠 Implementation Details
I have created the environment.yml based on the current pyproject.toml with a hybrid approach:
Conda (conda-forge): Used for heavy binary dependencies (e.g., faiss-cpu, numpy, grpcio, psycopg) to ensure stability.
Pip: Used for:
Fast-moving AI SDKs (e.g., xai-sdk, langchain-*, google-genai) to ensure we get the latest versions from PyPI.
Installing the package itself in editable mode (-e .).