devservices 1.0.16__tar.gz → 1.0.17__tar.gz

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.
Files changed (58) hide show
  1. {devservices-1.0.16 → devservices-1.0.17}/PKG-INFO +1 -1
  2. {devservices-1.0.16 → devservices-1.0.17}/README.md +1 -1
  3. {devservices-1.0.16 → devservices-1.0.17}/devservices/commands/down.py +2 -2
  4. {devservices-1.0.16 → devservices-1.0.17}/devservices/commands/list_dependencies.py +1 -1
  5. {devservices-1.0.16 → devservices-1.0.17}/devservices/commands/logs.py +2 -2
  6. {devservices-1.0.16 → devservices-1.0.17}/devservices/commands/up.py +2 -2
  7. {devservices-1.0.16 → devservices-1.0.17}/devservices/main.py +32 -3
  8. {devservices-1.0.16 → devservices-1.0.17}/devservices.egg-info/PKG-INFO +1 -1
  9. {devservices-1.0.16 → devservices-1.0.17}/pyproject.toml +1 -1
  10. {devservices-1.0.16 → devservices-1.0.17}/LICENSE.md +0 -0
  11. {devservices-1.0.16 → devservices-1.0.17}/devservices/__init__.py +0 -0
  12. {devservices-1.0.16 → devservices-1.0.17}/devservices/commands/__init__.py +0 -0
  13. {devservices-1.0.16 → devservices-1.0.17}/devservices/commands/list_services.py +0 -0
  14. {devservices-1.0.16 → devservices-1.0.17}/devservices/commands/purge.py +0 -0
  15. {devservices-1.0.16 → devservices-1.0.17}/devservices/commands/status.py +0 -0
  16. {devservices-1.0.16 → devservices-1.0.17}/devservices/commands/update.py +0 -0
  17. {devservices-1.0.16 → devservices-1.0.17}/devservices/configs/service_config.py +0 -0
  18. {devservices-1.0.16 → devservices-1.0.17}/devservices/constants.py +0 -0
  19. {devservices-1.0.16 → devservices-1.0.17}/devservices/exceptions.py +0 -0
  20. {devservices-1.0.16 → devservices-1.0.17}/devservices/utils/__init__.py +0 -0
  21. {devservices-1.0.16 → devservices-1.0.17}/devservices/utils/check_for_update.py +0 -0
  22. {devservices-1.0.16 → devservices-1.0.17}/devservices/utils/console.py +0 -0
  23. {devservices-1.0.16 → devservices-1.0.17}/devservices/utils/dependencies.py +0 -0
  24. {devservices-1.0.16 → devservices-1.0.17}/devservices/utils/devenv.py +0 -0
  25. {devservices-1.0.16 → devservices-1.0.17}/devservices/utils/docker.py +0 -0
  26. {devservices-1.0.16 → devservices-1.0.17}/devservices/utils/docker_compose.py +0 -0
  27. {devservices-1.0.16 → devservices-1.0.17}/devservices/utils/file_lock.py +0 -0
  28. {devservices-1.0.16 → devservices-1.0.17}/devservices/utils/git.py +0 -0
  29. {devservices-1.0.16 → devservices-1.0.17}/devservices/utils/install_binary.py +0 -0
  30. {devservices-1.0.16 → devservices-1.0.17}/devservices/utils/services.py +0 -0
  31. {devservices-1.0.16 → devservices-1.0.17}/devservices/utils/state.py +0 -0
  32. {devservices-1.0.16 → devservices-1.0.17}/devservices.egg-info/SOURCES.txt +0 -0
  33. {devservices-1.0.16 → devservices-1.0.17}/devservices.egg-info/dependency_links.txt +0 -0
  34. {devservices-1.0.16 → devservices-1.0.17}/devservices.egg-info/entry_points.txt +0 -0
  35. {devservices-1.0.16 → devservices-1.0.17}/devservices.egg-info/requires.txt +0 -0
  36. {devservices-1.0.16 → devservices-1.0.17}/devservices.egg-info/top_level.txt +0 -0
  37. {devservices-1.0.16 → devservices-1.0.17}/setup.cfg +0 -0
  38. {devservices-1.0.16 → devservices-1.0.17}/testing/__init__.py +0 -0
  39. {devservices-1.0.16 → devservices-1.0.17}/testing/utils.py +0 -0
  40. {devservices-1.0.16 → devservices-1.0.17}/tests/__init__.py +0 -0
  41. {devservices-1.0.16 → devservices-1.0.17}/tests/commands/test_down.py +0 -0
  42. {devservices-1.0.16 → devservices-1.0.17}/tests/commands/test_list_dependencies.py +0 -0
  43. {devservices-1.0.16 → devservices-1.0.17}/tests/commands/test_list_services.py +0 -0
  44. {devservices-1.0.16 → devservices-1.0.17}/tests/commands/test_logs.py +0 -0
  45. {devservices-1.0.16 → devservices-1.0.17}/tests/commands/test_purge.py +0 -0
  46. {devservices-1.0.16 → devservices-1.0.17}/tests/commands/test_status.py +0 -0
  47. {devservices-1.0.16 → devservices-1.0.17}/tests/commands/test_up.py +0 -0
  48. {devservices-1.0.16 → devservices-1.0.17}/tests/commands/test_update.py +0 -0
  49. {devservices-1.0.16 → devservices-1.0.17}/tests/configs/test_service_config.py +0 -0
  50. {devservices-1.0.16 → devservices-1.0.17}/tests/conftest.py +0 -0
  51. {devservices-1.0.16 → devservices-1.0.17}/tests/utils/test_check_for_update.py +0 -0
  52. {devservices-1.0.16 → devservices-1.0.17}/tests/utils/test_dependencies.py +0 -0
  53. {devservices-1.0.16 → devservices-1.0.17}/tests/utils/test_docker.py +0 -0
  54. {devservices-1.0.16 → devservices-1.0.17}/tests/utils/test_docker_compose.py +0 -0
  55. {devservices-1.0.16 → devservices-1.0.17}/tests/utils/test_git.py +0 -0
  56. {devservices-1.0.16 → devservices-1.0.17}/tests/utils/test_install_binary.py +0 -0
  57. {devservices-1.0.16 → devservices-1.0.17}/tests/utils/test_services.py +0 -0
  58. {devservices-1.0.16 → devservices-1.0.17}/tests/utils/test_state.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: devservices
