mirror of
https://github.com/OpenBB-finance/OpenBB.git
synced 2026-10-27 04:31:13 +00:00
Docker : building + publishing (#2904)
* fixed integrated test test_stocks_ba.openbb * fixed integrated test test_stocks_dd.openbb * improved and centralised the check * fix lint * Docker : update ci + build files * Docker : update build and CD * Docker : update CD * Docker : test * Docker : test CD * Docker : test CD * Docker : rename `build.sh` * Docker : tests CD * Docker : test CD * Docker : update CD + build * Docker : fix CD * Docker : fix CD * Docker : build * Docker : test CD * Docker : CD * Docker : CD * Docker : test * Docker : test CD * Docker : test CD * Docker : test CD * Docker : test CD * Docker : test CD * Docker : test CD * Docker : test CD * Docker : test CD * Docker : build + CD * Docker : test CD * Docker : test CD * Docker : test CD * Docker : test CD * Docker : build * Docker : test CD * Docker : build + cd * Moving `scripts` * Checkout `helper_funcs.py` from main * Docker : remove test file with alpine * fixing readme errors * fixing missed readme errors * Docker : build * Logging : handle docker app name * Docker : test CD * Docker : cd * Doc * Doc * Doc : linting * Doc * Docker * Doc * Fixing `terminal_controller` * Linting * Doc : fixing links * Version 1.9.1 * Docker : fix name * Doc : add volumes in command Co-authored-by: hjoaquim <h.joaquim@campus.fct.unl.pt> Co-authored-by: James Simmons <simmonsj330@gmail.com> Co-authored-by: Colin Delahunty <72827203+colin99d@users.noreply.github.com>
This commit is contained in:
34
.github/workflows/docker.yml
vendored
34
.github/workflows/docker.yml
vendored
@@ -6,23 +6,25 @@ jobs:
|
|||||||
publish-image:
|
publish-image:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
env:
|
env:
|
||||||
OWNER: openbb-finance
|
OPENBBTERMINAL_DOCKER_GITHUB_REPOSITORY: ${{ github.repository }}
|
||||||
IMAGE: openbbterminal-poetry
|
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- name: Checkout Code
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
|
||||||
- name: Login to GitHub Container Registry
|
- name: Login to GitHub Container Registry
|
||||||
uses: docker/login-action@v1
|
uses: docker/login-action@v2
|
||||||
with:
|
with:
|
||||||
registry: ghcr.io
|
registry: ghcr.io
|
||||||
username: ${{ github.actor }}
|
username: ${{ github.actor }}
|
||||||
password: ${{ secrets.GITHUB_TOKEN }}
|
password: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
- name: Build the Docker image
|
- name: Building the Docker image
|
||||||
run: |
|
run: |
|
||||||
source docker/compose.env
|
source docker/compose.env
|
||||||
docker-compose -f docker/docker-compose.yaml build
|
source docker/build.sh
|
||||||
docker tag `docker images -q ghcr.io/$OWNER/$IMAGE` ghcr.io/$OWNER/$IMAGE:$OPENBBTERMINAL_DOCKER_POETRY_VERSION
|
echo "OPENBBTERMINAL_DOCKER_POETRY_IMAGE=$OPENBBTERMINAL_DOCKER_POETRY_IMAGE" >> $GITHUB_ENV
|
||||||
docker run ghcr.io/$OWNER/$IMAGE:$OPENBBTERMINAL_DOCKER_POETRY_VERSION
|
|
||||||
docker push ghcr.io/$OWNER/$IMAGE:$OPENBBTERMINAL_DOCKER_POETRY_VERSION
|
- name: Publishing the Docker image
|
||||||
|
run: |
|
||||||
|
docker push "${OPENBBTERMINAL_DOCKER_POETRY_IMAGE}"
|
||||||
|
|||||||
63
DOCKER_ADVANCED.md
vendored
63
DOCKER_ADVANCED.md
vendored
@@ -1,63 +0,0 @@
|
|||||||
# Docker Advanced Settings
|
|
||||||
|
|
||||||
## Display
|
|
||||||
|
|
||||||
In order to display plots in the docker container, we need to configure the XServer on the host machine.
|
|
||||||
Without this configuration the interactive charts will not be displayed.
|
|
||||||
|
|
||||||
### X-Server on macOS
|
|
||||||
|
|
||||||
Users familiar with Docker and X-Server can set the `DISPLAY` variable in the file [setenv](/docker/setenv) described above. If you use this approach remember to add `:0` at the end of your inet address. E.g. `DISPLAY=192.168.1.155:0`.
|
|
||||||
|
|
||||||
For help setting up the X-Server continue reading:
|
|
||||||
|
|
||||||
#### Setting up X Quartz/X11
|
|
||||||
|
|
||||||
On macOS the X11 client of choice is [XQuartz](https://www.xquartz.org/). On Windows it's [Xming](http://www.straightrunning.com/XmingNotes/). XQuartz will be used as an example further on.
|
|
||||||
|
|
||||||
0. Install X Quartz from <https://www.xquartz.org/>
|
|
||||||
1. With X Quartz open: go to Preferences -> Security and make sure both options are enabled.
|
|
||||||

|
|
||||||
|
|
||||||
#### Adding the display for Docker
|
|
||||||
|
|
||||||
From the command prompt or terminal, run the following to add your local configuration to the list of allowed access control:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
IP=$(ifconfig | grep inet | grep -v -e "127.0.0.1" | awk '$1=="inet" {print $2}')
|
|
||||||
xhost + $IP
|
|
||||||
```
|
|
||||||
|
|
||||||
Now we can run the docker container, adding the display to the environment:
|
|
||||||
|
|
||||||
```bach
|
|
||||||
docker run -it --rm --env-file=path/to/setenv -e DISPLAY=$IP:0 ghcr.io/openbb-finance/openbbterminal-poetry:latest
|
|
||||||
```
|
|
||||||
|
|
||||||
This container will be able to display all the same plots as the terminal interface.
|
|
||||||
|
|
||||||
### X-Server on Linux Desktop
|
|
||||||
|
|
||||||
X-Server is default in Linux distribution. There is no need to install any clients.
|
|
||||||
|
|
||||||
#### Local docker container
|
|
||||||
|
|
||||||
We can use IPC socket to connect Desktop.
|
|
||||||
|
|
||||||
Add this setting to your `.env` file.
|
|
||||||
|
|
||||||
```bash
|
|
||||||
OPENBB_BACKEND=Qt5Agg
|
|
||||||
```
|
|
||||||
|
|
||||||
And run the following commands.
|
|
||||||
|
|
||||||
```bash
|
|
||||||
xhost +local:
|
|
||||||
docker run -it --rm --name openbb --env-file=./.env -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix ghcr.io/openbb-finance/openbbterminal-poetry:latest
|
|
||||||
xhost -local:
|
|
||||||
```
|
|
||||||
|
|
||||||
If you're using remote docker host, you can connect with "ssh -X <FQDN/IP>".
|
|
||||||
|
|
||||||
Then run the previous docker command.
|
|
||||||
74
README.md
vendored
74
README.md
vendored
@@ -66,44 +66,48 @@
|
|||||||
<details open="open">
|
<details open="open">
|
||||||
<summary><h2 style="display: inline-block">Table of Contents</h2></summary>
|
<summary><h2 style="display: inline-block">Table of Contents</h2></summary>
|
||||||
<ol>
|
<ol>
|
||||||
<li> <a href="#about-the-project">About The Project</a> </li>
|
<li> <a href="#1-about-the-project">About The Project</a> </li>
|
||||||
<li><a href="#installation">Installation</a></li>
|
<li><a href="#2-installation">Installation</a></li>
|
||||||
<li><a href="#contributing">Contributing</a></li>
|
<li><a href="#3-contributing">Contributing</a></li>
|
||||||
<li><a href="#license">License</a></li>
|
<li><a href="#4-license">License</a></li>
|
||||||
<li><a href="#disclaimer">Disclaimer</a></li>
|
<li><a href="#5-disclaimer">Disclaimer</a></li>
|
||||||
<li><a href="#contacts">Contacts</a></li>
|
<li><a href="#6-contacts">Contacts</a></li>
|
||||||
|
<li><a href="#7-star-history">Star History</a></li>
|
||||||
|
<li><a href="#8-contributors">Contributors</a></li>
|
||||||
</ol>
|
</ol>
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
## About The Project
|
## 1. About The Project
|
||||||
|
|
||||||
**How it started:**
|
**How it started:**
|
||||||
|
|
||||||
OpenBB Terminal is an awesome stock and crypto market terminal that has been developed for fun, while I saw my GME
|
OpenBBTerminal is an awesome stock and crypto market terminal that has been developed for fun, while I saw my GME shares tanking. But hey, I like the stock 💎🙌.
|
||||||
shares tanking. But hey, I like the stock 💎🙌.
|
|
||||||
|
|
||||||
**How it's going:**
|
**How it's going:**
|
||||||
|
|
||||||
OpenBB Terminal provides a modern Python-based integrated environment for investment research, that allows
|
OpenBBTerminal provides a Python-based integrated environment for investment research, that allows
|
||||||
an average joe retail trader to leverage state-of-the-art Data Science and Machine Learning technologies.
|
an average joe retail trader to leverage state-of-the-art Data Science and Machine Learning technologies.
|
||||||
|
|
||||||
As a modern Python-based environment, OpenBBTerminal opens access to numerous Python data libraries in Data Science
|
As a Python-based environment, OpenBBTerminal opens access to numerous Python data libraries in Data Science
|
||||||
(Pandas, Numpy, Scipy, Jupyter), Machine Learning (Pytorch, Sklearn, Flair), and Data Acquisition
|
(Pandas, Numpy, Scipy, Jupyter), Machine Learning (Pytorch, Sklearn, Flair), and Data Acquisition
|
||||||
(Beautiful Soup, and numerous third-party APIs).
|
(Beautiful Soup, and numerous third-party APIs).
|
||||||
|
|
||||||
## Installation
|
## 2. Installation
|
||||||
|
|
||||||
If you wish to install the Terminal, there are currently four options:
|
If you wish to install the OpenBBTerminal, there are currently four options:
|
||||||
|
|
||||||
- [Using the Installer](https://openbb-finance.github.io/OpenBBTerminal/#accessing-the-openbb-terminal) (recommended if you just want to use the terminal)
|
|**Option**|**Use case**|
|
||||||
- [Using Python](openbb_terminal/README.md#anaconda--python) (recommended if you want to develop new features)
|
|:-|:-|
|
||||||
- [Using Docker](openbb_terminal/README.md#Docker-Installation) (alternative option to the installer if preferred)
|
|[Installer for Mac or Windows](https://openbb-finance.github.io/OpenBBTerminal/#accessing-the-openbb-terminal)|Recommended way if you just want to use the terminal.|
|
||||||
|
|[Git clone](openbb_terminal/README.md#anaconda--python)|Best way if you want to contribute to the project : by adding code or documentation.|
|
||||||
|
|[Pypi.org](openbb_terminal/SDK_README)|Best way if you want to use the SDK.|
|
||||||
|
|[Using Docker](openbb_terminal/DOCKER_README.md)|An alternative way.|
|
||||||
|
|
||||||
## Contributing
|
## 3. Contributing
|
||||||
|
|
||||||
There are 3 main ways of contributing to this project. (Hopefully you have starred the project by now ⭐️)
|
There are three main ways of contributing to this project. (Hopefully you have starred the project by now ⭐️)
|
||||||
|
|
||||||
**Become a Contributor**
|
**BECOME A CONTRIBUTOR**
|
||||||
|
|
||||||
1. Fork the Project
|
1. Fork the Project
|
||||||
2. Create your Feature Branch (`git checkout -b feature/AmazingFeature`)
|
2. Create your Feature Branch (`git checkout -b feature/AmazingFeature`)
|
||||||
@@ -115,33 +119,37 @@ There are 3 main ways of contributing to this project. (Hopefully you have starr
|
|||||||
|
|
||||||
You can read more details about adding a feature in our [CONTRIBUTING GUIDELINES](/CONTRIBUTING.md).
|
You can read more details about adding a feature in our [CONTRIBUTING GUIDELINES](/CONTRIBUTING.md).
|
||||||
|
|
||||||
**Raise an issue or Request a feature**
|
**RAISE AN ISSUE OR REQUEST A FEATURE**
|
||||||
|
|
||||||
- Raise an issue by opening a [bug ticket](https://github.com/OpenBB-finance/OpenBBTerminal/issues).
|
- Raise an issue by opening a [bug ticket](https://github.com/OpenBB-finance/OpenBBTerminal/issues).
|
||||||
- Request a new feature through a [feature request ticket](https://github.com/OpenBB-finance/OpenBBTerminal/issues).
|
- Request a new feature through a [feature request ticket](https://github.com/OpenBB-finance/OpenBBTerminal/issues).
|
||||||
|
|
||||||
**Join us**
|
**JOIN US**
|
||||||
|
|
||||||
Join [our Discord](https://openbb.co/discord) and provide us any feedback on The OpenBB Terminal.
|
Join [our Discord](https://openbb.co/discord) and provide us any feedback on The OpenBB Terminal.
|
||||||
|
|
||||||
## License
|
## 4. License
|
||||||
|
|
||||||
Distributed under the MIT License. See
|
Distributed under the MIT License. See
|
||||||
[LICENSE](https://github.com/OpenBB-finance/OpenBBTerminal/blob/main/LICENSE) for more information.
|
[LICENSE](https://github.com/OpenBB-finance/OpenBBTerminal/blob/main/LICENSE) for more information.
|
||||||
|
|
||||||
## Disclaimer
|
## 5. Disclaimer
|
||||||
|
|
||||||
"A few things I am not. I am not a cat. I am not an institutional investor, nor am I a hedge fund. I do not have
|
*"A few things I am not. I am not a cat. I am not an institutional investor, nor am I a hedge fund. I do not have
|
||||||
clients and I do not provide personalized investment advice for fees or commissions." DFV
|
clients and I do not provide personalized investment advice for fees or commissions."* DFV
|
||||||
|
|
||||||
|
```text
|
||||||
Trading in financial instruments involves high risks including the risk of losing some, or all, of your investment
|
Trading in financial instruments involves high risks including the risk of losing some, or all, of your investment
|
||||||
amount, and may not be suitable for all investors. Before deciding to trade in a financial instrument you should be fully
|
amount, and may not be suitable for all investors.
|
||||||
informed of the risks and costs associated with trading the financial markets, carefully consider your investment
|
|
||||||
objectives, level of experience, and risk appetite, and seek professional advice where needed. The data contained in the OpenBB terminal
|
|
||||||
is not necessarily accurate. OpenBB and any provider of the data contained in this website will not accept liability for
|
|
||||||
any loss or damage as a result of your trading, or your reliance on the information displayed.
|
|
||||||
|
|
||||||
## Contacts
|
Before deciding to trade in a financial instrument you should be fully informed of the risks and costs associated with trading the financial markets, carefully consider your investment objectives, level of experience, and risk appetite, and seek professional advice where needed.
|
||||||
|
|
||||||
|
The data contained in the OpenBBTerminal is not necessarily accurate.
|
||||||
|
|
||||||
|
OpenBB and any provider of the data contained in this website will not accept liability for any loss or damage as a result of your trading, or your reliance on the information displayed.
|
||||||
|
```
|
||||||
|
|
||||||
|
## 6. Contacts
|
||||||
|
|
||||||
If you have any questions about the terminal or anything OpenBB, feel free to email us at support@openbb.co
|
If you have any questions about the terminal or anything OpenBB, feel free to email us at support@openbb.co
|
||||||
|
|
||||||
@@ -153,11 +161,11 @@ Feel free to share loss porn, memes or any questions at:
|
|||||||
- Discord: [openbb.co/discord](https://openbb.co/discord)
|
- Discord: [openbb.co/discord](https://openbb.co/discord)
|
||||||
- Reddit: [openbb.co/reddit](https://openbb.co/reddit)
|
- Reddit: [openbb.co/reddit](https://openbb.co/reddit)
|
||||||
|
|
||||||
## Star History
|
## 7. Star History
|
||||||
|
|
||||||
[](https://star-history.com/#openbb-finance/OpenBBTerminal&Date)
|
[](https://star-history.com/#openbb-finance/OpenBBTerminal&Date)
|
||||||
|
|
||||||
## Contributors
|
## 8. Contributors
|
||||||
|
|
||||||
<a href="https://github.com/OpenBB-finance/OpenBBTerminal/graphs/contributors">
|
<a href="https://github.com/OpenBB-finance/OpenBBTerminal/graphs/contributors">
|
||||||
<img src="https://contributors-img.web.app/image?repo=OpenBB-finance/OpenBBTerminal" width="800"/>
|
<img src="https://contributors-img.web.app/image?repo=OpenBB-finance/OpenBBTerminal" width="800"/>
|
||||||
|
|||||||
4
build/pyinstaller/.env
vendored
4
build/pyinstaller/.env
vendored
@@ -1,5 +1,5 @@
|
|||||||
OPENBB_PACKAGED_APPLICATION=true
|
OPENBB_LOGGING_APP_NAME=gst_packaged
|
||||||
OPENBB_LOGGING_COMMIT_HASH='sha:c9884228'
|
OPENBB_LOGGING_COMMIT_HASH=sha:c9884228
|
||||||
OPENBB_ENABLE_PREDICT=false
|
OPENBB_ENABLE_PREDICT=false
|
||||||
OPENBB_ENABLE_CHECK_API=true
|
OPENBB_ENABLE_CHECK_API=true
|
||||||
OPENBB_ENABLE_THOUGHTS_DAY=false
|
OPENBB_ENABLE_THOUGHTS_DAY=false
|
||||||
|
|||||||
25
docker/build.sh
vendored
Normal file
25
docker/build.sh
vendored
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
echo "Building docker releases"
|
||||||
|
|
||||||
|
# SET DEFAULT PARAMETERS IF EMPTY
|
||||||
|
OPENBBTERMINAL_DOCKER_REGISTRY="${OPENBBTERMINAL_DOCKER_REGISTRY:-ghcr.io}"
|
||||||
|
OPENBBTERMINAL_DOCKER_GITHUB_REPOSITORY="${OPENBBTERMINAL_DOCKER_GITHUB_REPOSITORY:-openbb-finance}"
|
||||||
|
OPENBBTERMINAL_DOCKER_RELEASE_VERSION="${OPENBBTERMINAL_DOCKER_RELEASE_VERSION:-0.0.1}"
|
||||||
|
# SET IMAGES NAMES
|
||||||
|
OPENBBTERMINAL_DOCKER_PYTHON_IMAGE=${OPENBBTERMINAL_DOCKER_REGISTRY,,}/${OPENBBTERMINAL_DOCKER_GITHUB_REPOSITORY,,}/python:${OPENBBTERMINAL_DOCKER_RELEASE_VERSION,,}
|
||||||
|
OPENBBTERMINAL_DOCKER_POETRY_DEPS_IMAGE=${OPENBBTERMINAL_DOCKER_REGISTRY,,}/${OPENBBTERMINAL_DOCKER_GITHUB_REPOSITORY,,}/poetry-deps:${OPENBBTERMINAL_DOCKER_RELEASE_VERSION,,}
|
||||||
|
OPENBBTERMINAL_DOCKER_POETRY_IMAGE=${OPENBBTERMINAL_DOCKER_REGISTRY,,}/${OPENBBTERMINAL_DOCKER_GITHUB_REPOSITORY,,}/poetry:${OPENBBTERMINAL_DOCKER_RELEASE_VERSION,,}
|
||||||
|
|
||||||
|
# DISPLAY PARAMETERS
|
||||||
|
echo "OPENBBTERMINAL_DOCKER_REGISTRY = $OPENBBTERMINAL_DOCKER_REGISTRY"
|
||||||
|
echo "OPENBBTERMINAL_DOCKER_GITHUB_REPOSITORY = $OPENBBTERMINAL_DOCKER_GITHUB_REPOSITORY"
|
||||||
|
echo "OPENBBTERMINAL_DOCKER_RELEASE_VERSION = $OPENBBTERMINAL_DOCKER_RELEASE_VERSION"
|
||||||
|
# DISPLAY IMAGES NAMES
|
||||||
|
echo "OPENBBTERMINAL_DOCKER_PYTHON_IMAGE = $OPENBBTERMINAL_DOCKER_PYTHON_IMAGE"
|
||||||
|
echo "OPENBBTERMINAL_DOCKER_POETRY_DEPS_IMAGE = $OPENBBTERMINAL_DOCKER_POETRY_DEPS_IMAGE"
|
||||||
|
echo "OPENBBTERMINAL_DOCKER_POETRY_IMAGE = $OPENBBTERMINAL_DOCKER_POETRY_IMAGE"
|
||||||
|
|
||||||
|
docker build -f docker/python.dockerfile -t ${OPENBBTERMINAL_DOCKER_PYTHON_IMAGE} .
|
||||||
|
docker build -f docker/poetry-deps.dockerfile -t ${OPENBBTERMINAL_DOCKER_POETRY_DEPS_IMAGE} --build-arg OPENBBTERMINAL_DOCKER_PYTHON_IMAGE=${OPENBBTERMINAL_DOCKER_PYTHON_IMAGE} .
|
||||||
|
docker build -f docker/poetry.dockerfile -t "${OPENBBTERMINAL_DOCKER_POETRY_IMAGE}" --build-arg OPENBBTERMINAL_DOCKER_POETRY_DEPS_IMAGE=${OPENBBTERMINAL_DOCKER_POETRY_DEPS_IMAGE} .
|
||||||
14
docker/compose.env
vendored
14
docker/compose.env
vendored
@@ -1,12 +1,2 @@
|
|||||||
OPENBBTERMINAL_DOCKER_IMAGE_PREFIX="ghcr.io/openbb-finance"
|
OPENBBTERMINAL_DOCKER_REGISTRY="ghcr.io"
|
||||||
OPENBBTERMINAL_DOCKER_PYTHON_VERSION="1.8.0"
|
OPENBBTERMINAL_DOCKER_RELEASE_VERSION="1.9.1"
|
||||||
OPENBBTERMINAL_DOCKER_POETRY_DEPS_VERSION="1.8.0"
|
|
||||||
OPENBBTERMINAL_DOCKER_POETRY_VERSION="1.8.0"
|
|
||||||
DOCKER_DEFAULT_PLATFORM=linux/amd64
|
|
||||||
|
|
||||||
export OPENBBTERMINAL_DOCKER_IMAGE_PREFIX
|
|
||||||
export OPENBBTERMINAL_DOCKER_PYTHON_VERSION
|
|
||||||
export OPENBBTERMINAL_DOCKER_DEPS_VERSION
|
|
||||||
export OPENBBTERMINAL_DOCKER_POETRY_DEPS_VERSION
|
|
||||||
export OPENBBTERMINAL_DOCKER_OPENBBTERMINAL_VERSION
|
|
||||||
export OPENBBTERMINAL_DOCKER_POETRY_VERSION
|
|
||||||
33
docker/docker-compose.yaml
vendored
33
docker/docker-compose.yaml
vendored
@@ -1,27 +1,12 @@
|
|||||||
version: '3.8'
|
version: '3.8'
|
||||||
services:
|
services:
|
||||||
openbbterminal-python:
|
poetry:
|
||||||
|
environment:
|
||||||
|
DISPLAY: host.docker.internal:0.0
|
||||||
|
volumes:
|
||||||
|
- ~/OpenBBUserData:/home/python/OpenBBUserData
|
||||||
|
- ~/.openbb_terminal:/home/python/.openbb_terminal
|
||||||
platform: linux/amd64
|
platform: linux/amd64
|
||||||
build:
|
image: ghcr.io/openbb-finance/openbbterminal/poetry:1.9.1
|
||||||
context: ..
|
stdin_open: true # docker run -i
|
||||||
dockerfile: docker/openbbterminal-python.dockerfile
|
tty: true # docker run -t
|
||||||
image: "${OPENBBTERMINAL_DOCKER_IMAGE_PREFIX}/openbbterminal-python:${OPENBBTERMINAL_DOCKER_PYTHON_VERSION}"
|
|
||||||
openbbterminal-poetry-deps:
|
|
||||||
platform: linux/amd64
|
|
||||||
build:
|
|
||||||
context: ..
|
|
||||||
dockerfile: docker/openbbterminal-poetry-deps.dockerfile
|
|
||||||
args:
|
|
||||||
OPENBBTERMINAL_DOCKER_IMAGE_PREFIX: ${OPENBBTERMINAL_DOCKER_IMAGE_PREFIX}
|
|
||||||
OPENBBTERMINAL_DOCKER_PYTHON_VERSION: ${OPENBBTERMINAL_DOCKER_PYTHON_VERSION}
|
|
||||||
image: "${OPENBBTERMINAL_DOCKER_IMAGE_PREFIX}/openbbterminal-poetry-deps:${OPENBBTERMINAL_DOCKER_POETRY_DEPS_VERSION}"
|
|
||||||
openbbterminal-poetry:
|
|
||||||
platform: linux/amd64
|
|
||||||
build:
|
|
||||||
context: ..
|
|
||||||
dockerfile: docker/openbbterminal-poetry.dockerfile
|
|
||||||
args:
|
|
||||||
OPENBBTERMINAL_DOCKER_IMAGE_PREFIX: ${OPENBBTERMINAL_DOCKER_IMAGE_PREFIX}
|
|
||||||
OPENBBTERMINAL_DOCKER_POETRY_DEPS_VERSION: ${OPENBBTERMINAL_DOCKER_POETRY_DEPS_VERSION}
|
|
||||||
image: "${OPENBBTERMINAL_DOCKER_IMAGE_PREFIX}/openbbterminal-poetry:${OPENBBTERMINAL_DOCKER_POETRY_VERSION}"
|
|
||||||
tty: true
|
|
||||||
5
docker/entry-point.sh
vendored
5
docker/entry-point.sh
vendored
@@ -1,5 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# stty erase ^h
|
|
||||||
# poetry run python terminal.py
|
|
||||||
python terminal.py
|
|
||||||
12
docker/openbbterminal-poetry-deps.dockerfile
vendored
12
docker/openbbterminal-poetry-deps.dockerfile
vendored
@@ -1,12 +0,0 @@
|
|||||||
ARG OPENBBTERMINAL_DOCKER_IMAGE_PREFIX="ghcr.io/openbb-finance"
|
|
||||||
ARG OPENBBTERMINAL_DOCKER_PYTHON_VERSION="1.0.0"
|
|
||||||
FROM ${OPENBBTERMINAL_DOCKER_IMAGE_PREFIX}/openbbterminal-python:${OPENBBTERMINAL_DOCKER_PYTHON_VERSION}
|
|
||||||
|
|
||||||
LABEL org.opencontainers.image.source https://github.com/OpenBB-finance/OpenBBTerminal
|
|
||||||
|
|
||||||
COPY --chown=python:python pyproject.toml poetry.lock /home/python/
|
|
||||||
|
|
||||||
RUN mkdir /home/python/openbb_terminal && \
|
|
||||||
touch openbb_terminal/__init__.py && \
|
|
||||||
chown python:python /home/python/openbb_terminal /home/python/openbb_terminal/__init__.py && \
|
|
||||||
poetry install
|
|
||||||
9
docker/openbbterminal-poetry.dockerfile
vendored
9
docker/openbbterminal-poetry.dockerfile
vendored
@@ -1,9 +0,0 @@
|
|||||||
ARG OPENBBTERMINAL_DOCKER_IMAGE_PREFIX="ghcr.io/openbb-finance"
|
|
||||||
ARG OPENBBTERMINAL_DOCKER_POETRY_DEPS_VERSION="1.2.0"
|
|
||||||
FROM ${OPENBBTERMINAL_DOCKER_IMAGE_PREFIX}/openbbterminal-poetry-deps:${OPENBBTERMINAL_DOCKER_POETRY_DEPS_VERSION}
|
|
||||||
|
|
||||||
LABEL org.opencontainers.image.source https://github.com/OpenBB-finance/OpenBBTerminal
|
|
||||||
|
|
||||||
COPY --chown=python:python . .
|
|
||||||
|
|
||||||
CMD ["bash", "docker/entry-point-poetry.sh"]
|
|
||||||
12
docker/poetry-deps.dockerfile
vendored
Normal file
12
docker/poetry-deps.dockerfile
vendored
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
ARG OPENBBTERMINAL_DOCKER_PYTHON_IMAGE="ghcr.io/openbb-finance/openbbterminal-python:1.0.0"
|
||||||
|
|
||||||
|
FROM ${OPENBBTERMINAL_DOCKER_PYTHON_IMAGE}
|
||||||
|
|
||||||
|
LABEL org.opencontainers.image.source https://github.com/OpenBB-finance/OpenBBTerminal
|
||||||
|
|
||||||
|
COPY --chown=python:python pyproject.toml poetry.lock /home/python/
|
||||||
|
|
||||||
|
RUN mkdir /home/python/openbb_terminal
|
||||||
|
RUN touch openbb_terminal/__init__.py
|
||||||
|
RUN chown python:python /home/python/openbb_terminal /home/python/openbb_terminal/__init__.py
|
||||||
|
RUN poetry install
|
||||||
11
docker/poetry.dockerfile
vendored
Normal file
11
docker/poetry.dockerfile
vendored
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
ARG OPENBBTERMINAL_DOCKER_POETRY_DEPS_IMAGE="ghcr.io/openbb-finance/openbbterminal-poetry-deps:1.0.0"
|
||||||
|
|
||||||
|
FROM ${OPENBBTERMINAL_DOCKER_POETRY_DEPS_IMAGE}
|
||||||
|
|
||||||
|
LABEL org.opencontainers.image.source https://github.com/OpenBB-finance/OpenBBTerminal
|
||||||
|
|
||||||
|
COPY --chown=python:python . .
|
||||||
|
|
||||||
|
RUN echo "OPENBB_LOGGING_APP_NAME=gst_docker" > .env
|
||||||
|
|
||||||
|
CMD ["bash", "docker/entry-point-poetry.sh"]
|
||||||
@@ -1,8 +1,9 @@
|
|||||||
FROM python:3.9-slim-buster
|
FROM python:3.9-slim-bullseye
|
||||||
|
|
||||||
LABEL org.opencontainers.image.source https://github.com/OpenBB-finance/OpenBBTerminal
|
LABEL org.opencontainers.image.source https://github.com/OpenBB-finance/OpenBBTerminal
|
||||||
|
|
||||||
RUN apt-get update && apt-get -y install --no-install-recommends \
|
RUN apt-get update
|
||||||
|
RUN apt-get -y install --no-install-recommends \
|
||||||
gcc \
|
gcc \
|
||||||
g++ \
|
g++ \
|
||||||
make \
|
make \
|
||||||
@@ -21,13 +22,13 @@ RUN apt-get update && apt-get -y install --no-install-recommends \
|
|||||||
libgl1-mesa-glx \
|
libgl1-mesa-glx \
|
||||||
libpng16-16 \
|
libpng16-16 \
|
||||||
procps \
|
procps \
|
||||||
python3-tk && \
|
python3-tk
|
||||||
curl -sL https://deb.nodesource.com/setup_16.x -o nodesource_setup.sh && \
|
RUN curl -sL https://deb.nodesource.com/setup_16.x -o nodesource_setup.sh
|
||||||
bash nodesource_setup.sh && \
|
RUN bash nodesource_setup.sh
|
||||||
apt-get install -y nodejs && \
|
RUN apt-get install -y nodejs
|
||||||
apt-get -y autoremove && \
|
RUN apt-get -y autoremove
|
||||||
apt-get clean && \
|
RUN apt-get clean
|
||||||
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
|
RUN rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
|
||||||
|
|
||||||
RUN useradd --create-home --shell /bin/bash python
|
RUN useradd --create-home --shell /bin/bash python
|
||||||
|
|
||||||
@@ -36,4 +37,4 @@ WORKDIR /home/python
|
|||||||
|
|
||||||
ENV PATH="/home/python/.local/bin:${PATH}"
|
ENV PATH="/home/python/.local/bin:${PATH}"
|
||||||
|
|
||||||
RUN pip install "poetry==1.1.13"
|
RUN pip install "poetry==1.1.15"
|
||||||
183
openbb_terminal/DOCKER_README.md
vendored
Normal file
183
openbb_terminal/DOCKER_README.md
vendored
Normal file
@@ -0,0 +1,183 @@
|
|||||||
|
# OpenBBTerminal with Docker
|
||||||
|
|
||||||
|
Here are the steps to get OpenBBTerminal using the Docker containers that we provide:
|
||||||
|
|
||||||
|
1. Installing `Docker` and `Docker Compose`
|
||||||
|
2. Pulling and running `OpenBBTerminal Docker Container`
|
||||||
|
3. Configuring your X-server to show plots
|
||||||
|
|
||||||
|
Each of this steps need to be followed to have a working version of OpenBBTerminal.
|
||||||
|
|
||||||
|
We will detail these steps in the rest of this document.
|
||||||
|
|
||||||
|
## 1. Installing `Docker` and `Docker Compose`
|
||||||
|
|
||||||
|
**INSTALL DOCKER**
|
||||||
|
|
||||||
|
Installing Docker Desktop is the easiest way for most people:
|
||||||
|
|
||||||
|
It has a `Graphical User Interface` and comes with `Docke Compose` in it.
|
||||||
|
|
||||||
|
You can find `Docker Desktop` installation file for your `OS` here:
|
||||||
|
|
||||||
|
[Download Docker Desktop](https://www.docker.com/products/docker-desktop)
|
||||||
|
|
||||||
|
**START DOCKER**
|
||||||
|
|
||||||
|
Once you have `Docker` installed and running, you can use the following command to check the state:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker info
|
||||||
|
```
|
||||||
|
|
||||||
|
It should output a text like this one:
|
||||||
|
|
||||||
|
```text
|
||||||
|
Client:
|
||||||
|
Context: default
|
||||||
|
Debug Mode: false
|
||||||
|
|
||||||
|
Server:
|
||||||
|
Containers: 14
|
||||||
|
Running: 2
|
||||||
|
Paused: 1
|
||||||
|
Stopped: 10
|
||||||
|
...
|
||||||
|
```
|
||||||
|
|
||||||
|
If you see a message like the following, it most likely means you need to start `Docker`.
|
||||||
|
|
||||||
|
Open the docker desktop app in this case.
|
||||||
|
|
||||||
|
```text
|
||||||
|
Server:
|
||||||
|
ERROR: Cannot connect to the Docker daemon at unix:///var/run/docker.sock.
|
||||||
|
Is the docker daemon running?
|
||||||
|
```
|
||||||
|
|
||||||
|
## 2. Pulling and running `OpenBBTerminal Docker Container`
|
||||||
|
|
||||||
|
**DOCKER COMPOSE**
|
||||||
|
|
||||||
|
Here are the commands to use `Docker Compose` to pull and run the `OpenBBTerminal Docker Container`:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
curl -o docker-compose.yaml https://raw.githubusercontent.com/OpenBB-finance/OpenBBTerminal/main/docker/docker-compose.yaml
|
||||||
|
|
||||||
|
docker compose run poetry
|
||||||
|
```
|
||||||
|
|
||||||
|
The command line with `curl` is downloading this file : [`docker-compose.yaml`](https://raw.githubusercontent.com/OpenBB-finance/OpenBBTerminal/main/docker/docker-compose.yaml).
|
||||||
|
|
||||||
|
The `docker-compose.yaml` file is a configuration file telling `Docker Compose`:
|
||||||
|
|
||||||
|
- where to find `OpenBBTerminal Docker Container`
|
||||||
|
- how to run this container.
|
||||||
|
|
||||||
|
The second command runs `Docker Compose` on the service `poetry` defined in this `docker-compose.yaml` file.
|
||||||
|
|
||||||
|
This second command must be run in the same folder in which `docker-compose.yaml` file is.
|
||||||
|
|
||||||
|
**DOCKER**
|
||||||
|
|
||||||
|
If you don't have `Docker Compose` you can also use `Docker` directly to run the `OpenBBTerminal Docker Container`.
|
||||||
|
|
||||||
|
Here is the commands to run:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker pull ghcr.io/openbb-finance/openbbterminal/poetry:X.Y.Z
|
||||||
|
|
||||||
|
docker run -v ~/.openbb_terminal/:/home/python/.openbb_terminal -v ~/OpenBBUserData:/home/python/OpenBBUserData -it --rm ghcr.io/openbb-finance/openbbterminal/poetry:X.Y.Z
|
||||||
|
```
|
||||||
|
|
||||||
|
Be sure to replace `X.Y.Z` with the version you want to pull and run.
|
||||||
|
|
||||||
|
Note for windows:
|
||||||
|
|
||||||
|
```text
|
||||||
|
Ignore this message if you are using Powershell or a more evolved interpreters.
|
||||||
|
If you are using the builtin Windows interpreter.
|
||||||
|
Replace `~` by `%USERPROFILE%` in the command above.
|
||||||
|
```
|
||||||
|
|
||||||
|
## 3. Configuring your X-server to show plots
|
||||||
|
|
||||||
|
In order to display plots in the docker container, we need to configure the XServer on the host machine.
|
||||||
|
Without this configuration the interactive charts will not be displayed.
|
||||||
|
|
||||||
|
### On Windows
|
||||||
|
|
||||||
|
Download and install : [VcXsrv](https://sourceforge.net/projects/vcxsrv/)
|
||||||
|
|
||||||
|
When running the program is important to check "Disable access control"
|
||||||
|
|
||||||
|
Run `Docker Compose` like this:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
curl -o docker-compose.yaml https://raw.githubusercontent.com/OpenBB-finance/OpenBBTerminal/main/docker/docker-compose.yaml
|
||||||
|
|
||||||
|
docker compose run poetry
|
||||||
|
```
|
||||||
|
|
||||||
|
Or run `Docker` directly:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker run -v ~/.openbb_terminal:/home/python/.openbb_terminal -v ~/OpenBBUserData:/home/python/OpenBBUserData -it --rm --env DISPLAY=host.docker.internal:0.0 ghcr.io/openbb-finance/openbbterminal/poetry:X.Y.Z
|
||||||
|
```
|
||||||
|
|
||||||
|
### X-Server on macOS
|
||||||
|
|
||||||
|
Users familiar with Docker and X-Server can set the `DISPLAY` variable in the file [setenv](/docker/setenv) described above. If you use this approach remember to add `:0` at the end of your inet address. E.g. `DISPLAY=192.168.1.155:0`.
|
||||||
|
|
||||||
|
For help setting up the X-Server continue reading:
|
||||||
|
|
||||||
|
#### Setting up X Quartz/X11
|
||||||
|
|
||||||
|
On macOS the X11 client of choice is [XQuartz](https://www.xquartz.org/). On Windows it's [Xming](http://www.straightrunning.com/XmingNotes/). XQuartz will be used as an example further on.
|
||||||
|
|
||||||
|
0. Install X Quartz from <https://www.xquartz.org/>
|
||||||
|
1. With X Quartz open: go to Preferences -> Security and make sure both options are enabled.
|
||||||
|

|
||||||
|
|
||||||
|
#### Adding the display for Docker
|
||||||
|
|
||||||
|
From the command prompt or terminal, run the following to add your local configuration to the list of allowed access control:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
IP=$(ifconfig | grep inet | grep -v -e "127.0.0.1" | awk '$1=="inet" {print $2}')
|
||||||
|
xhost + $IP
|
||||||
|
```
|
||||||
|
|
||||||
|
Now we can run the docker container, adding the display to the environment:
|
||||||
|
|
||||||
|
```bach
|
||||||
|
docker run -v ~/.openbb_terminal/:/home/python/.openbb_terminal -v ~/OpenBBUserData:/home/python/OpenBBUserData -it --rm --env-file=path/to/setenv --env DISPLAY=$IP:0 ghcr.io/openbb-finance/openbbterminal/poetry:X.Y.Z
|
||||||
|
```
|
||||||
|
|
||||||
|
This container will be able to display all the same plots as the terminal interface.
|
||||||
|
|
||||||
|
### X-Server on Linux Desktop
|
||||||
|
|
||||||
|
X-Server is default in Linux distribution. There is no need to install any clients.
|
||||||
|
|
||||||
|
#### Local docker container
|
||||||
|
|
||||||
|
We can use IPC socket to connect Desktop.
|
||||||
|
|
||||||
|
Add this setting to your `.env` file.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
OPENBB_BACKEND=Qt5Agg
|
||||||
|
```
|
||||||
|
|
||||||
|
And run the following commands.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
xhost +local:
|
||||||
|
docker run -it --rm --name openbb --env-file=./.env -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix ghcr.io/openbb-finance/openbbterminal/poetry:X.Y.Z
|
||||||
|
xhost -local:
|
||||||
|
```
|
||||||
|
|
||||||
|
If you're using remote docker host, you can connect with "ssh -X <FQDN/IP>".
|
||||||
|
|
||||||
|
Then run the previous docker command.
|
||||||
50
openbb_terminal/README.md
vendored
50
openbb_terminal/README.md
vendored
@@ -249,56 +249,6 @@ If you `stashed` your changes previously, you can un-stash them with:
|
|||||||
git stash pop
|
git stash pop
|
||||||
```
|
```
|
||||||
|
|
||||||
## Docker Installation
|
|
||||||
|
|
||||||
1. Make sure docker desktop is installed. Install links can be found [here](https://www.docker.com/products/docker-desktop).
|
|
||||||
To confirm that your docker desktop is downloaded and running, open a command prompt or terminal and enter
|
|
||||||
`docker info`. If you get the following you are not running the docker desktop:
|
|
||||||
|
|
||||||
```text
|
|
||||||
Server:
|
|
||||||
ERROR: Cannot connect to the Docker daemon at unix:///var/run/docker.sock.
|
|
||||||
Is the docker daemon running?
|
|
||||||
```
|
|
||||||
|
|
||||||
Open the docker desktop app in this case.
|
|
||||||
|
|
||||||
2. Download the latest docker image.
|
|
||||||
|
|
||||||
```bash
|
|
||||||
docker pull ghcr.io/openbb-finance/openbbterminal-poetry:latest
|
|
||||||
```
|
|
||||||
|
|
||||||
Upon running this the first time, you should see the various layers downloading (note the random series of letters
|
|
||||||
numbers will vary). The first time this is run, it will take a few minutes. Subsequent updates will be much faster,
|
|
||||||
as the changes will be in the MB instead of GB.
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
Once the download is complete, confirm that the image has been created by doing `docker images`. You should see
|
|
||||||
something similar to
|
|
||||||
|
|
||||||
```text
|
|
||||||
REPOSITORY TAG IMAGE ID CREATED SIZE
|
|
||||||
ghcr.io/openbb-finance/openbbterminal-poetry latest b1409a304750 42 hours ago 2.29GB
|
|
||||||
```
|
|
||||||
|
|
||||||
3. Run a container
|
|
||||||
|
|
||||||
To launch the container you need to run the following command:
|
|
||||||
|
|
||||||
`docker run -v ~/.openbb_terminal/:/home/python/.openbb_terminal -v ~/OpenBBUserData:/home/python/OpenBBUserData -it --rm ghcr.io/openbb-finance/openbbterminal-poetry:1.6.0`
|
|
||||||
|
|
||||||
**NOTE FOR WINDOWS**
|
|
||||||
|
|
||||||
Replace `~` by `%USERPROFILE%` in the command above.
|
|
||||||
This applies if you are using the builtin Windows interpreter.
|
|
||||||
You won't have to do this inside Powershell or more evolved interpreters.
|
|
||||||
|
|
||||||
At this point, you should be able to use the majority of the features using Docker. To read more on how to configure
|
|
||||||
your X-server to show plots, hop over to the
|
|
||||||
[Advanced Docker Setup](/DOCKER_ADVANCED.md).
|
|
||||||
|
|
||||||
## Local Installation of GST on Raspberry Pi
|
## Local Installation of GST on Raspberry Pi
|
||||||
|
|
||||||
1. Running raspbian lite(headless) or desktop (both 64bit) we should first start off with an update/upgrade.
|
1. Running raspbian lite(headless) or desktop (both 64bit) we should first start off with an update/upgrade.
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ from types import FunctionType, ModuleType
|
|||||||
# IMPORTATION INTERNAL
|
# IMPORTATION INTERNAL
|
||||||
import openbb_terminal.feature_flags as obbff
|
import openbb_terminal.feature_flags as obbff
|
||||||
from openbb_terminal import config_terminal as cfg
|
from openbb_terminal import config_terminal as cfg
|
||||||
|
from openbb_terminal.terminal_helper import is_packaged_application
|
||||||
from openbb_terminal.core.log.generation.path_tracking_file_handler import (
|
from openbb_terminal.core.log.generation.path_tracking_file_handler import (
|
||||||
PathTrackingFileHandler,
|
PathTrackingFileHandler,
|
||||||
)
|
)
|
||||||
@@ -57,7 +58,7 @@ def log_settings() -> None:
|
|||||||
settings_dict["watermark"] = "True" if obbff.USE_WATERMARK else "False"
|
settings_dict["watermark"] = "True" if obbff.USE_WATERMARK else "False"
|
||||||
settings_dict["autoscaling"] = "True" if obbff.USE_PLOT_AUTOSCALING else "False"
|
settings_dict["autoscaling"] = "True" if obbff.USE_PLOT_AUTOSCALING else "False"
|
||||||
settings_dict["dt"] = "True" if obbff.USE_DATETIME else "False"
|
settings_dict["dt"] = "True" if obbff.USE_DATETIME else "False"
|
||||||
settings_dict["packaged"] = "True" if obbff.PACKAGED_APPLICATION else "False"
|
settings_dict["packaged"] = "True" if is_packaged_application() else "False"
|
||||||
settings_dict["python"] = str(platform.python_version())
|
settings_dict["python"] = str(platform.python_version())
|
||||||
settings_dict["os"] = str(platform.system())
|
settings_dict["os"] = str(platform.system())
|
||||||
|
|
||||||
|
|||||||
@@ -87,9 +87,6 @@ LOG_COLLECTION = bool(strtobool(os.getenv("OPENBB_LOG_COLLECT", "True")))
|
|||||||
# Provide export folder path. If empty that means default.
|
# Provide export folder path. If empty that means default.
|
||||||
EXPORT_FOLDER_PATH = str(os.getenv("OPENBB_EXPORT_FOLDER_PATH", ""))
|
EXPORT_FOLDER_PATH = str(os.getenv("OPENBB_EXPORT_FOLDER_PATH", ""))
|
||||||
|
|
||||||
# Set a flag if the application is running from a packaged bundle
|
|
||||||
PACKAGED_APPLICATION = strtobool(os.getenv("OPENBB_PACKAGED_APPLICATION", "False"))
|
|
||||||
|
|
||||||
# Toolbar hint
|
# Toolbar hint
|
||||||
TOOLBAR_HINT = strtobool(os.getenv("OPENBB_TOOLBAR_HINT", "True"))
|
TOOLBAR_HINT = strtobool(os.getenv("OPENBB_TOOLBAR_HINT", "True"))
|
||||||
|
|
||||||
|
|||||||
@@ -1149,7 +1149,6 @@ def replace_user_timezone(user_tz: str) -> None:
|
|||||||
"""
|
"""
|
||||||
if is_timezone_valid(user_tz):
|
if is_timezone_valid(user_tz):
|
||||||
dotenv.set_key(USER_ENV_FILE, "OPENBB_TIMEZONE", user_tz)
|
dotenv.set_key(USER_ENV_FILE, "OPENBB_TIMEZONE", user_tz)
|
||||||
os.environ["OPENBB_TIMEZONE"] = user_tz
|
|
||||||
console.print("Timezone successfully updated", "\n")
|
console.print("Timezone successfully updated", "\n")
|
||||||
else:
|
else:
|
||||||
console.print("Timezone selected is not valid", "\n")
|
console.print("Timezone selected is not valid", "\n")
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# 1. OpenBB Terminal : `Integration Testing`
|
# OpenBB Terminal : `Integration Testing`
|
||||||
|
|
||||||
This document is part of the `OpenBB Terminal` library documentation.
|
This document is part of the `OpenBB Terminal` library documentation.
|
||||||
|
|
||||||
@@ -9,20 +9,30 @@ It aims to provide necessary information in order to:
|
|||||||
- Identify errors noted from `integration tests`
|
- Identify errors noted from `integration tests`
|
||||||
|
|
||||||
## 1.1. Why having integration tests ?
|
## 1.1. Why having integration tests ?
|
||||||
The purpose of integration tests is to provide standard usage examples that can be programmatically run to make sure that a specific functionality of the terminal and the process to utilize that functionality is working properly.
|
|
||||||
|
|
||||||
# 2. How to build integration tests ?
|
The purpose of integration tests is to provide standard usage examples that can be programmatically run
|
||||||
|
to make sure that a specific functionality of the terminal and the process to utilize that functionality
|
||||||
|
is working properly.
|
||||||
|
|
||||||
Integration tests themselves are the same as manually running a certain series of steps. As a result, writing tests is easy because the integration test script is just the total list of steps necessary to use a command, command with specific argument, or series of commands.
|
## 2. How to build integration tests ?
|
||||||
|
|
||||||
When you contribute a new feature to the Terminal, it's important that integration tests are added for this particular feature. It is a part of the Checklist for the PR to be approved.
|
Integration tests themselves are the same as manually running a certain series of steps. As a result,
|
||||||
|
writing tests is easy because the integration test script is just the total list of steps necessary to
|
||||||
|
use a command, command with specific argument, or series of commands.
|
||||||
|
|
||||||
All the `integration tests` should be insides the `scripts` folder. The naming convention for scripts should be `test_<menu>_<command>.openbb` if you are testing a specific command or `test_<menu>.openbb` if you are testing the entire menu. However, it is encouraged to create as specific of integration tests as possible to identify errors more precisely. Additionally, all tests must end with the `exit` command.
|
When you contribute a new feature to the Terminal, it's important that integration tests are added for
|
||||||
|
this particular feature. It is a part of the Checklist for the PR to be approved.
|
||||||
|
|
||||||
|
All the `integration tests` should be insides the `scripts` folder. The naming convention for scripts
|
||||||
|
should be `test_<menu>_<command>.openbb` if you are testing a specific command or `test_<menu>.openbb`
|
||||||
|
if you are testing the entire menu. However, it is encouraged to create as specific of integration tests
|
||||||
|
as possible to identify errors more precisely. Additionally, all tests must end with the `exit` command.
|
||||||
|
|
||||||
### Examples
|
### Examples
|
||||||
|
|
||||||
Testing a specific command and it's arguments:
|
Testing a specific command and it's arguments:
|
||||||
|
|
||||||
```
|
```zsh
|
||||||
script: test_alt_covid.openbb
|
script: test_alt_covid.openbb
|
||||||
- - - - - - - - - -
|
- - - - - - - - - -
|
||||||
alternative
|
alternative
|
||||||
@@ -42,7 +52,8 @@ exit
|
|||||||
```
|
```
|
||||||
|
|
||||||
Testing an entire menu
|
Testing an entire menu
|
||||||
```
|
|
||||||
|
```zsh
|
||||||
test_stocks_options.openbb
|
test_stocks_options.openbb
|
||||||
- - - - - - - - - -
|
- - - - - - - - - -
|
||||||
stocks
|
stocks
|
||||||
@@ -77,49 +88,63 @@ exit
|
|||||||
|
|
||||||
### Conda Terminal
|
### Conda Terminal
|
||||||
|
|
||||||
After navigating to the location of the OpenBBTerminal repo, one can run integration tests in a few different ways using the wildcare expression `*`.
|
After navigating to the location of the OpenBBTerminal repo, one can run integration tests in a
|
||||||
|
few different ways using the wildcard expression.
|
||||||
|
|
||||||
* Run all integration tests:
|
- Run all integration tests:
|
||||||
```
|
|
||||||
|
```zsh
|
||||||
python terminal.py scripts/*.openbb -t
|
python terminal.py scripts/*.openbb -t
|
||||||
```
|
```
|
||||||
|
|
||||||
* Run some integration tests:
|
- Run some integration tests:
|
||||||
```
|
|
||||||
|
```zsh
|
||||||
python terminal.py scripts/test_stocks_*.openbb -t
|
python terminal.py scripts/test_stocks_*.openbb -t
|
||||||
```
|
```
|
||||||
|
|
||||||
*This specific example runs all of the stocks integration tests. One can use this same format for different tests.*
|
*This specific example runs all of the stocks integration tests. One can use this same format for different tests.*
|
||||||
|
|
||||||
* Run one integration tests:
|
- Run one integration tests:
|
||||||
```
|
|
||||||
|
```zsh
|
||||||
python terminal.py scripts/test_alt_covid.openbb -t
|
python terminal.py scripts/test_alt_covid.openbb -t
|
||||||
```
|
```
|
||||||
|
|
||||||
### Installer Terminal
|
### Installer Terminal
|
||||||
|
|
||||||
Integration tests can also be used on installers, which is a packaged version of the conda terminal. More information on how to build an installer can be found [here](/build/README.md).
|
Integration tests can also be used on installers, which is a packaged version of the conda terminal.
|
||||||
|
More information on how to build an installer can be found [here](/build/README.md).
|
||||||
|
|
||||||
* Run all integration tests:
|
- Run all integration tests:
|
||||||
```
|
|
||||||
|
```zsh
|
||||||
/Full/Path/To/OpenBB\ Terminal/.OpenBB/OpenBBTerminal /Full/Path/To/OpenBBTerminal/OpenBBTerminal/scripts/*.openbb -t
|
/Full/Path/To/OpenBB\ Terminal/.OpenBB/OpenBBTerminal /Full/Path/To/OpenBBTerminal/OpenBBTerminal/scripts/*.openbb -t
|
||||||
```
|
```
|
||||||
|
|
||||||
* Run some integration tests:
|
- Run some integration tests:
|
||||||
```
|
|
||||||
|
```zsh
|
||||||
/Full/Path/To/OpenBB\ Terminal/.OpenBB/OpenBBTerminal /Full/Path/To/OpenBBTerminal/OpenBBTerminal/scripts/test_stocks_*.openbb -t
|
/Full/Path/To/OpenBB\ Terminal/.OpenBB/OpenBBTerminal /Full/Path/To/OpenBBTerminal/OpenBBTerminal/scripts/test_stocks_*.openbb -t
|
||||||
```
|
```
|
||||||
|
|
||||||
* Run one integration tests:
|
- Run one integration tests:
|
||||||
```
|
|
||||||
|
```zsh
|
||||||
/Full/Path/To/OpenBB\ Terminal/.OpenBB/OpenBBTerminal /Full/Path/To/OpenBBTerminal/OpenBBTerminal/scripts/test_alt_covid.openbb -t
|
/Full/Path/To/OpenBB\ Terminal/.OpenBB/OpenBBTerminal /Full/Path/To/OpenBBTerminal/OpenBBTerminal/scripts/test_alt_covid.openbb -t
|
||||||
```
|
```
|
||||||
|
|
||||||
The `-t` argument runs the integration tests in 'test' mode. It is effectively a 'quiet' mode where one doesn't see the terminal in action. If one were to remove this argument, then the terminal and subsequent steps will be seen running in real time.
|
The `-t` argument runs the integration tests in 'test' mode. It is effectively a 'quiet' mode where one
|
||||||
|
doesn't see the terminal in action. If one were to remove this argument, then the terminal and subsequent
|
||||||
|
steps will be seen running in real time.
|
||||||
|
|
||||||
## 4. Errors
|
## 4. Errors
|
||||||
If the `-t` argument is given, errors that occur during an integration test are shown after all the selected tests have run. The specific script that has some type of failure occurring, the reason why it failed, and a summary of all the integration tests that were run is printed. An example is as followed:
|
|
||||||
|
|
||||||
```
|
If the `-t` argument is given, errors that occur during an integration test are shown after all the
|
||||||
|
selected tests have run. The specific script that has some type of failure occurring, the reason why
|
||||||
|
it failed, and a summary of all the integration tests that were run is printed. An example is as followed:
|
||||||
|
|
||||||
|
```zsh
|
||||||
/scripts/test_stocks_ba.openbb: Implement enable_gui in a subclass
|
/scripts/test_stocks_ba.openbb: Implement enable_gui in a subclass
|
||||||
|
|
||||||
/scripts/test_stocks_disc.openbb: No tables found
|
/scripts/test_stocks_disc.openbb: No tables found
|
||||||
@@ -131,6 +156,7 @@ If the `-t` argument is given, errors that occur during an integration test are
|
|||||||
Summary: Successes: 55 Failures: 4
|
Summary: Successes: 55 Failures: 4
|
||||||
```
|
```
|
||||||
|
|
||||||
If the `-t` argument is not given, then the reason why a specific failure occurs within an integration test is printed inline while the test is being run.
|
If the `-t` argument is not given, then the reason why a specific failure occurs within an integration
|
||||||
|
test is printed inline while the test is being run.
|
||||||
|
|
||||||
If there is an error, one can identify the command and or series of steps that causes it fairly easily.
|
If there is an error, one can identify the command and or series of steps that causes it fairly easily.
|
||||||
@@ -19,7 +19,7 @@ from prompt_toolkit.formatted_text import HTML
|
|||||||
import pandas as pd
|
import pandas as pd
|
||||||
|
|
||||||
from openbb_terminal import feature_flags as obbff
|
from openbb_terminal import feature_flags as obbff
|
||||||
|
from openbb_terminal.terminal_helper import is_packaged_application
|
||||||
from openbb_terminal.core.config.paths import (
|
from openbb_terminal.core.config.paths import (
|
||||||
HOME_DIRECTORY,
|
HOME_DIRECTORY,
|
||||||
MISCELLANEOUS_DIRECTORY,
|
MISCELLANEOUS_DIRECTORY,
|
||||||
@@ -138,7 +138,7 @@ class TerminalController(BaseController):
|
|||||||
mt.add_cmd("about")
|
mt.add_cmd("about")
|
||||||
mt.add_cmd("support")
|
mt.add_cmd("support")
|
||||||
mt.add_cmd("survey")
|
mt.add_cmd("survey")
|
||||||
if not obbff.PACKAGED_APPLICATION:
|
if not is_packaged_application():
|
||||||
mt.add_cmd("update")
|
mt.add_cmd("update")
|
||||||
mt.add_cmd("wiki")
|
mt.add_cmd("wiki")
|
||||||
mt.add_cmd("record")
|
mt.add_cmd("record")
|
||||||
@@ -326,7 +326,7 @@ class TerminalController(BaseController):
|
|||||||
|
|
||||||
def call_update(self, _):
|
def call_update(self, _):
|
||||||
"""Process update command"""
|
"""Process update command"""
|
||||||
if not obbff.PACKAGED_APPLICATION:
|
if not is_packaged_application():
|
||||||
self.update_success = not update_terminal()
|
self.update_success = not update_terminal()
|
||||||
else:
|
else:
|
||||||
console.print(
|
console.print(
|
||||||
@@ -400,7 +400,7 @@ class TerminalController(BaseController):
|
|||||||
|
|
||||||
def call_dashboards(self, _):
|
def call_dashboards(self, _):
|
||||||
"""Process dashboards command"""
|
"""Process dashboards command"""
|
||||||
if not obbff.PACKAGED_APPLICATION:
|
if not is_packaged_application():
|
||||||
from openbb_terminal.dashboards.dashboards_controller import (
|
from openbb_terminal.dashboards.dashboards_controller import (
|
||||||
DashboardsController,
|
DashboardsController,
|
||||||
)
|
)
|
||||||
@@ -594,14 +594,11 @@ class TerminalController(BaseController):
|
|||||||
|
|
||||||
|
|
||||||
# pylint: disable=global-statement
|
# pylint: disable=global-statement
|
||||||
def terminal(jobs_cmds: List[str] = None, appName: str = "gst", test_mode=False):
|
def terminal(jobs_cmds: List[str] = None, test_mode=False):
|
||||||
"""Terminal Menu"""
|
"""Terminal Menu"""
|
||||||
# TODO: HELP WANTED! Refactor the appName setting if a more elegant solution comes up
|
|
||||||
if obbff.PACKAGED_APPLICATION:
|
|
||||||
appName = "gst_packaged"
|
|
||||||
|
|
||||||
if not test_mode:
|
if not test_mode:
|
||||||
setup_logging(appName)
|
setup_logging()
|
||||||
logger.info("START")
|
logger.info("START")
|
||||||
log_all_settings()
|
log_all_settings()
|
||||||
|
|
||||||
@@ -815,14 +812,13 @@ def run_scripts(
|
|||||||
file_cmds = [" ".join(file_cmds)]
|
file_cmds = [" ".join(file_cmds)]
|
||||||
|
|
||||||
if not test_mode:
|
if not test_mode:
|
||||||
terminal(file_cmds, appName="openbb_script")
|
terminal(file_cmds, test_mode=True)
|
||||||
# TODO: Add way to track how many commands are tested
|
|
||||||
else:
|
else:
|
||||||
if verbose:
|
if verbose:
|
||||||
terminal(file_cmds, appName="openbb_script", test_mode=True)
|
terminal(file_cmds, test_mode=True)
|
||||||
else:
|
else:
|
||||||
with suppress_stdout():
|
with suppress_stdout():
|
||||||
terminal(file_cmds, appName="openbb_script", test_mode=True)
|
terminal(file_cmds, test_mode=True)
|
||||||
else:
|
else:
|
||||||
console.print(f"File '{path}' doesn't exist. Launching base terminal.\n")
|
console.print(f"File '{path}' doesn't exist. Launching base terminal.\n")
|
||||||
if not test_mode:
|
if not test_mode:
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ import requests
|
|||||||
import matplotlib.pyplot as plt
|
import matplotlib.pyplot as plt
|
||||||
|
|
||||||
# IMPORTATION INTERNAL
|
# IMPORTATION INTERNAL
|
||||||
|
from openbb_terminal import config_terminal as cfg
|
||||||
from openbb_terminal import feature_flags as obbff
|
from openbb_terminal import feature_flags as obbff
|
||||||
from openbb_terminal import thought_of_the_day as thought
|
from openbb_terminal import thought_of_the_day as thought
|
||||||
from openbb_terminal.rich_config import console
|
from openbb_terminal.rich_config import console
|
||||||
@@ -174,12 +175,23 @@ def hide_splashscreen():
|
|||||||
logger.info(e)
|
logger.info(e)
|
||||||
|
|
||||||
|
|
||||||
|
def is_packaged_application() -> bool:
|
||||||
|
"""Tell whether or not it is a packaged version (Windows or Mac installer).
|
||||||
|
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
bool: If the application is packaged
|
||||||
|
"""
|
||||||
|
|
||||||
|
return cfg.LOGGING_APP_NAME == "gst_packaged"
|
||||||
|
|
||||||
|
|
||||||
def bootup():
|
def bootup():
|
||||||
if sys.platform == "win32":
|
if sys.platform == "win32":
|
||||||
# Enable VT100 Escape Sequence for WINDOWS 10 Ver. 1607
|
# Enable VT100 Escape Sequence for WINDOWS 10 Ver. 1607
|
||||||
os.system("") # nosec
|
os.system("") # nosec
|
||||||
# Hide splashscreen loader of the packaged app
|
# Hide splashscreen loader of the packaged app
|
||||||
if obbff.PACKAGED_APPLICATION:
|
if is_packaged_application():
|
||||||
hide_splashscreen()
|
hide_splashscreen()
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
|||||||
2
pyproject.toml
vendored
2
pyproject.toml
vendored
@@ -1,6 +1,6 @@
|
|||||||
[tool.poetry]
|
[tool.poetry]
|
||||||
name = "OpenBBTerminal"
|
name = "OpenBBTerminal"
|
||||||
version = "1.9.0"
|
version = "1.9.1"
|
||||||
description = ""
|
description = ""
|
||||||
authors = ["Didier Rodrigues Lopes"]
|
authors = ["Didier Rodrigues Lopes"]
|
||||||
packages = [
|
packages = [
|
||||||
|
|||||||
9
scripts/test_stocks.openbb
vendored
9
scripts/test_stocks.openbb
vendored
@@ -1,9 +0,0 @@
|
|||||||
stocks
|
|
||||||
search apple
|
|
||||||
load aapl -s 2022-10-01
|
|
||||||
tob
|
|
||||||
tob -e EDGX
|
|
||||||
candle
|
|
||||||
codes
|
|
||||||
news
|
|
||||||
exit
|
|
||||||
Reference in New Issue
Block a user