openai / openai-guardrails-python
File Churn

File change frequency (churn) shows the distribution of file updates (days with at least one commit).

Overview
File Change Frequency Overall
  • There are 53 files with 6,760 lines of code.
    • 0 files changed more than 100 times (0 lines of code)
    • 0 files changed 51-100 times (0 lines of code)
    • 0 files changed 21-50 times (0 lines of code)
    • 15 files changed 6-20 times (4,103 lines of code)
    • 38 files changed 1-5 times (2,657 lines of code)
0% | 0% | 0% | 60% | 39%
Legend:
101+
51-100
21-50
6-20
1-5

explore: grouped by folders | grouped by update frequency | data
Contributors Count Frequency Overall
  • There are 53 files with 6,760 lines of code.
    • 0 files changed by more than 25 contributors (0 lines of code)
    • 0 files changed by 11-25 contributors (0 lines of code)
    • 0 files changed by 6-10 contributors (0 lines of code)
    • 50 files changed by 2-5 contributors (6,469 lines of code)
    • 3 files changed by 1 contributor (291 lines of code)
0% | 0% | 0% | 95% | 4%
Legend:
26+
11-25
6-10
2-5
1

explore: grouped by folders | grouped by contributors count | data
File Change Frequency per File Extension
py, md, json, yaml, svg, gitignore, txt, css, dockerignore, toml, jsonl
File Change Frequency per Extension
The number of recorded file updates
101+
51-100
21-50
6-20
1-5
py0% | 0% | 0% | 60% | 39%
File Change Frequency per Logical Decomposition
primary
primary (file change frequency)
The number of recorded file updates
101+
51-100
21-50
6-20
1-5
src0% | 0% | 0% | 60% | 39%
Most Frequently Changed Files (Top 50)

See data for all files...

File# lines# unitscreatedlast modified# changes
(days)
# contributorsline
churn
first
contributor
latest
contributor
prompt_injection_detection.py
in src/guardrails/checks/text
204 6 2025-10-02 2026-03-28 12 4 +1115 / -254 gabor@openai.com seratch@openai.com
llm_base.py
in src/guardrails/checks/text
309 6 2025-10-02 2026-03-28 12 4 +999 / -76 gabor@openai.com seratch@openai.com
hallucination_detection.py
in src/guardrails/checks/text
140 - 2025-10-02 2025-12-12 9 5 +704 / -73 gabor@openai.com 158192461+steven10a@users.n...
_base_client.py
in src/guardrails
306 23 2025-10-02 2026-03-28 9 4 +1023 / -123 gabor@openai.com seratch@openai.com
pii.py
in src/guardrails/checks/text
372 11 2025-10-02 2026-03-28 9 4 +1383 / -151 gabor@openai.com seratch@openai.com
agents.py
in src/guardrails
408 14 2025-10-02 2025-12-02 9 4 +1828 / -359 gabor@openai.com 158192461+steven10a@users.n...
jailbreak.py
in src/guardrails/checks/text
28 - 2025-10-02 2025-12-15 8 4 +435 / -111 gabor@openai.com 158192461+steven10a@users.n...
async_engine.py
in src/guardrails/evals/core
278 7 2025-10-02 2025-12-02 8 4 +816 / -99 gabor@openai.com 158192461+steven10a@users.n...
client.py
in src/guardrails
541 27 2025-10-02 2025-12-02 8 4 +1899 / -232 gabor@openai.com 158192461+steven10a@users.n...
guardrail_evals.py
in src/guardrails/evals
627 11 2025-10-02 2025-11-19 8 4 +1860 / -180 gabor@openai.com 158192461+steven10a@users.n...
types.py
in src/guardrails
140 7 2025-10-02 2025-12-02 7 4 +467 / -30 gabor@openai.com 158192461+steven10a@users.n...
moderation.py
in src/guardrails/checks/text
101 2 2025-10-02 2026-03-28 6 4 +523 / -50 gabor@openai.com seratch@openai.com
chat.py
in src/guardrails/resources/chat
115 7 2025-10-02 2025-12-02 6 5 +434 / -65 gabor@openai.com 33281963+galkleinman@users....
responses.py
in src/guardrails/resources/responses
255 5 2025-10-02 2025-12-02 6 5 +782 / -147 gabor@openai.com 33281963+galkleinman@users....
urls.py
in src/guardrails/checks/text
279 5 2025-10-02 2025-12-02 6 4 +873 / -74 gabor@openai.com 158192461+steven10a@users.n...
keywords.py
in src/guardrails/checks/text
65 2 2025-10-02 2025-11-19 5 4 +324 / -6 gabor@openai.com 158192461+steven10a@users.n...
secret_keys.py
in src/guardrails/checks/text
197 7 2025-10-02 2025-11-06 5 4 +796 / -40 gabor@openai.com 158192461+steven10a@users.n...
runtime.py
in src/guardrails
206 10 2025-10-02 2025-10-30 5 4 +1176 / -35 gabor@openai.com 158192461+steven10a@users.n...
off_topic_prompts.py
in src/guardrails/checks/text
20 - 2025-10-02 2025-12-12 4 4 +195 / -11 gabor@openai.com 158192461+steven10a@users.n...
user_defined_llm.py
in src/guardrails/checks/text
21 - 2025-10-02 2025-12-12 4 4 +185 / -10 gabor@openai.com 158192461+steven10a@users.n...
types.py
in src/guardrails/evals/core
51 4 2025-10-02 2025-10-29 4 4 +253 / -7 gabor@openai.com 158192461+steven10a@users.n...
__init__.py
in src/guardrails
56 - 2025-10-02 2025-12-02 4 4 +162 / -11 gabor@openai.com 158192461+steven10a@users.n...
create_vector_store.py
in src/guardrails/utils
92 - 2025-10-02 2025-10-30 4 4 +326 / -29 gabor@openai.com 158192461+steven10a@users.n...
_streaming.py
in src/guardrails
98 1 2025-10-02 2025-10-20 4 4 +282 / -33 gabor@openai.com 158192461+steven10a@users.n...
benchmark_reporter.py
in src/guardrails/evals/core
154 9 2025-10-02 2025-12-12 4 4 +532 / -70 gabor@openai.com 158192461+steven10a@users.n...
visualizer.py
in src/guardrails/evals/core
212 10 2025-10-02 2025-11-19 4 4 +747 / -108 gabor@openai.com 158192461+steven10a@users.n...
context.py
in src/guardrails
20 4 2025-10-02 2025-10-09 3 4 +149 / -4 gabor@openai.com 158192461+steven10a@users.n...
__init__.py
in src/guardrails/evals
32 1 2025-10-02 2025-10-16 3 4 +76 / -2 gabor@openai.com 158192461+steven10a@users.n...
jsonl_loader.py
in src/guardrails/evals/core
34 1 2025-10-02 2025-10-09 3 4 +137 / -7 gabor@openai.com 158192461+steven10a@users.n...
calculator.py
in src/guardrails/evals/core
41 2 2025-10-02 2025-10-09 3 4 +193 / -30 gabor@openai.com 158192461+steven10a@users.n...
cli.py
in src/guardrails
53 2 2025-10-02 2025-10-09 3 4 +205 / -2 gabor@openai.com 158192461+steven10a@users.n...
latency_tester.py
in src/guardrails/evals/core
62 3 2025-10-02 2025-10-09 3 4 +255 / -26 gabor@openai.com 158192461+steven10a@users.n...
benchmark_calculator.py
in src/guardrails/evals/core
92 7 2025-10-02 2025-10-09 3 4 +387 / -51 gabor@openai.com 158192461+steven10a@users.n...
__init__.py
in src/guardrails/utils
1 - 2025-10-02 2025-10-20 2 3 +28 / -0 gabor@openai.com 158192461+steven10a@users.n...
__init__.py
in src/guardrails/resources/responses
5 - 2025-10-02 2025-10-03 2 3 +18 / -2 gabor@openai.com seratch@openai.com
__init__.py
in src/guardrails/resources/chat
7 - 2025-10-02 2025-10-03 2 3 +22 / -2 gabor@openai.com seratch@openai.com
nsfw.py
in src/guardrails/checks/text
17 - 2025-10-02 2025-12-12 2 3 +172 / -6 gabor@openai.com 158192461+steven10a@users.n...
safety_identifier.py
in src/guardrails/utils
23 1 2025-10-30 2025-11-06 2 1 +68 / -1 158192461+steven10a@users.n... 158192461+steven10a@users.n...
__init__.py
in src/guardrails/checks
26 - 2025-10-02 2025-10-03 2 3 +72 / -8 gabor@openai.com seratch@openai.com
competitors.py
in src/guardrails/checks/text
29 - 2025-10-02 2025-10-03 2 3 +182 / -2 gabor@openai.com seratch@openai.com
context.py
in src/guardrails/utils
38 2 2025-10-02 2025-10-09 2 3 +152 / -8 gabor@openai.com 158192461+steven10a@users.n...
spec.py
in src/guardrails
40 2 2025-10-02 2025-11-17 2 3 +218 / -0 gabor@openai.com 158192461+steven10a@users.n...
anonymizer.py
in src/guardrails/utils
49 2 2025-11-10 2025-12-02 2 1 +150 / -7 158192461+steven10a@users.n... 158192461+steven10a@users.n...
validate_dataset.py
in src/guardrails/evals/core
55 2 2025-10-02 2025-10-03 2 3 +186 / -4 gabor@openai.com seratch@openai.com
json_reporter.py
in src/guardrails/evals/core
87 4 2025-10-02 2025-10-03 2 3 +302 / -14 gabor@openai.com seratch@openai.com
registry.py
in src/guardrails
100 8 2025-10-02 2025-10-09 2 3 +533 / -4 gabor@openai.com 158192461+steven10a@users.n...
schema.py
in src/guardrails/utils
149 7 2025-10-02 2025-10-09 2 3 +563 / -11 gabor@openai.com 158192461+steven10a@users.n...
__init__.py
in src/guardrails/checks/text
1 - 2025-10-02 2025-10-02 1 2 +20 / -0 gabor@openai.com steven@sandboxr.org
exceptions.py
in src/guardrails
27 5 2025-10-02 2025-10-02 1 2 +122 / -0 gabor@openai.com steven@sandboxr.org
__init__.py
in src/guardrails/evals/core
38 - 2025-10-02 2025-10-02 1 2 +90 / -0 gabor@openai.com steven@sandboxr.org
Files With Most Churn (Top 50)
Based on the number of lines added and deleted across all commits.

