Skip to content
This repository
Browse code

https://docs.pylonsproject.org to http://docs.pylonsproject.org as re…

…adthedocs.org doesn't support https
  • Loading branch information...
commit c110694453d6661b05611876a930c046217318b0 1 parent 034812b
cd34 authored December 01, 2011 mcdonc committed December 01, 2011
466  HISTORY.txt
... ...
@@ -1,3 +1,469 @@
  1
+1.2 (2011-09-12)
  2
+================
  3
+
  4
+Features
  5
+--------
  6
+
  7
+- Route pattern replacement marker names can now begin with an underscore.
  8
+  See https://github.com/Pylons/pyramid/issues/276.
  9
+
  10
+1.2b3 (2011-09-11)
  11
+==================
  12
+
  13
+Bug Fixes
  14
+---------
  15
+
  16
+- The route prefix was not taken into account when a static view was added in
  17
+  an "include".  See https://github.com/Pylons/pyramid/issues/266 .
  18
+
  19
+1.2b2 (2011-09-08)
  20
+==================
  21
+
  22
+Bug Fixes
  23
+---------
  24
+
  25
+- The 1.2b1 tarball was a brownbag (particularly for Windows users) because
  26
+  it contained filenames with stray quotation marks in inappropriate places.
  27
+  We depend on ``setuptools-git`` to produce release tarballs, and when it
  28
+  was run to produce the 1.2b1 tarball, it didn't yet cope well with files
  29
+  present in git repositories with high-order characters in their filenames.
  30
+
  31
+Documentation
  32
+-------------
  33
+
  34
+- Minor tweaks to the "Introduction" narrative chapter example app and
  35
+  wording.
  36
+
  37
+1.2b1 (2011-09-08)
  38
+==================
  39
+
  40
+Bug Fixes
  41
+---------
  42
+
  43
+- Sometimes falling back from territory translations (``de_DE``) to language
  44
+  translations (``de``) would not work properly when using a localizer.  See
  45
+  https://github.com/Pylons/pyramid/issues/263
  46
+
  47
+- The static file serving machinery could not serve files that started with a
  48
+  ``.`` (dot) character.
  49
+
  50
+- Static files with high-order (super-ASCII) characters in their names could
  51
+  not be served by a static view.  The static file serving machinery
  52
+  inappropriately URL-quoted path segments in filenames when asking for files
  53
+  from the filesystem.
  54
+
  55
+- Within ``pyramid.traversal.traversal_path`` , canonicalize URL segments
  56
+  from UTF-8 to Unicode before checking whether a segment matches literally
  57
+  one of ``.``, the empty string, or ``..`` in case there's some sneaky way
  58
+  someone might tunnel those strings via UTF-8 that don't match the literals
  59
+  before decoded.
  60
+
  61
+Documentation
  62
+-------------
  63
+
  64
+- Added a "What Makes Pyramid Unique" section to the Introduction narrative
  65
+  chapter.
  66
+
  67
+1.2a6 (2011-09-06)
  68
+==================
  69
+
  70
+Bug Fixes
  71
+---------
  72
+
  73
+- AuthTktAuthenticationPolicy with a ``reissue_time`` interfered with logout.
  74
+  See https://github.com/Pylons/pyramid/issues/262.
  75
+
  76
+Internal
  77
+--------
  78
+
  79
+- Internalize code previously depended upon as imports from the
  80
+  ``paste.auth`` module (futureproof).
  81
+
  82
+- Replaced use of ``paste.urlparser.StaticURLParser`` with a derivative of
  83
+  Chris Rossi's "happy" static file serving code (futureproof).
  84
+
  85
+- Fixed test suite; on some systems tests would fail due to indeterminate
  86
+  test run ordering and a double-push-single-pop of a shared test variable.
  87
+
  88
+Behavior Differences
  89
+--------------------
  90
+
  91
+- An ETag header is no longer set when serving a static file.  A
  92
+  Last-Modified header is set instead.
  93
+
  94
+- Static file serving no longer supports the ``wsgi.file_wrapper`` extension.
  95
+
  96
+- Instead of returning a ``403 Forbidden`` error when a static file is served
  97
+  that cannot be accessed by the Pyramid process' user due to file
  98
+  permissions, an IOError (or similar) will be raised.
  99
+
  100
+Scaffolds
  101
