You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sedona.apache.org by ji...@apache.org on 2025/09/09 04:31:25 UTC

(sedona) branch scarf created (now a2287a52b4)

This is an automated email from the ASF dual-hosted git repository.

jiayu pushed a change to branch scarf
in repository https://gitbox.apache.org/repos/asf/sedona.git


      at a2287a52b4 Add Scarf

This branch includes the following new commits:

     new a2287a52b4 Add Scarf

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



(sedona) 01/01: Add Scarf

Posted by ji...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

jiayu pushed a commit to branch scarf
in repository https://gitbox.apache.org/repos/asf/sedona.git

commit a2287a52b42c328561cfa058989017f68edaed01
Author: Jia Yu <ji...@apache.org>
AuthorDate: Mon Sep 8 21:31:12 2025 -0700

    Add Scarf
---
 python/sedona/db/__init__.py  |  6 +++++
 python/sedona/db/telemetry.py | 61 +++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 67 insertions(+)

diff --git a/python/sedona/db/__init__.py b/python/sedona/db/__init__.py
index 569579f975..d47e53c0ff 100644
--- a/python/sedona/db/__init__.py
+++ b/python/sedona/db/__init__.py
@@ -15,6 +15,12 @@
 # specific language governing permissions and limitations
 # under the License.
 
+# Send telemetry on import
+from .telemetry import track_package_import
+
+track_package_import()
+
+# Import the actual sedonadb functions
 from sedonadb import connect, context, dataframe
 
 __all__ = [
diff --git a/python/sedona/db/telemetry.py b/python/sedona/db/telemetry.py
new file mode 100644
index 0000000000..5238db75ac
--- /dev/null
+++ b/python/sedona/db/telemetry.py
@@ -0,0 +1,61 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+"""
+Simple Scarf telemetry for sedona.db package.
+"""
+
+import os
+import platform
+import threading
+import urllib.request
+
+
+def _send_telemetry():
+    """Send simple telemetry data to Scarf gateway."""
+    # Check if telemetry is disabled
+    if os.getenv("SCARF_NO_ANALYTICS", "").lower() in ("true", "1", "yes") or os.getenv(
+        "DO_NOT_TRACK", ""
+    ).lower() in ("true", "1", "yes"):
+        return
+
+    try:
+        # Build URL with system info (replace spaces with underscores)
+        arch = platform.machine().lower().replace(" ", "_")
+        os_name = platform.system().lower().replace(" ", "_")
+        language = "python"
+        url = f"https://sedona.gateway.scarf.sh/sedona-db/{arch}/{os_name}/{language}"
+
+        # Send simple GET request in background
+        def _send():
+            try:
+                # Only allow HTTPS requests for security
+                if url.startswith("https://"):
+                    urllib.request.urlopen(url, timeout=5)  # nosec B310
+            except Exception:  # nosec B110
+                pass  # Silently fail
+
+        thread = threading.Thread(target=_send, daemon=True)
+        thread.start()
+
+    except Exception:  # nosec B110
+        pass  # Silently fail
+
+
+def track_package_import():
+    """Track when the sedona.db package is imported."""
+    _send_telemetry()