See data for all files...

File# lines# unitscreatedlast modified# changes
(days)
# contributorsline
churn
first
contributor
latest
contributor
agents.py
in src/guardrails
408 14 2025-10-02 2025-12-02 9 4 +1828 / -359 gabor@openai.com 158192461+steven10a@users.n...
client.py
in src/guardrails
541 27 2025-10-02 2025-12-02 8 4 +1899 / -232 gabor@openai.com 158192461+steven10a@users.n...
guardrail_evals.py
in src/guardrails/evals
627 11 2025-10-02 2025-11-19 8 4 +1860 / -180 gabor@openai.com 158192461+steven10a@users.n...
pii.py
in src/guardrails/checks/text
372 11 2025-10-02 2026-03-28 9 4 +1383 / -151 gabor@openai.com seratch@openai.com
prompt_injection_detection.py
in src/guardrails/checks/text
204 6 2025-10-02 2026-03-28 12 4 +1115 / -254 gabor@openai.com seratch@openai.com
runtime.py
in src/guardrails
206 10 2025-10-02 2025-10-30 5 4 +1176 / -35 gabor@openai.com 158192461+steven10a@users.n...
_base_client.py
in src/guardrails
306 23 2025-10-02 2026-03-28 9 4 +1023 / -123 gabor@openai.com seratch@openai.com
llm_base.py
in src/guardrails/checks/text
309 6 2025-10-02 2026-03-28 12 4 +999 / -76 gabor@openai.com seratch@openai.com
urls.py
in src/guardrails/checks/text
279 5 2025-10-02 2025-12-02 6 4 +873 / -74 gabor@openai.com 158192461+steven10a@users.n...
responses.py
in src/guardrails/resources/responses
255 5 2025-10-02 2025-12-02 6 5 +782 / -147 gabor@openai.com 33281963+galkleinman@users....
async_engine.py
in src/guardrails/evals/core
278 7 2025-10-02 2025-12-02 8 4 +816 / -99 gabor@openai.com 158192461+steven10a@users.n...
visualizer.py
in src/guardrails/evals/core
212 10 2025-10-02 2025-11-19 4 4 +747 / -108 gabor@openai.com 158192461+steven10a@users.n...
secret_keys.py
in src/guardrails/checks/text
197 7 2025-10-02 2025-11-06 5 4 +796 / -40 gabor@openai.com 158192461+steven10a@users.n...
hallucination_detection.py
in src/guardrails/checks/text
140 - 2025-10-02 2025-12-12 9 5 +704 / -73 gabor@openai.com 158192461+steven10a@users.n...
benchmark_reporter.py
in src/guardrails/evals/core
154 9 2025-10-02 2025-12-12 4 4 +532 / -70 gabor@openai.com 158192461+steven10a@users.n...
schema.py
in src/guardrails/utils
149 7 2025-10-02 2025-10-09 2 3 +563 / -11 gabor@openai.com 158192461+steven10a@users.n...
moderation.py
in src/guardrails/checks/text
101 2 2025-10-02 2026-03-28 6 4 +523 / -50 gabor@openai.com seratch@openai.com
jailbreak.py
in src/guardrails/checks/text
28 - 2025-10-02 2025-12-15 8 4 +435 / -111 gabor@openai.com 158192461+steven10a@users.n...
registry.py
in src/guardrails
100 8 2025-10-02 2025-10-09 2 3 +533 / -4 gabor@openai.com 158192461+steven10a@users.n...
chat.py
in src/guardrails/resources/chat
115 7 2025-10-02 2025-12-02 6 5 +434 / -65 gabor@openai.com 33281963+galkleinman@users....
types.py
in src/guardrails
140 7 2025-10-02 2025-12-02 7 4 +467 / -30 gabor@openai.com 158192461+steven10a@users.n...
parsing.py
in src/guardrails/utils
147 9 2025-10-02 2025-10-02 1 2 +476 / -0 gabor@openai.com steven@sandboxr.org
benchmark_calculator.py
in src/guardrails/evals/core
92 7 2025-10-02 2025-10-09 3 4 +387 / -51 gabor@openai.com 158192461+steven10a@users.n...
create_vector_store.py
in src/guardrails/utils
92 - 2025-10-02 2025-10-30 4 4 +326 / -29 gabor@openai.com 158192461+steven10a@users.n...
keywords.py
in src/guardrails/checks/text
65 2 2025-10-02 2025-11-19 5 4 +324 / -6 gabor@openai.com 158192461+steven10a@users.n...
output.py
in src/guardrails/utils
93 9 2025-10-02 2025-10-02 1 2 +328 / -0 gabor@openai.com steven@sandboxr.org
conversation.py
in src/guardrails/utils
219 13 2025-10-20 2025-10-20 1 1 +328 / -0 158192461+steven10a@users.n... 158192461+steven10a@users.n...
json_reporter.py
in src/guardrails/evals/core
87 4 2025-10-02 2025-10-03 2 3 +302 / -14 gabor@openai.com seratch@openai.com
_streaming.py
in src/guardrails
98 1 2025-10-02 2025-10-20 4 4 +282 / -33 gabor@openai.com 158192461+steven10a@users.n...
latency_tester.py
in src/guardrails/evals/core
62 3 2025-10-02 2025-10-09 3 4 +255 / -26 gabor@openai.com 158192461+steven10a@users.n...
types.py
in src/guardrails/evals/core
51 4 2025-10-02 2025-10-29 4 4 +253 / -7 gabor@openai.com 158192461+steven10a@users.n...
calculator.py
in src/guardrails/evals/core
41 2 2025-10-02 2025-10-09 3 4 +193 / -30 gabor@openai.com 158192461+steven10a@users.n...
spec.py
in src/guardrails
40 2 2025-10-02 2025-11-17 2 3 +218 / -0 gabor@openai.com 158192461+steven10a@users.n...
cli.py
in src/guardrails
53 2 2025-10-02 2025-10-09 3 4 +205 / -2 gabor@openai.com 158192461+steven10a@users.n...
off_topic_prompts.py
in src/guardrails/checks/text
20 - 2025-10-02 2025-12-12 4 4 +195 / -11 gabor@openai.com 158192461+steven10a@users.n...
user_defined_llm.py
in src/guardrails/checks/text
21 - 2025-10-02 2025-12-12 4 4 +185 / -10 gabor@openai.com 158192461+steven10a@users.n...
validate_dataset.py
in src/guardrails/evals/core
55 2 2025-10-02 2025-10-03 2 3 +186 / -4 gabor@openai.com seratch@openai.com
competitors.py
in src/guardrails/checks/text
29 - 2025-10-02 2025-10-03 2 3 +182 / -2 gabor@openai.com seratch@openai.com
nsfw.py
in src/guardrails/checks/text
17 - 2025-10-02 2025-12-12 2 3 +172 / -6 gabor@openai.com 158192461+steven10a@users.n...
__init__.py
in src/guardrails
56 - 2025-10-02 2025-12-02 4 4 +162 / -11 gabor@openai.com 158192461+steven10a@users.n...
context.py
in src/guardrails/utils
38 2 2025-10-02 2025-10-09 2 3 +152 / -8 gabor@openai.com 158192461+steven10a@users.n...
anonymizer.py
in src/guardrails/utils
49 2 2025-11-10 2025-12-02 2 1 +150 / -7 158192461+steven10a@users.n... 158192461+steven10a@users.n...
context.py
in src/guardrails
20 4 2025-10-02 2025-10-09 3 4 +149 / -4 gabor@openai.com 158192461+steven10a@users.n...
jsonl_loader.py
in src/guardrails/evals/core
34 1 2025-10-02 2025-10-09 3 4 +137 / -7 gabor@openai.com 158192461+steven10a@users.n...
exceptions.py
in src/guardrails
27 5 2025-10-02 2025-10-02 1 2 +122 / -0 gabor@openai.com steven@sandboxr.org
__init__.py
in src/guardrails/evals/core
38 - 2025-10-02 2025-10-02 1 2 +90 / -0 gabor@openai.com steven@sandboxr.org
__init__.py
in src/guardrails/checks
26 - 2025-10-02 2025-10-03 2 3 +72 / -8 gabor@openai.com seratch@openai.com
__init__.py
in src/guardrails/evals
32 1 2025-10-02 2025-10-16 3 4 +76 / -2 gabor@openai.com 158192461+steven10a@users.n...
safety_identifier.py
in src/guardrails/utils
23 1 2025-10-30 2025-11-06 2 1 +68 / -1 158192461+steven10a@users.n... 158192461+steven10a@users.n...
__init__.py
in src/guardrails/utils
1 - 2025-10-02 2025-10-20 2 3 +28 / -0 gabor@openai.com 158192461+steven10a@users.n...
Files With Most Contributors (Top 50)
Based on the number of unique email addresses found in commits.

