httpdbg 0.23.0__tar.gz → 0.24.1__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 (74) hide show
  1. {httpdbg-0.23.0 → httpdbg-0.24.1}/PKG-INFO +3 -2
  2. {httpdbg-0.23.0 → httpdbg-0.24.1}/README.md +2 -1
  3. {httpdbg-0.23.0 → httpdbg-0.24.1}/httpdbg/__init__.py +1 -1
  4. httpdbg-0.24.1/httpdbg/env.py +4 -0
  5. {httpdbg-0.23.0 → httpdbg-0.24.1}/httpdbg/hooks/all.py +5 -3
  6. {httpdbg-0.23.0 → httpdbg-0.24.1}/httpdbg/hooks/external.py +4 -5
  7. httpdbg-0.24.1/httpdbg/hooks/pytest.py +51 -0
  8. {httpdbg-0.23.0 → httpdbg-0.24.1}/httpdbg/initiator.py +22 -1
  9. {httpdbg-0.23.0 → httpdbg-0.24.1}/httpdbg/records.py +4 -1
  10. {httpdbg-0.23.0 → httpdbg-0.24.1}/httpdbg/utils.py +3 -1
  11. {httpdbg-0.23.0 → httpdbg-0.24.1}/httpdbg/webapp/api.py +2 -0
  12. {httpdbg-0.23.0 → httpdbg-0.24.1}/httpdbg/webapp/static/configuration.js +3 -0
  13. {httpdbg-0.23.0 → httpdbg-0.24.1}/httpdbg/webapp/static/index.htm +11 -1
  14. {httpdbg-0.23.0 → httpdbg-0.24.1}/httpdbg/webapp/static/main.js +6 -0
  15. {httpdbg-0.23.0 → httpdbg-0.24.1}/httpdbg/webapp/static/style.css +2 -0
  16. {httpdbg-0.23.0 → httpdbg-0.24.1}/httpdbg/webapp/static/table.css +21 -4
  17. {httpdbg-0.23.0 → httpdbg-0.24.1}/httpdbg.egg-info/PKG-INFO +3 -2
  18. {httpdbg-0.23.0 → httpdbg-0.24.1}/httpdbg.egg-info/SOURCES.txt +2 -0
  19. {httpdbg-0.23.0 → httpdbg-0.24.1}/LICENSE +0 -0
  20. {httpdbg-0.23.0 → httpdbg-0.24.1}/httpdbg/__main__.py +0 -0
  21. {httpdbg-0.23.0 → httpdbg-0.24.1}/httpdbg/args.py +0 -0
  22. {httpdbg-0.23.0 → httpdbg-0.24.1}/httpdbg/exception.py +0 -0
  23. {httpdbg-0.23.0 → httpdbg-0.24.1}/httpdbg/hooks/__init__.py +0 -0
  24. {httpdbg-0.23.0 → httpdbg-0.24.1}/httpdbg/hooks/aiohttp.py +0 -0
  25. {httpdbg-0.23.0 → httpdbg-0.24.1}/httpdbg/hooks/generic.py +0 -0
  26. {httpdbg-0.23.0 → httpdbg-0.24.1}/httpdbg/hooks/httpx.py +0 -0
  27. {httpdbg-0.23.0 → httpdbg-0.24.1}/httpdbg/hooks/requests.py +0 -0
  28. {httpdbg-0.23.0 → httpdbg-0.24.1}/httpdbg/hooks/socket.py +0 -0
  29. {httpdbg-0.23.0 → httpdbg-0.24.1}/httpdbg/hooks/urllib3.py +0 -0
  30. {httpdbg-0.23.0 → httpdbg-0.24.1}/httpdbg/hooks/utils.py +0 -0
  31. {httpdbg-0.23.0 → httpdbg-0.24.1}/httpdbg/mode_console.py +0 -0
  32. {httpdbg-0.23.0 → httpdbg-0.24.1}/httpdbg/mode_module.py +0 -0
  33. {httpdbg-0.23.0 → httpdbg-0.24.1}/httpdbg/mode_script.py +0 -0
  34. {httpdbg-0.23.0 → httpdbg-0.24.1}/httpdbg/preview.py +0 -0
  35. {httpdbg-0.23.0 → httpdbg-0.24.1}/httpdbg/server.py +0 -0
  36. {httpdbg-0.23.0 → httpdbg-0.24.1}/httpdbg/webapp/__init__.py +0 -0
  37. {httpdbg-0.23.0 → httpdbg-0.24.1}/httpdbg/webapp/app.py +0 -0
  38. {httpdbg-0.23.0 → httpdbg-0.24.1}/httpdbg/webapp/static/api.js +0 -0
  39. {httpdbg-0.23.0 → httpdbg-0.24.1}/httpdbg/webapp/static/column.css +0 -0
  40. {httpdbg-0.23.0 → httpdbg-0.24.1}/httpdbg/webapp/static/detail.css +0 -0
  41. {httpdbg-0.23.0 → httpdbg-0.24.1}/httpdbg/webapp/static/favicon.ico +0 -0
  42. {httpdbg-0.23.0 → httpdbg-0.24.1}/httpdbg/webapp/static/filter.js +0 -0
  43. {httpdbg-0.23.0 → httpdbg-0.24.1}/httpdbg/webapp/static/icons/chevron-direction-top-outline-icon.svg +0 -0
  44. {httpdbg-0.23.0 → httpdbg-0.24.1}/httpdbg/webapp/static/icons/download-install-line-icon.svg +0 -0
  45. {httpdbg-0.23.0 → httpdbg-0.24.1}/httpdbg/webapp/static/icons/engine-gears-icon.svg +0 -0
  46. {httpdbg-0.23.0 → httpdbg-0.24.1}/httpdbg/webapp/static/icons/files-papers-outline-icon.svg +0 -0
  47. {httpdbg-0.23.0 → httpdbg-0.24.1}/httpdbg/webapp/static/icons/filter-outline-icon.svg +0 -0
  48. {httpdbg-0.23.0 → httpdbg-0.24.1}/httpdbg/webapp/static/icons/information-mark-circle-outline-icon.svg +0 -0
  49. {httpdbg-0.23.0 → httpdbg-0.24.1}/httpdbg/webapp/static/icons/math-multiplication-icon.svg +0 -0
  50. {httpdbg-0.23.0 → httpdbg-0.24.1}/httpdbg/webapp/static/icons/push-pin-green-icon.svg +0 -0
  51. {httpdbg-0.23.0 → httpdbg-0.24.1}/httpdbg/webapp/static/icons/question-mark-round-line-icon.svg +0 -0
  52. {httpdbg-0.23.0 → httpdbg-0.24.1}/httpdbg/webapp/static/icons/recycle-bin-line-icon.svg +0 -0
  53. {httpdbg-0.23.0 → httpdbg-0.24.1}/httpdbg/webapp/static/icons/wait-sandclock-icon.svg +0 -0
  54. {httpdbg-0.23.0 → httpdbg-0.24.1}/httpdbg/webapp/static/mustache.min.js +0 -0
  55. {httpdbg-0.23.0 → httpdbg-0.24.1}/httpdbg/webapp/static/render.js +0 -0
  56. {httpdbg-0.23.0 → httpdbg-0.24.1}/httpdbg.egg-info/dependency_links.txt +0 -0
  57. {httpdbg-0.23.0 → httpdbg-0.24.1}/httpdbg.egg-info/entry_points.txt +0 -0
  58. {httpdbg-0.23.0 → httpdbg-0.24.1}/httpdbg.egg-info/requires.txt +0 -0
  59. {httpdbg-0.23.0 → httpdbg-0.24.1}/httpdbg.egg-info/top_level.txt +0 -0
  60. {httpdbg-0.23.0 → httpdbg-0.24.1}/pyproject.toml +0 -0
  61. {httpdbg-0.23.0 → httpdbg-0.24.1}/setup.cfg +0 -0
  62. {httpdbg-0.23.0 → httpdbg-0.24.1}/tests/test_api.py +0 -0
  63. {httpdbg-0.23.0 → httpdbg-0.24.1}/tests/test_cli.py +0 -0
  64. {httpdbg-0.23.0 → httpdbg-0.24.1}/tests/test_context_manager.py +0 -0
  65. {httpdbg-0.23.0 → httpdbg-0.24.1}/tests/test_hook_aiohttp.py +0 -0
  66. {httpdbg-0.23.0 → httpdbg-0.24.1}/tests/test_hook_httpx.py +0 -0
  67. {httpdbg-0.23.0 → httpdbg-0.24.1}/tests/test_hook_requests.py +0 -0
  68. {httpdbg-0.23.0 → httpdbg-0.24.1}/tests/test_hook_urllib3.py +0 -0
  69. {httpdbg-0.23.0 → httpdbg-0.24.1}/tests/test_initiator.py +0 -0
  70. {httpdbg-0.23.0 → httpdbg-0.24.1}/tests/test_mode_console.py +0 -0
  71. {httpdbg-0.23.0 → httpdbg-0.24.1}/tests/test_mode_module_pytest.py +0 -0
  72. {httpdbg-0.23.0 → httpdbg-0.24.1}/tests/test_mode_script.py +0 -0
  73. {httpdbg-0.23.0 → httpdbg-0.24.1}/tests/test_preview.py +0 -0
  74. {httpdbg-0.23.0 → httpdbg-0.24.1}/tests/test_server.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: httpdbg
