Skip to content

Commit

Permalink
build(sage_imap): update project structure and configs
Browse files Browse the repository at this point in the history
- Remove legacy config files (.flake8, .pylintrc, mypy.ini, setup files)
- Update .gitignore, .pre-commit-config.yaml, .readthedocs.yaml
- Add CODE_OF_CONDUCT.md and tox.ini
- Modify dependency files (poetry.lock, pyproject.toml)
- Update sage_imap and stubs for compatibility
  • Loading branch information
MohmdFo committed Oct 26, 2024
1 parent 20e456f commit 5ed33dd
Show file tree
Hide file tree
Showing 26 changed files with 742 additions and 564 deletions.
4 changes: 0 additions & 4 deletions .flake8

This file was deleted.

9 changes: 9 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -151,6 +151,15 @@ dmypy.json
# pytype static type analyzer
.pytype/

# local files
run.py
*/run.py
sage.py
*/sage.py

# ruff
.ruff_cache/

# Cython debug symbols
cython_debug/

Expand Down
65 changes: 56 additions & 9 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,34 +3,81 @@ repos:
rev: v4.3.0
hooks:
- id: trailing-whitespace
exclude: (migrations/|tests/|docs/|static/|media/).*
- id: end-of-file-fixer
exclude: (migrations/|tests/|docs/|static/|media/).*
- id: check-added-large-files
exclude: (migrations/|tests/|docs/|static/|media/).*
- id: check-case-conflict
exclude: (migrations/|tests/|docs/|static/|media/).*
- id: check-merge-conflict
exclude: (migrations/|tests/|docs/|static/|media/).*
- id: check-docstring-first

- repo: https://github.com/psf/black
rev: 23.3.0
hooks:
- id: black
exclude: docs/
exclude: (migrations/|tests/|docs/|static/|media/).*

- repo: https://github.com/pre-commit/mirrors-isort
rev: v5.10.1
hooks:
- id: isort
exclude: docs/
exclude: (migrations/|tests/|docs/|static/|media/).*

- repo: https://github.com/psf/black
rev: 23.3.0
hooks:
- id: black
args: ["--config=pyproject.toml"]
exclude: (migrations/|tests/|docs/|static/|media/).*

- repo: https://github.com/pre-commit/mirrors-mypy
rev: v0.991
hooks:
- id: mypy
args: ["--config-file=mypy.ini"]
exclude: ^(docs/|stubs/|tests/)
args: ["--config-file=pyproject.toml"]
exclude: (migrations/|tests/|docs/|static/|media/).*

- repo: https://github.com/commitizen-tools/commitizen
rev: v3.28.0
hooks:
- id: commitizen
exclude: (migrations/|tests/|docs/|static/|media/).*

- repo: https://github.com/PyCQA/bandit
rev: 1.7.4
hooks:
- id: bandit
args: ["-c", "pyproject.toml", "-r", "."]
additional_dependencies: [ "bandit[toml]" ]
exclude: (migrations/|tests/|docs/|static/|media/).*

- repo: https://github.com/codespell-project/codespell
# Configuration for codespell is in .codespellrc
rev: v2.2.6
hooks:
- id: codespell
exclude: locale|kickstarter-announcement.md|coreapi-0.1.1.js

- repo: local
hooks:
- id: pytest
name: Pytest
entry: poetry run pytest -v
language: system
types: [python]
stages: [commit]
pass_filenames: false
always_run: true

- id: pylint
name: pylint
entry: pylint
language: system
types: [python]
require_serial: true
args:
- "-rn"
- "-sn"
- "--rcfile=pyproject.toml"
files: ^sage_sms/

ci:
skip: [pylint]
13 changes: 0 additions & 13 deletions .pylintrc

This file was deleted.

2 changes: 1 addition & 1 deletion .readthedocs.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -29,4 +29,4 @@ sphinx:
# See https://docs.readthedocs.io/en/stable/guides/reproducible-builds.html
python:
install:
- requirements: requirements.txt
- requirements: requirements/dev.txt
166 changes: 166 additions & 0 deletions CODE_OF_CONDUCT.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,166 @@
## Contribution Guidelines

Thank you for your interest in contributing to our package! This document outlines the tools and steps to follow to ensure a smooth and consistent workflow.

## Contribution Workflow

1. **Fork and Clone**: Fork the repository and clone it to your local machine.
```bash
git clone https://github.com/sageteamorg/python-sage-imap.git
cd python-sage-imap
```

2. **Create a Branch**: Create a new branch for your feature or bugfix.
```bash
git checkout -b feature/your-feature-name
```

3. **Install Dependencies**: Use Poetry to install dependencies.
```bash
poetry install
```

4. **Write Code and Tests**: Make your changes and write tests for your new code.

5. **Run Code Quality Checks**: Ensure code quality with pre-commit, Ruff, and Pylint.
```bash
ruff check .
ruff check --fix
```

6. **Run Tests**: Ensure all tests pass using Poetry.
```bash
poetry run pytest
```

7. **Commit Changes**: Use Commitizen to commit your changes.
```bash
cz commit
```