See data for all files...

File# lines# unitscreatedlast modified# changes
(days)
# contributorsline
churn
first
contributor
latest
contributor
hallucination_detection.py
in src/guardrails/checks/text
140 - 2025-10-02 2025-12-12 9 5 +704 / -73 gabor@openai.com 158192461+steven10a@users.n...
responses.py
in src/guardrails/resources/responses
255 5 2025-10-02 2025-12-02 6 5 +782 / -147 gabor@openai.com 33281963+galkleinman@users....
chat.py
in src/guardrails/resources/chat
115 7 2025-10-02 2025-12-02 6 5 +434 / -65 gabor@openai.com 33281963+galkleinman@users....
prompt_injection_detection.py
in src/guardrails/checks/text
204 6 2025-10-02 2026-03-28 12 4 +1115 / -254 gabor@openai.com seratch@openai.com
llm_base.py
in src/guardrails/checks/text
309 6 2025-10-02 2026-03-28 12 4 +999 / -76 gabor@openai.com seratch@openai.com
pii.py
in src/guardrails/checks/text
372 11 2025-10-02 2026-03-28 9 4 +1383 / -151 gabor@openai.com seratch@openai.com
_base_client.py
in src/guardrails
306 23 2025-10-02 2026-03-28 9 4 +1023 / -123 gabor@openai.com seratch@openai.com
agents.py
in src/guardrails
408 14 2025-10-02 2025-12-02 9 4 +1828 / -359 gabor@openai.com 158192461+steven10a@users.n...
async_engine.py
in src/guardrails/evals/core
278 7 2025-10-02 2025-12-02 8 4 +816 / -99 gabor@openai.com 158192461+steven10a@users.n...
guardrail_evals.py
in src/guardrails/evals
627 11 2025-10-02 2025-11-19 8 4 +1860 / -180 gabor@openai.com 158192461+steven10a@users.n...
jailbreak.py
in src/guardrails/checks/text
28 - 2025-10-02 2025-12-15 8 4 +435 / -111 gabor@openai.com 158192461+steven10a@users.n...
client.py
in src/guardrails
541 27 2025-10-02 2025-12-02 8 4 +1899 / -232 gabor@openai.com 158192461+steven10a@users.n...
types.py
in src/guardrails
140 7 2025-10-02 2025-12-02 7 4 +467 / -30 gabor@openai.com 158192461+steven10a@users.n...
moderation.py
in src/guardrails/checks/text
101 2 2025-10-02 2026-03-28 6 4 +523 / -50 gabor@openai.com seratch@openai.com
urls.py
in src/guardrails/checks/text
279 5 2025-10-02 2025-12-02 6 4 +873 / -74 gabor@openai.com 158192461+steven10a@users.n...
keywords.py
in src/guardrails/checks/text
65 2 2025-10-02 2025-11-19 5 4 +324 / -6 gabor@openai.com 158192461+steven10a@users.n...
secret_keys.py
in src/guardrails/checks/text
197 7 2025-10-02 2025-11-06 5 4 +796 / -40 gabor@openai.com 158192461+steven10a@users.n...
runtime.py
in src/guardrails
206 10 2025-10-02 2025-10-30 5 4 +1176 / -35 gabor@openai.com 158192461+steven10a@users.n...
benchmark_reporter.py
in src/guardrails/evals/core
154 9 2025-10-02 2025-12-12 4 4 +532 / -70 gabor@openai.com 158192461+steven10a@users.n...
types.py
in src/guardrails/evals/core
51 4 2025-10-02 2025-10-29 4 4 +253 / -7 gabor@openai.com 158192461+steven10a@users.n...
visualizer.py
in src/guardrails/evals/core
212 10 2025-10-02 2025-11-19 4 4 +747 / -108 gabor@openai.com 158192461+steven10a@users.n...
__init__.py
in src/guardrails
56 - 2025-10-02 2025-12-02 4 4 +162 / -11 gabor@openai.com 158192461+steven10a@users.n...
off_topic_prompts.py
in src/guardrails/checks/text
20 - 2025-10-02 2025-12-12 4 4 +195 / -11 gabor@openai.com 158192461+steven10a@users.n...
user_defined_llm.py
in src/guardrails/checks/text
21 - 2025-10-02 2025-12-12 4 4 +185 / -10 gabor@openai.com 158192461+steven10a@users.n...
create_vector_store.py
in src/guardrails/utils
92 - 2025-10-02 2025-10-30 4 4 +326 / -29 gabor@openai.com 158192461+steven10a@users.n...
_streaming.py
in src/guardrails
98 1 2025-10-02 2025-10-20 4 4 +282 / -33 gabor@openai.com 158192461+steven10a@users.n...
latency_tester.py
in src/guardrails/evals/core
62 3 2025-10-02 2025-10-09 3 4 +255 / -26 gabor@openai.com 158192461+steven10a@users.n...
benchmark_calculator.py
in src/guardrails/evals/core
92 7 2025-10-02 2025-10-09 3 4 +387 / -51 gabor@openai.com 158192461+steven10a@users.n...
calculator.py
in src/guardrails/evals/core
41 2 2025-10-02 2025-10-09 3 4 +193 / -30 gabor@openai.com 158192461+steven10a@users.n...
jsonl_loader.py
in src/guardrails/evals/core
34 1 2025-10-02 2025-10-09 3 4 +137 / -7 gabor@openai.com 158192461+steven10a@users.n...
__init__.py
in src/guardrails/evals
32 1 2025-10-02 2025-10-16 3 4 +76 / -2 gabor@openai.com 158192461+steven10a@users.n...
cli.py
in src/guardrails
53 2 2025-10-02 2025-10-09 3 4 +205 / -2 gabor@openai.com 158192461+steven10a@users.n...
context.py
in src/guardrails
20 4 2025-10-02 2025-10-09 3 4 +149 / -4 gabor@openai.com 158192461+steven10a@users.n...
validate_dataset.py
in src/guardrails/evals/core
55 2 2025-10-02 2025-10-03 2 3 +186 / -4 gabor@openai.com seratch@openai.com
json_reporter.py
in src/guardrails/evals/core
87 4 2025-10-02 2025-10-03 2 3 +302 / -14 gabor@openai.com seratch@openai.com
registry.py
in src/guardrails
100 8 2025-10-02 2025-10-09 2 3 +533 / -4 gabor@openai.com 158192461+steven10a@users.n...
__init__.py
in src/guardrails/checks
26 - 2025-10-02 2025-10-03 2 3 +72 / -8 gabor@openai.com seratch@openai.com
competitors.py
in src/guardrails/checks/text
29 - 2025-10-02 2025-10-03 2 3 +182 / -2 gabor@openai.com seratch@openai.com
nsfw.py
in src/guardrails/checks/text
17 - 2025-10-02 2025-12-12 2 3 +172 / -6 gabor@openai.com 158192461+steven10a@users.n...
__init__.py
in src/guardrails/utils
1 - 2025-10-02 2025-10-20 2 3 +28 / -0 gabor@openai.com 158192461+steven10a@users.n...
schema.py
in src/guardrails/utils
149 7 2025-10-02 2025-10-09 2 3 +563 / -11 gabor@openai.com 158192461+steven10a@users.n...
context.py
in src/guardrails/utils
38 2 2025-10-02 2025-10-09 2 3 +152 / -8 gabor@openai.com 158192461+steven10a@users.n...
spec.py
in src/guardrails
40 2 2025-10-02 2025-11-17 2 3 +218 / -0 gabor@openai.com 158192461+steven10a@users.n...
__init__.py
in src/guardrails/resources/responses
5 - 2025-10-02 2025-10-03 2 3 +18 / -2 gabor@openai.com seratch@openai.com
__init__.py
in src/guardrails/resources/chat
7 - 2025-10-02 2025-10-03 2 3 +22 / -2 gabor@openai.com seratch@openai.com
__init__.py
in src/guardrails/evals/core
38 - 2025-10-02 2025-10-02 1 2 +90 / -0 gabor@openai.com steven@sandboxr.org
exceptions.py
in src/guardrails
27 5 2025-10-02 2025-10-02 1 2 +122 / -0 gabor@openai.com steven@sandboxr.org
__init__.py
in src/guardrails/checks/text
1 - 2025-10-02 2025-10-02 1 2 +20 / -0 gabor@openai.com steven@sandboxr.org
parsing.py
in src/guardrails/utils
147 9 2025-10-02 2025-10-02 1 2 +476 / -0 gabor@openai.com steven@sandboxr.org
output.py
in src/guardrails/utils
93 9 2025-10-02 2025-10-02 1 2 +328 / -0 gabor@openai.com steven@sandboxr.org
Files With Least Contributors (Top 50)
Based on the number of unique email addresses found in commits.

See data for all files...

File# lines# unitscreatedlast modified# changes
(days)
# contributorsline
churn
first
contributor
latest
contributor
conversation.py
in src/guardrails/utils
219 13 2025-10-20 2025-10-20 1 1 +328 / -0 158192461+steven10a@users.n... 158192461+steven10a@users.n...
anonymizer.py
in src/guardrails/utils
49 2 2025-11-10 2025-12-02 2 1 +150 / -7 158192461+steven10a@users.n... 158192461+steven10a@users.n...
safety_identifier.py
in src/guardrails/utils
23 1 2025-10-30 2025-11-06 2 1 +68 / -1 158192461+steven10a@users.n... 158192461+steven10a@users.n...
parsing.py
in src/guardrails/utils
147 9 2025-10-02 2025-10-02 1 2 +476 / -0 gabor@openai.com steven@sandboxr.org
output.py
in src/guardrails/utils
93 9 2025-10-02 2025-10-02 1 2 +328 / -0 gabor@openai.com steven@sandboxr.org
__init__.py
in src/guardrails/evals/core
38 - 2025-10-02 2025-10-02 1 2 +90 / -0 gabor@openai.com steven@sandboxr.org
exceptions.py
in src/guardrails
27 5 2025-10-02 2025-10-02 1 2 +122 / -0 gabor@openai.com steven@sandboxr.org
__init__.py
in src/guardrails/checks/text
1 - 2025-10-02 2025-10-02 1 2 +20 / -0 gabor@openai.com steven@sandboxr.org
schema.py
in src/guardrails/utils
149 7 2025-10-02 2025-10-09 2 3 +563 / -11 gabor@openai.com 158192461+steven10a@users.n...
registry.py
in src/guardrails
100 8 2025-10-02 2025-10-09 2 3 +533 / -4 gabor@openai.com 158192461+steven10a@users.n...
json_reporter.py
in src/guardrails/evals/core
87 4 2025-10-02 2025-10-03 2 3 +302 / -14 gabor@openai.com seratch@openai.com
validate_dataset.py
in src/guardrails/evals/core
55 2 2025-10-02 2025-10-03 2 3 +186 / -4 gabor@openai.com seratch@openai.com
spec.py
in src/guardrails
40 2 2025-10-02 2025-11-17 2 3 +218 / -0 gabor@openai.com 158192461+steven10a@users.n...
context.py
in src/guardrails/utils
38 2 2025-10-02 2025-10-09 2 3 +152 / -8 gabor@openai.com 158192461+steven10a@users.n...
competitors.py
in src/guardrails/checks/text
29 - 2025-10-02 2025-10-03 2 3 +182 / -2 gabor@openai.com seratch@openai.com
__init__.py
in src/guardrails/checks
26 - 2025-10-02 2025-10-03 2 3 +72 / -8 gabor@openai.com seratch@openai.com
nsfw.py
in src/guardrails/checks/text
17 - 2025-10-02 2025-12-12 2 3 +172 / -6 gabor@openai.com 158192461+steven10a@users.n...
__init__.py
in src/guardrails/resources/chat
7 - 2025-10-02 2025-10-03 2 3 +22 / -2 gabor@openai.com seratch@openai.com
__init__.py
in src/guardrails/resources/responses
5 - 2025-10-02 2025-10-03 2 3 +18 / -2 gabor@openai.com seratch@openai.com
__init__.py
in src/guardrails/utils
1 - 2025-10-02 2025-10-20 2 3 +28 / -0 gabor@openai.com 158192461+steven10a@users.n...
guardrail_evals.py
in src/guardrails/evals
627 11 2025-10-02 2025-11-19 8 4 +1860 / -180 gabor@openai.com 158192461+steven10a@users.n...
client.py
in src/guardrails
541 27 2025-10-02 2025-12-02 8 4 +1899 / -232 gabor@openai.com 158192461+steven10a@users.n...
agents.py
in src/guardrails
408 14 2025-10-02 2025-12-02 9 4 +1828 / -359 gabor@openai.com 158192461+steven10a@users.n...
pii.py
in src/guardrails/checks/text
372 11 2025-10-02 2026-03-28 9 4 +1383 / -151 gabor@openai.com seratch@openai.com
llm_base.py
in src/guardrails/checks/text
309 6 2025-10-02 2026-03-28 12 4 +999 / -76 gabor@openai.com seratch@openai.com
_base_client.py
in src/guardrails
306 23 2025-10-02 2026-03-28 9 4 +1023 / -123 gabor@openai.com seratch@openai.com
urls.py
in src/guardrails/checks/text
279 5 2025-10-02 2025-12-02 6 4 +873 / -74 gabor@openai.com 158192461+steven10a@users.n...
async_engine.py
in src/guardrails/evals/core
278 7 2025-10-02 2025-12-02 8 4 +816 / -99 gabor@openai.com 158192461+steven10a@users.n...
visualizer.py
in src/guardrails/evals/core
212 10 2025-10-02 2025-11-19 4 4 +747 / -108 gabor@openai.com 158192461+steven10a@users.n...
runtime.py
in src/guardrails
206 10 2025-10-02 2025-10-30 5 4 +1176 / -35 gabor@openai.com 158192461+steven10a@users.n...
prompt_injection_detection.py
in src/guardrails/checks/text
204 6 2025-10-02 2026-03-28 12 4 +1115 / -254 gabor@openai.com seratch@openai.com
secret_keys.py
in src/guardrails/checks/text
197 7 2025-10-02 2025-11-06 5 4 +796 / -40 gabor@openai.com 158192461+steven10a@users.n...
benchmark_reporter.py
in src/guardrails/evals/core
154 9 2025-10-02 2025-12-12 4 4 +532 / -70 gabor@openai.com 158192461+steven10a@users.n...
types.py
in src/guardrails
140 7 2025-10-02 2025-12-02 7 4 +467 / -30 gabor@openai.com 158192461+steven10a@users.n...
moderation.py
in src/guardrails/checks/text
101 2 2025-10-02 2026-03-28 6 4 +523 / -50 gabor@openai.com seratch@openai.com
_streaming.py
in src/guardrails
98 1 2025-10-02 2025-10-20 4 4 +282 / -33 gabor@openai.com 158192461+steven10a@users.n...
benchmark_calculator.py
in src/guardrails/evals/core
92 7 2025-10-02 2025-10-09 3 4 +387 / -51 gabor@openai.com 158192461+steven10a@users.n...
create_vector_store.py
in src/guardrails/utils
92 - 2025-10-02 2025-10-30 4 4 +326 / -29 gabor@openai.com 158192461+steven10a@users.n...
keywords.py
in src/guardrails/checks/text
65 2 2025-10-02 2025-11-19 5 4 +324 / -6 gabor@openai.com 158192461+steven10a@users.n...
latency_tester.py
in src/guardrails/evals/core
62 3 2025-10-02 2025-10-09 3 4 +255 / -26 gabor@openai.com 158192461+steven10a@users.n...
__init__.py
in src/guardrails
56 - 2025-10-02 2025-12-02 4 4 +162 / -11 gabor@openai.com 158192461+steven10a@users.n...
cli.py
in src/guardrails
53 2 2025-10-02 2025-10-09 3 4 +205 / -2 gabor@openai.com 158192461+steven10a@users.n...
types.py
in src/guardrails/evals/core
51 4 2025-10-02 2025-10-29 4 4 +253 / -7 gabor@openai.com 158192461+steven10a@users.n...
calculator.py
in src/guardrails/evals/core
41 2 2025-10-02 2025-10-09 3 4 +193 / -30 gabor@openai.com 158192461+steven10a@users.n...
jsonl_loader.py
in src/guardrails/evals/core
34 1 2025-10-02 2025-10-09 3 4 +137 / -7 gabor@openai.com 158192461+steven10a@users.n...
__init__.py
in src/guardrails/evals
32 1 2025-10-02 2025-10-16 3 4 +76 / -2 gabor@openai.com 158192461+steven10a@users.n...
jailbreak.py
in src/guardrails/checks/text
28 - 2025-10-02 2025-12-15 8 4 +435 / -111 gabor@openai.com 158192461+steven10a@users.n...
user_defined_llm.py
in src/guardrails/checks/text
21 - 2025-10-02 2025-12-12 4 4 +185 / -10 gabor@openai.com 158192461+steven10a@users.n...
off_topic_prompts.py
in src/guardrails/checks/text
20 - 2025-10-02 2025-12-12 4 4 +195 / -11 gabor@openai.com 158192461+steven10a@users.n...
context.py
in src/guardrails
20 4 2025-10-02 2025-10-09 3 4 +149 / -4 gabor@openai.com 158192461+steven10a@users.n...
Correlations

