rusackas commented on code in PR #45588:
URL: https://github.com/apache/superset/pull/45588#discussion_r4343155725


##########
.github/workflows/update-country-maps.yml:
##########
@@ -0,0 +1,146 @@
+name: Update Country Maps
+
+# Regenerates plugins/plugin-chart-country-map's GeoJSON files, countries.ts
+# and docs/data/countries.json from upstream Natural Earth + community geo
+# data, by running the same notebook `npm run update-maps` runs locally.
+#
+# This is workflow_dispatch-only, not scheduled: unlike a translation-string
+# catch-up, a border/region change here is the kind of thing that needs an
+# actual human look at the rendered maps before merging, not an unattended
+# auto-merge. Several sources the notebook reads from are community repos
+# tracked at a floating `main` ref rather than a pinned commit, and one is a
+# live WHO ArcGIS query, so a run can legitimately pick up an unreviewed
+# upstream change. A maintainer triggers this when they know upstream data
+# moved (e.g. a new Natural Earth release) and reviews the diff before
+# merging, the same way bump-python-package.yml's dispatch-only bot works.
+on:
+  workflow_dispatch: {}
+
+permissions:
+  contents: read
+
+jobs:
+  update-country-maps:
+    runs-on: ubuntu-26.04
+    permissions:
+      contents: write
+      pull-requests: write
+    steps:
+      - name: "Checkout master"
+        uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # 
v7.0.1
+        with:
+          ref: master
+          persist-credentials: true
+
+      - name: Setup Python
+        uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # 
v7.0.0
+        with:
+          python-version: "3.11"
+
+      - name: Install notebook dependencies
+        run: |
+          pip install jupyter nbconvert ipykernel geopandas shapely matplotlib 
requests
+
+      - name: Force speed_run (skip interactive preview rendering)
+        working-directory: 
superset-frontend/plugins/plugin-chart-country-map/scripts
+        run: |
+          python3 - <<'PYEOF'
+          import json
+
+          path = "Country Map GeoJSON Generator.ipynb"
+          with open(path, encoding="utf-8") as f:
+              nb = json.load(f)
+
+          for cell in nb["cells"]:
+              if cell["cell_type"] != "code":
+                  continue
+              if "".join(cell["source"]).strip().startswith("speed_run = 
False"):
+                  cell["source"] = [
+                      "speed_run = True\n",
+                      "# forced True for unattended CI regeneration; not 
committed back\n",
+                  ]
+                  break
+          else:
+              raise SystemExit("Could not find the speed_run cell to patch")
+
+          with open(".ci-run.ipynb", "w", encoding="utf-8") as f:
+              json.dump(nb, f)
+          PYEOF
+
+      - name: Run notebook
+        working-directory: 
superset-frontend/plugins/plugin-chart-country-map/scripts
+        run: |
+          jupyter nbconvert --to notebook --execute --inplace --allow-errors \
+            --ExecutePreprocessor.timeout=1200 .ci-run.ipynb
+
+      - name: Check for cell errors and record a summary
+        id: notebook
+        working-directory: 
superset-frontend/plugins/plugin-chart-country-map/scripts
+        run: |
+          python3 - <<'PYEOF' >> "$GITHUB_OUTPUT"
+          import json
+
+          with open(".ci-run.ipynb", encoding="utf-8") as f:
+              nb = json.load(f)
+
+          errors = []
+          for i, cell in enumerate(nb["cells"]):
+              for output in cell.get("outputs", []):
+                  if output.get("output_type") == "error":
+                      errors.append(f"cell {i}: {output.get('ename')}: 
{output.get('evalue')}")
+
+          if errors:
+              print("had_errors=true")
+              summary = "\\n".join(f"- {e}" for e in errors[:20])
+          else:
+              print("had_errors=false")
+              summary = ""
+
+          with open("notebook-errors.txt", "w", encoding="utf-8") as f:
+              f.write(summary)
+          PYEOF
+          rm -f .ci-run.ipynb
+
+      - name: Check for drift
+        id: diff
+        run: |
+          
PATHS="superset-frontend/plugins/plugin-chart-country-map/src/countries 
superset-frontend/plugins/plugin-chart-country-map/src/countries.ts 
docs/data/countries.json"
+          if git diff --quiet -- $PATHS; then
+            echo "has_changes=false" >> "$GITHUB_OUTPUT"
+          else
+            echo "has_changes=true" >> "$GITHUB_OUTPUT"
+          fi
+
+      - name: Open or update sync PR
+        if: steps.diff.outputs.has_changes == 'true'
+        env:
+          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}

Review Comment:
   Intentional: this is dispatch-only and a maintainer reviews the rendered map 
diff anyway, so a close/reopen (or push) on the PR kicks off CI at that point. 
Same tradeoff as the other bot-opened PRs here.



##########
.github/workflows/update-country-maps.yml:
##########
@@ -0,0 +1,146 @@
+name: Update Country Maps
+
+# Regenerates plugins/plugin-chart-country-map's GeoJSON files, countries.ts
+# and docs/data/countries.json from upstream Natural Earth + community geo
+# data, by running the same notebook `npm run update-maps` runs locally.
+#
+# This is workflow_dispatch-only, not scheduled: unlike a translation-string
+# catch-up, a border/region change here is the kind of thing that needs an
+# actual human look at the rendered maps before merging, not an unattended
+# auto-merge. Several sources the notebook reads from are community repos
+# tracked at a floating `main` ref rather than a pinned commit, and one is a
+# live WHO ArcGIS query, so a run can legitimately pick up an unreviewed
+# upstream change. A maintainer triggers this when they know upstream data
+# moved (e.g. a new Natural Earth release) and reviews the diff before
+# merging, the same way bump-python-package.yml's dispatch-only bot works.
+on:
+  workflow_dispatch: {}
+
+permissions:
+  contents: read
+
+jobs:
+  update-country-maps:
+    runs-on: ubuntu-26.04
+    permissions:
+      contents: write
+      pull-requests: write
+    steps:
+      - name: "Checkout master"
+        uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # 
v7.0.1
+        with:
+          ref: master
+          persist-credentials: true
+
+      - name: Setup Python
+        uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # 
v7.0.0
+        with:
+          python-version: "3.11"
+
+      - name: Install notebook dependencies
+        run: |
+          pip install jupyter nbconvert ipykernel geopandas shapely matplotlib 
requests
+
+      - name: Force speed_run (skip interactive preview rendering)
+        working-directory: 
superset-frontend/plugins/plugin-chart-country-map/scripts
+        run: |
+          python3 - <<'PYEOF'
+          import json
+
+          path = "Country Map GeoJSON Generator.ipynb"
+          with open(path, encoding="utf-8") as f:
+              nb = json.load(f)
+
+          for cell in nb["cells"]:
+              if cell["cell_type"] != "code":
+                  continue
+              if "".join(cell["source"]).strip().startswith("speed_run = 
False"):
+                  cell["source"] = [
+                      "speed_run = True\n",
+                      "# forced True for unattended CI regeneration; not 
committed back\n",
+                  ]
+                  break
+          else:
+              raise SystemExit("Could not find the speed_run cell to patch")
+
+          with open(".ci-run.ipynb", "w", encoding="utf-8") as f:
+              json.dump(nb, f)
+          PYEOF
+
+      - name: Run notebook
+        working-directory: 
superset-frontend/plugins/plugin-chart-country-map/scripts
+        run: |
+          jupyter nbconvert --to notebook --execute --inplace --allow-errors \
+            --ExecutePreprocessor.timeout=1200 .ci-run.ipynb
+
+      - name: Check for cell errors and record a summary
+        id: notebook
+        working-directory: 
superset-frontend/plugins/plugin-chart-country-map/scripts
+        run: |
+          python3 - <<'PYEOF' >> "$GITHUB_OUTPUT"
+          import json
+
+          with open(".ci-run.ipynb", encoding="utf-8") as f:
+              nb = json.load(f)
+
+          errors = []
+          for i, cell in enumerate(nb["cells"]):
+              for output in cell.get("outputs", []):
+                  if output.get("output_type") == "error":
+                      errors.append(f"cell {i}: {output.get('ename')}: 
{output.get('evalue')}")
+
+          if errors:
+              print("had_errors=true")
+              summary = "\\n".join(f"- {e}" for e in errors[:20])
+          else:
+              print("had_errors=false")
+              summary = ""
+
+          with open("notebook-errors.txt", "w", encoding="utf-8") as f:
+              f.write(summary)
+          PYEOF
+          rm -f .ci-run.ipynb
+
+      - name: Check for drift
+        id: diff
+        run: |
+          
PATHS="superset-frontend/plugins/plugin-chart-country-map/src/countries 
superset-frontend/plugins/plugin-chart-country-map/src/countries.ts 
docs/data/countries.json"
+          if git diff --quiet -- $PATHS; then
+            echo "has_changes=false" >> "$GITHUB_OUTPUT"
+          else
+            echo "has_changes=true" >> "$GITHUB_OUTPUT"
+          fi
+
+      - name: Open or update sync PR
+        if: steps.diff.outputs.has_changes == 'true'
+        env:
+          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+          BRANCH: chore/update-country-maps-automated
+          HAD_ERRORS: ${{ steps.notebook.outputs.had_errors }}
+        run: |
+          git config user.name "GitHub Action"
+          git config user.email "[email protected]"
+          git checkout -b "$BRANCH"
+          git add 
superset-frontend/plugins/plugin-chart-country-map/src/countries \
+            
superset-frontend/plugins/plugin-chart-country-map/src/countries.ts \
+            docs/data/countries.json
+          git commit -m "chore(country-map): regenerate GeoJSON from upstream 
sources" \
+            -m "Automated run of the Country Map GeoJSON Generator notebook 
(npm run update-maps). Review the rendered diffs before merging - some sources 
are tracked at a floating ref rather than a pinned commit."
+          git push --force origin "$BRANCH"

Review Comment:
   Added a `concurrency` group so manual runs queue instead of overlapping.



##########
.github/workflows/update-country-maps.yml:
##########
@@ -0,0 +1,146 @@
+name: Update Country Maps
+
+# Regenerates plugins/plugin-chart-country-map's GeoJSON files, countries.ts
+# and docs/data/countries.json from upstream Natural Earth + community geo
+# data, by running the same notebook `npm run update-maps` runs locally.
+#
+# This is workflow_dispatch-only, not scheduled: unlike a translation-string
+# catch-up, a border/region change here is the kind of thing that needs an
+# actual human look at the rendered maps before merging, not an unattended
+# auto-merge. Several sources the notebook reads from are community repos
+# tracked at a floating `main` ref rather than a pinned commit, and one is a
+# live WHO ArcGIS query, so a run can legitimately pick up an unreviewed
+# upstream change. A maintainer triggers this when they know upstream data
+# moved (e.g. a new Natural Earth release) and reviews the diff before
+# merging, the same way bump-python-package.yml's dispatch-only bot works.
+on:
+  workflow_dispatch: {}
+
+permissions:
+  contents: read
+
+jobs:
+  update-country-maps:
+    runs-on: ubuntu-26.04
+    permissions:
+      contents: write
+      pull-requests: write
+    steps:
+      - name: "Checkout master"
+        uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # 
v7.0.1
+        with:
+          ref: master
+          persist-credentials: true
+
+      - name: Setup Python
+        uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # 
v7.0.0
+        with:
+          python-version: "3.11"
+
+      - name: Install notebook dependencies
+        run: |
+          pip install jupyter nbconvert ipykernel geopandas shapely matplotlib 
requests
+
+      - name: Force speed_run (skip interactive preview rendering)
+        working-directory: 
superset-frontend/plugins/plugin-chart-country-map/scripts
+        run: |
+          python3 - <<'PYEOF'
+          import json
+
+          path = "Country Map GeoJSON Generator.ipynb"
+          with open(path, encoding="utf-8") as f:
+              nb = json.load(f)
+
+          for cell in nb["cells"]:
+              if cell["cell_type"] != "code":
+                  continue
+              if "".join(cell["source"]).strip().startswith("speed_run = 
False"):
+                  cell["source"] = [
+                      "speed_run = True\n",
+                      "# forced True for unattended CI regeneration; not 
committed back\n",
+                  ]
+                  break
+          else:
+              raise SystemExit("Could not find the speed_run cell to patch")
+
+          with open(".ci-run.ipynb", "w", encoding="utf-8") as f:
+              json.dump(nb, f)
+          PYEOF
+
+      - name: Run notebook
+        working-directory: 
superset-frontend/plugins/plugin-chart-country-map/scripts
+        run: |
+          jupyter nbconvert --to notebook --execute --inplace --allow-errors \
+            --ExecutePreprocessor.timeout=1200 .ci-run.ipynb
+
+      - name: Check for cell errors and record a summary
+        id: notebook
+        working-directory: 
superset-frontend/plugins/plugin-chart-country-map/scripts
+        run: |
+          python3 - <<'PYEOF' >> "$GITHUB_OUTPUT"
+          import json
+
+          with open(".ci-run.ipynb", encoding="utf-8") as f:
+              nb = json.load(f)
+
+          errors = []
+          for i, cell in enumerate(nb["cells"]):
+              for output in cell.get("outputs", []):
+                  if output.get("output_type") == "error":
+                      errors.append(f"cell {i}: {output.get('ename')}: 
{output.get('evalue')}")
+
+          if errors:
+              print("had_errors=true")
+              summary = "\\n".join(f"- {e}" for e in errors[:20])
+          else:
+              print("had_errors=false")
+              summary = ""
+
+          with open("notebook-errors.txt", "w", encoding="utf-8") as f:
+              f.write(summary)
+          PYEOF
+          rm -f .ci-run.ipynb
+
+      - name: Check for drift
+        id: diff
+        run: |
+          
PATHS="superset-frontend/plugins/plugin-chart-country-map/src/countries 
superset-frontend/plugins/plugin-chart-country-map/src/countries.ts 
docs/data/countries.json"
+          if git diff --quiet -- $PATHS; then
+            echo "has_changes=false" >> "$GITHUB_OUTPUT"
+          else
+            echo "has_changes=true" >> "$GITHUB_OUTPUT"
+          fi
+
+      - name: Open or update sync PR
+        if: steps.diff.outputs.has_changes == 'true'
+        env:
+          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+          BRANCH: chore/update-country-maps-automated
+          HAD_ERRORS: ${{ steps.notebook.outputs.had_errors }}
+        run: |
+          git config user.name "GitHub Action"
+          git config user.email "[email protected]"
+          git checkout -b "$BRANCH"
+          git add 
superset-frontend/plugins/plugin-chart-country-map/src/countries \
+            
superset-frontend/plugins/plugin-chart-country-map/src/countries.ts \
+            docs/data/countries.json
+          git commit -m "chore(country-map): regenerate GeoJSON from upstream 
sources" \
+            -m "Automated run of the Country Map GeoJSON Generator notebook 
(npm run update-maps). Review the rendered diffs before merging - some sources 
are tracked at a floating ref rather than a pinned commit."
+          git push --force origin "$BRANCH"
+
+          BODY="Automated run of \`npm run update-maps\` against current 
\`master\`. **Please review the rendered map diffs before merging** - this 
pulls from several community geo sources (some on a floating \`main\` ref, not 
a pinned commit) and a live WHO ArcGIS query, so an upstream change here hasn't 
had human eyes on it yet."
+          if [ "$HAD_ERRORS" = "true" ]; then
+            BODY="$BODY
+
+          ⚠️ The notebook run hit cell errors (ran with --allow-errors, so it 
continued past them - affected countries' data may be stale rather than 
updated):
+          $(cat 
superset-frontend/plugins/plugin-chart-country-map/scripts/notebook-errors.txt)"
+          fi
+
+          if gh pr list --repo "$GITHUB_REPOSITORY" --head "$BRANCH" --state 
open --json number --jq 'length > 0' | grep -q true; then
+            echo "PR already open for $BRANCH; branch push above updated it."

Review Comment:
   The existing-PR branch now refreshes the body with `gh pr edit`, so the 
error warning stays current.



##########
.github/workflows/update-country-maps.yml:
##########
@@ -0,0 +1,146 @@
+name: Update Country Maps
+
+# Regenerates plugins/plugin-chart-country-map's GeoJSON files, countries.ts
+# and docs/data/countries.json from upstream Natural Earth + community geo
+# data, by running the same notebook `npm run update-maps` runs locally.
+#
+# This is workflow_dispatch-only, not scheduled: unlike a translation-string
+# catch-up, a border/region change here is the kind of thing that needs an
+# actual human look at the rendered maps before merging, not an unattended
+# auto-merge. Several sources the notebook reads from are community repos
+# tracked at a floating `main` ref rather than a pinned commit, and one is a
+# live WHO ArcGIS query, so a run can legitimately pick up an unreviewed
+# upstream change. A maintainer triggers this when they know upstream data
+# moved (e.g. a new Natural Earth release) and reviews the diff before
+# merging, the same way bump-python-package.yml's dispatch-only bot works.
+on:
+  workflow_dispatch: {}
+
+permissions:
+  contents: read
+
+jobs:
+  update-country-maps:
+    runs-on: ubuntu-26.04
+    permissions:
+      contents: write
+      pull-requests: write
+    steps:
+      - name: "Checkout master"
+        uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # 
v7.0.1
+        with:
+          ref: master
+          persist-credentials: true
+
+      - name: Setup Python
+        uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # 
v7.0.0
+        with:
+          python-version: "3.11"
+
+      - name: Install notebook dependencies
+        run: |
+          pip install jupyter nbconvert ipykernel geopandas shapely matplotlib 
requests
+
+      - name: Force speed_run (skip interactive preview rendering)
+        working-directory: 
superset-frontend/plugins/plugin-chart-country-map/scripts
+        run: |
+          python3 - <<'PYEOF'
+          import json
+
+          path = "Country Map GeoJSON Generator.ipynb"
+          with open(path, encoding="utf-8") as f:
+              nb = json.load(f)
+
+          for cell in nb["cells"]:
+              if cell["cell_type"] != "code":
+                  continue
+              if "".join(cell["source"]).strip().startswith("speed_run = 
False"):
+                  cell["source"] = [
+                      "speed_run = True\n",
+                      "# forced True for unattended CI regeneration; not 
committed back\n",
+                  ]
+                  break
+          else:
+              raise SystemExit("Could not find the speed_run cell to patch")
+
+          with open(".ci-run.ipynb", "w", encoding="utf-8") as f:
+              json.dump(nb, f)
+          PYEOF
+
+      - name: Run notebook
+        working-directory: 
superset-frontend/plugins/plugin-chart-country-map/scripts
+        run: |
+          jupyter nbconvert --to notebook --execute --inplace --allow-errors \
+            --ExecutePreprocessor.timeout=1200 .ci-run.ipynb
+
+      - name: Check for cell errors and record a summary
+        id: notebook
+        working-directory: 
superset-frontend/plugins/plugin-chart-country-map/scripts
+        run: |
+          python3 - <<'PYEOF' >> "$GITHUB_OUTPUT"
+          import json
+
+          with open(".ci-run.ipynb", encoding="utf-8") as f:
+              nb = json.load(f)
+
+          errors = []
+          for i, cell in enumerate(nb["cells"]):
+              for output in cell.get("outputs", []):
+                  if output.get("output_type") == "error":
+                      errors.append(f"cell {i}: {output.get('ename')}: 
{output.get('evalue')}")
+
+          if errors:
+              print("had_errors=true")
+              summary = "\\n".join(f"- {e}" for e in errors[:20])
+          else:
+              print("had_errors=false")
+              summary = ""
+
+          with open("notebook-errors.txt", "w", encoding="utf-8") as f:
+              f.write(summary)
+          PYEOF
+          rm -f .ci-run.ipynb
+
+      - name: Check for drift
+        id: diff
+        run: |
+          
PATHS="superset-frontend/plugins/plugin-chart-country-map/src/countries 
superset-frontend/plugins/plugin-chart-country-map/src/countries.ts 
docs/data/countries.json"
+          if git diff --quiet -- $PATHS; then
+            echo "has_changes=false" >> "$GITHUB_OUTPUT"
+          else
+            echo "has_changes=true" >> "$GITHUB_OUTPUT"
+          fi
+
+      - name: Open or update sync PR
+        if: steps.diff.outputs.has_changes == 'true'

Review Comment:
   @sadpandajoe good catch. Cell errors now emit a warning annotation and go to 
the job summary in the notebook step, independent of drift.



##########
.github/workflows/update-country-maps.yml:
##########
@@ -0,0 +1,146 @@
+name: Update Country Maps
+
+# Regenerates plugins/plugin-chart-country-map's GeoJSON files, countries.ts
+# and docs/data/countries.json from upstream Natural Earth + community geo
+# data, by running the same notebook `npm run update-maps` runs locally.
+#
+# This is workflow_dispatch-only, not scheduled: unlike a translation-string
+# catch-up, a border/region change here is the kind of thing that needs an
+# actual human look at the rendered maps before merging, not an unattended
+# auto-merge. Several sources the notebook reads from are community repos
+# tracked at a floating `main` ref rather than a pinned commit, and one is a
+# live WHO ArcGIS query, so a run can legitimately pick up an unreviewed
+# upstream change. A maintainer triggers this when they know upstream data
+# moved (e.g. a new Natural Earth release) and reviews the diff before
+# merging, the same way bump-python-package.yml's dispatch-only bot works.
+on:
+  workflow_dispatch: {}
+
+permissions:
+  contents: read
+
+jobs:
+  update-country-maps:
+    runs-on: ubuntu-26.04
+    permissions:
+      contents: write
+      pull-requests: write
+    steps:
+      - name: "Checkout master"
+        uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # 
v7.0.1
+        with:
+          ref: master
+          persist-credentials: true
+
+      - name: Setup Python
+        uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # 
v7.0.0
+        with:
+          python-version: "3.11"
+
+      - name: Install notebook dependencies
+        run: |
+          pip install jupyter nbconvert ipykernel geopandas shapely matplotlib 
requests
+
+      - name: Force speed_run (skip interactive preview rendering)
+        working-directory: 
superset-frontend/plugins/plugin-chart-country-map/scripts
+        run: |
+          python3 - <<'PYEOF'
+          import json
+
+          path = "Country Map GeoJSON Generator.ipynb"
+          with open(path, encoding="utf-8") as f:
+              nb = json.load(f)
+
+          for cell in nb["cells"]:
+              if cell["cell_type"] != "code":
+                  continue
+              if "".join(cell["source"]).strip().startswith("speed_run = 
False"):
+                  cell["source"] = [
+                      "speed_run = True\n",
+                      "# forced True for unattended CI regeneration; not 
committed back\n",
+                  ]
+                  break
+          else:
+              raise SystemExit("Could not find the speed_run cell to patch")
+
+          with open(".ci-run.ipynb", "w", encoding="utf-8") as f:
+              json.dump(nb, f)
+          PYEOF
+
+      - name: Run notebook
+        working-directory: 
superset-frontend/plugins/plugin-chart-country-map/scripts
+        run: |
+          jupyter nbconvert --to notebook --execute --inplace --allow-errors \
+            --ExecutePreprocessor.timeout=1200 .ci-run.ipynb
+
+      - name: Check for cell errors and record a summary
+        id: notebook
+        working-directory: 
superset-frontend/plugins/plugin-chart-country-map/scripts
+        run: |
+          python3 - <<'PYEOF' >> "$GITHUB_OUTPUT"
+          import json
+
+          with open(".ci-run.ipynb", encoding="utf-8") as f:
+              nb = json.load(f)
+
+          errors = []
+          for i, cell in enumerate(nb["cells"]):
+              for output in cell.get("outputs", []):
+                  if output.get("output_type") == "error":
+                      errors.append(f"cell {i}: {output.get('ename')}: 
{output.get('evalue')}")
+
+          if errors:
+              print("had_errors=true")
+              summary = "\\n".join(f"- {e}" for e in errors[:20])

Review Comment:
   @sadpandajoe yep, fixed to `"\n".join(...)`.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to