pyntcli 0.1.80__py3-none-any.whl → 0.1.81__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
pyntcli/__init__.py CHANGED
@@ -1 +1 @@
1
- __version__ = "0.1.80"
1
+ __version__ = "0.1.81"
pyntcli/analytics/send.py CHANGED
@@ -1,15 +1,19 @@
1
1
  import requests
2
2
  import time
3
3
  import platform
4
+ import socket
5
+ import subprocess
4
6
 
5
7
  from pyntcli import __version__
6
8
  from pyntcli.transport import pynt_requests
7
9
  import pyntcli.log.log as log
10
+ from pyntcli.ui import ui_thread
8
11
 
9
12
 
10
13
  PYNT_DEFAULT_USER_ID = "d9e3b82b-2900-43bf-8c8f-7ffe2f0cda36"
11
14
  MIXPANEL_TOKEN = "05c26edb86084bbbb803eed6818cd8aa"
12
- MIXPANEL_URL = "https://api-eu.mixpanel.com/track?ip=1"
15
+ MIXPANEL_DOMAIN = "api-eu.mixpanel.com"
16
+ MIXPANEL_URL = f"https://{MIXPANEL_DOMAIN}/track?ip=1"
13
17
 
14
18
  logger = log.get_logger()
15
19
 
@@ -47,18 +51,32 @@ class AnalyticsSender():
47
51
  self.user_id = user_id
48
52
  self.version = __version__
49
53
  self.events = []
54
+ self.disable_analytics = False
50
55
 
51
56
  @staticmethod
52
57
  def instance():
53
58
  if not AnalyticsSender._instance:
54
59
  AnalyticsSender._instance = AnalyticsSender()
60
+ AnalyticsSender._instance.check_network_restrictions()
55
61
 
56
62
  return AnalyticsSender._instance
57
63
 
64
+ def check_network_restrictions(self):
65
+ try:
66
+ result = subprocess.run(["ping", "-c", "1", MIXPANEL_DOMAIN], stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL, timeout=2)
67
+ if result.returncode != 0:
68
+ self.set_disable_analytics("ping return code not 0")
69
+ except (socket.gaierror, subprocess.TimeoutExpired):
70
+ self.set_disable_analytics("timeout")
71
+
72
+ def set_disable_analytics(self, reason: str):
73
+ self.disable_analytics = True
74
+ logger.debug(f"Disabling analytics due to : {reason}")
75
+
58
76
  def base_event(self, event_type):