3
- Version: 0.23.0
3
+ Version: 0.24.1
4
4
  Summary: A very simple tool to debug HTTP(S) client requests
5
5
  Author-email: cle-b <cle@tictac.pm>
6
6
  License: Apache-2.0
@@ -125,7 +125,7 @@ No configuration is necessary to start but some few settings are available for p
125
125
  ### command line
126
126
 
127
127
  ```console
128
- usage: pyhttpdbg [-h] [--port PORT] [--version] [--initiator INITIATOR] [--keep-up | --force-quit]
128
+ usage: pyhttpdbg [-h] [--host HOST] [--port PORT] [--version] [--initiator INITIATOR] [--keep-up | --force-quit]
129
129
  [--console | --module MODULE | --script SCRIPT]
130
130
 
131
131
  httdbg - a very simple tool to debug HTTP(S) client requests
@@ -152,6 +152,7 @@ Clic on the **&#9881;** button on the top right of the page.
152
152
  Some options are available:
153
153
  * Hide the netloc in the url
154
154
  * Hide the initiator rows
155
+ * Hide the tags
155
156
 
156
157
  To keep your configuration, bookmark the page with the full search query.
157
158
 
@@ -97,7 +97,7 @@ No configuration is necessary to start but some few settings are available for p
97
97
  ### command line
98
98
 
99
99
  ```console
