yhttp 9.1.0__tar.gz → 9.3.0__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 (61) hide show
  1. {yhttp-9.1.0 → yhttp-9.3.0}/PKG-INFO +1 -1
  2. {yhttp-9.1.0 → yhttp-9.3.0}/tests/test_applicationcli.py +5 -0
  3. {yhttp-9.1.0 → yhttp-9.3.0}/tests/test_request.py +1 -0
  4. {yhttp-9.1.0 → yhttp-9.3.0}/yhttp/core/cli.py +10 -1
  5. {yhttp-9.1.0 → yhttp-9.3.0}/yhttp/core/request.py +15 -0
  6. yhttp-9.3.0/yhttp/core/version.py +1 -0
  7. {yhttp-9.1.0 → yhttp-9.3.0}/yhttp.egg-info/PKG-INFO +1 -1
  8. yhttp-9.1.0/yhttp/core/version.py +0 -1
  9. {yhttp-9.1.0 → yhttp-9.3.0}/LICENSE +0 -0
  10. {yhttp-9.1.0 → yhttp-9.3.0}/README.md +0 -0
  11. {yhttp-9.1.0 → yhttp-9.3.0}/setup.cfg +0 -0
  12. {yhttp-9.1.0 → yhttp-9.3.0}/setup.py +0 -0
  13. {yhttp-9.1.0 → yhttp-9.3.0}/tests/test_application.py +0 -0
  14. {yhttp-9.1.0 → yhttp-9.3.0}/tests/test_builtincli_serve.py +0 -0
  15. {yhttp-9.1.0 → yhttp-9.3.0}/tests/test_builtincli_version.py +0 -0
  16. {yhttp-9.1.0 → yhttp-9.3.0}/tests/test_builtincli_yhttp_version.py +0 -0
  17. {yhttp-9.1.0 → yhttp-9.3.0}/tests/test_cookie.py +0 -0
  18. {yhttp-9.1.0 → yhttp-9.3.0}/tests/test_cookieset.py +0 -0
  19. {yhttp-9.1.0 → yhttp-9.3.0}/tests/test_extension.py +0 -0
  20. {yhttp-9.1.0 → yhttp-9.3.0}/tests/test_form.py +0 -0
  21. {yhttp-9.1.0 → yhttp-9.3.0}/tests/test_form_json.py +0 -0
  22. {yhttp-9.1.0 → yhttp-9.3.0}/tests/test_form_multipart.py +0 -0
  23. {yhttp-9.1.0 → yhttp-9.3.0}/tests/test_form_urlencoded.py +0 -0
  24. {yhttp-9.1.0 → yhttp-9.3.0}/tests/test_fswatcher.py +0 -0
  25. {yhttp-9.1.0 → yhttp-9.3.0}/tests/test_guard.py +0 -0
  26. {yhttp-9.1.0 → yhttp-9.3.0}/tests/test_guard_body.py +0 -0
  27. {yhttp-9.1.0 → yhttp-9.3.0}/tests/test_guard_contenttypes.py +0 -0
  28. {yhttp-9.1.0 → yhttp-9.3.0}/tests/test_guard_query.py +0 -0
  29. {yhttp-9.1.0 → yhttp-9.3.0}/tests/test_headerset.py +0 -0
  30. {yhttp-9.1.0 → yhttp-9.3.0}/tests/test_jsonencoding.py +0 -0
  31. {yhttp-9.1.0 → yhttp-9.3.0}/tests/test_locale.py +0 -0
  32. {yhttp-9.1.0 → yhttp-9.3.0}/tests/test_middleware.py +0 -0
  33. {yhttp-9.1.0 → yhttp-9.3.0}/tests/test_multidict.py +0 -0
  34. {yhttp-9.1.0 → yhttp-9.3.0}/tests/test_multipart.py +0 -0
  35. {yhttp-9.1.0 → yhttp-9.3.0}/tests/test_querystring.py +0 -0
  36. {yhttp-9.1.0 → yhttp-9.3.0}/tests/test_responseheaders.py +0 -0
  37. {yhttp-9.1.0 → yhttp-9.3.0}/tests/test_rewrite.py +0 -0
  38. {yhttp-9.1.0 → yhttp-9.3.0}/tests/test_rewritecli.py +0 -0
  39. {yhttp-9.1.0 → yhttp-9.3.0}/tests/test_routing.py +0 -0
  40. {yhttp-9.1.0 → yhttp-9.3.0}/tests/test_static.py +0 -0
  41. {yhttp-9.1.0 → yhttp-9.3.0}/tests/test_statuses.py +0 -0
  42. {yhttp-9.1.0 → yhttp-9.3.0}/tests/test_statushandler.py +0 -0
  43. {yhttp-9.1.0 → yhttp-9.3.0}/yhttp/core/__init__.py +0 -0
  44. {yhttp-9.1.0 → yhttp-9.3.0}/yhttp/core/application.py +0 -0
  45. {yhttp-9.1.0 → yhttp-9.3.0}/yhttp/core/contenttypes.py +0 -0
  46. {yhttp-9.1.0 → yhttp-9.3.0}/yhttp/core/cookieset.py +0 -0
  47. {yhttp-9.1.0 → yhttp-9.3.0}/yhttp/core/fswatcher.py +0 -0
  48. {yhttp-9.1.0 → yhttp-9.3.0}/yhttp/core/guard.py +0 -0
  49. {yhttp-9.1.0 → yhttp-9.3.0}/yhttp/core/headerset.py +0 -0
  50. {yhttp-9.1.0 → yhttp-9.3.0}/yhttp/core/main.py +0 -0
  51. {yhttp-9.1.0 → yhttp-9.3.0}/yhttp/core/multidict.py +0 -0
  52. {yhttp-9.1.0 → yhttp-9.3.0}/yhttp/core/multipart.py +0 -0
  53. {yhttp-9.1.0 → yhttp-9.3.0}/yhttp/core/response.py +0 -0
  54. {yhttp-9.1.0 → yhttp-9.3.0}/yhttp/core/rewrite.py +0 -0
  55. {yhttp-9.1.0 → yhttp-9.3.0}/yhttp/core/static.py +0 -0
  56. {yhttp-9.1.0 → yhttp-9.3.0}/yhttp/core/statuses.py +0 -0
  57. {yhttp-9.1.0 → yhttp-9.3.0}/yhttp.egg-info/SOURCES.txt +0 -0
  58. {yhttp-9.1.0 → yhttp-9.3.0}/yhttp.egg-info/dependency_links.txt +0 -0
  59. {yhttp-9.1.0 → yhttp-9.3.0}/yhttp.egg-info/entry_points.txt +0 -0
  60. {yhttp-9.1.0 → yhttp-9.3.0}/yhttp.egg-info/requires.txt +0 -0
  61. {yhttp-9.1.0 → yhttp-9.3.0}/yhttp.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: yhttp
3
- Version: 9.1.0
3
+ Version: 9.3.0
4
4
  Summary: A very micro http framework.
5
5
  Home-page: http://github.com/yhttp/yhttp
6
6
  Author: Vahid Mardani
@@ -68,6 +68,11 @@ def test_applicationcli(mktmpfile):
68
68
  assert status == 73
69
69
  assert stdout == 'bar\n.\n'
70
70
 
71
+ when(f'--verbose --configuration-file {configfile} foo')
72
+ assert stderr == ''
73
+ assert status == 73
74
+ assert stdout == f'loading config file: {configfile}\nbar\n.\n'
75
+
71
76
  when('--directory /tmp foo')
72
77
  assert status == 0
73
78
  assert stdout == 'foo\n/tmp\n'
@@ -9,6 +9,7 @@ def test_request(app, httpreq):
9
9
  assert req.headers.get('foo-bar') == 'baz'
10
10
  assert req.contenttype is None
11
11
  assert req.language == 'fa'
12
+ assert req.locales_oldstyle == ['fa_IR']
12
13
 
13
14
  with httpreq('/foo?bar=baz', headers={
14
15
  'Foo-Bar': 'baz',
@@ -186,6 +186,12 @@ class Main(Root):
186
186
  help='Set a configutation entry: -O foo.bar.baz=\'qux\'. this '
187
187
  'argument can passed multiple times.'
188
188
  ),
189
+ Argument(
190
+ '-v', '--verbose',
191
+ action='store_true',
192
+ default=False,
193
+ help='Verbose mode'
194
+ ),
189
195
  Serve,
190
196
  ]
191
197
 
@@ -207,6 +213,8 @@ class Main(Root):
207
213
  os.chdir(args.directory)
208
214
 
209
215
  if args.configurationfile:
216
+ if args.verbose:
217
+ print(f'loading config file: {args.configurationfile}')
210
218
  self.application.settings <<= args.configurationfile
211
219
 
212
220
  else: # pragma: no cover
@@ -218,7 +226,8 @@ class Main(Root):
218
226
  filename = f'/home/{user}/.config/{appname}/{appname}.yml'
219
227
 
220
228
  if os.path.exists(filename):
221
- print(f'loading config file: {filename}')
229
+ if args.verbose:
230
+ print(f'loading config file: {filename}')
222
231
  self.application.settings <<= filename
223
232
 
224
233
  for o in args.option:
@@ -37,6 +37,21 @@ class Request:
37
37
  self.environ = environ
38
38
  self.response = response
39
39
 
40
+ @cached_property
41
+ def locales_oldstyle(self):
42
+ """Same as the :attr:`Request.locales` but in old-style(system) format.
43
+
44
+ It means the dash(`-`) replaced with underscore(`_`) in all entries.
45
+ for example it returns `fa_IR` instead of `fa-IR`.
46
+
47
+ It will be ``['*']`` if ``Accept-Languages`` header is not presents in
48
+ the request.
49
+
50
+ .. versionadded:: 9.3
51
+ """
52
+
53
+ return [locale.replace('-', '_') for locale in self.locales]
54
+
40
55
  @cached_property
41
56
  def locales(self):
42
57
  """List of agent's locales ordered based on priority.
@@ -0,0 +1 @@
1
+ __version__ = '9.3.0'
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: yhttp
3
- Version: 9.1.0
3
+ Version: 9.3.0
4
4
  Summary: A very micro http framework.
5
5
  Home-page: http://github.com/yhttp/yhttp
6
6
  Author: Vahid Mardani
@@ -1 +0,0 @@
1
- __version__ = '9.1.0'
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
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
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
File without changes
File without changes
File without changes
File without changes