Spaces:
Sleeping
Sleeping
Luis Chaves
commited on
Commit
·
550c7ec
1
Parent(s):
e13f3a2
right app permission and write http error codes
Browse files- Dockerfile +9 -5
- src/everycure/app.py +4 -4
- tests/test_api.py +2 -2
Dockerfile
CHANGED
@@ -1,12 +1,16 @@
|
|
1 |
FROM python:3.12-slim
|
2 |
|
|
|
|
|
|
|
|
|
3 |
WORKDIR /code
|
4 |
|
5 |
-
COPY ./pyproject.toml /code/
|
6 |
-
COPY ./README.md /code/
|
7 |
-
COPY ./src /code/src
|
8 |
-
COPY ./openapi.yaml /code/
|
9 |
|
10 |
RUN pip install --no-cache-dir .[all]
|
11 |
|
12 |
-
CMD ["uvicorn", "everycure.app:app", "--host", "0.0.0.0", "--port", "7860"]
|
|
|
1 |
FROM python:3.12-slim
|
2 |
|
3 |
+
# Create application user with home directory
|
4 |
+
RUN useradd -m appuser
|
5 |
+
USER appuser
|
6 |
+
ENV HOME=/home/appuser
|
7 |
WORKDIR /code
|
8 |
|
9 |
+
COPY --chown=appuser:appuser ./pyproject.toml /code/
|
10 |
+
COPY --chown=appuser:appuser ./README.md /code/
|
11 |
+
COPY --chown=appuser:appuser ./src /code/src
|
12 |
+
COPY --chown=appuser:appuser ./openapi.yaml /code/
|
13 |
|
14 |
RUN pip install --no-cache-dir .[all]
|
15 |
|
16 |
+
CMD ["uvicorn", "everycure.app:app", "--host", "0.0.0.0", "--port", "7860"]
|
src/everycure/app.py
CHANGED
@@ -5,7 +5,7 @@ import logging
|
|
5 |
import uvicorn
|
6 |
|
7 |
# Set up logging
|
8 |
-
logging.basicConfig(level=logging.
|
9 |
logger = logging.getLogger(__name__)
|
10 |
|
11 |
app = FastAPI(
|
@@ -27,7 +27,7 @@ app.add_middleware(
|
|
27 |
# Rest of your existing code
|
28 |
@app.post("/api/v1/extract", response_model=List[Entity])
|
29 |
async def extract_entities(file: UploadFile):
|
30 |
-
logger.
|
31 |
|
32 |
if not file:
|
33 |
logger.error("No file provided")
|
@@ -38,9 +38,9 @@ async def extract_entities(file: UploadFile):
|
|
38 |
raise HTTPException(status_code=415, detail="File must be a PDF")
|
39 |
|
40 |
try:
|
41 |
-
logger.
|
42 |
result = extract_entities_from_pdf(file)
|
43 |
-
logger.
|
44 |
return result
|
45 |
except Exception as e:
|
46 |
logger.error(f"Error during extraction: {str(e)}", exc_info=True)
|
|
|
5 |
import uvicorn
|
6 |
|
7 |
# Set up logging
|
8 |
+
logging.basicConfig(level=logging.INFO)
|
9 |
logger = logging.getLogger(__name__)
|
10 |
|
11 |
app = FastAPI(
|
|
|
27 |
# Rest of your existing code
|
28 |
@app.post("/api/v1/extract", response_model=List[Entity])
|
29 |
async def extract_entities(file: UploadFile):
|
30 |
+
logger.info(f"Received request for file: {file.filename}")
|
31 |
|
32 |
if not file:
|
33 |
logger.error("No file provided")
|
|
|
38 |
raise HTTPException(status_code=415, detail="File must be a PDF")
|
39 |
|
40 |
try:
|
41 |
+
logger.info("Starting entity extraction")
|
42 |
result = extract_entities_from_pdf(file)
|
43 |
+
logger.info(f"Successfully extracted {len(result)} entities")
|
44 |
return result
|
45 |
except Exception as e:
|
46 |
logger.error(f"Error during extraction: {str(e)}", exc_info=True)
|
tests/test_api.py
CHANGED
@@ -30,7 +30,7 @@ def test_extract_entities_invalid_file():
|
|
30 |
files={"file": ("test.txt", tmp, "text/plain")}
|
31 |
)
|
32 |
|
33 |
-
assert response.status_code ==
|
34 |
assert "Invalid file type" in response.json()["detail"]
|
35 |
|
36 |
def test_extract_entities_empty_file(test_pdf):
|
@@ -40,4 +40,4 @@ def test_extract_entities_empty_file(test_pdf):
|
|
40 |
files={} # No file provided
|
41 |
)
|
42 |
|
43 |
-
assert response.status_code ==
|
|
|
30 |
files={"file": ("test.txt", tmp, "text/plain")}
|
31 |
)
|
32 |
|
33 |
+
assert response.status_code == 415
|
34 |
assert "Invalid file type" in response.json()["detail"]
|
35 |
|
36 |
def test_extract_entities_empty_file(test_pdf):
|
|
|
40 |
files={} # No file provided
|
41 |
)
|
42 |
|
43 |
+
assert response.status_code == 400 # FastAPI's validation error
|