File Size vs. Number of Changes: 53 points

src/guardrails/_base_client.py x: 306 lines of code y: 9 # changes src/guardrails/checks/text/llm_base.py x: 309 lines of code y: 12 # changes src/guardrails/checks/text/moderation.py x: 101 lines of code y: 6 # changes src/guardrails/checks/text/pii.py x: 372 lines of code y: 9 # changes src/guardrails/checks/text/prompt_injection_detection.py x: 204 lines of code y: 12 # changes src/guardrails/checks/text/jailbreak.py x: 28 lines of code y: 8 # changes src/guardrails/checks/text/hallucination_detection.py x: 140 lines of code y: 9 # changes src/guardrails/checks/text/nsfw.py x: 17 lines of code y: 2 # changes src/guardrails/checks/text/off_topic_prompts.py x: 20 lines of code y: 4 # changes src/guardrails/checks/text/user_defined_llm.py x: 21 lines of code y: 4 # changes src/guardrails/evals/core/benchmark_reporter.py x: 154 lines of code y: 4 # changes src/guardrails/__init__.py x: 56 lines of code y: 4 # changes src/guardrails/agents.py x: 408 lines of code y: 9 # changes src/guardrails/checks/text/urls.py x: 279 lines of code y: 6 # changes src/guardrails/client.py x: 541 lines of code y: 8 # changes src/guardrails/evals/core/async_engine.py x: 278 lines of code y: 8 # changes src/guardrails/types.py x: 140 lines of code y: 7 # changes src/guardrails/utils/anonymizer.py x: 49 lines of code y: 2 # changes src/guardrails/resources/chat/chat.py x: 115 lines of code y: 6 # changes src/guardrails/resources/responses/responses.py x: 255 lines of code y: 6 # changes src/guardrails/evals/core/visualizer.py x: 212 lines of code y: 4 # changes src/guardrails/evals/guardrail_evals.py x: 627 lines of code y: 8 # changes src/guardrails/checks/text/keywords.py x: 65 lines of code y: 5 # changes src/guardrails/spec.py x: 40 lines of code y: 2 # changes src/guardrails/checks/text/secret_keys.py x: 197 lines of code y: 5 # changes src/guardrails/utils/safety_identifier.py x: 23 lines of code y: 2 # changes src/guardrails/runtime.py x: 206 lines of code y: 5 # changes src/guardrails/utils/create_vector_store.py x: 92 lines of code y: 4 # changes src/guardrails/evals/core/types.py x: 51 lines of code y: 4 # changes src/guardrails/_streaming.py x: 98 lines of code y: 4 # changes src/guardrails/utils/__init__.py x: 1 lines of code y: 2 # changes src/guardrails/utils/conversation.py x: 219 lines of code y: 1 # changes src/guardrails/evals/__init__.py x: 32 lines of code y: 3 # changes src/guardrails/cli.py x: 53 lines of code y: 3 # changes src/guardrails/context.py x: 20 lines of code y: 3 # changes src/guardrails/evals/core/benchmark_calculator.py x: 92 lines of code y: 3 # changes src/guardrails/evals/core/calculator.py x: 41 lines of code y: 3 # changes src/guardrails/evals/core/jsonl_loader.py x: 34 lines of code y: 3 # changes src/guardrails/evals/core/latency_tester.py x: 62 lines of code y: 3 # changes src/guardrails/registry.py x: 100 lines of code y: 2 # changes src/guardrails/utils/context.py x: 38 lines of code y: 2 # changes src/guardrails/utils/schema.py x: 149 lines of code y: 2 # changes src/guardrails/checks/__init__.py x: 26 lines of code y: 2 # changes src/guardrails/checks/text/competitors.py x: 29 lines of code y: 2 # changes src/guardrails/evals/core/json_reporter.py x: 87 lines of code y: 2 # changes src/guardrails/evals/core/validate_dataset.py x: 55 lines of code y: 2 # changes src/guardrails/resources/chat/__init__.py x: 7 lines of code y: 2 # changes src/guardrails/resources/responses/__init__.py x: 5 lines of code y: 2 # changes src/guardrails/checks/text/__init__.py x: 1 lines of code y: 1 # changes src/guardrails/evals/core/__init__.py x: 38 lines of code y: 1 # changes src/guardrails/exceptions.py x: 27 lines of code y: 1 # changes src/guardrails/utils/output.py x: 93 lines of code y: 1 # changes src/guardrails/utils/parsing.py x: 147 lines of code y: 1 # changes
12.0
# changes
  min: 1.0
  average: 4.25
  25th percentile: 2.0
  median: 3.0
  75th percentile: 6.0
  max: 12.0
0 627.0
lines of code
min: 1.0 | average: 127.55 | 25th percentile: 30.5 | median: 87.0 | 75th percentile: 200.5 | max: 627.0

Number of Contributors vs. Number of Changes: 53 points

