Skip to content

Commit 9e08f32

Browse files
feat: Establish project governance and automation with new GitHub workflows, contribution guides, security policy, issue templates, license, and funding.
1 parent 90b08ab commit 9e08f32

10 files changed

Lines changed: 216 additions & 5 deletions

File tree

.github/FUNDING.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
ko_fi: aaronfredrick
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
name: Bug Report
2+
description: Create a report to help us improve the library
3+
title: "[Bug]: "
4+
labels: ["bug"]
5+
body:
6+
- type: markdown
7+
attributes:
8+
value: |
9+
Thanks for taking the time to report this! Please provide as much detail as possible.
10+
- type: input
11+
id: environment
12+
attributes:
13+
label: Environment
14+
description: Python version, OS, OS Version, `aiohttp` version
15+
placeholder: Python 3.12, Windows 11, aiohttp 3.9
16+
validations:
17+
required: true
18+
- type: textarea
19+
id: description
20+
attributes:
21+
label: Describe the Bug
22+
description: A clear and concise description of what the bug is.
23+
validations:
24+
required: true
25+
- type: textarea
26+
id: steps
27+
attributes:
28+
label: Steps to Reproduce
29+
description: Provide a minimal code snippet or steps that reproduce the problem.
30+
placeholder: |
31+
1. `await api.getBin("my-bin")`
32+
2. `await bin.downloadFile("does_not_exist.txt")`
33+
3. Exception stacktrace...
34+
validations:
35+
required: true
36+
- type: textarea
37+
id: expected
38+
attributes:
39+
label: Expected Behavior
40+
description: A clear and concise description of what you expected to happen.
41+
validations:
42+
required: true

.github/ISSUE_TEMPLATE/config.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
blank_issues_enabled: false
2+
contact_links:
3+
- name: Ask a Question
4+
url: https://github.com/aaron-fredrick/Filebin.py/discussions
5+
about: Please ask and answer questions here.
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
name: Feature Request
2+
description: Suggest an idea for this project
3+
title: "[Feature]: "
4+
labels: ["enhancement"]
5+
body:
6+
- type: markdown
7+
attributes:
8+
value: |
9+
Thanks for taking the time to suggest a feature! Please provide as much detail as possible.
10+
- type: textarea
11+
id: use_case
12+
attributes:
13+
label: Use Case
14+
description: Explain the problem this feature solves.
15+
validations:
16+
required: true
17+
- type: textarea
18+
id: solution
19+
attributes:
20+
label: Proposed Solution
21+
description: Describe how the new feature should work.
22+
validations:
23+
required: true
24+
- type: textarea
25+
id: alternatives
26+
attributes:
27+
label: Alternatives Considered
28+
description: Any other approaches or existing workarounds?
29+
validations:
30+
required: false

.github/workflows/codeql.yml

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
name: "CodeQL"
2+
3+
on:
4+
push:
5+
branches: [ "main" ]
6+
pull_request:
7+
branches: [ "main" ]
8+
schedule:
9+
- cron: '21 9 * * 2'
10+
11+
jobs:
12+
analyze:
13+
name: Analyze (${{ matrix.language }})
14+
runs-on: 'ubuntu-latest'
15+
permissions:
16+
security-events: write
17+
packages: read
18+
actions: read
19+
contents: read
20+
21+
strategy:
22+
fail-fast: false
23+
matrix:
24+
include:
25+
- language: python
26+
build-mode: none
27+
28+
steps:
29+
- name: Checkout repository
30+
uses: actions/checkout@v4
31+
32+
- name: Initialize CodeQL
33+
uses: github/codeql-action/init@v3
34+
with:
35+
languages: ${{ matrix.language }}
36+
build-mode: ${{ matrix.build-mode }}
37+
38+
- name: Perform CodeQL Analysis
39+
uses: github/codeql-action/analyze@v3
40+
with:
41+
category: "/language:${{matrix.language}}"

.github/workflows/release.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@ jobs:
7171

7272
permissions:
7373
id-token: write # Required for OIDC trusted publishing
74+
contents: write # Required for creating GitHub Releases
7475

7576
steps:
7677
- name: Download build artifacts
@@ -81,3 +82,8 @@ jobs:
8182