8. **Push and Create a PR**: Push your changes and create a pull request.
```bash
git push origin feature/your-feature-name
```

9. **Bump Version**: Use Commitizen to bump the version.
```bash
cz bump
```

10. **Generate Changelog**: Use Commitizen to generate the changelog.
```bash
cz changelog
```

11. **Export Dependencies**: Export dependencies for development and production.
```bash
poetry export -f requirements.txt --output packages/requirements.txt --without-hashes
poetry export -f requirements.txt --dev --output packages/requirements-dev.txt --without-hashes
```

## Commitizen Message Rule

Commitizen follows the Conventional Commits specification. The commit message should be structured as follows:

```
<type>[optional scope]: <description>

[optional body]

[optional footer(s)]
```
Here are 10 examples of commit messages following the Commitizen Conventional Commits specification:
### 1. Initialization of core
```
feat(core): initialize the core module

- Set up the core structure
- Added initial configurations and settings
- Created basic utility functions
```
### 2. Release with build and tag version
```
chore(release): build and tag version 1.0.0

- Built the project for production
- Created a new tag for version 1.0.0
- Updated changelog with release notes
```
### 3. Adding a new feature
```
feat(auth): add user authentication

- Implemented user login and registration
- Added JWT token generation and validation
- Created middleware for protected routes
```
### 4. Fixing a bug
```
fix(api): resolve issue with data fetching

- Fixed bug causing incorrect data responses
- Improved error handling in API calls
- Added tests for the fixed bug
```
### 5. Update a doc (Sphinx)
```
docs(sphinx): update API documentation

- Updated the Sphinx documentation for API changes
- Added examples for new endpoints
- Fixed typos and formatting issues
```
### 6. Update dependencies (packages)
```
chore(deps): update project dependencies

- Updated all outdated npm packages
- Resolved compatibility issues with new package versions
- Ran tests to ensure no breaking changes
```
### 7. Update version for build and publish
```
chore(version): update version to 2.1.0 for build and publish

- Incremented version number to 2.1.0
- Updated package.json with the new version
- Prepared for publishing the new build
```
### 8. Adding unit tests
```
test(auth): add unit tests for authentication module

- Created tests for login functionality
- Added tests for registration validation
- Ensured 100% coverage for auth module
```
### 9. Refactoring codebase
```
refactor(core): improve code structure and readability

- Refactored core module to enhance readability
- Extracted utility functions into separate files
- Updated documentation to reflect code changes
```
### 10. Improving performance
```
perf(parser): enhance parsing speed

- Optimized parsing algorithm for better performance
- Reduced the time complexity of the parsing function
- Added benchmarks to track performance improvements
```
These examples cover various types of commits such as feature additions, bug fixes, documentation updates, dependency updates, versioning, testing, refactoring, and performance improvements.
18 changes: 16 additions & 2 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,13 @@ Thank you for considering contributing to `python-sage-imap`! We welcome contrib

## Table of Contents

- [Contributing to pyhton-sage-imap](#contributing-to-python-sage-imap)
- [Contributing to python-sage-imap](#contributing-to-python-sage-imap)
- [Table of Contents](#table-of-contents)
- [Getting Started](#getting-started)
- [Running Tests](#running-tests)
- [Code Style](#code-style)
- [Security Checks](#security-checks)
- [Running Bandit](#running-bandit)
- [Pre-commit Hooks](#pre-commit-hooks)
- [Setting Up Pre-commit Hooks](#setting-up-pre-commit-hooks)
- [Submitting a Pull Request](#submitting-a-pull-request)
Expand All @@ -25,7 +27,7 @@ Thank you for considering contributing to `python-sage-imap`! We welcome contrib

```bash
git clone https://github.com/your-username/python-sage-imap.git
cd pyhton-sage-imap
cd python-sage-imap
```

3. **Install dependencies using Poetry**:
Expand Down Expand Up @@ -68,6 +70,18 @@ poetry run flake8
poetry run pylint django_sage_email
```

## Security Checks

We use `bandit` to perform security checks on our codebase. Bandit helps identify common security issues in Python code.

### Running Bandit

To run Bandit with the current configuration:

```bash
poetry run bandit -c pyproject.toml
```

## Pre-commit Hooks

We use `pre-commit` to ensure code quality and consistency. Pre-commit hooks will run automatically before each commit to check and format the code.
Expand Down
5 changes: 5 additions & 0 deletions CONTRIBUTORS.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,11 @@ We would like to thank the following people for their contributions to the `pyth
- Email: [email protected]
- Contributions: Project creator and lead maintainer.

- **Mohammad Fotouhi**
- GitHub: [github-mohammad](https://github.com/MohmdFo)
- Email: [email protected]
- Contributions: Core contributor.

---

To be added to this list, please contribute to the project by submitting a pull request, opening issues, or helping improve the documentation. We appreciate all contributions, big and small!
Expand Down
10 changes: 0 additions & 10 deletions mypy.ini

This file was deleted.

Loading

0 comments on commit 5ed33dd

Please sign in to comment.