Browse Source

Merge branch 'master' into master

pull/9630/head
Pastukhov Nikita 2 years ago
committed by GitHub
parent
commit
590fd6d0ef
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 2
      .github/workflows/preview-docs.yml
  2. 1
      .github/workflows/smokeshow.yml
  3. 3
      docs/en/docs/release-notes.md
  4. 12
      fastapi/openapi/models.py
  5. 10
      fastapi/security/http.py
  6. 2
      pyproject.toml

2
.github/workflows/preview-docs.yml

@ -18,7 +18,7 @@ jobs:
- name: Download Artifact Docs - name: Download Artifact Docs
uses: dawidd6/action-download-artifact@v2.27.0 uses: dawidd6/action-download-artifact@v2.27.0
with: with:
github_token: ${{ secrets.GITHUB_TOKEN }} github_token: ${{ secrets.FASTAPI_PREVIEW_DOCS_DOWNLOAD_ARTIFACTS }}
workflow: build-docs.yml workflow: build-docs.yml
run_id: ${{ github.event.workflow_run.id }} run_id: ${{ github.event.workflow_run.id }}
name: docs-zip name: docs-zip

1
.github/workflows/smokeshow.yml

@ -22,6 +22,7 @@ jobs:
- uses: dawidd6/action-download-artifact@v2.27.0 - uses: dawidd6/action-download-artifact@v2.27.0
with: with:
github_token: ${{ secrets.FASTAPI_SMOKESHOW_DOWNLOAD_ARTIFACTS }}
workflow: test.yml workflow: test.yml
commit: ${{ github.event.workflow_run.head_sha }} commit: ${{ github.event.workflow_run.head_sha }}

3
docs/en/docs/release-notes.md

@ -2,6 +2,9 @@
## Latest Changes ## Latest Changes
* ♻ Instantiate `HTTPException` only when needed, optimization refactor. PR [#5356](https://github.com/tiangolo/fastapi/pull/5356) by [@pawamoy](https://github.com/pawamoy).
* 📌 Update minimum version of Pydantic to >=1.7.4. PR [#9567](https://github.com/tiangolo/fastapi/pull/9567) by [@Kludex](https://github.com/Kludex).
* 🐛 Fix OpenAPI model fields int validations, `gte` to `ge`. PR [#9635](https://github.com/tiangolo/fastapi/pull/9635) by [@tiangolo](https://github.com/tiangolo).
## 0.96.0 ## 0.96.0

12
fastapi/openapi/models.py

@ -108,14 +108,14 @@ class Schema(BaseModel):
exclusiveMaximum: Optional[float] = None exclusiveMaximum: Optional[float] = None
minimum: Optional[float] = None minimum: Optional[float] = None
exclusiveMinimum: Optional[float] = None exclusiveMinimum: Optional[float] = None
maxLength: Optional[int] = Field(default=None, gte=0) maxLength: Optional[int] = Field(default=None, ge=0)
minLength: Optional[int] = Field(default=None, gte=0) minLength: Optional[int] = Field(default=None, ge=0)
pattern: Optional[str] = None pattern: Optional[str] = None
maxItems: Optional[int] = Field(default=None, gte=0) maxItems: Optional[int] = Field(default=None, ge=0)
minItems: Optional[int] = Field(default=None, gte=0) minItems: Optional[int] = Field(default=None, ge=0)
uniqueItems: Optional[bool] = None uniqueItems: Optional[bool] = None
maxProperties: Optional[int] = Field(default=None, gte=0) maxProperties: Optional[int] = Field(default=None, ge=0)
minProperties: Optional[int] = Field(default=None, gte=0) minProperties: Optional[int] = Field(default=None, ge=0)
required: Optional[List[str]] = None required: Optional[List[str]] = None
enum: Optional[List[Any]] = None enum: Optional[List[Any]] = None
type: Optional[str] = None type: Optional[str] = None

10
fastapi/security/http.py

@ -73,11 +73,6 @@ class HTTPBasic(HTTPBase):
unauthorized_headers = {"WWW-Authenticate": f'Basic realm="{self.realm}"'} unauthorized_headers = {"WWW-Authenticate": f'Basic realm="{self.realm}"'}
else: else:
unauthorized_headers = {"WWW-Authenticate": "Basic"} unauthorized_headers = {"WWW-Authenticate": "Basic"}
invalid_user_credentials_exc = HTTPException(
status_code=HTTP_401_UNAUTHORIZED,
detail="Invalid authentication credentials",
headers=unauthorized_headers,
)
if not authorization or scheme.lower() != "basic": if not authorization or scheme.lower() != "basic":
if self.auto_error: if self.auto_error:
raise HTTPException( raise HTTPException(
@ -87,6 +82,11 @@ class HTTPBasic(HTTPBase):
) )
else: else:
return None return None
invalid_user_credentials_exc = HTTPException(
status_code=HTTP_401_UNAUTHORIZED,
detail="Invalid authentication credentials",
headers=unauthorized_headers,
)
try: try:
data = b64decode(param).decode("ascii") data = b64decode(param).decode("ascii")
except (ValueError, UnicodeDecodeError, binascii.Error): except (ValueError, UnicodeDecodeError, binascii.Error):

2
pyproject.toml

@ -42,7 +42,7 @@ classifiers = [
] ]
dependencies = [ dependencies = [
"starlette>=0.27.0,<0.28.0", "starlette>=0.27.0,<0.28.0",
"pydantic >=1.6.2,!=1.7,!=1.7.1,!=1.7.2,!=1.7.3,!=1.8,!=1.8.1,<2.0.0", "pydantic>=1.7.4,!=1.8,!=1.8.1,<2.0.0",
] ]
dynamic = ["version"] dynamic = ["version"]

Loading…
Cancel
Save