100
- usage: pyhttpdbg [-h] [--port PORT] [--version] [--initiator INITIATOR] [--keep-up | --force-quit]
100
+ usage: pyhttpdbg [-h] [--host HOST] [--port PORT] [--version] [--initiator INITIATOR] [--keep-up | --force-quit]
101
101
  [--console | --module MODULE | --script SCRIPT]
102
102
 
103
103
  httdbg - a very simple tool to debug HTTP(S) client requests
@@ -124,6 +124,7 @@ Clic on the **&#9881;** button on the top right of the page.
124
124
  Some options are available:
125
125
  * Hide the netloc in the url
126
126
  * Hide the initiator rows
127
+ * Hide the tags
127
128
 
128
129
  To keep your configuration, bookmark the page with the full search query.
129
130
 
@@ -3,6 +3,6 @@ from httpdbg.hooks.all import httprecord
3
3
  from httpdbg.records import HTTPRecords
4
4
 
5
5
 
6
- __version__ = "0.23.0"
6
+ __version__ = "0.24.1"
7
7
 
8
8
  __all__ = ["httprecord", "HTTPRecords"]
@@ -0,0 +1,4 @@
1
+ HTTPDBG_CURRENT_INITIATOR = "HTTPDBG_CURRENT_INITIATOR"
2
+ HTTPDBG_CURRENT_TAG = "HTTPDBG_CURRENT_TAG"
3
+ HTTPDBG_LOG = "HTTPDBG_LOG"
4
+ HTTPDBG_SUBPROCESS_DIR = "HTTPDBG_SUBPROCESS_DIR"
@@ -5,11 +5,12 @@ from typing import List
5
5
  from typing import Union
6
6
 
7
7
  from httpdbg.hooks.aiohttp import hook_aiohttp