3
- Version: 1.0.16
3
+ Version: 1.0.17
4
4
  Requires-Python: >=3.10
5
5
  License-File: LICENSE.md
6
6
  Requires-Dist: pyyaml
@@ -11,7 +11,7 @@ A standalone cli tool used to manage dependencies for services. It simplifies th
11
11
  The recommended way to install devservices is through a virtualenv in the requirements.txt.
12
12
 
13
13
  ```
14
- devservices==1.0.16
14
+ devservices==1.0.17
15
15
  ```
16
16
 
17
17
 
@@ -60,7 +60,7 @@ def down(args: Namespace) -> None:
60
60
  try:
61
61
  service = find_matching_service(service_name)
62
62
  except ConfigNotFoundError as e:
63
- capture_exception(e)
63
+ capture_exception(e, level="info")
64
64
  console.failure(
65
65
  f"{str(e)}. Please specify a service (i.e. `devservices down sentry`) or run the command from a directory with a devservices configuration."
66
66
  )
@@ -148,7 +148,7 @@ def down(args: Namespace) -> None:
148
148
  try:
149
149
  _down(service, remote_dependencies, list(mode_dependencies), status)
150
150
  except DockerComposeError as dce:
151
- capture_exception(dce)
151
+ capture_exception(dce, level="info")
152
152
  status.failure(f"Failed to stop {service.name}: {dce.stderr}")
153
153
  exit(1)
154
154
  else:
@@ -34,7 +34,7 @@ def list_dependencies(args: Namespace) -> None:
34
34
  try:
35
35
  service = find_matching_service(service_name)
36
36
  except ConfigNotFoundError as e:
37
- capture_exception(e)
37
+ capture_exception(e, level="info")
38
38
  console.failure(
39
39
  f"{str(e)}. Please specify a service (i.e. `devservices list-dependencies sentry`) or run the command from a directory with a devservices configuration."
40
40
  )
@@ -49,7 +49,7 @@ def logs(args: Namespace) -> None:
49
49
  try:
50
50
  service = find_matching_service(service_name)
51
51
  except ConfigNotFoundError as e:
52
- capture_exception(e)
52
+ capture_exception(e, level="info")
53
53
  console.failure(
54
54
  f"{str(e)}. Please specify a service (i.e. `devservices logs sentry`) or run the command from a directory with a devservices configuration."
55
55
  )
@@ -86,7 +86,7 @@ def logs(args: Namespace) -> None:
86
86
  try:
87
87
  logs_output = _logs(service, remote_dependencies, mode_dependencies)
88
88
  except DockerComposeError as dce:
89
- capture_exception(dce)
89
+ capture_exception(dce, level="info")
90
90
  console.failure(f"Failed to get logs for {service.name}: {dce.stderr}")
91
91
  exit(1)
92
92
  for log in logs_output:
@@ -63,7 +63,7 @@ def up(args: Namespace) -> None:
63
63
  try:
64
64
  service = find_matching_service(service_name)
65
65
  except ConfigNotFoundError as e:
66
- capture_exception(e)
66
+ capture_exception(e, level="info")
67
67
  console.failure(
68
68
  f"{str(e)}. Please specify a service (i.e. `devservices up sentry`) or run the command from a directory with a devservices configuration."
69
69
  )
@@ -110,7 +110,7 @@ def up(args: Namespace) -> None:
110
110
  mode_dependencies = modes[mode]
111
111
  _up(service, [mode], remote_dependencies, mode_dependencies, status)
112
112
  except DockerComposeError as dce:
113
- capture_exception(dce)
113
+ capture_exception(dce, level="info")
114
114
  status.failure(f"Failed to start {service.name}: {dce.stderr}")
115
115
  exit(1)
116
116
  # TODO: We should factor in healthchecks here before marking service as running
@@ -15,6 +15,8 @@ from sentry_sdk import set_tag
15
15
  from sentry_sdk import set_user
16
16
  from sentry_sdk import start_transaction
17
17
  from sentry_sdk.integrations.argv import ArgvIntegration
18
+ from sentry_sdk.types import Event
19
+ from sentry_sdk.types import Hint
18
20
 
19
21
  from devservices.commands import down
20
22
  from devservices.commands import list_dependencies
@@ -42,6 +44,31 @@ disable_sentry = os.environ.get("DEVSERVICES_DISABLE_SENTRY", default="0") == "1
42
44
  logging.basicConfig(level=logging.INFO)
43
45
  current_version = metadata.version("devservices")
44
46
 
47
+ error_trace_ids = set()
48
+
49
+
50
+ def before_send_error(event: Event, hint: Hint) -> Event:
51
+ """Gets the trace_id from the errors we care about.
52
+
53
+ This function is used as a before_send callback for Sentry to track error trace IDs.
54
+ It adds the trace_id to error_trace_ids set for non-info level events.
55
+ """
56
+ if event["level"] != "info":
57
+ error_trace_ids.add(event["contexts"]["trace"]["trace_id"])
58
+ return event
59
+
60
+
61
+ def before_send_transaction(event: Event, hint: Hint) -> Event:
62
+ """Manually sets the status of a transaction.
63
+
64
+ This function is used as a before_send_transaction callback for Sentry to mark transaction status
65
+ as unknown if they don't correspond to errors we care about.
66
+ """
67
+ if event["contexts"]["trace"]["trace_id"] not in error_trace_ids:
68
+ event["contexts"]["trace"]["status"] = "unknown"
69
+ return event
70
+
71
+
45
72
  if not disable_sentry:
46
73
  init(
47
74
  dsn="https://56470da7302c16e83141f62f88e46449@o1.ingest.us.sentry.io/4507946704961536",
@@ -50,6 +77,8 @@ if not disable_sentry:
50
77
  enable_tracing=True,
51
78
  integrations=[ArgvIntegration()],
52
79
  environment=sentry_environment,
80
+ before_send=before_send_error,
81
+ before_send_transaction=before_send_transaction,
53
82
  release=current_version,
54
83
  )
55
84
  username = getpass.getuser()
@@ -59,7 +88,7 @@ if not disable_sentry:
59
88
  git_version = get_git_version()
60
89
  set_tag("git_version", git_version)
61
90
  except GitError as e:
62
- capture_exception(e)
91
+ capture_exception(e, level="info")
63
92
  logging.debug("Failed to get git version: %s", e)
64
93
  set_tag("git_version", "unknown")
65
94
 
@@ -75,11 +104,11 @@ def main() -> None:
75
104
  try:
76
105
  check_docker_compose_version()
77
106
  except DockerDaemonNotRunningError as e:
78
- capture_exception(e)
107
+ capture_exception(e, level="info")
79
108
  console.failure(str(e))
80
109
  exit(1)
81
110
  except DockerComposeInstallationError as e:
82
- capture_exception(e)
111
+ capture_exception(e, level="info")
83
112
  console.failure("Failed to ensure docker compose is installed and up-to-date")
84
113
  exit(1)
85
114
  parser = argparse.ArgumentParser(
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: devservices
3
- Version: 1.0.16
3
+ Version: 1.0.17
4
4
  Requires-Python: >=3.10
5
5
  License-File: LICENSE.md
6
6
  Requires-Dist: pyyaml
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "devservices"
7
- version = "1.0.16"
7
+ version = "1.0.17"
8
8
  # 3.10 is just for internal pypi compat
9
9
  requires-python = ">=3.10"
10
10
  dependencies = [
File without changes
File without changes