+---------
  102
+
  103
+- All scaffolds now send the ``cache_max_age`` parameter to the
  104
+  ``add_static_view`` method.
  105
+
  106
+1.2a5 (2011-09-04)
  107
+==================
  108
+
  109
+Bug Fixes
  110
+---------
  111
+
  112
+- The ``route_prefix`` of a configurator was not properly taken into account
  113
+  when registering routes in certain circumstances.  See
  114
+  https://github.com/Pylons/pyramid/issues/260
  115
+
  116
+Dependencies
  117
+------------
  118
+
  119
+- The ``zope.configuration`` package is no longer a dependency.
  120
+
  121
+1.2a4 (2011-09-02)
  122
+==================
  123
+
  124
+Features
  125
+--------
  126
+
  127
+- Support an ``onerror`` keyword argument to
  128
+  ``pyramid.config.Configurator.scan()``.  This onerror keyword argument is
  129
+  passed to ``venusian.Scanner.scan()`` to influence error behavior when
  130
+  an exception is raised during scanning.
  131
+
  132
+- The ``request_method`` predicate argument to
  133
+  ``pyramid.config.Configurator.add_view`` and
  134
+  ``pyramid.config.Configurator.add_route`` is now permitted to be a tuple of
  135
+  HTTP method names.  Previously it was restricted to being a string
  136
+  representing a single HTTP method name.
  137
+
  138
+- Undeprecated ``pyramid.traversal.find_model``,
  139
+  ``pyramid.traversal.model_path``, ``pyramid.traversal.model_path_tuple``,
  140
+  and ``pyramid.url.model_url``, which were all deprecated in Pyramid 1.0.
  141
+  There's just not much cost to keeping them around forever as aliases to
  142
+  their renamed ``resource_*`` prefixed functions.
  143
+
  144
+- Undeprecated ``pyramid.view.bfg_view``, which was deprecated in Pyramid
  145
+  1.0.  This is a low-cost alias to ``pyramid.view.view_config`` which we'll
  146
+  just keep around forever.
  147
+
  148
+Dependencies
  149
+------------
  150
+
  151
+- Pyramid now requires Venusian 1.0a1 or better to support the ``onerror``
  152
+  keyword argument to ``pyramid.config.Configurator.scan``.
  153
+
  154
+1.2a3 (2011-08-29)
  155
+==================
  156
+
  157
+Bug Fixes
  158
+---------
  159
+
  160
+- Pyramid did not properly generate static URLs using
  161
+  ``pyramid.url.static_url`` when passed a caller-package relative path due
  162
+  to a refactoring done in 1.2a1.
  163
+
  164
+- The ``settings`` object emitted a deprecation warning any time
  165
+  ``__getattr__`` was called upon it.  However, there are legitimate
  166
+  situations in which ``__getattr__`` is called on arbitrary objects
  167
+  (e.g. ``hasattr``).  Now, the ``settings`` object only emits the warning
  168
+  upon successful lookup.
  169
+
  170
+Internal
  171
+--------
  172
+
  173
+- Use ``config.with_package`` in view_config decorator rather than
  174
+  manufacturing a new renderer helper (cleanup).
  175
+
  176
+1.2a2 (2011-08-27)
  177
+==================
  178
+
  179
+Bug Fixes
  180
+---------
  181
+
  182
+- When a ``renderers=`` argument is not specified to the Configurator
  183
+  constructor, eagerly register and commit the default renderer set.  This
  184
+  permits the overriding of the default renderers, which was broken in 1.2a1
  185
+  without a commit directly after Configurator construction.
  186
+
  187
+- Mako rendering exceptions had the wrong value for an error message.
  188
+
  189
+- An include could not set a root factory successfully because the
  190
+  Configurator constructor unconditionally registered one that would be
  191
+  treated as if it were "the word of the user".
  192
+
  193
+Features
  194
+--------
  195
+
  196
+- A session factory can now be passed in using the dotted name syntax.
  197
+
  198
+1.2a1 (2011-08-24)
  199
+==================
  200
+
  201
+Features
  202
+--------
  203
+
  204
+- The ``[pshell]`` section in an ini configuration file now treats a
  205
+  ``setup`` key as a dotted name that points to a callable that is passed the
  206
+  bootstrap environment.  It can mutate the environment as necessary for
  207
