tfrere
commited on
Commit
·
fcaa899
0
Parent(s):
update
Browse files- .gitattributes +35 -0
- README.md +10 -0
- client/.eslintrc.cjs +20 -0
- client/.gitignore +1 -0
- client/package.json +31 -0
- client/src/App.js +130 -0
- client/src/App.jsx +140 -0
- client/src/index.css +1 -0
- client/src/index.js +22 -0
- client/src/main.jsx +23 -0
- client/vite.config.js +16 -0
- client/yarn-error.log +31 -0
- client/yarn.lock +0 -0
- server/.env.example +4 -0
- server/.gitignore +7 -0
- server/poetry.lock +1052 -0
- server/pyproject.toml +22 -0
- server/server.py +111 -0
.gitattributes
ADDED
@@ -0,0 +1,35 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
*.7z filter=lfs diff=lfs merge=lfs -text
|
2 |
+
*.arrow filter=lfs diff=lfs merge=lfs -text
|
3 |
+
*.bin filter=lfs diff=lfs merge=lfs -text
|
4 |
+
*.bz2 filter=lfs diff=lfs merge=lfs -text
|
5 |
+
*.ckpt filter=lfs diff=lfs merge=lfs -text
|
6 |
+
*.ftz filter=lfs diff=lfs merge=lfs -text
|
7 |
+
*.gz filter=lfs diff=lfs merge=lfs -text
|
8 |
+
*.h5 filter=lfs diff=lfs merge=lfs -text
|
9 |
+
*.joblib filter=lfs diff=lfs merge=lfs -text
|
10 |
+
*.lfs.* filter=lfs diff=lfs merge=lfs -text
|
11 |
+
*.mlmodel filter=lfs diff=lfs merge=lfs -text
|
12 |
+
*.model filter=lfs diff=lfs merge=lfs -text
|
13 |
+
*.msgpack filter=lfs diff=lfs merge=lfs -text
|
14 |
+
*.npy filter=lfs diff=lfs merge=lfs -text
|
15 |
+
*.npz filter=lfs diff=lfs merge=lfs -text
|
16 |
+
*.onnx filter=lfs diff=lfs merge=lfs -text
|
17 |
+
*.ot filter=lfs diff=lfs merge=lfs -text
|
18 |
+
*.parquet filter=lfs diff=lfs merge=lfs -text
|
19 |
+
*.pb filter=lfs diff=lfs merge=lfs -text
|
20 |
+
*.pickle filter=lfs diff=lfs merge=lfs -text
|
21 |
+
*.pkl filter=lfs diff=lfs merge=lfs -text
|
22 |
+
*.pt filter=lfs diff=lfs merge=lfs -text
|
23 |
+
*.pth filter=lfs diff=lfs merge=lfs -text
|
24 |
+
*.rar filter=lfs diff=lfs merge=lfs -text
|
25 |
+
*.safetensors filter=lfs diff=lfs merge=lfs -text
|
26 |
+
saved_model/**/* filter=lfs diff=lfs merge=lfs -text
|
27 |
+
*.tar.* filter=lfs diff=lfs merge=lfs -text
|
28 |
+
*.tar filter=lfs diff=lfs merge=lfs -text
|
29 |
+
*.tflite filter=lfs diff=lfs merge=lfs -text
|
30 |
+
*.tgz filter=lfs diff=lfs merge=lfs -text
|
31 |
+
*.wasm filter=lfs diff=lfs merge=lfs -text
|
32 |
+
*.xz filter=lfs diff=lfs merge=lfs -text
|
33 |
+
*.zip filter=lfs diff=lfs merge=lfs -text
|
34 |
+
*.zst filter=lfs diff=lfs merge=lfs -text
|
35 |
+
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
README.md
ADDED
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
---
|
2 |
+
title: Dont Lookup
|
3 |
+
emoji: 💻
|
4 |
+
colorFrom: red
|
5 |
+
colorTo: blue
|
6 |
+
sdk: docker
|
7 |
+
pinned: false
|
8 |
+
---
|
9 |
+
|
10 |
+
Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
|
client/.eslintrc.cjs
ADDED
@@ -0,0 +1,20 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
module.exports = {
|
2 |
+
root: true,
|
3 |
+
env: { browser: true, es2020: true },
|
4 |
+
extends: [
|
5 |
+
"eslint:recommended",
|
6 |
+
"plugin:react/recommended",
|
7 |
+
"plugin:react/jsx-runtime",
|
8 |
+
"plugin:react-hooks/recommended",
|
9 |
+
],
|
10 |
+
ignorePatterns: ["dist", ".eslintrc.cjs"],
|
11 |
+
parserOptions: { ecmaVersion: "latest", sourceType: "module" },
|
12 |
+
settings: { react: { version: "18.2" } },
|
13 |
+
plugins: ["react-refresh"],
|
14 |
+
rules: {
|
15 |
+
"react-refresh/only-export-components": [
|
16 |
+
"warn",
|
17 |
+
{ allowConstantExport: true },
|
18 |
+
],
|
19 |
+
},
|
20 |
+
};
|
client/.gitignore
ADDED
@@ -0,0 +1 @@
|
|
|
|
|
1 |
+
node_modules/
|
client/package.json
ADDED
@@ -0,0 +1,31 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"name": "client",
|
3 |
+
"private": true,
|
4 |
+
"version": "0.0.0",
|
5 |
+
"type": "module",
|
6 |
+
"scripts": {
|
7 |
+
"dev": "vite",
|
8 |
+
"build": "vite build",
|
9 |
+
"lint": "eslint . --ext js,jsx --report-unused-disable-directives --max-warnings 0",
|
10 |
+
"preview": "vite preview"
|
11 |
+
},
|
12 |
+
"dependencies": {
|
13 |
+
"@emotion/react": "^11.11.3",
|
14 |
+
"@emotion/styled": "^11.11.0",
|
15 |
+
"@mui/icons-material": "^5.15.10",
|
16 |
+
"@mui/material": "^5.15.10",
|
17 |
+
"axios": "^1.6.7",
|
18 |
+
"react": "^18.2.0",
|
19 |
+
"react-dom": "^18.2.0"
|
20 |
+
},
|
21 |
+
"devDependencies": {
|
22 |
+
"@types/react": "^18.2.55",
|
23 |
+
"@types/react-dom": "^18.2.19",
|
24 |
+
"@vitejs/plugin-react": "^4.2.1",
|
25 |
+
"eslint": "^8.56.0",
|
26 |
+
"eslint-plugin-react": "^7.33.2",
|
27 |
+
"eslint-plugin-react-hooks": "^4.6.0",
|
28 |
+
"eslint-plugin-react-refresh": "^0.4.5",
|
29 |
+
"vite": "^5.1.0"
|
30 |
+
}
|
31 |
+
}
|
client/src/App.js
ADDED
@@ -0,0 +1,130 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import React, { useState } from "react";
|
2 |
+
import {
|
3 |
+
Container,
|
4 |
+
Paper,
|
5 |
+
TextField,
|
6 |
+
IconButton,
|
7 |
+
List,
|
8 |
+
ListItem,
|
9 |
+
ListItemText,
|
10 |
+
Typography,
|
11 |
+
Box,
|
12 |
+
} from "@mui/material";
|
13 |
+
import SendIcon from "@mui/icons-material/Send";
|
14 |
+
import VolumeUpIcon from "@mui/icons-material/VolumeUp";
|
15 |
+
import axios from "axios";
|
16 |
+
|
17 |
+
function App() {
|
18 |
+
const [messages, setMessages] = useState([]);
|
19 |
+
const [input, setInput] = useState("");
|
20 |
+
const [isLoading, setIsLoading] = useState(false);
|
21 |
+
|
22 |
+
const handleSend = async () => {
|
23 |
+
if (!input.trim()) return;
|
24 |
+
|
25 |
+
const newMessage = { role: "user", content: input };
|
26 |
+
setMessages([...messages, newMessage]);
|
27 |
+
setInput("");
|
28 |
+
setIsLoading(true);
|
29 |
+
|
30 |
+
try {
|
31 |
+
const response = await axios.post("http://localhost:8000/chat", {
|
32 |
+
messages: [...messages, newMessage],
|
33 |
+
});
|
34 |
+
|
35 |
+
const assistantMessage = {
|
36 |
+
role: "assistant",
|
37 |
+
content: response.data.text,
|
38 |
+
audio: response.data.audio,
|
39 |
+
};
|
40 |
+
|
41 |
+
setMessages((prev) => [...prev, assistantMessage]);
|
42 |
+
} catch (error) {
|
43 |
+
console.error("Error:", error);
|
44 |
+
} finally {
|
45 |
+
setIsLoading(false);
|
46 |
+
}
|
47 |
+
};
|
48 |
+
|
49 |
+
const playAudio = (audioData) => {
|
50 |
+
const audio = new Audio(`data:audio/mpeg;base64,${audioData}`);
|
51 |
+
audio.play();
|
52 |
+
};
|
53 |
+
|
54 |
+
return (
|
55 |
+
<Container maxWidth="md" sx={{ height: "100vh", py: 4 }}>
|
56 |
+
<Paper
|
57 |
+
elevation={3}
|
58 |
+
sx={{ height: "100%", display: "flex", flexDirection: "column" }}
|
59 |
+
>
|
60 |
+
<Typography
|
61 |
+
variant="h4"
|
62 |
+
sx={{ p: 2, borderBottom: 1, borderColor: "divider" }}
|
63 |
+
>
|
64 |
+
Chat avec IA
|
65 |
+
</Typography>
|
66 |
+
|
67 |
+
<List sx={{ flexGrow: 1, overflow: "auto", p: 2 }}>
|
68 |
+
{messages.map((message, index) => (
|
69 |
+
<ListItem
|
70 |
+
key={index}
|
71 |
+
sx={{
|
72 |
+
flexDirection: "column",
|
73 |
+
alignItems: message.role === "user" ? "flex-end" : "flex-start",
|
74 |
+
mb: 2,
|
75 |
+
}}
|
76 |
+
>
|
77 |
+
<Box
|
78 |
+
sx={{
|
79 |
+
maxWidth: "70%",
|
80 |
+
backgroundColor:
|
81 |
+
message.role === "user" ? "primary.main" : "grey.200",
|
82 |
+
borderRadius: 2,
|
83 |
+
p: 2,
|
84 |
+
}}
|
85 |
+
>
|
86 |
+
<ListItemText
|
87 |
+
primary={message.content}
|
88 |
+
sx={{
|
89 |
+
"& .MuiListItemText-primary": {
|
90 |
+
color: message.role === "user" ? "white" : "black",
|
91 |
+
},
|
92 |
+
}}
|
93 |
+
/>
|
94 |
+
</Box>
|
95 |
+
{message.audio && (
|
96 |
+
<IconButton
|
97 |
+
onClick={() => playAudio(message.audio)}
|
98 |
+
sx={{ mt: 1 }}
|
99 |
+
>
|
100 |
+
<VolumeUpIcon />
|
101 |
+
</IconButton>
|
102 |
+
)}
|
103 |
+
</ListItem>
|
104 |
+
))}
|
105 |
+
</List>
|
106 |
+
|
107 |
+
<Box sx={{ p: 2, borderTop: 1, borderColor: "divider" }}>
|
108 |
+
<TextField
|
109 |
+
fullWidth
|
110 |
+
variant="outlined"
|
111 |
+
placeholder="Tapez votre message..."
|
112 |
+
value={input}
|
113 |
+
onChange={(e) => setInput(e.target.value)}
|
114 |
+
onKeyPress={(e) => e.key === "Enter" && handleSend()}
|
115 |
+
disabled={isLoading}
|
116 |
+
InputProps={{
|
117 |
+
endAdornment: (
|
118 |
+
<IconButton onClick={handleSend} disabled={isLoading}>
|
119 |
+
<SendIcon />
|
120 |
+
</IconButton>
|
121 |
+
),
|
122 |
+
}}
|
123 |
+
/>
|
124 |
+
</Box>
|
125 |
+
</Paper>
|
126 |
+
</Container>
|
127 |
+
);
|
128 |
+
}
|
129 |
+
|
130 |
+
export default App;
|
client/src/App.jsx
ADDED
@@ -0,0 +1,140 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import React, { useState } from "react";
|
2 |
+
import {
|
3 |
+
Container,
|
4 |
+
Paper,
|
5 |
+
TextField,
|
6 |
+
IconButton,
|
7 |
+
List,
|
8 |
+
ListItem,
|
9 |
+
ListItemText,
|
10 |
+
Typography,
|
11 |
+
Box,
|
12 |
+
CircularProgress,
|
13 |
+
} from "@mui/material";
|
14 |
+
import SendIcon from "@mui/icons-material/Send";
|
15 |
+
import VolumeUpIcon from "@mui/icons-material/VolumeUp";
|
16 |
+
import axios from "axios";
|
17 |
+
|
18 |
+
function App() {
|
19 |
+
const [messages, setMessages] = useState([]);
|
20 |
+
const [input, setInput] = useState("");
|
21 |
+
const [isLoading, setIsLoading] = useState(false);
|
22 |
+
|
23 |
+
const handleSend = async () => {
|
24 |
+
if (!input.trim()) return;
|
25 |
+
|
26 |
+
const newMessage = { role: "user", content: input };
|
27 |
+
setMessages([...messages, newMessage]);
|
28 |
+
setInput("");
|
29 |
+
setIsLoading(true);
|
30 |
+
|
31 |
+
try {
|
32 |
+
const response = await axios.post("/api/chat", {
|
33 |
+
messages: [...messages, newMessage],
|
34 |
+
});
|
35 |
+
|
36 |
+
const assistantMessage = {
|
37 |
+
role: "assistant",
|
38 |
+
content: response.data.text,
|
39 |
+
audio: response.data.audio,
|
40 |
+
};
|
41 |
+
|
42 |
+
setMessages((prev) => [...prev, assistantMessage]);
|
43 |
+
} catch (error) {
|
44 |
+
console.error("Error:", error);
|
45 |
+
} finally {
|
46 |
+
setIsLoading(false);
|
47 |
+
}
|
48 |
+
};
|
49 |
+
|
50 |
+
const playAudio = (audioData) => {
|
51 |
+
const audio = new Audio(`data:audio/mpeg;base64,${audioData}`);
|
52 |
+
audio.play();
|
53 |
+
};
|
54 |
+
|
55 |
+
return (
|
56 |
+
<Container maxWidth="md" sx={{ height: "100vh", py: 4 }}>
|
57 |
+
<Paper
|
58 |
+
elevation={3}
|
59 |
+
sx={{ height: "100%", display: "flex", flexDirection: "column" }}
|
60 |
+
>
|
61 |
+
<Typography
|
62 |
+
variant="h4"
|
63 |
+
sx={{ p: 2, borderBottom: 1, borderColor: "divider" }}
|
64 |
+
>
|
65 |
+
Chat avec IA
|
66 |
+
</Typography>
|
67 |
+
|
68 |
+
<List sx={{ flexGrow: 1, overflow: "auto", p: 2 }}>
|
69 |
+
{messages.map((message, index) => (
|
70 |
+
<ListItem
|
71 |
+
key={index}
|
72 |
+
sx={{
|
73 |
+
flexDirection: "column",
|
74 |
+
alignItems: message.role === "user" ? "flex-end" : "flex-start",
|
75 |
+
mb: 2,
|
76 |
+
}}
|
77 |
+
>
|
78 |
+
<Box
|
79 |
+
sx={{
|
80 |
+
maxWidth: "70%",
|
81 |
+
backgroundColor:
|
82 |
+
message.role === "user" ? "primary.main" : "grey.200",
|
83 |
+
borderRadius: 2,
|
84 |
+
p: 2,
|
85 |
+
}}
|
86 |
+
>
|
87 |
+
<ListItemText
|
88 |
+
primary={message.content}
|
89 |
+
sx={{
|
90 |
+
"& .MuiListItemText-primary": {
|
91 |
+
color: message.role === "user" ? "white" : "black",
|
92 |
+
},
|
93 |
+
}}
|
94 |
+
/>
|
95 |
+
</Box>
|
96 |
+
{message.audio && (
|
97 |
+
<IconButton
|
98 |
+
onClick={() => playAudio(message.audio)}
|
99 |
+
sx={{ mt: 1 }}
|
100 |
+
>
|
101 |
+
<VolumeUpIcon />
|
102 |
+
</IconButton>
|
103 |
+
)}
|
104 |
+
</ListItem>
|
105 |
+
))}
|
106 |
+
</List>
|
107 |
+
|
108 |
+
<Box
|
109 |
+
sx={{
|
110 |
+
p: 2,
|
111 |
+
borderTop: 1,
|
112 |
+
borderColor: "divider",
|
113 |
+
position: "relative",
|
114 |
+
}}
|
115 |
+
>
|
116 |
+
<TextField
|
117 |
+
fullWidth
|
118 |
+
variant="outlined"
|
119 |
+
placeholder="Tapez votre message..."
|
120 |
+
value={input}
|
121 |
+
onChange={(e) => setInput(e.target.value)}
|
122 |
+
onKeyPress={(e) => e.key === "Enter" && !e.shiftKey && handleSend()}
|
123 |
+
disabled={isLoading}
|
124 |
+
multiline
|
125 |
+
maxRows={4}
|
126 |
+
InputProps={{
|
127 |
+
endAdornment: (
|
128 |
+
<IconButton onClick={handleSend} disabled={isLoading}>
|
129 |
+
{isLoading ? <CircularProgress size={24} /> : <SendIcon />}
|
130 |
+
</IconButton>
|
131 |
+
),
|
132 |
+
}}
|
133 |
+
/>
|
134 |
+
</Box>
|
135 |
+
</Paper>
|
136 |
+
</Container>
|
137 |
+
);
|
138 |
+
}
|
139 |
+
|
140 |
+
export default App;
|
client/src/index.css
ADDED
@@ -0,0 +1 @@
|
|
|
|
|
1 |
+
|
client/src/index.js
ADDED
@@ -0,0 +1,22 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import React from "react";
|
2 |
+
import ReactDOM from "react-dom/client";
|
3 |
+
import "./index.css";
|
4 |
+
import App from "./App";
|
5 |
+
import { ThemeProvider, createTheme } from "@mui/material";
|
6 |
+
|
7 |
+
const theme = createTheme({
|
8 |
+
palette: {
|
9 |
+
primary: {
|
10 |
+
main: "#1976d2",
|
11 |
+
},
|
12 |
+
},
|
13 |
+
});
|
14 |
+
|
15 |
+
const root = ReactDOM.createRoot(document.getElementById("root"));
|
16 |
+
root.render(
|
17 |
+
<React.StrictMode>
|
18 |
+
<ThemeProvider theme={theme}>
|
19 |
+
<App />
|
20 |
+
</ThemeProvider>
|
21 |
+
</React.StrictMode>
|
22 |
+
);
|
client/src/main.jsx
ADDED
@@ -0,0 +1,23 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import React from "react";
|
2 |
+
import ReactDOM from "react-dom/client";
|
3 |
+
import App from "./App.jsx";
|
4 |
+
import { ThemeProvider, createTheme } from "@mui/material";
|
5 |
+
import CssBaseline from "@mui/material/CssBaseline";
|
6 |
+
|
7 |
+
const theme = createTheme({
|
8 |
+
palette: {
|
9 |
+
mode: "light",
|
10 |
+
primary: {
|
11 |
+
main: "#1976d2",
|
12 |
+
},
|
13 |
+
},
|
14 |
+
});
|
15 |
+
|
16 |
+
ReactDOM.createRoot(document.getElementById("root")).render(
|
17 |
+
<React.StrictMode>
|
18 |
+
<ThemeProvider theme={theme}>
|
19 |
+
<CssBaseline />
|
20 |
+
<App />
|
21 |
+
</ThemeProvider>
|
22 |
+
</React.StrictMode>
|
23 |
+
);
|
client/vite.config.js
ADDED
@@ -0,0 +1,16 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import { defineConfig } from "vite";
|
2 |
+
import react from "@vitejs/plugin-react";
|
3 |
+
|
4 |
+
export default defineConfig({
|
5 |
+
plugins: [react()],
|
6 |
+
server: {
|
7 |
+
port: 3000,
|
8 |
+
proxy: {
|
9 |
+
"/api": {
|
10 |
+
target: "http://localhost:8000",
|
11 |
+
changeOrigin: true,
|
12 |
+
rewrite: (path) => path.replace(/^\/api/, ""),
|
13 |
+
},
|
14 |
+
},
|
15 |
+
},
|
16 |
+
});
|
client/yarn-error.log
ADDED
@@ -0,0 +1,31 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
Arguments:
|
2 |
+
/Users/frerethibaud/.nvm/versions/node/v16.13.0/bin/node /Users/frerethibaud/.nvm/versions/node/v16.13.0/bin/yarn install
|
3 |
+
|
4 |
+
PATH:
|
5 |
+
/Users/frerethibaud/.codeium/windsurf/bin:/opt/homebrew/opt/openjdk/bin:/Users/frerethibaud/Specific/google-cloud-sdk/bin:/Users/frerethibaud/.nvm/versions/node/v16.13.0/bin:/Users/frerethibaud/.nvm/versions/node/v16.13.0/bin:/opt/homebrew/bin:/opt/homebrew/sbin:/usr/local/bin:/System/Cryptexes/App/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin:/Applications/VMware Fusion.app/Contents/Public:/Users/frerethibaud/.codeium/windsurf/bin:/opt/homebrew/opt/openjdk/bin:/Users/frerethibaud/anaconda3/bin:/Users/frerethibaud/anaconda3/condabin:/Users/frerethibaud/Specific/google-cloud-sdk/bin:/Users/frerethibaud/.nvm/versions/node/v16.13.0/bin:/Users/frerethibaud/.cargo/bin
|
6 |
+
|
7 |
+
Yarn version:
|
8 |
+
1.22.19
|
9 |
+
|
10 |
+
Node version:
|
11 |
+
16.13.0
|
12 |
+
|
13 |
+
Platform:
|
14 |
+
darwin arm64
|
15 |
+
|
16 |
+
Trace:
|
17 |
+
SyntaxError: /Users/frerethibaud/Documents/personal-projects/dont-lookup/client/package.json: Unexpected end of JSON input
|
18 |
+
at JSON.parse (<anonymous>)
|
19 |
+
at /Users/frerethibaud/.nvm/versions/node/v16.13.0/lib/node_modules/yarn/lib/cli.js:1629:59
|
20 |
+
at Generator.next (<anonymous>)
|
21 |
+
at step (/Users/frerethibaud/.nvm/versions/node/v16.13.0/lib/node_modules/yarn/lib/cli.js:310:30)
|
22 |
+
at /Users/frerethibaud/.nvm/versions/node/v16.13.0/lib/node_modules/yarn/lib/cli.js:321:13
|
23 |
+
|
24 |
+
npm manifest:
|
25 |
+
|
26 |
+
|
27 |
+
yarn manifest:
|
28 |
+
No manifest
|
29 |
+
|
30 |
+
Lockfile:
|
31 |
+
No lockfile
|
client/yarn.lock
ADDED
The diff for this file is too large to render.
See raw diff
|
|
server/.env.example
ADDED
@@ -0,0 +1,4 @@
|
|
|
|
|
|
|
|
|
|
|
1 |
+
ELEVENLABS_API_KEY=your_api_key_here
|
2 |
+
ELEVENLABS_VOICE_ID=your_voice_id_here
|
3 |
+
ELEVENLABS_MODEL_ID=eleven_monolingual_v1 # ou eleven_multilingual_v2
|
4 |
+
OPENAI_API_KEY=your_openai_api_key_here
|
server/.gitignore
ADDED
@@ -0,0 +1,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
__pycache__/
|
2 |
+
*.py[cod]
|
3 |
+
.env
|
4 |
+
.venv
|
5 |
+
dist/
|
6 |
+
*.egg-info/
|
7 |
+
.pytest_cache/
|
server/poetry.lock
ADDED
@@ -0,0 +1,1052 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# This file is automatically @generated by Poetry 1.8.4 and should not be changed by hand.
|
2 |
+
|
3 |
+
[[package]]
|
4 |
+
name = "annotated-types"
|
5 |
+
version = "0.7.0"
|
6 |
+
description = "Reusable constraint types to use with typing.Annotated"
|
7 |
+
optional = false
|
8 |
+
python-versions = ">=3.8"
|
9 |
+
files = [
|
10 |
+
{file = "annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53"},
|
11 |
+
{file = "annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89"},
|
12 |
+
]
|
13 |
+
|
14 |
+
[[package]]
|
15 |
+
name = "anyio"
|
16 |
+
version = "4.8.0"
|
17 |
+
description = "High level compatibility layer for multiple asynchronous event loop implementations"
|
18 |
+
optional = false
|
19 |
+
python-versions = ">=3.9"
|
20 |
+
files = [
|
21 |
+
{file = "anyio-4.8.0-py3-none-any.whl", hash = "sha256:b5011f270ab5eb0abf13385f851315585cc37ef330dd88e27ec3d34d651fd47a"},
|
22 |
+
{file = "anyio-4.8.0.tar.gz", hash = "sha256:1d9fe889df5212298c0c0723fa20479d1b94883a2df44bd3897aa91083316f7a"},
|
23 |
+
]
|
24 |
+
|
25 |
+
[package.dependencies]
|
26 |
+
exceptiongroup = {version = ">=1.0.2", markers = "python_version < \"3.11\""}
|
27 |
+
idna = ">=2.8"
|
28 |
+
sniffio = ">=1.1"
|
29 |
+
typing_extensions = {version = ">=4.5", markers = "python_version < \"3.13\""}
|
30 |
+
|
31 |
+
[package.extras]
|
32 |
+
doc = ["Sphinx (>=7.4,<8.0)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx_rtd_theme"]
|
33 |
+
test = ["anyio[trio]", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "trustme", "truststore (>=0.9.1)", "uvloop (>=0.21)"]
|
34 |
+
trio = ["trio (>=0.26.1)"]
|
35 |
+
|
36 |
+
[[package]]
|
37 |
+
name = "asttokens"
|
38 |
+
version = "3.0.0"
|
39 |
+
description = "Annotate AST trees with source code positions"
|
40 |
+
optional = false
|
41 |
+
python-versions = ">=3.8"
|
42 |
+
files = [
|
43 |
+
{file = "asttokens-3.0.0-py3-none-any.whl", hash = "sha256:e3078351a059199dd5138cb1c706e6430c05eff2ff136af5eb4790f9d28932e2"},
|
44 |
+
{file = "asttokens-3.0.0.tar.gz", hash = "sha256:0dcd8baa8d62b0c1d118b399b2ddba3c4aff271d0d7a9e0d4c1681c79035bbc7"},
|
45 |
+
]
|
46 |
+
|
47 |
+
[package.extras]
|
48 |
+
astroid = ["astroid (>=2,<4)"]
|
49 |
+
test = ["astroid (>=2,<4)", "pytest", "pytest-cov", "pytest-xdist"]
|
50 |
+
|
51 |
+
[[package]]
|
52 |
+
name = "black"
|
53 |
+
version = "23.12.1"
|
54 |
+
description = "The uncompromising code formatter."
|
55 |
+
optional = false
|
56 |
+
python-versions = ">=3.8"
|
57 |
+
files = [
|
58 |
+
{file = "black-23.12.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e0aaf6041986767a5e0ce663c7a2f0e9eaf21e6ff87a5f95cbf3675bfd4c41d2"},
|
59 |
+
{file = "black-23.12.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c88b3711d12905b74206227109272673edce0cb29f27e1385f33b0163c414bba"},
|
60 |
+
{file = "black-23.12.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a920b569dc6b3472513ba6ddea21f440d4b4c699494d2e972a1753cdc25df7b0"},
|
61 |
+
{file = "black-23.12.1-cp310-cp310-win_amd64.whl", hash = "sha256:3fa4be75ef2a6b96ea8d92b1587dd8cb3a35c7e3d51f0738ced0781c3aa3a5a3"},
|
62 |
+
{file = "black-23.12.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:8d4df77958a622f9b5a4c96edb4b8c0034f8434032ab11077ec6c56ae9f384ba"},
|
63 |
+
{file = "black-23.12.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:602cfb1196dc692424c70b6507593a2b29aac0547c1be9a1d1365f0d964c353b"},
|
64 |
+
{file = "black-23.12.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9c4352800f14be5b4864016882cdba10755bd50805c95f728011bcb47a4afd59"},
|
65 |
+
{file = "black-23.12.1-cp311-cp311-win_amd64.whl", hash = "sha256:0808494f2b2df923ffc5723ed3c7b096bd76341f6213989759287611e9837d50"},
|
66 |
+
{file = "black-23.12.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:25e57fd232a6d6ff3f4478a6fd0580838e47c93c83eaf1ccc92d4faf27112c4e"},
|
67 |
+
{file = "black-23.12.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2d9e13db441c509a3763a7a3d9a49ccc1b4e974a47be4e08ade2a228876500ec"},
|
68 |
+
{file = "black-23.12.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d1bd9c210f8b109b1762ec9fd36592fdd528485aadb3f5849b2740ef17e674e"},
|
69 |
+
{file = "black-23.12.1-cp312-cp312-win_amd64.whl", hash = "sha256:ae76c22bde5cbb6bfd211ec343ded2163bba7883c7bc77f6b756a1049436fbb9"},
|
70 |
+
{file = "black-23.12.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1fa88a0f74e50e4487477bc0bb900c6781dbddfdfa32691e780bf854c3b4a47f"},
|
71 |
+
{file = "black-23.12.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:a4d6a9668e45ad99d2f8ec70d5c8c04ef4f32f648ef39048d010b0689832ec6d"},
|
72 |
+
{file = "black-23.12.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b18fb2ae6c4bb63eebe5be6bd869ba2f14fd0259bda7d18a46b764d8fb86298a"},
|
73 |
+
{file = "black-23.12.1-cp38-cp38-win_amd64.whl", hash = "sha256:c04b6d9d20e9c13f43eee8ea87d44156b8505ca8a3c878773f68b4e4812a421e"},
|
74 |
+
{file = "black-23.12.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3e1b38b3135fd4c025c28c55ddfc236b05af657828a8a6abe5deec419a0b7055"},
|
75 |
+
{file = "black-23.12.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4f0031eaa7b921db76decd73636ef3a12c942ed367d8c3841a0739412b260a54"},
|
76 |
+
{file = "black-23.12.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:97e56155c6b737854e60a9ab1c598ff2533d57e7506d97af5481141671abf3ea"},
|
77 |
+
{file = "black-23.12.1-cp39-cp39-win_amd64.whl", hash = "sha256:dd15245c8b68fe2b6bd0f32c1556509d11bb33aec9b5d0866dd8e2ed3dba09c2"},
|
78 |
+
{file = "black-23.12.1-py3-none-any.whl", hash = "sha256:78baad24af0f033958cad29731e27363183e140962595def56423e626f4bee3e"},
|
79 |
+
{file = "black-23.12.1.tar.gz", hash = "sha256:4ce3ef14ebe8d9509188014d96af1c456a910d5b5cbf434a09fef7e024b3d0d5"},
|
80 |
+
]
|
81 |
+
|
82 |
+
[package.dependencies]
|
83 |
+
click = ">=8.0.0"
|
84 |
+
mypy-extensions = ">=0.4.3"
|
85 |
+
packaging = ">=22.0"
|
86 |
+
pathspec = ">=0.9.0"
|
87 |
+
platformdirs = ">=2"
|
88 |
+
tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""}
|
89 |
+
typing-extensions = {version = ">=4.0.1", markers = "python_version < \"3.11\""}
|
90 |
+
|
91 |
+
[package.extras]
|
92 |
+
colorama = ["colorama (>=0.4.3)"]
|
93 |
+
d = ["aiohttp (>=3.7.4)", "aiohttp (>=3.7.4,!=3.9.0)"]
|
94 |
+
jupyter = ["ipython (>=7.8.0)", "tokenize-rt (>=3.2.0)"]
|
95 |
+
uvloop = ["uvloop (>=0.15.2)"]
|
96 |
+
|
97 |
+
[[package]]
|
98 |
+
name = "certifi"
|
99 |
+
version = "2024.12.14"
|
100 |
+
description = "Python package for providing Mozilla's CA Bundle."
|
101 |
+
optional = false
|
102 |
+
python-versions = ">=3.6"
|
103 |
+
files = [
|
104 |
+
{file = "certifi-2024.12.14-py3-none-any.whl", hash = "sha256:1275f7a45be9464efc1173084eaa30f866fe2e47d389406136d332ed4967ec56"},
|
105 |
+
{file = "certifi-2024.12.14.tar.gz", hash = "sha256:b650d30f370c2b724812bee08008be0c4163b163ddaec3f2546c1caf65f191db"},
|
106 |
+
]
|
107 |
+
|
108 |
+
[[package]]
|
109 |
+
name = "charset-normalizer"
|
110 |
+
version = "3.4.1"
|
111 |
+
description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet."
|
112 |
+
optional = false
|
113 |
+
python-versions = ">=3.7"
|
114 |
+
files = [
|
115 |
+
{file = "charset_normalizer-3.4.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:91b36a978b5ae0ee86c394f5a54d6ef44db1de0815eb43de826d41d21e4af3de"},
|
116 |
+
{file = "charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7461baadb4dc00fd9e0acbe254e3d7d2112e7f92ced2adc96e54ef6501c5f176"},
|
117 |
+
{file = "charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e218488cd232553829be0664c2292d3af2eeeb94b32bea483cf79ac6a694e037"},
|
118 |
+
{file = "charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:80ed5e856eb7f30115aaf94e4a08114ccc8813e6ed1b5efa74f9f82e8509858f"},
|
119 |
+
{file = "charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b010a7a4fd316c3c484d482922d13044979e78d1861f0e0650423144c616a46a"},
|
120 |
+
{file = "charset_normalizer-3.4.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4532bff1b8421fd0a320463030c7520f56a79c9024a4e88f01c537316019005a"},
|
121 |
+
{file = "charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:d973f03c0cb71c5ed99037b870f2be986c3c05e63622c017ea9816881d2dd247"},
|
122 |
+
{file = "charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:3a3bd0dcd373514dcec91c411ddb9632c0d7d92aed7093b8c3bbb6d69ca74408"},
|
123 |
+
{file = "charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:d9c3cdf5390dcd29aa8056d13e8e99526cda0305acc038b96b30352aff5ff2bb"},
|
124 |
+
{file = "charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:2bdfe3ac2e1bbe5b59a1a63721eb3b95fc9b6817ae4a46debbb4e11f6232428d"},
|
125 |
+
{file = "charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:eab677309cdb30d047996b36d34caeda1dc91149e4fdca0b1a039b3f79d9a807"},
|
126 |
+
{file = "charset_normalizer-3.4.1-cp310-cp310-win32.whl", hash = "sha256:c0429126cf75e16c4f0ad00ee0eae4242dc652290f940152ca8c75c3a4b6ee8f"},
|
127 |
+
{file = "charset_normalizer-3.4.1-cp310-cp310-win_amd64.whl", hash = "sha256:9f0b8b1c6d84c8034a44893aba5e767bf9c7a211e313a9605d9c617d7083829f"},
|
128 |
+
{file = "charset_normalizer-3.4.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:8bfa33f4f2672964266e940dd22a195989ba31669bd84629f05fab3ef4e2d125"},
|
129 |
+
{file = "charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:28bf57629c75e810b6ae989f03c0828d64d6b26a5e205535585f96093e405ed1"},
|
130 |
+
{file = "charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f08ff5e948271dc7e18a35641d2f11a4cd8dfd5634f55228b691e62b37125eb3"},
|
131 |
+
{file = "charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:234ac59ea147c59ee4da87a0c0f098e9c8d169f4dc2a159ef720f1a61bbe27cd"},
|
132 |
+
{file = "charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd4ec41f914fa74ad1b8304bbc634b3de73d2a0889bd32076342a573e0779e00"},
|
133 |
+
{file = "charset_normalizer-3.4.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eea6ee1db730b3483adf394ea72f808b6e18cf3cb6454b4d86e04fa8c4327a12"},
|
134 |
+
{file = "charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:c96836c97b1238e9c9e3fe90844c947d5afbf4f4c92762679acfe19927d81d77"},
|
135 |
+
{file = "charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:4d86f7aff21ee58f26dcf5ae81a9addbd914115cdebcbb2217e4f0ed8982e146"},
|
136 |
+
{file = "charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:09b5e6733cbd160dcc09589227187e242a30a49ca5cefa5a7edd3f9d19ed53fd"},
|
137 |
+
{file = "charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:5777ee0881f9499ed0f71cc82cf873d9a0ca8af166dfa0af8ec4e675b7df48e6"},
|
138 |
+
{file = "charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:237bdbe6159cff53b4f24f397d43c6336c6b0b42affbe857970cefbb620911c8"},
|
139 |
+
{file = "charset_normalizer-3.4.1-cp311-cp311-win32.whl", hash = "sha256:8417cb1f36cc0bc7eaba8ccb0e04d55f0ee52df06df3ad55259b9a323555fc8b"},
|
140 |
+
{file = "charset_normalizer-3.4.1-cp311-cp311-win_amd64.whl", hash = "sha256:d7f50a1f8c450f3925cb367d011448c39239bb3eb4117c36a6d354794de4ce76"},
|
141 |
+
{file = "charset_normalizer-3.4.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:73d94b58ec7fecbc7366247d3b0b10a21681004153238750bb67bd9012414545"},
|
142 |
+
{file = "charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dad3e487649f498dd991eeb901125411559b22e8d7ab25d3aeb1af367df5efd7"},
|
143 |
+
{file = "charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c30197aa96e8eed02200a83fba2657b4c3acd0f0aa4bdc9f6c1af8e8962e0757"},
|
144 |
+
{file = "charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2369eea1ee4a7610a860d88f268eb39b95cb588acd7235e02fd5a5601773d4fa"},
|
145 |
+
{file = "charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc2722592d8998c870fa4e290c2eec2c1569b87fe58618e67d38b4665dfa680d"},
|
146 |
+
{file = "charset_normalizer-3.4.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffc9202a29ab3920fa812879e95a9e78b2465fd10be7fcbd042899695d75e616"},
|
147 |
+
{file = "charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:804a4d582ba6e5b747c625bf1255e6b1507465494a40a2130978bda7b932c90b"},
|
148 |
+
{file = "charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:0f55e69f030f7163dffe9fd0752b32f070566451afe180f99dbeeb81f511ad8d"},
|
149 |
+
{file = "charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:c4c3e6da02df6fa1410a7680bd3f63d4f710232d3139089536310d027950696a"},
|
150 |
+
{file = "charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:5df196eb874dae23dcfb968c83d4f8fdccb333330fe1fc278ac5ceeb101003a9"},
|
151 |
+
{file = "charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e358e64305fe12299a08e08978f51fc21fac060dcfcddd95453eabe5b93ed0e1"},
|
152 |
+
{file = "charset_normalizer-3.4.1-cp312-cp312-win32.whl", hash = "sha256:9b23ca7ef998bc739bf6ffc077c2116917eabcc901f88da1b9856b210ef63f35"},
|
153 |
+
{file = "charset_normalizer-3.4.1-cp312-cp312-win_amd64.whl", hash = "sha256:6ff8a4a60c227ad87030d76e99cd1698345d4491638dfa6673027c48b3cd395f"},
|
154 |
+
{file = "charset_normalizer-3.4.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:aabfa34badd18f1da5ec1bc2715cadc8dca465868a4e73a0173466b688f29dda"},
|
155 |
+
{file = "charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22e14b5d70560b8dd51ec22863f370d1e595ac3d024cb8ad7d308b4cd95f8313"},
|
156 |
+
{file = "charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8436c508b408b82d87dc5f62496973a1805cd46727c34440b0d29d8a2f50a6c9"},
|
157 |
+
{file = "charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2d074908e1aecee37a7635990b2c6d504cd4766c7bc9fc86d63f9c09af3fa11b"},
|
158 |
+
{file = "charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:955f8851919303c92343d2f66165294848d57e9bba6cf6e3625485a70a038d11"},
|
159 |
+
{file = "charset_normalizer-3.4.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:44ecbf16649486d4aebafeaa7ec4c9fed8b88101f4dd612dcaf65d5e815f837f"},
|
160 |
+
{file = "charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:0924e81d3d5e70f8126529951dac65c1010cdf117bb75eb02dd12339b57749dd"},
|
161 |
+
{file = "charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:2967f74ad52c3b98de4c3b32e1a44e32975e008a9cd2a8cc8966d6a5218c5cb2"},
|
162 |
+
{file = "charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:c75cb2a3e389853835e84a2d8fb2b81a10645b503eca9bcb98df6b5a43eb8886"},
|
163 |
+
{file = "charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:09b26ae6b1abf0d27570633b2b078a2a20419c99d66fb2823173d73f188ce601"},
|
164 |
+
{file = "charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:fa88b843d6e211393a37219e6a1c1df99d35e8fd90446f1118f4216e307e48cd"},
|
165 |
+
{file = "charset_normalizer-3.4.1-cp313-cp313-win32.whl", hash = "sha256:eb8178fe3dba6450a3e024e95ac49ed3400e506fd4e9e5c32d30adda88cbd407"},
|
166 |
+
{file = "charset_normalizer-3.4.1-cp313-cp313-win_amd64.whl", hash = "sha256:b1ac5992a838106edb89654e0aebfc24f5848ae2547d22c2c3f66454daa11971"},
|
167 |
+
{file = "charset_normalizer-3.4.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f30bf9fd9be89ecb2360c7d94a711f00c09b976258846efe40db3d05828e8089"},
|
168 |
+
{file = "charset_normalizer-3.4.1-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:97f68b8d6831127e4787ad15e6757232e14e12060bec17091b85eb1486b91d8d"},
|
169 |
+
{file = "charset_normalizer-3.4.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7974a0b5ecd505609e3b19742b60cee7aa2aa2fb3151bc917e6e2646d7667dcf"},
|
170 |
+
{file = "charset_normalizer-3.4.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc54db6c8593ef7d4b2a331b58653356cf04f67c960f584edb7c3d8c97e8f39e"},
|
171 |
+
{file = "charset_normalizer-3.4.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:311f30128d7d333eebd7896965bfcfbd0065f1716ec92bd5638d7748eb6f936a"},
|
172 |
+
{file = "charset_normalizer-3.4.1-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:7d053096f67cd1241601111b698f5cad775f97ab25d81567d3f59219b5f1adbd"},
|
173 |
+
{file = "charset_normalizer-3.4.1-cp37-cp37m-musllinux_1_2_i686.whl", hash = "sha256:807f52c1f798eef6cf26beb819eeb8819b1622ddfeef9d0977a8502d4db6d534"},
|
174 |
+
{file = "charset_normalizer-3.4.1-cp37-cp37m-musllinux_1_2_ppc64le.whl", hash = "sha256:dccbe65bd2f7f7ec22c4ff99ed56faa1e9f785482b9bbd7c717e26fd723a1d1e"},
|
175 |
+
{file = "charset_normalizer-3.4.1-cp37-cp37m-musllinux_1_2_s390x.whl", hash = "sha256:2fb9bd477fdea8684f78791a6de97a953c51831ee2981f8e4f583ff3b9d9687e"},
|
176 |
+
{file = "charset_normalizer-3.4.1-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:01732659ba9b5b873fc117534143e4feefecf3b2078b0a6a2e925271bb6f4cfa"},
|
177 |
+
{file = "charset_normalizer-3.4.1-cp37-cp37m-win32.whl", hash = "sha256:7a4f97a081603d2050bfaffdefa5b02a9ec823f8348a572e39032caa8404a487"},
|
178 |
+
{file = "charset_normalizer-3.4.1-cp37-cp37m-win_amd64.whl", hash = "sha256:7b1bef6280950ee6c177b326508f86cad7ad4dff12454483b51d8b7d673a2c5d"},
|
179 |
+
{file = "charset_normalizer-3.4.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:ecddf25bee22fe4fe3737a399d0d177d72bc22be6913acfab364b40bce1ba83c"},
|
180 |
+
{file = "charset_normalizer-3.4.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c60ca7339acd497a55b0ea5d506b2a2612afb2826560416f6894e8b5770d4a9"},
|
181 |
+
{file = "charset_normalizer-3.4.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b7b2d86dd06bfc2ade3312a83a5c364c7ec2e3498f8734282c6c3d4b07b346b8"},
|
182 |
+
{file = "charset_normalizer-3.4.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dd78cfcda14a1ef52584dbb008f7ac81c1328c0f58184bf9a84c49c605002da6"},
|
183 |
+
{file = "charset_normalizer-3.4.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6e27f48bcd0957c6d4cb9d6fa6b61d192d0b13d5ef563e5f2ae35feafc0d179c"},
|
184 |
+
{file = "charset_normalizer-3.4.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:01ad647cdd609225c5350561d084b42ddf732f4eeefe6e678765636791e78b9a"},
|
185 |
+
{file = "charset_normalizer-3.4.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:619a609aa74ae43d90ed2e89bdd784765de0a25ca761b93e196d938b8fd1dbbd"},
|
186 |
+
{file = "charset_normalizer-3.4.1-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:89149166622f4db9b4b6a449256291dc87a99ee53151c74cbd82a53c8c2f6ccd"},
|
187 |
+
{file = "charset_normalizer-3.4.1-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:7709f51f5f7c853f0fb938bcd3bc59cdfdc5203635ffd18bf354f6967ea0f824"},
|
188 |
+
{file = "charset_normalizer-3.4.1-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:345b0426edd4e18138d6528aed636de7a9ed169b4aaf9d61a8c19e39d26838ca"},
|
189 |
+
{file = "charset_normalizer-3.4.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:0907f11d019260cdc3f94fbdb23ff9125f6b5d1039b76003b5b0ac9d6a6c9d5b"},
|
190 |
+
{file = "charset_normalizer-3.4.1-cp38-cp38-win32.whl", hash = "sha256:ea0d8d539afa5eb2728aa1932a988a9a7af94f18582ffae4bc10b3fbdad0626e"},
|
191 |
+
{file = "charset_normalizer-3.4.1-cp38-cp38-win_amd64.whl", hash = "sha256:329ce159e82018d646c7ac45b01a430369d526569ec08516081727a20e9e4af4"},
|
192 |
+
{file = "charset_normalizer-3.4.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:b97e690a2118911e39b4042088092771b4ae3fc3aa86518f84b8cf6888dbdb41"},
|
193 |
+
{file = "charset_normalizer-3.4.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:78baa6d91634dfb69ec52a463534bc0df05dbd546209b79a3880a34487f4b84f"},
|
194 |
+
{file = "charset_normalizer-3.4.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1a2bc9f351a75ef49d664206d51f8e5ede9da246602dc2d2726837620ea034b2"},
|
195 |
+
{file = "charset_normalizer-3.4.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:75832c08354f595c760a804588b9357d34ec00ba1c940c15e31e96d902093770"},
|
196 |
+
{file = "charset_normalizer-3.4.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0af291f4fe114be0280cdd29d533696a77b5b49cfde5467176ecab32353395c4"},
|
197 |
+
{file = "charset_normalizer-3.4.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0167ddc8ab6508fe81860a57dd472b2ef4060e8d378f0cc555707126830f2537"},
|
198 |
+
{file = "charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:2a75d49014d118e4198bcee5ee0a6f25856b29b12dbf7cd012791f8a6cc5c496"},
|
199 |
+
{file = "charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:363e2f92b0f0174b2f8238240a1a30142e3db7b957a5dd5689b0e75fb717cc78"},
|
200 |
+
{file = "charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:ab36c8eb7e454e34e60eb55ca5d241a5d18b2c6244f6827a30e451c42410b5f7"},
|
201 |
+
{file = "charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:4c0907b1928a36d5a998d72d64d8eaa7244989f7aaaf947500d3a800c83a3fd6"},
|
202 |
+
{file = "charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:04432ad9479fa40ec0f387795ddad4437a2b50417c69fa275e212933519ff294"},
|
203 |
+
{file = "charset_normalizer-3.4.1-cp39-cp39-win32.whl", hash = "sha256:3bed14e9c89dcb10e8f3a29f9ccac4955aebe93c71ae803af79265c9ca5644c5"},
|
204 |
+
{file = "charset_normalizer-3.4.1-cp39-cp39-win_amd64.whl", hash = "sha256:49402233c892a461407c512a19435d1ce275543138294f7ef013f0b63d5d3765"},
|
205 |
+
{file = "charset_normalizer-3.4.1-py3-none-any.whl", hash = "sha256:d98b1668f06378c6dbefec3b92299716b931cd4e6061f3c875a71ced1780ab85"},
|
206 |
+
{file = "charset_normalizer-3.4.1.tar.gz", hash = "sha256:44251f18cd68a75b56585dd00dae26183e102cd5e0f9f1466e6df5da2ed64ea3"},
|
207 |
+
]
|
208 |
+
|
209 |
+
[[package]]
|
210 |
+
name = "click"
|
211 |
+
version = "8.1.8"
|
212 |
+
description = "Composable command line interface toolkit"
|
213 |
+
optional = false
|
214 |
+
python-versions = ">=3.7"
|
215 |
+
files = [
|
216 |
+
{file = "click-8.1.8-py3-none-any.whl", hash = "sha256:63c132bbbed01578a06712a2d1f497bb62d9c1c0d329b7903a866228027263b2"},
|
217 |
+
{file = "click-8.1.8.tar.gz", hash = "sha256:ed53c9d8990d83c2a27deae68e4ee337473f6330c040a31d4225c9574d16096a"},
|
218 |
+
]
|
219 |
+
|
220 |
+
[package.dependencies]
|
221 |
+
colorama = {version = "*", markers = "platform_system == \"Windows\""}
|
222 |
+
|
223 |
+
[[package]]
|
224 |
+
name = "colorama"
|
225 |
+
version = "0.4.6"
|
226 |
+
description = "Cross-platform colored terminal text."
|
227 |
+
optional = false
|
228 |
+
python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7"
|
229 |
+
files = [
|
230 |
+
{file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"},
|
231 |
+
{file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"},
|
232 |
+
]
|
233 |
+
|
234 |
+
[[package]]
|
235 |
+
name = "decorator"
|
236 |
+
version = "5.1.1"
|
237 |
+
description = "Decorators for Humans"
|
238 |
+
optional = false
|
239 |
+
python-versions = ">=3.5"
|
240 |
+
files = [
|
241 |
+
{file = "decorator-5.1.1-py3-none-any.whl", hash = "sha256:b8c3f85900b9dc423225913c5aace94729fe1fa9763b38939a95226f02d37186"},
|
242 |
+
{file = "decorator-5.1.1.tar.gz", hash = "sha256:637996211036b6385ef91435e4fae22989472f9d571faba8927ba8253acbc330"},
|
243 |
+
]
|
244 |
+
|
245 |
+
[[package]]
|
246 |
+
name = "elevenlabs"
|
247 |
+
version = "0.2.27"
|
248 |
+
description = "The official elevenlabs python package."
|
249 |
+
optional = false
|
250 |
+
python-versions = "*"
|
251 |
+
files = [
|
252 |
+
{file = "elevenlabs-0.2.27-py3-none-any.whl", hash = "sha256:c31ea892d5668002bc26d0bb46a6466b0b4e2fe5aaed75cbc1b7011f01d3fa29"},
|
253 |
+
{file = "elevenlabs-0.2.27.tar.gz", hash = "sha256:1b17d3c997557e5aa654b296e3960c25ea183525cfdbd0ec53070b038ba5fd95"},
|
254 |
+
]
|
255 |
+
|
256 |
+
[package.dependencies]
|
257 |
+
ipython = ">=7.0"
|
258 |
+
pydantic = ">=2.0"
|
259 |
+
requests = ">=2.20"
|
260 |
+
websockets = ">=11.0"
|
261 |
+
|
262 |
+
[[package]]
|
263 |
+
name = "exceptiongroup"
|
264 |
+
version = "1.2.2"
|
265 |
+
description = "Backport of PEP 654 (exception groups)"
|
266 |
+
optional = false
|
267 |
+
python-versions = ">=3.7"
|
268 |
+
files = [
|
269 |
+
{file = "exceptiongroup-1.2.2-py3-none-any.whl", hash = "sha256:3111b9d131c238bec2f8f516e123e14ba243563fb135d3fe885990585aa7795b"},
|
270 |
+
{file = "exceptiongroup-1.2.2.tar.gz", hash = "sha256:47c2edf7c6738fafb49fd34290706d1a1a2f4d1c6df275526b62cbb4aa5393cc"},
|
271 |
+
]
|
272 |
+
|
273 |
+
[package.extras]
|
274 |
+
test = ["pytest (>=6)"]
|
275 |
+
|
276 |
+
[[package]]
|
277 |
+
name = "executing"
|
278 |
+
version = "2.2.0"
|
279 |
+
description = "Get the currently executing AST node of a frame, and other information"
|
280 |
+
optional = false
|
281 |
+
python-versions = ">=3.8"
|
282 |
+
files = [
|
283 |
+
{file = "executing-2.2.0-py2.py3-none-any.whl", hash = "sha256:11387150cad388d62750327a53d3339fad4888b39a6fe233c3afbb54ecffd3aa"},
|
284 |
+
{file = "executing-2.2.0.tar.gz", hash = "sha256:5d108c028108fe2551d1a7b2e8b713341e2cb4fc0aa7dcf966fa4327a5226755"},
|
285 |
+
]
|
286 |
+
|
287 |
+
[package.extras]
|
288 |
+
tests = ["asttokens (>=2.1.0)", "coverage", "coverage-enable-subprocess", "ipython", "littleutils", "pytest", "rich"]
|
289 |
+
|
290 |
+
[[package]]
|
291 |
+
name = "fastapi"
|
292 |
+
version = "0.109.2"
|
293 |
+
description = "FastAPI framework, high performance, easy to learn, fast to code, ready for production"
|
294 |
+
optional = false
|
295 |
+
python-versions = ">=3.8"
|
296 |
+
files = [
|
297 |
+
{file = "fastapi-0.109.2-py3-none-any.whl", hash = "sha256:2c9bab24667293b501cad8dd388c05240c850b58ec5876ee3283c47d6e1e3a4d"},
|
298 |
+
{file = "fastapi-0.109.2.tar.gz", hash = "sha256:f3817eac96fe4f65a2ebb4baa000f394e55f5fccdaf7f75250804bc58f354f73"},
|
299 |
+
]
|
300 |
+
|
301 |
+
[package.dependencies]
|
302 |
+
pydantic = ">=1.7.4,<1.8 || >1.8,<1.8.1 || >1.8.1,<2.0.0 || >2.0.0,<2.0.1 || >2.0.1,<2.1.0 || >2.1.0,<3.0.0"
|
303 |
+
starlette = ">=0.36.3,<0.37.0"
|
304 |
+
typing-extensions = ">=4.8.0"
|
305 |
+
|
306 |
+
[package.extras]
|
307 |
+
all = ["email-validator (>=2.0.0)", "httpx (>=0.23.0)", "itsdangerous (>=1.1.0)", "jinja2 (>=2.11.2)", "orjson (>=3.2.1)", "pydantic-extra-types (>=2.0.0)", "pydantic-settings (>=2.0.0)", "python-multipart (>=0.0.7)", "pyyaml (>=5.3.1)", "ujson (>=4.0.1,!=4.0.2,!=4.1.0,!=4.2.0,!=4.3.0,!=5.0.0,!=5.1.0)", "uvicorn[standard] (>=0.12.0)"]
|
308 |
+
|
309 |
+
[[package]]
|
310 |
+
name = "h11"
|
311 |
+
version = "0.14.0"
|
312 |
+
description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1"
|
313 |
+
optional = false
|
314 |
+
python-versions = ">=3.7"
|
315 |
+
files = [
|
316 |
+
{file = "h11-0.14.0-py3-none-any.whl", hash = "sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761"},
|
317 |
+
{file = "h11-0.14.0.tar.gz", hash = "sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d"},
|
318 |
+
]
|
319 |
+
|
320 |
+
[[package]]
|
321 |
+
name = "httpcore"
|
322 |
+
version = "1.0.7"
|
323 |
+
description = "A minimal low-level HTTP client."
|
324 |
+
optional = false
|
325 |
+
python-versions = ">=3.8"
|
326 |
+
files = [
|
327 |
+
{file = "httpcore-1.0.7-py3-none-any.whl", hash = "sha256:a3fff8f43dc260d5bd363d9f9cf1830fa3a458b332856f34282de498ed420edd"},
|
328 |
+
{file = "httpcore-1.0.7.tar.gz", hash = "sha256:8551cb62a169ec7162ac7be8d4817d561f60e08eaa485234898414bb5a8a0b4c"},
|
329 |
+
]
|
330 |
+
|
331 |
+
[package.dependencies]
|
332 |
+
certifi = "*"
|
333 |
+
h11 = ">=0.13,<0.15"
|
334 |
+
|
335 |
+
[package.extras]
|
336 |
+
asyncio = ["anyio (>=4.0,<5.0)"]
|
337 |
+
http2 = ["h2 (>=3,<5)"]
|
338 |
+
socks = ["socksio (==1.*)"]
|
339 |
+
trio = ["trio (>=0.22.0,<1.0)"]
|
340 |
+
|
341 |
+
[[package]]
|
342 |
+
name = "httpx"
|
343 |
+
version = "0.26.0"
|
344 |
+
description = "The next generation HTTP client."
|
345 |
+
optional = false
|
346 |
+
python-versions = ">=3.8"
|
347 |
+
files = [
|
348 |
+
{file = "httpx-0.26.0-py3-none-any.whl", hash = "sha256:8915f5a3627c4d47b73e8202457cb28f1266982d1159bd5779d86a80c0eab1cd"},
|
349 |
+
{file = "httpx-0.26.0.tar.gz", hash = "sha256:451b55c30d5185ea6b23c2c793abf9bb237d2a7dfb901ced6ff69ad37ec1dfaf"},
|
350 |
+
]
|
351 |
+
|
352 |
+
[package.dependencies]
|
353 |
+
anyio = "*"
|
354 |
+
certifi = "*"
|
355 |
+
httpcore = "==1.*"
|
356 |
+
idna = "*"
|
357 |
+
sniffio = "*"
|
358 |
+
|
359 |
+
[package.extras]
|
360 |
+
brotli = ["brotli", "brotlicffi"]
|
361 |
+
cli = ["click (==8.*)", "pygments (==2.*)", "rich (>=10,<14)"]
|
362 |
+
http2 = ["h2 (>=3,<5)"]
|
363 |
+
socks = ["socksio (==1.*)"]
|
364 |
+
|
365 |
+
[[package]]
|
366 |
+
name = "idna"
|
367 |
+
version = "3.10"
|
368 |
+
description = "Internationalized Domain Names in Applications (IDNA)"
|
369 |
+
optional = false
|
370 |
+
python-versions = ">=3.6"
|
371 |
+
files = [
|
372 |
+
{file = "idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3"},
|
373 |
+
{file = "idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9"},
|
374 |
+
]
|
375 |
+
|
376 |
+
[package.extras]
|
377 |
+
all = ["flake8 (>=7.1.1)", "mypy (>=1.11.2)", "pytest (>=8.3.2)", "ruff (>=0.6.2)"]
|
378 |
+
|
379 |
+
[[package]]
|
380 |
+
name = "iniconfig"
|
381 |
+
version = "2.0.0"
|
382 |
+
description = "brain-dead simple config-ini parsing"
|
383 |
+
optional = false
|
384 |
+
python-versions = ">=3.7"
|
385 |
+
files = [
|
386 |
+
{file = "iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374"},
|
387 |
+
{file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"},
|
388 |
+
]
|
389 |
+
|
390 |
+
[[package]]
|
391 |
+
name = "ipython"
|
392 |
+
version = "8.18.1"
|
393 |
+
description = "IPython: Productive Interactive Computing"
|
394 |
+
optional = false
|
395 |
+
python-versions = ">=3.9"
|
396 |
+
files = [
|
397 |
+
{file = "ipython-8.18.1-py3-none-any.whl", hash = "sha256:e8267419d72d81955ec1177f8a29aaa90ac80ad647499201119e2f05e99aa397"},
|
398 |
+
{file = "ipython-8.18.1.tar.gz", hash = "sha256:ca6f079bb33457c66e233e4580ebfc4128855b4cf6370dddd73842a9563e8a27"},
|
399 |
+
]
|
400 |
+
|
401 |
+
[package.dependencies]
|
402 |
+
colorama = {version = "*", markers = "sys_platform == \"win32\""}
|
403 |
+
decorator = "*"
|
404 |
+
exceptiongroup = {version = "*", markers = "python_version < \"3.11\""}
|
405 |
+
jedi = ">=0.16"
|
406 |
+
matplotlib-inline = "*"
|
407 |
+
pexpect = {version = ">4.3", markers = "sys_platform != \"win32\""}
|
408 |
+
prompt-toolkit = ">=3.0.41,<3.1.0"
|
409 |
+
pygments = ">=2.4.0"
|
410 |
+
stack-data = "*"
|
411 |
+
traitlets = ">=5"
|
412 |
+
typing-extensions = {version = "*", markers = "python_version < \"3.10\""}
|
413 |
+
|
414 |
+
[package.extras]
|
415 |
+
all = ["black", "curio", "docrepr", "exceptiongroup", "ipykernel", "ipyparallel", "ipywidgets", "matplotlib", "matplotlib (!=3.2.0)", "nbconvert", "nbformat", "notebook", "numpy (>=1.22)", "pandas", "pickleshare", "pytest (<7)", "pytest (<7.1)", "pytest-asyncio (<0.22)", "qtconsole", "setuptools (>=18.5)", "sphinx (>=1.3)", "sphinx-rtd-theme", "stack-data", "testpath", "trio", "typing-extensions"]
|
416 |
+
black = ["black"]
|
417 |
+
doc = ["docrepr", "exceptiongroup", "ipykernel", "matplotlib", "pickleshare", "pytest (<7)", "pytest (<7.1)", "pytest-asyncio (<0.22)", "setuptools (>=18.5)", "sphinx (>=1.3)", "sphinx-rtd-theme", "stack-data", "testpath", "typing-extensions"]
|
418 |
+
kernel = ["ipykernel"]
|
419 |
+
nbconvert = ["nbconvert"]
|
420 |
+
nbformat = ["nbformat"]
|
421 |
+
notebook = ["ipywidgets", "notebook"]
|
422 |
+
parallel = ["ipyparallel"]
|
423 |
+
qtconsole = ["qtconsole"]
|
424 |
+
test = ["pickleshare", "pytest (<7.1)", "pytest-asyncio (<0.22)", "testpath"]
|
425 |
+
test-extra = ["curio", "matplotlib (!=3.2.0)", "nbformat", "numpy (>=1.22)", "pandas", "pickleshare", "pytest (<7.1)", "pytest-asyncio (<0.22)", "testpath", "trio"]
|
426 |
+
|
427 |
+
[[package]]
|
428 |
+
name = "isort"
|
429 |
+
version = "5.13.2"
|
430 |
+
description = "A Python utility / library to sort Python imports."
|
431 |
+
optional = false
|
432 |
+
python-versions = ">=3.8.0"
|
433 |
+
files = [
|
434 |
+
{file = "isort-5.13.2-py3-none-any.whl", hash = "sha256:8ca5e72a8d85860d5a3fa69b8745237f2939afe12dbf656afbcb47fe72d947a6"},
|
435 |
+
{file = "isort-5.13.2.tar.gz", hash = "sha256:48fdfcb9face5d58a4f6dde2e72a1fb8dcaf8ab26f95ab49fab84c2ddefb0109"},
|
436 |
+
]
|
437 |
+
|
438 |
+
[package.extras]
|
439 |
+
colors = ["colorama (>=0.4.6)"]
|
440 |
+
|
441 |
+
[[package]]
|
442 |
+
name = "jedi"
|
443 |
+
version = "0.19.2"
|
444 |
+
description = "An autocompletion tool for Python that can be used for text editors."
|
445 |
+
optional = false
|
446 |
+
python-versions = ">=3.6"
|
447 |
+
files = [
|
448 |
+
{file = "jedi-0.19.2-py2.py3-none-any.whl", hash = "sha256:a8ef22bde8490f57fe5c7681a3c83cb58874daf72b4784de3cce5b6ef6edb5b9"},
|
449 |
+
{file = "jedi-0.19.2.tar.gz", hash = "sha256:4770dc3de41bde3966b02eb84fbcf557fb33cce26ad23da12c742fb50ecb11f0"},
|
450 |
+
]
|
451 |
+
|
452 |
+
[package.dependencies]
|
453 |
+
parso = ">=0.8.4,<0.9.0"
|
454 |
+
|
455 |
+
[package.extras]
|
456 |
+
docs = ["Jinja2 (==2.11.3)", "MarkupSafe (==1.1.1)", "Pygments (==2.8.1)", "alabaster (==0.7.12)", "babel (==2.9.1)", "chardet (==4.0.0)", "commonmark (==0.8.1)", "docutils (==0.17.1)", "future (==0.18.2)", "idna (==2.10)", "imagesize (==1.2.0)", "mock (==1.0.1)", "packaging (==20.9)", "pyparsing (==2.4.7)", "pytz (==2021.1)", "readthedocs-sphinx-ext (==2.1.4)", "recommonmark (==0.5.0)", "requests (==2.25.1)", "six (==1.15.0)", "snowballstemmer (==2.1.0)", "sphinx (==1.8.5)", "sphinx-rtd-theme (==0.4.3)", "sphinxcontrib-serializinghtml (==1.1.4)", "sphinxcontrib-websupport (==1.2.4)", "urllib3 (==1.26.4)"]
|
457 |
+
qa = ["flake8 (==5.0.4)", "mypy (==0.971)", "types-setuptools (==67.2.0.1)"]
|
458 |
+
testing = ["Django", "attrs", "colorama", "docopt", "pytest (<9.0.0)"]
|
459 |
+
|
460 |
+
[[package]]
|
461 |
+
name = "matplotlib-inline"
|
462 |
+
version = "0.1.7"
|
463 |
+
description = "Inline Matplotlib backend for Jupyter"
|
464 |
+
optional = false
|
465 |
+
python-versions = ">=3.8"
|
466 |
+
files = [
|
467 |
+
{file = "matplotlib_inline-0.1.7-py3-none-any.whl", hash = "sha256:df192d39a4ff8f21b1895d72e6a13f5fcc5099f00fa84384e0ea28c2cc0653ca"},
|
468 |
+
{file = "matplotlib_inline-0.1.7.tar.gz", hash = "sha256:8423b23ec666be3d16e16b60bdd8ac4e86e840ebd1dd11a30b9f117f2fa0ab90"},
|
469 |
+
]
|
470 |
+
|
471 |
+
[package.dependencies]
|
472 |
+
traitlets = "*"
|
473 |
+
|
474 |
+
[[package]]
|
475 |
+
name = "mypy-extensions"
|
476 |
+
version = "1.0.0"
|
477 |
+
description = "Type system extensions for programs checked with the mypy type checker."
|
478 |
+
optional = false
|
479 |
+
python-versions = ">=3.5"
|
480 |
+
files = [
|
481 |
+
{file = "mypy_extensions-1.0.0-py3-none-any.whl", hash = "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d"},
|
482 |
+
{file = "mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782"},
|
483 |
+
]
|
484 |
+
|
485 |
+
[[package]]
|
486 |
+
name = "packaging"
|
487 |
+
version = "24.2"
|
488 |
+
description = "Core utilities for Python packages"
|
489 |
+
optional = false
|
490 |
+
python-versions = ">=3.8"
|
491 |
+
files = [
|
492 |
+
{file = "packaging-24.2-py3-none-any.whl", hash = "sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759"},
|
493 |
+
{file = "packaging-24.2.tar.gz", hash = "sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f"},
|
494 |
+
]
|
495 |
+
|
496 |
+
[[package]]
|
497 |
+
name = "parso"
|
498 |
+
version = "0.8.4"
|
499 |
+
description = "A Python Parser"
|
500 |
+
optional = false
|
501 |
+
python-versions = ">=3.6"
|
502 |
+
files = [
|
503 |
+
{file = "parso-0.8.4-py2.py3-none-any.whl", hash = "sha256:a418670a20291dacd2dddc80c377c5c3791378ee1e8d12bffc35420643d43f18"},
|
504 |
+
{file = "parso-0.8.4.tar.gz", hash = "sha256:eb3a7b58240fb99099a345571deecc0f9540ea5f4dd2fe14c2a99d6b281ab92d"},
|
505 |
+
]
|
506 |
+
|
507 |
+
[package.extras]
|
508 |
+
qa = ["flake8 (==5.0.4)", "mypy (==0.971)", "types-setuptools (==67.2.0.1)"]
|
509 |
+
testing = ["docopt", "pytest"]
|
510 |
+
|
511 |
+
[[package]]
|
512 |
+
name = "pathspec"
|
513 |
+
version = "0.12.1"
|
514 |
+
description = "Utility library for gitignore style pattern matching of file paths."
|
515 |
+
optional = false
|
516 |
+
python-versions = ">=3.8"
|
517 |
+
files = [
|
518 |
+
{file = "pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08"},
|
519 |
+
{file = "pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712"},
|
520 |
+
]
|
521 |
+
|
522 |
+
[[package]]
|
523 |
+
name = "pexpect"
|
524 |
+
version = "4.9.0"
|
525 |
+
description = "Pexpect allows easy control of interactive console applications."
|
526 |
+
optional = false
|
527 |
+
python-versions = "*"
|
528 |
+
files = [
|
529 |
+
{file = "pexpect-4.9.0-py2.py3-none-any.whl", hash = "sha256:7236d1e080e4936be2dc3e326cec0af72acf9212a7e1d060210e70a47e253523"},
|
530 |
+
{file = "pexpect-4.9.0.tar.gz", hash = "sha256:ee7d41123f3c9911050ea2c2dac107568dc43b2d3b0c7557a33212c398ead30f"},
|
531 |
+
]
|
532 |
+
|
533 |
+
[package.dependencies]
|
534 |
+
ptyprocess = ">=0.5"
|
535 |
+
|
536 |
+
[[package]]
|
537 |
+
name = "platformdirs"
|
538 |
+
version = "4.3.6"
|
539 |
+
description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`."
|
540 |
+
optional = false
|
541 |
+
python-versions = ">=3.8"
|
542 |
+
files = [
|
543 |
+
{file = "platformdirs-4.3.6-py3-none-any.whl", hash = "sha256:73e575e1408ab8103900836b97580d5307456908a03e92031bab39e4554cc3fb"},
|
544 |
+
{file = "platformdirs-4.3.6.tar.gz", hash = "sha256:357fb2acbc885b0419afd3ce3ed34564c13c9b95c89360cd9563f73aa5e2b907"},
|
545 |
+
]
|
546 |
+
|
547 |
+
[package.extras]
|
548 |
+
docs = ["furo (>=2024.8.6)", "proselint (>=0.14)", "sphinx (>=8.0.2)", "sphinx-autodoc-typehints (>=2.4)"]
|
549 |
+
test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=8.3.2)", "pytest-cov (>=5)", "pytest-mock (>=3.14)"]
|
550 |
+
type = ["mypy (>=1.11.2)"]
|
551 |
+
|
552 |
+
[[package]]
|
553 |
+
name = "pluggy"
|
554 |
+
version = "1.5.0"
|
555 |
+
description = "plugin and hook calling mechanisms for python"
|
556 |
+
optional = false
|
557 |
+
python-versions = ">=3.8"
|
558 |
+
files = [
|
559 |
+
{file = "pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669"},
|
560 |
+
{file = "pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1"},
|
561 |
+
]
|
562 |
+
|
563 |
+
[package.extras]
|
564 |
+
dev = ["pre-commit", "tox"]
|
565 |
+
testing = ["pytest", "pytest-benchmark"]
|
566 |
+
|
567 |
+
[[package]]
|
568 |
+
name = "prompt-toolkit"
|
569 |
+
version = "3.0.50"
|
570 |
+
description = "Library for building powerful interactive command lines in Python"
|
571 |
+
optional = false
|
572 |
+
python-versions = ">=3.8.0"
|
573 |
+
files = [
|
574 |
+
{file = "prompt_toolkit-3.0.50-py3-none-any.whl", hash = "sha256:9b6427eb19e479d98acff65196a307c555eb567989e6d88ebbb1b509d9779198"},
|
575 |
+
{file = "prompt_toolkit-3.0.50.tar.gz", hash = "sha256:544748f3860a2623ca5cd6d2795e7a14f3d0e1c3c9728359013f79877fc89bab"},
|
576 |
+
]
|
577 |
+
|
578 |
+
[package.dependencies]
|
579 |
+
wcwidth = "*"
|
580 |
+
|
581 |
+
[[package]]
|
582 |
+
name = "ptyprocess"
|
583 |
+
version = "0.7.0"
|
584 |
+
description = "Run a subprocess in a pseudo terminal"
|
585 |
+
optional = false
|
586 |
+
python-versions = "*"
|
587 |
+
files = [
|
588 |
+
{file = "ptyprocess-0.7.0-py2.py3-none-any.whl", hash = "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35"},
|
589 |
+
{file = "ptyprocess-0.7.0.tar.gz", hash = "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220"},
|
590 |
+
]
|
591 |
+
|
592 |
+
[[package]]
|
593 |
+
name = "pure-eval"
|
594 |
+
version = "0.2.3"
|
595 |
+
description = "Safely evaluate AST nodes without side effects"
|
596 |
+
optional = false
|
597 |
+
python-versions = "*"
|
598 |
+
files = [
|
599 |
+
{file = "pure_eval-0.2.3-py3-none-any.whl", hash = "sha256:1db8e35b67b3d218d818ae653e27f06c3aa420901fa7b081ca98cbedc874e0d0"},
|
600 |
+
{file = "pure_eval-0.2.3.tar.gz", hash = "sha256:5f4e983f40564c576c7c8635ae88db5956bb2229d7e9237d03b3c0b0190eaf42"},
|
601 |
+
]
|
602 |
+
|
603 |
+
[package.extras]
|
604 |
+
tests = ["pytest"]
|
605 |
+
|
606 |
+
[[package]]
|
607 |
+
name = "pydantic"
|
608 |
+
version = "2.10.6"
|
609 |
+
description = "Data validation using Python type hints"
|
610 |
+
optional = false
|
611 |
+
python-versions = ">=3.8"
|
612 |
+
files = [
|
613 |
+
{file = "pydantic-2.10.6-py3-none-any.whl", hash = "sha256:427d664bf0b8a2b34ff5dd0f5a18df00591adcee7198fbd71981054cef37b584"},
|
614 |
+
{file = "pydantic-2.10.6.tar.gz", hash = "sha256:ca5daa827cce33de7a42be142548b0096bf05a7e7b365aebfa5f8eeec7128236"},
|
615 |
+
]
|
616 |
+
|
617 |
+
[package.dependencies]
|
618 |
+
annotated-types = ">=0.6.0"
|
619 |
+
pydantic-core = "2.27.2"
|
620 |
+
typing-extensions = ">=4.12.2"
|
621 |
+
|
622 |
+
[package.extras]
|
623 |
+
email = ["email-validator (>=2.0.0)"]
|
624 |
+
timezone = ["tzdata"]
|
625 |
+
|
626 |
+
[[package]]
|
627 |
+
name = "pydantic-core"
|
628 |
+
version = "2.27.2"
|
629 |
+
description = "Core functionality for Pydantic validation and serialization"
|
630 |
+
optional = false
|
631 |
+
python-versions = ">=3.8"
|
632 |
+
files = [
|
633 |
+
{file = "pydantic_core-2.27.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:2d367ca20b2f14095a8f4fa1210f5a7b78b8a20009ecced6b12818f455b1e9fa"},
|
634 |
+
{file = "pydantic_core-2.27.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:491a2b73db93fab69731eaee494f320faa4e093dbed776be1a829c2eb222c34c"},
|
635 |
+
{file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7969e133a6f183be60e9f6f56bfae753585680f3b7307a8e555a948d443cc05a"},
|
636 |
+
{file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3de9961f2a346257caf0aa508a4da705467f53778e9ef6fe744c038119737ef5"},
|
637 |
+
{file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e2bb4d3e5873c37bb3dd58714d4cd0b0e6238cebc4177ac8fe878f8b3aa8e74c"},
|
638 |
+
{file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:280d219beebb0752699480fe8f1dc61ab6615c2046d76b7ab7ee38858de0a4e7"},
|
639 |
+
{file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:47956ae78b6422cbd46f772f1746799cbb862de838fd8d1fbd34a82e05b0983a"},
|
640 |
+
{file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:14d4a5c49d2f009d62a2a7140d3064f686d17a5d1a268bc641954ba181880236"},
|
641 |
+
{file = "pydantic_core-2.27.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:337b443af21d488716f8d0b6164de833e788aa6bd7e3a39c005febc1284f4962"},
|
642 |
+
{file = "pydantic_core-2.27.2-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:03d0f86ea3184a12f41a2d23f7ccb79cdb5a18e06993f8a45baa8dfec746f0e9"},
|
643 |
+
{file = "pydantic_core-2.27.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7041c36f5680c6e0f08d922aed302e98b3745d97fe1589db0a3eebf6624523af"},
|
644 |
+
{file = "pydantic_core-2.27.2-cp310-cp310-win32.whl", hash = "sha256:50a68f3e3819077be2c98110c1f9dcb3817e93f267ba80a2c05bb4f8799e2ff4"},
|
645 |
+
{file = "pydantic_core-2.27.2-cp310-cp310-win_amd64.whl", hash = "sha256:e0fd26b16394ead34a424eecf8a31a1f5137094cabe84a1bcb10fa6ba39d3d31"},
|
646 |
+
{file = "pydantic_core-2.27.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:8e10c99ef58cfdf2a66fc15d66b16c4a04f62bca39db589ae8cba08bc55331bc"},
|
647 |
+
{file = "pydantic_core-2.27.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:26f32e0adf166a84d0cb63be85c562ca8a6fa8de28e5f0d92250c6b7e9e2aff7"},
|
648 |
+
{file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c19d1ea0673cd13cc2f872f6c9ab42acc4e4f492a7ca9d3795ce2b112dd7e15"},
|
649 |
+
{file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5e68c4446fe0810e959cdff46ab0a41ce2f2c86d227d96dc3847af0ba7def306"},
|
650 |
+
{file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d9640b0059ff4f14d1f37321b94061c6db164fbe49b334b31643e0528d100d99"},
|
651 |
+
{file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:40d02e7d45c9f8af700f3452f329ead92da4c5f4317ca9b896de7ce7199ea459"},
|
652 |
+
{file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1c1fd185014191700554795c99b347d64f2bb637966c4cfc16998a0ca700d048"},
|
653 |
+
{file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d81d2068e1c1228a565af076598f9e7451712700b673de8f502f0334f281387d"},
|
654 |
+
{file = "pydantic_core-2.27.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:1a4207639fb02ec2dbb76227d7c751a20b1a6b4bc52850568e52260cae64ca3b"},
|
655 |
+
{file = "pydantic_core-2.27.2-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:3de3ce3c9ddc8bbd88f6e0e304dea0e66d843ec9de1b0042b0911c1663ffd474"},
|
656 |
+
{file = "pydantic_core-2.27.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:30c5f68ded0c36466acede341551106821043e9afaad516adfb6e8fa80a4e6a6"},
|
657 |
+
{file = "pydantic_core-2.27.2-cp311-cp311-win32.whl", hash = "sha256:c70c26d2c99f78b125a3459f8afe1aed4d9687c24fd677c6a4436bc042e50d6c"},
|
658 |
+
{file = "pydantic_core-2.27.2-cp311-cp311-win_amd64.whl", hash = "sha256:08e125dbdc505fa69ca7d9c499639ab6407cfa909214d500897d02afb816e7cc"},
|
659 |
+
{file = "pydantic_core-2.27.2-cp311-cp311-win_arm64.whl", hash = "sha256:26f0d68d4b235a2bae0c3fc585c585b4ecc51382db0e3ba402a22cbc440915e4"},
|
660 |
+
{file = "pydantic_core-2.27.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:9e0c8cfefa0ef83b4da9588448b6d8d2a2bf1a53c3f1ae5fca39eb3061e2f0b0"},
|
661 |
+
{file = "pydantic_core-2.27.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:83097677b8e3bd7eaa6775720ec8e0405f1575015a463285a92bfdfe254529ef"},
|
662 |
+
{file = "pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:172fce187655fece0c90d90a678424b013f8fbb0ca8b036ac266749c09438cb7"},
|
663 |
+
{file = "pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:519f29f5213271eeeeb3093f662ba2fd512b91c5f188f3bb7b27bc5973816934"},
|
664 |
+
{file = "pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:05e3a55d124407fffba0dd6b0c0cd056d10e983ceb4e5dbd10dda135c31071d6"},
|
665 |
+
{file = "pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9c3ed807c7b91de05e63930188f19e921d1fe90de6b4f5cd43ee7fcc3525cb8c"},
|
666 |
+
{file = "pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6fb4aadc0b9a0c063206846d603b92030eb6f03069151a625667f982887153e2"},
|
667 |
+
{file = "pydantic_core-2.27.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:28ccb213807e037460326424ceb8b5245acb88f32f3d2777427476e1b32c48c4"},
|
668 |
+
{file = "pydantic_core-2.27.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:de3cd1899e2c279b140adde9357c4495ed9d47131b4a4eaff9052f23398076b3"},
|
669 |
+
{file = "pydantic_core-2.27.2-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:220f892729375e2d736b97d0e51466252ad84c51857d4d15f5e9692f9ef12be4"},
|
670 |
+
{file = "pydantic_core-2.27.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:a0fcd29cd6b4e74fe8ddd2c90330fd8edf2e30cb52acda47f06dd615ae72da57"},
|
671 |
+
{file = "pydantic_core-2.27.2-cp312-cp312-win32.whl", hash = "sha256:1e2cb691ed9834cd6a8be61228471d0a503731abfb42f82458ff27be7b2186fc"},
|
672 |
+
{file = "pydantic_core-2.27.2-cp312-cp312-win_amd64.whl", hash = "sha256:cc3f1a99a4f4f9dd1de4fe0312c114e740b5ddead65bb4102884b384c15d8bc9"},
|
673 |
+
{file = "pydantic_core-2.27.2-cp312-cp312-win_arm64.whl", hash = "sha256:3911ac9284cd8a1792d3cb26a2da18f3ca26c6908cc434a18f730dc0db7bfa3b"},
|
674 |
+
{file = "pydantic_core-2.27.2-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:7d14bd329640e63852364c306f4d23eb744e0f8193148d4044dd3dacdaacbd8b"},
|
675 |
+
{file = "pydantic_core-2.27.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:82f91663004eb8ed30ff478d77c4d1179b3563df6cdb15c0817cd1cdaf34d154"},
|
676 |
+
{file = "pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:71b24c7d61131bb83df10cc7e687433609963a944ccf45190cfc21e0887b08c9"},
|
677 |
+
{file = "pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fa8e459d4954f608fa26116118bb67f56b93b209c39b008277ace29937453dc9"},
|
678 |
+
{file = "pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ce8918cbebc8da707ba805b7fd0b382816858728ae7fe19a942080c24e5b7cd1"},
|
679 |
+
{file = "pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:eda3f5c2a021bbc5d976107bb302e0131351c2ba54343f8a496dc8783d3d3a6a"},
|
680 |
+
{file = "pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bd8086fa684c4775c27f03f062cbb9eaa6e17f064307e86b21b9e0abc9c0f02e"},
|
681 |
+
{file = "pydantic_core-2.27.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8d9b3388db186ba0c099a6d20f0604a44eabdeef1777ddd94786cdae158729e4"},
|
682 |
+
{file = "pydantic_core-2.27.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:7a66efda2387de898c8f38c0cf7f14fca0b51a8ef0b24bfea5849f1b3c95af27"},
|
683 |
+
{file = "pydantic_core-2.27.2-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:18a101c168e4e092ab40dbc2503bdc0f62010e95d292b27827871dc85450d7ee"},
|
684 |
+
{file = "pydantic_core-2.27.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ba5dd002f88b78a4215ed2f8ddbdf85e8513382820ba15ad5ad8955ce0ca19a1"},
|
685 |
+
{file = "pydantic_core-2.27.2-cp313-cp313-win32.whl", hash = "sha256:1ebaf1d0481914d004a573394f4be3a7616334be70261007e47c2a6fe7e50130"},
|
686 |
+
{file = "pydantic_core-2.27.2-cp313-cp313-win_amd64.whl", hash = "sha256:953101387ecf2f5652883208769a79e48db18c6df442568a0b5ccd8c2723abee"},
|
687 |
+
{file = "pydantic_core-2.27.2-cp313-cp313-win_arm64.whl", hash = "sha256:ac4dbfd1691affb8f48c2c13241a2e3b60ff23247cbcf981759c768b6633cf8b"},
|
688 |
+
{file = "pydantic_core-2.27.2-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:d3e8d504bdd3f10835468f29008d72fc8359d95c9c415ce6e767203db6127506"},
|
689 |
+
{file = "pydantic_core-2.27.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:521eb9b7f036c9b6187f0b47318ab0d7ca14bd87f776240b90b21c1f4f149320"},
|
690 |
+
{file = "pydantic_core-2.27.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:85210c4d99a0114f5a9481b44560d7d1e35e32cc5634c656bc48e590b669b145"},
|
691 |
+
{file = "pydantic_core-2.27.2-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d716e2e30c6f140d7560ef1538953a5cd1a87264c737643d481f2779fc247fe1"},
|
692 |
+
{file = "pydantic_core-2.27.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f66d89ba397d92f840f8654756196d93804278457b5fbede59598a1f9f90b228"},
|
693 |
+
{file = "pydantic_core-2.27.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:669e193c1c576a58f132e3158f9dfa9662969edb1a250c54d8fa52590045f046"},
|
694 |
+
{file = "pydantic_core-2.27.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9fdbe7629b996647b99c01b37f11170a57ae675375b14b8c13b8518b8320ced5"},
|
695 |
+
{file = "pydantic_core-2.27.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d262606bf386a5ba0b0af3b97f37c83d7011439e3dc1a9298f21efb292e42f1a"},
|
696 |
+
{file = "pydantic_core-2.27.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:cabb9bcb7e0d97f74df8646f34fc76fbf793b7f6dc2438517d7a9e50eee4f14d"},
|
697 |
+
{file = "pydantic_core-2.27.2-cp38-cp38-musllinux_1_1_armv7l.whl", hash = "sha256:d2d63f1215638d28221f664596b1ccb3944f6e25dd18cd3b86b0a4c408d5ebb9"},
|
698 |
+
{file = "pydantic_core-2.27.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:bca101c00bff0adb45a833f8451b9105d9df18accb8743b08107d7ada14bd7da"},
|
699 |
+
{file = "pydantic_core-2.27.2-cp38-cp38-win32.whl", hash = "sha256:f6f8e111843bbb0dee4cb6594cdc73e79b3329b526037ec242a3e49012495b3b"},
|
700 |
+
{file = "pydantic_core-2.27.2-cp38-cp38-win_amd64.whl", hash = "sha256:fd1aea04935a508f62e0d0ef1f5ae968774a32afc306fb8545e06f5ff5cdf3ad"},
|
701 |
+
{file = "pydantic_core-2.27.2-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:c10eb4f1659290b523af58fa7cffb452a61ad6ae5613404519aee4bfbf1df993"},
|
702 |
+
{file = "pydantic_core-2.27.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ef592d4bad47296fb11f96cd7dc898b92e795032b4894dfb4076cfccd43a9308"},
|
703 |
+
{file = "pydantic_core-2.27.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c61709a844acc6bf0b7dce7daae75195a10aac96a596ea1b776996414791ede4"},
|
704 |
+
{file = "pydantic_core-2.27.2-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:42c5f762659e47fdb7b16956c71598292f60a03aa92f8b6351504359dbdba6cf"},
|
705 |
+
{file = "pydantic_core-2.27.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4c9775e339e42e79ec99c441d9730fccf07414af63eac2f0e48e08fd38a64d76"},
|
706 |
+
{file = "pydantic_core-2.27.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:57762139821c31847cfb2df63c12f725788bd9f04bc2fb392790959b8f70f118"},
|
707 |
+
{file = "pydantic_core-2.27.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0d1e85068e818c73e048fe28cfc769040bb1f475524f4745a5dc621f75ac7630"},
|
708 |
+
{file = "pydantic_core-2.27.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:097830ed52fd9e427942ff3b9bc17fab52913b2f50f2880dc4a5611446606a54"},
|
709 |
+
{file = "pydantic_core-2.27.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:044a50963a614ecfae59bb1eaf7ea7efc4bc62f49ed594e18fa1e5d953c40e9f"},
|
710 |
+
{file = "pydantic_core-2.27.2-cp39-cp39-musllinux_1_1_armv7l.whl", hash = "sha256:4e0b4220ba5b40d727c7f879eac379b822eee5d8fff418e9d3381ee45b3b0362"},
|
711 |
+
{file = "pydantic_core-2.27.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5e4f4bb20d75e9325cc9696c6802657b58bc1dbbe3022f32cc2b2b632c3fbb96"},
|
712 |
+
{file = "pydantic_core-2.27.2-cp39-cp39-win32.whl", hash = "sha256:cca63613e90d001b9f2f9a9ceb276c308bfa2a43fafb75c8031c4f66039e8c6e"},
|
713 |
+
{file = "pydantic_core-2.27.2-cp39-cp39-win_amd64.whl", hash = "sha256:77d1bca19b0f7021b3a982e6f903dcd5b2b06076def36a652e3907f596e29f67"},
|
714 |
+
{file = "pydantic_core-2.27.2-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:2bf14caea37e91198329b828eae1618c068dfb8ef17bb33287a7ad4b61ac314e"},
|
715 |
+
{file = "pydantic_core-2.27.2-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:b0cb791f5b45307caae8810c2023a184c74605ec3bcbb67d13846c28ff731ff8"},
|
716 |
+
{file = "pydantic_core-2.27.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:688d3fd9fcb71f41c4c015c023d12a79d1c4c0732ec9eb35d96e3388a120dcf3"},
|
717 |
+
{file = "pydantic_core-2.27.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3d591580c34f4d731592f0e9fe40f9cc1b430d297eecc70b962e93c5c668f15f"},
|
718 |
+
{file = "pydantic_core-2.27.2-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:82f986faf4e644ffc189a7f1aafc86e46ef70372bb153e7001e8afccc6e54133"},
|
719 |
+
{file = "pydantic_core-2.27.2-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:bec317a27290e2537f922639cafd54990551725fc844249e64c523301d0822fc"},
|
720 |
+
{file = "pydantic_core-2.27.2-pp310-pypy310_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:0296abcb83a797db256b773f45773da397da75a08f5fcaef41f2044adec05f50"},
|
721 |
+
{file = "pydantic_core-2.27.2-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:0d75070718e369e452075a6017fbf187f788e17ed67a3abd47fa934d001863d9"},
|
722 |
+
{file = "pydantic_core-2.27.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:7e17b560be3c98a8e3aa66ce828bdebb9e9ac6ad5466fba92eb74c4c95cb1151"},
|
723 |
+
{file = "pydantic_core-2.27.2-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:c33939a82924da9ed65dab5a65d427205a73181d8098e79b6b426bdf8ad4e656"},
|
724 |
+
{file = "pydantic_core-2.27.2-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:00bad2484fa6bda1e216e7345a798bd37c68fb2d97558edd584942aa41b7d278"},
|
725 |
+
{file = "pydantic_core-2.27.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c817e2b40aba42bac6f457498dacabc568c3b7a986fc9ba7c8d9d260b71485fb"},
|
726 |
+
{file = "pydantic_core-2.27.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:251136cdad0cb722e93732cb45ca5299fb56e1344a833640bf93b2803f8d1bfd"},
|
727 |
+
{file = "pydantic_core-2.27.2-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d2088237af596f0a524d3afc39ab3b036e8adb054ee57cbb1dcf8e09da5b29cc"},
|
728 |
+
{file = "pydantic_core-2.27.2-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:d4041c0b966a84b4ae7a09832eb691a35aec90910cd2dbe7a208de59be77965b"},
|
729 |
+
{file = "pydantic_core-2.27.2-pp39-pypy39_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:8083d4e875ebe0b864ffef72a4304827015cff328a1be6e22cc850753bfb122b"},
|
730 |
+
{file = "pydantic_core-2.27.2-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:f141ee28a0ad2123b6611b6ceff018039df17f32ada8b534e6aa039545a3efb2"},
|
731 |
+
{file = "pydantic_core-2.27.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:7d0c8399fcc1848491f00e0314bd59fb34a9c008761bcb422a057670c3f65e35"},
|
732 |
+
{file = "pydantic_core-2.27.2.tar.gz", hash = "sha256:eb026e5a4c1fee05726072337ff51d1efb6f59090b7da90d30ea58625b1ffb39"},
|
733 |
+
]
|
734 |
+
|
735 |
+
[package.dependencies]
|
736 |
+
typing-extensions = ">=4.6.0,<4.7.0 || >4.7.0"
|
737 |
+
|
738 |
+
[[package]]
|
739 |
+
name = "pygments"
|
740 |
+
version = "2.19.1"
|
741 |
+
description = "Pygments is a syntax highlighting package written in Python."
|
742 |
+
optional = false
|
743 |
+
python-versions = ">=3.8"
|
744 |
+
files = [
|
745 |
+
{file = "pygments-2.19.1-py3-none-any.whl", hash = "sha256:9ea1544ad55cecf4b8242fab6dd35a93bbce657034b0611ee383099054ab6d8c"},
|
746 |
+
{file = "pygments-2.19.1.tar.gz", hash = "sha256:61c16d2a8576dc0649d9f39e089b5f02bcd27fba10d8fb4dcc28173f7a45151f"},
|
747 |
+
]
|
748 |
+
|
749 |
+
[package.extras]
|
750 |
+
windows-terminal = ["colorama (>=0.4.6)"]
|
751 |
+
|
752 |
+
[[package]]
|
753 |
+
name = "pytest"
|
754 |
+
version = "7.4.4"
|
755 |
+
description = "pytest: simple powerful testing with Python"
|
756 |
+
optional = false
|
757 |
+
python-versions = ">=3.7"
|
758 |
+
files = [
|
759 |
+
{file = "pytest-7.4.4-py3-none-any.whl", hash = "sha256:b090cdf5ed60bf4c45261be03239c2c1c22df034fbffe691abe93cd80cea01d8"},
|
760 |
+
{file = "pytest-7.4.4.tar.gz", hash = "sha256:2cf0005922c6ace4a3e2ec8b4080eb0d9753fdc93107415332f50ce9e7994280"},
|
761 |
+
]
|
762 |
+
|
763 |
+
[package.dependencies]
|
764 |
+
colorama = {version = "*", markers = "sys_platform == \"win32\""}
|
765 |
+
exceptiongroup = {version = ">=1.0.0rc8", markers = "python_version < \"3.11\""}
|
766 |
+
iniconfig = "*"
|
767 |
+
packaging = "*"
|
768 |
+
pluggy = ">=0.12,<2.0"
|
769 |
+
tomli = {version = ">=1.0.0", markers = "python_version < \"3.11\""}
|
770 |
+
|
771 |
+
[package.extras]
|
772 |
+
testing = ["argcomplete", "attrs (>=19.2.0)", "hypothesis (>=3.56)", "mock", "nose", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"]
|
773 |
+
|
774 |
+
[[package]]
|
775 |
+
name = "python-dotenv"
|
776 |
+
version = "1.0.1"
|
777 |
+
description = "Read key-value pairs from a .env file and set them as environment variables"
|
778 |
+
optional = false
|
779 |
+
python-versions = ">=3.8"
|
780 |
+
files = [
|
781 |
+
{file = "python-dotenv-1.0.1.tar.gz", hash = "sha256:e324ee90a023d808f1959c46bcbc04446a10ced277783dc6ee09987c37ec10ca"},
|
782 |
+
{file = "python_dotenv-1.0.1-py3-none-any.whl", hash = "sha256:f7b63ef50f1b690dddf550d03497b66d609393b40b564ed0d674909a68ebf16a"},
|
783 |
+
]
|
784 |
+
|
785 |
+
[package.extras]
|
786 |
+
cli = ["click (>=5.0)"]
|
787 |
+
|
788 |
+
[[package]]
|
789 |
+
name = "requests"
|
790 |
+
version = "2.32.3"
|
791 |
+
description = "Python HTTP for Humans."
|
792 |
+
optional = false
|
793 |
+
python-versions = ">=3.8"
|
794 |
+
files = [
|
795 |
+
{file = "requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6"},
|
796 |
+
{file = "requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760"},
|
797 |
+
]
|
798 |
+
|
799 |
+
[package.dependencies]
|
800 |
+
certifi = ">=2017.4.17"
|
801 |
+
charset-normalizer = ">=2,<4"
|
802 |
+
idna = ">=2.5,<4"
|
803 |
+
urllib3 = ">=1.21.1,<3"
|
804 |
+
|
805 |
+
[package.extras]
|
806 |
+
socks = ["PySocks (>=1.5.6,!=1.5.7)"]
|
807 |
+
use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"]
|
808 |
+
|
809 |
+
[[package]]
|
810 |
+
name = "sniffio"
|
811 |
+
version = "1.3.1"
|
812 |
+
description = "Sniff out which async library your code is running under"
|
813 |
+
optional = false
|
814 |
+
python-versions = ">=3.7"
|
815 |
+
files = [
|
816 |
+
{file = "sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2"},
|
817 |
+
{file = "sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc"},
|
818 |
+
]
|
819 |
+
|
820 |
+
[[package]]
|
821 |
+
name = "stack-data"
|
822 |
+
version = "0.6.3"
|
823 |
+
description = "Extract data from python stack frames and tracebacks for informative displays"
|
824 |
+
optional = false
|
825 |
+
python-versions = "*"
|
826 |
+
files = [
|
827 |
+
{file = "stack_data-0.6.3-py3-none-any.whl", hash = "sha256:d5558e0c25a4cb0853cddad3d77da9891a08cb85dd9f9f91b9f8cd66e511e695"},
|
828 |
+
{file = "stack_data-0.6.3.tar.gz", hash = "sha256:836a778de4fec4dcd1dcd89ed8abff8a221f58308462e1c4aa2a3cf30148f0b9"},
|
829 |
+
]
|
830 |
+
|
831 |
+
[package.dependencies]
|
832 |
+
asttokens = ">=2.1.0"
|
833 |
+
executing = ">=1.2.0"
|
834 |
+
pure-eval = "*"
|
835 |
+
|
836 |
+
[package.extras]
|
837 |
+
tests = ["cython", "littleutils", "pygments", "pytest", "typeguard"]
|
838 |
+
|
839 |
+
[[package]]
|
840 |
+
name = "starlette"
|
841 |
+
version = "0.36.3"
|
842 |
+
description = "The little ASGI library that shines."
|
843 |
+
optional = false
|
844 |
+
python-versions = ">=3.8"
|
845 |
+
files = [
|
846 |
+
{file = "starlette-0.36.3-py3-none-any.whl", hash = "sha256:13d429aa93a61dc40bf503e8c801db1f1bca3dc706b10ef2434a36123568f044"},
|
847 |
+
{file = "starlette-0.36.3.tar.gz", hash = "sha256:90a671733cfb35771d8cc605e0b679d23b992f8dcfad48cc60b38cb29aeb7080"},
|
848 |
+
]
|
849 |
+
|
850 |
+
[package.dependencies]
|
851 |
+
anyio = ">=3.4.0,<5"
|
852 |
+
typing-extensions = {version = ">=3.10.0", markers = "python_version < \"3.10\""}
|
853 |
+
|
854 |
+
[package.extras]
|
855 |
+
full = ["httpx (>=0.22.0)", "itsdangerous", "jinja2", "python-multipart (>=0.0.7)", "pyyaml"]
|
856 |
+
|
857 |
+
[[package]]
|
858 |
+
name = "tomli"
|
859 |
+
version = "2.2.1"
|
860 |
+
description = "A lil' TOML parser"
|
861 |
+
optional = false
|
862 |
+
python-versions = ">=3.8"
|
863 |
+
files = [
|
864 |
+
{file = "tomli-2.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:678e4fa69e4575eb77d103de3df8a895e1591b48e740211bd1067378c69e8249"},
|
865 |
+
{file = "tomli-2.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:023aa114dd824ade0100497eb2318602af309e5a55595f76b626d6d9f3b7b0a6"},
|
866 |
+
{file = "tomli-2.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ece47d672db52ac607a3d9599a9d48dcb2f2f735c6c2d1f34130085bb12b112a"},
|
867 |
+
{file = "tomli-2.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6972ca9c9cc9f0acaa56a8ca1ff51e7af152a9f87fb64623e31d5c83700080ee"},
|
868 |
+
{file = "tomli-2.2.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c954d2250168d28797dd4e3ac5cf812a406cd5a92674ee4c8f123c889786aa8e"},
|
869 |
+
{file = "tomli-2.2.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8dd28b3e155b80f4d54beb40a441d366adcfe740969820caf156c019fb5c7ec4"},
|
870 |
+
{file = "tomli-2.2.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:e59e304978767a54663af13c07b3d1af22ddee3bb2fb0618ca1593e4f593a106"},
|
871 |
+
{file = "tomli-2.2.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:33580bccab0338d00994d7f16f4c4ec25b776af3ffaac1ed74e0b3fc95e885a8"},
|
872 |
+
{file = "tomli-2.2.1-cp311-cp311-win32.whl", hash = "sha256:465af0e0875402f1d226519c9904f37254b3045fc5084697cefb9bdde1ff99ff"},
|
873 |
+
{file = "tomli-2.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:2d0f2fdd22b02c6d81637a3c95f8cd77f995846af7414c5c4b8d0545afa1bc4b"},
|
874 |
+
{file = "tomli-2.2.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4a8f6e44de52d5e6c657c9fe83b562f5f4256d8ebbfe4ff922c495620a7f6cea"},
|
875 |
+
{file = "tomli-2.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8d57ca8095a641b8237d5b079147646153d22552f1c637fd3ba7f4b0b29167a8"},
|
876 |
+
{file = "tomli-2.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e340144ad7ae1533cb897d406382b4b6fede8890a03738ff1683af800d54192"},
|
877 |
+
{file = "tomli-2.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db2b95f9de79181805df90bedc5a5ab4c165e6ec3fe99f970d0e302f384ad222"},
|
878 |
+
{file = "tomli-2.2.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:40741994320b232529c802f8bc86da4e1aa9f413db394617b9a256ae0f9a7f77"},
|
879 |
+
{file = "tomli-2.2.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:400e720fe168c0f8521520190686ef8ef033fb19fc493da09779e592861b78c6"},
|
880 |
+
{file = "tomli-2.2.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:02abe224de6ae62c19f090f68da4e27b10af2b93213d36cf44e6e1c5abd19fdd"},
|
881 |
+
{file = "tomli-2.2.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b82ebccc8c8a36f2094e969560a1b836758481f3dc360ce9a3277c65f374285e"},
|
882 |
+
{file = "tomli-2.2.1-cp312-cp312-win32.whl", hash = "sha256:889f80ef92701b9dbb224e49ec87c645ce5df3fa2cc548664eb8a25e03127a98"},
|
883 |
+
{file = "tomli-2.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:7fc04e92e1d624a4a63c76474610238576942d6b8950a2d7f908a340494e67e4"},
|
884 |
+
{file = "tomli-2.2.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f4039b9cbc3048b2416cc57ab3bda989a6fcf9b36cf8937f01a6e731b64f80d7"},
|
885 |
+
{file = "tomli-2.2.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:286f0ca2ffeeb5b9bd4fcc8d6c330534323ec51b2f52da063b11c502da16f30c"},
|
886 |
+
{file = "tomli-2.2.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a92ef1a44547e894e2a17d24e7557a5e85a9e1d0048b0b5e7541f76c5032cb13"},
|
887 |
+
{file = "tomli-2.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9316dc65bed1684c9a98ee68759ceaed29d229e985297003e494aa825ebb0281"},
|
888 |
+
{file = "tomli-2.2.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e85e99945e688e32d5a35c1ff38ed0b3f41f43fad8df0bdf79f72b2ba7bc5272"},
|
889 |
+
{file = "tomli-2.2.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ac065718db92ca818f8d6141b5f66369833d4a80a9d74435a268c52bdfa73140"},
|
890 |
+
{file = "tomli-2.2.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:d920f33822747519673ee656a4b6ac33e382eca9d331c87770faa3eef562aeb2"},
|
891 |
+
{file = "tomli-2.2.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a198f10c4d1b1375d7687bc25294306e551bf1abfa4eace6650070a5c1ae2744"},
|
892 |
+
{file = "tomli-2.2.1-cp313-cp313-win32.whl", hash = "sha256:d3f5614314d758649ab2ab3a62d4f2004c825922f9e370b29416484086b264ec"},
|
893 |
+
{file = "tomli-2.2.1-cp313-cp313-win_amd64.whl", hash = "sha256:a38aa0308e754b0e3c67e344754dff64999ff9b513e691d0e786265c93583c69"},
|
894 |
+
{file = "tomli-2.2.1-py3-none-any.whl", hash = "sha256:cb55c73c5f4408779d0cf3eef9f762b9c9f147a77de7b258bef0a5628adc85cc"},
|
895 |
+
{file = "tomli-2.2.1.tar.gz", hash = "sha256:cd45e1dc79c835ce60f7404ec8119f2eb06d38b1deba146f07ced3bbc44505ff"},
|
896 |
+
]
|
897 |
+
|
898 |
+
[[package]]
|
899 |
+
name = "traitlets"
|
900 |
+
version = "5.14.3"
|
901 |
+
description = "Traitlets Python configuration system"
|
902 |
+
optional = false
|
903 |
+
python-versions = ">=3.8"
|
904 |
+
files = [
|
905 |
+
{file = "traitlets-5.14.3-py3-none-any.whl", hash = "sha256:b74e89e397b1ed28cc831db7aea759ba6640cb3de13090ca145426688ff1ac4f"},
|
906 |
+
{file = "traitlets-5.14.3.tar.gz", hash = "sha256:9ed0579d3502c94b4b3732ac120375cda96f923114522847de4b3bb98b96b6b7"},
|
907 |
+
]
|
908 |
+
|
909 |
+
[package.extras]
|
910 |
+
docs = ["myst-parser", "pydata-sphinx-theme", "sphinx"]
|
911 |
+
test = ["argcomplete (>=3.0.3)", "mypy (>=1.7.0)", "pre-commit", "pytest (>=7.0,<8.2)", "pytest-mock", "pytest-mypy-testing"]
|
912 |
+
|
913 |
+
[[package]]
|
914 |
+
name = "typing-extensions"
|
915 |
+
version = "4.12.2"
|
916 |
+
description = "Backported and Experimental Type Hints for Python 3.8+"
|
917 |
+
optional = false
|
918 |
+
python-versions = ">=3.8"
|
919 |
+
files = [
|
920 |
+
{file = "typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d"},
|
921 |
+
{file = "typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"},
|
922 |
+
]
|
923 |
+
|
924 |
+
[[package]]
|
925 |
+
name = "urllib3"
|
926 |
+
version = "2.3.0"
|
927 |
+
description = "HTTP library with thread-safe connection pooling, file post, and more."
|
928 |
+
optional = false
|
929 |
+
python-versions = ">=3.9"
|
930 |
+
files = [
|
931 |
+
{file = "urllib3-2.3.0-py3-none-any.whl", hash = "sha256:1cee9ad369867bfdbbb48b7dd50374c0967a0bb7710050facf0dd6911440e3df"},
|
932 |
+
{file = "urllib3-2.3.0.tar.gz", hash = "sha256:f8c5449b3cf0861679ce7e0503c7b44b5ec981bec0d1d3795a07f1ba96f0204d"},
|
933 |
+
]
|
934 |
+
|
935 |
+
[package.extras]
|
936 |
+
brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"]
|
937 |
+
h2 = ["h2 (>=4,<5)"]
|
938 |
+
socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"]
|
939 |
+
zstd = ["zstandard (>=0.18.0)"]
|
940 |
+
|
941 |
+
[[package]]
|
942 |
+
name = "uvicorn"
|
943 |
+
version = "0.27.1"
|
944 |
+
description = "The lightning-fast ASGI server."
|
945 |
+
optional = false
|
946 |
+
python-versions = ">=3.8"
|
947 |
+
files = [
|
948 |
+
{file = "uvicorn-0.27.1-py3-none-any.whl", hash = "sha256:5c89da2f3895767472a35556e539fd59f7edbe9b1e9c0e1c99eebeadc61838e4"},
|
949 |
+
{file = "uvicorn-0.27.1.tar.gz", hash = "sha256:3d9a267296243532db80c83a959a3400502165ade2c1338dea4e67915fd4745a"},
|
950 |
+
]
|
951 |
+
|
952 |
+
[package.dependencies]
|
953 |
+
click = ">=7.0"
|
954 |
+
h11 = ">=0.8"
|
955 |
+
typing-extensions = {version = ">=4.0", markers = "python_version < \"3.11\""}
|
956 |
+
|
957 |
+
[package.extras]
|
958 |
+
standard = ["colorama (>=0.4)", "httptools (>=0.5.0)", "python-dotenv (>=0.13)", "pyyaml (>=5.1)", "uvloop (>=0.14.0,!=0.15.0,!=0.15.1)", "watchfiles (>=0.13)", "websockets (>=10.4)"]
|
959 |
+
|
960 |
+
[[package]]
|
961 |
+
name = "wcwidth"
|
962 |
+
version = "0.2.13"
|
963 |
+
description = "Measures the displayed width of unicode strings in a terminal"
|
964 |
+
optional = false
|
965 |
+
python-versions = "*"
|
966 |
+
files = [
|
967 |
+
{file = "wcwidth-0.2.13-py2.py3-none-any.whl", hash = "sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859"},
|
968 |
+
{file = "wcwidth-0.2.13.tar.gz", hash = "sha256:72ea0c06399eb286d978fdedb6923a9eb47e1c486ce63e9b4e64fc18303972b5"},
|
969 |
+
]
|
970 |
+
|
971 |
+
[[package]]
|
972 |
+
name = "websockets"
|
973 |
+
version = "14.2"
|
974 |
+
description = "An implementation of the WebSocket Protocol (RFC 6455 & 7692)"
|
975 |
+
optional = false
|
976 |
+
python-versions = ">=3.9"
|
977 |
+
files = [
|
978 |
+
{file = "websockets-14.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:e8179f95323b9ab1c11723e5d91a89403903f7b001828161b480a7810b334885"},
|
979 |
+
{file = "websockets-14.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0d8c3e2cdb38f31d8bd7d9d28908005f6fa9def3324edb9bf336d7e4266fd397"},
|
980 |
+
{file = "websockets-14.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:714a9b682deb4339d39ffa674f7b674230227d981a37d5d174a4a83e3978a610"},
|
981 |
+
{file = "websockets-14.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f2e53c72052f2596fb792a7acd9704cbc549bf70fcde8a99e899311455974ca3"},
|
982 |
+
{file = "websockets-14.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e3fbd68850c837e57373d95c8fe352203a512b6e49eaae4c2f4088ef8cf21980"},
|
983 |
+
{file = "websockets-14.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b27ece32f63150c268593d5fdb82819584831a83a3f5809b7521df0685cd5d8"},
|
984 |
+
{file = "websockets-14.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:4daa0faea5424d8713142b33825fff03c736f781690d90652d2c8b053345b0e7"},
|
985 |
+
{file = "websockets-14.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:bc63cee8596a6ec84d9753fd0fcfa0452ee12f317afe4beae6b157f0070c6c7f"},
|
986 |
+
{file = "websockets-14.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:7a570862c325af2111343cc9b0257b7119b904823c675b22d4ac547163088d0d"},
|
987 |
+
{file = "websockets-14.2-cp310-cp310-win32.whl", hash = "sha256:75862126b3d2d505e895893e3deac0a9339ce750bd27b4ba515f008b5acf832d"},
|
988 |
+
{file = "websockets-14.2-cp310-cp310-win_amd64.whl", hash = "sha256:cc45afb9c9b2dc0852d5c8b5321759cf825f82a31bfaf506b65bf4668c96f8b2"},
|
989 |
+
{file = "websockets-14.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:3bdc8c692c866ce5fefcaf07d2b55c91d6922ac397e031ef9b774e5b9ea42166"},
|
990 |
+
{file = "websockets-14.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c93215fac5dadc63e51bcc6dceca72e72267c11def401d6668622b47675b097f"},
|
991 |
+
{file = "websockets-14.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1c9b6535c0e2cf8a6bf938064fb754aaceb1e6a4a51a80d884cd5db569886910"},
|
992 |
+
{file = "websockets-14.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0a52a6d7cf6938e04e9dceb949d35fbdf58ac14deea26e685ab6368e73744e4c"},
|
993 |
+
{file = "websockets-14.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9f05702e93203a6ff5226e21d9b40c037761b2cfb637187c9802c10f58e40473"},
|
994 |
+
{file = "websockets-14.2-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:22441c81a6748a53bfcb98951d58d1af0661ab47a536af08920d129b4d1c3473"},
|
995 |
+
{file = "websockets-14.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:efd9b868d78b194790e6236d9cbc46d68aba4b75b22497eb4ab64fa640c3af56"},
|
996 |
+
{file = "websockets-14.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:1a5a20d5843886d34ff8c57424cc65a1deda4375729cbca4cb6b3353f3ce4142"},
|
997 |
+
{file = "websockets-14.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:34277a29f5303d54ec6468fb525d99c99938607bc96b8d72d675dee2b9f5bf1d"},
|
998 |
+
{file = "websockets-14.2-cp311-cp311-win32.whl", hash = "sha256:02687db35dbc7d25fd541a602b5f8e451a238ffa033030b172ff86a93cb5dc2a"},
|
999 |
+
{file = "websockets-14.2-cp311-cp311-win_amd64.whl", hash = "sha256:862e9967b46c07d4dcd2532e9e8e3c2825e004ffbf91a5ef9dde519ee2effb0b"},
|
1000 |
+
{file = "websockets-14.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:1f20522e624d7ffbdbe259c6b6a65d73c895045f76a93719aa10cd93b3de100c"},
|
1001 |
+
{file = "websockets-14.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:647b573f7d3ada919fd60e64d533409a79dcf1ea21daeb4542d1d996519ca967"},
|
1002 |
+
{file = "websockets-14.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6af99a38e49f66be5a64b1e890208ad026cda49355661549c507152113049990"},
|
1003 |
+
{file = "websockets-14.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:091ab63dfc8cea748cc22c1db2814eadb77ccbf82829bac6b2fbe3401d548eda"},
|
1004 |
+
{file = "websockets-14.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b374e8953ad477d17e4851cdc66d83fdc2db88d9e73abf755c94510ebddceb95"},
|
1005 |
+
{file = "websockets-14.2-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a39d7eceeea35db85b85e1169011bb4321c32e673920ae9c1b6e0978590012a3"},
|
1006 |
+
{file = "websockets-14.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:0a6f3efd47ffd0d12080594f434faf1cd2549b31e54870b8470b28cc1d3817d9"},
|
1007 |
+
{file = "websockets-14.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:065ce275e7c4ffb42cb738dd6b20726ac26ac9ad0a2a48e33ca632351a737267"},
|
1008 |
+
{file = "websockets-14.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e9d0e53530ba7b8b5e389c02282f9d2aa47581514bd6049d3a7cffe1385cf5fe"},
|
1009 |
+
{file = "websockets-14.2-cp312-cp312-win32.whl", hash = "sha256:20e6dd0984d7ca3037afcb4494e48c74ffb51e8013cac71cf607fffe11df7205"},
|
1010 |
+
{file = "websockets-14.2-cp312-cp312-win_amd64.whl", hash = "sha256:44bba1a956c2c9d268bdcdf234d5e5ff4c9b6dc3e300545cbe99af59dda9dcce"},
|
1011 |
+
{file = "websockets-14.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:6f1372e511c7409a542291bce92d6c83320e02c9cf392223272287ce55bc224e"},
|
1012 |
+
{file = "websockets-14.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:4da98b72009836179bb596a92297b1a61bb5a830c0e483a7d0766d45070a08ad"},
|
1013 |
+
{file = "websockets-14.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f8a86a269759026d2bde227652b87be79f8a734e582debf64c9d302faa1e9f03"},
|
1014 |
+
{file = "websockets-14.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:86cf1aaeca909bf6815ea714d5c5736c8d6dd3a13770e885aafe062ecbd04f1f"},
|
1015 |
+
{file = "websockets-14.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a9b0f6c3ba3b1240f602ebb3971d45b02cc12bd1845466dd783496b3b05783a5"},
|
1016 |
+
{file = "websockets-14.2-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:669c3e101c246aa85bc8534e495952e2ca208bd87994650b90a23d745902db9a"},
|
1017 |
+
{file = "websockets-14.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:eabdb28b972f3729348e632ab08f2a7b616c7e53d5414c12108c29972e655b20"},
|
1018 |
+
{file = "websockets-14.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:2066dc4cbcc19f32c12a5a0e8cc1b7ac734e5b64ac0a325ff8353451c4b15ef2"},
|
1019 |
+
{file = "websockets-14.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:ab95d357cd471df61873dadf66dd05dd4709cae001dd6342edafc8dc6382f307"},
|
1020 |
+
{file = "websockets-14.2-cp313-cp313-win32.whl", hash = "sha256:a9e72fb63e5f3feacdcf5b4ff53199ec8c18d66e325c34ee4c551ca748623bbc"},
|
1021 |
+
{file = "websockets-14.2-cp313-cp313-win_amd64.whl", hash = "sha256:b439ea828c4ba99bb3176dc8d9b933392a2413c0f6b149fdcba48393f573377f"},
|
1022 |
+
{file = "websockets-14.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7cd5706caec1686c5d233bc76243ff64b1c0dc445339bd538f30547e787c11fe"},
|
1023 |
+
{file = "websockets-14.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:ec607328ce95a2f12b595f7ae4c5d71bf502212bddcea528290b35c286932b12"},
|
1024 |
+
{file = "websockets-14.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:da85651270c6bfb630136423037dd4975199e5d4114cae6d3066641adcc9d1c7"},
|
1025 |
+
{file = "websockets-14.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c3ecadc7ce90accf39903815697917643f5b7cfb73c96702318a096c00aa71f5"},
|
1026 |
+
{file = "websockets-14.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1979bee04af6a78608024bad6dfcc0cc930ce819f9e10342a29a05b5320355d0"},
|
1027 |
+
{file = "websockets-14.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2dddacad58e2614a24938a50b85969d56f88e620e3f897b7d80ac0d8a5800258"},
|
1028 |
+
{file = "websockets-14.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:89a71173caaf75fa71a09a5f614f450ba3ec84ad9fca47cb2422a860676716f0"},
|
1029 |
+
{file = "websockets-14.2-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:6af6a4b26eea4fc06c6818a6b962a952441e0e39548b44773502761ded8cc1d4"},
|
1030 |
+
{file = "websockets-14.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:80c8efa38957f20bba0117b48737993643204645e9ec45512579132508477cfc"},
|
1031 |
+
{file = "websockets-14.2-cp39-cp39-win32.whl", hash = "sha256:2e20c5f517e2163d76e2729104abc42639c41cf91f7b1839295be43302713661"},
|
1032 |
+
{file = "websockets-14.2-cp39-cp39-win_amd64.whl", hash = "sha256:b4c8cef610e8d7c70dea92e62b6814a8cd24fbd01d7103cc89308d2bfe1659ef"},
|
1033 |
+
{file = "websockets-14.2-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:d7d9cafbccba46e768be8a8ad4635fa3eae1ffac4c6e7cb4eb276ba41297ed29"},
|
1034 |
+
{file = "websockets-14.2-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:c76193c1c044bd1e9b3316dcc34b174bbf9664598791e6fb606d8d29000e070c"},
|
1035 |
+
{file = "websockets-14.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fd475a974d5352390baf865309fe37dec6831aafc3014ffac1eea99e84e83fc2"},
|
1036 |
+
{file = "websockets-14.2-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2c6c0097a41968b2e2b54ed3424739aab0b762ca92af2379f152c1aef0187e1c"},
|
1037 |
+
{file = "websockets-14.2-pp310-pypy310_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d7ff794c8b36bc402f2e07c0b2ceb4a2424147ed4785ff03e2a7af03711d60a"},
|
1038 |
+
{file = "websockets-14.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:dec254fcabc7bd488dab64846f588fc5b6fe0d78f641180030f8ea27b76d72c3"},
|
1039 |
+
{file = "websockets-14.2-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:bbe03eb853e17fd5b15448328b4ec7fb2407d45fb0245036d06a3af251f8e48f"},
|
1040 |
+
{file = "websockets-14.2-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:a3c4aa3428b904d5404a0ed85f3644d37e2cb25996b7f096d77caeb0e96a3b42"},
|
1041 |
+
{file = "websockets-14.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:577a4cebf1ceaf0b65ffc42c54856214165fb8ceeba3935852fc33f6b0c55e7f"},
|
1042 |
+
{file = "websockets-14.2-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ad1c1d02357b7665e700eca43a31d52814ad9ad9b89b58118bdabc365454b574"},
|
1043 |
+
{file = "websockets-14.2-pp39-pypy39_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f390024a47d904613577df83ba700bd189eedc09c57af0a904e5c39624621270"},
|
1044 |
+
{file = "websockets-14.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:3c1426c021c38cf92b453cdf371228d3430acd775edee6bac5a4d577efc72365"},
|
1045 |
+
{file = "websockets-14.2-py3-none-any.whl", hash = "sha256:7a6ceec4ea84469f15cf15807a747e9efe57e369c384fa86e022b3bea679b79b"},
|
1046 |
+
{file = "websockets-14.2.tar.gz", hash = "sha256:5059ed9c54945efb321f097084b4c7e52c246f2c869815876a69d1efc4ad6eb5"},
|
1047 |
+
]
|
1048 |
+
|
1049 |
+
[metadata]
|
1050 |
+
lock-version = "2.0"
|
1051 |
+
python-versions = "^3.9"
|
1052 |
+
content-hash = "a54614470da9b9264887d06c88e26a35f95911f68bcd1880a7431158f8ab17c1"
|
server/pyproject.toml
ADDED
@@ -0,0 +1,22 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
[tool.poetry]
|
2 |
+
name = "fastapi-server"
|
3 |
+
version = "0.1.0"
|
4 |
+
description = "API FastAPI pour Hugging Face Space"
|
5 |
+
authors = ["Your Name <your.email@example.com>"]
|
6 |
+
|
7 |
+
[tool.poetry.dependencies]
|
8 |
+
python = "^3.9"
|
9 |
+
fastapi = "^0.109.0"
|
10 |
+
uvicorn = "^0.27.0"
|
11 |
+
python-dotenv = "^1.0.0"
|
12 |
+
elevenlabs = "^0.2.26"
|
13 |
+
httpx = "^0.26.0"
|
14 |
+
|
15 |
+
[tool.poetry.group.dev.dependencies]
|
16 |
+
pytest = "^7.4.0"
|
17 |
+
black = "^23.1.0"
|
18 |
+
isort = "^5.12.0"
|
19 |
+
|
20 |
+
[build-system]
|
21 |
+
requires = ["poetry-core>=1.0.0"]
|
22 |
+
build-backend = "poetry.core.masonry.api"
|
server/server.py
ADDED
@@ -0,0 +1,111 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
from fastapi import FastAPI, HTTPException
|
2 |
+
from fastapi.middleware.cors import CORSMiddleware
|
3 |
+
from elevenlabs import generate, set_api_key
|
4 |
+
from pydantic import BaseModel
|
5 |
+
import os
|
6 |
+
from dotenv import load_dotenv
|
7 |
+
from typing import List
|
8 |
+
import httpx
|
9 |
+
|
10 |
+
# Load environment variables
|
11 |
+
load_dotenv()
|
12 |
+
|
13 |
+
# Configure Elevenlabs
|
14 |
+
ELEVENLABS_API_KEY = os.getenv("ELEVENLABS_API_KEY")
|
15 |
+
VOICE_ID = os.getenv("ELEVENLABS_VOICE_ID")
|
16 |
+
MODEL_ID = os.getenv("ELEVENLABS_MODEL_ID", "eleven_monolingual_v1")
|
17 |
+
ELEVENLABS_API_URL = "https://api.elevenlabs.io/v1"
|
18 |
+
|
19 |
+
set_api_key(ELEVENLABS_API_KEY)
|
20 |
+
|
21 |
+
app = FastAPI(title="Mon API FastAPI")
|
22 |
+
|
23 |
+
# Configure CORS
|
24 |
+
app.add_middleware(
|
25 |
+
CORSMiddleware,
|
26 |
+
allow_origins=["*"],
|
27 |
+
allow_credentials=True,
|
28 |
+
allow_methods=["*"],
|
29 |
+
allow_headers=["*"],
|
30 |
+
)
|
31 |
+
|
32 |
+
class TextToSpeechRequest(BaseModel):
|
33 |
+
text: str
|
34 |
+
|
35 |
+
class Message(BaseModel):
|
36 |
+
role: str
|
37 |
+
content: str
|
38 |
+
|
39 |
+
class ChatRequest(BaseModel):
|
40 |
+
messages: List[Message]
|
41 |
+
|
42 |
+
@app.get("/")
|
43 |
+
async def read_root():
|
44 |
+
return {"message": "Bienvenue sur l'API FastAPI!"}
|
45 |
+
|
46 |
+
@app.get("/health")
|
47 |
+
async def health_check():
|
48 |
+
return {"status": "ok"}
|
49 |
+
|
50 |
+
@app.post("/text-to-speech")
|
51 |
+
async def text_to_speech(request: TextToSpeechRequest):
|
52 |
+
try:
|
53 |
+
audio = generate(
|
54 |
+
text=request.text,
|
55 |
+
voice=VOICE_ID,
|
56 |
+
model=MODEL_ID
|
57 |
+
)
|
58 |
+
return {"audio": audio}
|
59 |
+
except Exception as e:
|
60 |
+
raise HTTPException(status_code=500, detail=str(e))
|
61 |
+
|
62 |
+
@app.post("/chat")
|
63 |
+
async def chat(request: ChatRequest):
|
64 |
+
try:
|
65 |
+
# Préparer le dernier message
|
66 |
+
last_message = request.messages[-1].content
|
67 |
+
|
68 |
+
# Headers pour l'API Elevenlabs
|
69 |
+
headers = {
|
70 |
+
"xi-api-key": ELEVENLABS_API_KEY,
|
71 |
+
"Content-Type": "application/json",
|
72 |
+
}
|
73 |
+
|
74 |
+
# Appeler l'API Elevenlabs pour la génération de texte
|
75 |
+
async with httpx.AsyncClient() as client:
|
76 |
+
response = await client.post(
|
77 |
+
f"{ELEVENLABS_API_URL}/text-generation",
|
78 |
+
headers=headers,
|
79 |
+
json={
|
80 |
+
"text": last_message,
|
81 |
+
"model_id": MODEL_ID
|
82 |
+
}
|
83 |
+
)
|
84 |
+
|
85 |
+
if response.status_code != 200:
|
86 |
+
raise HTTPException(
|
87 |
+
status_code=500,
|
88 |
+
detail="Erreur lors de l'appel à l'API Elevenlabs Text Generation"
|
89 |
+
)
|
90 |
+
|
91 |
+
response_data = response.json()
|
92 |
+
response_text = response_data["text"]
|
93 |
+
|
94 |
+
# Générer l'audio avec la réponse
|
95 |
+
audio = generate(
|
96 |
+
text=response_text,
|
97 |
+
voice=VOICE_ID,
|
98 |
+
model=MODEL_ID
|
99 |
+
)
|
100 |
+
|
101 |
+
return {
|
102 |
+
"text": response_text,
|
103 |
+
"audio": audio
|
104 |
+
}
|
105 |
+
|
106 |
+
except Exception as e:
|
107 |
+
raise HTTPException(status_code=500, detail=str(e))
|
108 |
+
|
109 |
+
if __name__ == "__main__":
|
110 |
+
import uvicorn
|
111 |
+
uvicorn.run("server:app", host="0.0.0.0", port=8000, reload=True)
|