src/guardrails/_base_client.py x: 4 # contributors y: 9 # changes src/guardrails/checks/text/llm_base.py x: 4 # contributors y: 12 # changes src/guardrails/checks/text/moderation.py x: 4 # contributors y: 6 # changes src/guardrails/checks/text/jailbreak.py x: 4 # contributors y: 8 # changes src/guardrails/checks/text/hallucination_detection.py x: 5 # contributors y: 9 # changes src/guardrails/checks/text/nsfw.py x: 3 # contributors y: 2 # changes src/guardrails/checks/text/off_topic_prompts.py x: 4 # contributors y: 4 # changes src/guardrails/types.py x: 4 # contributors y: 7 # changes src/guardrails/utils/anonymizer.py x: 1 # contributors y: 2 # changes src/guardrails/resources/chat/chat.py x: 5 # contributors y: 6 # changes src/guardrails/checks/text/keywords.py x: 4 # contributors y: 5 # changes src/guardrails/utils/conversation.py x: 1 # contributors y: 1 # changes src/guardrails/evals/__init__.py x: 4 # contributors y: 3 # changes src/guardrails/checks/text/__init__.py x: 2 # contributors y: 1 # changes
12.0
# changes
  min: 1.0
  average: 4.25
  25th percentile: 2.0
  median: 3.0
  75th percentile: 6.0
  max: 12.0
0 5.0
# contributors
min: 1.0 | average: 3.47 | 25th percentile: 3.0 | median: 4.0 | 75th percentile: 4.0 | max: 5.0

Number of Contributors vs. File Size: 53 points

src/guardrails/_base_client.py x: 4 # contributors y: 306 lines of code src/guardrails/checks/text/llm_base.py x: 4 # contributors y: 309 lines of code src/guardrails/checks/text/moderation.py x: 4 # contributors y: 101 lines of code src/guardrails/checks/text/pii.py x: 4 # contributors y: 372 lines of code src/guardrails/checks/text/prompt_injection_detection.py x: 4 # contributors y: 204 lines of code src/guardrails/checks/text/jailbreak.py x: 4 # contributors y: 28 lines of code src/guardrails/checks/text/hallucination_detection.py x: 5 # contributors y: 140 lines of code src/guardrails/checks/text/nsfw.py x: 3 # contributors y: 17 lines of code src/guardrails/checks/text/off_topic_prompts.py x: 4 # contributors y: 20 lines of code src/guardrails/evals/core/benchmark_reporter.py x: 4 # contributors y: 154 lines of code src/guardrails/__init__.py x: 4 # contributors y: 56 lines of code src/guardrails/agents.py x: 4 # contributors y: 408 lines of code src/guardrails/checks/text/urls.py x: 4 # contributors y: 279 lines of code src/guardrails/client.py x: 4 # contributors y: 541 lines of code src/guardrails/evals/core/async_engine.py x: 4 # contributors y: 278 lines of code src/guardrails/types.py x: 4 # contributors y: 140 lines of code src/guardrails/utils/anonymizer.py x: 1 # contributors y: 49 lines of code src/guardrails/resources/chat/chat.py x: 5 # contributors y: 115 lines of code src/guardrails/resources/responses/responses.py x: 5 # contributors y: 255 lines of code src/guardrails/evals/core/visualizer.py x: 4 # contributors y: 212 lines of code src/guardrails/evals/guardrail_evals.py x: 4 # contributors y: 627 lines of code src/guardrails/checks/text/keywords.py x: 4 # contributors y: 65 lines of code src/guardrails/spec.py x: 3 # contributors y: 40 lines of code src/guardrails/checks/text/secret_keys.py x: 4 # contributors y: 197 lines of code src/guardrails/utils/safety_identifier.py x: 1 # contributors y: 23 lines of code src/guardrails/runtime.py x: 4 # contributors y: 206 lines of code src/guardrails/utils/create_vector_store.py x: 4 # contributors y: 92 lines of code src/guardrails/evals/core/types.py x: 4 # contributors y: 51 lines of code src/guardrails/_streaming.py x: 4 # contributors y: 98 lines of code src/guardrails/utils/__init__.py x: 3 # contributors y: 1 lines of code src/guardrails/utils/conversation.py x: 1 # contributors y: 219 lines of code src/guardrails/evals/__init__.py x: 4 # contributors y: 32 lines of code src/guardrails/cli.py x: 4 # contributors y: 53 lines of code src/guardrails/evals/core/calculator.py x: 4 # contributors y: 41 lines of code src/guardrails/evals/core/jsonl_loader.py x: 4 # contributors y: 34 lines of code src/guardrails/evals/core/latency_tester.py x: 4 # contributors y: 62 lines of code src/guardrails/registry.py x: 3 # contributors y: 100 lines of code src/guardrails/utils/context.py x: 3 # contributors y: 38 lines of code src/guardrails/utils/schema.py x: 3 # contributors y: 149 lines of code src/guardrails/checks/__init__.py x: 3 # contributors y: 26 lines of code src/guardrails/checks/text/competitors.py x: 3 # contributors y: 29 lines of code src/guardrails/evals/core/json_reporter.py x: 3 # contributors y: 87 lines of code src/guardrails/evals/core/validate_dataset.py x: 3 # contributors y: 55 lines of code src/guardrails/resources/chat/__init__.py x: 3 # contributors y: 7 lines of code src/guardrails/checks/text/__init__.py x: 2 # contributors y: 1 lines of code src/guardrails/evals/core/__init__.py x: 2 # contributors y: 38 lines of code src/guardrails/exceptions.py x: 2 # contributors y: 27 lines of code src/guardrails/utils/output.py x: 2 # contributors y: 93 lines of code src/guardrails/utils/parsing.py x: 2 # contributors y: 147 lines of code
627.0
lines of code
  min: 1.0
  average: 127.55
  25th percentile: 30.5
  median: 87.0
  75th percentile: 200.5
  max: 627.0
0 5.0
# contributors
min: 1.0 | average: 3.47 | 25th percentile: 3.0 | median: 4.0 | 75th percentile: 4.0 | max: 5.0

Number of Changes vs. Line Churn: 178 points