+  great justice.
  208
+
  209
+- A new configuration setting named ``pyramid.includes`` is now available.
  210
+  It is described in the "Environment Variables and ``.ini`` Files Settings"
  211
+  narrative documentation chapter.
  212
+
  213
+- Added a ``route_prefix`` argument to the
  214
+  ``pyramid.config.Configurator.include`` method.  This argument allows you
  215
+  to compose URL dispatch applications together.  See the section entitled
  216
+  "Using a Route Prefix to Compose Applications" in the "URL Dispatch"
  217
+  narrative documentation chapter.
  218
+
  219
+- Added a ``pyramid.security.NO_PERMISSION_REQUIRED`` constant for use in
  220
+  ``permission=`` statements to view configuration.  This constant has a
  221
+  value of the string ``__no_permission_required__``.  This string value was
  222
+  previously referred to in documentation; now the documentation uses the
  223
+  constant.
  224
+
  225
+- Added a decorator-based way to configure a response adapter:
  226
+  ``pyramid.response.response_adapter``.  This decorator has the same use as
  227
+  ``pyramid.config.Configurator.add_response_adapter`` but it's declarative.
  228
+
  229
+- The ``pyramid.events.BeforeRender`` event now has an attribute named
  230
+  ``rendering_val``.  This can be used to introspect the value returned by a
  231
+  view in a BeforeRender subscriber.
  232
+
  233
+- New configurator directive: ``pyramid.config.Configurator.add_tween``.
  234
+  This directive adds a "tween".  A "tween" is used to wrap the Pyramid
  235
+  router's primary request handling function.  This is a feature may be used
  236
+  by Pyramid framework extensions, to provide, for example, view timing
  237
+  support and as a convenient place to hang bookkeeping code.
  238
+
  239
+  Tweens are further described in the narrative docs section in the Hooks
  240
+  chapter, named "Registering Tweens".
  241
+
  242
+- New paster command ``paster ptweens``, which prints the current "tween"
  243
+  configuration for an application.  See the section entitled "Displaying
  244
+  Tweens" in the Command-Line Pyramid chapter of the narrative documentation
  245
+  for more info.
  246
+
  247
+- The Pyramid debug logger now uses the standard logging configuration
  248
+  (usually set up by Paste as part of startup).  This means that output from
  249
+  e.g. ``debug_notfound``, ``debug_authorization``, etc. will go to the
  250
+  normal logging channels.  The logger name of the debug logger will be the
  251
+  package name of the *caller* of the Configurator's constructor.
  252
+
  253
+- A new attribute is available on request objects: ``exc_info``.  Its value
  254
+  will be ``None`` until an exception is caught by the Pyramid router, after
  255
+  which it will be the result of ``sys.exc_info()``.
  256
+
  257
+- ``pyramid.testing.DummyRequest`` now implements the
  258
+  ``add_finished_callback`` and ``add_response_callback`` methods.
  259
+
  260
+- New methods of the ``pyramid.config.Configurator`` class:
  261
+  ``set_authentication_policy`` and ``set_authorization_policy``.  These are
  262
+  meant to be consumed mostly by add-on authors.
  263
+
  264
+- New Configurator method: ``set_root_factory``.
  265
+
  266
+- Pyramid no longer eagerly commits some default configuration statements at
  267
+  Configurator construction time, which permits values passed in as
  268
+  constructor arguments (e.g. ``authentication_policy`` and
  269
+  ``authorization_policy``) to override the same settings obtained via an
  270
+  "include".
  271
+
  272
+- Better Mako rendering exceptions via
  273
+  ``pyramid.mako_templating.MakoRenderingException``
  274
+
  275
+- New request methods: ``current_route_url``, ``current_route_path``, and
  276
+  ``static_path``.
  277
+
  278
+- New functions in ``pyramid.url``: ``current_route_path`` and
  279
+  ``static_path``.
  280
+
  281
+- The ``pyramid.request.Request.static_url`` API (and its brethren
  282
+  ``pyramid.request.Request.static_path``, ``pyramid.url.static_url``, and
  283
+  ``pyramid.url.static_path``) now accept an asbolute filename as a "path"
  284
+  argument.  This will generate a URL to an asset as long as the filename is
  285
+  in a directory which was previously registered as a static view.
  286
+  Previously, trying to generate a URL to an asset using an absolute file
  287
+  path would raise a ValueError.
  288
+
  289
+- The ``RemoteUserAuthenticationPolicy ``, ``AuthTktAuthenticationPolicy``,
  290
+  and ``SessionAuthenticationPolicy`` constructors now accept an additional
  291
+  keyword argument named ``debug``.  By default, this keyword argument is
  292
+  ``False``.  When it is ``True``, debug information will be sent to the
  293
+  Pyramid debug logger (usually on stderr) when the ``authenticated_userid``
  294
+  or ``effective_principals`` method is called on any of these policies.  The
  295
+  output produced can be useful when trying to diagnose
  296
+  authentication-related problems.
  297
+
  298
+- New view predicate: ``match_param``.  Example: a view added via
  299
+  ``config.add_view(aview, match_param='action=edit')`` will be called only
  300
+  when the ``request.matchdict`` has a value inside it named ``action`` with
  301
+  a value of ``edit``.
  302
+
  303
+Internal
  304
+--------
  305
+
  306
+- The Pyramid "exception view" machinery is now implemented as a "tween"
  307
+  (``pyramid.tweens.excview_tween_factory``).
  308
+
  309
+- WSGIHTTPException (HTTPFound, HTTPNotFound, etc) now has a new API named
  310
+  "prepare" which renders the body and content type when it is provided with
  311
+  a WSGI environ.  Required for debug toolbar.
  312
+
  313
+- Once ``__call__`` or ``prepare`` is called on a WSGIHTTPException, the body
  314
+  will be set, and subsequent calls to ``__call__`` will always return the
  315
+  same body.  Delete the body attribute to rerender the exception body.
  316
+
  317
+- Previously the ``pyramid.events.BeforeRender`` event *wrapped* a dictionary
  318
+  (it addressed it as its ``_system`` attribute).  Now it *is* a dictionary
  319
+  (it inherits from ``dict``), and it's the value that is passed to templates
  320
+  as a top-level dictionary.
  321
+
  322
+- The ``route_url``, ``route_path``, ``resource_url``, ``static_url``, and
  323
+  ``current_route_url`` functions in the ``pyramid.url`` package now delegate
  324
+  to a method on the request they've been passed, instead of the other way
  325
+  around.  The pyramid.request.Request object now inherits from a mixin named
  326
+  pyramid.url.URLMethodsMixin to make this possible, and all url/path
  327
+  generation logic is embedded in this mixin.
  328
+
  329
+- Refactor ``pyramid.config`` into a package.
  330
+
  331
+- Removed the ``_set_security_policies`` method of the Configurator.
  332
+
  333
+- Moved the ``StaticURLInfo`` class from ``pyramid.static`` to
  334
+  ``pyramid.config.views``.
  335
+
  336
+- Move the ``Settings`` class from ``pyramid.settings`` to
  337
+  ``pyramid.config.settings``.
  338
+
  339
+- Move the ``OverrideProvider``, ``PackageOverrides``, ``DirectoryOverride``,
  340
+  and ``FileOverride`` classes from ``pyramid.asset`` to
  341
+  ``pyramid.config.assets``.
  342
+
  343
+Deprecations
  344
+------------
  345
+
  346
+- All Pyramid-related deployment settings (e.g. ``debug_all``,
  347
+  ``debug_notfound``) are now meant to be prefixed with the prefix
  348
+  ``pyramid.``.  For example: ``debug_all`` -> ``pyramid.debug_all``.  The
  349
+  old non-prefixed settings will continue to work indefinitely but supplying
  350
+  them may eventually print a deprecation warning.  All scaffolds and
  351
+  tutorials have been changed to use prefixed settings.
  352
+
  353
+- The ``settings`` dictionary now raises a deprecation warning when you
  354
+  attempt to access its values via ``__getattr__`` instead of
  355
+  via ``__getitem__``.
  356
+
  357
+Backwards Incompatibilities
  358
+---------------------------
  359
+
  360
+- If a string is passed as the ``debug_logger`` parameter to a Configurator,
  361
+  that string is considered to be the name of a global Python logger rather
  362
+  than a dotted name to an instance of a logger.
  363
+
  364
+- The ``pyramid.config.Configurator.include`` method now accepts only a
  365
+  single ``callable`` argument (a sequence of callables used to be
  366
+  permitted).  If you are passing more than one ``callable`` to
  367
+  ``pyramid.config.Configurator.include``, it will break.  You now must now
  368
+  instead make a separate call to the method for each callable.  This change
  369
+  was introduced to support the ``route_prefix`` feature of include.
  370
+
  371
+- It may be necessary to more strictly order configuration route and view
  372
+  statements when using an "autocommitting" Configurator.  In the past, it
  373
+  was possible to add a view which named a route name before adding a route
  374
+  with that name when you used an autocommitting configurator.  For example::
  375
+
  376
+    config = Configurator(autocommit=True)
  377
+    config.add_view('my.pkg.someview', route_name='foo')
  378
+    config.add_route('foo', '/foo')
  379
+
  380
+  The above will raise an exception when the view attempts to add itself.
  381
+  Now you must add the route before adding the view::
  382
+
  383
+    config = Configurator(autocommit=True)
  384
+    config.add_route('foo', '/foo')
  385
+    config.add_view('my.pkg.someview', route_name='foo')
  386
+
  387
+  This won't effect "normal" users, only people who have legacy BFG codebases
  388
+  that used an autommitting configurator and possibly tests that use the
  389
+  configurator API (the configurator returned by ``pyramid.testing.setUp`` is
  390
+  an autocommitting configurator).  The right way to get around this is to
  391
+  use a non-autocommitting configurator (the default), which does not have
  392
+  these directive ordering requirements.
  393
+
  394
+- The ``pyramid.config.Configurator.add_route`` directive no longer returns a
  395
+  route object.  This change was required to make route vs. view
  396
+  configuration processing work properly.
  397
+
  398
+Documentation
  399
+-------------
  400
+
  401
+- Narrative and API documentation which used the ``route_url``,
  402
+  ``route_path``, ``resource_url``, ``static_url``, and ``current_route_url``
  403
+  functions in the ``pyramid.url`` package have now been changed to use
  404
+  eponymous methods of the request instead.
  405
+
  406
+- Added a section entitled "Using a Route Prefix to Compose Applications" to
  407
+  the "URL Dispatch" narrative documentation chapter.
  408
+
  409
+- Added a new module to the API docs: ``pyramid.tweens``.
  410
+
  411
+- Added a "Registering Tweens" section to the "Hooks" narrative chapter.
  412
+
  413
+- Added a "Displaying Tweens" section to the "Command-Line Pyramid" narrative
  414
+  chapter.
  415
+
  416
+- Added documentation for the ``pyramid.tweens`` and ``pyramid.includes``
  417
+  configuration settings to the "Environment Variables and ``.ini`` Files
  418
+  Settings" chapter.
  419
+
  420
+- Added a Logging chapter to the narrative docs (based on the Pylons logging
  421
+  docs, thanks Phil).
  422
+
  423
+- Added a Paste chapter to the narrative docs (moved content from the Project
  424
+  chapter).
  425
+
  426
+- Added the ``pyramid.interfaces.IDict`` interface representing the methods
  427
+  of a dictionary, for documentation purposes only (IMultiDict and
  428
+  IBeforeRender inherit from it).
  429
+
  430
+- All tutorials now use - The ``route_url``, ``route_path``,
  431
+  ``resource_url``, ``static_url``, and ``current_route_url`` methods of the
  432
+  request rather than the function variants imported from ``pyramid.url``.
  433
+
  434
+- The ZODB wiki tutorial now uses the ``pyramid_zodbconn`` package rather
  435
+  than the ``repoze.zodbconn`` package to provide ZODB integration.
  436
+
  437
+Dependency Changes
  438
+------------------
  439
+
  440
+- Pyramid now relies on PasteScript >= 1.7.4.  This version contains a
  441
+  feature important for allowing flexible logging configuration.
  442
+
  443
+Scaffolds
  444
+----------
  445
+
  446
+- All scaffolds now use the ``pyramid_tm`` package rather than the
  447
+  ``repoze.tm2`` middleware to manage transaction management.
  448
+
  449
+- The ZODB scaffold now uses the ``pyramid_zodbconn`` package rather than the
  450
+  ``repoze.zodbconn`` package to provide ZODB integration.
  451
+
  452
+- All scaffolds now use the ``pyramid_debugtoolbar`` package rather than the
  453