59
77
  return {
60
78
  "event": event_type,
61
- "properties": {
79
+ "properties": {
62
80
  "time": time.time(),
63
81
  "distinct_id": self.user_id,
64
82
  "$os": platform.platform(),
@@ -75,10 +93,10 @@ class AnalyticsSender():
75
93
  base_event["properties"][k] = v
76
94
 
77
95
  if self.user_id != PYNT_DEFAULT_USER_ID:
78
- try:
96
+ if self.disable_analytics:
97
+ logger.info(f"Analytics disabled, sending to logz: {base_event}")
98
+ else:
79
99
  pynt_requests.post(MIXPANEL_URL, json=[base_event])
80
- except Exception:
81
- logger.info(f"mixpanel unavailable, sending to logz: {base_event}")
82
100
  else:
83
101
  self.events.append(base_event)
84
102
 
@@ -99,8 +117,9 @@ class AnalyticsSender():
99
117
 
100
118
  def done(self):
101
119
  if self.events:
102
- try:
120
+ if self.disable_analytics:
121
+ logger.info(f"Analytics disabled, sending to logz: {self.events}")
122
+ else:
103
123
  pynt_requests.post(MIXPANEL_URL, json=self.events)
104
- except Exception:
105
- logger.info(f"mixpanel unavailable, sending to logz: {self.events}")
124
+
106
125
  self.events = []
pyntcli/main.py CHANGED
@@ -6,7 +6,6 @@ from pyntcli.commands import pynt_cmd
6
6
  from pyntcli.pynt_docker import pynt_container
7
7
  from pyntcli.ui import ui_thread
8
8
  from pyntcli.ui import pynt_errors
9
- from pyntcli.ui import ui_thread
10
9
  from pyntcli.auth import login
11
10
  from pyntcli.analytics import send as analytics
12
11
  from requests.exceptions import SSLError
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pyntcli
3
- Version: 0.1.80
3
+ Version: 0.1.81
4
4
  Summary: Command line utility to handle all of Pynt's different integrations
5
5
  Author-email: Pynt-io <support@pynt.io>
6
6
  Project-URL: Homepage, https://pynt.io
@@ -1,7 +1,7 @@
1
- pyntcli/__init__.py,sha256=7BO6MGkPGuN-ZrZBKBek9x0F-EwGEiaELuB5k1018oE,23
2
- pyntcli/main.py,sha256=7ZDeG3IO04T98D2NJ1vHWVAVJVm8y719NeV2Aom7tPY,5171
1
+ pyntcli/__init__.py,sha256=4reVRut6pFQ0MxDHMjUh2C4vPGa3csSjDj46nUuBiXs,23
2
+ pyntcli/main.py,sha256=qTGMG2JSpieg-1RRgBz9dPL4vHo1WJJIxTPQYAuzxuY,5138
3
3
  pyntcli/analytics/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
- pyntcli/analytics/send.py,sha256=cKvMw4HIGJGLip5OMPqTv1AJDlKlc_Uk2Sfcl0e3QLE,2845
4
+ pyntcli/analytics/send.py,sha256=pJOyOWl3g_Vm9apKK3LzNVqsnC6zsWA1bCK3ZegbLpc,3637
5
5
  pyntcli/auth/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
6
6
  pyntcli/auth/login.py,sha256=TljsRXbEkNI1YUrKm5mlTw4YiecYScYUsit8Z8vstss,5228
7
7
  pyntcli/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -35,8 +35,8 @@ pyntcli/ui/ui_thread.py,sha256=OVTbiIFMg2KgxAvHf7yy86xGm4RVS2vj_VYZkMi-SRY,4956
35
35
  tests/conftest.py,sha256=gToq5K74GtgeGQXjFvXSzMaE6axBYxAzcFG5XJPOXjI,427
36
36
  tests/auth/test_login.py,sha256=KFlzWhXBAuwdi7GXf16gCB3ya94LQG2wjcSChE149rQ,3798
37
37
  tests/store/test_cred_store.py,sha256=_7-917EtNC9eKEumO2_lt-7KuDmCwOZFaowCm7DbA_A,254
38
- pyntcli-0.1.80.dist-info/METADATA,sha256=vpZ6n4DcVQ0o7mAw6eubAsPDT7buPIzGBwbDDN0rbuA,463
39
- pyntcli-0.1.80.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
40
- pyntcli-0.1.80.dist-info/entry_points.txt,sha256=kcGmqAxXDttNk2EPRcqunc_LTVp61gzakz0v-GEE2SY,43
41
- pyntcli-0.1.80.dist-info/top_level.txt,sha256=u9MDStwVHB7UG8PUcODeWCul_NvzL2EzoLvSlgwLHFs,30
42
- pyntcli-0.1.80.dist-info/RECORD,,
38
+ pyntcli-0.1.81.dist-info/METADATA,sha256=D5hWFtXYjvdJp7uIjMBlj8Z_yYP0pobzSV1Ce6T1onM,463
39
+ pyntcli-0.1.81.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
40
+ pyntcli-0.1.81.dist-info/entry_points.txt,sha256=kcGmqAxXDttNk2EPRcqunc_LTVp61gzakz0v-GEE2SY,43
41
+ pyntcli-0.1.81.dist-info/top_level.txt,sha256=u9MDStwVHB7UG8PUcODeWCul_NvzL2EzoLvSlgwLHFs,30
42
+ pyntcli-0.1.81.dist-info/RECORD,,