.github/workflows/ci.yml x: 4 # changes y: 98 line churn .github/workflows/docs.yml x: 3 # changes y: 112 line churn .github/workflows/publish.yml x: 4 # changes y: 74 line churn src/guardrails/_base_client.py x: 9 # changes y: 1146 line churn src/guardrails/checks/text/llm_base.py x: 12 # changes y: 1075 line churn src/guardrails/checks/text/moderation.py x: 6 # changes y: 573 line churn src/guardrails/checks/text/pii.py x: 9 # changes y: 1534 line churn src/guardrails/checks/text/prompt_injection_detection.py x: 12 # changes y: 1369 line churn tests/unit/checks/test_hallucination_detection.py x: 2 # changes y: 139 line churn tests/unit/checks/test_llm_base.py x: 7 # changes y: 718 line churn tests/unit/checks/test_prompt_injection_detection.py x: 7 # changes y: 738 line churn tests/unit/test_response_flattening.py x: 2 # changes y: 417 line churn pyproject.toml x: 15 # changes y: 325 line churn docs/ref/checks/custom_prompt_check.md x: 4 # changes y: 118 line churn docs/ref/checks/jailbreak.md x: 8 # changes y: 346 line churn docs/ref/checks/nsfw.md x: 7 # changes y: 216 line churn docs/ref/checks/prompt_injection_detection.md x: 7 # changes y: 353 line churn src/guardrails/checks/text/jailbreak.py x: 8 # changes y: 546 line churn tests/unit/checks/test_jailbreak.py x: 4 # changes y: 741 line churn docs/ref/checks/hallucination_detection.md x: 7 # changes y: 580 line churn src/guardrails/checks/text/hallucination_detection.py x: 9 # changes y: 777 line churn src/guardrails/checks/text/nsfw.py x: 2 # changes y: 178 line churn src/guardrails/checks/text/off_topic_prompts.py x: 4 # changes y: 206 line churn src/guardrails/checks/text/user_defined_llm.py x: 4 # changes y: 195 line churn src/guardrails/evals/core/benchmark_reporter.py x: 4 # changes y: 602 line churn docs/agents_sdk_integration.md x: 3 # changes y: 234 line churn docs/quickstart.md x: 7 # changes y: 507 line churn examples/basic/hello_world.py x: 7 # changes y: 256 line churn examples/basic/local_model.py x: 5 # changes y: 227 line churn examples/basic/multi_bundle.py x: 6 # changes y: 308 line churn src/guardrails/__init__.py x: 4 # changes y: 173 line churn src/guardrails/agents.py x: 9 # changes y: 2187 line churn src/guardrails/checks/text/urls.py x: 6 # changes y: 947 line churn src/guardrails/client.py x: 8 # changes y: 2131 line churn src/guardrails/evals/core/async_engine.py x: 8 # changes y: 915 line churn src/guardrails/types.py x: 7 # changes y: 497 line churn src/guardrails/utils/anonymizer.py x: 2 # changes y: 157 line churn tests/unit/checks/test_anonymizer_baseline.py x: 2 # changes y: 195 line churn tests/unit/evals/test_async_engine.py x: 5 # changes y: 256 line churn tests/unit/evals/test_guardrail_evals.py x: 2 # changes y: 71 line churn tests/unit/test_agents.py x: 7 # changes y: 1531 line churn tests/unit/test_base_client.py x: 3 # changes y: 882 line churn tests/unit/test_types.py x: 5 # changes y: 490 line churn src/guardrails/resources/chat/chat.py x: 6 # changes y: 499 line churn src/guardrails/resources/responses/responses.py x: 6 # changes y: 929 line churn tests/unit/test_context.py x: 2 # changes y: 116 line churn README.md x: 7 # changes y: 943 line churn docs/index.md x: 3 # changes y: 124 line churn docs/tripwires.md x: 2 # changes y: 148 line churn examples/basic/azure_implementation.py x: 5 # changes y: 282 line churn examples/basic/multiturn_chat_with_alignment.py x: 6 # changes y: 888 line churn examples/basic/pii_mask_example.py x: 6 # changes y: 402 line churn examples/basic/structured_outputs_example.py x: 6 # changes y: 220 line churn examples/basic/suppress_tripwire.py x: 5 # changes y: 234 line churn examples/hallucination_detection/run_hallucination_detection.py x: 5 # changes y: 185 line churn examples/implementation_code/blocking/blocking_completions.py x: 5 # changes y: 130 line churn examples/implementation_code/blocking/blocking_responses.py x: 4 # changes y: 122 line churn examples/implementation_code/streaming/streaming_completions.py x: 5 # changes y: 153 line churn examples/implementation_code/streaming/streaming_responses.py x: 4 # changes y: 156 line churn examples/internal_examples/custom_context.py x: 2 # changes y: 78 line churn tests/unit/checks/test_urls.py x: 2 # changes y: 488 line churn src/guardrails/evals/core/visualizer.py x: 4 # changes y: 855 line churn docs/evals.md x: 7 # changes y: 512 line churn src/guardrails/evals/guardrail_evals.py x: 8 # changes y: 2040 line churn src/guardrails/checks/text/keywords.py x: 5 # changes y: 330 line churn tests/unit/checks/test_keywords.py x: 3 # changes y: 198 line churn .gitignore x: 3 # changes y: 47 line churn src/guardrails/spec.py x: 2 # changes y: 218 line churn tests/unit/checks/test_pii.py x: 3 # changes y: 589 line churn examples/basic/agents_sdk.py x: 4 # changes y: 182 line churn docs/ref/checks/secret_keys.md x: 2 # changes y: 90 line churn docs/ref/checks/urls.md x: 2 # changes y: 164 line churn src/guardrails/checks/text/secret_keys.py x: 5 # changes y: 836 line churn src/guardrails/evals/README.md x: 5 # changes y: 506 line churn tests/integration/test_suite.py x: 4 # changes y: 1299 line churn tests/unit/checks/test_moderation.py x: 3 # changes y: 222 line churn src/guardrails/_openai_utils.py x: 2 # changes y: 50 line churn src/guardrails/runtime.py x: 5 # changes y: 1211 line churn src/guardrails/utils/create_vector_store.py x: 4 # changes y: 355 line churn tests/unit/test_openai_utils.py x: 2 # changes y: 66 line churn requirements.txt x: 3 # changes y: 732 line churn mkdocs.yml x: 3 # changes y: 187 line churn src/guardrails/evals/.gitignore x: 2 # changes y: 17 line churn src/guardrails/evals/core/types.py x: 4 # changes y: 260 line churn tests/unit/test_resources_responses.py x: 3 # changes y: 450 line churn examples/basic/custom_context.py x: 4 # changes y: 219 line churn tests/unit/test_runtime.py x: 5 # changes y: 758 line churn src/guardrails/_streaming.py x: 4 # changes y: 315 line churn src/guardrails/utils/__init__.py x: 2 # changes y: 28 line churn src/guardrails/utils/conversation.py x: 1 # changes y: 328 line churn tests/unit/test_client_async.py x: 3 # changes y: 438 line churn tests/unit/test_client_sync.py x: 3 # changes y: 657 line churn tests/unit/test_resources_chat.py x: 2 # changes y: 288 line churn src/guardrails/evals/__init__.py x: 3 # changes y: 78 line churn src/guardrails/cli.py x: 3 # changes y: 207 line churn src/guardrails/context.py x: 3 # changes y: 153 line churn src/guardrails/evals/core/jsonl_loader.py x: 3 # changes y: 144 line churn src/guardrails/evals/core/latency_tester.py x: 3 # changes y: 281 line churn src/guardrails/registry.py x: 2 # changes y: 537 line churn src/guardrails/utils/schema.py x: 2 # changes y: 574 line churn tests/unit/test_registry.py x: 4 # changes y: 363 line churn tests/unit/checks/test_secret_keys.py x: 1 # changes y: 35 line churn tests/unit/test_cli.py x: 1 # changes y: 72 line churn tests/unit/test_streaming.py x: 1 # changes y: 162 line churn tests/unit/utils/test_parsing.py x: 1 # changes y: 47 line churn src/guardrails/checks/text/competitors.py x: 2 # changes y: 184 line churn src/guardrails/evals/core/json_reporter.py x: 2 # changes y: 316 line churn src/guardrails/resources/chat/__init__.py x: 2 # changes y: 24 line churn tests/integration/test_guardrails.py x: 2 # changes y: 260 line churn Makefile x: 2 # changes y: 122 line churn openai-guardrails-docs-setup.md x: 1 # changes y: 648 line churn examples/implementation_code/fast/fast_completions.py x: 2 # changes y: 208 line churn examples/implementation_code/fast/fast_responses.py x: 2 # changes y: 256 line churn examples/implementation_code/slow/slow_responses.py x: 2 # changes y: 200 line churn examples/implementation_code/streaming/guardrails_config.json x: 1 # changes y: 84 line churn src/guardrails/evals/requirements-benchmark.txt x: 2 # changes y: 52 line churn examples/implementation_code/synchronous/synchronous_completions.py x: 1 # changes y: 92 line churn examples/implementation_code/synchronous/synchronous_responses.py x: 1 # changes y: 100 line churn .dockerignore x: 1 # changes y: 8 line churn .pre-commit-config.yaml x: 1 # changes y: 18 line churn AGENTS.md x: 1 # changes y: 698 line churn docs/assets/images/favicon-platform.svg x: 1 # changes y: 32 line churn docs/ref/exceptions-python.md x: 1 # changes y: 10 line churn docs/stylesheets/extra.css x: 1 # changes y: 388 line churn src/guardrails/evals/eval_demo/demo_data.jsonl x: 1 # changes y: 200 line churn src/guardrails/exceptions.py x: 1 # changes y: 122 line churn src/guardrails/utils/parsing.py x: 1 # changes y: 476 line churn
2187.0
line churn
  min: 2.0
  average: 321.6
  25th percentile: 78.0
  median: 184.0
  75th percentile: 438.0
  max: 2187.0
0 15.0
# changes
min: 1.0 | average: 3.3 | 25th percentile: 1.0 | median: 2.0 | 75th percentile: 4.25 | max: 15.0

Number of Contributors vs. Line Churn: 53 points

