bigquery_metadata_generator / CONTRIBUTING.md
MrHoosk's picture
Add initial unit tests and utility modules for Schema Descriptor application
1521ef5
# Contributing to Schema Descriptor
Thank you for your interest in contributing to Schema Descriptor! This document provides guidelines and instructions for contributing to this project.
## Table of Contents
- [Code of Conduct](#code-of-conduct)
- [Getting Started](#getting-started)
- [Development Environment](#development-environment)
- [Making Changes](#making-changes)
- [Testing](#testing)
- [Pull Request Process](#pull-request-process)
- [Known Issues](#known-issues)
## Code of Conduct
Please be respectful and considerate when contributing to this project. Treat others as you would like to be treated.
## Getting Started
1. Fork the repository on GitHub
2. Clone your fork locally
3. Add the original repository as a remote named "upstream"
```
git remote add upstream https://github.com/original/schema_descriptor.git
```
4. Create a new branch for your changes
```
git checkout -b feature/your-feature-name
```
## Development Environment
### Setting Up
1. Create a virtual environment:
```
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
```
2. Install dependencies in the correct order:
```
# Install key dependencies with specific versions first
pip install protobuf==3.20.3
pip install altair==4.2.2
pip install streamlit==1.12.0
pip install openai==0.28.0
# Install remaining packages
pip install -r requirements.txt --no-deps
# Install test dependencies
pip install -r requirements-test.txt
```
### Dependency Management
This project has strict dependency constraints:
- **protobuf**: Must be exactly 3.20.3 for compatibility with both Streamlit and Google libraries
- **altair**: Must be 4.2.2 for compatibility with Streamlit 1.12.0
- **streamlit**: Version 1.12.0 is used in this project
- **openai**: Version 0.28.0 is compatible with our API integration
If you need to add a new dependency, please verify it doesn't conflict with these constraints before submitting a PR.
## Making Changes
1. Make your changes in your feature branch
2. Follow the existing code style:
- Use meaningful variable and function names
- Add docstrings to functions
- Follow PEP 8 guidelines
3. Keep changes focused on a single issue or feature
## Testing
Run the test suite before submitting changes:
```
python tests/run_tests.py
```
Note: Some tests may currently fail due to ongoing development. See the [Known Issues](#known-issues) section.
If you add new functionality, please also add appropriate tests.
## Pull Request Process
1. Update your fork to include the latest changes from upstream:
```
git fetch upstream
git merge upstream/main
```
2. Ensure your code passes the tests and linting
3. Create a pull request with:
- A clear title
- A description of the changes
- Reference to any issues it addresses
4. Wait for review and be prepared to address feedback
## Known Issues
The following issues are currently known and being worked on:
1. **Test failures**: Several tests in the test suite are currently failing due to:
- Mocking issues with BigQuery Service
- LLM Service test inconsistencies
2. **Dependency conflicts**: The project has strict dependency requirements to maintain compatibility between Streamlit, BigQuery, and OpenAI libraries.
If you encounter these issues, please refer to this section before submitting a bug report.
Thank you for contributing!