8
+ from httpdbg.hooks.external import watcher_external
8
9
  from httpdbg.hooks.generic import hook_generic
9
10
  from httpdbg.hooks.httpx import hook_httpx
11
+ from httpdbg.hooks.pytest import hook_pytest
10
12
  from httpdbg.hooks.requests import hook_requests
11
13
  from httpdbg.hooks.socket import hook_socket
12
- from httpdbg.hooks.external import watcher_external
13
14
  from httpdbg.hooks.urllib3 import hook_urllib3
14
15
  from httpdbg.records import HTTPRecords
15
16
 
@@ -27,5 +28,6 @@ def httprecord(
27
28
  with hook_requests(records):
28
29
  with hook_urllib3(records):
29
30
  with hook_aiohttp(records):
30
- with hook_generic(records, initiators):
31
- yield records
31
+ with hook_pytest(records):
32
+ with hook_generic(records, initiators):
33
+ yield records
@@ -8,17 +8,18 @@ import tempfile
8
8
  import time
9
9
  import threading
10
10
 
11
+ from httpdbg.env import HTTPDBG_SUBPROCESS_DIR
11
12
  from httpdbg.records import HTTPRecords
12
13
 
13
14
 
14
15
  @contextmanager
15
16
  def watcher_external(records: HTTPRecords) -> Generator[HTTPRecords, None, None]:
16
17
  try:
17
- if "HTTPDBG_SUBPROCESS_DIR" not in os.environ:
18
+ if HTTPDBG_SUBPROCESS_DIR not in os.environ:
18
19
  with tempfile.TemporaryDirectory(
19
20
  prefix="httpdbg"
20
21
  ) as httpdbg_subprocess_dir:
21
- os.environ["HTTPDBG_SUBPROCESS_DIR"] = httpdbg_subprocess_dir
22
+ os.environ[HTTPDBG_SUBPROCESS_DIR] = httpdbg_subprocess_dir
22
23
 
23
24
  watcher = WatcherSubprocessDirThread(records)
24
25
  watcher.start()
@@ -43,9 +44,7 @@ class WatcherSubprocessDirThread(threading.Thread):
43
44
  threading.Thread.__init__(self)
44
45
 
45
46
  def load_dump(self):
46
- for dump in glob.glob(
47
- f"{os.environ['HTTPDBG_SUBPROCESS_DIR']}/*.httpdbgrecords"
48
- ):
47
+ for dump in glob.glob(f"{os.environ[HTTPDBG_SUBPROCESS_DIR]}/*.httpdbgrecords"):
49
48
  with open(dump, "rb") as dumpfile:
50
49
  newrecords = pickle.load(dumpfile)
51
50
  self.records.requests.update(newrecords.requests)
@@ -0,0 +1,51 @@
1
+ # -*- coding: utf-8 -*-
2
+ from contextlib import contextmanager
3
+ from typing import Generator
4
+
5
+ from httpdbg.hooks.utils import decorate
6
+ from httpdbg.hooks.utils import getcallargs
7
+ from httpdbg.hooks.utils import undecorate
8
+ from httpdbg.initiator import httpdbg_tag
9
+ from httpdbg.records import HTTPRecords
10
+
11
+
12
+ def set_hook_for_pytest_fixture(_, method):
13
+ def hook(*args, **kwargs):
14
+ callargs = getcallargs(method, *args, **kwargs)
15
+
16
+ if "fixturefunc" in callargs:
17
+ with httpdbg_tag(getattr(callargs["fixturefunc"], "__name__", "fixture")):
18
+ return method(*args, **kwargs)
19
+ else:
20
+ return method(*args, **kwargs)
21
+
22
+ return hook
23
+
24
+
25
+ @contextmanager
26
+ def hook_pytest(records: HTTPRecords) -> Generator[None, None, None]:
27
+ hooks = False
28
+ try:
29
+ import _pytest.fixtures
30
+
31
+ _pytest.fixtures.call_fixture_func = decorate(
32
+ records, _pytest.fixtures.call_fixture_func, set_hook_for_pytest_fixture
33
+ )
34
+ _pytest.fixtures._teardown_yield_fixture = decorate(
35
+ records,
36
+ _pytest.fixtures._teardown_yield_fixture,
37
+ set_hook_for_pytest_fixture,
38
+ )
39
+ hooks = True
40
+ except ImportError:
41
+ pass
42
+
43
+ yield
44
+
45
+ if hooks:
46
+ _pytest.fixtures.call_fixture_func = undecorate(
47
+ _pytest.fixtures.call_fixture_func
48
+ )
49
+ _pytest.fixtures._teardown_yield_fixture = undecorate(
50
+ _pytest.fixtures._teardown_yield_fixture
51
+ )
@@ -8,6 +8,8 @@ from typing import List
8
8
  from typing import Tuple
9
9
  from typing import Union
10
10
 
11
+ from httpdbg.env import HTTPDBG_CURRENT_INITIATOR
12
+ from httpdbg.env import HTTPDBG_CURRENT_TAG
11
13
  from httpdbg.hooks.utils import getcallargs
12
14
  from httpdbg.utils import get_new_uuid
13
15
  from httpdbg.utils import logger
@@ -181,7 +183,7 @@ def extract_short_stack_from_file(
181
183
  def httpdbg_initiator(
182
184
  records, extracted_stack: traceback.StackSummary, original_method, *args, **kwargs
183
185
  ) -> Generator[Union[Initiator, None], None, None]:
184
- envname = f"HTTPDBG_CURRENT_INITIATOR_{records.id}"
186
+ envname = f"{HTTPDBG_CURRENT_INITIATOR}_{records.id}"
185
187
 
186
188
  if not os.environ.get(envname):
187
189
  # temporary set a fake initiator env variable to avoid a recursion error
@@ -217,3 +219,22 @@ def httpdbg_initiator(
217
219
 
218
220
  else:
219
221
  yield None
222
+
223
+
224
+ @contextmanager
225
+ def httpdbg_tag(tag: str) -> Generator[None, None, None]:
226
+
227
+ tag_already_set = HTTPDBG_CURRENT_TAG in os.environ
228
+
229
+ if not tag_already_set:
230
+ os.environ[HTTPDBG_CURRENT_TAG] = tag
231
+
232
+ try:
233
+ yield
234
+ except Exception:
235
+ if (not tag_already_set) and (HTTPDBG_CURRENT_TAG in os.environ):
236
+ del os.environ[HTTPDBG_CURRENT_TAG]
237
+ raise
238
+
239
+ if (not tag_already_set) and (HTTPDBG_CURRENT_TAG in os.environ):
240
+ del os.environ[HTTPDBG_CURRENT_TAG]
@@ -9,6 +9,8 @@ import traceback
9
9
  from urllib.parse import urlparse
10
10
  from typing import Dict, List, Tuple, Union
11
11
 
12
+ from httpdbg.env import HTTPDBG_CURRENT_INITIATOR
13
+ from httpdbg.env import HTTPDBG_CURRENT_TAG
12
14
  from httpdbg.utils import HTTPDBGCookie
13
15
  from httpdbg.utils import HTTPDBGHeader
14
16
  from httpdbg.initiator import in_lib
@@ -211,6 +213,7 @@ class HTTPRecord:
211
213
  self.response: HTTPRecordResponse = HTTPRecordResponse()
212
214
  self.ssl: Union[bool, None] = None
213
215
  self.tbegin: datetime.datetime = datetime.datetime.now(datetime.timezone.utc)
216
+ self.tag = os.environ.get(HTTPDBG_CURRENT_TAG)
214
217
  if tbegin:
215
218
  self.tbegin = tbegin
216
219
 
@@ -302,7 +305,7 @@ class HTTPRecords:
302
305
  return len(self.requests)
303
306
 
304
307
  def get_initiator(self) -> Initiator:
305
- envname = f"HTTPDBG_CURRENT_INITIATOR_{self.id}"
308
+ envname = f"{HTTPDBG_CURRENT_INITIATOR}_{self.id}"
306
309
 
307
310
  if envname in os.environ:
308
311
  initiator = self._initiators[os.environ[envname]]
@@ -6,9 +6,11 @@ import secrets
6
6
  import string
7
7
  from typing import List
8
8
 
9
+ from httpdbg.env import HTTPDBG_LOG
10
+
9
11
  logger = logging.getLogger("httpdbg")
10
12
  logger.setLevel(100)
11
- log_level = os.environ.get("HTTPDBG_LOG")
13
+ log_level = os.environ.get(HTTPDBG_LOG)
12
14
  if log_level is not None:
13
15
  logging.basicConfig(level=int(log_level), format="%(message)s")
14
16
  logger.setLevel(int(log_level))
@@ -20,6 +20,7 @@ class RequestPayload(JSONEncoder):
20
20
  "request": None,
21
21
  "response": None,
22
22
  "exception": None,
23
+ "tag": req.tag,
23
24
  "initiator": req.initiator.to_json(),
24
25
  "in_progress": req.in_progress,
25
26
  }
@@ -74,6 +75,7 @@ class RequestListPayload(JSONEncoder):
74
75
  "status_code": req.status_code,
75
76
  "reason": req.reason,
76
77
  "verb": req.method,
78
+ "tag": req.tag,
77
79
  "initiator": req.initiator.to_json(full=False),
78
80
  "in_progress": req.in_progress,
79
81
  "tbegin": req.tbegin.isoformat(),
@@ -34,6 +34,7 @@ function apply_config() {
34
34
 
35
35
  apply_config_rule_css(httpdbgApp.config.hide_netloc, sheet);
36
36
  apply_config_rule_css(httpdbgApp.config.hide_initiator, sheet);
37
+ apply_config_rule_css(httpdbgApp.config.hide_tag, sheet);
37
38
 
38
39
  apply_config_rule_click(httpdbgApp.config.details_wrap_default);
39
40
  apply_config_rule_click(httpdbgApp.config.details_raw_default);
@@ -48,6 +49,7 @@ function load_config_from_url(apply) {
48
49
 
49
50
  load_config_rule_from_url(httpdbgApp.config.hide_netloc, params);
50
51
  load_config_rule_from_url(httpdbgApp.config.hide_initiator, params);
52
+ load_config_rule_from_url(httpdbgApp.config.hide_tag, params);
51
53
  load_config_rule_from_url(httpdbgApp.config.details_wrap_default, params);
52
54
  load_config_rule_from_url(httpdbgApp.config.details_raw_default, params);
53
55
 
@@ -65,6 +67,7 @@ function load_config_from_form(apply) {
65
67
 
66
68
  load_config_rule_from_form(httpdbgApp.config.hide_netloc);
67
69
  load_config_rule_from_form(httpdbgApp.config.hide_initiator);
70
+ load_config_rule_from_form(httpdbgApp.config.hide_tag);
68
71
  load_config_rule_from_form(httpdbgApp.config.details_wrap_default);
69
72
  load_config_rule_from_form(httpdbgApp.config.details_raw_default);
70
73
 
@@ -68,6 +68,11 @@
68
68
 
69
69
  <input type="checkbox" id="cinitiator" name="hi" onchange="load_config_from_form(true)">
70
70
  <label for="cinitiator">Hide the initiator rows</label>
71
+
72
+ <br>
73
+
74
+ <input type="checkbox" id="ctag" name="ht" onchange="load_config_from_form(true)">
75
+ <label for="ctag">Hide the tags</label>
71
76
  </fieldset>
72
77
  </div>
73
78
  <div>
@@ -179,7 +184,12 @@
179
184
  </td>
180
185
  <td class="status"><span title="{{reason}}" data-qa-request-status>{{{status_code_view}}}</span></td>
181
186
  <td class="method"><span title="{{verb}}" data-qa-request-method>{{verb}}</span></td>
182
- <td class="url" title="{{title}}"><span data-qa-request-url><span class="netloc">{{netloc}}</span><span>{{urlext}}</span></span></td>
187
+ <td class="url" title="{{title}}">
188
+ <span class="url-content" data-qa-request-url>
189
+ <span class="netloc">{{netloc}}</span><span>{{urlext}}</span>
190
+ </span>
191
+ {{#tag}}<span class="tag">{{tag}}</span>{{/tag}}
192
+ </td>
183
193
  </tr>
184
194
  </script>
185
195
 
@@ -14,6 +14,12 @@ let httpdbgApp = {
14
14
  "css": ".netloc {display: none;}",
15
15
  "value": false
16
16
  },
17
+ "hide_tag": {
18
+ "checkbox": "ctag",
19
+ "param": "ht",
20
+ "css": ".tag {display: none;}",
21
+ "value": false
22
+ },
17
23
  "details_wrap_default": {
18
24
  "checkbox": "cwrap",
19
25
  "param": "wl",
@@ -20,6 +20,8 @@
20
20
  --preview-code-border: #777777;
21
21
  --column-border: #dadada;
22
22
  --kdb-border: #000000;
23
+ --tag-bg-color: #cf4b8f;
24
+ --tag-text: #ffffff;
23
25
  }
24
26
 
25
27
  body {
@@ -16,13 +16,30 @@
16
16
  }
17
17
 
18
18
  .url {
19
+ display: flex;
20
+ flex-wrap: wrap;
21
+ align-items: center;
19
22
  text-align: left;
20
- white-space: nowrap;
21
- text-overflow: ellipsis;
22
23
  overflow: hidden;
23
24
  width: auto;
24
25
  }
25
26
 
27
+ .url-content {
28
+ flex: 1;
29
+ overflow: hidden;
30
+ text-overflow: ellipsis;
31
+ white-space: nowrap;
32
+ }
33
+
34
+ .tag {
35
+ margin-left: 6px;
36
+ color: var(--tag-text);
37
+ background-color: var(--tag-bg-color);
38
+ border-radius: 20%;
39
+ padding: 1px 2px;
40
+ font-size: 0.8em;
41
+ }
42
+
26
43
  .initiator-label {
27
44
  white-space: nowrap;
28
45
  overflow: hidden;
@@ -75,7 +92,7 @@
75
92
  }
76
93
 
77
94
  .initiator {
78
- background-color: var(--table-initiator);
95
+ background-color: var(--table-initiator);
79
96
  }
80
97
 
81
98
  .request {
@@ -119,7 +136,7 @@
119
136
  width: 16px;
120
137
  padding: 2px !important;
121
138
  transform: rotate(180deg);
122
- background-color: var(--table-initiator);
139
+ background-color: var(--table-initiator);
123
140
  opacity: 0.4;
124
141
  }
125
142
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: httpdbg
3
- Version: 0.23.0
3
+ Version: 0.24.1
4
4
  Summary: A very simple tool to debug HTTP(S) client requests
5
5
  Author-email: cle-b <cle@tictac.pm>
6
6
  License: Apache-2.0
@@ -125,7 +125,7 @@ No configuration is necessary to start but some few settings are available for p
125
125
  ### command line
126
126
 
127
127
  ```console
128
- usage: pyhttpdbg [-h] [--port PORT] [--version] [--initiator INITIATOR] [--keep-up | --force-quit]
128
+ usage: pyhttpdbg [-h] [--host HOST] [--port PORT] [--version] [--initiator INITIATOR] [--keep-up | --force-quit]
129
129
  [--console | --module MODULE | --script SCRIPT]
130
130
 
131
131
  httdbg - a very simple tool to debug HTTP(S) client requests
@@ -152,6 +152,7 @@ Clic on the **&#9881;** button on the top right of the page.
152
152
  Some options are available:
153
153
  * Hide the netloc in the url
154
154
  * Hide the initiator rows
155
+ * Hide the tags
155
156
 
156
157
  To keep your configuration, bookmark the page with the full search query.
157
158
 
@@ -5,6 +5,7 @@ setup.cfg
5
5
  httpdbg/__init__.py
6
6
  httpdbg/__main__.py
7
7
  httpdbg/args.py
8
+ httpdbg/env.py
8
9
  httpdbg/exception.py
9
10
  httpdbg/initiator.py
10
11
  httpdbg/mode_console.py
@@ -26,6 +27,7 @@ httpdbg/hooks/all.py
26
27
  httpdbg/hooks/external.py
27
28
  httpdbg/hooks/generic.py
28
29
  httpdbg/hooks/httpx.py
30
+ httpdbg/hooks/pytest.py
29
31
  httpdbg/hooks/requests.py
30
32
  httpdbg/hooks/socket.py
31
33
  httpdbg/hooks/urllib3.py
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes