.. image:: https://travis-ci.org/seik/stilio.svg?branch=master :target: https://travis-ci.org/seik/stilio .. image:: https://readthedocs.org/projects/stilio/badge/?version=latest :target: https://stilio.readthedocs.io/en/latest/?badge=latest .. image:: https://img.shields.io/badge/code_style-black-000000.svg :target: https://github.com/ambv/black .. image:: https://img.shields.io/github/license/seik/stilio :target: https://github.com/seik/stilio/blob/master/LICENSE
|
.. raw:: html
<embed>
<p align="center">
<img src="resources/images/stilio-logo.png">
</p>
</embed>
Quickstart ~~~~~~~~~~
A docker-compose </docker-compose.yml>
_ file is included to allow a fast and easy set up.
::
docker-compose up
.. note::
For a production enviroment it's recommended to run the frontend and database separated from the
crawler since the last one generates a lot of traffic and can make a poor experience
for the users. You can read a guide about how to do this `here <https://stilio.readthedocs.io/en/latest/stilio/guides.html>`_.
FAQ ~~~
The crawler speed is not so good.
Try to run this commands if you are on linux:
::
iptables -I OUTPUT -t raw -p udp --sport PORT_NUMBER -j NOTRACK
iptables -I PREROUTING -t raw -p udp --dport PORT_NUMBER -j NOTRACK
Bumps ipython from 7.20.0 to 7.31.1.
e321e76
release 7.31.167ca2b3
Merge pull request from GHSA-pq7m-3gw7-gq5x2794330
back to devbe343e7
release 7.31.00fcf2c4
Merge pull request #13428 from meeseeksmachine/auto-backport-of-pr-13427-on-7.xb8db9b1
Backport PR #13427: wn 7317f253dc
Merge pull request #13412 from bnavigator/backport-inspect4f26796
fix xxlimited_35 import name77ca4a6
don't run nose-based iptest on py310, only pytest533e509
back to decorator skipDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase
.
Bumps fastapi from 0.52.0 to 0.65.2.
Sourced from fastapi's releases.
0.65.2
Security fixes
- 🔒 Check Content-Type request header before assuming JSON. Initial PR #2118 by
@patrickkwang
.This change fixes a CSRF security vulnerability when using cookies for authentication in path operations with JSON payloads sent by browsers.
In versions lower than
0.65.2
, FastAPI would try to read the request payload as JSON even if thecontent-type
header sent was not set toapplication/json
or a compatible JSON media type (e.g.application/geo+json
).So, a request with a content type of
text/plain
containing JSON data would be accepted and the JSON data would be extracted.But requests with content type
text/plain
are exempt from CORS preflights, for being considered Simple requests. So, the browser would execute them right away including cookies, and the text content could be a JSON string that would be parsed and accepted by the FastAPI application.See CVE-2021-32677 for more details.
Thanks to Dima Boger for the security report! 🙇🔒
Internal
- 🔧 Update sponsors badge, course bundle. PR #3340 by
@tiangolo
.- 🔧 Add new gold sponsor Jina 🎉. PR #3291 by
@tiangolo
.- 🔧 Add new banner sponsor badge for FastAPI courses bundle. PR #3288 by
@tiangolo
.- 👷 Upgrade Issue Manager GitHub Action. PR #3236 by
@tiangolo
.0.65.1
Security fixes
- 📌 Upgrade pydantic pin, to handle security vulnerability CVE-2021-29510. PR #3213 by
@tiangolo
.0.65.0
Breaking Changes - Upgrade
- ⬆️ Upgrade Starlette to
0.14.2
, including internalUJSONResponse
migrated from Starlette. This includes several bug fixes and features from Starlette. PR #2335 by@hanneskuettner
.Translations
- 🌐 Initialize new language Polish for translations. PR #3170 by
@neternefer
.Internal
- 👷 Add GitHub Action cache to speed up CI installs. PR #3204 by
@tiangolo
.- ⬆️ Upgrade setup-python GitHub Action to v2. PR #3203 by
@tiangolo
.- 🐛 Fix docs script to generate a new translation language with
overrides
boilerplate. PR #3202 by@tiangolo
.- ✨ Add new Deta banner badge with new sponsorship tier 🙇. PR #3194 by
@tiangolo
.- 👥 Update FastAPI People. PR #3189 by
@github-actions[bot]
.- 🔊 Update FastAPI People to allow better debugging. PR #3188 by
@tiangolo
.0.64.0
Features
... (truncated)
4d91f97
🔖 Release version 0.65.2aabe2c7
📝 Update release notes377234a
🔒 Create Security Policy38b7858
📝 Update release notesfa7e3c9
🐛 Check Content-Type request header before assuming JSON (#2118)90120dd
📝 Update release notes3677254
🔧 Update sponsors badge, course bundle (#3340)40bb0c5
📝 Update release notes60918d2
🔧 Add new gold sponsor Jina 🎉 (#3291)3afce2c
📝 Update release notesDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase
.
Bumps pydantic from 1.4 to 1.6.2.
Sourced from pydantic's releases.
v1.6.2 (2021-05-11)
Security fix: Fix
date
anddatetime
parsing so passing either'infinity'
orfloat('inf')
(or their negative values) does not cause an infinite loop, see security advisory CVE-2021-29510.v1.6.1 (2020-07-15)
See Changelog.
Thank you to pydantic's sponsors:
@matin
,@tiangolo
,@chdsbd
,@jorgecarleitao
, and 1 anonymous sponsor for their kind support.changes:
- fix validation and parsing of nested models with
default_factory
, #1710 by@PrettyWood
v1.6 (2020-07-11)
See Changelog.
Thank you to pydantic's sponsors:
@matin
,@tiangolo
,@chdsbd
,@jorgecarleitao
, and 1 anonymous sponsor for their kind support.changes:
- Modify validators for
conlist
andconset
to not havealways=True
, #1682 by@samuelcolvin
- add port check to
AnyUrl
(can't exceed 65536) ports are 16 insigned bits:0 <= port <= 2**16-1
src: rfc793 header format, #1654 by@flapili
- Document default
regex
anchoring semantics, #1648 by@yurikhan
- Use
chain.from_iterable
in class_validators.py. This is a faster and more idiomatic way of usingitertools.chain
. Instead of computing all the items in the iterable and storing them in memory, they are computed one-by-one and never stored as a huge list. This can save on both runtime and memory space, #1642 by@cool-RR
- Add
conset()
, analogous toconlist()
, #1623 by@patrickkwang
- make pydantic errors (un)pickable, #1616 by
@PrettyWood
- Allow custom encoding for
dotenv
files, #1615 by@PrettyWood
- Ensure
SchemaExtraCallable
is always defined to get type hints on BaseConfig, #1614 by@PrettyWood
- Update datetime parser to support negative timestamps, #1600 by
@mlbiche
- Update mypy, remove
AnyType
alias forType[Any]
, #1598 by@samuelcolvin
- Adjust handling of root validators so that errors are aggregated from all failing root validators, instead of reporting on only the first root validator to fail, #1586 by
@beezee
- Make
__modify_schema__
on Enums apply to the enum schema rather than fields that use the enum, #1581 by@therefromhere
- Fix behavior of
__all__
key when used in conjunction with index keys in advanced include/exclude of fields that are sequences, #1579 by@xspirus
- Subclass validators do not run when referencing a
List
field defined in a parent class wheneach_item=True
. Added an example to the docs illustrating this, #1566 by@samueldeklund
- change
schema.field_class_to_schema
to supportfrozenset
in schema, #1557 by@wangpeibao
- Call
__modify_schema__
only for the field schema, #1552 by@PrettyWood
- Move the assignment of
field.validate_always
infields.py
so thealways
parameter of validators work on inheritance, #1545 by@dcHHH
- Added support for UUID instantiation through 16 byte strings such as
b'\x12\x34\x56\x78' * 4
. This was done to supportBINARY(16)
columns in sqlalchemy, #1541 by@shawnwall
- Add a test assertion that
default_factory
can return a singleton, #1523 by@therefromhere
- Add
NameEmail.__eq__
so duplicateNameEmail
instances are evaluated as equal, #1514 by@stephen-bunn
- Add datamodel-code-generator link in pydantic document site, #1500 by
@koxudaxi
- Added a "Discussion of Pydantic" section to the documentation, with a link to "Pydantic Introduction" video by Alexander Hultnér, #1499 by
@hultner
- Avoid some side effects of
default_factory
by calling it only once if possible and by not setting a default value in the schema, #1491 by@PrettyWood
- Added docs about dumping dataclasses to JSON, #1487 by
@mikegrima
- Make
BaseModel.__signature__
class-only, so getting__signature__
from model instance will raiseAttributeError
, #1466 by@MrMrRobat
- include
'format': 'password'
in the schema for secret types, #1424 by@atheuz
- Modify schema constraints on
ConstrainedFloat
so thatexclusiveMinimum
and minimum are not included in the schema if they are equal to-math.inf
andexclusiveMaximum
andmaximum
are not included if they are equal tomath.inf
, #1417 by@vdwees
- Squash internal
__root__
dicts in.dict()
(and, by extension, in.json()
), #1414 by@patrickkwang
... (truncated)
Sourced from pydantic's changelog.
v1.6.2 (2021-05-11)
- Security fix: Fix
date
anddatetime
parsing so passing either'infinity'
orfloat('inf')
(or their negative values) does not cause an infinite loop, See security advisory CVE-2021-29510v1.6.1 (2020-07-15)
- fix validation and parsing of nested models with
default_factory
, #1710 by@PrettyWood
v1.6 (2020-07-11)
Thank you to pydantic's sponsors:
@matin
,@tiangolo
,@chdsbd
,@jorgecarleitao
, and 1 anonymous sponsor for their kind support.
- Modify validators for
conlist
andconset
to not havealways=True
, #1682 by@samuelcolvin
- add port check to
AnyUrl
(can't exceed 65536) ports are 16 insigned bits:0 <= port <= 2**16-1
src: rfc793 header format, #1654 by@flapili
- Document default
regex
anchoring semantics, #1648 by@yurikhan
- Use
chain.from_iterable
in class_validators.py. This is a faster and more idiomatic way of usingitertools.chain
. Instead of computing all the items in the iterable and storing them in memory, they are computed one-by-one and never stored as a huge list. This can save on both runtime and memory space, #1642 by@cool-RR
- Add
conset()
, analogous toconlist()
, #1623 by@patrickkwang
- make pydantic errors (un)pickable, #1616 by
@PrettyWood
- Allow custom encoding for
dotenv
files, #1615 by@PrettyWood
- Ensure
SchemaExtraCallable
is always defined to get type hints on BaseConfig, #1614 by@PrettyWood
- Update datetime parser to support negative timestamps, #1600 by
@mlbiche
- Update mypy, remove
AnyType
alias forType[Any]
, #1598 by@samuelcolvin
- Adjust handling of root validators so that errors are aggregated from all failing root validators, instead of reporting on only the first root validator to fail, #1586 by
@beezee
- Make
__modify_schema__
on Enums apply to the enum schema rather than fields that use the enum, #1581 by@therefromhere
- Fix behavior of
__all__
key when used in conjunction with index keys in advanced include/exclude of fields that are sequences, #1579 by@xspirus
- Subclass validators do not run when referencing a
List
field defined in a parent class wheneach_item=True
. Added an example to the docs illustrating this, #1566 by@samueldeklund
- change
schema.field_class_to_schema
to supportfrozenset
in schema, #1557 by@wangpeibao
- Call
__modify_schema__
only for the field schema, #1552 by@PrettyWood
- Move the assignment of
field.validate_always
infields.py
so thealways
parameter of validators work on inheritance, #1545 by@dcHHH
- Added support for UUID instantiation through 16 byte strings such as
b'\x12\x34\x56\x78' * 4
. This was done to supportBINARY(16)
columns in sqlalchemy, #1541 by@shawnwall
- Add a test assertion that
default_factory
can return a singleton, #1523 by@therefromhere
- Add
NameEmail.__eq__
so duplicateNameEmail
instances are evaluated as equal, #1514 by@stephen-bunn
- Add datamodel-code-generator link in pydantic document site, #1500 by
@koxudaxi
- Added a "Discussion of Pydantic" section to the documentation, with a link to "Pydantic Introduction" video by Alexander Hultnér, #1499 by
@hultner
- Avoid some side effects of
default_factory
by calling it only once if possible and by not setting a default value in the schema, #1491 by@PrettyWood
- Added docs about dumping dataclasses to JSON, #1487 by
@mikegrima
- Make
BaseModel.__signature__
class-only, so getting__signature__
from model instance will raiseAttributeError
, #1466 by@MrMrRobat
- include
'format': 'password'
in the schema for secret types, #1424 by@atheuz
- Modify schema constraints on
ConstrainedFloat
so thatexclusiveMinimum
and minimum are not included in the schema if they are equal to-math.inf
andexclusiveMaximum
andmaximum
are not included if they are equal tomath.inf
, #1417 by@vdwees
- Squash internal
__root__
dicts in.dict()
(and, by extension, in.json()
), #1414 by@patrickkwang
- Move
const
validator to post-validators so it validates the parsed value, #1410 by@selimb
- Fix model validation to handle nested literals, e.g.
Literal['foo', Literal['bar']]
, #1364 by@DBCerigo
- Remove
user_required = True
fromRedisDsn
, neither user nor password are required, #1275 by@samuelcolvin
... (truncated)
acf7783
tweak history829528c
comment out broken testscf9a417
hack tests into passingb37a922
fix formattingac360c5
prepare for releasebdde15b
Merge pull request from GHSA-5jqp-qgf6-3pvhd2b0501
upreve2fcab5
fix: validate and parse nested models properly with default_factory
(#1712)ba56a67
Bump pytest-mock from 3.1.1 to 3.2.0 (#1719)f1f944f
Update datamode_code_generator:typo in pip install (#1713)Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase
.
Bumps py from 1.8.1 to 1.10.0.
Sourced from py's changelog.
1.10.0 (2020-12-12)
- Fix a regular expression DoS vulnerability in the py.path.svnwc SVN blame functionality (CVE-2020-29651)
- Update vendored apipkg: 1.4 => 1.5
- Update vendored iniconfig: 1.0.0 => 1.1.1
1.9.0 (2020-06-24)
Add type annotation stubs for the following modules:
py.error
py.iniconfig
py.path
(not including SVN paths)py.io
py.xml
There are no plans to type other modules at this time.
The type annotations are provided in external .pyi files, not inline in the code, and may therefore contain small errors or omissions. If you use
py
in conjunction with a type checker, and encounter any type errors you believe should be accepted, please report it in an issue.1.8.2 (2020-06-15)
- On Windows,
py.path.local
s which differ only in case now have the same Python hash value. Previously, such paths were considered equal but had different hashes, which is not allowed and breaks the assumptions made by dicts, sets and other users of hashes.
e5ff378
Update CHANGELOG for 1.10.094cf44f
Update vendored libs5e8ded5
testing: comment out an assert which fails on Python 3.9 for nowafdffcc
Rename HOWTORELEASE.rst to RELEASING.rst2de53a6
Merge pull request #266 from nicoddemus/gh-actionsfa1b32e
Merge pull request #264 from hugovk/patch-2887d6b8
Skip test_samefile_symlink on pypy3 on Windowse94e670
Fix test_comments() in test_sourcefef9a32
Adapt test4a694b0
Add GitHub Actions badge to READMEDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase
.
frontend_1 | [2021-04-20 20:05:41 +0000] [9] [ERROR] Exception in ASGI application frontend_1 | Traceback (most recent call last): frontend_1 | File "/usr/local/lib/python3.8/site-packages/uvicorn/protocols/http/httptools_impl.py", line 390, in run_asgi frontend_1 | result = await app(self.scope, self.receive, self.send) frontend_1 | File "/usr/local/lib/python3.8/site-packages/uvicorn/middleware/proxy_headers.py", line 45, in call frontend_1 | return await self.app(scope, receive, send) frontend_1 | File "/usr/local/lib/python3.8/site-packages/fastapi/applications.py", line 149, in call frontend_1 | await super().call(scope, receive, send) frontend_1 | File "/usr/local/lib/python3.8/site-packages/starlette/applications.py", line 102, in call frontend_1 | await self.middleware_stack(scope, receive, send) frontend_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 181, in call frontend_1 | raise exc from None frontend_1 | File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 159, in call frontend_1 | await self.app(scope, receive, send) frontend_1 | File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 82, in __call__ frontend_1 | raise exc from None frontend_1 | File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 71, in __call__ frontend_1 | await self.app(scope, receive, sender) frontend_1 | File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 550, in __call__ frontend_1 | await route.handle(scope, receive, send) frontend_1 | File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 227, in handle frontend_1 | await self.app(scope, receive, send) frontend_1 | File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 41, in app frontend_1 | response = await func(request) frontend_1 | File "/usr/local/lib/python3.8/site-packages/fastapi/routing.py", line 147, in app frontend_1 | raw_response = await run_endpoint_function( frontend_1 | File "/usr/local/lib/python3.8/site-packages/fastapi/routing.py", line 101, in run_endpoint_function frontend_1 | return await dependant.call(values) frontend_1 | File "/usr/src/app/stilio/frontend/main.py", line 46, in index frontend_1 | count = Torrent.total_torrent_count() frontend_1 | File "/usr/src/app/stilio/persistence/torrents/models.py", line 42, in total_torrent_count frontend_1 | count = cls.select().count() frontend_1 | File "/usr/local/lib/python3.8/site-packages/peewee.py", line 1845, in inner frontend_1 | return method(self, database, *args, kwargs) frontend_1 | File "/usr/local/lib/python3.8/site-packages/peewee.py", line 2121, in count frontend_1 | return Select([clone], [fn.COUNT(SQL('1'))]).scalar(database) frontend_1 | File "/usr/local/lib/python3.8/site-packages/peewee.py", line 1845, in inner frontend_1 | return method(self, database, args, kwargs) frontend_1 | File "/usr/local/lib/python3.8/site-packages/peewee.py", line 2106, in scalar frontend_1 | row = self.tuples().peek(database) frontend_1 | File "/usr/local/lib/python3.8/site-packages/peewee.py", line 1845, in inner frontend_1 | return method(self, database, args, kwargs) frontend_1 | File "/usr/local/lib/python3.8/site-packages/peewee.py", line 2093, in peek frontend_1 | rows = self.execute(database)[:n] frontend_1 | File "/usr/local/lib/python3.8/site-packages/peewee.py", line 1845, in inner frontend_1 | return method(self, database, *args, kwargs) frontend_1 | File "/usr/local/lib/python3.8/site-packages/peewee.py", line 1916, in execute frontend_1 | return self._execute(database) frontend_1 | File "/usr/local/lib/python3.8/site-packages/peewee.py", line 2087, in _execute frontend_1 | cursor = database.execute(self) frontend_1 | File "/usr/local/lib/python3.8/site-packages/peewee.py", line 3070, in execute frontend_1 | return self.execute_sql(sql, params, commit=commit) frontend_1 | File "/usr/local/lib/python3.8/site-packages/peewee.py", line 3064, in execute_sql frontend_1 | self.commit() frontend_1 | File "/usr/local/lib/python3.8/site-packages/peewee.py", line 2831, in exit frontend_1 | reraise(new_type, new_type(exc_value, *exc_args), traceback) frontend_1 | File "/usr/local/lib/python3.8/site-packages/peewee.py", line 183, in reraise frontend_1 | raise value.with_traceback(tb) frontend_1 | File "/usr/local/lib/python3.8/site-packages/peewee.py", line 3057, in execute_sql frontend_1 | cursor.execute(sql, params or ()) frontend_1 | peewee.ProgrammingError: relation "torrent" does not exist frontend_1 | LINE 1: SELECT COUNT(1) FROM (SELECT 1 FROM "torrent" AS "t1") AS "... frontend_1 | ^ frontend_1 |
Bumps pygments from 2.6.1 to 2.7.4.
Sourced from pygments's releases.
2.7.4
Updated lexers:
Fix infinite loop in SML lexer (#1625)
Fix backtracking string regexes in JavaScript/TypeScript, Modula2 and many other lexers (#1637)
Limit recursion with nesting Ruby heredocs (#1638)
Fix a few inefficient regexes for guessing lexers
Fix the raw token lexer handling of Unicode (#1616)
Revert a private API change in the HTML formatter (#1655) -- please note that private APIs remain subject to change!
Fix several exponential/cubic-complexity regexes found by Ben Caller/Doyensec (#1675)
Fix incorrect MATLAB example (#1582)
Thanks to Google's OSS-Fuzz project for finding many of these bugs.
2.7.3
... (truncated)
Sourced from pygments's changelog.
Version 2.7.4
(released January 12, 2021)
Updated lexers:
Fix infinite loop in SML lexer (#1625)
Fix backtracking string regexes in JavaScript/TypeScript, Modula2 and many other lexers (#1637)
Limit recursion with nesting Ruby heredocs (#1638)
Fix a few inefficient regexes for guessing lexers
Fix the raw token lexer handling of Unicode (#1616)
Revert a private API change in the HTML formatter (#1655) -- please note that private APIs remain subject to change!
Fix several exponential/cubic-complexity regexes found by Ben Caller/Doyensec (#1675)
Fix incorrect MATLAB example (#1582)
Thanks to Google's OSS-Fuzz project for finding many of these bugs.
Version 2.7.3
(released December 6, 2020)
... (truncated)
4d555d0
Bump version to 2.7.4.fc3b05d
Update CHANGES.ad21935
Revert "Added dracula theme style (#1636)"e411506
Prepare for 2.7.4 release.275e34d
doc: remove Perl 6 ref2e7e8c4
Fix several exponential/cubic complexity regexes found by Ben Caller/Doyenseceb39c43
xquery: fix pop from empty stack2738778
fix coding style in test_analyzer_lexer02e0f09
Added 'ERROR STOP' to fortran.py keywords. (#1665)c83fe48
support added for css variables (#1633)Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase
.
python asyncio torrent