Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
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
2 changes: 2 additions & 0 deletions .bandit
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
[bandit]
skips = B101

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Scope Bandit B101 suppression to tests instead of disabling it globally.

skips = B101 turns off assert-misuse detection repo-wide, which weakens security checks for runtime code. Keep B101 enabled globally and exclude/assert-ignore only test paths.

Suggested adjustment
 [bandit]
-skips = B101
+# Keep B101 enabled globally; suppress in tests via CLI/config path excludes.
+# Example (if supported in your Bandit invocation):
+# exclude_dirs = tests,.rhiza/tests
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.bandit at line 2, Remove the global "skips = B101" entry from the .bandit
config and instead scope the suppression to test code by adding inline
suppressions only in test files that intentionally use assert (e.g., add "#
nosec" on the specific assert lines in your test functions); this preserves B101
checks for runtime code while allowing asserts in tests—search for the literal
"skips = B101" to remove it and update test files that relied on the global
suppression to use "# nosec" on the relevant assert statements.

41 changes: 41 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
# This file is part of the jebel-quant/rhiza repository
# (https://github.com/jebel-quant/rhiza).
#
root = true

# Default settings for all files
[*]
end_of_line = lf
trim_trailing_whitespace = true
insert_final_newline = true
charset = utf-8

# Python, reStructuredText, and text files
[*.{py,rst,txt}]
indent_style = space
indent_size = 4

# YAML, JSON, and other config files
[*.{yml,yaml,json}]
indent_style = space
indent_size = 2

# Markdown files
# [*.{md,markdown}]
# trim_trailing_whitespace = false

# Makefiles require tabs
[{Makefile,*.mk,*.make}]
indent_style = tab
indent_size = 4

# Don't apply editorconfig rules to vendor/ resources
# This is a "defensive" rule for the day we may have
# the vendor folder
[vendor/**]
charset = unset
end_of_line = unset
indent_size = unset
indent_style = unset
insert_final_newline = unset
trim_trailing_whitespace = unset
25 changes: 25 additions & 0 deletions .github/DISCUSSION_TEMPLATE/q-and-a.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
title: "[Question] "
labels: ["question"]
body:
- type: markdown
attributes:
value: |
Welcome! Use this space to ask questions, share how your use-case, or explore ideas with the community.

- type: textarea
id: question
attributes:
label: Your Question or Topic
description: What would you like to discuss?
validations:
required: true

- type: textarea
id: context
attributes:
label: Context
description: Any relevant code, configuration, or background that helps frame your question.
placeholder: |
```python
# your code snippet here
```
57 changes: 57 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
name: Bug Report
description: Report a bug or unexpected behaviour
labels: ["bug"]
body:
- type: markdown
attributes:
value: |
Thanks for taking the time to report a bug. Please fill out the sections below.

- type: textarea
id: description
attributes:
label: Description
description: A clear and concise description of what the bug is.
placeholder: What happened?
validations:
required: true

- type: textarea
id: steps
attributes:
label: Steps to reproduce
description: Minimal steps to reproduce the behaviour.
placeholder: |
1. Run `make ...`
2. See error
validations:
required: true

- type: textarea
id: expected
attributes:
label: Expected behaviour
description: What did you expect to happen?
validations:
required: true

- type: textarea
id: environment
attributes:
label: Environment
description: |
Relevant versions and system info. Run `make info` if available.
placeholder: |
- OS: macOS 14 / Ubuntu 24.04 / Windows 11
- Python: 3.13.x
- rhiza version:
validations:
required: false

- type: textarea
id: context
attributes:
label: Additional context
description: Logs, screenshots, or anything else that may be helpful.
validations:
required: false
41 changes: 41 additions & 0 deletions .github/ISSUE_TEMPLATE/feature_request.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
name: Feature Request
description: Suggest a new feature or enhancement
labels: ["enhancement"]
body:
- type: markdown
attributes:
value: |
Thanks for proposing a feature. Please align with the team before investing significant effort.

- type: textarea
id: problem
attributes:
label: Problem / motivation
description: What problem does this solve? Why is it valuable?
placeholder: As a contributor I find it hard to ... because ...
validations:
required: true

- type: textarea
id: solution
attributes:
label: Proposed solution
description: Describe the solution you have in mind.
validations:
required: true

- type: textarea
id: alternatives
attributes:
label: Alternatives considered
description: Other approaches you have considered and why you ruled them out.
validations:
required: false

- type: textarea
id: context
attributes:
label: Additional context
description: Links, mockups, prior art, or anything else that may be helpful.
validations:
required: false
80 changes: 80 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
# This file is part of the jebel-quant/rhiza repository
# (https://github.com/jebel-quant/rhiza).
#
# Configuration: Dependabot
#
# Purpose: Automate dependency updates for Python packages, GitHub Actions, and Docker images.
#
# Documentation: https://docs.github.com/en/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file

version: 2
updates:
# Python dependencies using uv
- package-ecosystem: "uv"
directory: "/"
schedule:
interval: "weekly"
day: "tuesday"
time: "09:00"
timezone: "Asia/Dubai"
ignore:
- dependency-name: "*"
update-types: ["version-update:semver-major"]
open-pull-requests-limit: 10
labels:
- "dependencies"
- "python"
groups:
python-dependencies:
patterns:
- "*"
update-types:
- "patch"
- "minor"
commit-message:
prefix: "chore(deps)"
prefix-development: "chore(deps-dev)"
include: "scope"

# GitHub Actions
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "weekly"
day: "tuesday"
time: "09:00"
timezone: "Asia/Dubai"
ignore:
- dependency-name: "*"
update-types: ["version-update:semver-major"]
open-pull-requests-limit: 10
labels:
- "dependencies"
- "github-actions"
groups:
github-actions:
patterns:
- "*"
update-types:
- "patch"
- "minor"

commit-message:
prefix: "chore(deps)"
include: "scope"

# Docker
#- package-ecosystem: "docker"
# directory: "/docker"
# schedule:
# interval: "weekly"
# day: "tuesday"
# time: "09:00"
# timezone: "Asia/Dubai"
# open-pull-requests-limit: 10
# labels:
# - "dependencies"
# - "docker"
# commit-message:
# prefix: "chore(deps)"
# include: "scope"
23 changes: 23 additions & 0 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
## Summary

<!-- One or two sentences describing what this PR does and why. -->

Closes #<!-- issue number -->

## Changes

<!-- Bullet list of what changed. -->

-

## Testing

- [ ] `make test` passes locally
- [ ] `make fmt` has been run
- [ ] New tests added (or explain why not needed)

## Checklist

- [ ] Commit messages follow the [Conventional Commits](https://www.conventionalcommits.org/) format
- [ ] Documentation updated if behaviour changed
- [ ] `make deptry` passes (no unused or missing dependencies)
67 changes: 67 additions & 0 deletions .github/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
# GitHub Release Notes Configuration
# This file configures automatic categorization of pull requests in release notes
# See: https://docs.github.com/en/repositories/releasing-projects-on-github/automatically-generated-release-notes

changelog:
exclude:
labels:
- ignore-for-release
- duplicate
- question
- invalid
- wontfix
authors:
- dependabot
- renovate

categories:
- title: 🚀 Features
labels:
- feature
- enhancement

- title: 🐛 Bug Fixes
labels:
- bug
- fix

- title: 📚 Documentation
labels:
- documentation
- docs

- title: 🔧 Technical Debt
labels:
- technical-debt
- refactor
- cleanup

- title: 🏗️ Infrastructure
labels:
- ci
- build
- infrastructure

- title: ⚡ Performance
labels:
- performance
- optimization

- title: 🧪 Testing
labels:
- test
- testing

- title: 🔒 Security
labels:
- security
- vulnerability

- title: 📦 Dependencies
labels:
- dependencies
- deps

- title: 🔄 Other Changes
labels:
- "*"
20 changes: 20 additions & 0 deletions .github/secret_scanning.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# This file is part of the jebel-quant/rhiza repository
# (https://github.com/jebel-quant/rhiza).
#
# Configuration: GitHub Secret Scanning
#
# Purpose: Configure GitHub secret scanning to identify and prevent accidental
# exposure of secrets, credentials, and tokens in the repository.
#
# Note: Secret scanning must be enabled in repository Settings >
# Security > Code security and analysis > Secret scanning.
#
# Documentation: https://docs.github.com/en/code-security/secret-scanning/configuring-secret-scanning-for-your-repository

paths-ignore:
# Ignore test fixtures that may contain example/fake secrets
- ".rhiza/tests/**"
- "tests/**"
# Ignore documentation that references example tokens/keys
- "docs/**/*.md"
- "book/**"
Comment on lines +14 to +20

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Avoid excluding all docs and book content from secret scanning.

Line 19 and Line 20 disable scanning for large human-authored areas where accidental token pastes often happen. Keep fixture-style exclusions, but narrow docs/book ignores to specific synthetic test files only.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.github/secret_scanning.yml around lines 14 - 20, The current paths-ignore
block is too broad (entries docs/**/*.md and book/**) and disables secret
scanning for large human-authored content; update the paths-ignore to remove or
tighten those two patterns and replace them with narrow, synthetic-only patterns
(e.g., patterns targeting fixture/example files under docs and book such as
docs/**/fixtures/**, docs/**/*.example.* or book/**/examples/**) so that
paths-ignore still contains the original fixture skips but no longer excludes
all docs or the entire book; edit the entries under the paths-ignore key
(referencing the symbols paths-ignore, docs/**/*.md, book/**) accordingly.

24 changes: 24 additions & 0 deletions .github/workflows/rhiza_benchmark.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# This file is part of the jebel-quant/rhiza repository
# (https://github.com/jebel-quant/rhiza).
#
# Workflow: Benchmarks
#
# Purpose: Run the benchmark suite on pushes to main to create a measurable
# performance baseline over time.
#
# Trigger: This workflow runs on pushes to the main branch.

name: "(RHIZA) BENCHMARK"

permissions:
contents: read

on:
push:
branches:
- main
Comment on lines +17 to +19

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Benchmark workflow trigger misses the active branch.

Line 19 only listens to main, but this repository’s PR target branch is master (June 8, 2026), so benchmark runs can be skipped on normal pushes.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.github/workflows/rhiza_benchmark.yml around lines 17 - 19, The workflow's
push trigger currently only lists the branch name "main" under the
push->branches key, so pushes to the repository's active branch "master" won't
trigger the benchmark; update the YAML push trigger (the branches array under
the push event) to include "master" as well (e.g., add "master" alongside "main"
or replace "main" with "master" depending on intended behavior) so the workflow
will run on pushes to the repository's active branch.


jobs:
benchmark:
uses: jebel-quant/rhiza/.github/workflows/rhiza_benchmark.yml@v0.18.7
secrets: inherit
Loading
Loading