From 89cccbfbf3407a6970e5bfdbfb92b689559654df Mon Sep 17 00:00:00 2001 From: Koby Meir Date: Wed, 27 Nov 2024 16:40:23 +0200 Subject: [PATCH] build content docs - in gitlab (#1619) * build content docs - https://jira-dc.paloaltonetworks.com/browse/CIAC-7077 --- .circleci/config.yml | 182 -- .github/workflows/forked-pr-deploy.yml | 72 - .gitignore | 5 +- .gitlab/ci/.gitlab-ci.yml | 7 + .gitlab/helper_functions.sh | 82 + .hooks/bootstrap | 114 ++ .pre-commit-config.yaml | 67 + content-repo/create-docs.sh | 32 +- content-repo/download_site_build.py | 89 - content-repo/download_site_build_test.py | 37 - content-repo/gendocs.py | 4 +- content-repo/post_github_comment.py | 43 +- content-repo/post_github_comment_test.py | 6 - .../test_data/circleci-forked-build.json | 430 ----- .../test_data/circleci-non-forked-build.json | 434 ----- .../test_data/circleci-non-pr-build.json | 431 ----- .../test_data/github-status-event.json | 247 --- poetry.lock | 1458 +++++++++++++++++ poetry.toml | 2 + pyproject.toml | 127 ++ 20 files changed, 1897 insertions(+), 1972 deletions(-) delete mode 100644 .circleci/config.yml delete mode 100644 .github/workflows/forked-pr-deploy.yml create mode 100644 .gitlab/ci/.gitlab-ci.yml create mode 100644 .gitlab/helper_functions.sh create mode 100755 .hooks/bootstrap create mode 100644 .pre-commit-config.yaml delete mode 100755 content-repo/download_site_build.py delete mode 100644 content-repo/download_site_build_test.py delete mode 100644 content-repo/test_data/circleci-forked-build.json delete mode 100644 content-repo/test_data/circleci-non-forked-build.json delete mode 100644 content-repo/test_data/circleci-non-pr-build.json delete mode 100644 content-repo/test_data/github-status-event.json create mode 100644 poetry.lock create mode 100644 poetry.toml create mode 100644 pyproject.toml diff --git a/.circleci/config.yml b/.circleci/config.yml deleted file mode 100644 index 423e5553f..000000000 --- a/.circleci/config.yml +++ /dev/null @@ -1,182 +0,0 @@ -### ============================================================= -### This configuration file is used by CircleCI build server -### https://circleci.com/docs/config-sample -### ============================================================= -version: 2.1 -jobs: - build: - machine: - image: default - resource_class: xlarge - - parameters: - slack_notify: - description: Indicates whether to send a slack notification or not (on daily job we send notification) - type: boolean - default: false - - steps: - - checkout - - run: - name: Create Date Weekly File - command: | - date +%Y-%W-v4 > date-week.txt - echo "Date week: $(cat date-week.txt)" - - restore_cache: - key: npm-cache-v5-{{ checksum "package-lock.json" }} - - restore_cache: - key: node-cache-v5-{{ checksum "date-week.txt" }} - - run: - name: Setup Node - command: | - echo '[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"' >> $BASH_ENV - source $BASH_ENV - nvm install `cat .nvmrc` - - run: - name: Setup Python - command: | - pyenv install 3.9.1 - pyenv versions - pyenv global 3.9.1 - pip3 install pipenv==2021.5.29 - pipenv install - - run: - name: NPM Install - command: | - nvm use - node --version - npm --version - npm ci - - run: - name: NPM Build content-repo docs - command: | - nvm use - npm run reference-docs - - run: - name: NPM Build - no_output_timeout: 80m - environment: - ALGOLIA_INDEX: demisto - command: | - nvm use - npm run heapstats - npm run build-docusaurus - echo "Build is done. Create tar of the build dir" - tar czf build-site.tar.gz build - - store_artifacts: - path: build-site.tar.gz - - when: - condition: - equal: [ master, << pipeline.git.branch >> ] - steps: - - save_cache: - key: npm-cache-v5-{{ checksum "package-lock.json" }} - paths: - - ~/.npm - - save_cache: - key: node-cache-v5-{{ checksum "date-week.txt" }} - paths: - - node_modules/.cache - - persist_to_workspace: - # Must be an absolute path, or relative path from working_directory. This is a directory on the container which is - # taken to be the root directory of the workspace. - root: /home/circleci/project - # Must be relative path from root - paths: - - build - - run: - name: Notify Slack - when: always - command: | - if [ "<>" = "true" ]; then - pipenv run python ./build_utils/slack_notifier.py -s "$SLACK_TOKEN" -u "$CIRCLE_BUILD_URL" -b "$CIRCLE_BUILD_NUM" -c "$CIRCLECI_TOKEN" -sn "Build" - fi - - deploy: - docker: - - image: circleci/python:3.9.1-buster-node - resource_class: small - parameters: - post_comment: - description: Indicates if to post a comment or not (on daily job we skip posting) - type: boolean - default: true - slack_notify: - description: Indicates whether to send a slack notification or not (on daily job we send notification) - type: boolean - default: false - steps: - - checkout - - attach_workspace: - at: /home/circleci/project - - run: - name: Setup Python - command: | - pipenv install - - run: - name: Setup Firebase - command: curl -sL firebase.tools | sed "s/latest/v12.7.0/" | bash - - run: - name: Deploy to Firebase - no_output_timeout: 30m - command: | - echo $FIREBASE_JSON_KEY > "$HOME"/gcloud.json - export PATH="$PATH:`pwd`/node_modules/.bin" - export GOOGLE_APPLICATION_CREDENTIALS="$HOME"/gcloud.json - - if [ "$CIRCLE_BRANCH" = "master" ]; then - echo "Deploying to prod as CIRCLE_BRANCH is equal to master!" - firebase deploy --only hosting > deploy-info-firebase.txt - else - # Get the PR number from the CIRCLE_PULL_REQUEST env variable which is in the form of: - # https://github.com/demisto/content-docs/pull/335 - firebase hosting:channel:deploy "pull-request-${CIRCLE_PULL_REQUEST##*/}" --only xsoar.pan.dev > deploy-info-firebase.txt - cat deploy-info-firebase.txt - fi - - - when: - condition: <> - steps: - - run: - name: Post Comment Firebase - command: pipenv run ./content-repo/post_github_comment.py deploy-info-firebase.txt - - - run: - name: Notify Slack - when: always - command: | - if [ "<>" = "true" ]; then - pipenv run python ./build_utils/slack_notifier.py -s "$SLACK_TOKEN" -u "$CIRCLE_BUILD_URL" -b "$CIRCLE_BUILD_NUM" -c "$CIRCLECI_TOKEN" -sn "Deploy" - fi - -workflows: - build_and_deploy: - jobs: - - build - - deploy: - requires: - - build - filters: - branches: - # only from non-fork - only: /^(?!pull\/).*$/ - - daily: - triggers: - - schedule: - # should trigger every day at 4:00 UTC (4 hours after 12 AM upload-flow run) - cron: "0 4 * * *" - filters: - branches: - only: - - master - jobs: - - build: - name: nightly build - slack_notify: true - - deploy: - name: nightly deploy - post_comment: false - slack_notify: true - requires: - - nightly build diff --git a/.github/workflows/forked-pr-deploy.yml b/.github/workflows/forked-pr-deploy.yml deleted file mode 100644 index 3360e24ab..000000000 --- a/.github/workflows/forked-pr-deploy.yml +++ /dev/null @@ -1,72 +0,0 @@ -name: Deploy for Forked PR -on: status - -jobs: - check: - runs-on: ubuntu-latest - timeout-minutes: 30 - steps: - - name: Dump Github context - env: - GITHUB_CONTEXT: ${{ toJson(github) }} - run: echo "$GITHUB_CONTEXT" - - name: Checkout - if: "endsWith(github.event.context, 'ci/circleci: build') && github.event.state == 'success'" - uses: actions/checkout@v2 - - name: Setup Python - if: "endsWith(github.event.context, 'ci/circleci: build') && github.event.state == 'success'" - uses: actions/setup-python@v1 - with: - python-version: '3.9' - - name: Download Build - if: "endsWith(github.event.context, 'ci/circleci: build') && github.event.state == 'success'" - id: build_download - run: | - echo "==== $(date): Starting pipenv setup... ====" - pip install pipenv - pipenv install - echo "==== $(date): Download build site... ====" - pipenv run ./content-repo/download_site_build.py -e "$GITHUB_EVENT_PATH" - - name: Setup Node - if: "steps.build_download.outputs.forked_pr > 0" - uses: actions/setup-node@v1 - with: - node-version: '16.x' -# - name: Deploy Netlify Build -# if: "steps.build_download.outputs.forked_pr > 0" -# env: -# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} -# FORKED_PR: ${{ steps.build_download.outputs.forked_pr }} -# NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }} -# NETLIFY_SITE_ID: ${{ secrets.NETLIFY_SITE_ID }} -# run: | -# echo "==== $(date): extract build zip... ====" -# tar xzf build-site.tar.gz -# echo "==== $(date): Starting Netlify install... ====" -# npm install -g netlify-cli -# echo "==== $(date): Netlify deploy... ====" -# netlify deploy -m "CircleCI forked pr build: $FORKED_PR" -d build --alias=pull-request-$FORKED_PR --json > deploy-info.json -# cat deploy-info.json -# echo "==== $(date): Posting comment to PR ... ====" -# PR_NUM=$FORKED_PR pipenv run ./content-repo/post_github_comment.py deploy-info.json - - name: Deploy Firebase Build - if: "steps.build_download.outputs.forked_pr > 0" - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - FORKED_PR: ${{ steps.build_download.outputs.forked_pr }} - FIREBASE_JSON_KEY: ${{ secrets.FIREBASE_JSON_KEY }} - run: | - echo "==== $(date): extract build zip... ====" - tar xzf build-site.tar.gz - echo "==== $(date): Starting Firebase install... ====" - - echo $FIREBASE_JSON_KEY > "$HOME"/gcloud.json - npm install firebase-tools@~11.0.1 - export GOOGLE_APPLICATION_CREDENTIALS="$HOME"/gcloud.json - export PATH="$PATH:`pwd`/node_modules/.bin" - - echo "==== $(date): Firebase deploy for PR: $FORKED_PR ... ====" - firebase hosting:channel:deploy "pull-request-$FORKED_PR" --only xsoar.pan.dev > deploy-info-firebase.txt - cat deploy-info-firebase.txt - echo "==== $(date): Posting comment to PR ... ====" - PR_NUM=$FORKED_PR pipenv run ./content-repo/post_github_comment.py deploy-info-firebase.txt diff --git a/.gitignore b/.gitignore index 9dafa3d2d..4805c5f52 100644 --- a/.gitignore +++ b/.gitignore @@ -43,4 +43,7 @@ static/assets/deprecated*.json /src/pages/marketplace/details /index index.zip -index.json \ No newline at end of file +index.json +/.firebase/hosting.*.cache +/firebase-debug.log +/firebase_json_key.json diff --git a/.gitlab/ci/.gitlab-ci.yml b/.gitlab/ci/.gitlab-ci.yml new file mode 100644 index 000000000..e854e2642 --- /dev/null +++ b/.gitlab/ci/.gitlab-ci.yml @@ -0,0 +1,7 @@ +variables: + CURRENT_BRANCH_NAME: infra-content-docs + +include: + - file: "/.gitlab/ci/content-docs/.gitlab-ci.yml" + ref: $INFRA_BRANCH + project: "${CI_PROJECT_NAMESPACE}/infra" diff --git a/.gitlab/helper_functions.sh b/.gitlab/helper_functions.sh new file mode 100644 index 000000000..77dd8e13d --- /dev/null +++ b/.gitlab/helper_functions.sh @@ -0,0 +1,82 @@ +#!/bin/bash + +CLEAR="\e[0m" +NC='\033[0m' +CYAN="\e[0;36m" +RED='\033[0;31m' +GREEN='\033[0;32m' +BLUE='\033[0;34m' +SECTION_START="\e[0Ksection_start:the_time:section_id\r\e[0K${CYAN}section_header${CLEAR}" +SECTION_END="\e[0Ksection_end:the_time:section_id\r\e[0K" +DATE_FMT="[%Y-%m-%dT%H:%M:%S.%3N]" + +section_start() { + local section_header section_id start + start="$SECTION_START" + if [[ "$#" -eq 1 ]]; then + section_header="$1" + section_id="$(echo "$1" | tr -c '[:alnum:]\n\r' '_')" + elif [[ "$#" -eq 2 ]]; then + if [[ "$2" =~ -{0,2}collapsed ]]; then + start="${start/section_id/section_id[collapsed=true]}" + section_header="$1" + section_id="$(echo "$1" | tr -c '[:alnum:]\n\r' '_')" + else + section_header="$2" + section_id="$1" + fi + elif [[ "$#" -eq 3 && "$3" =~ /^-{0,2}collapsed$/ ]]; then + start="${start/section_id/section_id[collapsed=true]}" + section_header="$2" + section_id="$1" + else + echo "section_start should be called with 1-3 args but it was called with $# args" + echo "acceptable usages:" + echo " 2. section_start \"\"" + echo " 4. section_start \"\" --collapse" + echo " 1. section_start \"\" \"\"" + echo " 3. section_start \"\" \"\" --collapse" + echo "where is only alphanumeric characters and underscore and" + echo "--collapse indicates that you would like those log steps to be collapsed in the job log output by default" + exit 9 + fi + start_time=$(date +%s) + start="$(echo "$start" | sed -e "s/the_time/$start_time/" -e "s/section_id/$section_id/" -e "s/section_header/$section_header/")" + echo -e "$start" + date +"${DATE_FMT} section start" +} + +section_end() { + local section_id end + date +"${DATE_FMT} section end" + end="$SECTION_END" + if [[ "$#" -eq 1 ]]; then + section_id="$(echo "$1" | tr -c '[:alnum:]\n\r' '_')" + else + echo "section_end should be called with 1 arg but it was called with $# args" + echo "acceptable usage:" + echo " 1. section_end \"\"" + echo " 2. section_start \"\"" + echo "where or is that of the section this marks the end of" + exit 9 + fi + end_time=$(date +%s) + end="$(echo "$end" | sed -e "s/the_time/$end_time/" -e "s/section_id/$section_id/")" + echo -e "$end" +} + +job-done() { + mkdir -p "${PIPELINE_JOBS_FOLDER}" + echo "creating file ${PIPELINE_JOBS_FOLDER}/${CI_JOB_NAME}.txt" + echo "done" > "${PIPELINE_JOBS_FOLDER}/${CI_JOB_NAME}.txt" + echo "finished writing to file ${PIPELINE_JOBS_FOLDER}/${CI_JOB_NAME}.txt" +} + +sleep-with-progress() { + local sleep_time=${1:-10} + local sleep_interval=${2:-1} + local sleep_message=${3:-"Sleeping... "} + local columns=${4:-$(tput cols)} + local sleep_step=$((sleep_time / sleep_interval)) + for ((i=0; i< sleep_step;i++)); do echo "${sleep_interval}";sleep "${sleep_interval}"; done | poetry run tqdm --total ${sleep_time} --unit seconds --leave --update --colour green -ncols ${columns} --desc "${sleep_message}" 1> /dev/null +} diff --git a/.hooks/bootstrap b/.hooks/bootstrap new file mode 100755 index 000000000..253aa4a52 --- /dev/null +++ b/.hooks/bootstrap @@ -0,0 +1,114 @@ +#!/usr/bin/env bash + +# +# Bootstraps a development environment. +# +# This includes: +# * install pre-commit hooks +# * setup infra dependencies with poetry + +function exit_on_error { + if [ "${1}" -ne 0 ]; then + echo "ERROR: ${2}, exiting with code ${1}" 1>&2 + exit "${1}" + fi +} + +# poetry is installed in ~/.local/bin +PATH=~/.local/bin:$PATH + +if [[ "$1" == "-h" ]] || [[ "$1" == "--help" ]]; then + cat << __EOF__ +Setup a development environment (run with no arguments): +* install pre-commit hooks (set NO_HOOKS=1 to skip) +__EOF__ + exit 0 +fi + +if [ ! "${PWD}" == "$(git rev-parse --show-toplevel)" ]; then + cat >&2 <<__EOF__ +ERROR: this script must be run at the root of the source tree +__EOF__ + exit 1 +fi + +echo "=======================" +if [ -z "${INSTALL_POETRY}" ]; then + if ! command -v poetry >/dev/null 2>&1; then + echo "ERROR: poetry is missing. Please run the following command to install poetry: + curl -sSL https://install.python-poetry.org | python3 -" 1>&2 + exit 1 + fi +else + should_install_poetry="yes" + if command -v poetry >/dev/null 2>&1; then + if [[ "$(poetry --version)" == "Poetry (version ${POETRY_VERSION})" ]]; then + echo "Poetry already installed:$(poetry --version) with correct version" + should_install_poetry="no" + else + echo "Poetry installed with a different version:$(poetry --version) required:${POETRY_VERSION}" + fi + else + echo "Poetry isn't installed" + fi + if [[ "${should_install_poetry}" == "yes" ]]; then + echo "Installing Poetry version:${POETRY_VERSION}" + curl -sSL https://install.python-poetry.org | python3 - --version "${POETRY_VERSION}" + error_code=$? + if ! command -v poetry >/dev/null 2>&1; then + exit_on_error $? "Poetry isn't installed" + fi + if [[ "$(poetry --version)" == "Poetry (version ${POETRY_VERSION})" ]]; then + echo "Poetry version ${POETRY_VERSION} installed successfully" + else + exit_on_error 1 "Poetry version $(poetry --version) doesn't match the required version: ${POETRY_VERSION}" + fi + if [ -n "${ARTIFACTS_FOLDER}" ] && [ "${error_code}" -ne 0 ]; then + cp "${PWD}"/poetry-installer-error-*.log "${ARTIFACTS_FOLDER}" + fi + exit_on_error $error_code "Failed to install Poetry version:${POETRY_VERSION}" + fi +fi + +GIT_HOOKS_DIR="${PWD}/.git/hooks" + +if [ -n "${NO_HOOKS}" ]; then + echo "Skipping hooks setup as environment variable NO_HOOKS is set" +else + if [ ! -e "${GIT_HOOKS_DIR}/pre-commit" ]; then + echo "Installing 'pre-commit' hooks" + poetry run pre-commit install + exit_on_error $? "Failed to install pre-commit hook" + else + echo "Skipping install of pre-commit hook as it already exists." + echo "If you want to re-install: 'rm ${GIT_HOOKS_DIR}/pre-commit' and then run this script again." + exit 1 + fi +fi + +if [ -n "${CI}" ]; then + echo "Detected CI environment" + echo "Checking whether poetry files are valid" + poetry check --no-interaction + exit_on_error $? "Failed to check poetry files" + echo "Installing dependencies..." + poetry install --no-interaction + exit_on_error $? "Failed to install dependencies" +else + echo "Detected local environment" + echo "Check if poetry files are valid" + poetry check + exit_on_error $? "Failed to check poetry files" + echo "Installing dependencies..." + poetry install + exit_on_error $? "Failed to install dependencies" +fi + +echo "==========================" +echo "Done setting up virtualenv with poetry" +echo "Activate the venv by running: poetry shell" +echo "Deactivate by running: deactivate" +echo "=======================" + +echo "Finished setting up the environment." +exit 0 diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 100644 index 000000000..98ac16242 --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1,67 @@ +repos: +- repo: https://github.com/charliermarsh/ruff-pre-commit + rev: v0.5.4 + hooks: + - id: ruff + args: + - --fix + exclude: CommonServerPython.py + - id: ruff-format +- repo: https://github.com/pappasam/toml-sort + rev: v0.23.1 + hooks: + - id: toml-sort-fix + exclude: poetry.lock +- repo: https://github.com/pre-commit/pre-commit-hooks + rev: v4.6.0 + hooks: + - id: check-json + - id: check-yaml + exclude: .gitlab + - id: check-ast + - id: check-merge-conflict + - id: name-tests-test + files: .+_test.py$ + - id: trailing-whitespace + - id: check-toml + - id: check-xml +- repo: https://github.com/python-poetry/poetry + rev: 1.8.3 + hooks: + - id: poetry-check + args: + - --lock + files: ^pyproject.toml$ +- repo: https://github.com/hadialqattan/pycln + rev: v2.4.0 + hooks: + - id: pycln + args: + - --all +- repo: https://github.com/pre-commit/mirrors-mypy + rev: v1.10.1 + hooks: + - id: mypy + entry: mypy + args: + - --show-error-codes + additional_dependencies: + - types-requests + - types-paramiko + - types-PyYAML + - types-setuptools + - types-ujson + - types-decorator + - types-retry + - types-pytz + - types-python-dateutil + - types-tabulate + - types-dateparser + types: [python] + # duplicate here and in pyproject.toml because https://github.com/python/mypy/issues/13916 + exclude: artifacts*|.*_test|test_.*|test_data|tests_data|.venv +- repo: https://github.com/koalaman/shellcheck-precommit + rev: v0.10.0 + hooks: + - id: shellcheck + args: ["--severity=error"] diff --git a/content-repo/create-docs.sh b/content-repo/create-docs.sh index 7001bbd17..8d7d6b883 100755 --- a/content-repo/create-docs.sh +++ b/content-repo/create-docs.sh @@ -6,7 +6,7 @@ set -e # Script will check out the Demisto content repo and then generate documentation based upon the checkout SCRIPT_DIR=$(dirname ${BASH_SOURCE}) -CURRENT_DIR=`pwd` +CURRENT_DIR=$(pwd) if [[ "${SCRIPT_DIR}" != /* ]]; then SCRIPT_DIR="${CURRENT_DIR}/${SCRIPT_DIR}" fi @@ -20,8 +20,8 @@ if [[ -n "$CONTENT_REPO_DIR" ]]; then echo "=================================" else CONTENT_GIT_DIR=${SCRIPT_DIR}/.content - if [[ -n "${CIRCLE_BRANCH}" ]]; then - CURRENT_BRANCH=${CIRCLE_BRANCH} + if [[ -n "${CI_COMMIT_REF_NAME}" ]]; then + CURRENT_BRANCH=${CI_COMMIT_REF_NAME} else CURRENT_BRANCH=$(git rev-parse --abbrev-ref HEAD) fi @@ -48,17 +48,17 @@ else echo "==== content git url: ${CONTENT_GIT_URL} branch: ${CONTENT_BRANCH} ====" if [[ -d ${CONTENT_GIT_DIR} && $(cd ${CONTENT_GIT_DIR}; git remote get-url origin) != "${CONTENT_GIT_URL}" ]]; then - echo "Deleting dir: ${CONTENT_GIT_DIR} as remote url dooesn't match ${CONTENT_GIT_URL} ..." + echo "Deleting dir: ${CONTENT_GIT_DIR} as remote url doesn't match ${CONTENT_GIT_URL} ..." rm -rf "${CONTENT_GIT_DIR}" fi if [ ! -d ${CONTENT_GIT_DIR} ]; then # Do not do "git clone --depth 1" as we need full history for the deprecated integrations data generation echo "Cloning content to dir: ${CONTENT_GIT_DIR} ..." - git clone ${CONTENT_GIT_URL} ${CONTENT_GIT_DIR} + git clone -q ${CONTENT_GIT_URL} ${CONTENT_GIT_DIR} else echo "Content dir: ${CONTENT_GIT_DIR} exists. Skipped clone." - if [ -z "${CONTENT_REPO_SKIP_PULL}"]; then + if [ -z "${CONTENT_REPO_SKIP_PULL}" ]; then echo "Doing pull..." (cd ${CONTENT_GIT_DIR}; git pull) fi @@ -75,7 +75,7 @@ else echo "Using content master to generate build" CONTENT_BRANCH=master git checkout master - # you can use an old hash to try to see if bulid passes when there is a failure. + # you can use an old hash to try to see if build passes when there is a failure. # git checkout b11f4cfe4a3bf567656ef021f3d8f1bf66bcb9f6 fi echo "Git log:" @@ -118,13 +118,13 @@ if [[ ( "$PULL_REQUEST" == "true" || -n "$CI_PULL_REQUEST" ) && "$CONTENT_BRANCH fi BUCKET_DIR="${SCRIPT_DIR}/.content-bucket" -if [[ ! -d "$BUCKET_DIR" ]]; then - echo "Copying bucket docs content to: $BUCKET_DIR" +if [[ ! -d "${BUCKET_DIR}" ]]; then + echo "Copying bucket docs content to: ${BUCKET_DIR}" mkdir "${BUCKET_DIR}" - gsutil -m cp -r gs://marketplace-dist/content/docs/Packs/ "${BUCKET_DIR}" + gsutil -q -m cp -r gs://marketplace-dist/content/docs/Packs/ "${BUCKET_DIR}" else - echo "Skipping copying bucket data as dir: $BUCKET_DIR already exists" - echo "If you want to re-copy, delete the dir: $BUCKET_DIR" + echo "Skipping copying bucket data as dir: ${BUCKET_DIR} already exists" + echo "If you want to re-copy, delete the dir: ${BUCKET_DIR}" fi TARGET_DIR=${SCRIPT_DIR}/../docs/reference @@ -152,16 +152,14 @@ sed -i -e '/from DemistoClassApiModule import */d' CommonServerPython.py # Removing the first lines from CommonServerPython.py which are a description of the script we don't need here echo "$(tail -n +6 CommonServerPython.py)" > CommonServerPython.py -echo "Installing pipenv..." -pipenv install echo "Generating docs..." -pipenv run ./gendocs.py -t "${TARGET_DIR}" -d "${CONTENT_GIT_DIR}" -b "${CURRENT_BRANCH}" +poetry run ./gendocs.py -t "${TARGET_DIR}" -d "${CONTENT_GIT_DIR}" -b "${CURRENT_BRANCH}" echo "Generating Demisto class and CommonServerPython docs..." -pipenv run ./gen_pydocs.py -t "${TARGET_DIR}" +poetry run ./gen_pydocs.py -t "${TARGET_DIR}" if [[ "$CURRENT_BRANCH" != "master" && "$CURRENT_BRANCH" != *"gen-top-contrib"* ]]; then echo "Skipping top contributors page generation, should run only on master or branch containing 'gen-top-contrib'." exit 0 else echo "Generating top contributors page..." - pipenv run python ./gen_top_contrib.py -t "${CONTRIB_TARGET_DIR}" + poetry run ./gen_top_contrib.py -t "${CONTRIB_TARGET_DIR}" fi diff --git a/content-repo/download_site_build.py b/content-repo/download_site_build.py deleted file mode 100755 index b441f5a83..000000000 --- a/content-repo/download_site_build.py +++ /dev/null @@ -1,89 +0,0 @@ -#!/usr/bin/env python3 - -# Runs as part of the Forked PR Deploy flow (see: .github/workflows/forked-pr-deploy.yml) -# Expecets to recieve the Github pull_request event file - -import json -import argparse -import requests -import os -import shutil - -VERIFY_SSL = not (os.getenv('VERIFY_SSL') and os.getenv('VERIFY_SSL').lower() in ('false', '0', 'no')) - -if not VERIFY_SSL: - requests.packages.urllib3.disable_warnings() - - -def download_file(url: str, target_path: str): - with requests.get(url, stream=True, verify=VERIFY_SSL) as r: - r.raise_for_status() - with open(target_path, 'wb') as f: - shutil.copyfileobj(r.raw, f, length=32*1024*1024) - - -def download_site_build(event_file: str, download_path: str = "build-site.tar.gz") -> int: - """Will download the site bulid if this is a forked PR bulid. - - Args: - event_file (str): event file from the workflow - - Returns: - int: PR num of the build if relevant - """ - with open(event_file, 'r') as f: - github_event = json.load(f) - target_url = github_event['target_url'] - print(f'target_url: {target_url}') - # target_url is of the form: - # https://circleci.com/gh/demisto/content-docs/142?utm_campaign=vcs-integration-link&utm_medium=referral&utm_source=github-build-li - target_url = target_url.split('?')[0] - build_num = target_url.split('/')[-1] - print(f'circleci build: {build_num}') - circle_url = f'https://circleci.com/api/v1.1/project/github/demisto/content-docs/{build_num}' - print(f'Checking circleci url: {circle_url}') - res = requests.get(circle_url, verify=VERIFY_SSL) - res.raise_for_status() - build_json = res.json() - # check that this is a pull request - if not build_json.get('pull_requests') or not build_json.get('pull_requests')[0].get('url'): - print('Not a pull request. Skipping') - return 0 - branch = build_json.get('branch') - if not branch or not branch.startswith('pull/'): - print(f'Skipping branch as it is not an external pull: {branch}') - return 0 - pr_num = branch.split('/')[1] - # get artifacts - res = requests.get(f'{circle_url}/artifacts', verify=VERIFY_SSL) - res.raise_for_status() - artifacts = res.json() - download_url = None - for art in artifacts: - if 'build-site.tar.gz' in art.get('path'): - download_url = art.get('url') - break - if not download_url: - raise ValueError(f"download url missing for artifacts: {artifacts}") - print(f'Downloading build artifact from: {download_url} (pr num: {pr_num}) to: {download_path} ...') - download_file(download_url, download_path) - return int(pr_num) - - -def main(): - parser = argparse.ArgumentParser(description='Deploy Site Build from CircleCI Forked PR Build', - formatter_class=argparse.ArgumentDefaultsHelpFormatter) - parser.add_argument("-e", "--event", help="Github event data file which triggered the workflow", required=True) - args = parser.parse_args() - pr = download_site_build(args.event) - if pr: - # priint so workflow picks up the pr - # see: https://docs.github.com/en/free-pro-team@latest/actions/reference/workflow-commands-for-github-actions#setting-an-output-parameter - print('set output for forked pr: {pr}') - print(f'::set-output name=forked_pr::{pr}') - else: - print('not outputting forked pr as no pr num found') - - -if __name__ == "__main__": - main() diff --git a/content-repo/download_site_build_test.py b/content-repo/download_site_build_test.py deleted file mode 100644 index d0f3de79e..000000000 --- a/content-repo/download_site_build_test.py +++ /dev/null @@ -1,37 +0,0 @@ -from download_site_build import download_site_build -import os -import pytest - - -BASE_DIR = os.path.dirname(os.path.abspath(__file__)) - - -@pytest.mark.parametrize("test_file", ['circleci-non-pr-build.json', 'circleci-non-forked-build.json']) -def test_download_site_build_non_forked_pr(requests_mock, test_file): - with open(f'{BASE_DIR}/test_data/{test_file}', 'r') as f: - circleci_response = f.read() - requests_mock.get('https://circleci.com/api/v1.1/project/github/demisto/content-docs/153', text=circleci_response) - res = download_site_build(f'{BASE_DIR}/test_data/github-status-event.json') - assert not res - assert requests_mock.call_count == 1 - - -def test_download_site_build_forked_pr(requests_mock, tmp_path): - dest_file = str(tmp_path / 'download.txt') - with open(f'{BASE_DIR}/test_data/circleci-forked-build.json', 'r') as f: - circleci_response = f.read() - requests_mock.get('https://circleci.com/api/v1.1/project/github/demisto/content-docs/153', text=circleci_response) - requests_mock.get('https://circleci.com/api/v1.1/project/github/demisto/content-docs/153/artifacts', text=""" -[ { - "path" : "build-site.tar.gz", - "pretty_path" : "build-site.tar.gz", - "node_index" : 0, - "url" : "https://97-225343886-gh.circle-artifacts.com/dummy-download.txt" -} ]""") - download_val = "dummy download" - requests_mock.get('/dummy-download.txt', text=download_val) - res = download_site_build(f'{BASE_DIR}/test_data/github-status-event.json', dest_file) - assert res == 345 - assert requests_mock.call_count == 3 - with open(dest_file, 'r') as f: - assert f.read() == download_val diff --git a/content-repo/gendocs.py b/content-repo/gendocs.py index a9f1db9ca..fe2876792 100755 --- a/content-repo/gendocs.py +++ b/content-repo/gendocs.py @@ -82,7 +82,7 @@ def timestamped_print(*args, **kwargs): DEPRECATED_INFO_FILE = f'{os.path.dirname(os.path.abspath(__file__))}/extra-docs/articles/deprecated_info.json' # initialize the seed according to the PR branch. Used when selecting max files. -random.seed(os.getenv('CIRCLE_BRANCH')) +random.seed(os.getenv('CIRCLE_BRANCH', os.getenv("CI_COMMIT_REF_NAME"))) MIN_RELEASE_VERSION = StrictVersion((datetime.now() + relativedelta(months=-18)).strftime('%y.%-m.0')) PACKS_INTEGRATIONS_PREFIX = 'Integrations' @@ -315,7 +315,7 @@ def process_readme_doc(target_dir: str, content_dir: str, prefix: str, with open(readme_file, 'r', encoding='utf-8') as f: content = f.read() if not content.strip(): - raise ValueError(EMPTY_FILE_MSG) + return DocInfo('', '', '', readme_file, EMPTY_FILE_MSG) if is_html_doc(content): print(f'{readme_file}: detect html file') content = gen_html_doc(content) diff --git a/content-repo/post_github_comment.py b/content-repo/post_github_comment.py index 7c53e9ba0..8db0cff8a 100755 --- a/content-repo/post_github_comment.py +++ b/content-repo/post_github_comment.py @@ -19,20 +19,16 @@ def get_post_url(): if os.getenv('PR_NUM'): pr_num = os.getenv('PR_NUM') return f'https://api.github.com/repos/demisto/content-docs/issues/{pr_num}/comments' - if os.getenv('CIRCLE_PULL_REQUEST'): - # change: https://github.com/demisto/content-docs/pull/9 - # to: https://api.github.com/repos/demisto/content-docs/issues/9/comments - post_url = os.environ['CIRCLE_PULL_REQUEST'].replace('github.com', 'api.github.com/repos').replace('pull', 'issues') + "/comments" - else: - # try to get from comment - last_comment = subprocess.check_output(["git", "log", "-1", "--pretty=%B"], text=True) - m = re.search(r"#(\d+)", last_comment, re.MULTILINE) - if not m: - print("No issue id found in last commit comment. Ignoring: \n------\n{}\n-------".format(last_comment)) - return - issue_id = m.group(1) - print("Issue id found from last commit comment: " + issue_id) - post_url = "https://api.github.com/repos/demisto/content-docs/issues/{}/comments".format(issue_id) + + # try to get from comment + last_comment = subprocess.check_output(["git", "log", "-1", "--pretty=%B"], text=True) + m = re.search(r"#(\d+)", last_comment, re.MULTILINE) + if not m: + print("No issue id found in last commit comment. Ignoring: \n------\n{}\n-------".format(last_comment)) + return + issue_id = m.group(1) + print("Issue id found from last commit comment: " + issue_id) + post_url = "https://api.github.com/repos/demisto/content-docs/issues/{}/comments".format(issue_id) return post_url @@ -57,13 +53,13 @@ def get_link_for_doc_file(base_url: str, file: str): name = yml_data.get('title') or file relative_path = os.path.relpath(file, ROOT_DIR) path = f'{base_url}/{os.path.dirname(relative_path)}/{yml_data["id"]}' - return (name, path) + return name, path def get_link_for_ref_file(base_url: str, file: str): if 'releases' in file: name = os.path.splitext(os.path.basename(file))[0] - return (f'Content Release {name}', f'{base_url}/docs/reference/releases/{name}') + return f'Content Release {name}', f'{base_url}/docs/reference/releases/{name}' # articles/integrations yml_data = get_front_matter_data(file) name = yml_data.get('title') or file @@ -73,7 +69,7 @@ def get_link_for_ref_file(base_url: str, file: str): return (name, path) -def get_modified_links(base_url: str): +def get_modified_links(base_url: str) -> List[Tuple[str, str]]: links: List[Tuple[str, str]] = [] for f in get_modified_files(): try: @@ -106,13 +102,13 @@ def post_comment(deploy_info_file: str): "Congratulations! The automatic build has completed successfully.\n" \ f"A preview site is available at: {deploy_url}\n\n---\n" \ "**Important:** Make sure to inspect your changes at the preview site." - if os.getenv('CIRCLE_BRANCH') == 'master': + if os.getenv('CIRCLE_BRANCH', os.getenv("CI_COMMIT_REF_NAME")) == 'master': message = "# Production Site Updated\n\n" \ "Congratulations! The automatic build has completed successfully.\n" \ "The production site of our docs has been updated. You can view it at: https://xsoar.pan.dev" else: - # add detcted changes + # add detected changes try: links = get_modified_links(deploy_url) if links: @@ -132,11 +128,10 @@ def post_comment(deploy_info_file: str): def main(): desc = """Post a message to github about the deployed site. Relies on environment variables: GITHUB_TOKEN: api key of user to use for posting -PR_NUM: if set will use this as the pull request number. Otherwise will move on to CIRCLE_PULL_REQUEST -CIRCLE_PULL_REQUEST: pull request url to use to get the pull id. Such as: https://github.com/demisto/content-docs/pull/9 -if CIRCLE_PULL_REQUEST will try to get issue id from last commit comment (case of merge into master) -CIRCLE_BRANCH: if set to master treats as a production deployment -SKIP_SSL_VERIFY: if set will skip ssl verification (used for testing behind GP) +PR_NUM: if set will use this as the pull request number. Otherwise will try to get issue id from last +commit comment (case of merge into master) +CI_COMMIT_REF_NAME: if set to master treats as a production deployment. +SKIP_SSL_VERIFY: if set will skip ssl verification (used for testing behind GP). """ parser = argparse.ArgumentParser(description=desc, formatter_class=argparse.RawTextHelpFormatter) diff --git a/content-repo/post_github_comment_test.py b/content-repo/post_github_comment_test.py index 3b8e16591..0ba59c3ce 100644 --- a/content-repo/post_github_comment_test.py +++ b/content-repo/post_github_comment_test.py @@ -1,11 +1,5 @@ from post_github_comment import get_post_url, get_link_for_doc_file, ROOT_DIR, get_link_for_ref_file, get_modified_files from pytest_mock import MockerFixture -import os - - -def test_get_post_url_env(mocker: MockerFixture): - mocker.patch.dict(os.environ, {'CIRCLE_PULL_REQUEST': 'https://github.com/demisto/content-docs/pull/9'}) - assert get_post_url() == 'https://api.github.com/repos/demisto/content-docs/issues/9/comments' def test_get_post_url_comment(mocker: MockerFixture): diff --git a/content-repo/test_data/circleci-forked-build.json b/content-repo/test_data/circleci-forked-build.json deleted file mode 100644 index 1be84e5c1..000000000 --- a/content-repo/test_data/circleci-forked-build.json +++ /dev/null @@ -1,430 +0,0 @@ -{ - "compare" : null, - "previous_successful_build" : { - "build_num" : 96, - "status" : "success", - "build_time_millis" : 355456 - }, - "build_parameters" : { - "CIRCLE_JOB" : "build" - }, - "oss" : true, - "all_commit_details_truncated" : false, - "committer_date" : "2020-10-14T21:57:24.000Z", - "steps" : [ { - "name" : "Spin up environment", - "actions" : [ { - "truncated" : false, - "index" : 0, - "parallel" : true, - "failed" : null, - "infrastructure_fail" : null, - "name" : "Spin up environment", - "bash_command" : null, - "status" : "success", - "timedout" : null, - "continue" : null, - "end_time" : "2020-10-14T21:58:20.932Z", - "type" : "test", - "allocation_id" : "5f87746f08a150372fa9713c-0-build/62180037", - "output_url" : "https://circle-production-action-output.s3.amazonaws.com/e31f4f48e6e054ef374778f5-5de6587c4394b520d939b8e1-0-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20201016T210701Z&X-Amz-SignedHeaders=host&X-Amz-Expires=432000&X-Amz-Credential=AKIAIJNI6FA5RIAFFQ7Q%2F20201016%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Signature=08940c0d57642b5e3290fe4cc7e2dd875d617ed4cc9b4fda584de29fbd05d160", - "start_time" : "2020-10-14T21:58:11.382Z", - "background" : false, - "exit_code" : null, - "insignificant" : false, - "canceled" : null, - "step" : 0, - "run_time_millis" : 9550, - "has_output" : true - } ] - }, { - "name" : "Preparing environment variables", - "actions" : [ { - "truncated" : false, - "index" : 0, - "parallel" : true, - "failed" : null, - "infrastructure_fail" : null, - "name" : "Preparing environment variables", - "bash_command" : null, - "status" : "success", - "timedout" : null, - "continue" : null, - "end_time" : "2020-10-14T21:58:26.076Z", - "type" : "test", - "allocation_id" : "5f87746f08a150372fa9713c-0-build/62180037", - "output_url" : "https://circle-production-action-output.s3.amazonaws.com/b12f4f48e6e054ef284778f5-5de6587c4394b520d939b8e1-99-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20201016T210701Z&X-Amz-SignedHeaders=host&X-Amz-Expires=432000&X-Amz-Credential=AKIAIJNI6FA5RIAFFQ7Q%2F20201016%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Signature=1ff86e79032132468ace9a944c45c15403bc6900c979dcaa461c67f55b6fd9b6", - "start_time" : "2020-10-14T21:58:26.010Z", - "background" : false, - "exit_code" : null, - "insignificant" : false, - "canceled" : null, - "step" : 99, - "run_time_millis" : 66, - "has_output" : true - } ] - }, { - "name" : "Checkout code", - "actions" : [ { - "truncated" : false, - "index" : 0, - "parallel" : true, - "failed" : null, - "infrastructure_fail" : null, - "name" : "Checkout code", - "bash_command" : "#!/bin/sh\nset -e\n\n# Workaround old docker images with incorrect $HOME\n# check https://github.com/docker/docker/issues/2968 for details\nif [ \"${HOME}\" = \"/\" ]\nthen\n export HOME=$(getent passwd $(id -un) | cut -d: -f6)\nfi\n\necho Using SSH Config Dir $SSH_CONFIG_DIR\n\nmkdir -p $SSH_CONFIG_DIR\n\necho 'github.com ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31/yMf+Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB+weqqUUmpaaasXVal72J+UX2B+2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi/w4yCE6gbODqnTWlg7+wC604ydGXA8VJiS5ap43JXiUFFAaQ==\nbitbucket.org ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAubiN81eDcafrgMeLzaFPsw2kNvEcqTKl/VqLat/MaB33pZy0y3rJZtnqwR2qOOvbwKZYKiEO1O6VqNEBxKvJJelCq0dTXWT5pbO2gDXC6h6QDXCaHo6pOHGPUy+YBaGQRGuSusMEASYiWunYN0vCAI8QaXnWMXNMdFP3jHAJH0eDsoiGnLPBlBp4TNm6rYI74nMzgz3B9IikW4WVK+dc8KZJZWYjAuORU3jc1c/NPskD2ASinf8v3xnfXeukU0sJ5N6m5E8VLjObPEO+mN2t/FZTMZLiFqPWc/ALSqnMnnhwrNi2rbfg/rd/IpL8Le3pSBne8+seeFVBoGqzHM9yXw==\n' >> $SSH_CONFIG_DIR/known_hosts\n\n(umask 077; touch $SSH_CONFIG_DIR/id_rsa)\nchmod 0600 $SSH_CONFIG_DIR/id_rsa\n(cat < $SSH_CONFIG_DIR/id_rsa\n$CHECKOUT_KEY\nEOF\n)\n\nexport GIT_SSH_COMMAND='ssh -i $SSH_CONFIG_DIR/id_rsa -o UserKnownHostsFile=$SSH_CONFIG_DIR/known_hosts'\n\n# use git+ssh instead of https\ngit config --global url.\"ssh://git@github.com\".insteadOf \"https://github.com\" || true\ngit config --global gc.auto 0 || true\n\nif [ -e /home/circleci/project/.git ]\nthen\n cd /home/circleci/project\n git remote set-url origin \"$CIRCLE_REPOSITORY_URL\" || true\nelse\n mkdir -p /home/circleci/project\n cd /home/circleci/project\n git clone \"$CIRCLE_REPOSITORY_URL\" .\nfi\n\nif [ -n \"$CIRCLE_TAG\" ]\nthen\n git fetch --force origin \"refs/tags/${CIRCLE_TAG}\"\nelse\n git fetch --force origin \"pull/345/head:remotes/origin/pull/345\"\nfi\n\n\nif [ -n \"$CIRCLE_TAG\" ]\nthen\n git reset --hard \"$CIRCLE_SHA1\"\n git checkout -q \"$CIRCLE_TAG\"\nelif [ -n \"$CIRCLE_BRANCH\" ]\nthen\n git reset --hard \"$CIRCLE_SHA1\"\n git checkout -q -B \"$CIRCLE_BRANCH\"\nfi\n\ngit reset --hard \"$CIRCLE_SHA1\"", - "status" : "success", - "timedout" : null, - "continue" : null, - "end_time" : "2020-10-14T21:58:29.956Z", - "type" : "test", - "allocation_id" : "5f87746f08a150372fa9713c-0-build/62180037", - "output_url" : "https://circle-production-action-output.s3.amazonaws.com/66763fff3163feb1284778f5-5de6587c4394b520d939b8e1-101-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20201016T210701Z&X-Amz-SignedHeaders=host&X-Amz-Expires=432000&X-Amz-Credential=AKIAIJNI6FA5RIAFFQ7Q%2F20201016%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Signature=f0da8c2d87f7728c306c3a85ad2473497d2ca29658ab2edc27abe852ec96eaa5", - "start_time" : "2020-10-14T21:58:26.184Z", - "background" : false, - "exit_code" : null, - "insignificant" : false, - "canceled" : null, - "step" : 101, - "run_time_millis" : 3772, - "has_output" : true - } ] - }, { - "name" : "Restoring cache", - "actions" : [ { - "truncated" : false, - "index" : 0, - "parallel" : true, - "failed" : null, - "infrastructure_fail" : null, - "name" : "Restoring cache", - "bash_command" : null, - "status" : "success", - "timedout" : null, - "continue" : null, - "end_time" : "2020-10-14T21:58:30.333Z", - "type" : "test", - "allocation_id" : "5f87746f08a150372fa9713c-0-build/62180037", - "output_url" : "https://circle-production-action-output.s3.amazonaws.com/9d222104419de71e684778f5-5de6587c4394b520d939b8e1-102-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20201016T210701Z&X-Amz-SignedHeaders=host&X-Amz-Expires=432000&X-Amz-Credential=AKIAIJNI6FA5RIAFFQ7Q%2F20201016%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Signature=fed4cf3789c3a49b014e5496ce74b2a22479fe1cafac8a8a94d587560d738ea9", - "start_time" : "2020-10-14T21:58:30.032Z", - "background" : false, - "exit_code" : null, - "insignificant" : false, - "canceled" : null, - "step" : 102, - "run_time_millis" : 301, - "has_output" : true - } ] - }, { - "name" : "Setup Node", - "actions" : [ { - "truncated" : false, - "index" : 0, - "parallel" : true, - "failed" : null, - "infrastructure_fail" : null, - "name" : "Setup Node", - "bash_command" : "#!/bin/bash -eo pipefail\necho '[ -s \"$NVM_DIR/nvm.sh\" ] && \\. \"$NVM_DIR/nvm.sh\"' >> $BASH_ENV\nsource $BASH_ENV\nnvm install `cat .nvmrc` \n", - "status" : "success", - "timedout" : null, - "continue" : null, - "end_time" : "2020-10-14T21:58:34.092Z", - "type" : "test", - "allocation_id" : "5f87746f08a150372fa9713c-0-build/62180037", - "output_url" : "https://circle-production-action-output.s3.amazonaws.com/6e222104419de71e684778f5-5de6587c4394b520d939b8e1-103-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20201016T210701Z&X-Amz-SignedHeaders=host&X-Amz-Expires=432000&X-Amz-Credential=AKIAIJNI6FA5RIAFFQ7Q%2F20201016%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Signature=cdb12ef5d9d2628db20204b4f127c357f079118202780f7ce880a1b812c3bb71", - "start_time" : "2020-10-14T21:58:30.405Z", - "background" : false, - "exit_code" : 0, - "insignificant" : false, - "canceled" : null, - "step" : 103, - "run_time_millis" : 3687, - "has_output" : true - } ] - }, { - "name" : "Setup Python", - "actions" : [ { - "truncated" : false, - "index" : 0, - "parallel" : true, - "failed" : null, - "infrastructure_fail" : null, - "name" : "Setup Python", - "bash_command" : "#!/bin/bash -eo pipefail\npyenv versions\npyenv global 3.7.8 3.8.3\npip3 install pipenv\npipenv install\n", - "status" : "success", - "timedout" : null, - "continue" : null, - "end_time" : "2020-10-14T21:59:33.849Z", - "type" : "test", - "allocation_id" : "5f87746f08a150372fa9713c-0-build/62180037", - "output_url" : "https://circle-production-action-output.s3.amazonaws.com/bd763fff3163feb1a84778f5-5de6587c4394b520d939b8e1-104-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20201016T210701Z&X-Amz-SignedHeaders=host&X-Amz-Expires=432000&X-Amz-Credential=AKIAIJNI6FA5RIAFFQ7Q%2F20201016%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Signature=d6919bed305cb0d6f1f26f4cab0f01d4c7d530a6ee856eccc8440a320ed6cc79", - "start_time" : "2020-10-14T21:58:34.167Z", - "background" : false, - "exit_code" : 0, - "insignificant" : false, - "canceled" : null, - "step" : 104, - "run_time_millis" : 59682, - "has_output" : true - } ] - }, { - "name" : "NPM Install", - "actions" : [ { - "truncated" : false, - "index" : 0, - "parallel" : true, - "failed" : null, - "infrastructure_fail" : null, - "name" : "NPM Install", - "bash_command" : "#!/bin/bash -eo pipefail\nnvm use\nnode --version\nnpm --version\nnpm ci\n", - "status" : "success", - "timedout" : null, - "continue" : null, - "end_time" : "2020-10-14T21:59:51.520Z", - "type" : "test", - "allocation_id" : "5f87746f08a150372fa9713c-0-build/62180037", - "output_url" : "https://circle-production-action-output.s3.amazonaws.com/bf5f4f48e6e054ef5c4778f5-5de6587c4394b520d939b8e1-105-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20201016T210701Z&X-Amz-SignedHeaders=host&X-Amz-Expires=432000&X-Amz-Credential=AKIAIJNI6FA5RIAFFQ7Q%2F20201016%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Signature=b43dae0bc7ef65f1cf918cfde98b4d88732c5d049b3c6b354c9e345d32bc3d5e", - "start_time" : "2020-10-14T21:59:33.885Z", - "background" : false, - "exit_code" : 0, - "insignificant" : false, - "canceled" : null, - "step" : 105, - "run_time_millis" : 17635, - "has_output" : true - } ] - }, { - "name" : "NPM Build content-repo docs", - "actions" : [ { - "truncated" : false, - "index" : 0, - "parallel" : true, - "failed" : null, - "infrastructure_fail" : null, - "name" : "NPM Build content-repo docs", - "bash_command" : "#!/bin/bash -eo pipefail\nnvm use\nnpm run reference-docs\n", - "status" : "success", - "timedout" : null, - "continue" : null, - "end_time" : "2020-10-14T22:03:04.372Z", - "type" : "test", - "allocation_id" : "5f87746f08a150372fa9713c-0-build/62180037", - "output_url" : "https://circle-production-action-output.s3.amazonaws.com/0e6f4f48e6e054ef7d4778f5-5de6587c4394b520d939b8e1-106-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20201016T210701Z&X-Amz-SignedHeaders=host&X-Amz-Expires=432000&X-Amz-Credential=AKIAIJNI6FA5RIAFFQ7Q%2F20201016%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Signature=04d49426b50a3f7bf2804ff2a99d8ca799fea9a1cd027857d71a49f7efc697c5", - "start_time" : "2020-10-14T21:59:51.592Z", - "background" : false, - "exit_code" : 0, - "insignificant" : false, - "canceled" : null, - "step" : 106, - "run_time_millis" : 192780, - "has_output" : true - } ] - }, { - "name" : "NPM Build", - "actions" : [ { - "truncated" : false, - "index" : 0, - "parallel" : true, - "failed" : null, - "infrastructure_fail" : null, - "name" : "NPM Build", - "bash_command" : "#!/bin/bash -eo pipefail\nnvm use \nnpm run heapstats\nnpm run build-docusaurus\necho \"Build is done. Create tar of the build dir\"\ntar czf build-site.tar.gz build\n", - "status" : "success", - "timedout" : null, - "continue" : null, - "end_time" : "2020-10-14T22:26:06.079Z", - "type" : "test", - "allocation_id" : "5f87746f08a150372fa9713c-0-build/62180037", - "output_url" : "https://circle-production-action-output.s3.amazonaws.com/0e673fff3163feb1895778f5-5de6587c4394b520d939b8e1-107-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20201016T210701Z&X-Amz-SignedHeaders=host&X-Amz-Expires=432000&X-Amz-Credential=AKIAIJNI6FA5RIAFFQ7Q%2F20201016%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Signature=20c19ec952fc46d9d68f89c17b9ecd9c8ffb39c51b12a1b1c0658df12cbb00ac", - "start_time" : "2020-10-14T22:03:04.444Z", - "background" : false, - "exit_code" : 0, - "insignificant" : false, - "canceled" : null, - "step" : 107, - "run_time_millis" : 1381635, - "has_output" : true - } ] - }, { - "name" : "Uploading artifacts", - "actions" : [ { - "truncated" : false, - "index" : 0, - "parallel" : true, - "failed" : null, - "infrastructure_fail" : null, - "name" : "Uploading artifacts", - "bash_command" : null, - "status" : "success", - "timedout" : null, - "continue" : null, - "end_time" : "2020-10-14T22:26:07.734Z", - "type" : "test", - "allocation_id" : "5f87746f08a150372fa9713c-0-build/62180037", - "output_url" : "https://circle-production-action-output.s3.amazonaws.com/966210d8e4791c5defa778f5-5de6587c4394b520d939b8e1-108-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20201016T210701Z&X-Amz-SignedHeaders=host&X-Amz-Expires=432000&X-Amz-Credential=AKIAIJNI6FA5RIAFFQ7Q%2F20201016%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Signature=fe40a0180f9d8ed79ce7c079c166794d0d7aaa041a5a2bb576db80d70245933b", - "start_time" : "2020-10-14T22:26:06.102Z", - "background" : false, - "exit_code" : null, - "insignificant" : false, - "canceled" : null, - "step" : 108, - "run_time_millis" : 1632, - "has_output" : true - } ] - }, { - "name" : "Saving cache", - "actions" : [ { - "truncated" : false, - "index" : 0, - "parallel" : true, - "failed" : null, - "infrastructure_fail" : null, - "name" : "Saving cache", - "bash_command" : null, - "status" : "success", - "timedout" : null, - "continue" : null, - "end_time" : "2020-10-14T22:26:51.383Z", - "type" : "test", - "allocation_id" : "5f87746f08a150372fa9713c-0-build/62180037", - "output_url" : "https://circle-production-action-output.s3.amazonaws.com/a4a62104419de71effa778f5-5de6587c4394b520d939b8e1-109-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20201016T210701Z&X-Amz-SignedHeaders=host&X-Amz-Expires=432000&X-Amz-Credential=AKIAIJNI6FA5RIAFFQ7Q%2F20201016%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Signature=0ba327f09fb8f5443a35e7b87f8687f88a7339eda44d0a5e442e1c7eaeb10d06", - "start_time" : "2020-10-14T22:26:07.803Z", - "background" : false, - "exit_code" : null, - "insignificant" : false, - "canceled" : null, - "step" : 109, - "run_time_millis" : 43580, - "has_output" : true - } ] - }, { - "name" : "Persisting to workspace", - "actions" : [ { - "truncated" : false, - "index" : 0, - "parallel" : true, - "failed" : null, - "infrastructure_fail" : null, - "name" : "Persisting to workspace", - "bash_command" : null, - "status" : "success", - "timedout" : null, - "continue" : null, - "end_time" : "2020-10-14T22:27:04.267Z", - "type" : "test", - "allocation_id" : "5f87746f08a150372fa9713c-0-build/62180037", - "output_url" : "https://circle-production-action-output.s3.amazonaws.com/d71b3fff3163feb1b2b778f5-5de6587c4394b520d939b8e1-110-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20201016T210701Z&X-Amz-SignedHeaders=host&X-Amz-Expires=432000&X-Amz-Credential=AKIAIJNI6FA5RIAFFQ7Q%2F20201016%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Signature=fb465bd381465381f9598c5efbfe2da7e7c14b6f08229de64709841229518d29", - "start_time" : "2020-10-14T22:26:51.419Z", - "background" : false, - "exit_code" : null, - "insignificant" : false, - "canceled" : null, - "step" : 110, - "run_time_millis" : 12848, - "has_output" : true - } ] - } ], - "body" : "", - "usage_queued_at" : "2020-10-14T21:58:07.344Z", - "context_ids" : [ ], - "fail_reason" : null, - "retry_of" : null, - "reponame" : "content-docs", - "ssh_users" : [ ], - "build_url" : "https://circleci.com/gh/demisto/content-docs/97", - "parallel" : 1, - "failed" : false, - "branch" : "pull/345", - "username" : "demisto", - "author_date" : "2020-10-14T21:57:24.000Z", - "why" : "github", - "user" : { - "is_user" : false, - "login" : "none" - }, - "vcs_revision" : "8ae88a0ebff92ccd40d38f5b11c6e9e7a85019a0", - "workflows" : { - "job_name" : "build", - "job_id" : "1f4a90fa-474a-4451-ab99-c6675a817296", - "workflow_id" : "0eee6bcf-2fed-458e-8484-3d19e41833e9", - "workspace_id" : "0eee6bcf-2fed-458e-8484-3d19e41833e9", - "upstream_job_ids" : [ ], - "upstream_concurrency_map" : { }, - "workflow_name" : "build_and_deploy" - }, - "owners" : [ ], - "vcs_tag" : null, - "pull_requests" : [ { - "head_sha" : "8ae88a0ebff92ccd40d38f5b11c6e9e7a85019a0", - "url" : "https://github.com/demisto/content-docs/pull/345" - } ], - "build_num" : 97, - "infrastructure_fail" : false, - "committer_email" : "noreply@github.com", - "has_artifacts" : true, - "previous" : null, - "status" : "success", - "committer_name" : "GitHub", - "retries" : null, - "subject" : "Add links to hashicorp and cyberark integrations", - "vcs_type" : "github", - "timedout" : false, - "dont_build" : null, - "lifecycle" : "finished", - "no_dependency_cache" : false, - "stop_time" : "2020-10-14T22:27:04.363Z", - "ssh_disabled" : true, - "build_time_millis" : 1733035, - "picard" : { - "build_agent" : { - "image" : "circleci/picard@sha256:968c60781f6e9aa7e532af8d9602955efff12ce295731c3bb6688b8bc9e75823", - "properties" : { - "nomad_ami" : "ami-043d60cceb7308837", - "availability_zone" : "us-east-1d", - "instance_id" : "i-077426007c0fd4d0a", - "instance_ip" : "172.29.12.195", - "build_agent" : "1.0.41273-766faae9", - "executor" : "machine" - } - }, - "resource_class" : { - "cpu" : 2.0, - "ram" : 7680, - "class" : "medium", - "name" : "Machine Linux Medium" - }, - "executor" : "machine", - "used_features" : [ "" ] - }, - "circle_yml" : { - "string" : "version: 2\njobs:\n build:\n machine:\n image: ubuntu-1604:202007-01\n steps:\n - checkout\n - restore_cache:\n key: npm-cache-{{ checksum \"package-lock.json\" }}\n - run:\n name: Setup Node\n command: \"echo '[ -s \\\"$NVM_DIR/nvm.sh\\\" ] && \\\\. \\\"$NVM_DIR/nvm.sh\\\"' >> $BASH_ENV\\nsource $BASH_ENV\\nnvm install `cat .nvmrc` \\n\"\n - run:\n name: Setup Python\n command: |\n pyenv versions\n pyenv global 3.7.8 3.8.3\n pip3 install pipenv\n pipenv install\n - run:\n name: NPM Install\n command: |\n nvm use\n node --version\n npm --version\n npm ci\n - run:\n name: NPM Build content-repo docs\n command: |\n nvm use\n npm run reference-docs\n - run:\n name: NPM Build\n no_output_timeout: 40m\n environment:\n ALGOLIA_INDEX: demisto\n command: \"nvm use \\nnpm run heapstats\\nnpm run build-docusaurus\\necho \\\"Build is done. Create tar of the build dir\\\"\\ntar czf build-site.tar.gz build\\n\"\n - store_artifacts:\n path: build-site.tar.gz\n - save_cache:\n key: npm-cache-{{ checksum \"package-lock.json\" }}\n paths:\n - node_modules\n - persist_to_workspace:\n root: /home/circleci/project\n paths:\n - build\n deploy:\n docker:\n - image: circleci/python:3.7.9-buster-node\n resource_class: small\n steps:\n - checkout\n - attach_workspace:\n at: /home/circleci/project\n - run:\n name: Setup Python\n command: |\n pipenv install\n - run:\n name: Deploy to Firebase\n no_output_timeout: 30m\n command: |\n echo $FIREBASE_JSON_KEY > \"$HOME\"/gcloud.json\n npm install firebase-tools\n export PATH=\"$PATH:`pwd`/node_modules/.bin\"\n export GOOGLE_APPLICATION_CREDENTIALS=\"$HOME\"/gcloud.json\n if [ \"$CIRCLE_BRANCH\" = \"master\" ]; then\n echo \"Deploying to prod as CIRCLE_BRANCH is equal to master!\"\n firebase deploy --only hosting > deploy-info-firebase.txt\n else\n # Get the PR number from the CIRCLE_PULL_REQUEST env variable which is in the form of:\n # https://github.com/demisto/content-docs/pull/335\n firebase hosting:channel:deploy \"pull-request-${CIRCLE_PULL_REQUEST##*/}\" --only xsoar.pan.dev > deploy-info-firebase.txt\n cat deploy-info-firebase.txt\n fi\n - run:\n name: Post Comment Firebase\n command: |\n pipenv run ./content-repo/post_github_comment.py deploy-info-firebase.txt\nworkflows:\n build_and_deploy:\n jobs:\n - build\n - deploy:\n filters:\n branches:\n only: /^(?!pull\\/).*$/\n requires:\n - build\n version: 2\n\n# Original config.yml file:\n# ### =============================================================\n# ### This configuration file is used by CircleCI build server\n# ### https://circleci.com/docs/config-sample\n# ### =============================================================\n# version: 2.1\n# jobs:\n# build:\n# \n# machine:\n# image: ubuntu-1604:202007-01\n# \n# steps:\n# - checkout\n# - restore_cache:\n# key: npm-cache-{{ checksum \\\"package-lock.json\\\" }}\n# - run:\n# name: Setup Node\n# command: |\n# echo '[ -s \\\"$NVM_DIR/nvm.sh\\\" ] && \\\\. \\\"$NVM_DIR/nvm.sh\\\"' >> $BASH_ENV\n# source $BASH_ENV\n# nvm install `cat .nvmrc` \n# - run:\n# name: Setup Python\n# command: |\n# pyenv versions\n# pyenv global 3.7.8 3.8.3\n# pip3 install pipenv\n# pipenv install\n# - run:\n# name: NPM Install\n# command: |\n# nvm use\n# node --version\n# npm --version\n# npm ci\n# - run:\n# name: NPM Build content-repo docs\n# command: |\n# nvm use\n# npm run reference-docs\n# - run:\n# name: NPM Build\n# no_output_timeout: 40m\n# environment:\n# ALGOLIA_INDEX: demisto\n# command: |\n# nvm use \n# npm run heapstats\n# npm run build-docusaurus\n# echo \\\"Build is done. Create tar of the build dir\\\"\n# tar czf build-site.tar.gz build\n# - store_artifacts:\n# path: build-site.tar.gz\n# - save_cache:\n# key: npm-cache-{{ checksum \\\"package-lock.json\\\" }}\n# paths:\n# - node_modules\n# - persist_to_workspace:\n# # Must be an absolute path, or relative path from working_directory. This is a directory on the container which is \n# # taken to be the root directory of the workspace.\n# root: /home/circleci/project\n# # Must be relative path from root\n# paths:\n# - build \n# \n# deploy:\n# docker:\n# - image: circleci/python:3.7.9-buster-node\n# resource_class: small\n# steps:\n# - checkout\n# - attach_workspace:\n# at: /home/circleci/project\n# - run:\n# name: Setup Python\n# command: | \n# pipenv install\n# - run:\n# name: Deploy to Firebase\n# no_output_timeout: 30m\n# command: |\n# echo $FIREBASE_JSON_KEY > \"$HOME\"/gcloud.json\n# npm install firebase-tools\n# export PATH=\"$PATH:`pwd`/node_modules/.bin\"\n# export GOOGLE_APPLICATION_CREDENTIALS=\"$HOME\"/gcloud.json\n# if [ \"$CIRCLE_BRANCH\" = \"master\" ]; then\n# echo \"Deploying to prod as CIRCLE_BRANCH is equal to master!\"\n# firebase deploy --only hosting > deploy-info-firebase.txt\n# else\n# # Get the PR number from the CIRCLE_PULL_REQUEST env variable which is in the form of:\n# # https://github.com/demisto/content-docs/pull/335\n# firebase hosting:channel:deploy \"pull-request-${CIRCLE_PULL_REQUEST##*/}\" --only xsoar.pan.dev > deploy-info-firebase.txt\n# cat deploy-info-firebase.txt\n# fi\n# - run:\n# name: Post Comment Firebase\n# command: |\n# pipenv run ./content-repo/post_github_comment.py deploy-info-firebase.txt\n# \n# workflows:\n# build_and_deploy:\n# jobs:\n# - build\n# - deploy:\n# requires:\n# - build\n# filters:\n# branches:\n# # only from non-fork\n# only: /^(?!pull\\\\/).*$/" - }, - "messages" : [ ], - "is_first_green_build" : false, - "job_name" : null, - "start_time" : "2020-10-14T21:58:11.328Z", - "canceler" : null, - "all_commit_details" : [ { - "committer_date" : "2020-10-14T21:57:24.000Z", - "body" : "", - "branch" : "pull/345", - "author_date" : "2020-10-14T21:57:24.000Z", - "committer_email" : "noreply@github.com", - "commit" : "8ae88a0ebff92ccd40d38f5b11c6e9e7a85019a0", - "committer_login" : "web-flow", - "committer_name" : "GitHub", - "subject" : "Add links to hashicorp and cyberark integrations", - "commit_url" : "https://github.com/demisto/content-docs/commit/8ae88a0ebff92ccd40d38f5b11c6e9e7a85019a0", - "author_login" : "guytest", - "author_name" : "guytest", - "author_email" : "56889725+guytest@users.noreply.github.com" - } ], - "platform" : "2.0", - "outcome" : "success", - "vcs_url" : "https://github.com/demisto/content-docs", - "author_name" : "guytest", - "node" : null, - "queued_at" : "2020-10-14T21:58:07.391Z", - "canceled" : false, - "author_email" : "56889725+guytest@users.noreply.github.com" -} \ No newline at end of file diff --git a/content-repo/test_data/circleci-non-forked-build.json b/content-repo/test_data/circleci-non-forked-build.json deleted file mode 100644 index 7664a0639..000000000 --- a/content-repo/test_data/circleci-non-forked-build.json +++ /dev/null @@ -1,434 +0,0 @@ -{ - "compare" : null, - "previous_successful_build" : { - "build_num" : 131, - "status" : "success", - "build_time_millis" : 358999 - }, - "build_parameters" : { - "CIRCLE_JOB" : "build" - }, - "oss" : true, - "all_commit_details_truncated" : false, - "committer_date" : "2020-10-15T16:06:00.000Z", - "steps" : [ { - "name" : "Spin up environment", - "actions" : [ { - "truncated" : false, - "index" : 0, - "parallel" : true, - "failed" : null, - "infrastructure_fail" : null, - "name" : "Spin up environment", - "bash_command" : null, - "status" : "success", - "timedout" : null, - "continue" : null, - "end_time" : "2020-10-15T16:16:48.325Z", - "type" : "test", - "allocation_id" : "5f8875e437d91b0dd0c4f90a-0-build/BD1B6D", - "output_url" : "https://circle-production-action-output.s3.amazonaws.com/4107de16b15e1b848e5788f5-5de6587c4394b520d939b8e1-0-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20201016T210032Z&X-Amz-SignedHeaders=host&X-Amz-Expires=432000&X-Amz-Credential=AKIAIJNI6FA5RIAFFQ7Q%2F20201016%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Signature=e46ba126e9b68b094da395917e5b5fa30888c393d54b15800f872e7479d197c2", - "start_time" : "2020-10-15T16:16:40.358Z", - "background" : false, - "exit_code" : null, - "insignificant" : false, - "canceled" : null, - "step" : 0, - "run_time_millis" : 7967, - "has_output" : true - } ] - }, { - "name" : "Preparing environment variables", - "actions" : [ { - "truncated" : false, - "index" : 0, - "parallel" : true, - "failed" : null, - "infrastructure_fail" : null, - "name" : "Preparing environment variables", - "bash_command" : null, - "status" : "success", - "timedout" : null, - "continue" : null, - "end_time" : "2020-10-15T16:16:52.901Z", - "type" : "test", - "allocation_id" : "5f8875e437d91b0dd0c4f90a-0-build/BD1B6D", - "output_url" : "https://circle-production-action-output.s3.amazonaws.com/f57a2c43a166423f4f5788f5-5de6587c4394b520d939b8e1-99-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20201016T210032Z&X-Amz-SignedHeaders=host&X-Amz-Expires=432000&X-Amz-Credential=AKIAIJNI6FA5RIAFFQ7Q%2F20201016%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Signature=278754f94a86f89ea6bb443dcb1d10650cfbb9c856de0af41821f09b76a8ffd1", - "start_time" : "2020-10-15T16:16:52.838Z", - "background" : false, - "exit_code" : null, - "insignificant" : false, - "canceled" : null, - "step" : 99, - "run_time_millis" : 63, - "has_output" : true - } ] - }, { - "name" : "Checkout code", - "actions" : [ { - "truncated" : false, - "index" : 0, - "parallel" : true, - "failed" : null, - "infrastructure_fail" : null, - "name" : "Checkout code", - "bash_command" : "#!/bin/sh\nset -e\n\n# Workaround old docker images with incorrect $HOME\n# check https://github.com/docker/docker/issues/2968 for details\nif [ \"${HOME}\" = \"/\" ]\nthen\n export HOME=$(getent passwd $(id -un) | cut -d: -f6)\nfi\n\necho Using SSH Config Dir $SSH_CONFIG_DIR\n\nmkdir -p $SSH_CONFIG_DIR\n\necho 'github.com ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31/yMf+Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB+weqqUUmpaaasXVal72J+UX2B+2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi/w4yCE6gbODqnTWlg7+wC604ydGXA8VJiS5ap43JXiUFFAaQ==\nbitbucket.org ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAubiN81eDcafrgMeLzaFPsw2kNvEcqTKl/VqLat/MaB33pZy0y3rJZtnqwR2qOOvbwKZYKiEO1O6VqNEBxKvJJelCq0dTXWT5pbO2gDXC6h6QDXCaHo6pOHGPUy+YBaGQRGuSusMEASYiWunYN0vCAI8QaXnWMXNMdFP3jHAJH0eDsoiGnLPBlBp4TNm6rYI74nMzgz3B9IikW4WVK+dc8KZJZWYjAuORU3jc1c/NPskD2ASinf8v3xnfXeukU0sJ5N6m5E8VLjObPEO+mN2t/FZTMZLiFqPWc/ALSqnMnnhwrNi2rbfg/rd/IpL8Le3pSBne8+seeFVBoGqzHM9yXw==\n' >> $SSH_CONFIG_DIR/known_hosts\n\n(umask 077; touch $SSH_CONFIG_DIR/id_rsa)\nchmod 0600 $SSH_CONFIG_DIR/id_rsa\n(cat < $SSH_CONFIG_DIR/id_rsa\n$CHECKOUT_KEY\nEOF\n)\n\nexport GIT_SSH_COMMAND='ssh -i $SSH_CONFIG_DIR/id_rsa -o UserKnownHostsFile=$SSH_CONFIG_DIR/known_hosts'\n\n# use git+ssh instead of https\ngit config --global url.\"ssh://git@github.com\".insteadOf \"https://github.com\" || true\ngit config --global gc.auto 0 || true\n\nif [ -e /home/circleci/project/.git ]\nthen\n cd /home/circleci/project\n git remote set-url origin \"$CIRCLE_REPOSITORY_URL\" || true\nelse\n mkdir -p /home/circleci/project\n cd /home/circleci/project\n git clone \"$CIRCLE_REPOSITORY_URL\" .\nfi\n\nif [ -n \"$CIRCLE_TAG\" ]\nthen\n git fetch --force origin \"refs/tags/${CIRCLE_TAG}\"\nelse\n git fetch --force origin \"evisochek-patch-1:remotes/origin/evisochek-patch-1\"\nfi\n\n\nif [ -n \"$CIRCLE_TAG\" ]\nthen\n git reset --hard \"$CIRCLE_SHA1\"\n git checkout -q \"$CIRCLE_TAG\"\nelif [ -n \"$CIRCLE_BRANCH\" ]\nthen\n git reset --hard \"$CIRCLE_SHA1\"\n git checkout -q -B \"$CIRCLE_BRANCH\"\nfi\n\ngit reset --hard \"$CIRCLE_SHA1\"", - "status" : "success", - "timedout" : null, - "continue" : null, - "end_time" : "2020-10-15T16:16:57.162Z", - "type" : "test", - "allocation_id" : "5f8875e437d91b0dd0c4f90a-0-build/BD1B6D", - "output_url" : "https://circle-production-action-output.s3.amazonaws.com/dae43639e042b5495f5788f5-5de6587c4394b520d939b8e1-101-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20201016T210032Z&X-Amz-SignedHeaders=host&X-Amz-Expires=432000&X-Amz-Credential=AKIAIJNI6FA5RIAFFQ7Q%2F20201016%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Signature=0f0dd6cc0d5b94ac58ab8ebc78764cec6ac3c2fd845c76e67e47229407f589d1", - "start_time" : "2020-10-15T16:16:53.012Z", - "background" : false, - "exit_code" : null, - "insignificant" : false, - "canceled" : null, - "step" : 101, - "run_time_millis" : 4150, - "has_output" : true - } ] - }, { - "name" : "Restoring cache", - "actions" : [ { - "truncated" : false, - "index" : 0, - "parallel" : true, - "failed" : null, - "infrastructure_fail" : null, - "name" : "Restoring cache", - "bash_command" : null, - "status" : "success", - "timedout" : null, - "continue" : null, - "end_time" : "2020-10-15T16:17:04.222Z", - "type" : "test", - "allocation_id" : "5f8875e437d91b0dd0c4f90a-0-build/BD1B6D", - "output_url" : "https://circle-production-action-output.s3.amazonaws.com/1ee43639e042b5499f5788f5-5de6587c4394b520d939b8e1-102-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20201016T210032Z&X-Amz-SignedHeaders=host&X-Amz-Expires=432000&X-Amz-Credential=AKIAIJNI6FA5RIAFFQ7Q%2F20201016%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Signature=5edf149d6df05b3c5b42d976705cf1ae80d559260512fc0cafea119e20d99467", - "start_time" : "2020-10-15T16:16:57.235Z", - "background" : false, - "exit_code" : null, - "insignificant" : false, - "canceled" : null, - "step" : 102, - "run_time_millis" : 6987, - "has_output" : true - } ] - }, { - "name" : "Setup Node", - "actions" : [ { - "truncated" : false, - "index" : 0, - "parallel" : true, - "failed" : null, - "infrastructure_fail" : null, - "name" : "Setup Node", - "bash_command" : "#!/bin/bash -eo pipefail\necho '[ -s \"$NVM_DIR/nvm.sh\" ] && \\. \"$NVM_DIR/nvm.sh\"' >> $BASH_ENV\nsource $BASH_ENV\nnvm install `cat .nvmrc` \n", - "status" : "success", - "timedout" : null, - "continue" : null, - "end_time" : "2020-10-15T16:17:08.094Z", - "type" : "test", - "allocation_id" : "5f8875e437d91b0dd0c4f90a-0-build/BD1B6D", - "output_url" : "https://circle-production-action-output.s3.amazonaws.com/3317de16b15e1b84006788f5-5de6587c4394b520d939b8e1-103-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20201016T210032Z&X-Amz-SignedHeaders=host&X-Amz-Expires=432000&X-Amz-Credential=AKIAIJNI6FA5RIAFFQ7Q%2F20201016%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Signature=55dbe74438ae34f8306c742346e3c9a54a6fa4ed7d508e050a9390336310d833", - "start_time" : "2020-10-15T16:17:04.241Z", - "background" : false, - "exit_code" : 0, - "insignificant" : false, - "canceled" : null, - "step" : 103, - "run_time_millis" : 3853, - "has_output" : true - } ] - }, { - "name" : "Setup Python", - "actions" : [ { - "truncated" : false, - "index" : 0, - "parallel" : true, - "failed" : null, - "infrastructure_fail" : null, - "name" : "Setup Python", - "bash_command" : "#!/bin/bash -eo pipefail\npyenv versions\npyenv global 3.7.8 3.8.3\npip3 install pipenv\npipenv install\n", - "status" : "success", - "timedout" : null, - "continue" : null, - "end_time" : "2020-10-15T16:18:17.082Z", - "type" : "test", - "allocation_id" : "5f8875e437d91b0dd0c4f90a-0-build/BD1B6D", - "output_url" : "https://circle-production-action-output.s3.amazonaws.com/c5f43639e042b549406788f5-5de6587c4394b520d939b8e1-104-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20201016T210032Z&X-Amz-SignedHeaders=host&X-Amz-Expires=432000&X-Amz-Credential=AKIAIJNI6FA5RIAFFQ7Q%2F20201016%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Signature=461fd2c3bc879645518df708316cc6ddd15b91dbbeb2f55d956c0baad23b5165", - "start_time" : "2020-10-15T16:17:08.163Z", - "background" : false, - "exit_code" : 0, - "insignificant" : false, - "canceled" : null, - "step" : 104, - "run_time_millis" : 68919, - "has_output" : true - } ] - }, { - "name" : "NPM Install", - "actions" : [ { - "truncated" : false, - "index" : 0, - "parallel" : true, - "failed" : null, - "infrastructure_fail" : null, - "name" : "NPM Install", - "bash_command" : "#!/bin/bash -eo pipefail\nnvm use\nnode --version\nnpm --version\nnpm ci\n", - "status" : "success", - "timedout" : null, - "continue" : null, - "end_time" : "2020-10-15T16:18:44.130Z", - "type" : "test", - "allocation_id" : "5f8875e437d91b0dd0c4f90a-0-build/BD1B6D", - "output_url" : "https://circle-production-action-output.s3.amazonaws.com/7aaa2c43a166423f946788f5-5de6587c4394b520d939b8e1-105-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20201016T210032Z&X-Amz-SignedHeaders=host&X-Amz-Expires=432000&X-Amz-Credential=AKIAIJNI6FA5RIAFFQ7Q%2F20201016%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Signature=699b1a01e0845e99ccdaad65f48efca968724f20ca9c5112f90de63611ee476c", - "start_time" : "2020-10-15T16:18:17.149Z", - "background" : false, - "exit_code" : 0, - "insignificant" : false, - "canceled" : null, - "step" : 105, - "run_time_millis" : 26981, - "has_output" : true - } ] - }, { - "name" : "NPM Build content-repo docs", - "actions" : [ { - "truncated" : false, - "index" : 0, - "parallel" : true, - "failed" : null, - "infrastructure_fail" : null, - "name" : "NPM Build content-repo docs", - "bash_command" : "#!/bin/bash -eo pipefail\nnvm use\nnpm run reference-docs\n", - "status" : "success", - "timedout" : null, - "continue" : null, - "end_time" : "2020-10-15T16:22:34.342Z", - "type" : "test", - "allocation_id" : "5f8875e437d91b0dd0c4f90a-0-build/BD1B6D", - "output_url" : "https://circle-production-action-output.s3.amazonaws.com/b467de16b15e1b84466788f5-5de6587c4394b520d939b8e1-106-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20201016T210032Z&X-Amz-SignedHeaders=host&X-Amz-Expires=432000&X-Amz-Credential=AKIAIJNI6FA5RIAFFQ7Q%2F20201016%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Signature=4adcc5c4dcc8ef930f2979945d469ac97bd7421dd992676a19698ed84d01bab1", - "start_time" : "2020-10-15T16:18:44.201Z", - "background" : false, - "exit_code" : 0, - "insignificant" : false, - "canceled" : null, - "step" : 106, - "run_time_millis" : 230141, - "has_output" : true - } ] - }, { - "name" : "NPM Build", - "actions" : [ { - "truncated" : false, - "index" : 0, - "parallel" : true, - "failed" : null, - "infrastructure_fail" : null, - "name" : "NPM Build", - "bash_command" : "#!/bin/bash -eo pipefail\nnvm use \nnpm run heapstats\nnpm run build-docusaurus\necho \"Build is done. Create tar of the build dir\"\ntar czf build-site.tar.gz build\n", - "status" : "success", - "timedout" : null, - "continue" : null, - "end_time" : "2020-10-15T16:49:11.501Z", - "type" : "test", - "allocation_id" : "5f8875e437d91b0dd0c4f90a-0-build/BD1B6D", - "output_url" : "https://circle-production-action-output.s3.amazonaws.com/faf9246757f12a1aa47788f5-5de6587c4394b520d939b8e1-107-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20201016T210032Z&X-Amz-SignedHeaders=host&X-Amz-Expires=432000&X-Amz-Credential=AKIAIJNI6FA5RIAFFQ7Q%2F20201016%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Signature=4688b908a75968bcbf86c070d50e824089b05e1aeb36f87fd2331dad7cfefcce", - "start_time" : "2020-10-15T16:22:34.418Z", - "background" : false, - "exit_code" : 0, - "insignificant" : false, - "canceled" : null, - "step" : 107, - "run_time_millis" : 1597083, - "has_output" : true - } ] - }, { - "name" : "Uploading artifacts", - "actions" : [ { - "truncated" : false, - "index" : 0, - "parallel" : true, - "failed" : null, - "infrastructure_fail" : null, - "name" : "Uploading artifacts", - "bash_command" : null, - "status" : "success", - "timedout" : null, - "continue" : null, - "end_time" : "2020-10-15T16:49:13.743Z", - "type" : "test", - "allocation_id" : "5f8875e437d91b0dd0c4f90a-0-build/BD1B6D", - "output_url" : "https://circle-production-action-output.s3.amazonaws.com/8d2b3639e042b54978d788f5-5de6587c4394b520d939b8e1-108-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20201016T210032Z&X-Amz-SignedHeaders=host&X-Amz-Expires=432000&X-Amz-Credential=AKIAIJNI6FA5RIAFFQ7Q%2F20201016%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Signature=8dba364e5ca4af0a4c4555229778d5f85282c2acb381db7184a15b316a50e983", - "start_time" : "2020-10-15T16:49:11.529Z", - "background" : false, - "exit_code" : null, - "insignificant" : false, - "canceled" : null, - "step" : 108, - "run_time_millis" : 2214, - "has_output" : true - } ] - }, { - "name" : "Saving cache", - "actions" : [ { - "truncated" : false, - "index" : 0, - "parallel" : true, - "failed" : null, - "infrastructure_fail" : null, - "name" : "Saving cache", - "bash_command" : null, - "status" : "success", - "timedout" : null, - "continue" : null, - "end_time" : "2020-10-15T16:49:13.948Z", - "type" : "test", - "allocation_id" : "5f8875e437d91b0dd0c4f90a-0-build/BD1B6D", - "output_url" : "https://circle-production-action-output.s3.amazonaws.com/d6903c43a166423f98d788f5-5de6587c4394b520d939b8e1-109-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20201016T210032Z&X-Amz-SignedHeaders=host&X-Amz-Expires=432000&X-Amz-Credential=AKIAIJNI6FA5RIAFFQ7Q%2F20201016%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Signature=553987c87a1b6c2b01172563e37d215ebdfddadedfbee50cfd95029fd7a5b096", - "start_time" : "2020-10-15T16:49:13.832Z", - "background" : false, - "exit_code" : null, - "insignificant" : false, - "canceled" : null, - "step" : 109, - "run_time_millis" : 116, - "has_output" : true - } ] - }, { - "name" : "Persisting to workspace", - "actions" : [ { - "truncated" : false, - "index" : 0, - "parallel" : true, - "failed" : null, - "infrastructure_fail" : null, - "name" : "Persisting to workspace", - "bash_command" : null, - "status" : "success", - "timedout" : null, - "continue" : null, - "end_time" : "2020-10-15T16:49:29.505Z", - "type" : "test", - "allocation_id" : "5f8875e437d91b0dd0c4f90a-0-build/BD1B6D", - "output_url" : "https://circle-production-action-output.s3.amazonaws.com/303b3639e042b549a8d788f5-5de6587c4394b520d939b8e1-110-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20201016T210032Z&X-Amz-SignedHeaders=host&X-Amz-Expires=432000&X-Amz-Credential=AKIAIJNI6FA5RIAFFQ7Q%2F20201016%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Signature=394e6e2c950f19925b147f2cd4ea48feddc58c308d46a70724e607c4a0a15c87", - "start_time" : "2020-10-15T16:49:14.020Z", - "background" : false, - "exit_code" : null, - "insignificant" : false, - "canceled" : null, - "step" : 110, - "run_time_millis" : 15485, - "has_output" : true - } ] - } ], - "body" : "", - "usage_queued_at" : "2020-10-15T16:16:36.252Z", - "context_ids" : [ ], - "fail_reason" : null, - "retry_of" : null, - "reponame" : "content-docs", - "ssh_users" : [ ], - "build_url" : "https://circleci.com/gh/demisto/content-docs/133", - "parallel" : 1, - "failed" : false, - "branch" : "evisochek-patch-1", - "username" : "demisto", - "author_date" : "2020-10-15T16:06:00.000Z", - "why" : "github", - "user" : { - "is_user" : false, - "login" : "none" - }, - "vcs_revision" : "92172300e860f89c4541f4fe4810485d7e55e444", - "workflows" : { - "job_name" : "build", - "job_id" : "65191f11-e4ca-41e7-a8a3-c0ff7c7bd395", - "workflow_id" : "b0ece68a-993e-4ccf-9673-f1a6598ffb18", - "workspace_id" : "b0ece68a-993e-4ccf-9673-f1a6598ffb18", - "upstream_job_ids" : [ ], - "upstream_concurrency_map" : { }, - "workflow_name" : "build_and_deploy" - }, - "owners" : [ ], - "vcs_tag" : null, - "pull_requests" : [ { - "head_sha" : "92172300e860f89c4541f4fe4810485d7e55e444", - "url" : "https://github.com/demisto/content-docs/pull/347" - } ], - "build_num" : 133, - "infrastructure_fail" : false, - "committer_email" : "noreply@github.com", - "has_artifacts" : true, - "previous" : { - "build_num" : 132, - "status" : "not_run", - "build_time_millis" : 0 - }, - "status" : "success", - "committer_name" : "GitHub", - "retries" : null, - "subject" : "Update design-best-practices.md", - "vcs_type" : "github", - "timedout" : false, - "dont_build" : null, - "lifecycle" : "finished", - "no_dependency_cache" : false, - "stop_time" : "2020-10-15T16:49:29.599Z", - "ssh_disabled" : true, - "build_time_millis" : 1969285, - "picard" : { - "build_agent" : { - "image" : "circleci/picard@sha256:4df3266130bcc12cc91af944707bcd65062bebb8dbfaf72aae47e3ebd61aa7a7", - "properties" : { - "instance_id" : "i-0aad6f23cfd05f766", - "instance_ip" : "172.29.1.237", - "build_agent" : "1.0.41366-8943b0cd", - "executor" : "machine", - "nomad_ami" : "ami-043d60cceb7308837", - "availability_zone" : "us-east-1a" - } - }, - "resource_class" : { - "cpu" : 2.0, - "ram" : 7680, - "class" : "medium", - "name" : "Machine Linux Medium" - }, - "executor" : "machine", - "used_features" : [ "" ] - }, - "circle_yml" : { - "string" : "version: 2\njobs:\n build:\n machine:\n image: ubuntu-1604:202007-01\n steps:\n - checkout\n - restore_cache:\n key: npm-cache-{{ checksum \"package-lock.json\" }}\n - run:\n name: Setup Node\n command: \"echo '[ -s \\\"$NVM_DIR/nvm.sh\\\" ] && \\\\. \\\"$NVM_DIR/nvm.sh\\\"' >> $BASH_ENV\\nsource $BASH_ENV\\nnvm install `cat .nvmrc` \\n\"\n - run:\n name: Setup Python\n command: |\n pyenv versions\n pyenv global 3.7.8 3.8.3\n pip3 install pipenv\n pipenv install\n - run:\n name: NPM Install\n command: |\n nvm use\n node --version\n npm --version\n npm ci\n - run:\n name: NPM Build content-repo docs\n command: |\n nvm use\n npm run reference-docs\n - run:\n name: NPM Build\n no_output_timeout: 40m\n environment:\n ALGOLIA_INDEX: demisto\n command: \"nvm use \\nnpm run heapstats\\nnpm run build-docusaurus\\necho \\\"Build is done. Create tar of the build dir\\\"\\ntar czf build-site.tar.gz build\\n\"\n - store_artifacts:\n path: build-site.tar.gz\n - save_cache:\n key: npm-cache-{{ checksum \"package-lock.json\" }}\n paths:\n - node_modules\n - persist_to_workspace:\n root: /home/circleci/project\n paths:\n - build\n deploy:\n docker:\n - image: circleci/python:3.7.9-buster-node\n resource_class: small\n steps:\n - checkout\n - attach_workspace:\n at: /home/circleci/project\n - run:\n name: Setup Python\n command: |\n pipenv install\n - run:\n name: Deploy to Firebase\n no_output_timeout: 30m\n command: |\n echo $FIREBASE_JSON_KEY > \"$HOME\"/gcloud.json\n npm install firebase-tools\n export PATH=\"$PATH:`pwd`/node_modules/.bin\"\n export GOOGLE_APPLICATION_CREDENTIALS=\"$HOME\"/gcloud.json\n if [ \"$CIRCLE_BRANCH\" = \"master\" ]; then\n echo \"Deploying to prod as CIRCLE_BRANCH is equal to master!\"\n firebase deploy --only hosting > deploy-info-firebase.txt\n else\n # Get the PR number from the CIRCLE_PULL_REQUEST env variable which is in the form of:\n # https://github.com/demisto/content-docs/pull/335\n firebase hosting:channel:deploy \"pull-request-${CIRCLE_PULL_REQUEST##*/}\" --only xsoar.pan.dev > deploy-info-firebase.txt\n cat deploy-info-firebase.txt\n fi\n - run:\n name: Post Comment Firebase\n command: |\n pipenv run ./content-repo/post_github_comment.py deploy-info-firebase.txt\nworkflows:\n build_and_deploy:\n jobs:\n - build\n - deploy:\n filters:\n branches:\n only: /^(?!pull\\/).*$/\n requires:\n - build\n version: 2\n\n# Original config.yml file:\n# ### =============================================================\n# ### This configuration file is used by CircleCI build server\n# ### https://circleci.com/docs/config-sample\n# ### =============================================================\n# version: 2.1\n# jobs:\n# build:\n# \n# machine:\n# image: ubuntu-1604:202007-01\n# \n# steps:\n# - checkout\n# - restore_cache:\n# key: npm-cache-{{ checksum \\\"package-lock.json\\\" }}\n# - run:\n# name: Setup Node\n# command: |\n# echo '[ -s \\\"$NVM_DIR/nvm.sh\\\" ] && \\\\. \\\"$NVM_DIR/nvm.sh\\\"' >> $BASH_ENV\n# source $BASH_ENV\n# nvm install `cat .nvmrc` \n# - run:\n# name: Setup Python\n# command: |\n# pyenv versions\n# pyenv global 3.7.8 3.8.3\n# pip3 install pipenv\n# pipenv install\n# - run:\n# name: NPM Install\n# command: |\n# nvm use\n# node --version\n# npm --version\n# npm ci\n# - run:\n# name: NPM Build content-repo docs\n# command: |\n# nvm use\n# npm run reference-docs\n# - run:\n# name: NPM Build\n# no_output_timeout: 40m\n# environment:\n# ALGOLIA_INDEX: demisto\n# command: |\n# nvm use \n# npm run heapstats\n# npm run build-docusaurus\n# echo \\\"Build is done. Create tar of the build dir\\\"\n# tar czf build-site.tar.gz build\n# - store_artifacts:\n# path: build-site.tar.gz\n# - save_cache:\n# key: npm-cache-{{ checksum \\\"package-lock.json\\\" }}\n# paths:\n# - node_modules\n# - persist_to_workspace:\n# # Must be an absolute path, or relative path from working_directory. This is a directory on the container which is \n# # taken to be the root directory of the workspace.\n# root: /home/circleci/project\n# # Must be relative path from root\n# paths:\n# - build \n# \n# deploy:\n# docker:\n# - image: circleci/python:3.7.9-buster-node\n# resource_class: small\n# steps:\n# - checkout\n# - attach_workspace:\n# at: /home/circleci/project\n# - run:\n# name: Setup Python\n# command: | \n# pipenv install\n# - run:\n# name: Deploy to Firebase\n# no_output_timeout: 30m\n# command: |\n# echo $FIREBASE_JSON_KEY > \"$HOME\"/gcloud.json\n# npm install firebase-tools\n# export PATH=\"$PATH:`pwd`/node_modules/.bin\"\n# export GOOGLE_APPLICATION_CREDENTIALS=\"$HOME\"/gcloud.json\n# if [ \"$CIRCLE_BRANCH\" = \"master\" ]; then\n# echo \"Deploying to prod as CIRCLE_BRANCH is equal to master!\"\n# firebase deploy --only hosting > deploy-info-firebase.txt\n# else\n# # Get the PR number from the CIRCLE_PULL_REQUEST env variable which is in the form of:\n# # https://github.com/demisto/content-docs/pull/335\n# firebase hosting:channel:deploy \"pull-request-${CIRCLE_PULL_REQUEST##*/}\" --only xsoar.pan.dev > deploy-info-firebase.txt\n# cat deploy-info-firebase.txt\n# fi\n# - run:\n# name: Post Comment Firebase\n# command: |\n# pipenv run ./content-repo/post_github_comment.py deploy-info-firebase.txt\n# \n# workflows:\n# build_and_deploy:\n# jobs:\n# - build\n# - deploy:\n# requires:\n# - build\n# filters:\n# branches:\n# # only from non-fork\n# only: /^(?!pull\\\\/).*$/" - }, - "messages" : [ ], - "is_first_green_build" : false, - "job_name" : null, - "start_time" : "2020-10-15T16:16:40.314Z", - "canceler" : null, - "all_commit_details" : [ { - "committer_date" : "2020-10-15T16:06:00.000Z", - "body" : "", - "branch" : "evisochek-patch-1", - "author_date" : "2020-10-15T16:06:00.000Z", - "committer_email" : "noreply@github.com", - "commit" : "92172300e860f89c4541f4fe4810485d7e55e444", - "committer_login" : "web-flow", - "committer_name" : "GitHub", - "subject" : "Update design-best-practices.md", - "commit_url" : "https://github.com/demisto/content-docs/commit/92172300e860f89c4541f4fe4810485d7e55e444", - "author_login" : "evisochek", - "author_name" : "evisochek", - "author_email" : "72695126+evisochek@users.noreply.github.com" - } ], - "platform" : "2.0", - "outcome" : "success", - "vcs_url" : "https://github.com/demisto/content-docs", - "author_name" : "evisochek", - "node" : null, - "queued_at" : "2020-10-15T16:16:36.279Z", - "canceled" : false, - "author_email" : "72695126+evisochek@users.noreply.github.com" -} \ No newline at end of file diff --git a/content-repo/test_data/circleci-non-pr-build.json b/content-repo/test_data/circleci-non-pr-build.json deleted file mode 100644 index 27b50900d..000000000 --- a/content-repo/test_data/circleci-non-pr-build.json +++ /dev/null @@ -1,431 +0,0 @@ -{ - "compare" : null, - "previous_successful_build" : { - "build_num" : 152, - "status" : "success", - "build_time_millis" : 123084 - }, - "build_parameters" : { - "CIRCLE_JOB" : "build" - }, - "oss" : true, - "all_commit_details_truncated" : false, - "committer_date" : "2020-10-16T14:12:03.000Z", - "steps" : [ { - "name" : "Spin up environment", - "actions" : [ { - "truncated" : false, - "index" : 0, - "parallel" : true, - "failed" : null, - "infrastructure_fail" : null, - "name" : "Spin up environment", - "bash_command" : null, - "status" : "success", - "timedout" : null, - "continue" : null, - "end_time" : "2020-10-16T14:12:20.664Z", - "type" : "test", - "allocation_id" : "5f89aa363b4e1b13df32fc47-0-build/29714DBA", - "output_url" : "https://circle-production-action-output.s3.amazonaws.com/41584dec1157fe65c3aa98f5-5de6587c4394b520d939b8e1-0-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20201016T164354Z&X-Amz-SignedHeaders=host&X-Amz-Expires=432000&X-Amz-Credential=AKIAIJNI6FA5RIAFFQ7Q%2F20201016%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Signature=6dc1827e41d134e6b4db6f17a2d635995cb13f487da8a0d61bf83f1a74486f55", - "start_time" : "2020-10-16T14:12:12.915Z", - "background" : false, - "exit_code" : null, - "insignificant" : false, - "canceled" : null, - "step" : 0, - "run_time_millis" : 7749, - "has_output" : true - } ] - }, { - "name" : "Preparing environment variables", - "actions" : [ { - "truncated" : false, - "index" : 0, - "parallel" : true, - "failed" : null, - "infrastructure_fail" : null, - "name" : "Preparing environment variables", - "bash_command" : null, - "status" : "success", - "timedout" : null, - "continue" : null, - "end_time" : "2020-10-16T14:12:24.988Z", - "type" : "test", - "allocation_id" : "5f89aa363b4e1b13df32fc47-0-build/29714DBA", - "output_url" : "https://circle-production-action-output.s3.amazonaws.com/c36cbf85a621f71284aa98f5-5de6587c4394b520d939b8e1-99-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20201016T164354Z&X-Amz-SignedHeaders=host&X-Amz-Expires=432000&X-Amz-Credential=AKIAIJNI6FA5RIAFFQ7Q%2F20201016%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Signature=0095948bb0ddf9379faaa94b7dfd43cef2e857bf66ff7752eac7146eda3c0017", - "start_time" : "2020-10-16T14:12:24.888Z", - "background" : false, - "exit_code" : null, - "insignificant" : false, - "canceled" : null, - "step" : 99, - "run_time_millis" : 100, - "has_output" : true - } ] - }, { - "name" : "Checkout code", - "actions" : [ { - "truncated" : false, - "index" : 0, - "parallel" : true, - "failed" : null, - "infrastructure_fail" : null, - "name" : "Checkout code", - "bash_command" : "#!/bin/sh\nset -e\n\n# Workaround old docker images with incorrect $HOME\n# check https://github.com/docker/docker/issues/2968 for details\nif [ \"${HOME}\" = \"/\" ]\nthen\n export HOME=$(getent passwd $(id -un) | cut -d: -f6)\nfi\n\necho Using SSH Config Dir $SSH_CONFIG_DIR\n\nmkdir -p $SSH_CONFIG_DIR\n\necho 'github.com ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31/yMf+Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB+weqqUUmpaaasXVal72J+UX2B+2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi/w4yCE6gbODqnTWlg7+wC604ydGXA8VJiS5ap43JXiUFFAaQ==\nbitbucket.org ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAubiN81eDcafrgMeLzaFPsw2kNvEcqTKl/VqLat/MaB33pZy0y3rJZtnqwR2qOOvbwKZYKiEO1O6VqNEBxKvJJelCq0dTXWT5pbO2gDXC6h6QDXCaHo6pOHGPUy+YBaGQRGuSusMEASYiWunYN0vCAI8QaXnWMXNMdFP3jHAJH0eDsoiGnLPBlBp4TNm6rYI74nMzgz3B9IikW4WVK+dc8KZJZWYjAuORU3jc1c/NPskD2ASinf8v3xnfXeukU0sJ5N6m5E8VLjObPEO+mN2t/FZTMZLiFqPWc/ALSqnMnnhwrNi2rbfg/rd/IpL8Le3pSBne8+seeFVBoGqzHM9yXw==\n' >> $SSH_CONFIG_DIR/known_hosts\n\n(umask 077; touch $SSH_CONFIG_DIR/id_rsa)\nchmod 0600 $SSH_CONFIG_DIR/id_rsa\n(cat < $SSH_CONFIG_DIR/id_rsa\n$CHECKOUT_KEY\nEOF\n)\n\nexport GIT_SSH_COMMAND='ssh -i $SSH_CONFIG_DIR/id_rsa -o UserKnownHostsFile=$SSH_CONFIG_DIR/known_hosts'\n\n# use git+ssh instead of https\ngit config --global url.\"ssh://git@github.com\".insteadOf \"https://github.com\" || true\ngit config --global gc.auto 0 || true\n\nif [ -e /home/circleci/project/.git ]\nthen\n cd /home/circleci/project\n git remote set-url origin \"$CIRCLE_REPOSITORY_URL\" || true\nelse\n mkdir -p /home/circleci/project\n cd /home/circleci/project\n git clone \"$CIRCLE_REPOSITORY_URL\" .\nfi\n\nif [ -n \"$CIRCLE_TAG\" ]\nthen\n git fetch --force origin \"refs/tags/${CIRCLE_TAG}\"\nelse\n git fetch --force origin \"master:remotes/origin/master\"\nfi\n\n\nif [ -n \"$CIRCLE_TAG\" ]\nthen\n git reset --hard \"$CIRCLE_SHA1\"\n git checkout -q \"$CIRCLE_TAG\"\nelif [ -n \"$CIRCLE_BRANCH\" ]\nthen\n git reset --hard \"$CIRCLE_SHA1\"\n git checkout -q -B \"$CIRCLE_BRANCH\"\nfi\n\ngit reset --hard \"$CIRCLE_SHA1\"", - "status" : "success", - "timedout" : null, - "continue" : null, - "end_time" : "2020-10-16T14:12:28.923Z", - "type" : "test", - "allocation_id" : "5f89aa363b4e1b13df32fc47-0-build/29714DBA", - "output_url" : "https://circle-production-action-output.s3.amazonaws.com/6b935bf963f0f32f94aa98f5-5de6587c4394b520d939b8e1-101-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20201016T164354Z&X-Amz-SignedHeaders=host&X-Amz-Expires=432000&X-Amz-Credential=AKIAIJNI6FA5RIAFFQ7Q%2F20201016%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Signature=27a4c5e09851eb5ecdfa219b1aa27e2de5d5418fb4f4c48aa8e458aaa9c12525", - "start_time" : "2020-10-16T14:12:25.088Z", - "background" : false, - "exit_code" : null, - "insignificant" : false, - "canceled" : null, - "step" : 101, - "run_time_millis" : 3835, - "has_output" : true - } ] - }, { - "name" : "Restoring cache", - "actions" : [ { - "truncated" : false, - "index" : 0, - "parallel" : true, - "failed" : null, - "infrastructure_fail" : null, - "name" : "Restoring cache", - "bash_command" : null, - "status" : "success", - "timedout" : null, - "continue" : null, - "end_time" : "2020-10-16T14:12:35.202Z", - "type" : "test", - "allocation_id" : "5f89aa363b4e1b13df32fc47-0-build/29714DBA", - "output_url" : "https://circle-production-action-output.s3.amazonaws.com/7d935bf963f0f32fd4aa98f5-5de6587c4394b520d939b8e1-102-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20201016T164354Z&X-Amz-SignedHeaders=host&X-Amz-Expires=432000&X-Amz-Credential=AKIAIJNI6FA5RIAFFQ7Q%2F20201016%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Signature=e63a8ed84e12f936efc2bec8d6bebdaaaa535048ea8c8d7ca1d5cfbdc03c4866", - "start_time" : "2020-10-16T14:12:28.996Z", - "background" : false, - "exit_code" : null, - "insignificant" : false, - "canceled" : null, - "step" : 102, - "run_time_millis" : 6206, - "has_output" : true - } ] - }, { - "name" : "Setup Node", - "actions" : [ { - "truncated" : false, - "index" : 0, - "parallel" : true, - "failed" : null, - "infrastructure_fail" : null, - "name" : "Setup Node", - "bash_command" : "#!/bin/bash -eo pipefail\necho '[ -s \"$NVM_DIR/nvm.sh\" ] && \\. \"$NVM_DIR/nvm.sh\"' >> $BASH_ENV\nsource $BASH_ENV\nnvm install `cat .nvmrc` \n", - "status" : "success", - "timedout" : null, - "continue" : null, - "end_time" : "2020-10-16T14:12:38.839Z", - "type" : "test", - "allocation_id" : "5f89aa363b4e1b13df32fc47-0-build/29714DBA", - "output_url" : "https://circle-production-action-output.s3.amazonaws.com/bb584dec1157fe6535aa98f5-5de6587c4394b520d939b8e1-103-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20201016T164354Z&X-Amz-SignedHeaders=host&X-Amz-Expires=432000&X-Amz-Credential=AKIAIJNI6FA5RIAFFQ7Q%2F20201016%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Signature=ba44c5166903d536583921cd8188a8f94350a10809511c5024f5305ebf5aa248", - "start_time" : "2020-10-16T14:12:35.222Z", - "background" : false, - "exit_code" : 0, - "insignificant" : false, - "canceled" : null, - "step" : 103, - "run_time_millis" : 3617, - "has_output" : true - } ] - }, { - "name" : "Setup Python", - "actions" : [ { - "truncated" : false, - "index" : 0, - "parallel" : true, - "failed" : null, - "infrastructure_fail" : null, - "name" : "Setup Python", - "bash_command" : "#!/bin/bash -eo pipefail\npyenv versions\npyenv global 3.7.8 3.8.3\npip3 install pipenv\npipenv install\n", - "status" : "success", - "timedout" : null, - "continue" : null, - "end_time" : "2020-10-16T14:13:40.836Z", - "type" : "test", - "allocation_id" : "5f89aa363b4e1b13df32fc47-0-build/29714DBA", - "output_url" : "https://circle-production-action-output.s3.amazonaws.com/92a35bf963f0f32f65aa98f5-5de6587c4394b520d939b8e1-104-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20201016T164354Z&X-Amz-SignedHeaders=host&X-Amz-Expires=432000&X-Amz-Credential=AKIAIJNI6FA5RIAFFQ7Q%2F20201016%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Signature=26e77c54090288809cd9bde6e610d5947c161fb540d1b009af396caaa66c4a01", - "start_time" : "2020-10-16T14:12:38.913Z", - "background" : false, - "exit_code" : 0, - "insignificant" : false, - "canceled" : null, - "step" : 104, - "run_time_millis" : 61923, - "has_output" : true - } ] - }, { - "name" : "NPM Install", - "actions" : [ { - "truncated" : false, - "index" : 0, - "parallel" : true, - "failed" : null, - "infrastructure_fail" : null, - "name" : "NPM Install", - "bash_command" : "#!/bin/bash -eo pipefail\nnvm use\nnode --version\nnpm --version\nnpm ci\n", - "status" : "success", - "timedout" : null, - "continue" : null, - "end_time" : "2020-10-16T14:14:01.170Z", - "type" : "test", - "allocation_id" : "5f89aa363b4e1b13df32fc47-0-build/29714DBA", - "output_url" : "https://circle-production-action-output.s3.amazonaws.com/7db35bf963f0f32f49aa98f5-5de6587c4394b520d939b8e1-105-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20201016T164354Z&X-Amz-SignedHeaders=host&X-Amz-Expires=432000&X-Amz-Credential=AKIAIJNI6FA5RIAFFQ7Q%2F20201016%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Signature=bca6e35f22d25a42e2cf1a854ad1a1863919e92569100901be69d3121d1b584e", - "start_time" : "2020-10-16T14:13:40.906Z", - "background" : false, - "exit_code" : 0, - "insignificant" : false, - "canceled" : null, - "step" : 105, - "run_time_millis" : 20264, - "has_output" : true - } ] - }, { - "name" : "NPM Build content-repo docs", - "actions" : [ { - "truncated" : false, - "index" : 0, - "parallel" : true, - "failed" : null, - "infrastructure_fail" : null, - "name" : "NPM Build content-repo docs", - "bash_command" : "#!/bin/bash -eo pipefail\nnvm use\nnpm run reference-docs\n", - "status" : "success", - "timedout" : null, - "continue" : null, - "end_time" : "2020-10-16T14:17:17.483Z", - "type" : "test", - "allocation_id" : "5f89aa363b4e1b13df32fc47-0-build/29714DBA", - "output_url" : "https://circle-production-action-output.s3.amazonaws.com/87243c4ff70b777f9aaa98f5-5de6587c4394b520d939b8e1-106-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20201016T164354Z&X-Amz-SignedHeaders=host&X-Amz-Expires=432000&X-Amz-Credential=AKIAIJNI6FA5RIAFFQ7Q%2F20201016%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Signature=ecfb4398ef2adbb817018bc0e34bc15048721a97c6b67b192ff95bcf3abac608", - "start_time" : "2020-10-16T14:14:01.244Z", - "background" : false, - "exit_code" : 0, - "insignificant" : false, - "canceled" : null, - "step" : 106, - "run_time_millis" : 196239, - "has_output" : true - } ] - }, { - "name" : "NPM Build", - "actions" : [ { - "truncated" : false, - "index" : 0, - "parallel" : true, - "failed" : null, - "infrastructure_fail" : null, - "name" : "NPM Build", - "bash_command" : "#!/bin/bash -eo pipefail\nnvm use \nnpm run heapstats\nnpm run build-docusaurus\necho \"Build is done. Create tar of the build dir\"\ntar czf build-site.tar.gz build\n", - "status" : "success", - "timedout" : null, - "continue" : null, - "end_time" : "2020-10-16T14:40:25.042Z", - "type" : "test", - "allocation_id" : "5f89aa363b4e1b13df32fc47-0-build/29714DBA", - "output_url" : "https://circle-production-action-output.s3.amazonaws.com/f90dbf85a621f712d6ba98f5-5de6587c4394b520d939b8e1-107-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20201016T164354Z&X-Amz-SignedHeaders=host&X-Amz-Expires=432000&X-Amz-Credential=AKIAIJNI6FA5RIAFFQ7Q%2F20201016%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Signature=6e5842b65c617854fa4c7aee46ccdfa27dd9fbb25ca4c14c01d8c596cd510b29", - "start_time" : "2020-10-16T14:17:17.552Z", - "background" : false, - "exit_code" : 0, - "insignificant" : false, - "canceled" : null, - "step" : 107, - "run_time_millis" : 1387490, - "has_output" : true - } ] - }, { - "name" : "Uploading artifacts", - "actions" : [ { - "truncated" : false, - "index" : 0, - "parallel" : true, - "failed" : null, - "infrastructure_fail" : null, - "name" : "Uploading artifacts", - "bash_command" : null, - "status" : "success", - "timedout" : null, - "continue" : null, - "end_time" : "2020-10-16T14:40:26.796Z", - "type" : "test", - "allocation_id" : "5f89aa363b4e1b13df32fc47-0-build/29714DBA", - "output_url" : "https://circle-production-action-output.s3.amazonaws.com/cdb73c4ff70b777f9d0b98f5-5de6587c4394b520d939b8e1-108-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20201016T164354Z&X-Amz-SignedHeaders=host&X-Amz-Expires=432000&X-Amz-Credential=AKIAIJNI6FA5RIAFFQ7Q%2F20201016%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Signature=a725dec2d18160d79b69decaa1319c143fc866ed3496315d463bf1deca5bc84d", - "start_time" : "2020-10-16T14:40:25.064Z", - "background" : false, - "exit_code" : null, - "insignificant" : false, - "canceled" : null, - "step" : 108, - "run_time_millis" : 1732, - "has_output" : true - } ] - }, { - "name" : "Saving cache", - "actions" : [ { - "truncated" : false, - "index" : 0, - "parallel" : true, - "failed" : null, - "infrastructure_fail" : null, - "name" : "Saving cache", - "bash_command" : null, - "status" : "success", - "timedout" : null, - "continue" : null, - "end_time" : "2020-10-16T14:40:27.015Z", - "type" : "test", - "allocation_id" : "5f89aa363b4e1b13df32fc47-0-build/29714DBA", - "output_url" : "https://circle-production-action-output.s3.amazonaws.com/c91c4dec1157fe65ad0b98f5-5de6587c4394b520d939b8e1-109-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20201016T164354Z&X-Amz-SignedHeaders=host&X-Amz-Expires=432000&X-Amz-Credential=AKIAIJNI6FA5RIAFFQ7Q%2F20201016%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Signature=efdd3893adb810f7eeb7f7f275c5e7127004018f112a1e36fe1595e704811d82", - "start_time" : "2020-10-16T14:40:26.869Z", - "background" : false, - "exit_code" : null, - "insignificant" : false, - "canceled" : null, - "step" : 109, - "run_time_millis" : 146, - "has_output" : true - } ] - }, { - "name" : "Persisting to workspace", - "actions" : [ { - "truncated" : false, - "index" : 0, - "parallel" : true, - "failed" : null, - "infrastructure_fail" : null, - "name" : "Persisting to workspace", - "bash_command" : null, - "status" : "success", - "timedout" : null, - "continue" : null, - "end_time" : "2020-10-16T14:40:41.019Z", - "type" : "test", - "allocation_id" : "5f89aa363b4e1b13df32fc47-0-build/29714DBA", - "output_url" : "https://circle-production-action-output.s3.amazonaws.com/cfb73c4ff70b777fbd0b98f5-5de6587c4394b520d939b8e1-110-0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20201016T164354Z&X-Amz-SignedHeaders=host&X-Amz-Expires=432000&X-Amz-Credential=AKIAIJNI6FA5RIAFFQ7Q%2F20201016%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Signature=3ab42e3505fa7f3f12fd4d3c32dbb80ab0668eb7b81417f43b8d4cbeaec35c95", - "start_time" : "2020-10-16T14:40:27.084Z", - "background" : false, - "exit_code" : null, - "insignificant" : false, - "canceled" : null, - "step" : 110, - "run_time_millis" : 13935, - "has_output" : true - } ] - } ], - "body" : "", - "usage_queued_at" : "2020-10-16T14:12:06.985Z", - "context_ids" : [ ], - "fail_reason" : null, - "retry_of" : null, - "reponame" : "content-docs", - "ssh_users" : [ ], - "build_url" : "https://circleci.com/gh/demisto/content-docs/153", - "parallel" : 1, - "failed" : false, - "branch" : "master", - "username" : "demisto", - "author_date" : "2020-10-16T14:12:03.000Z", - "why" : "github", - "user" : { - "is_user" : false, - "login" : "none" - }, - "vcs_revision" : "036ceaa0a0b631d9f487e436c9523086a0c63ed0", - "workflows" : { - "job_name" : "build", - "job_id" : "5b1dfe28-bdea-49c1-9fd8-c0d768a7f48e", - "workflow_id" : "be20adb3-7c7a-48d9-b67d-ee256251dabe", - "workspace_id" : "be20adb3-7c7a-48d9-b67d-ee256251dabe", - "upstream_job_ids" : [ ], - "upstream_concurrency_map" : { }, - "workflow_name" : "build_and_deploy" - }, - "owners" : [ ], - "vcs_tag" : null, - "pull_requests" : [ ], - "build_num" : 153, - "infrastructure_fail" : false, - "committer_email" : "noreply@github.com", - "has_artifacts" : true, - "previous" : { - "build_num" : 152, - "status" : "success", - "build_time_millis" : 123084 - }, - "status" : "success", - "committer_name" : "GitHub", - "retries" : null, - "subject" : "Update certification.md (#344)", - "vcs_type" : "github", - "timedout" : false, - "dont_build" : null, - "lifecycle" : "finished", - "no_dependency_cache" : false, - "stop_time" : "2020-10-16T14:40:41.114Z", - "ssh_disabled" : true, - "build_time_millis" : 1708247, - "picard" : { - "build_agent" : { - "image" : "circleci/picard@sha256:4df3266130bcc12cc91af944707bcd65062bebb8dbfaf72aae47e3ebd61aa7a7", - "properties" : { - "instance_id" : "i-0d03175279e56eb7d", - "instance_ip" : "172.29.69.103", - "build_agent" : "1.0.41366-8943b0cd", - "executor" : "machine", - "nomad_ami" : "ami-043d60cceb7308837", - "availability_zone" : "us-east-1b" - } - }, - "resource_class" : { - "cpu" : 2.0, - "ram" : 7680, - "class" : "medium", - "name" : "Machine Linux Medium" - }, - "executor" : "machine", - "used_features" : [ "" ] - }, - "circle_yml" : { - "string" : "version: 2\njobs:\n build:\n machine:\n image: ubuntu-1604:202007-01\n steps:\n - checkout\n - restore_cache:\n key: npm-cache-{{ checksum \"package-lock.json\" }}\n - run:\n name: Setup Node\n command: \"echo '[ -s \\\"$NVM_DIR/nvm.sh\\\" ] && \\\\. \\\"$NVM_DIR/nvm.sh\\\"' >> $BASH_ENV\\nsource $BASH_ENV\\nnvm install `cat .nvmrc` \\n\"\n - run:\n name: Setup Python\n command: |\n pyenv versions\n pyenv global 3.7.8 3.8.3\n pip3 install pipenv\n pipenv install\n - run:\n name: NPM Install\n command: |\n nvm use\n node --version\n npm --version\n npm ci\n - run:\n name: NPM Build content-repo docs\n command: |\n nvm use\n npm run reference-docs\n - run:\n name: NPM Build\n no_output_timeout: 40m\n environment:\n ALGOLIA_INDEX: demisto\n command: \"nvm use \\nnpm run heapstats\\nnpm run build-docusaurus\\necho \\\"Build is done. Create tar of the build dir\\\"\\ntar czf build-site.tar.gz build\\n\"\n - store_artifacts:\n path: build-site.tar.gz\n - save_cache:\n key: npm-cache-{{ checksum \"package-lock.json\" }}\n paths:\n - node_modules\n - persist_to_workspace:\n root: /home/circleci/project\n paths:\n - build\n deploy:\n docker:\n - image: circleci/python:3.7.9-buster-node\n resource_class: small\n steps:\n - checkout\n - attach_workspace:\n at: /home/circleci/project\n - run:\n name: Setup Python\n command: |\n pipenv install\n - run:\n name: Deploy to Firebase\n no_output_timeout: 30m\n command: |\n echo $FIREBASE_JSON_KEY > \"$HOME\"/gcloud.json\n npm install firebase-tools\n export PATH=\"$PATH:`pwd`/node_modules/.bin\"\n export GOOGLE_APPLICATION_CREDENTIALS=\"$HOME\"/gcloud.json\n if [ \"$CIRCLE_BRANCH\" = \"master\" ]; then\n echo \"Deploying to prod as CIRCLE_BRANCH is equal to master!\"\n firebase deploy --only hosting > deploy-info-firebase.txt\n else\n # Get the PR number from the CIRCLE_PULL_REQUEST env variable which is in the form of:\n # https://github.com/demisto/content-docs/pull/335\n firebase hosting:channel:deploy \"pull-request-${CIRCLE_PULL_REQUEST##*/}\" --only xsoar.pan.dev > deploy-info-firebase.txt\n cat deploy-info-firebase.txt\n fi\n - run:\n name: Post Comment Firebase\n command: |\n pipenv run ./content-repo/post_github_comment.py deploy-info-firebase.txt\nworkflows:\n build_and_deploy:\n jobs:\n - build\n - deploy:\n filters:\n branches:\n only: /^(?!pull\\/).*$/\n requires:\n - build\n version: 2\n\n# Original config.yml file:\n# ### =============================================================\n# ### This configuration file is used by CircleCI build server\n# ### https://circleci.com/docs/config-sample\n# ### =============================================================\n# version: 2.1\n# jobs:\n# build:\n# \n# machine:\n# image: ubuntu-1604:202007-01\n# \n# steps:\n# - checkout\n# - restore_cache:\n# key: npm-cache-{{ checksum \\\"package-lock.json\\\" }}\n# - run:\n# name: Setup Node\n# command: |\n# echo '[ -s \\\"$NVM_DIR/nvm.sh\\\" ] && \\\\. \\\"$NVM_DIR/nvm.sh\\\"' >> $BASH_ENV\n# source $BASH_ENV\n# nvm install `cat .nvmrc` \n# - run:\n# name: Setup Python\n# command: |\n# pyenv versions\n# pyenv global 3.7.8 3.8.3\n# pip3 install pipenv\n# pipenv install\n# - run:\n# name: NPM Install\n# command: |\n# nvm use\n# node --version\n# npm --version\n# npm ci\n# - run:\n# name: NPM Build content-repo docs\n# command: |\n# nvm use\n# npm run reference-docs\n# - run:\n# name: NPM Build\n# no_output_timeout: 40m\n# environment:\n# ALGOLIA_INDEX: demisto\n# command: |\n# nvm use \n# npm run heapstats\n# npm run build-docusaurus\n# echo \\\"Build is done. Create tar of the build dir\\\"\n# tar czf build-site.tar.gz build\n# - store_artifacts:\n# path: build-site.tar.gz\n# - save_cache:\n# key: npm-cache-{{ checksum \\\"package-lock.json\\\" }}\n# paths:\n# - node_modules\n# - persist_to_workspace:\n# # Must be an absolute path, or relative path from working_directory. This is a directory on the container which is \n# # taken to be the root directory of the workspace.\n# root: /home/circleci/project\n# # Must be relative path from root\n# paths:\n# - build \n# \n# deploy:\n# docker:\n# - image: circleci/python:3.7.9-buster-node\n# resource_class: small\n# steps:\n# - checkout\n# - attach_workspace:\n# at: /home/circleci/project\n# - run:\n# name: Setup Python\n# command: | \n# pipenv install\n# - run:\n# name: Deploy to Firebase\n# no_output_timeout: 30m\n# command: |\n# echo $FIREBASE_JSON_KEY > \"$HOME\"/gcloud.json\n# npm install firebase-tools\n# export PATH=\"$PATH:`pwd`/node_modules/.bin\"\n# export GOOGLE_APPLICATION_CREDENTIALS=\"$HOME\"/gcloud.json\n# if [ \"$CIRCLE_BRANCH\" = \"master\" ]; then\n# echo \"Deploying to prod as CIRCLE_BRANCH is equal to master!\"\n# firebase deploy --only hosting > deploy-info-firebase.txt\n# else\n# # Get the PR number from the CIRCLE_PULL_REQUEST env variable which is in the form of:\n# # https://github.com/demisto/content-docs/pull/335\n# firebase hosting:channel:deploy \"pull-request-${CIRCLE_PULL_REQUEST##*/}\" --only xsoar.pan.dev > deploy-info-firebase.txt\n# cat deploy-info-firebase.txt\n# fi\n# - run:\n# name: Post Comment Firebase\n# command: |\n# pipenv run ./content-repo/post_github_comment.py deploy-info-firebase.txt\n# \n# workflows:\n# build_and_deploy:\n# jobs:\n# - build\n# - deploy:\n# requires:\n# - build\n# filters:\n# branches:\n# # only from non-fork\n# only: /^(?!pull\\\\/).*$/" - }, - "messages" : [ ], - "is_first_green_build" : false, - "job_name" : null, - "start_time" : "2020-10-16T14:12:12.867Z", - "canceler" : null, - "all_commit_details" : [ { - "committer_date" : "2020-10-16T14:12:03.000Z", - "body" : "", - "branch" : "master", - "author_date" : "2020-10-16T14:12:03.000Z", - "committer_email" : "noreply@github.com", - "commit" : "036ceaa0a0b631d9f487e436c9523086a0c63ed0", - "committer_login" : "web-flow", - "committer_name" : "GitHub", - "subject" : "Update certification.md (#344)", - "commit_url" : "https://github.com/demisto/content-docs/commit/036ceaa0a0b631d9f487e436c9523086a0c63ed0", - "author_login" : "mchasepan", - "author_name" : "Matt Chase", - "author_email" : "52938925+mchasepan@users.noreply.github.com" - } ], - "platform" : "2.0", - "outcome" : "success", - "vcs_url" : "https://github.com/demisto/content-docs", - "author_name" : "Matt Chase", - "node" : null, - "queued_at" : "2020-10-16T14:12:07.013Z", - "canceled" : false, - "author_email" : "52938925+mchasepan@users.noreply.github.com" -} \ No newline at end of file diff --git a/content-repo/test_data/github-status-event.json b/content-repo/test_data/github-status-event.json deleted file mode 100644 index 124233ca8..000000000 --- a/content-repo/test_data/github-status-event.json +++ /dev/null @@ -1,247 +0,0 @@ -{ - "avatar_url": "https://avatars2.githubusercontent.com/oa/4808?v=4", - "branches": [ - { - "commit": { - "sha": "036ceaa0a0b631d9f487e436c9523086a0c63ed0", - "url": "https://api.github.com/repos/demisto/content-docs/commits/036ceaa0a0b631d9f487e436c9523086a0c63ed0" - }, - "name": "master", - "protected": true - } - ], - "commit": { - "author": { - "avatar_url": "https://avatars3.githubusercontent.com/u/52938925?v=4", - "events_url": "https://api.github.com/users/mchasepan/events{/privacy}", - "followers_url": "https://api.github.com/users/mchasepan/followers", - "following_url": "https://api.github.com/users/mchasepan/following{/other_user}", - "gists_url": "https://api.github.com/users/mchasepan/gists{/gist_id}", - "gravatar_id": "", - "html_url": "https://github.com/mchasepan", - "id": 52938925, - "login": "mchasepan", - "node_id": "MDQ6VXNlcjUyOTM4OTI1", - "organizations_url": "https://api.github.com/users/mchasepan/orgs", - "received_events_url": "https://api.github.com/users/mchasepan/received_events", - "repos_url": "https://api.github.com/users/mchasepan/repos", - "site_admin": false, - "starred_url": "https://api.github.com/users/mchasepan/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/mchasepan/subscriptions", - "type": "User", - "url": "https://api.github.com/users/mchasepan" - }, - "comments_url": "https://api.github.com/repos/demisto/content-docs/commits/036ceaa0a0b631d9f487e436c9523086a0c63ed0/comments", - "commit": { - "author": { - "date": "2020-10-16T14:12:03Z", - "email": "52938925+mchasepan@users.noreply.github.com", - "name": "Matt Chase" - }, - "comment_count": 0, - "committer": { - "date": "2020-10-16T14:12:03Z", - "email": "noreply@github.com", - "name": "GitHub" - }, - "message": "Update certification.md (#344)", - "tree": { - "sha": "12a0fd3d491ee6926bf417aac52af1730c484daf", - "url": "https://api.github.com/repos/demisto/content-docs/git/trees/12a0fd3d491ee6926bf417aac52af1730c484daf" - }, - "url": "https://api.github.com/repos/demisto/content-docs/git/commits/036ceaa0a0b631d9f487e436c9523086a0c63ed0", - "verification": { - "payload": "tree 12a0fd3d491ee6926bf417aac52af1730c484daf\nparent ee44ab93e3eefb425ade945bcdbb51fb03d0a47a\nauthor Matt Chase <52938925+mchasepan@users.noreply.github.com> 1602857523 -0400\ncommitter GitHub 1602857523 -0400\n\nUpdate certification.md (#344)\n\n", - "reason": "valid", - "signature": "-----BEGIN PGP SIGNATURE-----\n\nwsBcBAABCAAQBQJfiaozCRBK7hj4Ov3rIwAAdHIIAJqeCpvtVoHsX6PYWVQC4SYD\nuDPRToRuzD7NIuYXAIdtdL4/D41BuHwujc9QRH0y/0eAHaBSqign7nsnacni5bEE\nhG7MYyEqSD0C0Dz6pWOPw1sS4osnvUHHps0GmLq6Z5KUGyzX1C3fVyfL3c/jHCUC\nRN7cGoAyRjsoiBU2cvW7a0Y2RknmgWICj6i7gbSdjxxYki995pCg9O6frGkuQAtr\nPQ9c1Cx1WQKoKi4wzaLTiGmLmwCxO+NBlQkO+N8xUYPEgqr447DIeS96GHB9TLzs\nWzioqKaWJv3RwzzadkOAbZ3BE5QLtb6PVdkL+JAl+NjrYM7nU7fw1bhd3xEI9Qs=\n=jyRg\n-----END PGP SIGNATURE-----\n", - "verified": true - } - }, - "committer": { - "avatar_url": "https://avatars3.githubusercontent.com/u/19864447?v=4", - "events_url": "https://api.github.com/users/web-flow/events{/privacy}", - "followers_url": "https://api.github.com/users/web-flow/followers", - "following_url": "https://api.github.com/users/web-flow/following{/other_user}", - "gists_url": "https://api.github.com/users/web-flow/gists{/gist_id}", - "gravatar_id": "", - "html_url": "https://github.com/web-flow", - "id": 19864447, - "login": "web-flow", - "node_id": "MDQ6VXNlcjE5ODY0NDQ3", - "organizations_url": "https://api.github.com/users/web-flow/orgs", - "received_events_url": "https://api.github.com/users/web-flow/received_events", - "repos_url": "https://api.github.com/users/web-flow/repos", - "site_admin": false, - "starred_url": "https://api.github.com/users/web-flow/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/web-flow/subscriptions", - "type": "User", - "url": "https://api.github.com/users/web-flow" - }, - "html_url": "https://github.com/demisto/content-docs/commit/036ceaa0a0b631d9f487e436c9523086a0c63ed0", - "node_id": "MDY6Q29tbWl0MjI1MzQzODg2OjAzNmNlYWEwYTBiNjMxZDlmNDg3ZTQzNmM5NTIzMDg2YTBjNjNlZDA=", - "parents": [ - { - "html_url": "https://github.com/demisto/content-docs/commit/ee44ab93e3eefb425ade945bcdbb51fb03d0a47a", - "sha": "ee44ab93e3eefb425ade945bcdbb51fb03d0a47a", - "url": "https://api.github.com/repos/demisto/content-docs/commits/ee44ab93e3eefb425ade945bcdbb51fb03d0a47a" - } - ], - "sha": "036ceaa0a0b631d9f487e436c9523086a0c63ed0", - "url": "https://api.github.com/repos/demisto/content-docs/commits/036ceaa0a0b631d9f487e436c9523086a0c63ed0" - }, - "context": "ci/circleci: build", - "created_at": "2020-10-16T14:40:41+00:00", - "description": "Your tests passed on CircleCI!", - "enterprise": { - "avatar_url": "https://avatars1.githubusercontent.com/b/725?v=4", - "created_at": "2019-08-29T23:03:40Z", - "description": "We ensure each day is safer and more secure than the one before.", - "html_url": "https://github.com/enterprises/palo-alto-networks", - "id": 725, - "name": "Palo Alto Networks", - "node_id": "MDEwOkVudGVycHJpc2U3MjU=", - "slug": "palo-alto-networks", - "updated_at": "2020-06-16T18:54:52Z", - "website_url": "https://www.paloaltonetworks.com" - }, - "id": 11074477310, - "name": "demisto/content-docs", - "organization": { - "avatar_url": "https://avatars1.githubusercontent.com/u/11011767?v=4", - "description": "Automated and collaborative incident response platform", - "events_url": "https://api.github.com/orgs/demisto/events", - "hooks_url": "https://api.github.com/orgs/demisto/hooks", - "id": 11011767, - "issues_url": "https://api.github.com/orgs/demisto/issues", - "login": "demisto", - "members_url": "https://api.github.com/orgs/demisto/members{/member}", - "node_id": "MDEyOk9yZ2FuaXphdGlvbjExMDExNzY3", - "public_members_url": "https://api.github.com/orgs/demisto/public_members{/member}", - "repos_url": "https://api.github.com/orgs/demisto/repos", - "url": "https://api.github.com/orgs/demisto" - }, - "repository": { - "archive_url": "https://api.github.com/repos/demisto/content-docs/{archive_format}{/ref}", - "archived": false, - "assignees_url": "https://api.github.com/repos/demisto/content-docs/assignees{/user}", - "blobs_url": "https://api.github.com/repos/demisto/content-docs/git/blobs{/sha}", - "branches_url": "https://api.github.com/repos/demisto/content-docs/branches{/branch}", - "clone_url": "https://github.com/demisto/content-docs.git", - "collaborators_url": "https://api.github.com/repos/demisto/content-docs/collaborators{/collaborator}", - "comments_url": "https://api.github.com/repos/demisto/content-docs/comments{/number}", - "commits_url": "https://api.github.com/repos/demisto/content-docs/commits{/sha}", - "compare_url": "https://api.github.com/repos/demisto/content-docs/compare/{base}...{head}", - "contents_url": "https://api.github.com/repos/demisto/content-docs/contents/{+path}", - "contributors_url": "https://api.github.com/repos/demisto/content-docs/contributors", - "created_at": "2019-12-02T10:08:43Z", - "default_branch": "master", - "deployments_url": "https://api.github.com/repos/demisto/content-docs/deployments", - "description": "Demisto Content Developer Docs", - "disabled": false, - "downloads_url": "https://api.github.com/repos/demisto/content-docs/downloads", - "events_url": "https://api.github.com/repos/demisto/content-docs/events", - "fork": false, - "forks": 19, - "forks_count": 19, - "forks_url": "https://api.github.com/repos/demisto/content-docs/forks", - "full_name": "demisto/content-docs", - "git_commits_url": "https://api.github.com/repos/demisto/content-docs/git/commits{/sha}", - "git_refs_url": "https://api.github.com/repos/demisto/content-docs/git/refs{/sha}", - "git_tags_url": "https://api.github.com/repos/demisto/content-docs/git/tags{/sha}", - "git_url": "git://github.com/demisto/content-docs.git", - "has_downloads": true, - "has_issues": true, - "has_pages": false, - "has_projects": false, - "has_wiki": false, - "homepage": "https://xsoar.pan.dev/", - "hooks_url": "https://api.github.com/repos/demisto/content-docs/hooks", - "html_url": "https://github.com/demisto/content-docs", - "id": 225343886, - "issue_comment_url": "https://api.github.com/repos/demisto/content-docs/issues/comments{/number}", - "issue_events_url": "https://api.github.com/repos/demisto/content-docs/issues/events{/number}", - "issues_url": "https://api.github.com/repos/demisto/content-docs/issues{/number}", - "keys_url": "https://api.github.com/repos/demisto/content-docs/keys{/key_id}", - "labels_url": "https://api.github.com/repos/demisto/content-docs/labels{/name}", - "language": "Python", - "languages_url": "https://api.github.com/repos/demisto/content-docs/languages", - "license": { - "key": "mit", - "name": "MIT License", - "node_id": "MDc6TGljZW5zZTEz", - "spdx_id": "MIT", - "url": "https://api.github.com/licenses/mit" - }, - "merges_url": "https://api.github.com/repos/demisto/content-docs/merges", - "milestones_url": "https://api.github.com/repos/demisto/content-docs/milestones{/number}", - "mirror_url": null, - "name": "content-docs", - "node_id": "MDEwOlJlcG9zaXRvcnkyMjUzNDM4ODY=", - "notifications_url": "https://api.github.com/repos/demisto/content-docs/notifications{?since,all,participating}", - "open_issues": 10, - "open_issues_count": 10, - "owner": { - "avatar_url": "https://avatars1.githubusercontent.com/u/11011767?v=4", - "events_url": "https://api.github.com/users/demisto/events{/privacy}", - "followers_url": "https://api.github.com/users/demisto/followers", - "following_url": "https://api.github.com/users/demisto/following{/other_user}", - "gists_url": "https://api.github.com/users/demisto/gists{/gist_id}", - "gravatar_id": "", - "html_url": "https://github.com/demisto", - "id": 11011767, - "login": "demisto", - "node_id": "MDEyOk9yZ2FuaXphdGlvbjExMDExNzY3", - "organizations_url": "https://api.github.com/users/demisto/orgs", - "received_events_url": "https://api.github.com/users/demisto/received_events", - "repos_url": "https://api.github.com/users/demisto/repos", - "site_admin": false, - "starred_url": "https://api.github.com/users/demisto/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/demisto/subscriptions", - "type": "Organization", - "url": "https://api.github.com/users/demisto" - }, - "private": false, - "pulls_url": "https://api.github.com/repos/demisto/content-docs/pulls{/number}", - "pushed_at": "2020-10-16T14:12:06Z", - "releases_url": "https://api.github.com/repos/demisto/content-docs/releases{/id}", - "size": 59183, - "ssh_url": "git@github.com:demisto/content-docs.git", - "stargazers_count": 10, - "stargazers_url": "https://api.github.com/repos/demisto/content-docs/stargazers", - "statuses_url": "https://api.github.com/repos/demisto/content-docs/statuses/{sha}", - "subscribers_url": "https://api.github.com/repos/demisto/content-docs/subscribers", - "subscription_url": "https://api.github.com/repos/demisto/content-docs/subscription", - "svn_url": "https://github.com/demisto/content-docs", - "tags_url": "https://api.github.com/repos/demisto/content-docs/tags", - "teams_url": "https://api.github.com/repos/demisto/content-docs/teams", - "trees_url": "https://api.github.com/repos/demisto/content-docs/git/trees{/sha}", - "updated_at": "2020-10-16T14:12:07Z", - "url": "https://api.github.com/repos/demisto/content-docs", - "watchers": 10, - "watchers_count": 10 - }, - "sender": { - "avatar_url": "https://avatars1.githubusercontent.com/u/1395797?v=4", - "events_url": "https://api.github.com/users/glicht/events{/privacy}", - "followers_url": "https://api.github.com/users/glicht/followers", - "following_url": "https://api.github.com/users/glicht/following{/other_user}", - "gists_url": "https://api.github.com/users/glicht/gists{/gist_id}", - "gravatar_id": "", - "html_url": "https://github.com/glicht", - "id": 1395797, - "login": "glicht", - "node_id": "MDQ6VXNlcjEzOTU3OTc=", - "organizations_url": "https://api.github.com/users/glicht/orgs", - "received_events_url": "https://api.github.com/users/glicht/received_events", - "repos_url": "https://api.github.com/users/glicht/repos", - "site_admin": false, - "starred_url": "https://api.github.com/users/glicht/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/glicht/subscriptions", - "type": "User", - "url": "https://api.github.com/users/glicht" - }, - "sha": "036ceaa0a0b631d9f487e436c9523086a0c63ed0", - "state": "success", - "target_url": "https://circleci.com/gh/demisto/content-docs/153?utm_campaign=vcs-integration-link&utm_medium=referral&utm_source=github-build-link", - "updated_at": "2020-10-16T14:40:41+00:00" -} \ No newline at end of file diff --git a/poetry.lock b/poetry.lock new file mode 100644 index 000000000..34bcbf6df --- /dev/null +++ b/poetry.lock @@ -0,0 +1,1458 @@ +# This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand. + +[[package]] +name = "beautifulsoup4" +version = "4.12.2" +description = "Screen-scraping library" +optional = false +python-versions = ">=3.6.0" +files = [ + {file = "beautifulsoup4-4.12.2-py3-none-any.whl", hash = "sha256:bd2520ca0d9d7d12694a53d44ac482d181b4ec1888909b035a3dbf40d0f57d4a"}, + {file = "beautifulsoup4-4.12.2.tar.gz", hash = "sha256:492bbc69dca35d12daac71c4db1bfff0c876c00ef4a2ffacce226d4638eb72da"}, +] + +[package.dependencies] +soupsieve = ">1.2" + +[package.extras] +html5lib = ["html5lib"] +lxml = ["lxml"] + +[[package]] +name = "cachetools" +version = "5.3.1" +description = "Extensible memoizing collections and decorators" +optional = false +python-versions = ">=3.7" +files = [ + {file = "cachetools-5.3.1-py3-none-any.whl", hash = "sha256:95ef631eeaea14ba2e36f06437f36463aac3a096799e876ee55e5cdccb102590"}, + {file = "cachetools-5.3.1.tar.gz", hash = "sha256:dce83f2d9b4e1f732a8cd44af8e8fab2dbe46201467fc98b3ef8f269092bf62b"}, +] + +[[package]] +name = "certifi" +version = "2023.5.7" +description = "Python package for providing Mozilla's CA Bundle." +optional = false +python-versions = ">=3.6" +files = [ + {file = "certifi-2023.5.7-py3-none-any.whl", hash = "sha256:c6c2e98f5c7869efca1f8916fed228dd91539f9f1b444c314c06eef02980c716"}, + {file = "certifi-2023.5.7.tar.gz", hash = "sha256:0f0d56dc5a6ad56fd4ba36484d6cc34451e1c6548c61daad8c320169f91eddc7"}, +] + +[[package]] +name = "charset-normalizer" +version = "3.1.0" +description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." +optional = false +python-versions = ">=3.7.0" +files = [ + {file = "charset-normalizer-3.1.0.tar.gz", hash = "sha256:34e0a2f9c370eb95597aae63bf85eb5e96826d81e3dcf88b8886012906f509b5"}, + {file = "charset_normalizer-3.1.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:e0ac8959c929593fee38da1c2b64ee9778733cdf03c482c9ff1d508b6b593b2b"}, + {file = "charset_normalizer-3.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d7fc3fca01da18fbabe4625d64bb612b533533ed10045a2ac3dd194bfa656b60"}, + {file = "charset_normalizer-3.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:04eefcee095f58eaabe6dc3cc2262f3bcd776d2c67005880894f447b3f2cb9c1"}, + {file = "charset_normalizer-3.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:20064ead0717cf9a73a6d1e779b23d149b53daf971169289ed2ed43a71e8d3b0"}, + {file = "charset_normalizer-3.1.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1435ae15108b1cb6fffbcea2af3d468683b7afed0169ad718451f8db5d1aff6f"}, + {file = "charset_normalizer-3.1.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c84132a54c750fda57729d1e2599bb598f5fa0344085dbde5003ba429a4798c0"}, + {file = "charset_normalizer-3.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:75f2568b4189dda1c567339b48cba4ac7384accb9c2a7ed655cd86b04055c795"}, + {file = "charset_normalizer-3.1.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:11d3bcb7be35e7b1bba2c23beedac81ee893ac9871d0ba79effc7fc01167db6c"}, + {file = "charset_normalizer-3.1.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:891cf9b48776b5c61c700b55a598621fdb7b1e301a550365571e9624f270c203"}, + {file = "charset_normalizer-3.1.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:5f008525e02908b20e04707a4f704cd286d94718f48bb33edddc7d7b584dddc1"}, + {file = "charset_normalizer-3.1.0-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:b06f0d3bf045158d2fb8837c5785fe9ff9b8c93358be64461a1089f5da983137"}, + {file = "charset_normalizer-3.1.0-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:49919f8400b5e49e961f320c735388ee686a62327e773fa5b3ce6721f7e785ce"}, + {file = "charset_normalizer-3.1.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:22908891a380d50738e1f978667536f6c6b526a2064156203d418f4856d6e86a"}, + {file = "charset_normalizer-3.1.0-cp310-cp310-win32.whl", hash = "sha256:12d1a39aa6b8c6f6248bb54550efcc1c38ce0d8096a146638fd4738e42284448"}, + {file = "charset_normalizer-3.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:65ed923f84a6844de5fd29726b888e58c62820e0769b76565480e1fdc3d062f8"}, + {file = "charset_normalizer-3.1.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9a3267620866c9d17b959a84dd0bd2d45719b817245e49371ead79ed4f710d19"}, + {file = "charset_normalizer-3.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6734e606355834f13445b6adc38b53c0fd45f1a56a9ba06c2058f86893ae8017"}, + {file = "charset_normalizer-3.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f8303414c7b03f794347ad062c0516cee0e15f7a612abd0ce1e25caf6ceb47df"}, + {file = "charset_normalizer-3.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aaf53a6cebad0eae578f062c7d462155eada9c172bd8c4d250b8c1d8eb7f916a"}, + {file = "charset_normalizer-3.1.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3dc5b6a8ecfdc5748a7e429782598e4f17ef378e3e272eeb1340ea57c9109f41"}, + {file = "charset_normalizer-3.1.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e1b25e3ad6c909f398df8921780d6a3d120d8c09466720226fc621605b6f92b1"}, + {file = "charset_normalizer-3.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0ca564606d2caafb0abe6d1b5311c2649e8071eb241b2d64e75a0d0065107e62"}, + {file = "charset_normalizer-3.1.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b82fab78e0b1329e183a65260581de4375f619167478dddab510c6c6fb04d9b6"}, + {file = "charset_normalizer-3.1.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:bd7163182133c0c7701b25e604cf1611c0d87712e56e88e7ee5d72deab3e76b5"}, + {file = "charset_normalizer-3.1.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:11d117e6c63e8f495412d37e7dc2e2fff09c34b2d09dbe2bee3c6229577818be"}, + {file = "charset_normalizer-3.1.0-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:cf6511efa4801b9b38dc5546d7547d5b5c6ef4b081c60b23e4d941d0eba9cbeb"}, + {file = "charset_normalizer-3.1.0-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:abc1185d79f47c0a7aaf7e2412a0eb2c03b724581139193d2d82b3ad8cbb00ac"}, + {file = "charset_normalizer-3.1.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:cb7b2ab0188829593b9de646545175547a70d9a6e2b63bf2cd87a0a391599324"}, + {file = "charset_normalizer-3.1.0-cp311-cp311-win32.whl", hash = "sha256:c36bcbc0d5174a80d6cccf43a0ecaca44e81d25be4b7f90f0ed7bcfbb5a00909"}, + {file = "charset_normalizer-3.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:cca4def576f47a09a943666b8f829606bcb17e2bc2d5911a46c8f8da45f56755"}, + {file = "charset_normalizer-3.1.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:0c95f12b74681e9ae127728f7e5409cbbef9cd914d5896ef238cc779b8152373"}, + {file = "charset_normalizer-3.1.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fca62a8301b605b954ad2e9c3666f9d97f63872aa4efcae5492baca2056b74ab"}, + {file = "charset_normalizer-3.1.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ac0aa6cd53ab9a31d397f8303f92c42f534693528fafbdb997c82bae6e477ad9"}, + {file = "charset_normalizer-3.1.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c3af8e0f07399d3176b179f2e2634c3ce9c1301379a6b8c9c9aeecd481da494f"}, + {file = "charset_normalizer-3.1.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a5fc78f9e3f501a1614a98f7c54d3969f3ad9bba8ba3d9b438c3bc5d047dd28"}, + {file = "charset_normalizer-3.1.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:628c985afb2c7d27a4800bfb609e03985aaecb42f955049957814e0491d4006d"}, + {file = "charset_normalizer-3.1.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:74db0052d985cf37fa111828d0dd230776ac99c740e1a758ad99094be4f1803d"}, + {file = "charset_normalizer-3.1.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:1e8fcdd8f672a1c4fc8d0bd3a2b576b152d2a349782d1eb0f6b8e52e9954731d"}, + {file = "charset_normalizer-3.1.0-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:04afa6387e2b282cf78ff3dbce20f0cc071c12dc8f685bd40960cc68644cfea6"}, + {file = "charset_normalizer-3.1.0-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:dd5653e67b149503c68c4018bf07e42eeed6b4e956b24c00ccdf93ac79cdff84"}, + {file = "charset_normalizer-3.1.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:d2686f91611f9e17f4548dbf050e75b079bbc2a82be565832bc8ea9047b61c8c"}, + {file = "charset_normalizer-3.1.0-cp37-cp37m-win32.whl", hash = "sha256:4155b51ae05ed47199dc5b2a4e62abccb274cee6b01da5b895099b61b1982974"}, + {file = "charset_normalizer-3.1.0-cp37-cp37m-win_amd64.whl", hash = "sha256:322102cdf1ab682ecc7d9b1c5eed4ec59657a65e1c146a0da342b78f4112db23"}, + {file = "charset_normalizer-3.1.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:e633940f28c1e913615fd624fcdd72fdba807bf53ea6925d6a588e84e1151531"}, + {file = "charset_normalizer-3.1.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:3a06f32c9634a8705f4ca9946d667609f52cf130d5548881401f1eb2c39b1e2c"}, + {file = "charset_normalizer-3.1.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:7381c66e0561c5757ffe616af869b916c8b4e42b367ab29fedc98481d1e74e14"}, + {file = "charset_normalizer-3.1.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3573d376454d956553c356df45bb824262c397c6e26ce43e8203c4c540ee0acb"}, + {file = "charset_normalizer-3.1.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e89df2958e5159b811af9ff0f92614dabf4ff617c03a4c1c6ff53bf1c399e0e1"}, + {file = "charset_normalizer-3.1.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:78cacd03e79d009d95635e7d6ff12c21eb89b894c354bd2b2ed0b4763373693b"}, + {file = "charset_normalizer-3.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:de5695a6f1d8340b12a5d6d4484290ee74d61e467c39ff03b39e30df62cf83a0"}, + {file = "charset_normalizer-3.1.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1c60b9c202d00052183c9be85e5eaf18a4ada0a47d188a83c8f5c5b23252f649"}, + {file = "charset_normalizer-3.1.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:f645caaf0008bacf349875a974220f1f1da349c5dbe7c4ec93048cdc785a3326"}, + {file = "charset_normalizer-3.1.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:ea9f9c6034ea2d93d9147818f17c2a0860d41b71c38b9ce4d55f21b6f9165a11"}, + {file = "charset_normalizer-3.1.0-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:80d1543d58bd3d6c271b66abf454d437a438dff01c3e62fdbcd68f2a11310d4b"}, + {file = "charset_normalizer-3.1.0-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:73dc03a6a7e30b7edc5b01b601e53e7fc924b04e1835e8e407c12c037e81adbd"}, + {file = "charset_normalizer-3.1.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:6f5c2e7bc8a4bf7c426599765b1bd33217ec84023033672c1e9a8b35eaeaaaf8"}, + {file = "charset_normalizer-3.1.0-cp38-cp38-win32.whl", hash = "sha256:12a2b561af122e3d94cdb97fe6fb2bb2b82cef0cdca131646fdb940a1eda04f0"}, + {file = "charset_normalizer-3.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:3160a0fd9754aab7d47f95a6b63ab355388d890163eb03b2d2b87ab0a30cfa59"}, + {file = "charset_normalizer-3.1.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:38e812a197bf8e71a59fe55b757a84c1f946d0ac114acafaafaf21667a7e169e"}, + {file = "charset_normalizer-3.1.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6baf0baf0d5d265fa7944feb9f7451cc316bfe30e8df1a61b1bb08577c554f31"}, + {file = "charset_normalizer-3.1.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:8f25e17ab3039b05f762b0a55ae0b3632b2e073d9c8fc88e89aca31a6198e88f"}, + {file = "charset_normalizer-3.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3747443b6a904001473370d7810aa19c3a180ccd52a7157aacc264a5ac79265e"}, + {file = "charset_normalizer-3.1.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b116502087ce8a6b7a5f1814568ccbd0e9f6cfd99948aa59b0e241dc57cf739f"}, + {file = "charset_normalizer-3.1.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d16fd5252f883eb074ca55cb622bc0bee49b979ae4e8639fff6ca3ff44f9f854"}, + {file = "charset_normalizer-3.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21fa558996782fc226b529fdd2ed7866c2c6ec91cee82735c98a197fae39f706"}, + {file = "charset_normalizer-3.1.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6f6c7a8a57e9405cad7485f4c9d3172ae486cfef1344b5ddd8e5239582d7355e"}, + {file = "charset_normalizer-3.1.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:ac3775e3311661d4adace3697a52ac0bab17edd166087d493b52d4f4f553f9f0"}, + {file = "charset_normalizer-3.1.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:10c93628d7497c81686e8e5e557aafa78f230cd9e77dd0c40032ef90c18f2230"}, + {file = "charset_normalizer-3.1.0-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:6f4f4668e1831850ebcc2fd0b1cd11721947b6dc7c00bf1c6bd3c929ae14f2c7"}, + {file = "charset_normalizer-3.1.0-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:0be65ccf618c1e7ac9b849c315cc2e8a8751d9cfdaa43027d4f6624bd587ab7e"}, + {file = "charset_normalizer-3.1.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:53d0a3fa5f8af98a1e261de6a3943ca631c526635eb5817a87a59d9a57ebf48f"}, + {file = "charset_normalizer-3.1.0-cp39-cp39-win32.whl", hash = "sha256:a04f86f41a8916fe45ac5024ec477f41f886b3c435da2d4e3d2709b22ab02af1"}, + {file = "charset_normalizer-3.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:830d2948a5ec37c386d3170c483063798d7879037492540f10a475e3fd6f244b"}, + {file = "charset_normalizer-3.1.0-py3-none-any.whl", hash = "sha256:3d9098b479e78c85080c98e1e35ff40b4a31d8953102bb0fd7d1b6f8a2111a3d"}, +] + +[[package]] +name = "click" +version = "7.1.2" +description = "Composable command line interface toolkit" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +files = [ + {file = "click-7.1.2-py2.py3-none-any.whl", hash = "sha256:dacca89f4bfadd5de3d7489b7c8a566eee0d3676333fbb50030263894c38c0dc"}, + {file = "click-7.1.2.tar.gz", hash = "sha256:d2b5255c7c6349bc1bd1e59e08cd12acbbd63ce649f2588755783aa94dfb6b1a"}, +] + +[[package]] +name = "colorama" +version = "0.4.6" +description = "Cross-platform colored terminal text." +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" +files = [ + {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, + {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, +] + +[[package]] +name = "dateparser" +version = "1.2.0" +description = "Date parsing library designed to parse dates from HTML pages" +optional = false +python-versions = ">=3.7" +files = [ + {file = "dateparser-1.2.0-py2.py3-none-any.whl", hash = "sha256:0b21ad96534e562920a0083e97fd45fa959882d4162acc358705144520a35830"}, + {file = "dateparser-1.2.0.tar.gz", hash = "sha256:7975b43a4222283e0ae15be7b4999d08c9a70e2d378ac87385b1ccf2cffbbb30"}, +] + +[package.dependencies] +python-dateutil = "*" +pytz = "*" +regex = "<2019.02.19 || >2019.02.19,<2021.8.27 || >2021.8.27" +tzlocal = "*" + +[package.extras] +calendars = ["convertdate", "hijri-converter"] +fasttext = ["fasttext"] +langdetect = ["langdetect"] + +[[package]] +name = "defusedxml" +version = "0.7.1" +description = "XML bomb protection for Python stdlib modules" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +files = [ + {file = "defusedxml-0.7.1-py2.py3-none-any.whl", hash = "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61"}, + {file = "defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69"}, +] + +[[package]] +name = "docspec" +version = "0.2.1" +description = "Docspec is a JSON object specification for representing API documentation of programming languages." +optional = false +python-versions = ">=3.6.0,<4.0.0" +files = [ + {file = "docspec-0.2.1-py3-none-any.whl", hash = "sha256:1792cb79d5e6f39aa0c4c17b26b283e2e044b3adb7457151b21e14dca44d5d43"}, + {file = "docspec-0.2.1.tar.gz", hash = "sha256:8ff14da2cdf69a958c3e25c748d629129e38d3145cf5d0c4d55da8e6cfa0cd29"}, +] + +[package.dependencies] +"nr.databind.core" = ">=0.0.19,<0.1.0" +"nr.databind.json" = ">=0.0.9,<0.1.0" + +[[package]] +name = "docspec-python" +version = "0.1.0" +description = "A parser based on lib2to3 producing docspec data from Python source code." +optional = false +python-versions = ">=3.5.0,<4.0.0" +files = [ + {file = "docspec-python-0.1.0.tar.gz", hash = "sha256:8858dc3318b6a67d8452a89ac5c14a15c73f1aa1dd72f9cf63eaa9687082d278"}, + {file = "docspec_python-0.1.0-py3-none-any.whl", hash = "sha256:86561c77dc9ebe4f7d9c224c0740cd66407db849a78580a7509963d4e2c02dfe"}, +] + +[package.dependencies] +docspec = ">=0.2.0,<0.3.0" +"nr.sumtype" = ">=0.0.3,<0.1.0" + +[[package]] +name = "exceptiongroup" +version = "1.2.2" +description = "Backport of PEP 654 (exception groups)" +optional = false +python-versions = ">=3.7" +files = [ + {file = "exceptiongroup-1.2.2-py3-none-any.whl", hash = "sha256:3111b9d131c238bec2f8f516e123e14ba243563fb135d3fe885990585aa7795b"}, + {file = "exceptiongroup-1.2.2.tar.gz", hash = "sha256:47c2edf7c6738fafb49fd34290706d1a1a2f4d1c6df275526b62cbb4aa5393cc"}, +] + +[package.extras] +test = ["pytest (>=6)"] + +[[package]] +name = "freezegun" +version = "1.5.1" +description = "Let your Python tests travel through time" +optional = false +python-versions = ">=3.7" +files = [ + {file = "freezegun-1.5.1-py3-none-any.whl", hash = "sha256:bf111d7138a8abe55ab48a71755673dbaa4ab87f4cff5634a4442dfec34c15f1"}, + {file = "freezegun-1.5.1.tar.gz", hash = "sha256:b29dedfcda6d5e8e083ce71b2b542753ad48cfec44037b3fc79702e2980a89e9"}, +] + +[package.dependencies] +python-dateutil = ">=2.7" + +[[package]] +name = "gitdb" +version = "4.0.11" +description = "Git Object Database" +optional = false +python-versions = ">=3.7" +files = [ + {file = "gitdb-4.0.11-py3-none-any.whl", hash = "sha256:81a3407ddd2ee8df444cbacea00e2d038e40150acfa3001696fe0dcf1d3adfa4"}, + {file = "gitdb-4.0.11.tar.gz", hash = "sha256:bf5421126136d6d0af55bc1e7c1af1c397a34f5b7bd79e776cd3e89785c2b04b"}, +] + +[package.dependencies] +smmap = ">=3.0.1,<6" + +[[package]] +name = "gitpython" +version = "3.1.43" +description = "GitPython is a Python library used to interact with Git repositories" +optional = false +python-versions = ">=3.7" +files = [ + {file = "GitPython-3.1.43-py3-none-any.whl", hash = "sha256:eec7ec56b92aad751f9912a73404bc02ba212a23adb2c7098ee668417051a1ff"}, + {file = "GitPython-3.1.43.tar.gz", hash = "sha256:35f314a9f878467f5453cc1fee295c3e18e52f1b99f10f6cf5b1682e968a9e7c"}, +] + +[package.dependencies] +gitdb = ">=4.0.1,<5" + +[package.extras] +doc = ["sphinx (==4.3.2)", "sphinx-autodoc-typehints", "sphinx-rtd-theme", "sphinxcontrib-applehelp (>=1.0.2,<=1.0.4)", "sphinxcontrib-devhelp (==1.0.2)", "sphinxcontrib-htmlhelp (>=2.0.0,<=2.0.1)", "sphinxcontrib-qthelp (==1.0.3)", "sphinxcontrib-serializinghtml (==1.1.5)"] +test = ["coverage[toml]", "ddt (>=1.1.1,!=1.4.3)", "mock", "mypy", "pre-commit", "pytest (>=7.3.1)", "pytest-cov", "pytest-instafail", "pytest-mock", "pytest-sugar", "typing-extensions"] + +[[package]] +name = "google-api-core" +version = "2.20.0" +description = "Google API client core library" +optional = false +python-versions = ">=3.7" +files = [ + {file = "google_api_core-2.20.0-py3-none-any.whl", hash = "sha256:ef0591ef03c30bb83f79b3d0575c3f31219001fc9c5cf37024d08310aeffed8a"}, + {file = "google_api_core-2.20.0.tar.gz", hash = "sha256:f74dff1889ba291a4b76c5079df0711810e2d9da81abfdc99957bc961c1eb28f"}, +] + +[package.dependencies] +google-auth = ">=2.14.1,<3.0.dev0" +googleapis-common-protos = ">=1.56.2,<2.0.dev0" +proto-plus = ">=1.22.3,<2.0.0dev" +protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<6.0.0.dev0" +requests = ">=2.18.0,<3.0.0.dev0" + +[package.extras] +grpc = ["grpcio (>=1.33.2,<2.0dev)", "grpcio (>=1.49.1,<2.0dev)", "grpcio-status (>=1.33.2,<2.0.dev0)", "grpcio-status (>=1.49.1,<2.0.dev0)"] +grpcgcp = ["grpcio-gcp (>=0.2.2,<1.0.dev0)"] +grpcio-gcp = ["grpcio-gcp (>=0.2.2,<1.0.dev0)"] + +[[package]] +name = "google-api-python-client" +version = "2.147.0" +description = "Google API Client Library for Python" +optional = false +python-versions = ">=3.7" +files = [ + {file = "google_api_python_client-2.147.0-py2.py3-none-any.whl", hash = "sha256:c6ecfa193c695baa41e84562d8f8f244fcd164419eca3fc9fd7565646668f9b2"}, + {file = "google_api_python_client-2.147.0.tar.gz", hash = "sha256:e864c2cf61d34c00f05278b8bdb72b93b6fa34f0de9ead51d20435f3b65f91be"}, +] + +[package.dependencies] +google-api-core = ">=1.31.5,<2.0.dev0 || >2.3.0,<3.0.0.dev0" +google-auth = ">=1.32.0,<2.24.0 || >2.24.0,<2.25.0 || >2.25.0,<3.0.0.dev0" +google-auth-httplib2 = ">=0.2.0,<1.0.0" +httplib2 = ">=0.19.0,<1.dev0" +uritemplate = ">=3.0.1,<5" + +[[package]] +name = "google-auth" +version = "2.35.0" +description = "Google Authentication Library" +optional = false +python-versions = ">=3.7" +files = [ + {file = "google_auth-2.35.0-py2.py3-none-any.whl", hash = "sha256:25df55f327ef021de8be50bad0dfd4a916ad0de96da86cd05661c9297723ad3f"}, + {file = "google_auth-2.35.0.tar.gz", hash = "sha256:f4c64ed4e01e8e8b646ef34c018f8bf3338df0c8e37d8b3bba40e7f574a3278a"}, +] + +[package.dependencies] +cachetools = ">=2.0.0,<6.0" +pyasn1-modules = ">=0.2.1" +rsa = ">=3.1.4,<5" + +[package.extras] +aiohttp = ["aiohttp (>=3.6.2,<4.0.0.dev0)", "requests (>=2.20.0,<3.0.0.dev0)"] +enterprise-cert = ["cryptography", "pyopenssl"] +pyopenssl = ["cryptography (>=38.0.3)", "pyopenssl (>=20.0.0)"] +reauth = ["pyu2f (>=0.1.5)"] +requests = ["requests (>=2.20.0,<3.0.0.dev0)"] + +[[package]] +name = "google-auth-httplib2" +version = "0.2.0" +description = "Google Authentication Library: httplib2 transport" +optional = false +python-versions = "*" +files = [ + {file = "google-auth-httplib2-0.2.0.tar.gz", hash = "sha256:38aa7badf48f974f1eb9861794e9c0cb2a0511a4ec0679b1f886d108f5640e05"}, + {file = "google_auth_httplib2-0.2.0-py2.py3-none-any.whl", hash = "sha256:b65a0a2123300dd71281a7bf6e64d65a0759287df52729bdd1ae2e47dc311a3d"}, +] + +[package.dependencies] +google-auth = "*" +httplib2 = ">=0.19.0" + +[[package]] +name = "google-cloud-core" +version = "2.4.1" +description = "Google Cloud API client core library" +optional = false +python-versions = ">=3.7" +files = [ + {file = "google-cloud-core-2.4.1.tar.gz", hash = "sha256:9b7749272a812bde58fff28868d0c5e2f585b82f37e09a1f6ed2d4d10f134073"}, + {file = "google_cloud_core-2.4.1-py2.py3-none-any.whl", hash = "sha256:a9e6a4422b9ac5c29f79a0ede9485473338e2ce78d91f2370c01e730eab22e61"}, +] + +[package.dependencies] +google-api-core = ">=1.31.6,<2.0.dev0 || >2.3.0,<3.0.0dev" +google-auth = ">=1.25.0,<3.0dev" + +[package.extras] +grpc = ["grpcio (>=1.38.0,<2.0dev)", "grpcio-status (>=1.38.0,<2.0.dev0)"] + +[[package]] +name = "google-cloud-storage" +version = "2.18.2" +description = "Google Cloud Storage API client library" +optional = false +python-versions = ">=3.7" +files = [ + {file = "google_cloud_storage-2.18.2-py2.py3-none-any.whl", hash = "sha256:97a4d45c368b7d401ed48c4fdfe86e1e1cb96401c9e199e419d289e2c0370166"}, + {file = "google_cloud_storage-2.18.2.tar.gz", hash = "sha256:aaf7acd70cdad9f274d29332673fcab98708d0e1f4dceb5a5356aaef06af4d99"}, +] + +[package.dependencies] +google-api-core = ">=2.15.0,<3.0.0dev" +google-auth = ">=2.26.1,<3.0dev" +google-cloud-core = ">=2.3.0,<3.0dev" +google-crc32c = ">=1.0,<2.0dev" +google-resumable-media = ">=2.7.2" +requests = ">=2.18.0,<3.0.0dev" + +[package.extras] +protobuf = ["protobuf (<6.0.0dev)"] +tracing = ["opentelemetry-api (>=1.1.0)"] + +[[package]] +name = "google-crc32c" +version = "1.6.0" +description = "A python wrapper of the C library 'Google CRC32C'" +optional = false +python-versions = ">=3.9" +files = [ + {file = "google_crc32c-1.6.0-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:5bcc90b34df28a4b38653c36bb5ada35671ad105c99cfe915fb5bed7ad6924aa"}, + {file = "google_crc32c-1.6.0-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:d9e9913f7bd69e093b81da4535ce27af842e7bf371cde42d1ae9e9bd382dc0e9"}, + {file = "google_crc32c-1.6.0-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:a184243544811e4a50d345838a883733461e67578959ac59964e43cca2c791e7"}, + {file = "google_crc32c-1.6.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:236c87a46cdf06384f614e9092b82c05f81bd34b80248021f729396a78e55d7e"}, + {file = "google_crc32c-1.6.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ebab974b1687509e5c973b5c4b8b146683e101e102e17a86bd196ecaa4d099fc"}, + {file = "google_crc32c-1.6.0-cp310-cp310-win_amd64.whl", hash = "sha256:50cf2a96da226dcbff8671233ecf37bf6e95de98b2a2ebadbfdf455e6d05df42"}, + {file = "google_crc32c-1.6.0-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:f7a1fc29803712f80879b0806cb83ab24ce62fc8daf0569f2204a0cfd7f68ed4"}, + {file = "google_crc32c-1.6.0-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:40b05ab32a5067525670880eb5d169529089a26fe35dce8891127aeddc1950e8"}, + {file = "google_crc32c-1.6.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a9e4b426c3702f3cd23b933436487eb34e01e00327fac20c9aebb68ccf34117d"}, + {file = "google_crc32c-1.6.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:51c4f54dd8c6dfeb58d1df5e4f7f97df8abf17a36626a217f169893d1d7f3e9f"}, + {file = "google_crc32c-1.6.0-cp311-cp311-win_amd64.whl", hash = "sha256:bb8b3c75bd157010459b15222c3fd30577042a7060e29d42dabce449c087f2b3"}, + {file = "google_crc32c-1.6.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:ed767bf4ba90104c1216b68111613f0d5926fb3780660ea1198fc469af410e9d"}, + {file = "google_crc32c-1.6.0-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:62f6d4a29fea082ac4a3c9be5e415218255cf11684ac6ef5488eea0c9132689b"}, + {file = "google_crc32c-1.6.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c87d98c7c4a69066fd31701c4e10d178a648c2cac3452e62c6b24dc51f9fcc00"}, + {file = "google_crc32c-1.6.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bd5e7d2445d1a958c266bfa5d04c39932dc54093fa391736dbfdb0f1929c1fb3"}, + {file = "google_crc32c-1.6.0-cp312-cp312-win_amd64.whl", hash = "sha256:7aec8e88a3583515f9e0957fe4f5f6d8d4997e36d0f61624e70469771584c760"}, + {file = "google_crc32c-1.6.0-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:e2806553238cd076f0a55bddab37a532b53580e699ed8e5606d0de1f856b5205"}, + {file = "google_crc32c-1.6.0-cp39-cp39-macosx_12_0_x86_64.whl", hash = "sha256:bb0966e1c50d0ef5bc743312cc730b533491d60585a9a08f897274e57c3f70e0"}, + {file = "google_crc32c-1.6.0-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:386122eeaaa76951a8196310432c5b0ef3b53590ef4c317ec7588ec554fec5d2"}, + {file = "google_crc32c-1.6.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d2952396dc604544ea7476b33fe87faedc24d666fb0c2d5ac971a2b9576ab871"}, + {file = "google_crc32c-1.6.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:35834855408429cecf495cac67ccbab802de269e948e27478b1e47dfb6465e57"}, + {file = "google_crc32c-1.6.0-cp39-cp39-win_amd64.whl", hash = "sha256:d8797406499f28b5ef791f339594b0b5fdedf54e203b5066675c406ba69d705c"}, + {file = "google_crc32c-1.6.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:48abd62ca76a2cbe034542ed1b6aee851b6f28aaca4e6551b5599b6f3ef175cc"}, + {file = "google_crc32c-1.6.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:18e311c64008f1f1379158158bb3f0c8d72635b9eb4f9545f8cf990c5668e59d"}, + {file = "google_crc32c-1.6.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:05e2d8c9a2f853ff116db9706b4a27350587f341eda835f46db3c0a8c8ce2f24"}, + {file = "google_crc32c-1.6.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:91ca8145b060679ec9176e6de4f89b07363d6805bd4760631ef254905503598d"}, + {file = "google_crc32c-1.6.0.tar.gz", hash = "sha256:6eceb6ad197656a1ff49ebfbbfa870678c75be4344feb35ac1edf694309413dc"}, +] + +[package.extras] +testing = ["pytest"] + +[[package]] +name = "google-resumable-media" +version = "2.7.2" +description = "Utilities for Google Media Downloads and Resumable Uploads" +optional = false +python-versions = ">=3.7" +files = [ + {file = "google_resumable_media-2.7.2-py2.py3-none-any.whl", hash = "sha256:3ce7551e9fe6d99e9a126101d2536612bb73486721951e9562fee0f90c6ababa"}, + {file = "google_resumable_media-2.7.2.tar.gz", hash = "sha256:5280aed4629f2b60b847b0d42f9857fd4935c11af266744df33d8074cae92fe0"}, +] + +[package.dependencies] +google-crc32c = ">=1.0,<2.0dev" + +[package.extras] +aiohttp = ["aiohttp (>=3.6.2,<4.0.0dev)", "google-auth (>=1.22.0,<2.0dev)"] +requests = ["requests (>=2.18.0,<3.0.0dev)"] + +[[package]] +name = "googleapis-common-protos" +version = "1.65.0" +description = "Common protobufs used in Google APIs" +optional = false +python-versions = ">=3.7" +files = [ + {file = "googleapis_common_protos-1.65.0-py2.py3-none-any.whl", hash = "sha256:2972e6c496f435b92590fd54045060867f3fe9be2c82ab148fc8885035479a63"}, + {file = "googleapis_common_protos-1.65.0.tar.gz", hash = "sha256:334a29d07cddc3aa01dee4988f9afd9b2916ee2ff49d6b757155dc0d197852c0"}, +] + +[package.dependencies] +protobuf = ">=3.20.2,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<6.0.0.dev0" + +[package.extras] +grpc = ["grpcio (>=1.44.0,<2.0.0.dev0)"] + +[[package]] +name = "httplib2" +version = "0.22.0" +description = "A comprehensive HTTP client library." +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "httplib2-0.22.0-py3-none-any.whl", hash = "sha256:14ae0a53c1ba8f3d37e9e27cf37eabb0fb9980f435ba405d546948b009dd64dc"}, + {file = "httplib2-0.22.0.tar.gz", hash = "sha256:d7a10bc5ef5ab08322488bde8c726eeee5c8618723fdb399597ec58f3d82df81"}, +] + +[package.dependencies] +pyparsing = {version = ">=2.4.2,<3.0.0 || >3.0.0,<3.0.1 || >3.0.1,<3.0.2 || >3.0.2,<3.0.3 || >3.0.3,<4", markers = "python_version > \"3.0\""} + +[[package]] +name = "idna" +version = "3.4" +description = "Internationalized Domain Names in Applications (IDNA)" +optional = false +python-versions = ">=3.5" +files = [ + {file = "idna-3.4-py3-none-any.whl", hash = "sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2"}, + {file = "idna-3.4.tar.gz", hash = "sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4"}, +] + +[[package]] +name = "inflection" +version = "0.5.1" +description = "A port of Ruby on Rails inflector to Python" +optional = false +python-versions = ">=3.5" +files = [ + {file = "inflection-0.5.1-py2.py3-none-any.whl", hash = "sha256:f38b2b640938a4f35ade69ac3d053042959b62a0f1076a5bbaa1b9526605a8a2"}, + {file = "inflection-0.5.1.tar.gz", hash = "sha256:1a29730d366e996aaacffb2f1f1cb9593dc38e2ddd30c91250c6dde09ea9b417"}, +] + +[[package]] +name = "iniconfig" +version = "2.0.0" +description = "brain-dead simple config-ini parsing" +optional = false +python-versions = ">=3.7" +files = [ + {file = "iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374"}, + {file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"}, +] + +[[package]] +name = "jira" +version = "3.8.0" +description = "Python library for interacting with JIRA via REST APIs." +optional = false +python-versions = ">=3.8" +files = [ + {file = "jira-3.8.0-py3-none-any.whl", hash = "sha256:12190dc84dad00b8a6c0341f7e8a254b0f38785afdec022bd5941e1184a5a3fb"}, + {file = "jira-3.8.0.tar.gz", hash = "sha256:63719c529a570aaa01c3373dbb5a104dab70381c5be447f6c27f997302fa335a"}, +] + +[package.dependencies] +defusedxml = "*" +packaging = "*" +Pillow = ">=2.1.0" +requests = ">=2.10.0" +requests-oauthlib = ">=1.1.0" +requests-toolbelt = "*" +typing-extensions = ">=3.7.4.2" + +[package.extras] +async = ["requests-futures (>=0.9.7)"] +cli = ["ipython (>=4.0.0)", "keyring"] +docs = ["furo", "sphinx (>=5.0.0)", "sphinx-copybutton"] +opt = ["PyJWT", "filemagic (>=1.6)", "requests-jwt", "requests-kerberos"] +test = ["MarkupSafe (>=0.23)", "PyYAML (>=5.1)", "docutils (>=0.12)", "flaky", "oauthlib", "parameterized (>=0.8.1)", "pytest (>=6.0.0)", "pytest-cache", "pytest-cov", "pytest-instafail", "pytest-sugar", "pytest-timeout (>=1.3.1)", "pytest-xdist (>=2.2)", "requests-mock", "requires.io", "tenacity", "wheel (>=0.24.0)", "yanc (>=0.3.3)"] + +[[package]] +name = "junitparser" +version = "3.2.0" +description = "Manipulates JUnit/xUnit Result XML files" +optional = false +python-versions = "*" +files = [ + {file = "junitparser-3.2.0-py2.py3-none-any.whl", hash = "sha256:e14fdc0a999edfc15889b637390e8ef6ca09a49532416d3bd562857d42d4b96d"}, + {file = "junitparser-3.2.0.tar.gz", hash = "sha256:b05e89c27e7b74b3c563a078d6e055d95cf397444f8f689b0ca616ebda0b3c65"}, +] + +[[package]] +name = "nr-collections" +version = "0.0.1" +description = "Useful container datatypes for Python 2 and 3." +optional = false +python-versions = "*" +files = [ + {file = "nr.collections-0.0.1.tar.gz", hash = "sha256:ddf38cd6379cac546ce7abdadf024fc01cca75540e11b1d5f1aa701a33817f1c"}, +] + +[package.dependencies] +"nr.metaclass" = ">=0.0.1,<0.1.0" +six = ">=1.11.0,<2.0.0" + +[package.extras] +test = ["nr.fs (>=1.5.0,<2.0.0)"] + +[[package]] +name = "nr-databind-core" +version = "0.0.22" +description = "Bind structured data directly to typed objects." +optional = false +python-versions = "*" +files = [ + {file = "nr.databind.core-0.0.22-py2.py3-none-any.whl", hash = "sha256:854a0a0551a0aa5a5acedaa547af930bdaca331bc705b3f26732f6b913491572"}, + {file = "nr.databind.core-0.0.22.tar.gz", hash = "sha256:87fe32d7d8dd91b878a25cd144d056435107ca56a8db7be3030f765334075f77"}, +] + +[package.dependencies] +"nr.collections" = ">=0.0.1,<1.0.0" +"nr.interface" = ">=0.0.1,<0.1.0" +"nr.pylang.utils" = ">=0.0.3,<0.1.0" +"nr.stream" = ">=0.0.1,<0.1.0" + +[[package]] +name = "nr-databind-json" +version = "0.0.14" +description = "Deserialize JSON into Python objects and reverse." +optional = false +python-versions = "*" +files = [ + {file = "nr.databind.json-0.0.14-py2.py3-none-any.whl", hash = "sha256:3765fd581c2ca2ee249ccfd460be0f472cc2bc9e5305e2f415d587a5e27c3b86"}, + {file = "nr.databind.json-0.0.14.tar.gz", hash = "sha256:27c7a7a69f6f703a0c616b898950fdb53a51b39cf9874d412ebc12dea574f20e"}, +] + +[package.dependencies] +"nr.collections" = ">=0.0.1,<1.0.0" +"nr.databind.core" = ">=0.0.21,<0.1.0" +"nr.interface" = ">=0.0.1,<0.1.0" +"nr.parsing.date" = ">=0.1.0,<1.0.0" +"nr.pylang.utils" = ">=0.0.1,<0.1.0" + +[[package]] +name = "nr-fs" +version = "1.6.3" +description = "Filesystem and path manipulation tools." +optional = false +python-versions = "*" +files = [ + {file = "nr.fs-1.6.3-py2.py3-none-any.whl", hash = "sha256:64108c168ea2e8077fdf5f0c5417459d1a145fe34cb305fe90faeb75b4e8b421"}, + {file = "nr.fs-1.6.3.tar.gz", hash = "sha256:788aa0a04c4143f95c5245bc8ccc0c0872e932be533bd37780fbb55afcdf124a"}, +] + +[package.dependencies] +six = ">=1.11.0,<2.0.0" + +[[package]] +name = "nr-interface" +version = "0.0.5" +description = "Interface definitions for Python." +optional = false +python-versions = "*" +files = [ + {file = "nr.interface-0.0.5-py2.py3-none-any.whl", hash = "sha256:8287f817297d825641793bf3e860445c43e271f4f87ff34f3e30b94bf1aa79a8"}, + {file = "nr.interface-0.0.5.tar.gz", hash = "sha256:ed6043954813247555299ce3032033bbbcaa2d7906f849e1f8317df4011ade83"}, +] + +[package.dependencies] +"nr.collections" = ">=0.0.1,<1.0.0" +"nr.metaclass" = ">=0.0.1,<0.1.0" +"nr.pylang.utils" = ">=0.0.1,<0.1.0" +six = ">=1.11.0,<2.0.0" + +[[package]] +name = "nr-metaclass" +version = "0.0.6" +description = "Metaclass utilities." +optional = false +python-versions = "*" +files = [ + {file = "nr.metaclass-0.0.6-py2.py3-none-any.whl", hash = "sha256:d458eb1bddd93373cc74e19981214e7d478c92c9b08fc9732bd430225698a8f0"}, + {file = "nr.metaclass-0.0.6.tar.gz", hash = "sha256:3d52f8e603e3c2944b9135e5a09593c3c36191f26cf1c29a7c71efb192552b10"}, +] + +[[package]] +name = "nr-parsing-date" +version = "0.6.1" +description = "A simple and fast date parsing library. Uses dateutil for timezone offset support." +optional = false +python-versions = ">=3.5.0,<4.0.0" +files = [ + {file = "nr.parsing.date-0.6.1-py3-none-any.whl", hash = "sha256:8cc5e1bf5d9a28c7e93c2c6417958857eef752bf166f777102c60b304b5f020d"}, + {file = "nr.parsing.date-0.6.1.tar.gz", hash = "sha256:11bf1e2a63397a3f9e039cf6b03a9f54d33d7e14ca230b022722e91fd8344fd8"}, +] + +[package.dependencies] +"nr.utils.re" = ">=0.1.0,<0.2.0" + +[[package]] +name = "nr-pylang-utils" +version = "0.0.4" +description = "Package description here." +optional = false +python-versions = ">=3.4.0,<4.0.0" +files = [ + {file = "nr.pylang.utils-0.0.4-py3-none-any.whl", hash = "sha256:cf8c88b9e7821a256e31e83e16dcd506d1fb33ea3cf37578eb163526ab044a27"}, + {file = "nr.pylang.utils-0.0.4.tar.gz", hash = "sha256:48f81167a5f0a7376b0dd1b3db2b88ab1cfa815645a2d4048eb369564f4e2485"}, +] + +[package.dependencies] +"nr.collections" = ">=0.0.1,<1.0.0" + +[[package]] +name = "nr-stream" +version = "0.0.5" +description = "Use iterators like Java streams." +optional = false +python-versions = "*" +files = [ + {file = "nr.stream-0.0.5-py2.py3-none-any.whl", hash = "sha256:cf418a4de3cedb8622286d2baca6007a153c780af48362d1f2ef2c1993525615"}, + {file = "nr.stream-0.0.5.tar.gz", hash = "sha256:3489ce5e8174b70d194a6592248ba341fbbd5bf30c9ec5f1223a351df909f505"}, +] + +[package.dependencies] +"nr.collections" = ">=0.0.1,<1.0.0" +"nr.pylang.utils" = ">=0.0.1,<1.0.0" +six = ">=1.11.0,<2.0.0" + +[[package]] +name = "nr-sumtype" +version = "0.0.5" +description = "Sumtypes in Python." +optional = false +python-versions = "*" +files = [ + {file = "nr.sumtype-0.0.5-py2.py3-none-any.whl", hash = "sha256:fdc2f73d4f96384ab8ae7b8094c26180c61c6f9b33eeb2e03f44ff2e3afa441d"}, + {file = "nr.sumtype-0.0.5.tar.gz", hash = "sha256:cc01d7aa639260bc6669739ea26e4f05cb0f48ae7be7b28736f35e39e9eeea0a"}, +] + +[package.dependencies] +"nr.metaclass" = ">=0.0.4,<1.0.0" +"nr.stream" = ">=0.0.2,<1.0.0" + +[[package]] +name = "nr-utils-re" +version = "0.1.1" +description = "This module provides some utility functions for applying regular expressions." +optional = false +python-versions = "*" +files = [ + {file = "nr.utils.re-0.1.1-py2.py3-none-any.whl", hash = "sha256:eb4e6c10b074e8b296c4e2a83d0299e9a162524fb3e5e6b916dfd194688dbd06"}, + {file = "nr.utils.re-0.1.1.tar.gz", hash = "sha256:71e21300dbf890d914841f1e6d66eb4e7d6a9f01c9a20d8e83e5242c8d3140aa"}, +] + +[[package]] +name = "oauthlib" +version = "3.2.2" +description = "A generic, spec-compliant, thorough implementation of the OAuth request-signing logic" +optional = false +python-versions = ">=3.6" +files = [ + {file = "oauthlib-3.2.2-py3-none-any.whl", hash = "sha256:8139f29aac13e25d502680e9e19963e83f16838d48a0d71c287fe40e7067fbca"}, + {file = "oauthlib-3.2.2.tar.gz", hash = "sha256:9859c40929662bec5d64f34d01c99e093149682a3f38915dc0655d5a633dd918"}, +] + +[package.extras] +rsa = ["cryptography (>=3.0.0)"] +signals = ["blinker (>=1.4.0)"] +signedtoken = ["cryptography (>=3.0.0)", "pyjwt (>=2.0.0,<3)"] + +[[package]] +name = "packaging" +version = "24.1" +description = "Core utilities for Python packages" +optional = false +python-versions = ">=3.8" +files = [ + {file = "packaging-24.1-py3-none-any.whl", hash = "sha256:5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124"}, + {file = "packaging-24.1.tar.gz", hash = "sha256:026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002"}, +] + +[[package]] +name = "pillow" +version = "11.0.0" +description = "Python Imaging Library (Fork)" +optional = false +python-versions = ">=3.9" +files = [ + {file = "pillow-11.0.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:6619654954dc4936fcff82db8eb6401d3159ec6be81e33c6000dfd76ae189947"}, + {file = "pillow-11.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:b3c5ac4bed7519088103d9450a1107f76308ecf91d6dabc8a33a2fcfb18d0fba"}, + {file = "pillow-11.0.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a65149d8ada1055029fcb665452b2814fe7d7082fcb0c5bed6db851cb69b2086"}, + {file = "pillow-11.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:88a58d8ac0cc0e7f3a014509f0455248a76629ca9b604eca7dc5927cc593c5e9"}, + {file = "pillow-11.0.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:c26845094b1af3c91852745ae78e3ea47abf3dbcd1cf962f16b9a5fbe3ee8488"}, + {file = "pillow-11.0.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:1a61b54f87ab5786b8479f81c4b11f4d61702830354520837f8cc791ebba0f5f"}, + {file = "pillow-11.0.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:674629ff60030d144b7bca2b8330225a9b11c482ed408813924619c6f302fdbb"}, + {file = "pillow-11.0.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:598b4e238f13276e0008299bd2482003f48158e2b11826862b1eb2ad7c768b97"}, + {file = "pillow-11.0.0-cp310-cp310-win32.whl", hash = "sha256:9a0f748eaa434a41fccf8e1ee7a3eed68af1b690e75328fd7a60af123c193b50"}, + {file = "pillow-11.0.0-cp310-cp310-win_amd64.whl", hash = "sha256:a5629742881bcbc1f42e840af185fd4d83a5edeb96475a575f4da50d6ede337c"}, + {file = "pillow-11.0.0-cp310-cp310-win_arm64.whl", hash = "sha256:ee217c198f2e41f184f3869f3e485557296d505b5195c513b2bfe0062dc537f1"}, + {file = "pillow-11.0.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:1c1d72714f429a521d8d2d018badc42414c3077eb187a59579f28e4270b4b0fc"}, + {file = "pillow-11.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:499c3a1b0d6fc8213519e193796eb1a86a1be4b1877d678b30f83fd979811d1a"}, + {file = "pillow-11.0.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c8b2351c85d855293a299038e1f89db92a2f35e8d2f783489c6f0b2b5f3fe8a3"}, + {file = "pillow-11.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6f4dba50cfa56f910241eb7f883c20f1e7b1d8f7d91c750cd0b318bad443f4d5"}, + {file = "pillow-11.0.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:5ddbfd761ee00c12ee1be86c9c0683ecf5bb14c9772ddbd782085779a63dd55b"}, + {file = "pillow-11.0.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:45c566eb10b8967d71bf1ab8e4a525e5a93519e29ea071459ce517f6b903d7fa"}, + {file = "pillow-11.0.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:b4fd7bd29610a83a8c9b564d457cf5bd92b4e11e79a4ee4716a63c959699b306"}, + {file = "pillow-11.0.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:cb929ca942d0ec4fac404cbf520ee6cac37bf35be479b970c4ffadf2b6a1cad9"}, + {file = "pillow-11.0.0-cp311-cp311-win32.whl", hash = "sha256:006bcdd307cc47ba43e924099a038cbf9591062e6c50e570819743f5607404f5"}, + {file = "pillow-11.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:52a2d8323a465f84faaba5236567d212c3668f2ab53e1c74c15583cf507a0291"}, + {file = "pillow-11.0.0-cp311-cp311-win_arm64.whl", hash = "sha256:16095692a253047fe3ec028e951fa4221a1f3ed3d80c397e83541a3037ff67c9"}, + {file = "pillow-11.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:d2c0a187a92a1cb5ef2c8ed5412dd8d4334272617f532d4ad4de31e0495bd923"}, + {file = "pillow-11.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:084a07ef0821cfe4858fe86652fffac8e187b6ae677e9906e192aafcc1b69903"}, + {file = "pillow-11.0.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8069c5179902dcdce0be9bfc8235347fdbac249d23bd90514b7a47a72d9fecf4"}, + {file = "pillow-11.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f02541ef64077f22bf4924f225c0fd1248c168f86e4b7abdedd87d6ebaceab0f"}, + {file = "pillow-11.0.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:fcb4621042ac4b7865c179bb972ed0da0218a076dc1820ffc48b1d74c1e37fe9"}, + {file = "pillow-11.0.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:00177a63030d612148e659b55ba99527803288cea7c75fb05766ab7981a8c1b7"}, + {file = "pillow-11.0.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8853a3bf12afddfdf15f57c4b02d7ded92c7a75a5d7331d19f4f9572a89c17e6"}, + {file = "pillow-11.0.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3107c66e43bda25359d5ef446f59c497de2b5ed4c7fdba0894f8d6cf3822dafc"}, + {file = "pillow-11.0.0-cp312-cp312-win32.whl", hash = "sha256:86510e3f5eca0ab87429dd77fafc04693195eec7fd6a137c389c3eeb4cfb77c6"}, + {file = "pillow-11.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:8ec4a89295cd6cd4d1058a5e6aec6bf51e0eaaf9714774e1bfac7cfc9051db47"}, + {file = "pillow-11.0.0-cp312-cp312-win_arm64.whl", hash = "sha256:27a7860107500d813fcd203b4ea19b04babe79448268403172782754870dac25"}, + {file = "pillow-11.0.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:bcd1fb5bb7b07f64c15618c89efcc2cfa3e95f0e3bcdbaf4642509de1942a699"}, + {file = "pillow-11.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0e038b0745997c7dcaae350d35859c9715c71e92ffb7e0f4a8e8a16732150f38"}, + {file = "pillow-11.0.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ae08bd8ffc41aebf578c2af2f9d8749d91f448b3bfd41d7d9ff573d74f2a6b2"}, + {file = "pillow-11.0.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d69bfd8ec3219ae71bcde1f942b728903cad25fafe3100ba2258b973bd2bc1b2"}, + {file = "pillow-11.0.0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:61b887f9ddba63ddf62fd02a3ba7add935d053b6dd7d58998c630e6dbade8527"}, + {file = "pillow-11.0.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:c6a660307ca9d4867caa8d9ca2c2658ab685de83792d1876274991adec7b93fa"}, + {file = "pillow-11.0.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:73e3a0200cdda995c7e43dd47436c1548f87a30bb27fb871f352a22ab8dcf45f"}, + {file = "pillow-11.0.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:fba162b8872d30fea8c52b258a542c5dfd7b235fb5cb352240c8d63b414013eb"}, + {file = "pillow-11.0.0-cp313-cp313-win32.whl", hash = "sha256:f1b82c27e89fffc6da125d5eb0ca6e68017faf5efc078128cfaa42cf5cb38798"}, + {file = "pillow-11.0.0-cp313-cp313-win_amd64.whl", hash = "sha256:8ba470552b48e5835f1d23ecb936bb7f71d206f9dfeee64245f30c3270b994de"}, + {file = "pillow-11.0.0-cp313-cp313-win_arm64.whl", hash = "sha256:846e193e103b41e984ac921b335df59195356ce3f71dcfd155aa79c603873b84"}, + {file = "pillow-11.0.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:4ad70c4214f67d7466bea6a08061eba35c01b1b89eaa098040a35272a8efb22b"}, + {file = "pillow-11.0.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:6ec0d5af64f2e3d64a165f490d96368bb5dea8b8f9ad04487f9ab60dc4bb6003"}, + {file = "pillow-11.0.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c809a70e43c7977c4a42aefd62f0131823ebf7dd73556fa5d5950f5b354087e2"}, + {file = "pillow-11.0.0-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:4b60c9520f7207aaf2e1d94de026682fc227806c6e1f55bba7606d1c94dd623a"}, + {file = "pillow-11.0.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:1e2688958a840c822279fda0086fec1fdab2f95bf2b717b66871c4ad9859d7e8"}, + {file = "pillow-11.0.0-cp313-cp313t-win32.whl", hash = "sha256:607bbe123c74e272e381a8d1957083a9463401f7bd01287f50521ecb05a313f8"}, + {file = "pillow-11.0.0-cp313-cp313t-win_amd64.whl", hash = "sha256:5c39ed17edea3bc69c743a8dd3e9853b7509625c2462532e62baa0732163a904"}, + {file = "pillow-11.0.0-cp313-cp313t-win_arm64.whl", hash = "sha256:75acbbeb05b86bc53cbe7b7e6fe00fbcf82ad7c684b3ad82e3d711da9ba287d3"}, + {file = "pillow-11.0.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:2e46773dc9f35a1dd28bd6981332fd7f27bec001a918a72a79b4133cf5291dba"}, + {file = "pillow-11.0.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:2679d2258b7f1192b378e2893a8a0a0ca472234d4c2c0e6bdd3380e8dfa21b6a"}, + {file = "pillow-11.0.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eda2616eb2313cbb3eebbe51f19362eb434b18e3bb599466a1ffa76a033fb916"}, + {file = "pillow-11.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:20ec184af98a121fb2da42642dea8a29ec80fc3efbaefb86d8fdd2606619045d"}, + {file = "pillow-11.0.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:8594f42df584e5b4bb9281799698403f7af489fba84c34d53d1c4bfb71b7c4e7"}, + {file = "pillow-11.0.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:c12b5ae868897c7338519c03049a806af85b9b8c237b7d675b8c5e089e4a618e"}, + {file = "pillow-11.0.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:70fbbdacd1d271b77b7721fe3cdd2d537bbbd75d29e6300c672ec6bb38d9672f"}, + {file = "pillow-11.0.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:5178952973e588b3f1360868847334e9e3bf49d19e169bbbdfaf8398002419ae"}, + {file = "pillow-11.0.0-cp39-cp39-win32.whl", hash = "sha256:8c676b587da5673d3c75bd67dd2a8cdfeb282ca38a30f37950511766b26858c4"}, + {file = "pillow-11.0.0-cp39-cp39-win_amd64.whl", hash = "sha256:94f3e1780abb45062287b4614a5bc0874519c86a777d4a7ad34978e86428b8dd"}, + {file = "pillow-11.0.0-cp39-cp39-win_arm64.whl", hash = "sha256:290f2cc809f9da7d6d622550bbf4c1e57518212da51b6a30fe8e0a270a5b78bd"}, + {file = "pillow-11.0.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:1187739620f2b365de756ce086fdb3604573337cc28a0d3ac4a01ab6b2d2a6d2"}, + {file = "pillow-11.0.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:fbbcb7b57dc9c794843e3d1258c0fbf0f48656d46ffe9e09b63bbd6e8cd5d0a2"}, + {file = "pillow-11.0.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d203af30149ae339ad1b4f710d9844ed8796e97fda23ffbc4cc472968a47d0b"}, + {file = "pillow-11.0.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21a0d3b115009ebb8ac3d2ebec5c2982cc693da935f4ab7bb5c8ebe2f47d36f2"}, + {file = "pillow-11.0.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:73853108f56df97baf2bb8b522f3578221e56f646ba345a372c78326710d3830"}, + {file = "pillow-11.0.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:e58876c91f97b0952eb766123bfef372792ab3f4e3e1f1a2267834c2ab131734"}, + {file = "pillow-11.0.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:224aaa38177597bb179f3ec87eeefcce8e4f85e608025e9cfac60de237ba6316"}, + {file = "pillow-11.0.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:5bd2d3bdb846d757055910f0a59792d33b555800813c3b39ada1829c372ccb06"}, + {file = "pillow-11.0.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:375b8dd15a1f5d2feafff536d47e22f69625c1aa92f12b339ec0b2ca40263273"}, + {file = "pillow-11.0.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:daffdf51ee5db69a82dd127eabecce20729e21f7a3680cf7cbb23f0829189790"}, + {file = "pillow-11.0.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:7326a1787e3c7b0429659e0a944725e1b03eeaa10edd945a86dead1913383944"}, + {file = "pillow-11.0.0.tar.gz", hash = "sha256:72bacbaf24ac003fea9bff9837d1eedb6088758d41e100c1552930151f677739"}, +] + +[package.extras] +docs = ["furo", "olefile", "sphinx (>=8.1)", "sphinx-copybutton", "sphinx-inline-tabs", "sphinxext-opengraph"] +fpx = ["olefile"] +mic = ["olefile"] +tests = ["check-manifest", "coverage", "defusedxml", "markdown2", "olefile", "packaging", "pyroma", "pytest", "pytest-cov", "pytest-timeout"] +typing = ["typing-extensions"] +xmp = ["defusedxml"] + +[[package]] +name = "pluggy" +version = "1.5.0" +description = "plugin and hook calling mechanisms for python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669"}, + {file = "pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1"}, +] + +[package.extras] +dev = ["pre-commit", "tox"] +testing = ["pytest", "pytest-benchmark"] + +[[package]] +name = "proto-plus" +version = "1.24.0" +description = "Beautiful, Pythonic protocol buffers." +optional = false +python-versions = ">=3.7" +files = [ + {file = "proto-plus-1.24.0.tar.gz", hash = "sha256:30b72a5ecafe4406b0d339db35b56c4059064e69227b8c3bda7462397f966445"}, + {file = "proto_plus-1.24.0-py3-none-any.whl", hash = "sha256:402576830425e5f6ce4c2a6702400ac79897dab0b4343821aa5188b0fab81a12"}, +] + +[package.dependencies] +protobuf = ">=3.19.0,<6.0.0dev" + +[package.extras] +testing = ["google-api-core (>=1.31.5)"] + +[[package]] +name = "protobuf" +version = "4.23.2" +description = "" +optional = false +python-versions = ">=3.7" +files = [ + {file = "protobuf-4.23.2-cp310-abi3-win32.whl", hash = "sha256:384dd44cb4c43f2ccddd3645389a23ae61aeb8cfa15ca3a0f60e7c3ea09b28b3"}, + {file = "protobuf-4.23.2-cp310-abi3-win_amd64.whl", hash = "sha256:09310bce43353b46d73ba7e3bca78273b9bc50349509b9698e64d288c6372c2a"}, + {file = "protobuf-4.23.2-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:b2cfab63a230b39ae603834718db74ac11e52bccaaf19bf20f5cce1a84cf76df"}, + {file = "protobuf-4.23.2-cp37-abi3-manylinux2014_aarch64.whl", hash = "sha256:c52cfcbfba8eb791255edd675c1fe6056f723bf832fa67f0442218f8817c076e"}, + {file = "protobuf-4.23.2-cp37-abi3-manylinux2014_x86_64.whl", hash = "sha256:86df87016d290143c7ce3be3ad52d055714ebaebb57cc659c387e76cfacd81aa"}, + {file = "protobuf-4.23.2-cp37-cp37m-win32.whl", hash = "sha256:281342ea5eb631c86697e1e048cb7e73b8a4e85f3299a128c116f05f5c668f8f"}, + {file = "protobuf-4.23.2-cp37-cp37m-win_amd64.whl", hash = "sha256:ce744938406de1e64b91410f473736e815f28c3b71201302612a68bf01517fea"}, + {file = "protobuf-4.23.2-cp38-cp38-win32.whl", hash = "sha256:6c081863c379bb1741be8f8193e893511312b1d7329b4a75445d1ea9955be69e"}, + {file = "protobuf-4.23.2-cp38-cp38-win_amd64.whl", hash = "sha256:25e3370eda26469b58b602e29dff069cfaae8eaa0ef4550039cc5ef8dc004511"}, + {file = "protobuf-4.23.2-cp39-cp39-win32.whl", hash = "sha256:efabbbbac1ab519a514579ba9ec52f006c28ae19d97915951f69fa70da2c9e91"}, + {file = "protobuf-4.23.2-cp39-cp39-win_amd64.whl", hash = "sha256:54a533b971288af3b9926e53850c7eb186886c0c84e61daa8444385a4720297f"}, + {file = "protobuf-4.23.2-py3-none-any.whl", hash = "sha256:8da6070310d634c99c0db7df48f10da495cc283fd9e9234877f0cd182d43ab7f"}, + {file = "protobuf-4.23.2.tar.gz", hash = "sha256:20874e7ca4436f683b64ebdbee2129a5a2c301579a67d1a7dda2cdf62fb7f5f7"}, +] + +[[package]] +name = "pyasn1" +version = "0.5.0" +description = "Pure-Python implementation of ASN.1 types and DER/BER/CER codecs (X.208)" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" +files = [ + {file = "pyasn1-0.5.0-py2.py3-none-any.whl", hash = "sha256:87a2121042a1ac9358cabcaf1d07680ff97ee6404333bacca15f76aa8ad01a57"}, + {file = "pyasn1-0.5.0.tar.gz", hash = "sha256:97b7290ca68e62a832558ec3976f15cbf911bf5d7c7039d8b861c2a0ece69fde"}, +] + +[[package]] +name = "pyasn1-modules" +version = "0.3.0" +description = "A collection of ASN.1-based protocols modules" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" +files = [ + {file = "pyasn1_modules-0.3.0-py2.py3-none-any.whl", hash = "sha256:d3ccd6ed470d9ffbc716be08bd90efbd44d0734bc9303818f7336070984a162d"}, + {file = "pyasn1_modules-0.3.0.tar.gz", hash = "sha256:5bd01446b736eb9d31512a30d46c1ac3395d676c6f3cafa4c03eb54b9925631c"}, +] + +[package.dependencies] +pyasn1 = ">=0.4.6,<0.6.0" + +[[package]] +name = "pydoc-markdown" +version = "3.10.0" +description = "Create Python API documentation in Markdown format." +optional = false +python-versions = ">=3.5.0,<4.0.0" +files = [ + {file = "pydoc-markdown-3.10.0.tar.gz", hash = "sha256:5076e16a14a2d708db269f6767236c2b2137e2816cf9efaba6b6bfca36367932"}, + {file = "pydoc_markdown-3.10.0-py3-none-any.whl", hash = "sha256:eccca05d136f17a1b85fc6d9fba58e5a4f134621ab0426958c79f8fc03b589ff"}, +] + +[package.dependencies] +click = ">=7.0.0,<8.0.0" +docspec = ">=0.2.0,<0.3.0" +docspec-python = ">=0.1.0,<0.2.0" +"nr.collections" = ">=0.0.1,<0.1.0" +"nr.databind.core" = ">=0.0.18,<0.1.0" +"nr.databind.json" = ">=0.0.9,<0.1.0" +"nr.fs" = ">=1.6.0,<2.0.0" +"nr.interface" = ">=0.0.3,<0.1.0" +PyYAML = ">=5.3.0,<6.0.0" +requests = ">=2.23.0,<3.0.0" +six = ">=1.11.0,<2.0.0" +toml = ">=0.10.1,<1.0.0" +watchdog = ">=1.0.0,<2.0.0" + +[[package]] +name = "pyparsing" +version = "3.0.9" +description = "pyparsing module - Classes and methods to define and execute parsing grammars" +optional = false +python-versions = ">=3.6.8" +files = [ + {file = "pyparsing-3.0.9-py3-none-any.whl", hash = "sha256:5026bae9a10eeaefb61dab2f09052b9f4307d44aee4eda64b309723d8d206bbc"}, + {file = "pyparsing-3.0.9.tar.gz", hash = "sha256:2b020ecf7d21b687f219b71ecad3631f644a47f01403fa1d1036b0c6416d70fb"}, +] + +[package.extras] +diagrams = ["jinja2", "railroad-diagrams"] + +[[package]] +name = "pytest" +version = "8.3.3" +description = "pytest: simple powerful testing with Python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pytest-8.3.3-py3-none-any.whl", hash = "sha256:a6853c7375b2663155079443d2e45de913a911a11d669df02a50814944db57b2"}, + {file = "pytest-8.3.3.tar.gz", hash = "sha256:70b98107bd648308a7952b06e6ca9a50bc660be218d53c257cc1fc94fda10181"}, +] + +[package.dependencies] +colorama = {version = "*", markers = "sys_platform == \"win32\""} +exceptiongroup = {version = ">=1.0.0rc8", markers = "python_version < \"3.11\""} +iniconfig = "*" +packaging = "*" +pluggy = ">=1.5,<2" +tomli = {version = ">=1", markers = "python_version < \"3.11\""} + +[package.extras] +dev = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"] + +[[package]] +name = "pytest-mock" +version = "3.14.0" +description = "Thin-wrapper around the mock package for easier use with pytest" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pytest-mock-3.14.0.tar.gz", hash = "sha256:2719255a1efeceadbc056d6bf3df3d1c5015530fb40cf347c0f9afac88410bd0"}, + {file = "pytest_mock-3.14.0-py3-none-any.whl", hash = "sha256:0b72c38033392a5f4621342fe11e9219ac11ec9d375f8e2a0c164539e0d70f6f"}, +] + +[package.dependencies] +pytest = ">=6.2.5" + +[package.extras] +dev = ["pre-commit", "pytest-asyncio", "tox"] + +[[package]] +name = "python-dateutil" +version = "2.9.0.post0" +description = "Extensions to the standard Python datetime module" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" +files = [ + {file = "python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3"}, + {file = "python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427"}, +] + +[package.dependencies] +six = ">=1.5" + +[[package]] +name = "python-gitlab" +version = "3.15.0" +description = "Interact with GitLab API" +optional = false +python-versions = ">=3.7.0" +files = [ + {file = "python-gitlab-3.15.0.tar.gz", hash = "sha256:c9e65eb7612a9fbb8abf0339972eca7fd7a73d4da66c9b446ffe528930aff534"}, + {file = "python_gitlab-3.15.0-py3-none-any.whl", hash = "sha256:8f8d1c0d387f642eb1ac7bf5e8e0cd8b3dd49c6f34170cee3c7deb7d384611f3"}, +] + +[package.dependencies] +requests = ">=2.25.0" +requests-toolbelt = ">=0.10.1" + +[package.extras] +autocompletion = ["argcomplete (>=1.10.0,<3)"] +yaml = ["PyYaml (>=5.2)"] + +[[package]] +name = "pytz" +version = "2024.2" +description = "World timezone definitions, modern and historical" +optional = false +python-versions = "*" +files = [ + {file = "pytz-2024.2-py2.py3-none-any.whl", hash = "sha256:31c7c1817eb7fae7ca4b8c7ee50c72f93aa2dd863de768e1ef4245d426aa0725"}, + {file = "pytz-2024.2.tar.gz", hash = "sha256:2aa355083c50a0f93fa581709deac0c9ad65cca8a9e9beac660adcbd493c798a"}, +] + +[[package]] +name = "pyyaml" +version = "5.3" +description = "YAML parser and emitter for Python" +optional = false +python-versions = "*" +files = [ + {file = "PyYAML-5.3-cp27-cp27m-win32.whl", hash = "sha256:940532b111b1952befd7db542c370887a8611660d2b9becff75d39355303d82d"}, + {file = "PyYAML-5.3-cp27-cp27m-win_amd64.whl", hash = "sha256:059b2ee3194d718896c0ad077dd8c043e5e909d9180f387ce42012662a4946d6"}, + {file = "PyYAML-5.3-cp35-cp35m-win32.whl", hash = "sha256:4fee71aa5bc6ed9d5f116327c04273e25ae31a3020386916905767ec4fc5317e"}, + {file = "PyYAML-5.3-cp35-cp35m-win_amd64.whl", hash = "sha256:dbbb2379c19ed6042e8f11f2a2c66d39cceb8aeace421bfc29d085d93eda3689"}, + {file = "PyYAML-5.3-cp36-cp36m-win32.whl", hash = "sha256:e3a057b7a64f1222b56e47bcff5e4b94c4f61faac04c7c4ecb1985e18caa3994"}, + {file = "PyYAML-5.3-cp36-cp36m-win_amd64.whl", hash = "sha256:74782fbd4d4f87ff04159e986886931456a1894c61229be9eaf4de6f6e44b99e"}, + {file = "PyYAML-5.3-cp37-cp37m-win32.whl", hash = "sha256:24521fa2890642614558b492b473bee0ac1f8057a7263156b02e8b14c88ce6f5"}, + {file = "PyYAML-5.3-cp37-cp37m-win_amd64.whl", hash = "sha256:1cf708e2ac57f3aabc87405f04b86354f66799c8e62c28c5fc5f88b5521b2dbf"}, + {file = "PyYAML-5.3-cp38-cp38-win32.whl", hash = "sha256:70024e02197337533eef7b85b068212420f950319cc8c580261963aefc75f811"}, + {file = "PyYAML-5.3-cp38-cp38-win_amd64.whl", hash = "sha256:cb1f2f5e426dc9f07a7681419fe39cee823bb74f723f36f70399123f439e9b20"}, + {file = "PyYAML-5.3.tar.gz", hash = "sha256:e9f45bd5b92c7974e59bcd2dcc8631a6b6cc380a904725fce7bc08872e691615"}, +] + +[[package]] +name = "regex" +version = "2024.11.6" +description = "Alternative regular expression module, to replace re." +optional = false +python-versions = ">=3.8" +files = [ + {file = "regex-2024.11.6-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:ff590880083d60acc0433f9c3f713c51f7ac6ebb9adf889c79a261ecf541aa91"}, + {file = "regex-2024.11.6-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:658f90550f38270639e83ce492f27d2c8d2cd63805c65a13a14d36ca126753f0"}, + {file = "regex-2024.11.6-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:164d8b7b3b4bcb2068b97428060b2a53be050085ef94eca7f240e7947f1b080e"}, + {file = "regex-2024.11.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d3660c82f209655a06b587d55e723f0b813d3a7db2e32e5e7dc64ac2a9e86fde"}, + {file = "regex-2024.11.6-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d22326fcdef5e08c154280b71163ced384b428343ae16a5ab2b3354aed12436e"}, + {file = "regex-2024.11.6-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f1ac758ef6aebfc8943560194e9fd0fa18bcb34d89fd8bd2af18183afd8da3a2"}, + {file = "regex-2024.11.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:997d6a487ff00807ba810e0f8332c18b4eb8d29463cfb7c820dc4b6e7562d0cf"}, + {file = "regex-2024.11.6-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:02a02d2bb04fec86ad61f3ea7f49c015a0681bf76abb9857f945d26159d2968c"}, + {file = "regex-2024.11.6-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f02f93b92358ee3f78660e43b4b0091229260c5d5c408d17d60bf26b6c900e86"}, + {file = "regex-2024.11.6-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:06eb1be98df10e81ebaded73fcd51989dcf534e3c753466e4b60c4697a003b67"}, + {file = "regex-2024.11.6-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:040df6fe1a5504eb0f04f048e6d09cd7c7110fef851d7c567a6b6e09942feb7d"}, + {file = "regex-2024.11.6-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:fdabbfc59f2c6edba2a6622c647b716e34e8e3867e0ab975412c5c2f79b82da2"}, + {file = "regex-2024.11.6-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:8447d2d39b5abe381419319f942de20b7ecd60ce86f16a23b0698f22e1b70008"}, + {file = "regex-2024.11.6-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:da8f5fc57d1933de22a9e23eec290a0d8a5927a5370d24bda9a6abe50683fe62"}, + {file = "regex-2024.11.6-cp310-cp310-win32.whl", hash = "sha256:b489578720afb782f6ccf2840920f3a32e31ba28a4b162e13900c3e6bd3f930e"}, + {file = "regex-2024.11.6-cp310-cp310-win_amd64.whl", hash = "sha256:5071b2093e793357c9d8b2929dfc13ac5f0a6c650559503bb81189d0a3814519"}, + {file = "regex-2024.11.6-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:5478c6962ad548b54a591778e93cd7c456a7a29f8eca9c49e4f9a806dcc5d638"}, + {file = "regex-2024.11.6-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2c89a8cc122b25ce6945f0423dc1352cb9593c68abd19223eebbd4e56612c5b7"}, + {file = "regex-2024.11.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:94d87b689cdd831934fa3ce16cc15cd65748e6d689f5d2b8f4f4df2065c9fa20"}, + {file = "regex-2024.11.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1062b39a0a2b75a9c694f7a08e7183a80c63c0d62b301418ffd9c35f55aaa114"}, + {file = "regex-2024.11.6-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:167ed4852351d8a750da48712c3930b031f6efdaa0f22fa1933716bfcd6bf4a3"}, + {file = "regex-2024.11.6-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2d548dafee61f06ebdb584080621f3e0c23fff312f0de1afc776e2a2ba99a74f"}, + {file = "regex-2024.11.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f2a19f302cd1ce5dd01a9099aaa19cae6173306d1302a43b627f62e21cf18ac0"}, + {file = "regex-2024.11.6-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bec9931dfb61ddd8ef2ebc05646293812cb6b16b60cf7c9511a832b6f1854b55"}, + {file = "regex-2024.11.6-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:9714398225f299aa85267fd222f7142fcb5c769e73d7733344efc46f2ef5cf89"}, + {file = "regex-2024.11.6-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:202eb32e89f60fc147a41e55cb086db2a3f8cb82f9a9a88440dcfc5d37faae8d"}, + {file = "regex-2024.11.6-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:4181b814e56078e9b00427ca358ec44333765f5ca1b45597ec7446d3a1ef6e34"}, + {file = "regex-2024.11.6-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:068376da5a7e4da51968ce4c122a7cd31afaaec4fccc7856c92f63876e57b51d"}, + {file = "regex-2024.11.6-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:ac10f2c4184420d881a3475fb2c6f4d95d53a8d50209a2500723d831036f7c45"}, + {file = "regex-2024.11.6-cp311-cp311-win32.whl", hash = "sha256:c36f9b6f5f8649bb251a5f3f66564438977b7ef8386a52460ae77e6070d309d9"}, + {file = "regex-2024.11.6-cp311-cp311-win_amd64.whl", hash = "sha256:02e28184be537f0e75c1f9b2f8847dc51e08e6e171c6bde130b2687e0c33cf60"}, + {file = "regex-2024.11.6-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:52fb28f528778f184f870b7cf8f225f5eef0a8f6e3778529bdd40c7b3920796a"}, + {file = "regex-2024.11.6-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:fdd6028445d2460f33136c55eeb1f601ab06d74cb3347132e1c24250187500d9"}, + {file = "regex-2024.11.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:805e6b60c54bf766b251e94526ebad60b7de0c70f70a4e6210ee2891acb70bf2"}, + {file = "regex-2024.11.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b85c2530be953a890eaffde05485238f07029600e8f098cdf1848d414a8b45e4"}, + {file = "regex-2024.11.6-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bb26437975da7dc36b7efad18aa9dd4ea569d2357ae6b783bf1118dabd9ea577"}, + {file = "regex-2024.11.6-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:abfa5080c374a76a251ba60683242bc17eeb2c9818d0d30117b4486be10c59d3"}, + {file = "regex-2024.11.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b7fa6606c2881c1db9479b0eaa11ed5dfa11c8d60a474ff0e095099f39d98e"}, + {file = "regex-2024.11.6-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0c32f75920cf99fe6b6c539c399a4a128452eaf1af27f39bce8909c9a3fd8cbe"}, + {file = "regex-2024.11.6-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:982e6d21414e78e1f51cf595d7f321dcd14de1f2881c5dc6a6e23bbbbd68435e"}, + {file = "regex-2024.11.6-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a7c2155f790e2fb448faed6dd241386719802296ec588a8b9051c1f5c481bc29"}, + {file = "regex-2024.11.6-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:149f5008d286636e48cd0b1dd65018548944e495b0265b45e1bffecce1ef7f39"}, + {file = "regex-2024.11.6-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:e5364a4502efca094731680e80009632ad6624084aff9a23ce8c8c6820de3e51"}, + {file = "regex-2024.11.6-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:0a86e7eeca091c09e021db8eb72d54751e527fa47b8d5787caf96d9831bd02ad"}, + {file = "regex-2024.11.6-cp312-cp312-win32.whl", hash = "sha256:32f9a4c643baad4efa81d549c2aadefaeba12249b2adc5af541759237eee1c54"}, + {file = "regex-2024.11.6-cp312-cp312-win_amd64.whl", hash = "sha256:a93c194e2df18f7d264092dc8539b8ffb86b45b899ab976aa15d48214138e81b"}, + {file = "regex-2024.11.6-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:a6ba92c0bcdf96cbf43a12c717eae4bc98325ca3730f6b130ffa2e3c3c723d84"}, + {file = "regex-2024.11.6-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:525eab0b789891ac3be914d36893bdf972d483fe66551f79d3e27146191a37d4"}, + {file = "regex-2024.11.6-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:086a27a0b4ca227941700e0b31425e7a28ef1ae8e5e05a33826e17e47fbfdba0"}, + {file = "regex-2024.11.6-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bde01f35767c4a7899b7eb6e823b125a64de314a8ee9791367c9a34d56af18d0"}, + {file = "regex-2024.11.6-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b583904576650166b3d920d2bcce13971f6f9e9a396c673187f49811b2769dc7"}, + {file = "regex-2024.11.6-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1c4de13f06a0d54fa0d5ab1b7138bfa0d883220965a29616e3ea61b35d5f5fc7"}, + {file = "regex-2024.11.6-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3cde6e9f2580eb1665965ce9bf17ff4952f34f5b126beb509fee8f4e994f143c"}, + {file = "regex-2024.11.6-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0d7f453dca13f40a02b79636a339c5b62b670141e63efd511d3f8f73fba162b3"}, + {file = "regex-2024.11.6-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:59dfe1ed21aea057a65c6b586afd2a945de04fc7db3de0a6e3ed5397ad491b07"}, + {file = "regex-2024.11.6-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:b97c1e0bd37c5cd7902e65f410779d39eeda155800b65fc4d04cc432efa9bc6e"}, + {file = "regex-2024.11.6-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:f9d1e379028e0fc2ae3654bac3cbbef81bf3fd571272a42d56c24007979bafb6"}, + {file = "regex-2024.11.6-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:13291b39131e2d002a7940fb176e120bec5145f3aeb7621be6534e46251912c4"}, + {file = "regex-2024.11.6-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4f51f88c126370dcec4908576c5a627220da6c09d0bff31cfa89f2523843316d"}, + {file = "regex-2024.11.6-cp313-cp313-win32.whl", hash = "sha256:63b13cfd72e9601125027202cad74995ab26921d8cd935c25f09c630436348ff"}, + {file = "regex-2024.11.6-cp313-cp313-win_amd64.whl", hash = "sha256:2b3361af3198667e99927da8b84c1b010752fa4b1115ee30beaa332cabc3ef1a"}, + {file = "regex-2024.11.6-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:3a51ccc315653ba012774efca4f23d1d2a8a8f278a6072e29c7147eee7da446b"}, + {file = "regex-2024.11.6-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ad182d02e40de7459b73155deb8996bbd8e96852267879396fb274e8700190e3"}, + {file = "regex-2024.11.6-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:ba9b72e5643641b7d41fa1f6d5abda2c9a263ae835b917348fc3c928182ad467"}, + {file = "regex-2024.11.6-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40291b1b89ca6ad8d3f2b82782cc33807f1406cf68c8d440861da6304d8ffbbd"}, + {file = "regex-2024.11.6-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cdf58d0e516ee426a48f7b2c03a332a4114420716d55769ff7108c37a09951bf"}, + {file = "regex-2024.11.6-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a36fdf2af13c2b14738f6e973aba563623cb77d753bbbd8d414d18bfaa3105dd"}, + {file = "regex-2024.11.6-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d1cee317bfc014c2419a76bcc87f071405e3966da434e03e13beb45f8aced1a6"}, + {file = "regex-2024.11.6-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:50153825ee016b91549962f970d6a4442fa106832e14c918acd1c8e479916c4f"}, + {file = "regex-2024.11.6-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ea1bfda2f7162605f6e8178223576856b3d791109f15ea99a9f95c16a7636fb5"}, + {file = "regex-2024.11.6-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:df951c5f4a1b1910f1a99ff42c473ff60f8225baa1cdd3539fe2819d9543e9df"}, + {file = "regex-2024.11.6-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:072623554418a9911446278f16ecb398fb3b540147a7828c06e2011fa531e773"}, + {file = "regex-2024.11.6-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:f654882311409afb1d780b940234208a252322c24a93b442ca714d119e68086c"}, + {file = "regex-2024.11.6-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:89d75e7293d2b3e674db7d4d9b1bee7f8f3d1609428e293771d1a962617150cc"}, + {file = "regex-2024.11.6-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:f65557897fc977a44ab205ea871b690adaef6b9da6afda4790a2484b04293a5f"}, + {file = "regex-2024.11.6-cp38-cp38-win32.whl", hash = "sha256:6f44ec28b1f858c98d3036ad5d7d0bfc568bdd7a74f9c24e25f41ef1ebfd81a4"}, + {file = "regex-2024.11.6-cp38-cp38-win_amd64.whl", hash = "sha256:bb8f74f2f10dbf13a0be8de623ba4f9491faf58c24064f32b65679b021ed0001"}, + {file = "regex-2024.11.6-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:5704e174f8ccab2026bd2f1ab6c510345ae8eac818b613d7d73e785f1310f839"}, + {file = "regex-2024.11.6-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:220902c3c5cc6af55d4fe19ead504de80eb91f786dc102fbd74894b1551f095e"}, + {file = "regex-2024.11.6-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:5e7e351589da0850c125f1600a4c4ba3c722efefe16b297de54300f08d734fbf"}, + {file = "regex-2024.11.6-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5056b185ca113c88e18223183aa1a50e66507769c9640a6ff75859619d73957b"}, + {file = "regex-2024.11.6-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2e34b51b650b23ed3354b5a07aab37034d9f923db2a40519139af34f485f77d0"}, + {file = "regex-2024.11.6-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5670bce7b200273eee1840ef307bfa07cda90b38ae56e9a6ebcc9f50da9c469b"}, + {file = "regex-2024.11.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:08986dce1339bc932923e7d1232ce9881499a0e02925f7402fb7c982515419ef"}, + {file = "regex-2024.11.6-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:93c0b12d3d3bc25af4ebbf38f9ee780a487e8bf6954c115b9f015822d3bb8e48"}, + {file = "regex-2024.11.6-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:764e71f22ab3b305e7f4c21f1a97e1526a25ebdd22513e251cf376760213da13"}, + {file = "regex-2024.11.6-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:f056bf21105c2515c32372bbc057f43eb02aae2fda61052e2f7622c801f0b4e2"}, + {file = "regex-2024.11.6-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:69ab78f848845569401469da20df3e081e6b5a11cb086de3eed1d48f5ed57c95"}, + {file = "regex-2024.11.6-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:86fddba590aad9208e2fa8b43b4c098bb0ec74f15718bb6a704e3c63e2cef3e9"}, + {file = "regex-2024.11.6-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:684d7a212682996d21ca12ef3c17353c021fe9de6049e19ac8481ec35574a70f"}, + {file = "regex-2024.11.6-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:a03e02f48cd1abbd9f3b7e3586d97c8f7a9721c436f51a5245b3b9483044480b"}, + {file = "regex-2024.11.6-cp39-cp39-win32.whl", hash = "sha256:41758407fc32d5c3c5de163888068cfee69cb4c2be844e7ac517a52770f9af57"}, + {file = "regex-2024.11.6-cp39-cp39-win_amd64.whl", hash = "sha256:b2837718570f95dd41675328e111345f9b7095d821bac435aac173ac80b19983"}, + {file = "regex-2024.11.6.tar.gz", hash = "sha256:7ab159b063c52a0333c884e4679f8d7a85112ee3078fe3d9004b2dd875585519"}, +] + +[[package]] +name = "requests" +version = "2.32.3" +description = "Python HTTP for Humans." +optional = false +python-versions = ">=3.8" +files = [ + {file = "requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6"}, + {file = "requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760"}, +] + +[package.dependencies] +certifi = ">=2017.4.17" +charset-normalizer = ">=2,<4" +idna = ">=2.5,<4" +urllib3 = ">=1.21.1,<3" + +[package.extras] +socks = ["PySocks (>=1.5.6,!=1.5.7)"] +use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] + +[[package]] +name = "requests-mock" +version = "1.12.1" +description = "Mock out responses from the requests package" +optional = false +python-versions = ">=3.5" +files = [ + {file = "requests-mock-1.12.1.tar.gz", hash = "sha256:e9e12e333b525156e82a3c852f22016b9158220d2f47454de9cae8a77d371401"}, + {file = "requests_mock-1.12.1-py2.py3-none-any.whl", hash = "sha256:b1e37054004cdd5e56c84454cc7df12b25f90f382159087f4b6915aaeef39563"}, +] + +[package.dependencies] +requests = ">=2.22,<3" + +[package.extras] +fixture = ["fixtures"] + +[[package]] +name = "requests-oauthlib" +version = "2.0.0" +description = "OAuthlib authentication support for Requests." +optional = false +python-versions = ">=3.4" +files = [ + {file = "requests-oauthlib-2.0.0.tar.gz", hash = "sha256:b3dffaebd884d8cd778494369603a9e7b58d29111bf6b41bdc2dcd87203af4e9"}, + {file = "requests_oauthlib-2.0.0-py2.py3-none-any.whl", hash = "sha256:7dd8a5c40426b779b0868c404bdef9768deccf22749cde15852df527e6269b36"}, +] + +[package.dependencies] +oauthlib = ">=3.0.0" +requests = ">=2.0.0" + +[package.extras] +rsa = ["oauthlib[signedtoken] (>=3.0.0)"] + +[[package]] +name = "requests-toolbelt" +version = "1.0.0" +description = "A utility belt for advanced users of python-requests" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6"}, + {file = "requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06"}, +] + +[package.dependencies] +requests = ">=2.0.1,<3.0.0" + +[[package]] +name = "rsa" +version = "4.9" +description = "Pure-Python RSA implementation" +optional = false +python-versions = ">=3.6,<4" +files = [ + {file = "rsa-4.9-py3-none-any.whl", hash = "sha256:90260d9058e514786967344d0ef75fa8727eed8a7d2e43ce9f4bcf1b536174f7"}, + {file = "rsa-4.9.tar.gz", hash = "sha256:e38464a49c6c85d7f1351b0126661487a7e0a14a50f1675ec50eb34d4f20ef21"}, +] + +[package.dependencies] +pyasn1 = ">=0.1.3" + +[[package]] +name = "six" +version = "1.16.0" +description = "Python 2 and 3 compatibility utilities" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" +files = [ + {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, + {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, +] + +[[package]] +name = "slack-sdk" +version = "3.21.3" +description = "The Slack API Platform SDK for Python" +optional = false +python-versions = ">=3.6.0" +files = [ + {file = "slack_sdk-3.21.3-py2.py3-none-any.whl", hash = "sha256:de3c07b92479940b61cd68c566f49fbc9974c8f38f661d26244078f3903bb9cc"}, + {file = "slack_sdk-3.21.3.tar.gz", hash = "sha256:20829bdc1a423ec93dac903470975ebf3bc76fd3fd91a4dadc0eeffc940ecb0c"}, +] + +[package.extras] +optional = ["SQLAlchemy (>=1.4,<3)", "aiodns (>1.0)", "aiohttp (>=3.7.3,<4)", "boto3 (<=2)", "websocket-client (>=1,<2)", "websockets (>=10,<11)"] +testing = ["Flask (>=1,<2)", "Flask-Sockets (>=0.2,<1)", "Jinja2 (==3.0.3)", "Werkzeug (<2)", "black (==22.8.0)", "boto3 (<=2)", "click (==8.0.4)", "databases (>=0.5)", "flake8 (>=5,<6)", "itsdangerous (==1.1.0)", "moto (>=3,<4)", "psutil (>=5,<6)", "pytest (>=6.2.5,<7)", "pytest-asyncio (<1)", "pytest-cov (>=2,<3)"] + +[[package]] +name = "smmap" +version = "5.0.1" +description = "A pure Python implementation of a sliding window memory map manager" +optional = false +python-versions = ">=3.7" +files = [ + {file = "smmap-5.0.1-py3-none-any.whl", hash = "sha256:e6d8668fa5f93e706934a62d7b4db19c8d9eb8cf2adbb75ef1b675aa332b69da"}, + {file = "smmap-5.0.1.tar.gz", hash = "sha256:dceeb6c0028fdb6734471eb07c0cd2aae706ccaecab45965ee83f11c8d3b1f62"}, +] + +[[package]] +name = "soupsieve" +version = "2.4.1" +description = "A modern CSS selector implementation for Beautiful Soup." +optional = false +python-versions = ">=3.7" +files = [ + {file = "soupsieve-2.4.1-py3-none-any.whl", hash = "sha256:1c1bfee6819544a3447586c889157365a27e10d88cde3ad3da0cf0ddf646feb8"}, + {file = "soupsieve-2.4.1.tar.gz", hash = "sha256:89d12b2d5dfcd2c9e8c22326da9d9aa9cb3dfab0a83a024f05704076ee8d35ea"}, +] + +[[package]] +name = "toml" +version = "0.10.2" +description = "Python Library for Tom's Obvious, Minimal Language" +optional = false +python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" +files = [ + {file = "toml-0.10.2-py2.py3-none-any.whl", hash = "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b"}, + {file = "toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"}, +] + +[[package]] +name = "tomli" +version = "2.1.0" +description = "A lil' TOML parser" +optional = false +python-versions = ">=3.8" +files = [ + {file = "tomli-2.1.0-py3-none-any.whl", hash = "sha256:a5c57c3d1c56f5ccdf89f6523458f60ef716e210fc47c4cfb188c5ba473e0391"}, + {file = "tomli-2.1.0.tar.gz", hash = "sha256:3f646cae2aec94e17d04973e4249548320197cfabdf130015d023de4b74d8ab8"}, +] + +[[package]] +name = "types-python-dateutil" +version = "2.9.0.20241003" +description = "Typing stubs for python-dateutil" +optional = false +python-versions = ">=3.8" +files = [ + {file = "types-python-dateutil-2.9.0.20241003.tar.gz", hash = "sha256:58cb85449b2a56d6684e41aeefb4c4280631246a0da1a719bdbe6f3fb0317446"}, + {file = "types_python_dateutil-2.9.0.20241003-py3-none-any.whl", hash = "sha256:250e1d8e80e7bbc3a6c99b907762711d1a1cdd00e978ad39cb5940f6f0a87f3d"}, +] + +[[package]] +name = "types-pyyaml" +version = "6.0.12.20240311" +description = "Typing stubs for PyYAML" +optional = false +python-versions = ">=3.8" +files = [ + {file = "types-PyYAML-6.0.12.20240311.tar.gz", hash = "sha256:a9e0f0f88dc835739b0c1ca51ee90d04ca2a897a71af79de9aec5f38cb0a5342"}, + {file = "types_PyYAML-6.0.12.20240311-py3-none-any.whl", hash = "sha256:b845b06a1c7e54b8e5b4c683043de0d9caf205e7434b3edc678ff2411979b8f6"}, +] + +[[package]] +name = "types-requests" +version = "2.31.0.6" +description = "Typing stubs for requests" +optional = false +python-versions = ">=3.7" +files = [ + {file = "types-requests-2.31.0.6.tar.gz", hash = "sha256:cd74ce3b53c461f1228a9b783929ac73a666658f223e28ed29753771477b3bd0"}, + {file = "types_requests-2.31.0.6-py3-none-any.whl", hash = "sha256:a2db9cb228a81da8348b49ad6db3f5519452dd20a9c1e1a868c83c5fe88fd1a9"}, +] + +[package.dependencies] +types-urllib3 = "*" + +[[package]] +name = "types-urllib3" +version = "1.26.25.13" +description = "Typing stubs for urllib3" +optional = false +python-versions = "*" +files = [ + {file = "types-urllib3-1.26.25.13.tar.gz", hash = "sha256:3300538c9dc11dad32eae4827ac313f5d986b8b21494801f1bf97a1ac6c03ae5"}, + {file = "types_urllib3-1.26.25.13-py3-none-any.whl", hash = "sha256:5dbd1d2bef14efee43f5318b5d36d805a489f6600252bb53626d4bfafd95e27c"}, +] + +[[package]] +name = "typing-extensions" +version = "4.12.2" +description = "Backported and Experimental Type Hints for Python 3.8+" +optional = false +python-versions = ">=3.8" +files = [ + {file = "typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d"}, + {file = "typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"}, +] + +[[package]] +name = "tzdata" +version = "2024.2" +description = "Provider of IANA time zone data" +optional = false +python-versions = ">=2" +files = [ + {file = "tzdata-2024.2-py2.py3-none-any.whl", hash = "sha256:a48093786cdcde33cad18c2555e8532f34422074448fbc874186f0abd79565cd"}, + {file = "tzdata-2024.2.tar.gz", hash = "sha256:7d85cc416e9382e69095b7bdf4afd9e3880418a2413feec7069d533d6b4e31cc"}, +] + +[[package]] +name = "tzlocal" +version = "5.2" +description = "tzinfo object for the local timezone" +optional = false +python-versions = ">=3.8" +files = [ + {file = "tzlocal-5.2-py3-none-any.whl", hash = "sha256:49816ef2fe65ea8ac19d19aa7a1ae0551c834303d5014c6d5a62e4cbda8047b8"}, + {file = "tzlocal-5.2.tar.gz", hash = "sha256:8d399205578f1a9342816409cc1e46a93ebd5755e39ea2d85334bea911bf0e6e"}, +] + +[package.dependencies] +tzdata = {version = "*", markers = "platform_system == \"Windows\""} + +[package.extras] +devenv = ["check-manifest", "pytest (>=4.3)", "pytest-cov", "pytest-mock (>=3.3)", "zest.releaser"] + +[[package]] +name = "uritemplate" +version = "4.1.1" +description = "Implementation of RFC 6570 URI Templates" +optional = false +python-versions = ">=3.6" +files = [ + {file = "uritemplate-4.1.1-py2.py3-none-any.whl", hash = "sha256:830c08b8d99bdd312ea4ead05994a38e8936266f84b9a7878232db50b044e02e"}, + {file = "uritemplate-4.1.1.tar.gz", hash = "sha256:4346edfc5c3b79f694bccd6d6099a322bbeb628dbf2cd86eea55a456ce5124f0"}, +] + +[[package]] +name = "urllib3" +version = "1.26.16" +description = "HTTP library with thread-safe connection pooling, file post, and more." +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" +files = [ + {file = "urllib3-1.26.16-py2.py3-none-any.whl", hash = "sha256:8d36afa7616d8ab714608411b4a3b13e58f463aee519024578e062e141dce20f"}, + {file = "urllib3-1.26.16.tar.gz", hash = "sha256:8f135f6502756bde6b2a9b28989df5fbe87c9970cecaa69041edcce7f0589b14"}, +] + +[package.extras] +brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)", "brotlipy (>=0.6.0)"] +secure = ["certifi", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "ipaddress", "pyOpenSSL (>=0.14)", "urllib3-secure-extra"] +socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] + +[[package]] +name = "watchdog" +version = "1.0.2" +description = "Filesystem events monitoring" +optional = false +python-versions = ">=3.6" +files = [ + {file = "watchdog-1.0.2-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:e2a531e71be7b5cc3499ae2d1494d51b6a26684bcc7c3146f63c810c00e8a3cc"}, + {file = "watchdog-1.0.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:e7c73edef48f4ceeebb987317a67e0080e5c9228601ff67b3c4062fa020403c7"}, + {file = "watchdog-1.0.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:85e6574395aa6c1e14e0f030d9d7f35c2340a6cf95d5671354ce876ac3ffdd4d"}, + {file = "watchdog-1.0.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:27d9b4666938d5d40afdcdf2c751781e9ce36320788b70208d0f87f7401caf93"}, + {file = "watchdog-1.0.2-pp36-pypy36_pp73-macosx_10_9_x86_64.whl", hash = "sha256:2f1ade0d0802503fda4340374d333408831cff23da66d7e711e279ba50fe6c4a"}, + {file = "watchdog-1.0.2-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:f1d0e878fd69129d0d68b87cee5d9543f20d8018e82998efb79f7e412d42154a"}, + {file = "watchdog-1.0.2-py3-none-manylinux2014_aarch64.whl", hash = "sha256:d948ad9ab9aba705f9836625b32e965b9ae607284811cd98334423f659ea537a"}, + {file = "watchdog-1.0.2-py3-none-manylinux2014_armv7l.whl", hash = "sha256:101532b8db506559e52a9b5d75a308729b3f68264d930670e6155c976d0e52a0"}, + {file = "watchdog-1.0.2-py3-none-manylinux2014_i686.whl", hash = "sha256:b1d723852ce90a14abf0ec0ca9e80689d9509ee4c9ee27163118d87b564a12ac"}, + {file = "watchdog-1.0.2-py3-none-manylinux2014_ppc64.whl", hash = "sha256:68744de2003a5ea2dfbb104f9a74192cf381334a9e2c0ed2bbe1581828d50b61"}, + {file = "watchdog-1.0.2-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:602dbd9498592eacc42e0632c19781c3df1728ef9cbab555fab6778effc29eeb"}, + {file = "watchdog-1.0.2-py3-none-manylinux2014_s390x.whl", hash = "sha256:016b01495b9c55b5d4126ed8ae75d93ea0d99377084107c33162df52887cee18"}, + {file = "watchdog-1.0.2-py3-none-manylinux2014_x86_64.whl", hash = "sha256:5f1f3b65142175366ba94c64d8d4c8f4015825e0beaacee1c301823266b47b9b"}, + {file = "watchdog-1.0.2-py3-none-win32.whl", hash = "sha256:57f05e55aa603c3b053eed7e679f0a83873c540255b88d58c6223c7493833bac"}, + {file = "watchdog-1.0.2-py3-none-win_amd64.whl", hash = "sha256:f84146f7864339c8addf2c2b9903271df21d18d2c721e9a77f779493234a82b5"}, + {file = "watchdog-1.0.2-py3-none-win_ia64.whl", hash = "sha256:ee21aeebe6b3e51e4ba64564c94cee8dbe7438b9cb60f0bb350c4fa70d1b52c2"}, + {file = "watchdog-1.0.2.tar.gz", hash = "sha256:376cbc2a35c0392b0fe7ff16fbc1b303fd99d4dd9911ab5581ee9d69adc88982"}, +] + +[package.extras] +watchmedo = ["PyYAML (>=3.10)", "argh (>=0.24.1)"] + +[metadata] +lock-version = "2.0" +python-versions = "^3.9" +content-hash = "2f375daf18fdf6561d2cca019340b245c54834c67b536f9c3e4ac1bd9cf207ca" diff --git a/poetry.toml b/poetry.toml new file mode 100644 index 000000000..ab1033bd3 --- /dev/null +++ b/poetry.toml @@ -0,0 +1,2 @@ +[virtualenvs] +in-project = true diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 000000000..f7b14fa87 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,127 @@ +[build-system] +build-backend = "poetry.core.masonry.api" +requires = ["poetry-core"] + +[tool.coverage.run] +omit = ["**/conftest.py", "*/test_data/*", "*_test.py", "conftest.py"] +relative_files = true + +[tool.mypy] +allow_redefinition = true +check_untyped_defs = true +exclude = [ + ".*_test.py$", + ".venv", + "artifacts*", + "test_.*.py", + "test_data", + "tests_data" +] +follow_imports = "silent" +ignore_missing_imports = true +namespace_packages = true +pretty = true +python_version = "3.10" +show_error_codes = true + +[tool.poetry] +authors = ["Cortex XSOAR"] +description = "" +name = "content-docs" +package-mode = false +readme = "README.md" +version = "0.0.5" + +[tool.poetry.dependencies] +beautifulsoup4 = "==4.12.2" +cachetools = "==5.3.1" +certifi = "==2023.5.7" +charset-normalizer = "==3.1.0" +docspec = "==0.2.1" +docspec-python = "==0.1.0" +google-api-core = "*" # "==2.11.0" +google-api-python-client = "*" # "==2.88.0" +google-auth = "*" # "==2.19.0" +google-auth-httplib2 = "*" # "==0.1.0" +google-cloud-core = "*" # "==2.3.2" +google-cloud-storage = "*" # "==2.9.0" +google-crc32c = "*" # "==1.5.0" +google-resumable-media = "*" # "==2.5.0" +googleapis-common-protos = "*" # "==1.59.0" +httplib2 = "==0.22.0" +idna = "==3.4" +inflection = "==0.5.1" +"nr.collections" = "==0.0.1" +"nr.databind.core" = "==0.0.22" +"nr.databind.json" = "==0.0.14" +"nr.fs" = "==1.6.3" +"nr.interface" = "==0.0.5" +"nr.metaclass" = "==0.0.6" +"nr.parsing.date" = "==0.6.1" +"nr.pylang.utils" = "==0.0.4" +"nr.stream" = "==0.0.5" +"nr.sumtype" = "==0.0.5" +"nr.utils.re" = "==0.1.1" +protobuf = "==4.23.2" +pyasn1 = "==0.5.0" +pyasn1-modules = "==0.3.0" +pydoc-markdown = "==3.10.0" +pyparsing = "==3.0.9" +python = "^3.9" +python-dateutil = "*" # "==2.8.2" +pyyaml = "==5.3" # "==5.4.1" +requests = "*" # "==2.31.0" +rsa = "*" # "==4.9" +six = "==1.16.0" +slack-sdk = "==3.21.3" +soupsieve = "==2.4.1" +toml = "==0.10.2" +types-python-dateutil = "*" # "==2.8.19.13" +types-pyyaml = "*" # "==6.0.12.10" +types-requests = "*" # "==2.31.0.1" +types-urllib3 = "==1.26.25.13" +uritemplate = "==4.1.1" +urllib3 = "==1.26.16" +watchdog = "==1.0.2" +python-gitlab = "^3.0.0" # import gitlab +junitparser = "^3.1.2" +jira = "^3.8.0" +gitpython = "^3.1.43" # import git + +[tool.poetry.group.dev] + +[tool.poetry.group.dev.dependencies] +pytest = ">=7.1.2" +requests-mock = ">=1.9.3" +pytest-mock = ">=3.7.0" +freezegun = ">=1.1.0" +dateparser = ">=1.2.0" + +[tool.ruff] +line-length = 130 +target-version = "py310" +lint.ignore = [ + "F403", # undefined-local-with-import-star + "F405", # undefined-local-with-import-star-usage + "PLC1901", # compare-to-empty-string + "RUF005", # collection-literal-concatenation" + "RUF012", # mutable-class-default + "RUF013", # implicit-optional + "RUF015", # unnecessary-iterable-allocation-for-first-element + "RUF017", # quadratic-list-summation + "RUF100" # unused-noqa +] +lint.select = [ + 'E', + 'F', + 'FURB', + 'I', + 'PIE', + 'PLC', + 'PLE', + 'RSE', + 'RUF', + 'TID', + 'UP', + 'YTT' +]