diff --git a/.github/Architecture.md b/.github/Architecture.md index c381f867..e1be534c 100644 --- a/.github/Architecture.md +++ b/.github/Architecture.md @@ -5,24 +5,16 @@ ``` 📦 training | |- 📂 training: -| | |- 📂 core: -| | | |- 📜 dataset.py : read in the dataset through URL or file upload -| | | |- 📜 criterion.py -| | | |- 📜 optimizer.py : what optimizer to use (ie: SGD or Adam for now) -| | | |- 📜 __init__.py -| | | |- 📜 dl_model.py : torch model based on user specifications from drag and drop -| | | |- 📜 trainer.py -| | | |- 📜 authenticator.py | | |- 📂 routes: +| | | |- 📂 image: +| | | | |- 📜 schemas.py +| | | | |- 📜 __init__.py +| | | | |- 📜 image.py | | | |- 📂 datasets: | | | | |- 📂 default: | | | | | |- 📜 schemas.py -| | | | | |- 📜 __init__.py | | | | | |- 📜 columns.py -| | | | |- 📜 __init__.py -| | | |- 📂 image: -| | | | |- 📜 image.py -| | | | |- 📜 schemas.py +| | | | | |- 📜 __init__.py | | | | |- 📜 __init__.py | | | |- 📂 tabular: | | | | |- 📜 tabular.py @@ -33,198 +25,206 @@ | | |- 📂 middleware: | | | |- 📜 health_check_middleware.py | | | |- 📜 __init__.py +| | |- 📂 core: +| | | |- 📜 optimizer.py : what optimizer to use (ie: SGD or Adam for now) +| | | |- 📜 criterion.py +| | | |- 📜 dl_model.py : torch model based on user specifications from drag and drop +| | | |- 📜 dataset.py : read in the dataset through URL or file upload +| | | |- 📜 authenticator.py +| | | |- 📜 __init__.py +| | | |- 📜 trainer.py +| | |- 📜 wsgi.py +| | |- 📜 settings.py | | |- 📜 urls.py | | |- 📜 asgi.py | | |- 📜 __init__.py -| | |- 📜 wsgi.py -| | |- 📜 settings.py -| |- 📜 README.md -| |- 📜 docker-compose.prod.yml | |- 📜 pytest.ini -| |- 📜 poetry.lock | |- 📜 cli.py +| |- 📜 README.md +| |- 📜 Dockerfile.prod | |- 📜 pyproject.toml -| |- 📜 environment.yml +| |- 📜 docker-compose.yml +| |- 📜 poetry.lock | |- 📜 Dockerfile -| |- 📜 Dockerfile.prod | |- 📜 manage.py -| |- 📜 docker-compose.yml +| |- 📜 docker-compose.prod.yml +| |- 📜 environment.yml ``` ## Frontend Architecture ``` 📦 frontend +| |- 📂 public: +| | |- 📂 images: +| | | |- 📂 learn_mod_images: +| | | | |- 📜 LeakyReLUactivation.png +| | | | |- 📜 neuralnet.png +| | | | |- 📜 tanhactivation.png +| | | | |- 📜 lossExample.png +| | | | |- 📜 sigmoidfunction.png +| | | | |- 📜 neuron.png +| | | | |- 📜 ReLUactivation.png +| | | | |- 📜 sigmoidactivation.png +| | | | |- 📜 lossExampleEquation.png +| | | | |- 📜 neuronWithEquation.png +| | | | |- 📜 robotImage.jpg +| | | | |- 📜 binarystepactivation.png +| | | | |- 📜 lossExampleTable.png +| | | |- 📂 wiki_images: +| | | | |- 📜 avgpool_maxpool.gif +| | | | |- 📜 tanh_equation.png +| | | | |- 📜 maxpool2d.gif +| | | | |- 📜 dropout_diagram.png +| | | | |- 📜 batchnorm_diagram.png +| | | | |- 📜 softmax_equation.png : PNG file of Softmax equation +| | | | |- 📜 tanh_plot.png +| | | | |- 📜 sigmoid_equation.png +| | | | |- 📜 conv2d.gif +| | | | |- 📜 conv2d2.gif +| | | |- 📂 logos: +| | | | |- 📂 dlp_branding: +| | | | | |- 📜 dlp-logo.svg : DLP Logo, duplicate of files in public, but essential as the frontend can't read public +| | | | | |- 📜 dlp-logo.png : DLP Logo, duplicate of files in public, but essential as the frontend can't read public +| | | | |- 📜 pytorch-logo.png +| | | | |- 📜 dsgt-logo-dark.png +| | | | |- 📜 flask-logo.png +| | | | |- 📜 dsgt-logo-light.png +| | | | |- 📜 aws-logo.png +| | | | |- 📜 github.png +| | | | |- 📜 google.png +| | | | |- 📜 pandas-logo.png +| | | | |- 📜 python-logo.png +| | | | |- 📜 dsgt-logo-white-back.png +| | | | |- 📜 react-logo.png +| | | |- 📜 demo_video.gif : GIF tutorial of a simple classification training session +| | |- 📜 dlp-logo.ico : DLP Logo +| | |- 📜 manifest.json : Default React file for choosing icon based on +| | |- 📜 index.html : Base HTML file that will be initially rendered +| | |- 📜 robots.txt +| |- 📂 layer_docs: +| | |- 📜 Linear.md : Doc for Linear layer +| | |- 📜 Softmax.md : Doc for Softmax layer +| | |- 📜 ReLU.md : Doc for ReLU later +| | |- 📜 softmax_equation.png : PNG file of Softmax equation | |- 📂 src: -| | |- 📂 pages: -| | | |- 📂 train: -| | | | |- 📜 [train_space_id].tsx -| | | | |- 📜 index.tsx -| | | |- 📜 settings.tsx -| | | |- 📜 feedback.tsx -| | | |- 📜 forgot.tsx -| | | |- 📜 learn.tsx -| | | |- 📜 dashboard.tsx -| | | |- 📜 login.tsx -| | | |- 📜 _document.tsx -| | | |- 📜 _app.tsx -| | | |- 📜 about.tsx -| | | |- 📜 wiki.tsx -| | | |- 📜 LearnContent.tsx | | |- 📂 features: -| | | |- 📂 Feedback: -| | | | |- 📂 redux: -| | | | | |- 📜 feedbackApi.ts | | | |- 📂 Dashboard: +| | | | |- 📂 redux: +| | | | | |- 📜 dashboardApi.ts | | | | |- 📂 components: | | | | | |- 📜 TrainDataGrid.tsx | | | | | |- 📜 TrainBarChart.tsx | | | | | |- 📜 TrainDoughnutChart.tsx +| | | |- 📂 LearnMod: +| | | | |- 📜 FRQuestion.tsx +| | | | |- 📜 MCQuestion.tsx +| | | | |- 📜 ClassCard.tsx +| | | | |- 📜 ImageComponent.tsx +| | | | |- 📜 LearningModulesContent.tsx +| | | | |- 📜 ModulesSideBar.tsx +| | | | |- 📜 Exercise.tsx +| | | |- 📂 Feedback: | | | | |- 📂 redux: -| | | | | |- 📜 dashboardApi.ts +| | | | | |- 📜 feedbackApi.ts | | | |- 📂 Train: -| | | | |- 📂 constants: -| | | | | |- 📜 trainConstants.ts -| | | | |- 📂 components: -| | | | | |- 📜 DatasetStepLayout.tsx -| | | | | |- 📜 CreateTrainspace.tsx -| | | | | |- 📜 TrainspaceLayout.tsx | | | | |- 📂 redux: | | | | | |- 📜 trainspaceApi.ts | | | | | |- 📜 trainspaceSlice.ts | | | | |- 📂 features: -| | | | | |- 📂 Image: -| | | | | | |- 📂 constants: -| | | | | | | |- 📜 imageConstants.ts -| | | | | | |- 📂 components: -| | | | | | | |- 📜 ImageTrainspace.tsx -| | | | | | | |- 📜 ImageFlow.tsx -| | | | | | | |- 📜 ImageReviewStep.tsx -| | | | | | | |- 📜 ImageParametersStep.tsx -| | | | | | | |- 📜 ImageDatasetStep.tsx -| | | | | | |- 📂 redux: -| | | | | | | |- 📜 imageApi.ts -| | | | | | | |- 📜 imageActions.ts -| | | | | | |- 📂 types: -| | | | | | | |- 📜 imageTypes.ts -| | | | | | |- 📜 index.ts | | | | | |- 📂 Tabular: +| | | | | | |- 📂 redux: +| | | | | | | |- 📜 tabularActions.ts +| | | | | | | |- 📜 tabularApi.ts | | | | | | |- 📂 constants: | | | | | | | |- 📜 tabularConstants.ts +| | | | | | |- 📂 types: +| | | | | | | |- 📜 tabularTypes.ts | | | | | | |- 📂 components: -| | | | | | | |- 📜 TabularTrainspace.tsx +| | | | | | | |- 📜 TabularFlow.tsx | | | | | | | |- 📜 TabularParametersStep.tsx +| | | | | | | |- 📜 TabularTrainspace.tsx | | | | | | | |- 📜 TabularDatasetStep.tsx -| | | | | | | |- 📜 TabularFlow.tsx | | | | | | | |- 📜 TabularReviewStep.tsx +| | | | | | |- 📜 index.ts +| | | | | |- 📂 Image: | | | | | | |- 📂 redux: -| | | | | | | |- 📜 tabularActions.ts -| | | | | | | |- 📜 tabularApi.ts +| | | | | | | |- 📜 imageApi.ts +| | | | | | | |- 📜 imageActions.ts +| | | | | | |- 📂 constants: +| | | | | | | |- 📜 imageConstants.ts | | | | | | |- 📂 types: -| | | | | | | |- 📜 tabularTypes.ts +| | | | | | | |- 📜 imageTypes.ts +| | | | | | |- 📂 components: +| | | | | | | |- 📜 ImageReviewStep.tsx +| | | | | | | |- 📜 ImageFlow.tsx +| | | | | | | |- 📜 ImageParametersStep.tsx +| | | | | | | |- 📜 ImageDatasetStep.tsx +| | | | | | | |- 📜 ImageTrainspace.tsx | | | | | | |- 📜 index.ts +| | | | |- 📂 constants: +| | | | | |- 📜 trainConstants.ts | | | | |- 📂 types: | | | | | |- 📜 trainTypes.ts +| | | | |- 📂 components: +| | | | | |- 📜 CreateTrainspace.tsx +| | | | | |- 📜 DatasetStepLayout.tsx +| | | | | |- 📜 TrainspaceLayout.tsx | | | |- 📂 OpenAi: | | | | |- 📜 openAiUtils.ts -| | | |- 📂 LearnMod: -| | | | |- 📜 ModulesSideBar.tsx -| | | | |- 📜 Exercise.tsx -| | | | |- 📜 LearningModulesContent.tsx -| | | | |- 📜 FRQuestion.tsx -| | | | |- 📜 ImageComponent.tsx -| | | | |- 📜 ClassCard.tsx -| | | | |- 📜 MCQuestion.tsx -| | |- 📂 backend_outputs: -| | | |- 📜 model.pkl -| | | |- 📜 my_deep_learning_model.onnx : Last ONNX file output -| | | |- 📜 model.pt : Last model.pt output | | |- 📂 common: -| | | |- 📂 components: -| | | | |- 📜 Spacer.tsx -| | | | |- 📜 Footer.tsx -| | | | |- 📜 DlpTooltip.tsx -| | | | |- 📜 EmailInput.tsx -| | | | |- 📜 HtmlTooltip.tsx -| | | | |- 📜 NavBarMain.tsx -| | | | |- 📜 TitleText.tsx -| | | | |- 📜 ClientOnlyPortal.tsx +| | | |- 📂 styles: +| | | | |- 📜 globals.css +| | | | |- 📜 Home.module.css | | | |- 📂 redux: -| | | | |- 📜 store.ts -| | | | |- 📜 train.ts | | | | |- 📜 userLogin.ts +| | | | |- 📜 store.ts | | | | |- 📜 hooks.ts | | | | |- 📜 backendApi.ts +| | | | |- 📜 train.ts | | | |- 📂 utils: -| | | | |- 📜 dateFormat.ts | | | | |- 📜 firebase.ts | | | | |- 📜 dndHelpers.ts -| | | |- 📂 styles: -| | | | |- 📜 Home.module.css -| | | | |- 📜 globals.css -| | |- 📜 next-env.d.ts -| | |- 📜 GlobalStyle.ts -| | |- 📜 iris.csv : Sample CSV data +| | | | |- 📜 dateFormat.ts +| | | |- 📂 components: +| | | | |- 📜 NavBarMain.tsx +| | | | |- 📜 Footer.tsx +| | | | |- 📜 ClientOnlyPortal.tsx +| | | | |- 📜 Spacer.tsx +| | | | |- 📜 EmailInput.tsx +| | | | |- 📜 TitleText.tsx +| | | | |- 📜 HtmlTooltip.tsx +| | | | |- 📜 DlpTooltip.tsx +| | |- 📂 backend_outputs: +| | | |- 📜 model.pkl +| | | |- 📜 my_deep_learning_model.onnx : Last ONNX file output +| | | |- 📜 model.pt : Last model.pt output +| | |- 📂 pages: +| | | |- 📂 train: +| | | | |- 📜 [train_space_id].tsx +| | | | |- 📜 index.tsx +| | | |- 📜 login.tsx +| | | |- 📜 feedback.tsx +| | | |- 📜 _app.tsx +| | | |- 📜 forgot.tsx +| | | |- 📜 learn.tsx +| | | |- 📜 LearnContent.tsx +| | | |- 📜 settings.tsx +| | | |- 📜 dashboard.tsx +| | | |- 📜 about.tsx +| | | |- 📜 wiki.tsx +| | | |- 📜 _document.tsx | | |- 📜 constants.ts -| |- 📂 layer_docs: -| | |- 📜 softmax_equation.png : PNG file of Softmax equation -| | |- 📜 Linear.md : Doc for Linear layer -| | |- 📜 Softmax.md : Doc for Softmax layer -| | |- 📜 ReLU.md : Doc for ReLU later -| |- 📂 public: -| | |- 📂 images: -| | | |- 📂 wiki_images: -| | | | |- 📜 softmax_equation.png : PNG file of Softmax equation -| | | | |- 📜 tanh_plot.png -| | | | |- 📜 conv2d.gif -| | | | |- 📜 conv2d2.gif -| | | | |- 📜 avgpool_maxpool.gif -| | | | |- 📜 sigmoid_equation.png -| | | | |- 📜 batchnorm_diagram.png -| | | | |- 📜 maxpool2d.gif -| | | | |- 📜 tanh_equation.png -| | | | |- 📜 dropout_diagram.png -| | | |- 📂 learn_mod_images: -| | | | |- 📜 neuronWithEquation.png -| | | | |- 📜 robotImage.jpg -| | | | |- 📜 neuralnet.png -| | | | |- 📜 sigmoidactivation.png -| | | | |- 📜 lossExample.png -| | | | |- 📜 binarystepactivation.png -| | | | |- 📜 tanhactivation.png -| | | | |- 📜 LeakyReLUactivation.png -| | | | |- 📜 sigmoidfunction.png -| | | | |- 📜 lossExampleTable.png -| | | | |- 📜 lossExampleEquation.png -| | | | |- 📜 neuron.png -| | | | |- 📜 ReLUactivation.png -| | | |- 📂 logos: -| | | | |- 📂 dlp_branding: -| | | | | |- 📜 dlp-logo.svg : DLP Logo, duplicate of files in public, but essential as the frontend can't read public -| | | | | |- 📜 dlp-logo.png : DLP Logo, duplicate of files in public, but essential as the frontend can't read public -| | | | |- 📜 dsgt-logo-white-back.png -| | | | |- 📜 pytorch-logo.png -| | | | |- 📜 google.png -| | | | |- 📜 flask-logo.png -| | | | |- 📜 dsgt-logo-dark.png -| | | | |- 📜 pandas-logo.png -| | | | |- 📜 dsgt-logo-light.png -| | | | |- 📜 github.png -| | | | |- 📜 react-logo.png -| | | | |- 📜 python-logo.png -| | | | |- 📜 aws-logo.png -| | | |- 📜 demo_video.gif : GIF tutorial of a simple classification training session -| | |- 📜 manifest.json : Default React file for choosing icon based on -| | |- 📜 dlp-logo.ico : DLP Logo -| | |- 📜 index.html : Base HTML file that will be initially rendered -| | |- 📜 robots.txt -| |- 📜 .eslintrc.json +| | |- 📜 iris.csv : Sample CSV data +| | |- 📜 GlobalStyle.ts +| | |- 📜 next-env.d.ts | |- 📜 .eslintignore +| |- 📜 tsconfig.json +| |- 📜 .eslintrc.json | |- 📜 pnpm-lock.yaml +| |- 📜 jest.config.js | |- 📜 package.json | |- 📜 next.config.js -| |- 📜 jest.config.js | |- 📜 next-env.d.ts -| |- 📜 tsconfig.json ``` diff --git a/.github/workflows/aws.yml b/.github/workflows/aws.yml index 4a3c97f5..911142f1 100644 --- a/.github/workflows/aws.yml +++ b/.github/workflows/aws.yml @@ -26,26 +26,27 @@ name: Deploy to Amazon ECS - # Only trigger, when we push to prod-deploy on: push: branches: - - "prod-deploy" + - "prod-deploy" env: - AWS_REGION: "us-west-2" # set this to your preferred AWS region, e.g. us-west-1 - ECR_REPOSITORY: "deep-learning-playground" # set this to your Amazon ECR repository name - ECS_SERVICE: "deep-learning-playground-service" # set this to your Amazon ECS service name - ECS_CLUSTER: "deep-learning-playground" # set this to your Amazon ECS cluster name - ECS_TASK_DEFINITION: ".aws/task-definition.json" # set this to the path to your Amazon ECS task definition - # file, e.g. .aws/task-definition.json - CONTAINER_NAME: "deep-learning-playground-container" # set this to the name of the container in the - # containerDefinitions section of your task definition + AWS_REGION: "us-west-2" # set this to your preferred AWS region, e.g. us-west-1 + ECR_REPOSITORY: "deep-learning-playground" # set this to your Amazon ECR repository name + ECS_SERVICE: "deep-learning-playground-service" # set this to your Amazon ECS service name + ECS_CLUSTER: "deep-learning-playground" # set this to your Amazon ECS cluster name + ECS_TASK_DEFINITION: + ".aws/task-definition.json" # set this to the path to your Amazon ECS task definition + # file, e.g. .aws/task-definition.json + CONTAINER_NAME: + "deep-learning-playground-container" # set this to the name of the container in the + # containerDefinitions section of your task definition permissions: - contents: read - actions: write + contents: read + actions: write jobs: deploy: @@ -53,59 +54,59 @@ jobs: runs-on: ubuntu-latest environment: production steps: - - name: Get current branch - run: echo running on branch ${GITHUB_REF##*/} - - - name: Wait for tests to succeed - if: ${{ github.ref }} = "refs/heads/prod-deploy" - uses: lewagon/wait-on-check-action@v1.1.1 - with: - ref: ${{ github.sha }} - check-name: 'build-linux' - repo-token: ${{ secrets.PAT }} - allowed-conclusions: success,skipped - verbose: true - wait-interval: 10 - - - name: Checkout - uses: actions/checkout@v3 + - name: Get current branch + run: echo running on branch ${GITHUB_REF##*/} + + - name: Wait for tests to succeed + if: ${{ github.ref }} = "refs/heads/prod-deploy" + uses: lewagon/wait-on-check-action@v1.1.1 + with: + ref: ${{ github.sha }} + check-name: "build-linux" + repo-token: ${{ secrets.PAT }} + allowed-conclusions: success,skipped + verbose: true + wait-interval: 10 + + - name: Checkout + uses: actions/checkout@v4 + + - name: Configure AWS credentials + uses: aws-actions/configure-aws-credentials@v1 + with: + aws-access-key-id: ${{ secrets.AWS_DEPLOY_ACCESS_KEY_ID }} + aws-secret-access-key: ${{ secrets.AWS_DEPLOY_SECRET_ACCESS_KEY }} + aws-region: ${{ env.AWS_REGION }} - - name: Configure AWS credentials - uses: aws-actions/configure-aws-credentials@v1 - with: - aws-access-key-id: ${{ secrets.AWS_DEPLOY_ACCESS_KEY_ID }} - aws-secret-access-key: ${{ secrets.AWS_DEPLOY_SECRET_ACCESS_KEY }} - aws-region: ${{ env.AWS_REGION }} + - name: Login to Amazon ECR + id: login-ecr + uses: aws-actions/amazon-ecr-login@v1 - - name: Login to Amazon ECR - id: login-ecr - uses: aws-actions/amazon-ecr-login@v1 + - name: Build, tag, and push image to Amazon ECR + id: build-image + env: + ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }} + IMAGE_TAG: ${{ github.sha }} + run: | + # Build a docker container and + # push it to ECR so that it can + # be deployed to ECS. + docker build -t $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG --build-arg TARGETARCH="x86" --build-arg AWS_REGION=${{ secrets.AWS_REGION }} --build-arg AWS_DEPLOY_ACCESS_KEY_ID=${{ secrets.AWS_DEPLOY_ACCESS_KEY_ID }} --build-arg AWS_DEPLOY_SECRET_ACCESS_KEY=${{ secrets.AWS_DEPLOY_SECRET_ACCESS_KEY }} . + docker push $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG + echo "::set-output name=image::$ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG" - - name: Build, tag, and push image to Amazon ECR - id: build-image - env: - ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }} - IMAGE_TAG: ${{ github.sha }} - run: | - # Build a docker container and - # push it to ECR so that it can - # be deployed to ECS. - docker build -t $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG --build-arg TARGETARCH="x86" --build-arg AWS_REGION=${{ secrets.AWS_REGION }} --build-arg AWS_DEPLOY_ACCESS_KEY_ID=${{ secrets.AWS_DEPLOY_ACCESS_KEY_ID }} --build-arg AWS_DEPLOY_SECRET_ACCESS_KEY=${{ secrets.AWS_DEPLOY_SECRET_ACCESS_KEY }} . - docker push $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG - echo "::set-output name=image::$ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG" + - name: Fill in the new image ID in the Amazon ECS task definition + id: task-def + uses: aws-actions/amazon-ecs-render-task-definition@v1 + with: + task-definition: ${{ env.ECS_TASK_DEFINITION }} + container-name: ${{ env.CONTAINER_NAME }} + image: ${{ steps.build-image.outputs.image }} - - name: Fill in the new image ID in the Amazon ECS task definition - id: task-def - uses: aws-actions/amazon-ecs-render-task-definition@v1 - with: - task-definition: ${{ env.ECS_TASK_DEFINITION }} - container-name: ${{ env.CONTAINER_NAME }} - image: ${{ steps.build-image.outputs.image }} - - - name: Deploy Amazon ECS task definition - uses: aws-actions/amazon-ecs-deploy-task-definition@v1 - with: - task-definition: ${{ steps.task-def.outputs.task-definition }} - service: ${{ env.ECS_SERVICE }} - cluster: ${{ env.ECS_CLUSTER }} - wait-for-service-stability: true + - name: Deploy Amazon ECS task definition + uses: aws-actions/amazon-ecs-deploy-task-definition@v1 + with: + task-definition: ${{ steps.task-def.outputs.task-definition }} + service: ${{ env.ECS_SERVICE }} + cluster: ${{ env.ECS_CLUSTER }} + wait-for-service-stability: true diff --git a/.github/workflows/backend.yml b/.github/workflows/backend.yml index 24adeeba..f282a62a 100644 --- a/.github/workflows/backend.yml +++ b/.github/workflows/backend.yml @@ -18,15 +18,15 @@ jobs: # check-out repo and set-up mamba env #---------------------------------------------- - name: Check out repository - uses: actions/checkout@v3 - + uses: actions/checkout@v4 + - name: Setup Mamba uses: conda-incubator/setup-miniconda@v2 with: miniforge-version: latest use-mamba: true activate-environment: dlp - + - name: Cache Mamba env id: cached-mamba-env uses: actions/cache@v3 @@ -35,15 +35,13 @@ jobs: CACHE_NUMBER: 0 with: path: /usr/share/miniconda3/envs/ - key: - mamba-${{ runner.os }}-${{env.CACHE_NUMBER }}-${{hashFiles('**/training/environment.yml') }} + key: mamba-${{ runner.os }}-${{env.CACHE_NUMBER }}-${{hashFiles('**/training/environment.yml') }} - name: Update environment - run: - mamba env update -n dlp -f + run: mamba env update -n dlp -f training/environment.yml if: steps.cached-mamba-env.outputs.cache-hit != 'true' - + #---------------------------------------------- # load cached venv if cache exists #---------------------------------------------- @@ -58,7 +56,7 @@ jobs: #--------------------------------------------------- # install dependencies if cache does not exist #--------------------------------------------------- - + - name: Install dependencies if: steps.cached-poetry-dependencies.outputs.cache-hit != 'true' run: pwd && cd training && poetry install --no-interaction --no-root && poetry env info -p @@ -76,7 +74,7 @@ jobs: with: github_token: ${{ secrets.GITHUB_TOKEN }} # You need this reporter: github-pr-review # Change reporter. - + #---------------------------------------------- # black formatter #---------------------------------------------- @@ -84,15 +82,15 @@ jobs: id: action_black with: black_args: "." - + - uses: stefanzweifel/git-auto-commit-action@v4 if: steps.action_black.outputs.is_formatted == 'true' with: commit_message: ":art: Format Python code with psf/black" - commit_options: '--no-verify' + commit_options: "--no-verify" commit_user_name: github-actions commit_user_email: ghaction@github.com - + test: needs: lint runs-on: ubuntu-22.04 @@ -101,7 +99,7 @@ jobs: # check-out repo and set-up mamba env #---------------------------------------------- - name: Check out repository - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Setup Mamba uses: conda-incubator/setup-miniconda@v2 @@ -109,7 +107,7 @@ jobs: miniforge-version: latest use-mamba: true activate-environment: dlp - + - name: Cache Mamba env id: cached-mamba-env uses: actions/cache@v3 @@ -118,19 +116,17 @@ jobs: CACHE_NUMBER: 0 with: path: /usr/share/miniconda3/envs/ - key: - mamba-${{ runner.os }}-${{env.CACHE_NUMBER }}-${{hashFiles('**/training/environment.yml') }} + key: mamba-${{ runner.os }}-${{env.CACHE_NUMBER }}-${{hashFiles('**/training/environment.yml') }} - name: Update environment - run: - mamba env update -n dlp -f + run: mamba env update -n dlp -f training/environment.yml if: steps.cached-mamba-env.outputs.cache-hit != 'true' - + #---------------------------------------------- # load cached venv if cache exists #---------------------------------------------- - + - name: Load cached venv id: cached-poetry-dependencies uses: actions/cache@v3 @@ -138,7 +134,7 @@ jobs: path: /usr/share/miniconda3/envs/dlp key: training-venv-${{ runner.os }}-${{ hashFiles('**/training/poetry.lock') }} restore-keys: training-venv-${{ runner.os }}- - + #---------------------------------------------- # install dependencies if cache does not exist #---------------------------------------------- @@ -160,4 +156,3 @@ jobs: export AWS_DEFAULT_REGION=us-west-2 cd training && poetry run pytest tests shell: bash -el {0} - diff --git a/.github/workflows/black.yml b/.github/workflows/black.yml index 64e5fc7a..4e50b675 100644 --- a/.github/workflows/black.yml +++ b/.github/workflows/black.yml @@ -7,7 +7,7 @@ jobs: name: Black Formatter runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - uses: rickstaa/action-black@v1 id: action_black with: @@ -16,7 +16,6 @@ jobs: if: steps.action_black.outputs.is_formatted == 'true' with: commit_message: ":art: Format Python code with psf/black" - commit_options: '--no-verify' + commit_options: "--no-verify" commit_user_name: github-actions commit_user_email: ghaction@github.com - \ No newline at end of file diff --git a/.github/workflows/frontend.yml b/.github/workflows/frontend.yml index ba77050f..096ee952 100644 --- a/.github/workflows/frontend.yml +++ b/.github/workflows/frontend.yml @@ -9,10 +9,10 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Install pnpm - run: npm install -g pnpm + run: npm install -g pnpm working-directory: ./frontend - name: Install @@ -20,7 +20,6 @@ jobs: id: install working-directory: ./frontend - - name: Run ESLint run: pnpm run lint working-directory: ./frontend @@ -30,10 +29,10 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Install pnpm - run: npm install -g pnpm + run: npm install -g pnpm working-directory: ./frontend - name: Install @@ -43,5 +42,3 @@ jobs: - name: Test run: echo "pnpm run test should be here" working-directory: ./frontend - - \ No newline at end of file diff --git a/.github/workflows/generate-directory-tree.yml b/.github/workflows/generate-directory-tree.yml index c17ee9c3..7c21b28a 100644 --- a/.github/workflows/generate-directory-tree.yml +++ b/.github/workflows/generate-directory-tree.yml @@ -10,7 +10,7 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Generate File Tree run: | diff --git a/.github/workflows/node.js.yml b/.github/workflows/node.js.yml index 5d010c89..c166b38c 100644 --- a/.github/workflows/node.js.yml +++ b/.github/workflows/node.js.yml @@ -9,13 +9,13 @@ on: - "frontend/**" pull_request: paths: - - "frontend/**" + - "frontend/**" jobs: build: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Install Node.js uses: actions/setup-node@v3 @@ -50,5 +50,5 @@ jobs: - name: Run depcheck run: npx depcheck --ignore-bin-package working-directory: ./frontend - + # future: add yarn build once build errors are resolved diff --git a/.github/workflows/push-django-ecs.yml b/.github/workflows/push-django-ecs.yml index c5a6752b..08c3db64 100644 --- a/.github/workflows/push-django-ecs.yml +++ b/.github/workflows/push-django-ecs.yml @@ -51,7 +51,7 @@ jobs: run: echo running on branch ${GITHUB_REF##*/} - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Configure AWS credentials uses: aws-actions/configure-aws-credentials@v1 diff --git a/.github/workflows/python-package-poetry.yml b/.github/workflows/python-package-poetry.yml index 00b4577b..2d066bc8 100644 --- a/.github/workflows/python-package-poetry.yml +++ b/.github/workflows/python-package-poetry.yml @@ -18,7 +18,7 @@ jobs: # check-out repo and set-up python #---------------------------------------------- - name: Check out repository - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Set up python id: setup-python diff --git a/.github/workflows/python-static-checker.yml b/.github/workflows/python-static-checker.yml index 609ad7f0..6b31a095 100644 --- a/.github/workflows/python-static-checker.yml +++ b/.github/workflows/python-static-checker.yml @@ -5,9 +5,9 @@ jobs: name: pyright runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - uses: jordemort/action-pyright@v1 with: github_token: ${{ secrets.GITHUB_TOKEN }} # You need this reporter: github-pr-review # Change reporter. - lib: true \ No newline at end of file + lib: true diff --git a/.github/workflows/terraform-validate.yml b/.github/workflows/terraform-validate.yml index 6ef18cb5..e575a415 100644 --- a/.github/workflows/terraform-validate.yml +++ b/.github/workflows/terraform-validate.yml @@ -36,7 +36,7 @@ jobs: steps: # Checkout the repository to the GitHub Actions runner - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 # Install the latest version of Terraform CLI and configure the Terraform CLI configuration file with a Terraform Cloud user API token - name: Setup Terraform diff --git a/.github/workflows/training-container.yml b/.github/workflows/training-container.yml index 3bc2f1a4..dd536ec8 100644 --- a/.github/workflows/training-container.yml +++ b/.github/workflows/training-container.yml @@ -26,24 +26,25 @@ name: ECS Training Container Deployment - # Only trigger when user clicks "run workflow" on: workflow_dispatch: env: - AWS_REGION: "us-east-1" # set this to your preferred AWS region, e.g. us-west-1 - ECR_REPOSITORY: "dlp-backend-image" # set this to your Amazon ECR repository name - ECS_SERVICE: "BackendService" # set this to your Amazon ECS service name - ECS_CLUSTER: "BackendCluster" # set this to your Amazon ECS cluster name - ECS_TASK_DEFINITION: ".aws/training-task-definition.json" # set this to the path to your Amazon ECS task definition - # file, e.g. .aws/task-definition.json - CONTAINER_NAME: "backend" # set this to the name of the container in the - # containerDefinitions section of your task definition + AWS_REGION: "us-east-1" # set this to your preferred AWS region, e.g. us-west-1 + ECR_REPOSITORY: "dlp-backend-image" # set this to your Amazon ECR repository name + ECS_SERVICE: "BackendService" # set this to your Amazon ECS service name + ECS_CLUSTER: "BackendCluster" # set this to your Amazon ECS cluster name + ECS_TASK_DEFINITION: + ".aws/training-task-definition.json" # set this to the path to your Amazon ECS task definition + # file, e.g. .aws/task-definition.json + CONTAINER_NAME: + "backend" # set this to the name of the container in the + # containerDefinitions section of your task definition permissions: - contents: read - actions: write + contents: read + actions: write jobs: deploy: @@ -51,48 +52,48 @@ jobs: runs-on: ubuntu-latest environment: production steps: - - name: Get current branch - run: echo running on branch ${GITHUB_REF##*/} - - - name: Checkout - uses: actions/checkout@v3 + - name: Get current branch + run: echo running on branch ${GITHUB_REF##*/} + + - name: Checkout + uses: actions/checkout@v4 + + - name: Configure AWS credentials + uses: aws-actions/configure-aws-credentials@v1 + with: + aws-access-key-id: ${{ secrets.AWS_DEPLOY_ACCESS_KEY_ID }} + aws-secret-access-key: ${{ secrets.AWS_DEPLOY_SECRET_ACCESS_KEY }} + aws-region: ${{ env.AWS_REGION }} - - name: Configure AWS credentials - uses: aws-actions/configure-aws-credentials@v1 - with: - aws-access-key-id: ${{ secrets.AWS_DEPLOY_ACCESS_KEY_ID }} - aws-secret-access-key: ${{ secrets.AWS_DEPLOY_SECRET_ACCESS_KEY }} - aws-region: ${{ env.AWS_REGION }} + - name: Login to Amazon ECR + id: login-ecr + uses: aws-actions/amazon-ecr-login@v1 - - name: Login to Amazon ECR - id: login-ecr - uses: aws-actions/amazon-ecr-login@v1 + - name: Build, tag, and push image to Amazon ECR + id: build-image + env: + ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }} + IMAGE_TAG: ${{ github.sha }} + run: | + # Build a docker container and + # push it to ECR so that it can + # be deployed to ECS. + docker build -t $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG training -f training/Dockerfile.prod + docker push $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG + echo "image=$ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG" >> $GITHUB_OUTPUT - - name: Build, tag, and push image to Amazon ECR - id: build-image - env: - ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }} - IMAGE_TAG: ${{ github.sha }} - run: | - # Build a docker container and - # push it to ECR so that it can - # be deployed to ECS. - docker build -t $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG training -f training/Dockerfile.prod - docker push $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG - echo "image=$ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG" >> $GITHUB_OUTPUT + - name: Fill in the new image ID in the Amazon ECS task definition + id: task-def + uses: aws-actions/amazon-ecs-render-task-definition@v1 + with: + task-definition: ${{ env.ECS_TASK_DEFINITION }} + container-name: ${{ env.CONTAINER_NAME }} + image: ${{ steps.build-image.outputs.image }} - - name: Fill in the new image ID in the Amazon ECS task definition - id: task-def - uses: aws-actions/amazon-ecs-render-task-definition@v1 - with: - task-definition: ${{ env.ECS_TASK_DEFINITION }} - container-name: ${{ env.CONTAINER_NAME }} - image: ${{ steps.build-image.outputs.image }} - - - name: Deploy Amazon ECS task definition - uses: aws-actions/amazon-ecs-deploy-task-definition@v1 - with: - task-definition: ${{ steps.task-def.outputs.task-definition }} - service: ${{ env.ECS_SERVICE }} - cluster: ${{ env.ECS_CLUSTER }} - wait-for-service-stability: true + - name: Deploy Amazon ECS task definition + uses: aws-actions/amazon-ecs-deploy-task-definition@v1 + with: + task-definition: ${{ steps.task-def.outputs.task-definition }} + service: ${{ env.ECS_SERVICE }} + cluster: ${{ env.ECS_CLUSTER }} + wait-for-service-stability: true diff --git a/backend/poetry.lock b/backend/poetry.lock index 01143a23..744a5eec 100644 --- a/backend/poetry.lock +++ b/backend/poetry.lock @@ -853,43 +853,43 @@ test-no-images = ["pytest", "pytest-cov", "wurlitzer"] [[package]] name = "cryptography" -version = "42.0.0" +version = "42.0.2" description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." optional = false python-versions = ">=3.7" files = [ - {file = "cryptography-42.0.0-cp37-abi3-macosx_10_12_universal2.whl", hash = "sha256:c640b0ef54138fde761ec99a6c7dc4ce05e80420262c20fa239e694ca371d434"}, - {file = "cryptography-42.0.0-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:678cfa0d1e72ef41d48993a7be75a76b0725d29b820ff3cfd606a5b2b33fda01"}, - {file = "cryptography-42.0.0-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:146e971e92a6dd042214b537a726c9750496128453146ab0ee8971a0299dc9bd"}, - {file = "cryptography-42.0.0-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:87086eae86a700307b544625e3ba11cc600c3c0ef8ab97b0fda0705d6db3d4e3"}, - {file = "cryptography-42.0.0-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:0a68bfcf57a6887818307600c3c0ebc3f62fbb6ccad2240aa21887cda1f8df1b"}, - {file = "cryptography-42.0.0-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:5a217bca51f3b91971400890905a9323ad805838ca3fa1e202a01844f485ee87"}, - {file = "cryptography-42.0.0-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:ca20550bb590db16223eb9ccc5852335b48b8f597e2f6f0878bbfd9e7314eb17"}, - {file = "cryptography-42.0.0-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:33588310b5c886dfb87dba5f013b8d27df7ffd31dc753775342a1e5ab139e59d"}, - {file = "cryptography-42.0.0-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:9515ea7f596c8092fdc9902627e51b23a75daa2c7815ed5aa8cf4f07469212ec"}, - {file = "cryptography-42.0.0-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:35cf6ed4c38f054478a9df14f03c1169bb14bd98f0b1705751079b25e1cb58bc"}, - {file = "cryptography-42.0.0-cp37-abi3-win32.whl", hash = "sha256:8814722cffcfd1fbd91edd9f3451b88a8f26a5fd41b28c1c9193949d1c689dc4"}, - {file = "cryptography-42.0.0-cp37-abi3-win_amd64.whl", hash = "sha256:a2a8d873667e4fd2f34aedab02ba500b824692c6542e017075a2efc38f60a4c0"}, - {file = "cryptography-42.0.0-cp39-abi3-macosx_10_12_universal2.whl", hash = "sha256:8fedec73d590fd30c4e3f0d0f4bc961aeca8390c72f3eaa1a0874d180e868ddf"}, - {file = "cryptography-42.0.0-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:be41b0c7366e5549265adf2145135dca107718fa44b6e418dc7499cfff6b4689"}, - {file = "cryptography-42.0.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ca482ea80626048975360c8e62be3ceb0f11803180b73163acd24bf014133a0"}, - {file = "cryptography-42.0.0-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:c58115384bdcfe9c7f644c72f10f6f42bed7cf59f7b52fe1bf7ae0a622b3a139"}, - {file = "cryptography-42.0.0-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:56ce0c106d5c3fec1038c3cca3d55ac320a5be1b44bf15116732d0bc716979a2"}, - {file = "cryptography-42.0.0-cp39-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:324721d93b998cb7367f1e6897370644751e5580ff9b370c0a50dc60a2003513"}, - {file = "cryptography-42.0.0-cp39-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:d97aae66b7de41cdf5b12087b5509e4e9805ed6f562406dfcf60e8481a9a28f8"}, - {file = "cryptography-42.0.0-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:85f759ed59ffd1d0baad296e72780aa62ff8a71f94dc1ab340386a1207d0ea81"}, - {file = "cryptography-42.0.0-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:206aaf42e031b93f86ad60f9f5d9da1b09164f25488238ac1dc488334eb5e221"}, - {file = "cryptography-42.0.0-cp39-abi3-win32.whl", hash = "sha256:74f18a4c8ca04134d2052a140322002fef535c99cdbc2a6afc18a8024d5c9d5b"}, - {file = "cryptography-42.0.0-cp39-abi3-win_amd64.whl", hash = "sha256:14e4b909373bc5bf1095311fa0f7fcabf2d1a160ca13f1e9e467be1ac4cbdf94"}, - {file = "cryptography-42.0.0-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:3005166a39b70c8b94455fdbe78d87a444da31ff70de3331cdec2c568cf25b7e"}, - {file = "cryptography-42.0.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:be14b31eb3a293fc6e6aa2807c8a3224c71426f7c4e3639ccf1a2f3ffd6df8c3"}, - {file = "cryptography-42.0.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:bd7cf7a8d9f34cc67220f1195884151426ce616fdc8285df9054bfa10135925f"}, - {file = "cryptography-42.0.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:c310767268d88803b653fffe6d6f2f17bb9d49ffceb8d70aed50ad45ea49ab08"}, - {file = "cryptography-42.0.0-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:bdce70e562c69bb089523e75ef1d9625b7417c6297a76ac27b1b8b1eb51b7d0f"}, - {file = "cryptography-42.0.0-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:e9326ca78111e4c645f7e49cbce4ed2f3f85e17b61a563328c85a5208cf34440"}, - {file = "cryptography-42.0.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:69fd009a325cad6fbfd5b04c711a4da563c6c4854fc4c9544bff3088387c77c0"}, - {file = "cryptography-42.0.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:988b738f56c665366b1e4bfd9045c3efae89ee366ca3839cd5af53eaa1401bce"}, - {file = "cryptography-42.0.0.tar.gz", hash = "sha256:6cf9b76d6e93c62114bd19485e5cb003115c134cf9ce91f8ac924c44f8c8c3f4"}, + {file = "cryptography-42.0.2-cp37-abi3-macosx_10_12_universal2.whl", hash = "sha256:701171f825dcab90969596ce2af253143b93b08f1a716d4b2a9d2db5084ef7be"}, + {file = "cryptography-42.0.2-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:61321672b3ac7aade25c40449ccedbc6db72c7f5f0fdf34def5e2f8b51ca530d"}, + {file = "cryptography-42.0.2-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ea2c3ffb662fec8bbbfce5602e2c159ff097a4631d96235fcf0fb00e59e3ece4"}, + {file = "cryptography-42.0.2-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b15c678f27d66d247132cbf13df2f75255627bcc9b6a570f7d2fd08e8c081d2"}, + {file = "cryptography-42.0.2-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:8e88bb9eafbf6a4014d55fb222e7360eef53e613215085e65a13290577394529"}, + {file = "cryptography-42.0.2-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:a047682d324ba56e61b7ea7c7299d51e61fd3bca7dad2ccc39b72bd0118d60a1"}, + {file = "cryptography-42.0.2-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:36d4b7c4be6411f58f60d9ce555a73df8406d484ba12a63549c88bd64f7967f1"}, + {file = "cryptography-42.0.2-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:a00aee5d1b6c20620161984f8ab2ab69134466c51f58c052c11b076715e72929"}, + {file = "cryptography-42.0.2-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:b97fe7d7991c25e6a31e5d5e795986b18fbbb3107b873d5f3ae6dc9a103278e9"}, + {file = "cryptography-42.0.2-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:5fa82a26f92871eca593b53359c12ad7949772462f887c35edaf36f87953c0e2"}, + {file = "cryptography-42.0.2-cp37-abi3-win32.whl", hash = "sha256:4b063d3413f853e056161eb0c7724822a9740ad3caa24b8424d776cebf98e7ee"}, + {file = "cryptography-42.0.2-cp37-abi3-win_amd64.whl", hash = "sha256:841ec8af7a8491ac76ec5a9522226e287187a3107e12b7d686ad354bb78facee"}, + {file = "cryptography-42.0.2-cp39-abi3-macosx_10_12_universal2.whl", hash = "sha256:55d1580e2d7e17f45d19d3b12098e352f3a37fe86d380bf45846ef257054b242"}, + {file = "cryptography-42.0.2-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:28cb2c41f131a5758d6ba6a0504150d644054fd9f3203a1e8e8d7ac3aea7f73a"}, + {file = "cryptography-42.0.2-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b9097a208875fc7bbeb1286d0125d90bdfed961f61f214d3f5be62cd4ed8a446"}, + {file = "cryptography-42.0.2-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:44c95c0e96b3cb628e8452ec060413a49002a247b2b9938989e23a2c8291fc90"}, + {file = "cryptography-42.0.2-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:2f9f14185962e6a04ab32d1abe34eae8a9001569ee4edb64d2304bf0d65c53f3"}, + {file = "cryptography-42.0.2-cp39-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:09a77e5b2e8ca732a19a90c5bca2d124621a1edb5438c5daa2d2738bfeb02589"}, + {file = "cryptography-42.0.2-cp39-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:ad28cff53f60d99a928dfcf1e861e0b2ceb2bc1f08a074fdd601b314e1cc9e0a"}, + {file = "cryptography-42.0.2-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:130c0f77022b2b9c99d8cebcdd834d81705f61c68e91ddd614ce74c657f8b3ea"}, + {file = "cryptography-42.0.2-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:fa3dec4ba8fb6e662770b74f62f1a0c7d4e37e25b58b2bf2c1be4c95372b4a33"}, + {file = "cryptography-42.0.2-cp39-abi3-win32.whl", hash = "sha256:3dbd37e14ce795b4af61b89b037d4bc157f2cb23e676fa16932185a04dfbf635"}, + {file = "cryptography-42.0.2-cp39-abi3-win_amd64.whl", hash = "sha256:8a06641fb07d4e8f6c7dda4fc3f8871d327803ab6542e33831c7ccfdcb4d0ad6"}, + {file = "cryptography-42.0.2-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:087887e55e0b9c8724cf05361357875adb5c20dec27e5816b653492980d20380"}, + {file = "cryptography-42.0.2-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:a7ef8dd0bf2e1d0a27042b231a3baac6883cdd5557036f5e8df7139255feaac6"}, + {file = "cryptography-42.0.2-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:4383b47f45b14459cab66048d384614019965ba6c1a1a141f11b5a551cace1b2"}, + {file = "cryptography-42.0.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:fbeb725c9dc799a574518109336acccaf1303c30d45c075c665c0793c2f79a7f"}, + {file = "cryptography-42.0.2-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:320948ab49883557a256eab46149df79435a22d2fefd6a66fe6946f1b9d9d008"}, + {file = "cryptography-42.0.2-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:5ef9bc3d046ce83c4bbf4c25e1e0547b9c441c01d30922d812e887dc5f125c12"}, + {file = "cryptography-42.0.2-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:52ed9ebf8ac602385126c9a2fe951db36f2cb0c2538d22971487f89d0de4065a"}, + {file = "cryptography-42.0.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:141e2aa5ba100d3788c0ad7919b288f89d1fe015878b9659b307c9ef867d3a65"}, + {file = "cryptography-42.0.2.tar.gz", hash = "sha256:e0ec52ba3c7f1b7d813cd52649a5b3ef1fc0d433219dc8c93827c57eab6cf888"}, ] [package.dependencies] diff --git a/dlp-cli b/dlp-cli index fb1fc52f..b49009ac 160000 --- a/dlp-cli +++ b/dlp-cli @@ -1 +1 @@ -Subproject commit fb1fc52fe13d9ba26fc2e9a8f123d84b83db9785 +Subproject commit b49009ac04a20a193e07024b70537d508d7d182d