Commit graph

64 commits

Author SHA1 Message Date
Dave Shawley
1fe22df719
Gracefully handle transcoder encoding failures.
Since the form encoder refuses to handle nested sequences, the content
mixin explicitly handles this case instead of letting the unhandled
exception bubble up.
2021-10-14 07:12:08 -04:00
Dave Shawley
716bff0d7f
Add application/x-www-formurlencoded transcoder.
I ended up not using urllib.parse functions since they do not implement
the specification.  The only difference is that the specification
requires that "~" is encoded.

NB - this commit is incomplete since it does not handle calling the
transcoder on simple objects.  mypy will quite correctly fail.
2021-10-14 07:12:01 -04:00
Dave Shawley
9ff5ca3781
Fail gracefully when transcoder is missing.
If there is no transcoder for the default content type, sending a
response would fail with a "500 Internal Server Error" due to an
*unhandled* KeyError.  This commit catches the KeyError and produces
an explicit "500 Internal Server Error" with an appropriate error
message being logged.
2021-10-03 15:52:48 -04:00
Dave Shawley
d605acb5b7
Deprecate not configuring a default content type. 2021-10-03 15:52:48 -04:00
Dave Shawley
4dd46eda5b
Return 406 Not Acceptable appropriately.
If there is no default content type and nothing matches in the Accept
header, previous versions would fail with an Internal Server Error
because of an unhandled exception.  Instead we should be returning
a "406 Not Acceptable".
2021-10-03 15:52:47 -04:00
Dave Shawley
4a0ca5e390
Documentation updates for typing.
The changes to `api.rst` are particularly important since that is where
I describe the externally available type annotations.
2021-10-03 15:52:47 -04:00
Dave Shawley
de43997df5
Reformat using yapf.
https://github.com/sprockets/sprockets.mixins.mediatype/issues/35
2021-09-19 09:58:08 -04:00
Dave Shawley
e26a94778b
Using sphinx-rtd-theme locally as well. 2021-09-16 09:54:15 -04:00
Dave Shawley
118c610d3c
Bump copyright date in documentation. 2021-09-16 09:54:15 -04:00
Dave Shawley
13d90516ab
Stitch CONTRIBUTING back into the doc set. 2021-09-16 09:47:30 -04:00
Dave Shawley
f725e16aee
Increase visibility of docs/contributing.rst. 2021-09-16 09:47:26 -04:00
Dave Shawley
9ab953ed23
Use extlinks for changelog. 2021-09-12 18:34:08 -04:00
Dave Shawley
f6f84bdd2c 3.0.4: Reject invalid Content-Type headers. 2020-11-02 09:21:08 -05:00
Dave Shawley
21c6cb73fe Invalid content-type --> 400 Bad Request.
ietfparse raises a `ValueError` from `parse_content_type` which was
uncaught and resulted in an internal server error.
2020-10-29 13:50:33 -04:00
Dave Shawley
70c679c156 Run test suite with unittest runner. 2020-09-14 08:19:36 -04:00
Dave Shawley
5755792959 3.0.3: Preparing for Python 3.9. 2020-09-14 08:10:20 -04:00
Dave Shawley
3dadd00c64 Metadata bumps for 3.0.2. 2020-05-04 16:55:22 -04:00
Gavin M. Roy
cdd56e6e06 Forgot the link definition 2019-03-05 09:36:06 -05:00
Gavin M. Roy
7da331464b Support Tornado 6, remove setuptools_scm 2019-03-05 09:32:00 -05:00
Andrew Rabert
5079ed1b06 Fix typo 2018-12-04 23:52:54 -05:00
Andrew Rabert
1a300dea34 Rename to match package name 2018-12-04 23:24:06 -05:00
Andrew Rabert
875dc0beb5 Release version 3.0.0 2018-12-04 23:20:33 -05:00
Andrew Rabert
22e4ea6592 Fix virtualenv instruction 2018-12-04 22:57:20 -05:00
Andrew Rabert
73f512a0b6 Fix typos 2018-12-04 22:56:51 -05:00
Andrew Rabert
3aca38d60a Update copyright 2018-11-28 16:26:43 -05:00
Andrew Rabert
00b87a43cf Use setuptools_scm
This allows us to remove the ImportError hack from __init__.py.
It also simplifies how the package is versioned - deriving it solely
from the repository tag.
Both version_info and __version__ have been removed with this change.
Given how these are a unofficial-standard at best, I've found it safer to
always use pkg_resources to determine the version when I need to.
2018-11-28 13:15:54 -05:00
Andrew Rabert
fd3f8b3008 Python 3 updates
- Simplify super()
- Remove object inheritance
- Simplify package namespacing
- Remove BinaryWrapper
- Remove python 2 code paths
2018-11-28 11:50:40 -05:00
Andrew Rabert
b2e980d04d Update docs
- Update and isoldate doc dependencies
- Simplify sphinx config
- Treat warnings as errors
- Remove redundant self.finish() from examples
2018-11-28 11:28:18 -05:00
Andrew Rabert
afddbd3800 Fix doc date 2018-08-07 15:55:01 -04:00
Andrew Rabert
4f187f80c1 Release version 2.2.2 2018-08-07 15:52:59 -04:00
Dave Shawley
5b74e20542 Metadata updates for 2.2.1. 2018-04-12 07:13:42 -04:00
Dave Shawley
a7a4481490 Update changelog.
We forgot the changelog in https://github.com/sprockets/sprockets.mixins.media_type/pull/16
2017-06-08 13:24:10 -04:00
Dave Shawley
1d00459c2e Metadata bumps for 2.2.0. 2017-06-07 06:45:26 -04:00
Dave Shawley
8bc2f685f6 More CSS refinement.
This commit fixes the weird wrapping that happens with long class and
function names.  I was originally going to address this in a PR against
sphinx before I figured out the specific CSS that cleans things up.
2016-04-17 09:01:08 -04:00
Dave Shawley
263d23a37d Cleanup documentation.
- Remove automatic hyphenation of table headings.
- Widen the document a little.
- Remove some of the padding around code snippets.
- Adjust the sidebar title again...
- Fix history links in the changelog.
2016-04-05 07:49:13 -04:00
Dave Shawley
18e134b6f2 Deprecate ContentSettings.from_application. 2016-04-05 07:47:41 -04:00
Dave Shawley
68fe438894 content: Add install and get_settings functions. 2016-04-05 07:46:57 -04:00
Dave Shawley
3e9ad72d63 Metadata bumps for 2.1.0 2016-03-16 09:19:43 -04:00
Dave Shawley
a1cc214bbe ContentMixin: Set the Vary header.
This lets any transparent caches that our responses will vary based on
the Accept header.  Without this, caches will assume that a cached
response can be used even if the Accept header differs.
2016-03-13 09:34:32 -04:00
Dave Shawley
d571209e38 Remove _mark_deprecated wrapper. 2016-02-29 14:35:07 -05:00
Dave Shawley
a9e24b7f5b docs/conf.py: Add codecoverage badge. 2016-02-24 14:47:53 -05:00
Dave Shawley
baf643e3ef Metadata bumps for 2.0.0. 2016-02-24 14:47:39 -05:00
Dave Shawley
206e43ee7d ContentMixin: Raise 400 when body decode fails. 2016-02-22 09:58:58 -05:00
Dave Shawley
995c715405 Normalize registered content types.
MIME content type strings are normalized by lower-casing the content
type parameters and then sorting them.  Each parameter is preceded by a
space.
2016-01-31 12:11:11 -05:00
Dave Shawley
98e3719a8b MsgPackTranscoder: Add BinaryWrapper override. 2016-01-18 07:58:30 -05:00
Dave Shawley
7d2237745e Add s.m.mediatype.transcoders.MsgPackTranscoder. 2016-01-18 07:58:07 -05:00
Dave Shawley
ee8f645a51 Add sprockets.mixins.mediatype.transcoders.JSONTranscoder. 2016-01-16 09:56:38 -05:00
Dave Shawley
d7f1bb1e4e Add content.add_transcoder. 2016-01-16 09:56:38 -05:00
Dave Shawley
e3294af26c docs: Update links from Python 2 to Python 3. 2016-01-16 09:56:38 -05:00
Dave Shawley
478868d5b4 Remove unused docs/examples.rst. 2016-01-10 13:52:38 -05:00