8283
- name: Publish to PyPI (Trusted Publishing)
8384
uses: pypa/gh-action-pypi-publish@release/v1
85+
86+
- name: Publish to GitHub Release
87+
uses: softprops/action-gh-release@v2
88+
with:
89+
files: dist/*

CONTRIBUTING.md

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
# Contributing to Filebin.py
2+
3+
First off, thanks for taking the time to contribute! 🎉
4+
5+
## Development Setup
6+
7+
1. **Fork and Clone** the repository.
8+
2. **Install dependencies** (in a virtual environment):
9+
```bash
10+
pip install -e ".[dev]"
11+
```
12+
13+
## Workflow
14+
15+
- **Branching**: Create a feature branch from `main`.
16+
- **Code Style**: We use `ruff` to enforce code quality and formatting.
17+
* Before committing, format and lint your code:
18+
```bash
19+
ruff check Filebin/ tests/ --fix
20+
```
21+
- **Testing**: Ensure all tests pass.
22+
* Run offline unit tests:
23+
```bash
24+
pytest -m "not network"
25+
```
26+
* Run full integration tests (requires network access):
27+
```bash
28+
pytest
29+
```
30+
- **Commit Messages**: Write clear, concise commit messages.
31+
32+
## Pull Requests
33+
34+
1. Submit a PR against the `main` branch.
35+
2. The CI workflow will automatically run `ruff` and the offline unit tests.
36+
3. Once the CI passes and the PR is approved, it will be merged.
37+
38+
## Code of Conduct
39+
40+
Please note that this project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms.

LICENSE

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
MIT License
2+
3+
Copyright (c) 2024 Aaron Fredrick
4+
5+
Permission is hereby granted, free of charge, to any person obtaining a copy
6+
of this software and associated documentation files (the "Software"), to deal
7+
in the Software without restriction, including without limitation the rights
8+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9+
copies of the Software, and to permit persons to whom the Software is
10+
furnished to do so, subject to the following conditions:
11+
12+
The above copyright notice and this permission notice shall be included in all
13+
copies or substantial portions of the Software.
14+
15+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21+
SOFTWARE.

README.md

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,13 @@
11
# Filebin.py
22

3-
[![PyPI](https://img.shields.io/pypi/v/Filebin.py)](https://pypi.org/project/Filebin.py/)
4-
[![License](https://img.shields.io/badge/license-MIT-blue.svg)](https://opensource.org/licenses/MIT)
5-
[![CI](https://github.com/aaron-fredrick/Filebin.py/actions/workflows/ci.yml/badge.svg)](https://github.com/aaron-fredrick/Filebin.py/actions/workflows/ci.yml)
6-
[![Python](https://img.shields.io/pypi/pyversions/Filebin.py)](https://pypi.org/project/Filebin.py/)
7-
![Status](https://img.shields.io/badge/status-alpha-orange)
3+
<div align="center">
4+
5+
[![PyPI status](https://img.shields.io/pypi/v/Filebin.py?style=flat-square)](https://pypi.org/project/Filebin.py/)
6+
[![CI status](https://github.com/aaron-fredrick/Filebin.py/actions/workflows/ci.yml/badge.svg?style=flat-square)](https://github.com/aaron-fredrick/Filebin.py/actions/workflows/ci.yml)
7+
[![CodeQL status](https://github.com/aaron-fredrick/Filebin.py/actions/workflows/codeql.yml/badge.svg?style=flat-square)](https://github.com/aaron-fredrick/Filebin.py/actions/workflows/codeql.yml)
8+
[![License status](https://img.shields.io/badge/license-MIT-blue.svg?style=flat-square)](https://opensource.org/licenses/MIT)
9+
10+
</div>
811

912
An async Python library and CLI for [Filebin.net](https://filebin.net) — upload, download, and manage file bins programmatically or from your terminal.
1013

@@ -215,3 +218,10 @@ ruff check Filebin/ tests/
215218
## License
216219

217220
MIT © [Aaron Fredrick](https://github.com/aaron-fredrick)
221+
222+
---
223+
224+
## 💖 Support the Project
225+
If you find Filebin.py useful, please consider supporting its development:
226+
227+
[![ko-fi](https://ko-fi.com/img/githubbutton_sm.svg)](https://ko-fi.com/aaronfredrick)

SECURITY.md

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
# Security Policy
2+
3+
## Supported Versions
4+
5+
Currently, the `main` branch and the latest published `v0.x.x` version are supported with security updates.
6+
7+
| Version | Supported |
8+
| ------- | ------------------ |
9+
| v0.1.x | :white_check_mark: |
10+
| < 0.1.0 | :x: |
11+
12+
## Reporting a Vulnerability
13+
14+
Please do not open a public issue. Security vulnerabilities should be reported directly to `Aaron_Fredrick@proton.me`.
15+
We will aim to acknowledge receipt of your vulnerability report within 48 hours. If the vulnerability is accepted, we will coordinate a fix and an advisory.

0 commit comments

Comments
 (0)