-
Notifications
You must be signed in to change notification settings - Fork 25
Expand file tree
/
Copy pathdcos
More file actions
163 lines (125 loc) · 4.49 KB
/
dcos
File metadata and controls
163 lines (125 loc) · 4.49 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
# Contributing to Forge
Thank you for considering contributing to Forge! This document provides guidelines and instructions for contributing to the project.
## Table of Contents
- [Contributing to Forge](#contributing-to-forge)
- [Table of Contents](#table-of-contents)
- [Code of Conduct](#code-of-conduct)
- [Getting Started](#getting-started)
- [Development Workflow](#development-workflow)
- [Pull Request Process](#pull-request-process)
- [Coding Standards](#coding-standards)
- [Testing](#testing)
- [Documentation](#documentation)
- [Issue Reporting](#issue-reporting)
- [Release Process](#release-process)
- [Thank You!](#thank-you)
## Code of Conduct
By participating in this project, you agree to uphold our Code of Conduct:
- Use welcoming and inclusive language
- Be respectful of differing viewpoints and experiences
- Gracefully accept constructive criticism
- Focus on what is best for the community
- Show empathy towards other community members
## Getting Started
1. **Fork the repository** on GitHub
2. **Clone your fork** locally:
```bash
git clone https://github.com/YOUR-USERNAME/forge.git
cd forge
```
3. **Set up the development environment**:
```bash
# Create and activate virtual environment
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# Install dependencies
pip install -r requirements.txt
# Install development dependencies
pip install -r requirements-dev.txt
```
4. **Add the upstream repository**:
```bash
git remote add upstream https://github.com/originalowner/forge.git
```
## Development Workflow
1. **Create a branch** for your feature or bugfix:
```bash
git checkout -b feature/your-feature-name
# or
git checkout -b fix/issue-you-are-fixing
```
2. **Make your changes** and commit them with clear, descriptive commit messages:
```bash
git add .
git commit -m "Add feature: concise description of changes"
```
3. **Keep your branch updated** with the upstream repository:
```bash
git fetch upstream
git rebase upstream/main
```
4. **Push your changes** to your fork:
```bash
git push origin feature/your-feature-name
```
## Pull Request Process
1. **Submit a pull request** from your forked repository to the main Forge repository
2. **Describe your changes** in detail, including the issue number if applicable
3. **Update documentation** to reflect any changes you've made
4. **Ensure all tests pass** and add new tests for new functionality
5. **Request a review** from a maintainer
6. **Address review feedback** and make requested changes
7. **Once approved**, a maintainer will merge your PR
## Coding Standards
We follow Python's PEP 8 style guide with some adjustments:
- Use 4 spaces for indentation
- Maximum line length of 100 characters
- Use docstrings for all public modules, functions, classes, and methods
- Use type hints where appropriate
- Use descriptive variable names
We use pre-commit hooks to ensure code quality. To set up:
```bash
pip install pre-commit
pre-commit install
```
## Testing
We use pytest for testing. Please write tests for new code you create:
```bash
# Run tests
pytest
# Run tests with coverage
pytest --cov=app
```
Guidelines for writing tests:
- Each test should be independent and not rely on the state from previous tests
- Use fixtures for setup and teardown
- Name tests clearly: `test_should_do_something_when_something()`
- Aim for high test coverage of new code
## Documentation
- Update documentation for any changes to functionality
- Use clear, concise language
- Include code examples where helpful
- Keep the README.md up-to-date
- Document API endpoints clearly
## Issue Reporting
When reporting issues, please use the issue templates provided and include:
1. **Steps to reproduce** the problem
2. **Expected behavior**
3. **Actual behavior**
4. **Version information**:
- Forge version
- Python version
- Operating system
- Any other relevant environment details
For feature requests, describe:
1. The problem you're trying to solve
2. Your proposed solution
3. Any alternatives you've considered
## Release Process
For maintainers only:
1. Update the version in setup.py and app/version.py
2. Update the CHANGELOG.md
3. Create a new GitHub release with release notes
4. Push a new tag matching the version number
## Thank You!
Your contributions are what make the open-source community such an amazing place to learn, inspire, and create. Any contributions you make are **greatly appreciated**.