diff --git a/.dockerignore b/.dockerignore index 9ffa9f1..c9353b3 100644 --- a/.dockerignore +++ b/.dockerignore @@ -11,3 +11,5 @@ venv/ .gitignore data/ reports/ +.aider.model.settings.yml +.aider.chat.history.md diff --git a/Dockerfile b/Dockerfile index 9ee96d1..b88f07b 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,12 +1,26 @@ -FROM python:3.9-slim +FROM python:3.11-alpine WORKDIR /app +RUN apk add --no-cache \ + build-base \ + wget \ + tar \ + bash \ + libffi-dev \ + && wget http://prdownloads.sourceforge.net/ta-lib/ta-lib-0.4.0-src.tar.gz \ + && tar -xvzf ta-lib-0.4.0-src.tar.gz \ + && cd ta-lib \ + && ./configure --prefix=/usr \ + && make \ + && make install \ + && cd .. \ + && rm -rf ta-lib ta-lib-0.4.0-src.tar.gz + COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt - COPY . . EXPOSE 8501 -CMD ["streamlit", "run", "src/streamlit_app.py"] +CMD ["streamlit", "run", "src/streamlit_app.py", "--server.headless=true", "--server.port=8501"] \ No newline at end of file diff --git a/requirements.txt b/requirements.txt index 50ea736..b6da0ed 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,31 +1,133 @@ -# Database connector -clickhouse-connect - -# Basic data libraries -pandas -numpy - -# Environment variables -python-dotenv - -# Testing -pytest - -# Time zone handling -pytz -tzdata - -# Real-time data -yfinance - -# Web interface -streamlit>=1.24.0 -plotly>=5.13.0 -streamlit-option-menu>=0.3.2 - -# Backtesting -backtesting -pandas-ta - -# Technical Analysis -ta +aider-chat==0.74.2 +aiohappyeyeballs==2.4.6 +aiohttp==3.11.12 +aiosignal==1.3.2 +altair==5.5.0 +annotated-types==0.7.0 +anyio==4.8.0 +async-timeout==5.0.1 +attrs==25.1.0 +backoff==2.2.1 +backtesting==0.6.1 +beautifulsoup4==4.13.3 +blinker==1.9.0 +bokeh==3.4.3 +cachetools==5.5.1 +certifi==2025.1.31 +cffi==1.17.1 +charset-normalizer==3.4.1 +click==8.1.8 +clickhouse-connect==0.8.15 +ConfigArgParse==1.7 +contourpy==1.3.0 +diff-match-patch==20241021 +diskcache==5.6.3 +distro==1.9.0 +exceptiongroup==1.2.2 +filelock==3.17.0 +flake8==7.1.1 +frozendict==2.4.6 +frozenlist==1.5.0 +fsspec==2025.2.0 +gitdb==4.0.12 +GitPython==3.1.44 +grep-ast==0.5.0 +h11==0.14.0 +html5lib==1.1 +httpcore==1.0.7 +httpx==0.28.1 +huggingface-hub==0.28.1 +idna==3.10 +importlib_metadata==7.2.1 +importlib_resources==6.5.2 +iniconfig==2.0.0 +Jinja2==3.1.5 +jiter==0.8.2 +joblib==1.4.2 +json5==0.10.0 +jsonschema==4.23.0 +jsonschema-specifications==2024.10.1 +litellm==1.60.6 +lxml==5.3.1 +lz4==4.4.3 +markdown-it-py==3.0.0 +MarkupSafe==3.0.2 +mccabe==0.7.0 +mdurl==0.1.2 +mixpanel==4.10.1 +monotonic==1.6 +multidict==6.1.0 +multitasking==0.0.11 +narwhals==1.26.0 +networkx==3.2.1 +numpy==1.26.4 +openai==1.61.1 +packaging==24.2 +pandas==2.2.3 +pandas_ta==0.3.14b0 +pathspec==0.12.1 +peewee==3.17.9 +pexpect==4.9.0 +pillow==10.4.0 +platformdirs==4.3.6 +plotly==6.0.0 +pluggy==1.5.0 +posthog==3.11.0 +prettytable==3.14.0 +prompt_toolkit==3.0.50 +propcache==0.2.1 +protobuf==5.29.3 +psutil==6.1.1 +ptyprocess==0.7.0 +pyarrow==19.0.0 +pycodestyle==2.12.1 +pycparser==2.22 +pydantic==2.10.6 +pydantic_core==2.27.2 +pydeck==0.9.1 +pydub==0.25.1 +pyflakes==3.2.0 +Pygments==2.19.1 +pypandoc==1.15 +pyperclip==1.9.0 +pytest==8.3.4 +python-dateutil==2.9.0.post0 +python-dotenv==1.0.1 +pytz==2025.1 +PyYAML==6.0.2 +referencing==0.36.2 +regex==2024.11.6 +requests==2.32.3 +rich==13.9.4 +rpds-py==0.22.3 +scipy==1.13.1 +six==1.17.0 +smmap==5.0.2 +sniffio==1.3.1 +sounddevice==0.5.1 +soundfile==0.13.1 +soupsieve==2.6 +streamlit==1.42.0 +streamlit-option-menu==0.4.0 +ta-lib==0.6.3 +tenacity==9.0.0 +tiktoken==0.8.0 +tokenizers==0.19.1 +toml==0.10.2 +tomli==2.2.1 +tornado==6.4.2 +tqdm==4.67.1 +tree-sitter==0.21.3 +tree-sitter-languages==1.10.2 +typing_extensions==4.12.2 +tzdata==2025.1 +urllib3==2.3.0 +watchdog==6.0.0 +watchfiles==1.0.4 +wcwidth==0.2.13 +webencodings==0.5.1 +xyzservices==2025.1.0 +yarl==1.18.3 +yfinance==0.2.52 +zipp==3.21.0 +zstandard==0.23.0