From 19039ef73eadbba09ca558e5fba771d798e3a0ec Mon Sep 17 00:00:00 2001 From: Victoria Neema <39700992+vikineema@users.noreply.github.com> Date: Mon, 30 Sep 2024 07:26:37 +0300 Subject: [PATCH] Update cube-in-box to install the latest version of deafrica-tools (#9) --- .gitignore | 2 + Dockerfile | 110 +- Makefile | 104 +- README.md | 16 +- assets/jupyter_lab_config.py | 19 + assets/overrides.json | 12 + docker-compose-prod.yml | 4 +- docker-compose.yml | 4 +- docs/Detailed_Install.md | 37 +- requirements.in | 200 ++- requirements.txt | 2246 +++++++++++++++++++++++++++++----- scripts/install-docker.sh | 22 +- 12 files changed, 2348 insertions(+), 428 deletions(-) create mode 100644 assets/jupyter_lab_config.py create mode 100644 assets/overrides.json diff --git a/.gitignore b/.gitignore index b7512747..a7aa952f 100644 --- a/.gitignore +++ b/.gitignore @@ -19,3 +19,5 @@ notebooks/.python_history .env data __pycache__ +**/.idea/ +**/core diff --git a/Dockerfile b/Dockerfile index 0321625c..1b91a30d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,35 +1,109 @@ -FROM osgeo/gdal:ubuntu-full-3.4.2 +FROM ghcr.io/osgeo/gdal:ubuntu-small-3.8.5 ENV DEBIAN_FRONTEND=noninteractive \ LC_ALL=C.UTF-8 \ LANG=C.UTF-8 \ + USE_PYGEOS=0 \ + SPATIALITE_LIBRARY_PATH='mod_spatialite.so' \ + SHELL=bash \ TINI_VERSION=v0.19.0 ADD https://github.com/krallin/tini/releases/download/${TINI_VERSION}/tini /tini RUN chmod +x /tini -RUN apt-get update && \ - apt-get install -y \ - build-essential \ - git \ - # For Psycopg2 - libpq-dev python3-dev \ - python3-pip \ - wget \ - && apt-get autoclean \ - && apt-get autoremove \ - && rm -rf /var/lib/{apt,dpkg,cache,log} +RUN apt update \ + && apt install -y curl \ + && curl -fsSL https://deb.nodesource.com/setup_20.x | bash - \ + && apt update \ + && apt install -y --fix-missing --no-install-recommends \ + python3-full \ + python3-dev \ + python3-venv \ + python3-pip \ + # developer convenience + file \ + fish \ + git \ + graphviz \ + htop \ + iproute2 \ + iputils-ping \ + jq \ + less \ + libtiff-tools \ + net-tools \ + openssh-client \ + postgresql \ + postgresql-client \ + rsync \ + simpleproxy \ + sudo \ + tig \ + time \ + tmux \ + unzip \ + vim \ + wget \ + xz-utils \ + zip \ + # rgsislib dependencies + libboost-date-time1.74.0 \ + libboost-dev \ + libboost-filesystem1.74.0 \ + libboost-system1.74.0 \ + libcgal-dev \ + libgeos-dev \ + libgsl-dev \ + libmuparser2v5 \ + libpq-dev \ + libproj-dev \ + # for cython to work need compilers + build-essential \ + # for pyRAT install or something + libfftw3-dev \ + liblapack-dev \ + # install libhdf5 + libhdf5-dev \ + # install ffmpeg the normal way + ffmpeg \ + nodejs \ + # install texlive + texlive-fonts-recommended \ + texlive-plain-generic\ + texlive-xetex \ + # Spatialite support + libsqlite3-mod-spatialite \ + && apt clean autoclean \ + && apt autoremove \ + && rm -rf /var/lib/{apt,dpkg,cache} + +# Install yq +RUN wget https://github.com/mikefarah/yq/releases/latest/download/yq_linux_amd64 -O /usr/bin/yq &&\ + chmod +x /usr/bin/yq + +# install pandoc 3.4.1 +RUN wget https://github.com/jgm/pandoc/releases/download/3.4/pandoc-3.4-1-amd64.deb +RUN dpkg -i pandoc-3.4-1-amd64.deb +RUN rm pandoc-3.4-1-amd64.deb + +# Set up the python virtual environment PEP 668. +ENV VIRTUAL_ENV=/opt/venv +RUN python3 -m venv $VIRTUAL_ENV +ENV PATH="$VIRTUAL_ENV/bin:$PATH" COPY requirements.txt /conf/ -RUN pip3 install --no-cache-dir --requirement /conf/requirements.txt -RUN cd /tmp \ - && git clone --depth 1 https://github.com/digitalearthafrica/deafrica-sandbox-notebooks.git \ - && pip install deafrica-sandbox-notebooks/Tools \ - && rm -rf /tmp/deafrica-sandbox-notebooks +RUN python -m pip install --upgrade pip pip-tools +RUN pip install --no-cache-dir --requirement /conf/requirements.txt + +RUN jupyter server extension enable --py --sys-prefix jupyterlab_iframe jupyter_resource_usage + +ENV JUPYTERLAB_DIR=$VIRTUAL_ENV/share/jupyter/lab +COPY assets/overrides.json $JUPYTERLAB_DIR/settings/ +COPY assets/jupyter_lab_config.py /etc/jupyter/ WORKDIR /notebooks ENTRYPOINT ["/tini", "--"] +CMD ["jupyter", "lab", "--allow-root", "--ip=0.0.0.0", "--no-browser", "--port=8888"] -CMD ["jupyter", "notebook", "--allow-root", "--ip='0.0.0.0'", "--NotebookApp.token='secretpassword'"] diff --git a/Makefile b/Makefile index bbc41447..12991ba5 100644 --- a/Makefile +++ b/Makefile @@ -35,19 +35,19 @@ reset: #make index-parallel build: ## 0. Build the base image - docker-compose pull - docker-compose build + docker compose pull + docker compose build up: ## 1. Bring up your Docker environment - docker-compose up -d postgres - docker-compose run checkdb - docker-compose up -d jupyter + docker compose up -d postgres + docker compose run checkdb + docker compose up -d jupyter init: ## 2. Prepare the database - docker-compose exec -T jupyter datacube -v system init + docker compose exec -T jupyter datacube -v system init products: ## 3. Add all product definitions - docker-compose exec -T jupyter dc-sync-products https://raw.githubusercontent.com/digitalearthafrica/config/master/prod/products_prod.csv + docker compose exec -T jupyter dc-sync-products https://raw.githubusercontent.com/digitalearthafrica/config/master/prod/products_prod.csv index: index-parallel ## 4. Index most products index-parallel: @@ -57,43 +57,25 @@ index-all: index-dem_srtm index-fc_ls index-gm_ls5_ls7_annual index-gm_ls8_annua index-alos_palsar_mosaic: @echo "$$(date) Start with alos_palsar_mosaic" - docker-compose exec -T jupyter stac-to-dc \ + docker compose exec -T jupyter stac-to-dc \ --catalog-href=https://explorer.digitalearth.africa/stac/ \ --collections=alos_palsar_mosaic \ --bbox=$(BBOX) \ --limit=$(INDEX_LIMIT) @echo "$$(date) Done with alos_palsar_mosaic" -index-crop_mask_eastern: - @echo "$$(date) Start with crop_mask_eastern" - docker-compose exec -T jupyter stac-to-dc \ +index-crop_mask: + @echo "$$(date) Start with crop_mask" + docker compose exec -T jupyter stac-to-dc \ --catalog-href=https://explorer.digitalearth.africa/stac/ \ - --collections=crop_mask_eastern \ + --collections=crop_mask \ --bbox=$(BBOX) \ --limit=$(INDEX_LIMIT) - @echo "$$(date) Done with crop_mask_eastern" - -index-crop_mask_northern: - @echo "$$(date) Start with crop_mask_northern" - docker-compose exec -T jupyter stac-to-dc \ - --catalog-href=https://explorer.digitalearth.africa/stac/ \ - --collections=crop_mask_northern \ - --bbox=$(BBOX) \ - --limit=$(INDEX_LIMIT) - @echo "$$(date) Done with crop_mask_northern" - -index-crop_mask_western: - @echo "$$(date) Start with crop_mask_western" - docker-compose exec -T jupyter stac-to-dc \ - --catalog-href=https://explorer.digitalearth.africa/stac/ \ - --collections=crop_mask_western \ - --bbox=$(BBOX) \ - --limit=$(INDEX_LIMIT) - @echo "$$(date) Done with crop_mask_western" + @echo "$$(date) Done with crop_mask" index-dem_srtm: @echo "$$(date) Start with dem_srtm" - docker-compose exec -T jupyter stac-to-dc \ + docker compose exec -T jupyter stac-to-dc \ --catalog-href=https://explorer.digitalearth.africa/stac/ \ --collections=dem_srtm \ --bbox=$(BBOX) \ @@ -102,7 +84,7 @@ index-dem_srtm: index-fc_ls: @echo "$$(date) Start with fc_ls" - docker-compose exec -T jupyter stac-to-dc \ + docker compose exec -T jupyter stac-to-dc \ --catalog-href=https://explorer.digitalearth.africa/stac/ \ --collections=fc_ls \ --bbox=$(BBOX) \ @@ -112,7 +94,7 @@ index-fc_ls: index-gm_ls5_ls7_annual: @echo "$$(date) Start with gm_ls5_ls7_annual" - docker-compose exec -T jupyter stac-to-dc \ + docker compose exec -T jupyter stac-to-dc \ --catalog-href=https://explorer.digitalearth.africa/stac/ \ --collections=gm_ls5_ls7_annual \ --bbox=$(BBOX) \ @@ -121,7 +103,7 @@ index-gm_ls5_ls7_annual: index-gm_ls8_annual: @echo "$$(date) Start with gm_ls8_annual" - docker-compose exec -T jupyter stac-to-dc \ + docker compose exec -T jupyter stac-to-dc \ --catalog-href=https://explorer.digitalearth.africa/stac/ \ --collections=gm_ls8_annual \ --bbox=$(BBOX) \ @@ -130,7 +112,7 @@ index-gm_ls8_annual: index-gm_s2_annual: @echo "$$(date) Start with gm_s2_annual" - docker-compose exec -T jupyter stac-to-dc \ + docker compose exec -T jupyter stac-to-dc \ --catalog-href=https://explorer.digitalearth.africa/stac/ \ --collections=gm_s2_annual \ --bbox=$(BBOX) \ @@ -139,7 +121,7 @@ index-gm_s2_annual: index-gm_s2_annual_lowres: @echo "$$(date) Start with gm_s2_annual_lowres" - docker-compose exec -T jupyter stac-to-dc \ + docker compose exec -T jupyter stac-to-dc \ --catalog-href=https://explorer.digitalearth.africa/stac/ \ --collections=gm_s2_annual_lowres \ --bbox=$(BBOX) \ @@ -148,7 +130,7 @@ index-gm_s2_annual_lowres: index-gm_s2_semiannual: @echo "$$(date) Start with gm_s2_semiannual" - docker-compose exec -T jupyter stac-to-dc \ + docker compose exec -T jupyter stac-to-dc \ --catalog-href=https://explorer.digitalearth.africa/stac/ \ --collections=gm_s2_semiannual \ --bbox=$(BBOX) \ @@ -157,7 +139,7 @@ index-gm_s2_semiannual: index-io_lulc: @echo "$$(date) Start with io_lulc" - docker-compose exec -T jupyter stac-to-dc \ + docker compose exec -T jupyter stac-to-dc \ --catalog-href=https://explorer.digitalearth.africa/stac/ \ --collections=io_lulc \ --bbox=$(BBOX) \ @@ -166,7 +148,7 @@ index-io_lulc: index-jers_sar_mosaic: @echo "$$(date) Start with jers_sar_mosaic" - docker-compose exec -T jupyter stac-to-dc \ + docker compose exec -T jupyter stac-to-dc \ --catalog-href=https://explorer.digitalearth.africa/stac/ \ --collections=jers_sar_mosaic \ --bbox=$(BBOX) \ @@ -175,7 +157,7 @@ index-jers_sar_mosaic: index-ls5_sr: @echo "$$(date) Start with ls5_sr" - docker-compose exec -T jupyter stac-to-dc \ + docker compose exec -T jupyter stac-to-dc \ --catalog-href=https://explorer.digitalearth.africa/stac/ \ --collections=ls5_sr \ --bbox=$(BBOX) \ @@ -184,7 +166,7 @@ index-ls5_sr: index-ls5_st: @echo "$$(date) Start with ls5_st" - docker-compose exec -T jupyter stac-to-dc \ + docker compose exec -T jupyter stac-to-dc \ --catalog-href=https://explorer.digitalearth.africa/stac/ \ --collections=ls5_st \ --bbox=$(BBOX) \ @@ -193,7 +175,7 @@ index-ls5_st: index-ls7_sr: @echo "$$(date) Start with ls7_sr" - docker-compose exec -T jupyter stac-to-dc \ + docker compose exec -T jupyter stac-to-dc \ --catalog-href=https://explorer.digitalearth.africa/stac/ \ --collections=ls7_sr \ --bbox=$(BBOX) \ @@ -203,7 +185,7 @@ index-ls7_sr: index-ls7_st: @echo "$$(date) Start with ls7_st" - docker-compose exec -T jupyter stac-to-dc \ + docker compose exec -T jupyter stac-to-dc \ --catalog-href=https://explorer.digitalearth.africa/stac/ \ --collections=ls7_st \ --bbox=$(BBOX) \ @@ -213,7 +195,7 @@ index-ls7_st: index-ls8_sr: @echo "$$(date) Start with ls8_sr" - docker-compose exec -T jupyter stac-to-dc \ + docker compose exec -T jupyter stac-to-dc \ --catalog-href=https://explorer.digitalearth.africa/stac/ \ --collections=ls8_sr \ --bbox=$(BBOX) \ @@ -223,7 +205,7 @@ index-ls8_sr: index-ls8_st: @echo "$$(date) Start with ls8_st" - docker-compose exec -T jupyter stac-to-dc \ + docker compose exec -T jupyter stac-to-dc \ --catalog-href=https://explorer.digitalearth.africa/stac/ \ --collections=ls8_st \ --bbox=$(BBOX) \ @@ -233,7 +215,7 @@ index-ls8_st: index-pc_s2_annual: @echo "$$(date) Start with pc_s2_annual" - docker-compose exec -T jupyter stac-to-dc \ + docker compose exec -T jupyter stac-to-dc \ --catalog-href=https://explorer.digitalearth.africa/stac/ \ --collections=pc_s2_annual \ --bbox=$(BBOX) \ @@ -242,7 +224,7 @@ index-pc_s2_annual: index-rainfall_chirps_monthly: @echo "$$(date) Start with rainfall_chirps_monthly" - docker-compose exec -T jupyter stac-to-dc \ + docker compose exec -T jupyter stac-to-dc \ --catalog-href=https://explorer.digitalearth.africa/stac/ \ --collections=rainfall_chirps_monthly \ --bbox=$(BBOX) \ @@ -252,7 +234,7 @@ index-rainfall_chirps_monthly: index-s1_rtc: @echo "$$(date) Start with s1_rtc" - docker-compose exec -T jupyter stac-to-dc \ + docker compose exec -T jupyter stac-to-dc \ --catalog-href=https://explorer.digitalearth.africa/stac/ \ --collections=s1_rtc \ --bbox=$(BBOX) \ @@ -262,7 +244,7 @@ index-s1_rtc: index-s2_l2a: @echo "$$(date) Start with s2_l2a" - docker-compose exec -T jupyter stac-to-dc \ + docker compose exec -T jupyter stac-to-dc \ --catalog-href=https://explorer.digitalearth.africa/stac/ \ --collections=s2_l2a \ --bbox=$(BBOX) \ @@ -272,7 +254,7 @@ index-s2_l2a: index-wofs_ls: @echo "$$(date) Start with wofs_ls" - docker-compose exec -T jupyter stac-to-dc \ + docker compose exec -T jupyter stac-to-dc \ --catalog-href=https://explorer.digitalearth.africa/stac/ \ --collections=wofs_ls \ --bbox=$(BBOX) \ @@ -282,7 +264,7 @@ index-wofs_ls: index-wofs_ls_summary_alltime: @echo "$$(date) Start with wofs_ls_summary_alltime" - docker-compose exec -T jupyter stac-to-dc \ + docker compose exec -T jupyter stac-to-dc \ --catalog-href=https://explorer.digitalearth.africa/stac/ \ --collections=wofs_ls_summary_alltime \ --bbox=$(BBOX) \ @@ -291,7 +273,7 @@ index-wofs_ls_summary_alltime: index-wofs_ls_summary_annual: @echo "$$(date) Start with wofs_ls_summary_annual" - docker-compose exec -T jupyter stac-to-dc \ + docker compose exec -T jupyter stac-to-dc \ --catalog-href=https://explorer.digitalearth.africa/stac/ \ --collections=wofs_ls_summary_annual \ --bbox=$(BBOX) \ @@ -299,16 +281,16 @@ index-wofs_ls_summary_annual: @echo "$$(date) Done with wofs_ls_summary_annual" down: ## Bring down the system - docker-compose down + docker compose down shell: ## Start an interactive shell - docker-compose exec jupyter bash + docker compose exec jupyter bash clean: ## Delete everything - docker-compose down --rmi all -v + docker compose down --rmi all -v logs: ## Show the logs from the stack - docker-compose logs --follow + docker compose logs --follow build-image: docker build --tag digitalearthafrica/cube-in-a-box . @@ -317,10 +299,10 @@ push-image: docker push digitalearthafrica/cube-in-a-box up-prod: ## Bring up production version - docker-compose -f docker-compose-prod.yml pull - docker-compose -f docker-compose.yml -f docker-compose-prod.yml up -d postgres - docker-compose run checkdb - docker-compose -f docker-compose.yml -f docker-compose-prod.yml up -d --no-build + docker compose -f docker-compose-prod.yml pull + docker compose -f docker-compose.yml -f docker-compose-prod.yml up -d postgres + docker compose run checkdb + docker compose -f docker-compose.yml -f docker-compose-prod.yml up -d --no-build create-infra: ## Deploy to AWS aws cloudformation create-stack \ diff --git a/README.md b/README.md index 8a17135b..4b7efc40 100644 --- a/README.md +++ b/README.md @@ -7,29 +7,33 @@ The Cube in a Box is a simple way to run the [Open Data Cube](https://www.openda ### 1. Setup: **Checkout the Repo:** + > `git clone https://github.com/digitalearthafrica/cube-in-a-box.git` or `git clone git@github.com:digitalearthafrica/cube-in-a-box.git` **First time users of Docker should run:** + * `bash setup.sh` - This will get your system running and install everything you need. * Note that after this step you will either need to logout/login, or run the next step with `sudo` **If you already have `make` , `docker` and `docker-compose` installed. For a custom bounding box append `BBOX=,,,` to the end of the command.** + * `make setup` or `make setup-prod` (for speed) * Custom bounding box: `make setup BBOX=-2,37,15,47` or `make setup-prod BBOX=-2,37,15,47` **If you do not have `make` installed and would rather run the commands individually run the following:** -* Build a local environment: `docker-compose build` -* Start a local environment: `docker-compose up` +* Build a local environment: `docker compose build` +* Start a local environment: `docker compose up` * Set up your local postgres database (after the above has finished) using: - * `docker-compose exec jupyter datacube -v system init` - * `docker-compose exec jupyter dc-sync-products https://raw.githubusercontent.com/digitalearthafrica/config/master/prod/products_prod.csv` + * `docker compose exec jupyter datacube -v system init` + * `docker compose exec jupyter dc-sync-products https://raw.githubusercontent.com/digitalearthafrica/config/master/prod/products_prod.csv` * Index a default region with sentinel data: - * `docker-compose exec jupyter stac-to-dc --catalog-href=https://explorer.digitalearth.africa/stac/ --collections=s2_l2a --bbox=25,20,35,30 --limit=10` + * `docker compose exec jupyter stac-to-dc --catalog-href=https://explorer.digitalearth.africa/stac/ --collections=s2_l2a --bbox=25,20,35,30 --limit=10` * Shutdown your local environment: - * `docker-compose down` + * `docker compose down` ### 2. Usage: + View the Jupyter notebook `Sentinel_2.ipynb` at [http://localhost](http://localhost) using the password `secretpassword`. Note that you can index additional areas using the `Indexing_More_Data.ipynb` notebook. ## Deploying to AWS diff --git a/assets/jupyter_lab_config.py b/assets/jupyter_lab_config.py new file mode 100644 index 00000000..6e193f24 --- /dev/null +++ b/assets/jupyter_lab_config.py @@ -0,0 +1,19 @@ +# Configuration file for lab. +import os +import psutil + +c = get_config() #noqa +total_memory = psutil.virtual_memory().total + +c.ServerApp.IdentityProvider.token = os.environ["CIABPASSWORD"] + +if 'MEM_LIMIT' not in os.environ: + os.environ['MEM_LIMIT'] = str(total_memory) + +c.ServerApp.ResourceUseDisplay.mem_limit=int(os.environ['MEM_LIMIT']) + +c.ServerApp.ResourceUseDisplay.show_host_usage=True + +c.ServerApp.ResourceUseDisplay.track_cpu_percent=True + +c.ServerApp.ResourceUseDisplay.track_disk_usage=True diff --git a/assets/overrides.json b/assets/overrides.json new file mode 100644 index 00000000..191edc01 --- /dev/null +++ b/assets/overrides.json @@ -0,0 +1,12 @@ +{ + "@jupyter-server/resource-usage:topbar-item": {"enable":true}, + "@jupyterlab/application-extension:top-bar": { + "toolbar": [ + { + "name": "text", + "disabled": true + } + ] + + } +} \ No newline at end of file diff --git a/docker-compose-prod.yml b/docker-compose-prod.yml index f3ef1277..ed5241bc 100644 --- a/docker-compose-prod.yml +++ b/docker-compose-prod.yml @@ -1,6 +1,4 @@ -version: '3' - services: jupyter: image: digitalearthafrica/cube-in-a-box:latest - command: "jupyter notebook --allow-root --ip='0.0.0.0' -NotebookApp.token='${CIABPASSWORD:-secretpassword}'" + command: "jupyter lab --allow-root --ip=0.0.0.0 --no-browser --port=8888" \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index df10cdf4..46780fd1 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,8 +1,6 @@ -version: '3' - services: postgres: - image: postgis/postgis:12-2.5 + image: kartoza/postgis:16-3.4 environment: - POSTGRES_DB=opendatacube - POSTGRES_PASSWORD=opendatacubepassword diff --git a/docs/Detailed_Install.md b/docs/Detailed_Install.md index 17d3eb78..758d5703 100644 --- a/docs/Detailed_Install.md +++ b/docs/Detailed_Install.md @@ -5,34 +5,35 @@ For most people running the `setup.sh` script will do all the below (except for ## Detailed Docker Install Instructions 1. Install Docker, and install Docker Compose. - * Select your current OS from here [Install Docker](https://docs.docker.com/engine/install/) **Note that we currently do not support ARM machines** - * For Windows and Mac OS X, docker compose comes with Docker Desktop. - * For Windows make sure that you can run Linux containers. + * Select your current OS from here [Install Docker](https://docs.docker.com/engine/install/) **Note that we currently do not support ARM machines** + * For Windows and Mac OS X, docker compose comes with Docker Desktop. + * For Windows make sure that you can run Linux containers. 2. Get the code for this repository here: [Git ZIP file](https://github.com/digitalearthafrica/cube-in-a-box/archive/refs/heads/main.zip) 3. Extract the above ZIP file and go to that directory. - * For Windows you will need to use PowerShell, by using the `cd` and `dir` commands, for example `cd C:/cubeinabox`. - * For other OS's you can use your current shell. -4. Depnding on your system you can try one of the following commands: - * First try running `make setup`, which will try setup everything on your machine. - * On Mac the first time you try this it should request for you to install some tools. - * On Windows this might not work at all, in which case you can continue to the next set of instructions. - * On Linux this can be fixed by installing the make tools - * If the above fails you can follow the following steps: - 1. `docker-compose up` - 2. When the a message like: `No web browser found: could not locate runnable browser` shows. Open a new shell and run the next commands - 3. `docker-compose exec jupyter datacube -v system init` - 4. `docker-compose exec jupyter dc-sync-products https://raw.githubusercontent.com/digitalearthafrica/config/master/prod/products_prod.csv` - 4. `docker-compose exec jupyter stac-to-dc --catalog-href=https://explorer.digitalearth.africa/stac/ --collections=s2_l2a --bbox=25,20,35,30 --limit=10` -5. You should now be able to go to + * For Windows you will need to use PowerShell, by using the `cd` and `dir` commands, for example `cd C:/cubeinabox`. + * For other OS's you can use your current shell. +4. Depending on your system you can try one of the following commands: + * First try running `make setup`, which will try setup everything on your machine. + * On Mac the first time you try this it should request for you to install some tools. + * On Windows this might not work at all, in which case you can continue to the next set of instructions. + * On Linux this can be fixed by installing the make tools + * If the above fails you can follow the following steps: + 1. `docker compose up` + 2. When a message like: `No web browser found: could not locate runnable browser` shows. Open a new shell and run the next commands + 3. `docker compose exec jupyter datacube -v system init` + 4. `docker compose exec jupyter dc-sync-products https://raw.githubusercontent.com/digitalearthafrica/config/master/prod/products_prod.csv` + 5. `docker compose exec jupyter stac-to-dc --catalog-href=https://explorer.digitalearth.africa/stac/ --collections=s2_l2a --bbox=25,20,35,30 --limit=10` +5. You should now be able to go to 6. Enter the password `secretpassword` - ### Known Errors: * On Windows if you receive the error `Drive has not been shared` then you need to change this setting in Docker Settings > Shared Drives ## Detailed Amazon Web Services (AWS) Install Instructions + If you are unfamiliar with AWS, this detailed guide can help you set up an AWS account, and create the necessary AWS components using the provided template from the [Magic Link](https://console.aws.amazon.com/cloudformation/home?#/stacks/new?stackName=cube-in-a-box&templateURL=https://deafrica-dev-cfn.s3.af-south-1.amazonaws.com/cube-in-a-box/cube-in-a-box-cloudformation.yml) as above. + * First you will need an AWS account. While a 12 month free trail to several different AWS products is available, the computing power offered by the trial remote server is not enough to run demonstration ODC products. The cheapest option is currently a `t2.small` EC2 server, which will cost approximately $10 USD per month, if left running for the entire month. * Sign up for an [AWS account](https://portal.aws.amazon.com/billing/signup#/start). The account that is created is known as a root account. It has access to every capability of AWS, including your billing information. * To follow recommended security practice, [you should first create an Administrator IAM user](https://docs.aws.amazon.com/IAM/latest/UserGuide/getting-started_create-admin-group.html) for your main log-in account, which limits only access to billing and other large administrative policy changes. diff --git a/requirements.in b/requirements.in index 9a4b6004..5e11c498 100644 --- a/requirements.in +++ b/requirements.in @@ -1,33 +1,185 @@ ---extra-index-url https://packages.dea.ga.gov.au/ -datacube[performance,s3] +access +affine aiobotocore[awscli,boto3] aiohttp -pyyaml -wget -requests +alabaster +astropy +autopep8 +black[jupyter] +bokeh +boltons +Bottleneck +Cartopy --no-binary cartopy +cattrs +ciso8601 +click +cligj +climate_indices +cmocean +cognitojwt # Used for user authentication +colorama +contextily +dask-gateway +dask-gateway-server +dask-labextension>=7.0.0 +dask-ml +dask-image +dask[complete] # due to dask-gateway datacube +# dataclasses # backport for Python 3.6 +datashader +deafrica-tools >= 2.4.4 +descartes +dill +distributed # due to dask-gateway +docutils +eodatasets3 +flake8 +folium +gdal==3.8.5 # should match version in the osgeo/gdal image +geohash2 +geojson +geopandas +geopy +geoviews +gcsfs +graphviz +h5py +hdmedians --no-binary=hdmedians +hdstats --no-binary hdstats +holoviews +https://github.com/ubarsc/rios/archive/rios-2.0.4.tar.gz +ipycanvas +ipyevents +ipyfilechooser +ipyleaflet +ipympl +ipython +ipywidgets +isort +jedi +jsonschema +jupyter +jupyterhub +jupyter_bokeh>=4.0.0 +jupyter-contrib-core +jupyter-contrib-nbextensions +jupyter-nbextensions-configurator +jupyter-resource-usage>=1.0.0 +jupyter-server +jupyter-server-proxy>=4.1.0 +jupyter-ui-poll +jupyterlab>=4.0 +jupyterlab-code-formatter +jupyterlab-code-snippets +jupyterlab-geojson +jupyterlab-git +jupyterlab-iframe>=0.5.0 +jupyterlab-language-pack-fr-FR +jupyterlab-logout>=1.0.0 +# jupyterlab-system-monitor archived and components moved to jupyter-resource-usage +jupyterlab-topbar-text # replace jupyterlab-topbar +jupyterlab-theme-toggler +jupyterlab-widgets +jupytext +kombu +lark-parser +latex +line-profiler +localtileserver +mapclassify +memory-profiler +matplotlib +mypy +nbconvert # because of jupyter_contrib_nbextensions +nbdime +nbformat +nbgitpuller +nbmake +nbval +netCDF4 +notebook +numba +numexpr +numpy odc-algo -odc-aws -odc-aio +odc-dscache +odc-geo +odc-stac +odc-stats +# odc-tools apps odc-apps-cloud odc-apps-dc-tools +# odc-tools libs +odc-cloud[ASYNC] +odc-io odc-ui -odc-index -# Jupyter components. -gdal -scipy -Jupyter -jupyterlab -ipyleaflet -folium -pandas -numpy -xarray -matplotlib -geopandas -scikit-image -tqdm -click<8.0.0 -python-dateutil +opencv-contrib-python-headless +opencv-python-headless +osmnx +# otps +OWSLib +pandana +pandas < 2.2.0 +pandoc +panel +param +parso +pathos +Pillow +plotly +poetry +prompt-toolkit # because of line_profiler/ipython +protobuf +psycopg2 +pydash +py3dotplus # replace pydotplus +pyproj +pyrsistent +pysal +pysheds pystac pystac-client +pytest +pytest-reportlog +pytest-xdist +python-dateutil +python-geohash +python-ffmpeg +pyTMD>=2.1.6 +pyviz_comms +PyYAML +requests +rioxarray +Rtree +git+https://github.com/daleroberts/s2cloudmask +s3fs +scikit-image +scikit-learn +scipy +seaborn +setuptools-scm[toml] +spyndex +sidecar +sqlalchemy +structlog +tensorflow +tflite-runtime-nightly +thredds_crawler # archived +timescale +toolz +tqdm +urbanaccess +urllib3 +voluptuous +wapordl +wget +xarray[complete] +xarray-spatial +xgboost # used by Dale's s2cloudmask +yapf +zarr + +--no-binary fiona +--no-binary rasterio +--no-binary shapely \ No newline at end of file diff --git a/requirements.txt b/requirements.txt index 5448a46e..8af44688 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,661 +1,2333 @@ # -# This file is autogenerated by pip-compile with python 3.8 -# To update, run: +# This file is autogenerated by pip-compile with Python 3.10 +# by the following command: # -# pip-compile --extra-index-url=https://packages.dea.ga.gov.au/ --output-file=requirements.txt requirements.in +# pip-compile --output-file=requirements.txt requirements.in # ---extra-index-url https://packages.dea.ga.gov.au/ +--no-binary cartopy +--no-binary fiona +--no-binary hdmedians +--no-binary hdstats +--no-binary rasterio +--no-binary shapely -affine==2.3.0 +absl-py==2.1.0 # via + # keras + # tensorboard + # tensorflow +access==1.1.9 + # via + # -r requirements.in + # pysal +affine==2.4.0 + # via + # -r requirements.in # datacube + # eodatasets3 # odc-algo + # odc-geo + # odc-stac + # pysheds # rasterio -aiobotocore[awscli,boto3]==2.2.0 + # rasterstats +aiobotocore[awscli,boto3]==2.15.1 # via # -r requirements.in - # odc-aio + # deafrica-tools # odc-cloud -aiohttp==3.8.1 + # s3fs +aiohappyeyeballs==2.4.0 + # via aiohttp +aiohttp==3.10.6 # via # -r requirements.in # aiobotocore -aioitertools==0.10.0 + # dask-gateway + # dask-gateway-server + # deafrica-tools + # gcsfs + # jupyter-server-proxy + # s3fs +aioitertools==0.12.0 # via aiobotocore -aiosignal==1.2.0 +aiosignal==1.3.1 # via aiohttp -anyio==3.5.0 - # via jupyter-server -appnope==0.1.2 - # via - # ipykernel - # ipython -argon2-cffi==21.3.0 - # via +alabaster==1.0.0 + # via -r requirements.in +alembic==1.13.3 + # via jupyterhub +amqp==5.2.0 + # via kombu +aniso8601==9.0.1 + # via flask-restx +annotated-types==0.7.0 + # via pydantic +anyio==4.6.0 + # via + # httpx # jupyter-server - # notebook +argon2-cffi==23.1.0 + # via jupyter-server argon2-cffi-bindings==21.2.0 # via argon2-cffi -asttokens==2.0.5 +arrow==1.3.0 + # via isoduration +asciitree==0.3.3 + # via zarr +astropy==6.1.3 + # via -r requirements.in +astropy-iers-data==0.2024.9.23.0.31.43 + # via astropy +asttokens==2.4.1 # via stack-data -async-timeout==4.0.2 - # via aiohttp -attrs==21.4.0 +astunparse==1.6.3 + # via tensorflow +async-lru==2.0.4 + # via jupyterlab +async-timeout==4.0.3 + # via + # aiohttp + # dask-gateway-server +attrs==24.2.0 # via # aiohttp + # cattrs + # datacube + # eodatasets3 # fiona + # hypothesis # jsonschema + # morecantile # rasterio -awscli==1.22.76 + # referencing + # rio-tiler +autopep8==2.3.1 + # via -r requirements.in +awscli==1.34.23 # via aiobotocore -babel==2.9.1 +babel==2.16.0 # via jupyterlab-server -backcall==0.2.0 - # via ipython -beautifulsoup4==4.10.0 - # via nbconvert -bleach==4.1.0 - # via nbconvert -boto3==1.21.21 +beautifulsoup4==4.12.3 + # via + # eemont + # libpysal + # nbconvert + # pysal +black[jupyter]==24.8.0 + # via -r requirements.in +bleach==6.1.0 + # via + # nbconvert + # panel +blinker==1.8.2 + # via flask +blosc2==2.7.1 + # via tables +bokeh==3.5.2 + # via + # -r requirements.in + # dask + # dask-labextension + # geoviews + # holoviews + # jupyter-bokeh + # panel +boltons==24.0.0 + # via + # -r requirements.in + # eodatasets3 +boto3==1.35.23 # via # aiobotocore # datacube - # odc-aws + # eodatasets3 # odc-cloud -botocore==1.24.21 +botocore==1.35.23 # via # aiobotocore # awscli # boto3 # datacube - # odc-aio - # odc-aws + # eodatasets3 # odc-cloud + # odc-stats # s3transfer -bottleneck==1.3.4 - # via datacube -branca==0.4.2 - # via folium -cachetools==5.0.0 - # via datacube -certifi==2021.10.8 +bottleneck==1.4.0 + # via + # -r requirements.in + # datacube + # xarray +branca==0.8.0 + # via + # deafrica-tools + # folium + # ipyleaflet +build==1.2.2 + # via poetry +cachecontrol[filecache]==0.14.0 + # via poetry +cachelib==0.9.0 + # via flask-caching +cachetools==5.5.0 + # via + # datacube + # google-auth + # odc-geo + # rio-tiler +cartopy==0.23.0 + # via + # -r requirements.in + # geoviews +cattrs==24.1.2 + # via + # -r requirements.in + # eodatasets3 +certifi==2024.8.30 # via # fiona + # httpcore + # httpx + # netcdf4 + # pyogrio # pyproj # rasterio # requests -cffi==1.15.0 - # via argon2-cffi-bindings -cftime==1.6.0 - # via netcdf4 -charset-normalizer==2.0.12 +certipy==0.2.1 + # via jupyterhub +cffi==1.17.1 + # via + # argon2-cffi-bindings + # cryptography +cfgv==3.4.0 + # via pre-commit +cftime==1.6.4 + # via + # climate-indices + # nc-time-axis + # netcdf4 + # xarray +charset-normalizer==3.3.2 + # via requests +ciso8601==2.3.1 # via - # aiohttp - # requests -ciso8601==2.2.0 - # via datacube -click==7.1.2 + # -r requirements.in + # datacube + # eodatasets3 + # odc-stats +cleo==2.1.0 + # via poetry +click==8.1.7 # via # -r requirements.in + # black # click-plugins # cligj + # dask + # dask-gateway # datacube # distributed + # eodatasets3 # fiona + # flask + # localtileserver + # mercantile # odc-apps-cloud # odc-apps-dc-tools + # odc-dscache + # odc-stats # rasterio + # rasterstats + # rio-cogeo + # uvicorn click-plugins==1.1.1 # via # fiona # rasterio cligj==0.7.2 # via + # -r requirements.in # fiona # rasterio -cloudpickle==2.0.0 + # rasterstats +climate-indices==2.0.1 + # via -r requirements.in +cloudpickle==3.0.0 # via # dask + # dask-glm # datacube # distributed -colorama==0.4.3 - # via awscli -cycler==0.11.0 +cmocean==4.0.3 + # via -r requirements.in +cognitojwt==1.4.1 + # via -r requirements.in +color-operations==0.1.5 + # via rio-tiler +colorama==0.4.6 + # via + # -r requirements.in + # awscli + # nbdime +colorcet==3.1.0 + # via + # datashader + # holoviews +colorlog==6.8.2 + # via dask-gateway-server +comm==0.2.2 + # via + # ipykernel + # ipywidgets +contextily==1.6.2 + # via -r requirements.in +contourpy==1.3.0 + # via + # bokeh + # matplotlib +coverage[toml]==7.6.1 + # via + # nbval + # pytest-cov +crashtest==0.4.1 + # via + # cleo + # poetry +cryptography==43.0.1 + # via + # certipy + # dask-gateway-server + # python-jose + # secretstorage +cycler==0.12.1 # via matplotlib -dask[array]==2022.3.0 +cython==3.0.11 + # via hdmedians +dask[array,complete,dataframe,diagnostics,distributed]==2024.9.0 # via + # -r requirements.in + # climate-indices + # dask-expr + # dask-gateway + # dask-glm # dask-image + # dask-ml # datacube + # datashader + # deafrica-tools # distributed # odc-algo -dask-image==2021.12.0 - # via odc-algo -datacube[performance,s3]==1.8.6 + # odc-stac + # odc-stats + # spyndex + # xarray +dask-expr==1.1.14 + # via dask +dask-gateway==2024.1.0 + # via + # -r requirements.in + # deafrica-tools +dask-gateway-server==2024.1.0 + # via -r requirements.in +dask-glm==0.3.2 + # via dask-ml +dask-image==2024.5.3 # via # -r requirements.in # odc-algo +dask-labextension==7.0.0 + # via -r requirements.in +dask-ml==2024.4.4 + # via + # -r requirements.in + # deafrica-tools +data==0.4 + # via latex +datacube[performance,s3]==1.8.19 + # via + # -r requirements.in + # deafrica-tools + # eodatasets3 + # odc-algo # odc-apps-dc-tools - # odc-index + # odc-dscache + # odc-stats # odc-ui -debugpy==1.5.1 +datadog==0.50.1 + # via odc-apps-dc-tools +datashader==0.16.3 + # via + # -r requirements.in + # xarray-spatial +deafrica-tools==2.5.0 + # via -r requirements.in +debugpy==1.8.6 # via ipykernel decorator==5.1.1 - # via ipython + # via + # data + # gcsfs + # ipython defusedxml==0.7.1 - # via nbconvert -distributed==2022.3.0 # via + # eodatasets3 + # nbconvert +deprecat==2.1.3 + # via datacube +deprecation==2.1.0 + # via segregation +descartes==1.1.0 + # via -r requirements.in +dill==0.3.8 + # via + # -r requirements.in + # multiprocess + # pathos +distlib==0.3.8 + # via virtualenv +distributed==2024.9.0 + # via + # -r requirements.in + # dask + # dask-gateway + # dask-glm + # dask-labextension + # dask-ml # datacube # odc-algo -docutils==0.15.2 - # via awscli -entrypoints==0.4 + # odc-stats +docutils==0.16 # via - # jupyter-client - # jupyterlab-server - # nbconvert -executing==0.8.3 + # -r requirements.in + # awscli + # geohash2 +dulwich==0.21.7 + # via poetry +earthengine-api==1.1.1 + # via + # ee-extra + # eemont +ecdsa==0.19.0 + # via python-jose +ee-extra==0.0.15 + # via eemont +eemont==0.3.6 + # via spyndex +eodatasets3==0.30.6 + # via + # -r requirements.in + # odc-apps-dc-tools + # odc-stats +esda==2.6.0 + # via + # giddy + # pysal + # spaghetti + # splot +exceptiongroup==1.2.2 + # via + # anyio + # cattrs + # hypothesis + # ipython + # pytest +execnet==2.1.1 + # via pytest-xdist +executing==2.1.0 # via stack-data -fiona==1.8.21 - # via geopandas -folium==0.12.1.post1 +fasteners==0.19 + # via zarr +fastjsonschema==2.20.0 + # via + # nbformat + # poetry +filelock==3.16.1 + # via + # cachecontrol + # virtualenv +fiona==1.10.1 + # via + # deafrica-tools + # eodatasets3 + # geopandas + # odc-stats + # rasterstats +flake8==7.1.1 # via -r requirements.in -fonttools==4.31.2 +flask==3.0.3 + # via + # flask-caching + # flask-cors + # flask-restx + # localtileserver +flask-caching==2.3.0 + # via localtileserver +flask-cors==5.0.0 + # via localtileserver +flask-restx==1.3.0 + # via localtileserver +flatbuffers==24.3.25 + # via tensorflow +flox==0.9.13 + # via xarray +folium==0.17.0 + # via + # -r requirements.in + # deafrica-tools +fonttools==4.54.1 # via matplotlib -frozenlist==1.3.0 +fqdn==1.5.1 + # via jsonschema +frozenlist==1.4.1 # via # aiohttp # aiosignal -fsspec==2022.2.0 +fsspec==2024.9.0 # via # dask + # deafrica-tools + # gcsfs # odc-apps-dc-tools -gdal==3.4.2 + # odc-stats + # s3fs + # xarray +funcsigs==1.0.2 + # via data +future==1.0.0 + # via latex +gast==0.6.0 + # via tensorflow +gcsfs==2024.9.0.post1 + # via + # -r requirements.in + # deafrica-tools +gdal==3.8.5 + # via + # -r requirements.in + # deafrica-tools + # odc-stats + # wapordl +geoalchemy2==0.15.2 + # via datacube +geographiclib==2.0 + # via geopy +geohash2==1.1 + # via -r requirements.in +geojson==3.1.0 + # via + # -r requirements.in + # deafrica-tools + # pysheds +geopandas==0.14.4 + # via + # -r requirements.in + # access + # deafrica-tools + # esda + # libpysal + # momepy + # osmnet + # osmnx + # pointpats + # pysal + # segregation + # spaghetti + # splot + # spopt + # tobler +geopy==2.4.1 + # via + # -r requirements.in + # contextily + # deafrica-tools + # eemont + # urbanaccess +geoviews==1.13.0 # via -r requirements.in -geopandas==0.10.2 +giddy==2.3.5 + # via + # pysal + # splot +gitdb==4.0.11 + # via gitpython +gitpython==3.1.43 + # via nbdime +google-api-core==2.20.0 + # via + # google-api-python-client + # google-cloud-core + # google-cloud-storage +google-api-python-client==2.147.0 + # via earthengine-api +google-auth==2.35.0 + # via + # earthengine-api + # gcsfs + # google-api-core + # google-api-python-client + # google-auth-httplib2 + # google-auth-oauthlib + # google-cloud-core + # google-cloud-storage +google-auth-httplib2==0.2.0 + # via + # earthengine-api + # google-api-python-client +google-auth-oauthlib==1.2.1 + # via gcsfs +google-cloud-core==2.4.1 + # via google-cloud-storage +google-cloud-storage==2.18.2 + # via + # earthengine-api + # gcsfs +google-crc32c==1.6.0 + # via + # google-cloud-storage + # google-resumable-media +google-pasta==0.2.0 + # via tensorflow +google-resumable-media==2.7.2 + # via google-cloud-storage +googleapis-common-protos==1.65.0 + # via google-api-core +graphviz==0.20.3 # via -r requirements.in -greenlet==1.1.2 +greenlet==3.1.1 # via sqlalchemy -heapdict==1.0.1 - # via zict -idna==3.3 +grpcio==1.66.1 + # via + # tensorboard + # tensorflow +h11==0.14.0 + # via + # httpcore + # uvicorn +h5netcdf==1.3.0 + # via + # climate-indices + # xarray +h5py==3.12.1 + # via + # -r requirements.in + # eodatasets3 + # h5netcdf + # keras + # tensorflow +hdmedians==0.14.2 + # via -r requirements.in +hdstats==0.2.1 + # via + # -r requirements.in + # deafrica-tools +holoviews==1.19.1 + # via + # -r requirements.in + # geoviews +httpcore==1.0.5 + # via httpx +httplib2==0.22.0 + # via + # earthengine-api + # google-api-python-client + # google-auth-httplib2 +httpx==0.27.2 + # via + # jupyterlab + # rio-tiler +hypothesis==6.112.1 + # via xarray +identify==2.6.1 + # via pre-commit +idna==3.10 # via # anyio + # httpx + # jsonschema + # jupyterhub # requests # yarl -imageio==2.16.1 - # via scikit-image -importlib-resources==5.4.0 - # via jsonschema -ipykernel==6.9.2 +imageio==2.35.1 + # via + # pims + # scikit-image +importlib-metadata==8.5.0 + # via + # dask + # keyring + # yapf +importlib-resources==6.4.5 + # via + # flask-restx + # odc-apps-dc-tools +inequality==1.0.1 + # via pysal +iniconfig==2.0.0 + # via pytest +installer==0.7.0 + # via poetry +ipycanvas==0.13.3 + # via -r requirements.in +ipyevents==2.0.2 + # via -r requirements.in +ipyfilechooser==0.6.0 + # via -r requirements.in +ipykernel==6.29.5 # via - # ipywidgets # jupyter # jupyter-console - # notebook - # qtconsole -ipyleaflet==0.15.0 + # jupyterlab + # nbmake + # nbval +ipyleaflet==0.19.2 # via # -r requirements.in + # deafrica-tools # odc-ui -ipython==8.1.1 +ipympl==0.9.4 + # via -r requirements.in +ipython==8.27.0 # via + # -r requirements.in + # black + # deafrica-tools # ipykernel + # ipympl # ipywidgets # jupyter-console # jupyter-ui-poll - # jupyterlab # odc-ui ipython-genutils==0.2.0 # via - # ipywidgets - # notebook - # qtconsole -ipywidgets==7.7.0 + # ipympl + # jupyter-contrib-nbextensions +ipywidgets==8.1.5 # via + # -r requirements.in + # deafrica-tools + # ipycanvas + # ipyevents + # ipyfilechooser # ipyleaflet + # ipympl # jupyter + # jupyter-bokeh # odc-ui -jedi==0.18.1 - # via ipython -jinja2==3.0.3 + # sidecar +isoduration==20.11.0 + # via jsonschema +isort==5.13.2 + # via -r requirements.in +itsdangerous==2.2.0 + # via flask +jaraco-classes==3.4.0 + # via keyring +jedi==0.19.1 + # via + # -r requirements.in + # ipython +jeepney==0.8.0 # via + # keyring + # secretstorage +jinja2==3.1.4 + # via + # bokeh # branca + # dask # distributed + # flask # folium # jupyter-server + # jupyterhub # jupyterlab # jupyterlab-server # nbconvert - # notebook - # odc-index -jmespath==1.0.0 + # nbdime +jmespath==1.0.1 # via # boto3 # botocore -json5==0.9.6 +joblib==1.4.2 + # via + # contextily + # deafrica-tools + # s2cloudmask + # scikit-learn + # segregation + # tobler +json5==0.9.25 # via jupyterlab-server -jsonschema==4.4.0 +jsonpointer==3.0.0 + # via jsonschema +jsonschema[format-nongpl]==4.23.0 # via + # -r requirements.in # datacube + # eodatasets3 + # flask-restx + # jupyter-events # jupyterlab-server # nbformat -jupyter==1.0.0 + # pystac +jsonschema-specifications==2023.12.1 + # via jsonschema +jupyter==1.1.1 + # via -r requirements.in +jupyter-bokeh==4.0.5 # via -r requirements.in -jupyter-client==7.1.2 +jupyter-client==8.6.3 # via # ipykernel # jupyter-console # jupyter-server # nbclient - # notebook - # qtconsole -jupyter-console==6.4.3 + # nbval +jupyter-console==6.6.3 # via jupyter -jupyter-core==4.9.2 +jupyter-contrib-core==0.4.2 + # via + # -r requirements.in + # jupyter-contrib-nbextensions + # jupyter-nbextensions-configurator +jupyter-contrib-nbextensions==0.7.0 + # via -r requirements.in +jupyter-core==5.7.2 # via + # ipykernel # jupyter-client + # jupyter-console + # jupyter-contrib-core + # jupyter-contrib-nbextensions + # jupyter-nbextensions-configurator # jupyter-server # jupyterlab # nbconvert # nbformat - # notebook - # qtconsole -jupyter-server==1.15.6 +jupyter-events==0.10.0 # via + # jupyter-server + # jupyterhub +jupyter-highlight-selected-word==0.2.0 + # via jupyter-contrib-nbextensions +jupyter-leaflet==0.19.2 + # via ipyleaflet +jupyter-lsp==2.2.5 + # via jupyterlab +jupyter-nbextensions-configurator==0.6.4 + # via + # -r requirements.in + # jupyter-contrib-nbextensions +jupyter-resource-usage==1.1.0 + # via -r requirements.in +jupyter-server==2.14.2 + # via + # -r requirements.in + # jupyter-lsp + # jupyter-nbextensions-configurator + # jupyter-resource-usage + # jupyter-server-mathjax + # jupyter-server-proxy # jupyterlab + # jupyterlab-code-formatter + # jupyterlab-git # jupyterlab-server - # nbclassic + # nbdime + # nbgitpuller + # notebook # notebook-shim -jupyter-ui-poll==0.2.1 - # via odc-ui -jupyterlab==3.3.2 +jupyter-server-mathjax==0.2.6 + # via nbdime +jupyter-server-proxy==4.4.0 + # via + # -r requirements.in + # dask-labextension +jupyter-server-terminals==0.5.3 + # via jupyter-server +jupyter-ui-poll==1.0.0 + # via + # -r requirements.in + # odc-ui +jupyterhub==5.1.0 + # via -r requirements.in +jupyterlab==4.2.5 + # via + # -r requirements.in + # dask-labextension + # jupyter + # jupyterlab-iframe + # jupyterlab-logout + # jupyterlab-theme-toggler + # jupyterlab-topbar-text + # notebook +jupyterlab-code-formatter==3.0.2 + # via -r requirements.in +jupyterlab-code-snippets==2.2.1 + # via -r requirements.in +jupyterlab-geojson==3.4.0 # via -r requirements.in -jupyterlab-pygments==0.1.2 +jupyterlab-git==0.50.1 + # via -r requirements.in +jupyterlab-iframe==0.5.0 + # via -r requirements.in +jupyterlab-language-pack-fr-fr==4.2.post3 + # via -r requirements.in +jupyterlab-logout==1.0.0 + # via -r requirements.in +jupyterlab-pygments==0.3.0 # via nbconvert -jupyterlab-server==2.11.2 - # via jupyterlab -jupyterlab-widgets==1.1.0 - # via ipywidgets -kiwisolver==1.4.0 +jupyterlab-server==2.27.3 + # via + # jupyterlab + # notebook +jupyterlab-theme-toggler==1.0.0 + # via -r requirements.in +jupyterlab-topbar-text==1.0.0 + # via -r requirements.in +jupyterlab-widgets==3.0.13 + # via + # -r requirements.in + # ipywidgets +jupytext==1.16.4 + # via -r requirements.in +keras==3.5.0 + # via tensorflow +keyring==24.3.1 + # via poetry +kiwisolver==1.4.7 # via matplotlib -lark-parser==0.12.0 +kombu==5.4.2 + # via -r requirements.in +lark==1.2.2 # via datacube -locket==0.2.1 - # via partd -markupsafe==2.1.1 - # via jinja2 -matplotlib==3.5.1 +lark-parser==0.12.0 + # via -r requirements.in +latex==0.7.0 + # via -r requirements.in +lazy-loader==0.4 + # via scikit-image +libclang==18.1.1 + # via tensorflow +libpysal==4.12.1 + # via + # esda + # giddy + # inequality + # mgwr + # momepy + # pointpats + # pysal + # segregation + # spaghetti + # spglm + # spint + # splot + # spopt + # spreg + # spvcm + # tobler +line-profiler==4.1.3 + # via -r requirements.in +linkify-it-py==2.0.3 + # via panel +llvmlite==0.43.0 + # via numba +lmdb==1.5.1 + # via odc-dscache +localtileserver==0.10.3 + # via + # -r requirements.in + # deafrica-tools +locket==1.0.0 + # via + # distributed + # partd +looseversion==1.3.0 + # via pysheds +lxml==5.3.0 + # via + # jupyter-contrib-nbextensions + # owslib + # pytmd + # thredds-crawler + # timescale +lz4==4.3.3 + # via dask +mako==1.3.5 + # via alembic +mapclassify==2.8.1 # via # -r requirements.in + # pysal + # segregation + # splot + # spopt +markdown==3.7 + # via + # panel + # tensorboard +markdown-it-py==3.0.0 + # via + # jupytext + # mdit-py-plugins + # panel + # rich +markupsafe==2.1.5 + # via + # jinja2 + # mako + # nbconvert + # werkzeug +matplotlib==3.9.2 + # via + # -r requirements.in + # cartopy + # cmocean + # contextily + # deafrica-tools + # descartes + # ipympl + # nc-time-axis # odc-ui -matplotlib-inline==0.1.3 + # pointpats + # seaborn + # segregation + # splot + # spyndex + # urbanaccess + # xarray +matplotlib-inline==0.1.7 # via # ipykernel # ipython -mistune==0.8.4 +mccabe==0.7.0 + # via flake8 +mdit-py-plugins==0.4.2 + # via + # jupytext + # panel +mdurl==0.1.2 + # via markdown-it-py +memory-profiler==0.61.0 + # via -r requirements.in +mercantile==1.2.1 + # via contextily +mgwr==2.2.1 + # via pysal +mistune==3.0.2 # via nbconvert -msgpack==1.0.3 - # via distributed -multidict==6.0.2 +ml-dtypes==0.4.1 + # via + # keras + # tensorflow +momepy==0.8.0 + # via pysal +more-itertools==10.5.0 + # via jaraco-classes +morecantile==5.4.2 + # via + # rio-cogeo + # rio-tiler +mpmath==1.3.0 + # via sympy +msgpack==1.1.0 + # via + # blosc2 + # cachecontrol + # distributed +multidict==6.1.0 # via # aiohttp # yarl -munch==2.5.0 - # via fiona -nbclassic==0.3.7 - # via jupyterlab -nbclient==0.5.13 - # via nbconvert -nbconvert==6.4.4 +multipledispatch==1.0.0 + # via + # dask-glm + # dask-ml + # datashader +multiprocess==0.70.16 + # via pathos +mypy==1.11.2 + # via + # -r requirements.in + # xarray +mypy-extensions==1.0.0 + # via + # black + # mypy +namex==0.0.8 + # via keras +nbclient==0.6.8 + # via + # nbconvert + # nbmake +nbconvert==7.16.4 # via + # -r requirements.in # jupyter + # jupyter-contrib-nbextensions # jupyter-server - # notebook -nbformat==5.2.0 +nbdime==4.0.2 # via - # ipywidgets + # -r requirements.in + # jupyterlab-git +nbformat==5.10.4 + # via + # -r requirements.in # jupyter-server + # jupyterlab-git + # jupytext # nbclient # nbconvert - # notebook -nest-asyncio==1.5.4 + # nbdime + # nbmake + # nbval +nbgitpuller==1.2.1 + # via -r requirements.in +nbmake==1.5.4 + # via -r requirements.in +nbval==0.11.0 + # via -r requirements.in +nc-time-axis==1.4.1 + # via xarray +ndindex==1.9.2 + # via blosc2 +nest-asyncio==1.6.0 # via # ipykernel - # jupyter-client # nbclient - # notebook -netcdf4==1.5.8 - # via datacube -networkx==2.7.1 - # via scikit-image -notebook==6.4.10 +netcdf4==1.7.1.post2 # via + # -r requirements.in + # datacube + # pytmd + # xarray +networkx==3.3 + # via + # mapclassify + # momepy + # osmnx + # scikit-image + # spopt +nodeenv==1.9.1 + # via pre-commit +notebook==7.2.2 + # via + # -r requirements.in # jupyter - # nbclassic - # widgetsnbextension -notebook-shim==0.1.0 - # via nbclassic -numexpr==2.8.1 - # via odc-algo -numpy==1.22.3 + # jupyter-contrib-core + # jupyter-contrib-nbextensions + # jupyter-nbextensions-configurator +notebook-shim==0.2.4 + # via + # jupyterlab + # notebook +numba==0.60.0 + # via + # -r requirements.in + # dask-ml + # datashader + # numbagg + # pysheds + # quantecon + # segregation + # sparse + # xarray-spatial +numbagg==0.8.2 + # via xarray +numcodecs==0.13.0 + # via zarr +numexpr==2.10.1 + # via + # -r requirements.in + # blosc2 + # deafrica-tools + # odc-algo + # rio-tiler + # tables +numpy==1.26.4 # via # -r requirements.in + # access + # astropy + # blosc2 + # bokeh # bottleneck + # cartopy # cftime + # cmocean + # color-operations + # contourpy # dask # dask-image + # dask-ml # datacube + # datashader + # deafrica-tools + # eemont + # eodatasets3 + # esda + # flox # folium + # geopandas + # geoviews + # h5py + # hdmedians + # hdstats + # holoviews # imageio + # inequality + # ipycanvas + # ipympl + # keras + # libpysal + # mapclassify # matplotlib + # mgwr + # ml-dtypes + # nc-time-axis # netcdf4 + # numba + # numbagg + # numcodecs # numexpr + # numpy-groupies # odc-algo + # odc-geo + # odc-stac + # odc-stats # odc-ui + # opencv-contrib-python-headless + # opencv-python-headless + # osmnet + # osmnx + # pandana # pandas + # patsy # pims - # pywavelets + # pointpats + # pyarrow + # pyerfa + # pyogrio + # pysal + # pysheds + # pytmd + # quantecon # rasterio + # rasterstats + # rio-tiler + # rioxarray + # s2cloudmask # scikit-image + # scikit-learn # scipy - # snuggs + # seaborn + # segregation + # shapely + # spaghetti + # sparse + # spglm + # spint + # splot + # spopt + # spreg + # spvcm + # statsmodels + # tables + # tensorboard + # tensorflow + # tflite-runtime + # tflite-runtime-nightly # tifffile + # timescale + # tl2cgen + # tobler + # treelite + # urbanaccess + # wapordl # xarray -odc-aio==0.2.1.dev2476 - # via -r requirements.in -odc-algo==0.2.2 + # xarray-spatial + # xgboost + # zarr +numpy-groupies==0.11.2 + # via flox +nvidia-nccl-cu12==2.23.4 + # via xgboost +oauthlib==3.2.2 + # via + # jupyterhub + # requests-oauthlib +odc-algo==0.2.3 # via # -r requirements.in + # deafrica-tools + # odc-stats # odc-ui -odc-apps-cloud==0.2.1 +odc-apps-cloud==0.2.3 # via -r requirements.in -odc-apps-dc-tools==0.2.4 +odc-apps-dc-tools==0.2.18 # via -r requirements.in -odc-aws==0.2.1.dev2476 +odc-cloud[ASYNC,async]==0.2.5 # via # -r requirements.in - # odc-aio -odc-cloud[async]==0.2.1 - # via # odc-apps-cloud # odc-apps-dc-tools -odc-index==0.2.1.dev2420 - # via -r requirements.in -odc-io==0.2.1 + # odc-stats +odc-dscache==0.2.3 + # via + # -r requirements.in + # odc-stats +odc-geo==0.4.8 + # via + # -r requirements.in + # deafrica-tools + # odc-stac +odc-io==0.2.2 # via + # -r requirements.in # odc-apps-cloud # odc-apps-dc-tools - # odc-index -odc-ui==0.2.1.dev3247 + # odc-stats +odc-stac==0.3.10 + # via + # -r requirements.in + # odc-stats +odc-stats==1.0.55 # via -r requirements.in -packaging==21.3 +odc-ui==0.2.1 # via - # bleach + # -r requirements.in + # deafrica-tools +opencv-contrib-python-headless==4.10.0.84 + # via -r requirements.in +opencv-python-headless==4.10.0.84 + # via -r requirements.in +opt-einsum==3.4.0 + # via + # tensorflow + # xarray +optree==0.12.1 + # via keras +osmnet==0.1.7 + # via urbanaccess +osmnx==1.9.4 + # via -r requirements.in +overrides==7.7.0 + # via jupyter-server +owslib==0.31.0 + # via + # -r requirements.in + # deafrica-tools +packaging==24.1 + # via + # astropy + # black + # bokeh + # build + # cartopy + # cmocean # dask + # dask-ml + # datacube + # datashader + # deafrica-tools + # deprecation # distributed + # flox + # geoalchemy2 + # geopandas + # geoviews + # h5netcdf + # holoviews + # ipykernel # jupyter-server + # jupyterhub # jupyterlab + # jupyterlab-code-formatter + # jupyterlab-git # jupyterlab-server + # jupytext + # keras + # lazy-loader + # libpysal # matplotlib - # numexpr - # qtpy + # momepy + # nbconvert + # panel + # pims + # plotly + # poetry + # pooch + # pyogrio + # pysal + # pytest + # rioxarray # scikit-image + # setuptools-scm + # splot + # statsmodels + # tables + # tensorboard + # tensorflow + # tl2cgen + # treelite # xarray -pandas==1.4.1 +pamela==1.2.0 + # via jupyterhub +pandana==0.7 + # via + # -r requirements.in + # urbanaccess +pandas==2.1.4 # via # -r requirements.in + # access + # bokeh + # dask + # dask-expr + # dask-image + # dask-ml # datacube + # datashader + # deafrica-tools + # eemont + # esda + # flox # geopandas + # holoviews + # libpysal + # mapclassify + # momepy + # odc-dscache + # odc-stac + # odc-stats # odc-ui + # osmnet + # osmnx + # pandana + # panel + # pointpats + # pysal + # pysheds + # seaborn + # segregation + # spaghetti + # spopt + # spreg + # spvcm + # spyndex + # statsmodels + # tobler + # urbanaccess + # wapordl # xarray -pandocfilters==1.5.0 +pandoc==2.4 + # via -r requirements.in +pandocfilters==1.5.1 # via nbconvert -parso==0.8.3 - # via jedi -partd==1.2.0 +panel==1.5.0 + # via + # -r requirements.in + # geoviews + # holoviews +param==2.1.1 + # via + # -r requirements.in + # datashader + # geoviews + # holoviews + # panel + # pyct + # pyviz-comms +parso==0.8.4 + # via + # -r requirements.in + # jedi +partd==1.4.2 # via dask -pexpect==4.8.0 - # via ipython -pickleshare==0.7.5 - # via ipython -pillow==9.0.1 +pathos==0.3.2 + # via -r requirements.in +pathspec==0.12.1 + # via black +patsy==0.5.6 + # via statsmodels +pexpect==4.9.0 # via + # ipython + # jupyterlab-git + # poetry +pillow==10.4.0 + # via + # -r requirements.in + # bokeh + # contextily + # datashader # imageio + # ipycanvas + # ipympl # matplotlib # scikit-image -pims==0.5 +pims==0.7 # via dask-image -prometheus-client==0.13.1 +pkginfo==1.11.1 + # via poetry +platformdirs==4.3.6 # via + # black + # jupyter-core + # libpysal + # poetry + # pooch + # pysal + # virtualenv + # yapf +plotly==5.24.1 + # via + # -r requirements.in + # deafrica-tools +pluggy==1.5.0 + # via pytest +plumbum==1.8.3 + # via pandoc +ply==3.11 + # via pandoc +poetry==1.8.3 + # via + # -r requirements.in + # poetry-plugin-export +poetry-core==1.9.0 + # via + # poetry + # poetry-plugin-export +poetry-plugin-export==1.8.0 + # via poetry +pointpats==2.5.0 + # via + # pysal + # spopt +pooch==1.8.2 + # via xarray +pox==0.3.4 + # via pathos +ppft==1.7.6.8 + # via pathos +pre-commit==3.8.0 + # via xarray +prometheus-client==0.21.0 + # via + # jupyter-resource-usage # jupyter-server - # notebook -prompt-toolkit==3.0.28 + # jupyterhub +prompt-toolkit==3.0.48 # via + # -r requirements.in # ipython # jupyter-console -psutil==5.9.0 +proto-plus==1.24.0 + # via google-api-core +protobuf==4.25.5 + # via + # -r requirements.in + # google-api-core + # googleapis-common-protos + # proto-plus + # tensorboard + # tensorflow +psutil==5.9.8 # via # distributed # ipykernel -psycopg2==2.9.3 - # via datacube + # jupyter-resource-usage + # memory-profiler +psycopg2==2.9.9 + # via + # -r requirements.in + # datacube + # odc-dscache ptyprocess==0.7.0 # via # pexpect # terminado -pure-eval==0.2.2 +pulp==2.9.0 + # via spopt +pure-eval==0.2.3 # via stack-data -pyasn1==0.4.8 - # via rsa -pycparser==2.21 +py-cpuinfo==9.0.0 + # via + # blosc2 + # tables +py3dotplus==1.1.0 + # via -r requirements.in +pyarrow==17.0.0 + # via + # dask + # dask-expr +pyasn1==0.6.1 + # via + # pyasn1-modules + # python-jose + # rsa +pyasn1-modules==0.4.1 + # via google-auth +pycodestyle==2.12.1 + # via + # autopep8 + # flake8 +pycparser==2.22 # via cffi -pygments==2.11.2 +pyct==0.5.0 + # via datashader +pydantic==2.9.2 + # via + # jupyterhub + # morecantile + # rio-cogeo + # rio-tiler +pydantic-core==2.23.4 + # via pydantic +pydash==8.0.3 + # via -r requirements.in +pyee==12.0.0 + # via python-ffmpeg +pyerfa==2.0.1.4 + # via astropy +pyflakes==3.2.0 + # via flake8 +pygments==2.18.0 # via # ipython # jupyter-console - # jupyterlab-pygments # nbconvert - # qtconsole -pyparsing==3.0.7 + # nbdime + # nbmake + # rich +pyparsing==3.1.4 # via + # httplib2 # matplotlib - # packaging - # snuggs -pyproj==3.3.0 + # py3dotplus + # rasterio +pyproj==3.6.1 # via + # -r requirements.in + # cartopy # datacube + # deafrica-tools + # eodatasets3 # geopandas - # odc-index -pyrsistent==0.18.1 - # via jsonschema -pystac==1.2.0 + # geoviews + # morecantile + # odc-geo + # pysheds + # pytmd + # rioxarray + # segregation +pyproject-hooks==1.1.0 + # via + # build + # poetry +pyrsistent==0.20.0 + # via -r requirements.in +pysal==24.7 + # via -r requirements.in +pysheds==0.4 + # via -r requirements.in +pyshp==2.3.1 + # via cartopy +pystac[validation]==1.10.1 # via # -r requirements.in + # eodatasets3 # odc-apps-dc-tools + # odc-stac + # odc-stats # pystac-client # rio-stac -pystac-client==0.3.2 + # rio-tiler +pystac-client==0.8.3 # via # -r requirements.in + # deafrica-tools # odc-apps-dc-tools -python-dateutil==2.8.2 +pytest==8.3.3 + # via + # -r requirements.in + # nbmake + # nbval + # pytest-cov + # pytest-env + # pytest-reportlog + # pytest-timeout + # pytest-xdist + # xarray +pytest-cov==5.0.0 + # via xarray +pytest-env==1.1.5 + # via xarray +pytest-reportlog==0.4.0 + # via -r requirements.in +pytest-timeout==2.3.1 + # via xarray +pytest-xdist==3.6.1 # via # -r requirements.in + # xarray +python-box==7.2.0 + # via + # eemont + # spyndex +python-dateutil==2.9.0.post0 + # via + # -r requirements.in + # arrow # botocore # datacube + # deafrica-tools # jupyter-client + # jupyterhub # matplotlib + # owslib # pandas # pystac -pytz==2022.1 + # pystac-client + # pytmd + # thredds-crawler + # timescale +python-ffmpeg==2.0.12 + # via -r requirements.in +python-geohash==0.8.5 + # via -r requirements.in +python-jose[cryptography]==3.3.0 + # via cognitojwt +python-json-logger==2.0.7 + # via jupyter-events +python-rapidjson==1.20 + # via eodatasets3 +pytmd==2.1.6 + # via + # -r requirements.in + # deafrica-tools +pytz==2024.2 # via - # babel + # deafrica-tools + # flask-restx + # owslib # pandas -pywavelets==1.3.0 - # via scikit-image -pyyaml==5.4.1 + # thredds-crawler +pyviz-comms==3.0.3 + # via + # -r requirements.in + # holoviews + # panel +pyyaml==6.0.2 # via # -r requirements.in + # astropy # awscli + # bokeh # dask + # dask-gateway # datacube # distributed + # jupyter-events + # jupyter-nbextensions-configurator + # jupytext # odc-apps-dc-tools -pyzmq==22.3.0 + # owslib + # pre-commit + # urbanaccess +pyzmq==26.2.0 # via + # ipykernel # jupyter-client + # jupyter-console + # jupyter-resource-usage # jupyter-server - # jupyter-ui-poll - # notebook - # qtconsole -qtconsole==5.2.2 - # via jupyter -qtpy==2.0.1 - # via qtconsole -rasterio==1.2.10 +quantecon==0.7.2 + # via giddy +rapidfuzz==3.10.0 + # via cleo +rasterio==1.4.0 # via + # contextily # datacube + # deafrica-tools + # eodatasets3 # odc-algo + # odc-stac + # odc-stats # odc-ui + # pysheds + # rasterstats + # rio-cogeo # rio-stac -requests==2.27.1 + # rio-tiler + # rioxarray + # tobler +rasterstats==0.19.0 + # via + # deafrica-tools + # tobler +referencing==0.35.1 + # via + # jsonschema + # jsonschema-specifications + # jupyter-events +requests==2.32.3 # via # -r requirements.in + # access + # cachecontrol + # contextily + # datadog + # datashader + # deafrica-tools + # earthengine-api + # eemont # folium + # gcsfs + # google-api-core + # google-cloud-storage + # jupyterhub + # jupyterlab-iframe # jupyterlab-server + # libpysal + # localtileserver + # nbdime + # osmnet + # osmnx + # owslib + # pandana + # panel + # poetry + # pooch + # pysal # pystac-client + # quantecon + # requests-oauthlib + # requests-toolbelt + # spyndex + # tensorflow + # thredds-crawler + # urbanaccess # urlpath -rio-stac==0.3.2 + # wapordl +requests-oauthlib==2.0.0 + # via google-auth-oauthlib +requests-toolbelt==1.0.0 + # via poetry +rfc3339-validator==0.1.4 + # via + # jsonschema + # jupyter-events +rfc3986-validator==0.1.1 + # via + # jsonschema + # jupyter-events +rich==13.8.1 + # via keras +rio-cogeo==5.3.4 + # via localtileserver +rio-stac==0.9.0 # via odc-apps-dc-tools +rio-tiler==6.7.0 + # via localtileserver +rios @ https://github.com/ubarsc/rios/archive/rios-2.0.4.tar.gz + # via -r requirements.in +rioxarray==0.17.0 + # via + # -r requirements.in + # deafrica-tools +rpds-py==0.20.0 + # via + # jsonschema + # referencing rsa==4.7.2 - # via awscli -s3transfer==0.5.2 + # via + # awscli + # google-auth + # python-jose +rtree==1.3.0 + # via + # -r requirements.in + # spaghetti +ruamel-yaml==0.18.6 + # via + # datacube + # eodatasets3 +ruamel-yaml-clib==0.2.8 + # via ruamel-yaml +ruff==0.6.8 + # via xarray +s2cloudmask @ git+https://github.com/daleroberts/s2cloudmask + # via -r requirements.in +s3fs==2024.9.0 + # via -r requirements.in +s3transfer==0.10.2 # via # awscli # boto3 -scikit-image==0.19.2 +scikit-image==0.24.0 # via # -r requirements.in + # deafrica-tools # odc-algo -scipy==1.8.0 + # pysheds + # s2cloudmask +scikit-learn==1.5.2 + # via + # -r requirements.in + # dask-glm + # dask-ml + # deafrica-tools + # esda + # libpysal + # mapclassify + # pandana + # pysal + # s2cloudmask + # segregation + # spopt + # spreg + # urbanaccess +scipy==1.10.1 # via # -r requirements.in + # climate-indices + # dask-glm # dask-image + # dask-ml + # datashader + # deafrica-tools + # eodatasets3 + # esda + # flox + # giddy + # hdstats + # inequality + # libpysal + # mapclassify + # mgwr + # pointpats + # pysal + # pysheds + # pytmd + # quantecon # scikit-image -send2trash==1.8.0 + # scikit-learn + # segregation + # spaghetti + # sparse + # spglm + # spint + # spopt + # spreg + # spvcm + # statsmodels + # timescale + # tl2cgen + # tobler + # treelite + # xarray + # xgboost +scooby==0.10.0 # via - # jupyter-server - # notebook -shapely==1.8.1.post1 + # localtileserver + # server-thread +seaborn==0.13.2 + # via + # -r requirements.in + # deafrica-tools + # segregation + # splot + # spvcm + # spyndex + # xarray +secretstorage==3.3.3 + # via keyring +segregation==2.5 + # via pysal +send2trash==1.8.3 + # via jupyter-server +server-thread==0.2.0 + # via localtileserver +setuptools-scm[toml]==8.1.0 # via + # -r requirements.in + # pytmd + # timescale +shapely==2.0.6 + # via + # cartopy # datacube + # deafrica-tools + # eodatasets3 + # esda # geopandas + # geoviews + # libpysal + # momepy + # odc-geo + # osmnet + # osmnx + # pointpats + # pysal + # rasterstats + # spaghetti + # spopt + # wapordl +shellingham==1.5.4 + # via poetry +shutilwhich==1.1.0 + # via latex +sidecar==0.7.0 + # via -r requirements.in +simpervisor==1.0.0 + # via jupyter-server-proxy +simplejson==3.19.3 + # via rasterstats six==1.16.0 # via # asttokens + # astunparse # bleach - # fiona - # munch - # pims + # data + # ecdsa + # google-pasta + # patsy # python-dateutil - # slicerator -slicerator==1.0.0 + # rfc3339-validator + # tensorboard + # tensorflow + # urbanaccess +slicerator==1.1.0 # via pims -sniffio==1.2.0 - # via anyio -snuggs==1.4.7 - # via rasterio +smmap==5.0.1 + # via gitdb +sniffio==1.3.1 + # via + # anyio + # httpx sortedcontainers==2.4.0 - # via distributed -soupsieve==2.3.1 + # via + # distributed + # hypothesis +soupsieve==2.6 # via beautifulsoup4 -sqlalchemy==1.4.32 - # via datacube -stack-data==0.2.0 +spaghetti==1.7.6 + # via + # pysal + # spopt +sparse==0.15.4 + # via dask-glm +spglm==1.1.0 + # via + # mgwr + # pysal + # spint +spint==1.0.7 + # via pysal +splot==1.1.7 + # via pysal +spopt==0.6.1 + # via pysal +spreg==1.7 + # via + # mgwr + # pysal + # spglm + # spint + # splot + # spvcm +spvcm==0.3.0 + # via pysal +spyndex==0.6.0 + # via -r requirements.in +sqlalchemy==1.4.54 + # via + # -r requirements.in + # alembic + # datacube + # geoalchemy2 + # jupyterhub +stack-data==0.6.3 # via ipython -tblib==1.7.0 +statsmodels==0.14.3 + # via tobler +structlog==24.4.0 + # via + # -r requirements.in + # eodatasets3 +sympy==1.13.3 + # via quantecon +tables==3.10.1 + # via pandana +tblib==3.0.0 # via distributed -terminado==0.13.3 +tempdir==0.7.1 + # via latex +tenacity==9.0.0 + # via plotly +tensorboard==2.17.1 + # via tensorflow +tensorboard-data-server==0.7.2 + # via tensorboard +tensorflow==2.17.0 + # via -r requirements.in +tensorflow-io-gcs-filesystem==0.37.1 + # via tensorflow +termcolor==2.4.0 + # via tensorflow +terminado==0.18.1 # via # jupyter-server - # notebook -testpath==0.6.0 + # jupyter-server-terminals +tflite-runtime==2.14.0 + # via odc-stats +tflite-runtime-nightly==2.18.0.dev20240925 + # via -r requirements.in +threadpoolctl==3.5.0 + # via scikit-learn +thredds-crawler==1.5.4 + # via -r requirements.in +tifffile==2024.9.20 + # via + # dask-image + # pims + # scikit-image +timescale==0.0.5 + # via + # -r requirements.in + # deafrica-tools + # pytmd +tinycss2==1.3.0 # via nbconvert -tifffile==2022.3.16 - # via scikit-image -toolz==0.11.2 +tl2cgen==1.0.0 + # via odc-stats +tobler==0.11.3 + # via pysal +tokenize-rt==6.0.0 + # via black +tomli==2.0.1 + # via + # autopep8 + # black + # build + # coverage + # jupyterlab + # jupytext + # mypy + # poetry + # pytest + # pytest-env + # setuptools-scm + # yapf +tomlkit==0.13.2 + # via poetry +toolz==0.12.1 # via + # -r requirements.in # dask # datacube + # datashader # distributed + # flox # odc-algo # odc-apps-dc-tools - # odc-index + # odc-dscache + # odc-stac + # odc-stats # partd -tornado==6.1 +tornado==6.4.1 # via + # bokeh + # dask-gateway # distributed # ipykernel # jupyter-client + # jupyter-contrib-core + # jupyter-contrib-nbextensions + # jupyter-nbextensions-configurator # jupyter-server - # jupyter-ui-poll + # jupyter-server-proxy + # jupyterhub # jupyterlab + # nbdime + # nbgitpuller # notebook # terminado -tqdm==4.63.1 - # via -r requirements.in -traitlets==5.1.1 + # tornado-proxy-handlers +tornado-proxy-handlers==0.0.6 + # via jupyterlab-iframe +tqdm==4.66.5 # via + # -r requirements.in + # deafrica-tools + # momepy + # odc-stats + # panel + # segregation + # spopt + # tobler + # wapordl +traitlets==5.14.3 + # via + # comm + # dask-gateway-server # ipykernel + # ipympl # ipython # ipywidgets # jupyter-client + # jupyter-console + # jupyter-contrib-core + # jupyter-contrib-nbextensions # jupyter-core + # jupyter-events + # jupyter-nbextensions-configurator # jupyter-server + # jupyter-server-proxy + # jupyterhub + # jupyterlab + # jupyterlab-git # matplotlib-inline # nbclient # nbconvert # nbformat - # notebook - # qtconsole # traittypes traittypes==0.2.1 # via ipyleaflet -typing-extensions==4.1.1 - # via aioitertools -urllib3==1.26.9 +treelite==4.3.0 + # via tl2cgen +trove-classifiers==2024.9.12 + # via poetry +types-python-dateutil==2.9.0.20240906 + # via arrow +typing-extensions==4.12.2 + # via + # alembic + # anyio + # async-lru + # black + # cattrs + # ipython + # multidict + # mypy + # optree + # panel + # pydantic + # pydantic-core + # pydash + # pyee + # python-ffmpeg + # tables + # tensorflow + # uvicorn +tzdata==2024.2 + # via + # kombu + # pandas +uc-micro-py==1.0.3 + # via linkify-it-py +urbanaccess==0.2.2 + # via -r requirements.in +uri-template==1.3.0 + # via jsonschema +uritemplate==4.1.1 + # via google-api-python-client +urllib3==2.2.3 # via + # -r requirements.in # botocore + # distributed + # dulwich # requests urlpath==1.2.0 # via odc-apps-dc-tools -wcwidth==0.2.5 +uvicorn==0.30.6 + # via server-thread +vine==5.1.0 + # via + # amqp + # kombu +virtualenv==20.26.5 + # via + # poetry + # pre-commit +voluptuous==0.15.2 + # via -r requirements.in +wapordl==0.12.4 + # via -r requirements.in +wcwidth==0.2.13 # via prompt-toolkit +webcolors==24.8.0 + # via jsonschema webencodings==0.5.1 - # via bleach -websocket-client==1.3.1 + # via + # bleach + # tinycss2 +websocket-client==1.8.0 # via jupyter-server +werkzeug==3.0.4 + # via + # flask + # flask-restx + # localtileserver + # server-thread + # tensorboard wget==3.2 # via -r requirements.in -widgetsnbextension==3.6.0 +wheel==0.44.0 + # via astunparse +widgetsnbextension==4.0.13 # via ipywidgets -wrapt==1.14.0 - # via aiobotocore -xarray==2022.3.0 +wrapt==1.16.0 + # via + # aiobotocore + # deprecat + # tensorflow +xarray[accel,complete,dev,io,parallel,viz]==2024.9.0 # via # -r requirements.in + # climate-indices # datacube + # datashader + # deafrica-tools + # eodatasets3 # odc-algo + # odc-stac + # odc-stats # odc-ui -xyzservices==2022.3.0 - # via ipyleaflet -yarl==1.7.2 + # rioxarray + # s2cloudmask + # spyndex + # xarray-spatial +xarray-spatial==0.4.0 + # via -r requirements.in +xgboost==2.1.1 + # via + # -r requirements.in + # s2cloudmask +xyzservices==2024.9.0 + # via + # bokeh + # contextily + # folium + # geoviews + # ipyleaflet +yapf==0.40.2 + # via -r requirements.in +yarl==1.12.1 # via aiohttp -zict==2.1.0 +zarr==2.18.3 + # via + # -r requirements.in + # xarray +zict==3.0.0 # via distributed -zipp==3.7.0 - # via importlib-resources +zipp==3.20.2 + # via importlib-metadata +zstandard==0.23.0 + # via odc-dscache # The following packages are considered to be unsafe in a requirements file: # setuptools diff --git a/scripts/install-docker.sh b/scripts/install-docker.sh index 64103e6b..7ac624f7 100644 --- a/scripts/install-docker.sh +++ b/scripts/install-docker.sh @@ -2,17 +2,23 @@ install_docker_ubuntu() { # Copied from : https://docs.docker.com/engine/install/ubuntu/ - sudo apt-get remove -y docker docker-engine docker.io containerd runc + sudo apt-get remove -y docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc + # Add Docker's official GPG key: sudo apt-get update - sudo DEBIAN_FRONTEND=noninteractive apt-get install -y apt-transport-https ca-certificates curl gnupg lsb-release - - curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg - - echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null + sudo apt-get install ca-certificates curl + sudo install -m 0755 -d /etc/apt/keyrings + sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc + sudo chmod a+r /etc/apt/keyrings/docker.asc + # Add the repository to Apt sources: + echo \ + "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \ + $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \ + sudo tee /etc/apt/sources.list.d/docker.list > /dev/null sudo apt-get update - sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-compose + + sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin sudo service docker start } @@ -33,7 +39,7 @@ install_docker_fedora() { sudo dnf config-manager --add-repo https://download.docker.com/linux/fedora/docker-ce.repo - sudo dnf install -y docker-ce docker-ce-cli containerd.io docker-compose + sudo dnf install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin sudo systemctl enable docker.service sudo systemctl enable containerd.service sudo systemctl start docker