Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
2f83c0e
ci: harden security workflows and packaging
skupriienko May 26, 2026
f3cf17f
ci: Remove codeql workflow
skupriienko May 26, 2026
3011d35
chore: trigger empty commit for CI/CD
skupriienko May 26, 2026
1b9aa32
ci: Add codeql workflow, add missign test dependency
skupriienko May 26, 2026
381f1ef
Potential fix for pull request finding 'CodeQL / Workflow does not co…
skupriienko May 26, 2026
4265de0
chore: Add a new line
skupriienko May 26, 2026
7d1ab29
Merge branch 'refine-client' of github-oss-repack:mailjet/mailjet-api…
skupriienko May 26, 2026
1ae37af
test: replace explicit __del__ calls with gc.collect() to resolve Cod…
skupriienko May 26, 2026
fe73904
test: skip heavy property-based tests on CI environments
skupriienko May 26, 2026
840ff4d
test: skip heavy tests
skupriienko May 26, 2026
223ee1a
test: Add backslash
skupriienko May 26, 2026
b27b874
fix: resolve strict mypy unused ignores and callable type arguments o…
skupriienko May 26, 2026
bc783cb
chore: remove unused imports
skupriienko May 26, 2026
8ebdafc
Potential fix for pull request finding 'Empty except'
skupriienko May 26, 2026
0819d8b
Potential fix for pull request finding 'Unused import'
skupriienko May 26, 2026
7075193
chore: Remove __del__ method and tests
skupriienko May 26, 2026
0f36471
docs: Update examples with the usage of context manager
skupriienko May 27, 2026
0360a8e
chore: Remove unused import
skupriienko May 27, 2026
dff848a
perf: Add new perf and boot results to PERFORMANCE.md
skupriienko May 27, 2026
e0fef90
fix: Handle payload too large size and telemetry
skupriienko May 27, 2026
20b36db
docs: Update performance and boot benchmarks
skupriienko May 27, 2026
3890005
refactor(client): implement O(1) registry routing and secure URI inte…
skupriienko May 28, 2026
1520d0b
refactor: modernize routing, security, and linting
skupriienko May 28, 2026
f95bc71
docs: Update perf & boost data
skupriienko May 28, 2026
06a7b68
docs: Fix linter issues in readme
skupriienko May 28, 2026
b37a8a4
docs: Update the changelog and samples
skupriienko May 28, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 23 additions & 0 deletions .github/workflows/codeql.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
name: CodeQL
on:
push: { branches: [main] }
pull_request: { branches: [main] }
schedule: [{ cron: "37 3 * * 0" }] # weekly full scan

jobs:
analyze:
if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository
runs-on: ubuntu-latest
permissions:
security-events: write
contents: read
actions: read
steps:
- uses: actions/checkout@v4
- uses: github/codeql-action/init@v3
with:
languages: python
queries: security-extended,security-and-quality
- uses: github/codeql-action/analyze@v3
with:
category: "/language:python"
5 changes: 2 additions & 3 deletions .github/workflows/commit_checks.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,6 @@ jobs:
channels: defaults
show-channel-urls: true
environment-file: environment.yaml
cache: 'pip' # Drastically speeds up CI by caching pip dependencies

- name: Install dependencies and package
run: |
Expand All @@ -60,7 +59,7 @@ jobs:
- name: Install test dependencies
run: |
python -m pip install --upgrade pip
pip install pytest
pip install pytest hypothesis

- name: Run unit tests
run: pytest tests/unit/ -v
run: pytest tests/unit/ -v -m "not property_heavy"
13 changes: 9 additions & 4 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,20 +34,25 @@ jobs:

- name: Extract version
id: get_version
# Use an intermediate environment variable to avoid shell injection
env:
EVENT_NAME: ${{ github.event_name }}
RELEASE_TAG: ${{ github.event.release.tag_name }}
REF_NAME: ${{ github.ref_name }}
run: |
# Get clean version from the tag or release
if [[ "${{ github.event_name }}" == "release" ]]; then
if [[ "$EVENT_NAME" == "release" ]]; then
# For releases, get the version from the release tag
TAG_NAME="${{ github.event.release.tag_name }}"
TAG_NAME="$RELEASE_TAG"
else
# For tags, get version from the tag
TAG_NAME="${{ github.ref_name }}"
TAG_NAME="$REF_NAME"
fi

# Remove 'v' prefix
VERSION=$(echo $TAG_NAME | sed 's/^v//')

# Check if this is a stable version (no rc, alpha, beta, dev, etc.)
# Check if this is a stable version
if [[ $TAG_NAME =~ ^v[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
echo "IS_STABLE=true" >> $GITHUB_ENV
else
Expand Down
59 changes: 59 additions & 0 deletions .github/workflows/security.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
name: Security

on:
push: { branches: [main] }
pull_request:
schedule: [{ cron: "0 5 * * *" }] # Daily security sweep

permissions:
contents: read

jobs:
static-analysis:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.13"
cache: 'pip'
- run: pip install ruff bandit mypy pip-audit
# Fast checks
- run: ruff check .
- run: bandit -c pyproject.toml -r mailjet_rest
- run: mypy --strict mailjet_rest

semgrep:
Comment thread
github-advanced-security[bot] marked this conversation as resolved.
Fixed
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: returntocorp/semgrep-action@v1
with:
config: >-
p/python
p/owasp-top-ten
p/supply-chain
p/command-injection
p/insecure-transport
error: true # Fails CI if issues found

pip-audit:
Comment thread
github-advanced-security[bot] marked this conversation as resolved.
Fixed
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with: { python-version: "3.13" }
- run: pip install pip-audit
- run: pip-audit --strict

osv-scan:
permissions:
actions: read
security-events: write # For Security Tab
contents: read
uses: "google/osv-scanner-action/.github/workflows/osv-scanner-reusable.yml@v2.3.8"
with:
# Explicit root scanning
scan-args: |-
--recursive
./
Loading
Loading