-
Notifications
You must be signed in to change notification settings - Fork 4
Accumulated changes to the integration branch #1596
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Changes from all commits
8bb4407
30fc43c
ebe3857
7503cc2
3f57a7d
67cf058
b2f5782
5ab274d
460350a
2365e28
b6a0ddb
c42ba04
55a637b
9656b5a
c7a2d77
64169de
90b364e
8f742ad
358f3d7
67cc3bf
5e3df5f
acf329b
83b3041
851f9f2
46e8132
e6be7a3
bd3b8f2
d243e47
28687b8
c191881
71d0c4d
9fbe762
543e50d
29a3794
b2dd88b
254008e
4b95c85
64934da
48b904a
6be9a95
b76564e
8607350
8ca6584
920d2ce
5750342
1393309
fd8815a
00eaeed
9f095d8
09e64c6
027a77d
ffff1f9
2dc7990
8b0f0f9
dd400f7
0b4e4bb
660e298
ba4a353
070d198
b59d9bd
1cad354
4f5068d
cd74d62
8a60ced
c417b1d
133fa9c
211da16
ba43e9d
af48931
0162529
57a1bb7
1e97612
1983c66
20e6115
77d848a
5247c69
fb2e2bf
7b8d26d
fccd4b3
b9c5181
bdd85e4
08ac6aa
d84fd74
17da4b3
95c9bdb
98abe1a
7b34940
0edff4e
5f055a0
f21f3ad
942df14
74a18cd
f5e8797
a020738
342fca0
629f506
c095345
f603e52
ce12315
4b9a4b6
7f22696
2324c3c
8c01a50
822843e
2a5e046
9d66701
2f13b54
6396266
b11ebfc
f94cf41
3526f9a
27aa976
8fa9305
7f0278a
9010eec
cc1f63c
7b95ec9
f0ba65a
360385f
99586e5
103ace6
02bef92
f7ab0ad
76ac03f
140f996
9d67877
fb9ec38
b612ec6
872d749
f8a4e12
5e353d6
50b27f0
956e600
b1cbd73
d59dfc3
27f5c62
c16abfc
642ad59
1f79acf
6dba8c8
3afcfd4
01c9dc6
b51194d
52c9f3f
71b467c
8a0c4f9
9c00d72
36855cb
8a84a77
5bbbf39
c137c9a
1a9c6e2
fb0828f
e96095b
2b7a993
bce68b0
0f39b12
0232cf2
f5c5c98
5853f7d
937c235
49cfb44
e85b9de
ab240ae
6253b1e
15fbffd
d371fd1
0847845
0b46c0c
ba97d92
375ab30
79d8d75
543401b
5c36abc
f39405a
edaedfb
4fd6dcc
b8fe8c3
4bbf743
014ae45
21aeeda
98719bc
73e80f8
1e3a9db
7b2779a
be424d9
0e16428
4e984ba
de11d4a
574734b
4c87fb6
9e6d273
a60c832
656613a
2a4b567
778eecf
304bde2
ef3ca28
ca75bc7
01d58e1
c622d2b
3bf0576
31f8815
3b878cb
5c93e7b
200edb1
b9f0f86
6384cd0
7647b1a
7a154f5
8cc3fa2
5682f90
9aaf0c4
daa6826
f6fdf89
614168a
3256da0
a97715f
81a4455
c3311a7
24baa90
e5308ef
802d381
60164c1
e14b994
0f01a29
ebb1b59
703e1bd
ec379fd
e1719eb
66ad3f7
a066803
096cc1e
859a305
34b3221
3590dee
175489b
43b537e
75a511b
322d644
f0a31a0
e35ebf1
63591bd
4b97a54
508ee8c
be368af
2784a8e
1f5b060
2e9eb15
1343bc7
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,5 @@ | ||
| # Use the Official DBpedia Spotlight API ... | ||
| DBPEDIA_SPOTLIGHT_URL="https://api.dbpedia-spotlight.org/en/annotate" | ||
|
|
||
| # ... or a custom DBpedia Spotlight API endpoint | ||
| #DBPEDIA_SPOTLIGHT_URL="https://example.org/rest/annotate" | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -11,7 +11,7 @@ jobs: | |
|
|
||
| steps: | ||
| - name: Checkout repository | ||
| uses: actions/checkout@v4 | ||
| uses: actions/checkout@v6 | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🧩 Analysis chain🏁 Script executed: #!/bin/bash
# Verify that v6 exists and retrieve the exact commit SHA to pin.
# Read-only commands only.
set -euo pipefail
echo "Latest checkout tags (top 20):"
curl -fsSL "https://api.github.com/repos/actions/checkout/tags?per_page=20" | jq -r '.[].name'
echo
echo "Resolve v6 to commit SHA:"
curl -fsSL "https://api.github.com/repos/actions/checkout/git/ref/tags/v6" | jq -r '.object.sha'Repository: ude-soco/CourseMapper-webserver Length of output: 172 🏁 Script executed: #!/bin/bash
# Check if the workflow file exists and examine line 14 and surrounding context
if [ -f ".github/workflows/release.yml" ]; then
echo "=== Workflow file found ==="
echo "Lines 1-20 of .github/workflows/release.yml:"
head -20 ".github/workflows/release.yml" | cat -n
echo
echo "=== Full file (checking for permissions declarations) ==="
cat ".github/workflows/release.yml"
else
echo "Workflow file not found at .github/workflows/release.yml"
# List what's in .github/workflows if it exists
if [ -d ".github/workflows" ]; then
echo "Contents of .github/workflows/:"
ls -la ".github/workflows/"
fi
fiRepository: ude-soco/CourseMapper-webserver Length of output: 1626 🌐 Web query:
💡 Result: The GitHub Actions actions/checkout v6 tag refers to the major version 6 of the official checkout action, used to check out repositories in workflows. The latest release under v6 is v6.0.2, released on January 9, 2026. Key details: - Tag: actions/checkout@v6 or specifically actions/checkout@v6.0.2 - Main changes in v6.0.0: Improved credential security by storing persist-credentials in $RUNNER_TEMP instead of .git/config (requires Actions Runner v2.329.0+ for Docker containers). No workflow changes needed for most users; git commands like fetch/push still work. - Usage example: - uses: actions/checkout@v6 with: repository: 'owner/repo' # optional ref: 'branch-or-tag' # optional - Requires Node.js 24 runtime support. - Official repository: https://github.com/actions/checkout (50 releases total, latest v6.0.2). As of 2026-04-21, v6 is the current major version. Citations:
🌐 Web query:
💡 Result: GitHub Actions security best practices emphasize pinning actions to full-length commit SHAs instead of mutable version tags (like Citations:
Pin Line 14 uses 🤖 Prompt for AI Agents |
||
|
|
||
| - name: Check for stable semver | ||
| id: semver | ||
|
|
||
| Original file line number | Diff line number | Diff line change | ||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
@@ -32,6 +32,9 @@ spec: | |||||||||||||||||||
| value: postgres://postgres:password@$(WP_PG_SERVICE):5432 | ||||||||||||||||||||
| - name: WIKIPEDIA_FALLBACK | ||||||||||||||||||||
| value: "false" | ||||||||||||||||||||
| envFrom: | ||||||||||||||||||||
| - configMapRef: | ||||||||||||||||||||
| name: dbpedia-spotlight | ||||||||||||||||||||
|
Comment on lines
+35
to
+37
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. YAML indentation breaks manifest –
- - name: WIKIPEDIA_FALLBACK
- value: "false"
- envFrom:
- - configMapRef:
- name: dbpedia-spotlight
+ - name: WIKIPEDIA_FALLBACK
+ value: "false"
+
+ envFrom:
+ - configMapRef:
+ name: dbpedia-spotlight📝 Committable suggestion
Suggested change
🧰 Tools🪛 YAMLlint (1.37.1)[error] 36-36: wrong indentation: expected 10 but found 8 (indentation) 🤖 Prompt for AI Agents |
||||||||||||||||||||
| resources: | ||||||||||||||||||||
| requests: | ||||||||||||||||||||
| cpu: 100m | ||||||||||||||||||||
|
|
||||||||||||||||||||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,8 +1,10 @@ | ||
| apiVersion: kustomize.config.k8s.io/v1beta1 | ||
| kind: Kustomization | ||
|
|
||
| commonLabels: | ||
| app.kubernetes.io/component: coursemapper-kg-concept-map | ||
| labels: | ||
| - includeSelectors: true | ||
| pairs: | ||
| app.kubernetes.io/component: coursemapper-kg-concept-map | ||
|
|
||
| resources: | ||
| - deployment.yaml |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,8 +1,10 @@ | ||
| apiVersion: kustomize.config.k8s.io/v1beta1 | ||
| kind: Kustomization | ||
|
|
||
| commonLabels: | ||
| app.kubernetes.io/component: coursemapper-kg-recommendation | ||
| labels: | ||
| - includeSelectors: true | ||
| pairs: | ||
| app.kubernetes.io/component: coursemapper-kg-recommendation | ||
|
ralf-berger marked this conversation as resolved.
|
||
|
|
||
| resources: | ||
| - deployment.yaml | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -28,6 +28,9 @@ spec: | |
| httpGet: | ||
| path: /api/healthz | ||
| port: 8080 | ||
| timeoutSeconds: 30 | ||
| failureThreshold: 5 | ||
| periodSeconds: 60 | ||
|
Comment on lines
+31
to
+33
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 💡 Verification agent 🧩 Analysis chainProbe timings might delay failure detection by ~5 min
🏁 Script executed: #!/bin/bash
# Show probe context around the timeoutSeconds setting
rg -nC3 'timeoutSeconds' .k8s/base/webserver/web/deployment.yamlLength of output: 258 Probe timings might delay failure detection by ~5 minutes The current livenessProbe settings in These values can delay marking the pod as unhealthy—and triggering a restart—by up to 5 minutes (5 × 60 s). If your web container is stateless and expected to recover quickly, consider more aggressive timings, for example:
🤖 Prompt for AI Agents |
||
| env: | ||
| - name: PORT | ||
| value: "8080" | ||
|
|
@@ -39,6 +42,13 @@ spec: | |
| value: $(REDIS_SERVICE) | ||
| - name: REDIS_PORT | ||
| value: "6379" | ||
| - name: MEMORY_REQUEST | ||
| valueFrom: | ||
| resourceFieldRef: | ||
| divisor: "1Mi" | ||
| resource: requests.memory | ||
| - name: NODE_OPTIONS | ||
| value: "--max-old-space-size=$(MEMORY_REQUEST)" | ||
|
ralf-berger marked this conversation as resolved.
|
||
| envFrom: | ||
| - secretRef: | ||
| name: webserver | ||
|
|
@@ -54,11 +64,11 @@ spec: | |
| subPath: videos | ||
| resources: | ||
| requests: | ||
| memory: 360Mi | ||
| memory: 2Gi | ||
| cpu: 100m | ||
| limits: | ||
| memory: 1Gi | ||
| cpu: "1" | ||
| memory: 2.5Gi | ||
| cpu: "1.15" | ||
| ephemeral-storage: 1Gi | ||
| volumes: | ||
| - name: webserver-uploads | ||
|
|
||
| Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
@@ -6,27 +6,27 @@ CourseMapper is a collaborative course annotation and analytics platform that fo | |||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||
| ## 🚀 Get Started | ||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||
| #### Live instances | ||||||||||||||||||||||||||||||||||||||||||||||
| #### 🌎 Live instances | ||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||
|
Comment on lines
+9
to
10
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Fix heading level jump (
-#### 🌎 Live instances
+### 🌎 Live instances📝 Committable suggestion
Suggested change
🧰 Tools🪛 LanguageTool[grammar] ~9-~9: Use correct spacing (QB_NEW_EN_OTHER_ERROR_IDS_5) 🪛 markdownlint-cli2 (0.17.2)9-9: Heading levels should only increment by one level at a time (MD001, heading-increment) 🤖 Prompt for AI Agents |
||||||||||||||||||||||||||||||||||||||||||||||
| - Production: | ||||||||||||||||||||||||||||||||||||||||||||||
| [coursemapper.de](https://coursemapper.de/) | ||||||||||||||||||||||||||||||||||||||||||||||
| ([branch `main`](https://github.com/ude-soco/CourseMapper-webserver/tree/main)) | ||||||||||||||||||||||||||||||||||||||||||||||
|  | ||||||||||||||||||||||||||||||||||||||||||||||
|  | ||||||||||||||||||||||||||||||||||||||||||||||
| - Preview: | ||||||||||||||||||||||||||||||||||||||||||||||
| [br-dev.coursemapper.de](https://br-dev.coursemapper.de/) | ||||||||||||||||||||||||||||||||||||||||||||||
| ([branch `dev`](https://github.com/ude-soco/CourseMapper-webserver/tree/dev)) | ||||||||||||||||||||||||||||||||||||||||||||||
|  | ||||||||||||||||||||||||||||||||||||||||||||||
|  | ||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||
| *Note:* Stable [releases](https://github.com/ude-soco/CourseMapper-webserver/releases) are currently not running in production. | ||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||
| #### Build and run | ||||||||||||||||||||||||||||||||||||||||||||||
| #### 🐳 Compose | ||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||
| - `make up` to run the application using _Docker Compose_ | ||||||||||||||||||||||||||||||||||||||||||||||
| - `make tilt` to automatically rebuild during development using _Tilt_ | ||||||||||||||||||||||||||||||||||||||||||||||
| - `make mounted` to run processes using _Docker Compose_, but mount source code from host machine | ||||||||||||||||||||||||||||||||||||||||||||||
| - see the manual below to install dependencies and run processes _locally, without containers_ | ||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||
| Visit the [proxy service on port 8000](http://localhost:8000/) to use the application. | ||||||||||||||||||||||||||||||||||||||||||||||
| 1. Set up `.env` file (see `.env.dist`) | ||||||||||||||||||||||||||||||||||||||||||||||
| 2. Build and run | ||||||||||||||||||||||||||||||||||||||||||||||
| - `make up` to run the application using _Docker Compose_ | ||||||||||||||||||||||||||||||||||||||||||||||
| - `make tilt` to automatically rebuild during development using _Tilt_ | ||||||||||||||||||||||||||||||||||||||||||||||
| - `make mounted` to run processes using _Docker Compose_, but mount source code from host machine | ||||||||||||||||||||||||||||||||||||||||||||||
| 3. Visit the [proxy service on port 8000](http://localhost:8000/) to use the application. | ||||||||||||||||||||||||||||||||||||||||||||||
|
Comment on lines
+22
to
+29
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🧹 Nitpick (assertive) Heading level & emphasis style inconsistencies
-#### 🐳 Compose
+### 🐳 Compose
- - `make up` to run the application using _Docker Compose_
+ - `make up` to run the application using *Docker Compose*Adopting consistent heading hierarchy and emphasis style keeps the README lint-clean. 📝 Committable suggestion
Suggested change
🧰 Tools🪛 LanguageTool[grammar] ~22-~22: Use correct spacing (QB_NEW_EN_OTHER_ERROR_IDS_5) [grammar] ~24-~24: Use articles correctly (QB_NEW_EN_OTHER_ERROR_IDS_11) [grammar] ~24-~24: There might be a mistake here. (QB_NEW_EN_OTHER) [grammar] ~25-~25: Use correct spacing (QB_NEW_EN_OTHER_ERROR_IDS_5) [grammar] ~26-~26: There might be a mistake here. (QB_NEW_EN_OTHER) [grammar] ~27-~27: Avoid presenting a sentence fragment as a complete sentence (QB_NEW_EN_OTHER_ERROR_IDS_27) [grammar] ~28-~28: There might be a problem here. (QB_NEW_EN_MERGED_MATCH) [grammar] ~29-~29: Use correct spacing (QB_NEW_EN_OTHER_ERROR_IDS_5) 🪛 markdownlint-cli2 (0.17.2)26-26: Emphasis style (MD049, emphasis-style) 26-26: Emphasis style (MD049, emphasis-style) 27-27: Emphasis style (MD049, emphasis-style) 27-27: Emphasis style (MD049, emphasis-style) 28-28: Emphasis style (MD049, emphasis-style) 28-28: Emphasis style (MD049, emphasis-style) 🤖 Prompt for AI Agents |
||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||
| ## 🖥️ Application stack | ||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||
| Original file line number | Diff line number | Diff line change | ||||
|---|---|---|---|---|---|---|
|
|
@@ -14,6 +14,7 @@ services: | |||||
| PIPELINES: concept-map | ||||||
| WIKIPEDIA_DATABASE_CONNECTION_STRING: "postgres://postgres:password@wp-pg:5432/" | ||||||
| WIKIPEDIA_FALLBACK: false | ||||||
| DBPEDIA_SPOTLIGHT_URL: ${DBPEDIA_SPOTLIGHT_URL} | ||||||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🧹 Nitpick (assertive) Propagate variable safely – fallback to a sensible default If the host does not export - DBPEDIA_SPOTLIGHT_URL: ${DBPEDIA_SPOTLIGHT_URL}
+ DBPEDIA_SPOTLIGHT_URL: ${DBPEDIA_SPOTLIGHT_URL:-https://api.dbpedia-spotlight.org/en/annotate}📝 Committable suggestion
Suggested change
🤖 Prompt for AI Agents |
||||||
| depends_on: | ||||||
| neo4j: | ||||||
| condition: service_healthy | ||||||
|
|
||||||
| Original file line number | Diff line number | Diff line change | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| @@ -1,9 +1,15 @@ | ||||||||||
| WIKIPEDIA_DATABASE_CONNECTION_STRING= | ||||||||||
| PIPELINES=concept-map,modify-graph,expand-material | ||||||||||
|
|
||||||||||
| NEO4J_URI=bolt://localhost:7687 | ||||||||||
| NEO4J_USER=neo4j | ||||||||||
| NEO4J_PASSWORD=1234qwer! | ||||||||||
|
|
||||||||||
| REDIS_HOST=localhost | ||||||||||
| REDIS_PORT=6379 | ||||||||||
| REDIS_DATABASE=0 | ||||||||||
| REDIS_PASSWORD= | ||||||||||
| PIPELINES=concept-map,modify-graph,expand-material | ||||||||||
|
|
||||||||||
| WIKIPEDIA_DATABASE_CONNECTION_STRING= | ||||||||||
|
|
||||||||||
| DBPEDIA_SPOTLIGHT_URL="https://api.dbpedia-spotlight.org/en/annotate" # official DBpedia Spotlight API ... | ||||||||||
| #DBPEDIA_SPOTLIGHT_URL="https://example.org/rest/annotate" # ... or custom instance | ||||||||||
|
Comment on lines
+14
to
+15
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🧹 Nitpick (assertive) Inconsistent quoting may break some All other variables are unquoted, yet -DBPEDIA_SPOTLIGHT_URL="https://api.dbpedia-spotlight.org/en/annotate" # official DBpedia Spotlight API ...
+DBPEDIA_SPOTLIGHT_URL=https://api.dbpedia-spotlight.org/en/annotate # official DBpedia Spotlight API ...Apply the same change to the commented custom instance line for consistency. 📝 Committable suggestion
Suggested change
🤖 Prompt for AI Agents |
||||||||||
| Original file line number | Diff line number | Diff line change | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|
|
|
@@ -19,9 +19,7 @@ class Config: | |||||||||
| NEO4J_PASSWORD = os.getenv('NEO4J_PASSWORD', 'password') | ||||||||||
| NEO4J_SAVE_TO_DB = os.getenv('NEO4J_SAVE_TO_DB', 'true').lower() == 'true' | ||||||||||
|
|
||||||||||
| DBPEDIA_SPOTLIGHT_URL = os.getenv('DBPEDIA_SPOTLIGHT_URL', 'https://dbpedia-spotlight-en.soco.inko.cloud/rest/annotate') | ||||||||||
| # Uncomment the line below to use the official DBpedia Spotlight API | ||||||||||
| # DBPEDIA_SPOTLIGHT_URL = os.getenv('DBPEDIA_SPOTLIGHT_URL', 'https://api.dbpedia-spotlight.org/en/annotate') | ||||||||||
| DBPEDIA_SPOTLIGHT_URL = os.getenv('DBPEDIA_SPOTLIGHT_URL') | ||||||||||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🛠️ Refactor suggestion Missing fallback will set With the default removed, every runtime environment must provide the If the intention is to make the value mandatory, raise early: - DBPEDIA_SPOTLIGHT_URL = os.getenv('DBPEDIA_SPOTLIGHT_URL')
+ DBPEDIA_SPOTLIGHT_URL = os.getenv('DBPEDIA_SPOTLIGHT_URL')
+ if not DBPEDIA_SPOTLIGHT_URL:
+ raise RuntimeError("DBPEDIA_SPOTLIGHT_URL must be set")📝 Committable suggestion
Suggested change
🤖 Prompt for AI Agents |
||||||||||
| DBPEDIA_SPOTLIGHT_CONFIDENCE = float(os.getenv('DBPEDIA_SPOTLIGHT_CONFIDENCE', '0.35')) | ||||||||||
| DBPEDIA_SPOTLIGHT_SUPPORT = int(os.getenv('DBPEDIA_SPOTLIGHT_SUPPORT', '5')) | ||||||||||
|
|
||||||||||
|
|
||||||||||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧹 Nitpick (assertive)
Remove quotes to satisfy dotenv linters and avoid accidental quoting at runtime
Most dotenv parsers (including python-dotenv) treat surrounding quotes as part of the value, so the URL may become
"https://api.dbpedia-spotlight.org/en/annotate"(quotes included) and HTTP clients will choke.The static-analysis warning flags exactly that.
📝 Committable suggestion
🧰 Tools
🪛 dotenv-linter (3.3.0)
[warning] 2-2: [QuoteCharacter] The value has quote characters (', ")
🤖 Prompt for AI Agents