+  ``WebError`` package to provide interactive debugging features.
  454
+
  455
+- Projects created via a scaffold no longer depend on the ``WebError``
  456
+  package at all; configuration in the ``production.ini`` file which used to
  457
+  require its ``error_catcher`` middleware has been removed.  Configuring
  458
+  error catching / email sending is now the domain of the ``pyramid_exclog``
  459
+  package (see http://docs.pylonsproject.org/projects/pyramid_exclog/dev/).
  460
+
  461
+Bug Fixes
  462
+---------
  463
+
  464
+- Fixed an issue with the default renderer not working at certain times.  See
  465
+  https://github.com/Pylons/pyramid/issues/249
  466
+
1 467
 1.1 (2011-07-22)
2 468
 ================
3 469
 
4  docs/glossary.rst
Source Rendered
@@ -926,7 +926,7 @@ Glossary
926 926
      database information.  :mod:`pyramid_debugtoolbar` is configured into
927 927
      the ``development.ini`` of all applications which use a Pyramid
928 928
      :term:`scaffold`.  For more information, see
929  
-     https://docs.pylonsproject.org/projects/pyramid_debugtoolbar/dev/ .
  929
+     http://docs.pylonsproject.org/projects/pyramid_debugtoolbar/dev/ .
930 930
 
931 931
    scaffold
932 932
      A project template that helps users get started writing a Pyramid
@@ -939,5 +939,5 @@ Glossary
939 939
      used in production applications, because the logger can be configured to
940 940
      log to a file, to UNIX syslog, to the Windows Event Log, or even to
941 941
      email. See its `documentation
942  
-     <https://docs.pylonsproject.org/projects/pyramid_exclog/dev/>`_.
  942
+     <http://docs.pylonsproject.org/projects/pyramid_exclog/dev/>`_.
943 943
 
4  docs/narr/introduction.rst
Source Rendered
@@ -219,7 +219,7 @@ that the Pyramid core doesn't.  Add-on packages already exist which let you
219 219
 easily send email, let you use the Jinja2 templating system, let you use
220 220
 XML-RPC or JSON-RPC, let you integrate with jQuery Mobile, etc.
221 221
 
222  
-Examples: https://docs.pylonsproject.org/docs/pyramid.html#pyramid-add-on-documentation
  222
+Examples: http://docs.pylonsproject.org/docs/pyramid.html#pyramid-add-on-documentation
223 223
 
224 224
 Class-based and function-based views
225 225
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -842,7 +842,7 @@ official narrative docs.  In any case, the Pyramid documentation is
842 842
 comprehensive.
843 843
 
844 844
 Example: The rest of this documentation and the cookbook at
845  
-https://docs.pylonsproject.org/projects/pyramid_cookbook/dev/ .
  845
+http://docs.pylonsproject.org/projects/pyramid_cookbook/dev/ .
846 846
 
847 847
 .. index::
848 848
    single: Pylons Project
2  docs/narr/logging.rst
Source Rendered
@@ -291,7 +291,7 @@ Logging Exceptions
291 291
 To log (or email) exceptions generated by your :app:`Pyramid` application,
292 292
 use the :term:`pyramid_exclog` package.  Details about its configuration are
293 293
 in its `documentation
294  
-<https://docs.pylonsproject.org/projects/pyramid_exclog/dev/>`_.
  294
+<http://docs.pylonsproject.org/projects/pyramid_exclog/dev/>`_.
295 295
 
296 296
 Request Logging with Paste's TransLogger 
297 297
 ----------------------------------------
2  docs/whatsnew-1.2.rst
Source Rendered
@@ -63,7 +63,7 @@ Scaffolding Changes
63 63
   package at all; configuration in the ``production.ini`` file which used to
64 64
   require its ``error_catcher`` middleware has been removed.  Configuring
65 65
   error catching / email sending is now the domain of the ``pyramid_exclog``
66  
-  package (see https://docs.pylonsproject.org/projects/pyramid_exclog/dev/).
  66
+  package (see http://docs.pylonsproject.org/projects/pyramid_exclog/dev/).
67 67
 
68 68
 - All scaffolds now send the ``cache_max_age`` parameter to the
69 69
   ``add_static_view`` method.

0 notes on commit c110694

Please sign in to comment.
Something went wrong with that request. Please try again.