src/guardrails/_base_client.py x: 4 # contributors y: 1146 line churn src/guardrails/checks/text/llm_base.py x: 4 # contributors y: 1075 line churn src/guardrails/checks/text/moderation.py x: 4 # contributors y: 573 line churn src/guardrails/checks/text/pii.py x: 4 # contributors y: 1534 line churn src/guardrails/checks/text/prompt_injection_detection.py x: 4 # contributors y: 1369 line churn src/guardrails/checks/text/jailbreak.py x: 4 # contributors y: 546 line churn src/guardrails/checks/text/hallucination_detection.py x: 5 # contributors y: 777 line churn src/guardrails/checks/text/nsfw.py x: 3 # contributors y: 178 line churn src/guardrails/checks/text/off_topic_prompts.py x: 4 # contributors y: 206 line churn src/guardrails/checks/text/user_defined_llm.py x: 4 # contributors y: 195 line churn src/guardrails/evals/core/benchmark_reporter.py x: 4 # contributors y: 602 line churn src/guardrails/__init__.py x: 4 # contributors y: 173 line churn src/guardrails/agents.py x: 4 # contributors y: 2187 line churn src/guardrails/checks/text/urls.py x: 4 # contributors y: 947 line churn src/guardrails/client.py x: 4 # contributors y: 2131 line churn src/guardrails/evals/core/async_engine.py x: 4 # contributors y: 915 line churn src/guardrails/types.py x: 4 # contributors y: 497 line churn src/guardrails/utils/anonymizer.py x: 1 # contributors y: 157 line churn src/guardrails/resources/chat/chat.py x: 5 # contributors y: 499 line churn src/guardrails/resources/responses/responses.py x: 5 # contributors y: 929 line churn src/guardrails/evals/core/visualizer.py x: 4 # contributors y: 855 line churn src/guardrails/evals/guardrail_evals.py x: 4 # contributors y: 2040 line churn src/guardrails/checks/text/keywords.py x: 4 # contributors y: 330 line churn src/guardrails/spec.py x: 3 # contributors y: 218 line churn src/guardrails/checks/text/secret_keys.py x: 4 # contributors y: 836 line churn src/guardrails/utils/safety_identifier.py x: 1 # contributors y: 69 line churn src/guardrails/runtime.py x: 4 # contributors y: 1211 line churn src/guardrails/utils/create_vector_store.py x: 4 # contributors y: 355 line churn src/guardrails/evals/core/types.py x: 4 # contributors y: 260 line churn src/guardrails/_streaming.py x: 4 # contributors y: 315 line churn src/guardrails/utils/__init__.py x: 3 # contributors y: 28 line churn src/guardrails/utils/conversation.py x: 1 # contributors y: 328 line churn src/guardrails/evals/__init__.py x: 4 # contributors y: 78 line churn src/guardrails/cli.py x: 4 # contributors y: 207 line churn src/guardrails/context.py x: 4 # contributors y: 153 line churn src/guardrails/evals/core/benchmark_calculator.py x: 4 # contributors y: 438 line churn src/guardrails/evals/core/calculator.py x: 4 # contributors y: 223 line churn src/guardrails/evals/core/jsonl_loader.py x: 4 # contributors y: 144 line churn src/guardrails/evals/core/latency_tester.py x: 4 # contributors y: 281 line churn src/guardrails/registry.py x: 3 # contributors y: 537 line churn src/guardrails/utils/context.py x: 3 # contributors y: 160 line churn src/guardrails/utils/schema.py x: 3 # contributors y: 574 line churn src/guardrails/checks/__init__.py x: 3 # contributors y: 80 line churn src/guardrails/checks/text/competitors.py x: 3 # contributors y: 184 line churn src/guardrails/evals/core/json_reporter.py x: 3 # contributors y: 316 line churn src/guardrails/evals/core/validate_dataset.py x: 3 # contributors y: 190 line churn src/guardrails/resources/chat/__init__.py x: 3 # contributors y: 24 line churn src/guardrails/checks/text/__init__.py x: 2 # contributors y: 20 line churn src/guardrails/evals/core/__init__.py x: 2 # contributors y: 90 line churn src/guardrails/exceptions.py x: 2 # contributors y: 122 line churn src/guardrails/utils/output.py x: 2 # contributors y: 328 line churn src/guardrails/utils/parsing.py x: 2 # contributors y: 476 line churn
2187.0
line churn
  min: 20.0
  average: 530.68
  25th percentile: 166.5
  median: 328.0
  75th percentile: 806.5
  max: 2187.0
0 5.0
# contributors
min: 1.0 | average: 3.47 | 25th percentile: 3.0 | median: 4.0 | 75th percentile: 4.0 | max: 5.0

File Size vs. Line Churn: 53 points

src/guardrails/_base_client.py x: 306 lines of code y: 1146 line churn src/guardrails/checks/text/llm_base.py x: 309 lines of code y: 1075 line churn src/guardrails/checks/text/moderation.py x: 101 lines of code y: 573 line churn src/guardrails/checks/text/pii.py x: 372 lines of code y: 1534 line churn src/guardrails/checks/text/prompt_injection_detection.py x: 204 lines of code y: 1369 line churn src/guardrails/checks/text/jailbreak.py x: 28 lines of code y: 546 line churn src/guardrails/checks/text/hallucination_detection.py x: 140 lines of code y: 777 line churn src/guardrails/checks/text/nsfw.py x: 17 lines of code y: 178 line churn src/guardrails/checks/text/off_topic_prompts.py x: 20 lines of code y: 206 line churn src/guardrails/checks/text/user_defined_llm.py x: 21 lines of code y: 195 line churn src/guardrails/evals/core/benchmark_reporter.py x: 154 lines of code y: 602 line churn src/guardrails/__init__.py x: 56 lines of code y: 173 line churn src/guardrails/agents.py x: 408 lines of code y: 2187 line churn src/guardrails/checks/text/urls.py x: 279 lines of code y: 947 line churn src/guardrails/client.py x: 541 lines of code y: 2131 line churn src/guardrails/evals/core/async_engine.py x: 278 lines of code y: 915 line churn src/guardrails/types.py x: 140 lines of code y: 497 line churn src/guardrails/utils/anonymizer.py x: 49 lines of code y: 157 line churn src/guardrails/resources/chat/chat.py x: 115 lines of code y: 499 line churn src/guardrails/resources/responses/responses.py x: 255 lines of code y: 929 line churn src/guardrails/evals/core/visualizer.py x: 212 lines of code y: 855 line churn src/guardrails/evals/guardrail_evals.py x: 627 lines of code y: 2040 line churn src/guardrails/checks/text/keywords.py x: 65 lines of code y: 330 line churn src/guardrails/spec.py x: 40 lines of code y: 218 line churn src/guardrails/checks/text/secret_keys.py x: 197 lines of code y: 836 line churn src/guardrails/utils/safety_identifier.py x: 23 lines of code y: 69 line churn src/guardrails/runtime.py x: 206 lines of code y: 1211 line churn src/guardrails/utils/create_vector_store.py x: 92 lines of code y: 355 line churn src/guardrails/evals/core/types.py x: 51 lines of code y: 260 line churn src/guardrails/_streaming.py x: 98 lines of code y: 315 line churn src/guardrails/utils/__init__.py x: 1 lines of code y: 28 line churn src/guardrails/utils/conversation.py x: 219 lines of code y: 328 line churn src/guardrails/evals/__init__.py x: 32 lines of code y: 78 line churn src/guardrails/cli.py x: 53 lines of code y: 207 line churn src/guardrails/context.py x: 20 lines of code y: 153 line churn src/guardrails/evals/core/benchmark_calculator.py x: 92 lines of code y: 438 line churn src/guardrails/evals/core/calculator.py x: 41 lines of code y: 223 line churn src/guardrails/evals/core/jsonl_loader.py x: 34 lines of code y: 144 line churn src/guardrails/evals/core/latency_tester.py x: 62 lines of code y: 281 line churn src/guardrails/registry.py x: 100 lines of code y: 537 line churn src/guardrails/utils/context.py x: 38 lines of code y: 160 line churn src/guardrails/utils/schema.py x: 149 lines of code y: 574 line churn src/guardrails/checks/__init__.py x: 26 lines of code y: 80 line churn src/guardrails/checks/text/competitors.py x: 29 lines of code y: 184 line churn src/guardrails/evals/core/json_reporter.py x: 87 lines of code y: 316 line churn src/guardrails/evals/core/validate_dataset.py x: 55 lines of code y: 190 line churn src/guardrails/resources/chat/__init__.py x: 7 lines of code y: 24 line churn src/guardrails/resources/responses/__init__.py x: 5 lines of code y: 20 line churn src/guardrails/checks/text/__init__.py x: 1 lines of code y: 20 line churn src/guardrails/evals/core/__init__.py x: 38 lines of code y: 90 line churn src/guardrails/exceptions.py x: 27 lines of code y: 122 line churn src/guardrails/utils/output.py x: 93 lines of code y: 328 line churn src/guardrails/utils/parsing.py x: 147 lines of code y: 476 line churn
2187.0
line churn
  min: 20.0
  average: 530.68
  25th percentile: 166.5
  median: 328.0
  75th percentile: 806.5
  max: 2187.0
0 627.0
lines of code
min: 1.0 | average: 127.55 | 25th percentile: 30.5 | median: 87.0 | 75th percentile: 200.5 | max: 627.0