{"id":18286411,"url":"https://github.com/kamilrybacki/basicpythonproject","last_synced_at":"2026-01-29T03:39:38.613Z","repository":{"id":183168753,"uuid":"669718569","full_name":"kamilrybacki/BasicPythonProject","owner":"kamilrybacki","description":"My template for Python projects","archived":false,"fork":false,"pushed_at":"2024-09-29T19:13:38.000Z","size":287,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-02T16:22:31.732Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Makefile","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kamilrybacki.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-07-23T07:45:52.000Z","updated_at":"2024-09-29T19:13:41.000Z","dependencies_parsed_at":"2025-04-09T06:37:32.768Z","dependency_job_id":null,"html_url":"https://github.com/kamilrybacki/BasicPythonProject","commit_stats":null,"previous_names":["kamilrybacki/basicpythonproject"],"tags_count":0,"template":true,"template_full_name":null,"purl":"pkg:github/kamilrybacki/BasicPythonProject","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kamilrybacki%2FBasicPythonProject","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kamilrybacki%2FBasicPythonProject/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kamilrybacki%2FBasicPythonProject/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kamilrybacki%2FBasicPythonProject/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kamilrybacki","download_url":"https://codeload.github.com/kamilrybacki/BasicPythonProject/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kamilrybacki%2FBasicPythonProject/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28862126,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-28T22:56:21.783Z","status":"online","status_checked_at":"2026-01-29T02:00:06.714Z","response_time":59,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-05T13:20:03.228Z","updated_at":"2026-01-29T03:39:38.581Z","avatar_url":"https://github.com/kamilrybacki.png","language":"Makefile","readme":"# Basic Python Project\n\n\u003cimg\n    src=\"https://raw.githubusercontent.com/kamilrybacki/BasicPythonProject/media/banner.webp\"\n    alt=\"Basic Python Project\"\n    width=\"100%\"\n/\u003e\n\n## Overview\n\nThis project is a basic Python application designed to provide a template for building Python-based projects. It includes essential configurations for code linting, testing, and dependency management. The repository is structured to facilitate easy project setup and maintain good coding practices.\n\n## Project Structure\n\n```bash\n..\n│\n├── LICENSE # License file for the project\n├── README.md # Project README file\n├── .gitignore # Specifies files and directories to be ignored by Git\n├── pyproject.toml # PEP 518 configuration file for PEP 517 build system\n├── .pre-commit-config.yaml # Configuration file for pre-commit hooks\n├── Makefile # Makefile for common project tasks\n├── src/\n│ └── main.py # Main Python source file\n├── tests/ # Directory for test files\n└── .github/\n  └── workflows/\n    └── lint-code.yml # GitHub Actions workflow for code linting\n    └── requirements.txt # List of dependencies for project utilities (for local and CI use)\n```\n\n### Package dependencies\n\nThe package dependencies are managed using the `pyproject.toml` file. This file defines the following types of dependencies:\n\n- **Main package dependencies**: Packages required for the main application (*project.dependencies*),\n- **Development dependencies**: Packages required for development and testing purposes (*project.optional_dependencies.develop*),\n- **Test suite dependencies**: Packages required for running tests (*project.optional_dependencies.test*),\n- **Documentation dependencies**: Packages required for generating documentation (*project.optional_dependencies.docs*).\n\nTo install explicitly one or more of these dependencies, use the following command:\n\n```bash\nflit install --deps=\u003cdependency_type\u003e\n```\n\n## Getting Started\n\n### Prerequisites\n\n- Python 3.12 or higher\n- `pip` (Python package installer)\n\n### Installation\n\n1. **Clone the repository:**\n\n   ```bash\n   git clone https://github.com/yourusername/BasicPythonProject.git\n   cd BasicPythonProject\n   ```\n\n2. Run the `setup-project` script to set up the project:\n\n   ```bash\n   make setup-project\n   ```\n\n   This script will install the project dependencies and set up the pre-commit hooks.\n\n### Running the Application\n\nTo run the main application script:\n\n```bash\npython src/main.py\n```\n\n## Code Quality and Linting\n\n- **Ruff**: Ruff is a Python project template that includes several tools for code quality and linting, \n- **Mypy** is used for static type checking.\n\nTo run linters manually:\n\n```bash\nmake lint\n```\n\n## Code Quality Standards\n\nThe project enforces several code quality standards to ensure consistent and high-quality code.\nThe standards are defined through the use of tools such as Flake8, Pylint, and Mypy.\nIn other cases - the official Python style guide (PEP 8) is followed.\n\nBelow are the details of the enforced standards:\n\n## Ruff\n\n```ini\n[tool.ruff]\ntarget-version = \"py312\"  # Target Python version is 3.12\nline-length = 120  # Maximum line length increased to 120\ntab-size = 4  # Indentation width is set to 4 spaces\n\n[tool.ruff.format]\nindent-style = \"space\"  # Indentation style is set to spaces instead of tabs\nquote-style = \"double\"  # Double quotes are used for strings\n\n[tool.ruff.lint]\nfixable = [\"ALL\"]\nignore = [  # Ignored linting rules\n    \"D100\",  # missing-module-docstring\n    \"D101\",  # missing-class-docstring\n    \"D102\",  # missing-function-docstring\n    \"D103\",  # missing-function-docstring\n    \"F401\",  # Unused imports (can be adjusted based on need)\n]\n\nselect = [\"C90\", \"I\", \"E\", \"F\", \"N\", \"B\", \"A\", \"Q\", \"W\", \"RUF\". \"TID\"]  # Selected linting rules\nexclude = [\"env/\", \"build/\"]\n\n[tool.ruff.lint.mccabe]\nmax-complexity = 5  # Maximum cyclomatic complexity set to 5\n\n[tool.ruff.lint.isort]\nforce-wrap-aliases = true  # Force wrapping of import aliases\n\n[tool.ruff.lint.flake8-quotes]\ndocstring-quotes = \"double\"  # Double quotes for docstrings\n\n[tool.ruff.lint.flake8-tidy-imports]\nban-relative-imports = \"all\"  # Ban all relative imports - use absolute imports\n```\n\nThe selected linting rules are:\n\n- **(C90)** *mccabe*: Cyclomatic complexity\n- **(I)** *isort*: Import sorting\n- **(E)** *pycodestyle*: PEP 8 style guide violations (errors)\n- **(F)** *pyflakes*: Logical errors in code\n- **(N)** *pep8-naming*: Naming conventions\n- **(B)** *flake8-bugbear*: Additional checks for common issues\n- **(A)** *flake8-builtins*: Checks for Python built-in shadowing\n- **(Q)** *flake8-quotes*: Quote consistency\n- **(W)** *pylint*: Code quality and style guide violations (warnings)\n- **(RUF)** *ruff*: Ruff-specific rules\n- **(TID)** *flake8-tidy-imports*: Import sorting and grouping\n\n### Mypy\n\nMypy is used for type checking to ensure that the code adheres to the specified type annotations. The `mypy.ini` file includes:\n\n- **Python Version**: The code is checked against Python version 3.12.\n- **Exclusions**: Directories like `env/` and `build/` are excluded from type checking.\n\n```ini\n  disallow_untyped_defs = true  # Disallow untyped function definitions\n  disallow_any_unimported = true  # Disallow unimported modules\n  no_implicit_optional = true  # Disallow implicit Optional\n  check_untyped_defs = true  # Check untyped definitions\n  warn_unused_ignores = true  # Warn about unused # type: ignore comments\n  warn_return_any = true  # Warn about missing return type annotations\n  show_error_codes = true  # Show error codes in error messages\n```\n\nThese configurations help maintain a clean, readable, and consistent codebase while ensuring compliance with specified coding standards.\n\n## Continuous Integration\n\nThe project includes a GitHub Actions workflow (`.github/workflows/lint-code.yml`) to automatically lint code on every push or pull request.\n\nAdditionally, the project includes a GitHub Actions workflow (`.github/workflows/test-code.yml`) to automatically run tests on every push or pull request.\n\n## License\n\nThis project is licensed under the MIT License. See the [LICENSE] file for details.\n\n[`.github/workflows/requirements.txt` file]: .github/workflows/requirements.txt\n[LICENSE]: LICENSE\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkamilrybacki%2Fbasicpythonproject","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkamilrybacki%2Fbasicpythonproject","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkamilrybacki%2Fbasicpythonproject/lists"}