Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions docs/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
# Changelog

## 2025-04-11 "FileSet Archive Field & SDK Fixes" - version 1.9.5

### Added
- Added `is_archive` boolean field to `FileSet` model.
- Updated `FileSet` tests to cover `is_archive` field during creation, retrieval, and updates.

## 2025-01-29 "URL Formation Fix" - version 1.9.4

### Fixed
Expand Down
5 changes: 3 additions & 2 deletions pythonik/models/files/file.py
Original file line number Diff line number Diff line change
Expand Up @@ -76,9 +76,9 @@ class FileCreate(File):
name: str
original_name: str
size: int
type: str
type: str
directory_path: str = ""
status: str
status: str


class FileSet(BaseModel):
Expand All @@ -98,6 +98,7 @@ class FileSet(BaseModel):
deleted_by_user: Optional[str] = ""
file_count: Optional[int] = 0
status: Optional[str] = ""
is_archive: Optional[bool] = False


class FileSetCreate(FileSet):
Expand Down
67 changes: 30 additions & 37 deletions pythonik/tests/test_files.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,16 +4,17 @@
import pytest
import requests_mock

from pythonik.models.files.file import FileCreate, FileType, FileStatus
from pythonik.client import PythonikClient
from pythonik.exceptions import UnexpectedStorageMethodForProxy
from pythonik.models.files.keyframe import Keyframe, Keyframes, Resolution
from pythonik.models.files.keyframe import Keyframe, Keyframes
from pythonik.models.files.file import (
FileSetsFilesResponse,
Files,
FileSets,
FileSet,
FileCreate,
FileType,
FileStatus,
FileSet,
FileSetCreate,
UploadUrlResponse,
S3MultipartUploadResponse,
Expand Down Expand Up @@ -496,6 +497,7 @@ def test_create_asset_file_sets():
name=str(uuid.uuid4()),
format_id=str(uuid.uuid4()),
storage_id=str(uuid.uuid4()),
is_archive=False,
)
data = model.model_dump()

Expand All @@ -516,6 +518,7 @@ def test_create_asset_filesets_deprecated():
name=str(uuid.uuid4()),
format_id=str(uuid.uuid4()),
storage_id=str(uuid.uuid4()),
is_archive=False,
)
data = model.model_dump()

Expand All @@ -532,7 +535,15 @@ def test_get_asset_filesets():
auth_token = str(uuid.uuid4())
asset_id = str(uuid.uuid4())

model = FileSets()
mock_file_set = FileSet(
id=str(uuid.uuid4()),
name="test_fileset",
status="ACTIVE",
format_id=str(uuid.uuid4()),
storage_id=str(uuid.uuid4()),
is_archive=False,
)
model = FileSets(file_sets=[mock_file_set])
data = model.model_dump()
mock_address = FilesSpec.gen_url(GET_ASSETS_FILE_SETS_PATH.format(asset_id))
m.get(mock_address, json=data)
Expand Down Expand Up @@ -699,7 +710,7 @@ def test_update_asset_file_set():
name="test_file_set",
status="ACTIVE",
storage_id="test_storage",
format_id="test_format"
format_id="test_format",
)
data = model.model_dump()
mock_address = FilesSpec.gen_url(
Expand All @@ -722,7 +733,7 @@ def test_partial_update_asset_file_set():
name="test_file_set",
status="ACTIVE",
storage_id="test_storage",
format_id="test_format"
format_id="test_format",
)
data = model.model_dump()
mock_address = FilesSpec.gen_url(
Expand All @@ -749,12 +760,10 @@ def test_update_asset_file():
format_id="test_format",
size=1024,
type=FileType.FILE,
status=FileStatus.CLOSED
status=FileStatus.CLOSED,
)
data = model.model_dump()
mock_address = FilesSpec.gen_url(
GET_ASSETS_FILE_PATH.format(asset_id, file_id)
)
mock_address = FilesSpec.gen_url(GET_ASSETS_FILE_PATH.format(asset_id, file_id))

m.put(mock_address, json=data)
client = PythonikClient(app_id=app_id, auth_token=auth_token, timeout=3)
Expand All @@ -776,12 +785,10 @@ def test_partial_update_asset_file():
format_id="test_format",
size=1024,
type=FileType.FILE,
status=FileStatus.CLOSED
status=FileStatus.CLOSED,
)
data = model.model_dump()
mock_address = FilesSpec.gen_url(
GET_ASSETS_FILE_PATH.format(asset_id, file_id)
)
mock_address = FilesSpec.gen_url(GET_ASSETS_FILE_PATH.format(asset_id, file_id))

m.patch(mock_address, json=data)
client = PythonikClient(app_id=app_id, auth_token=auth_token, timeout=3)
Expand All @@ -795,13 +802,7 @@ def test_get_asset_file_sets_by_version():
asset_id = str(uuid.uuid4())
version_id = str(uuid.uuid4())

data = {
"objects": [],
"total": 0,
"page": 1,
"pages": 1,
"per_page": 50
}
data = {"objects": [], "total": 0, "page": 1, "pages": 1, "per_page": 50}
mock_address = FilesSpec.gen_url(
GET_ASSETS_VERSION_FILE_SETS_PATH.format(asset_id, version_id)
)
Expand All @@ -820,13 +821,7 @@ def test_get_asset_formats_by_version():
asset_id = str(uuid.uuid4())
version_id = str(uuid.uuid4())

data = {
"objects": [],
"total": 0,
"page": 1,
"pages": 1,
"per_page": 50
}
data = {"objects": [], "total": 0, "page": 1, "pages": 1, "per_page": 50}
mock_address = FilesSpec.gen_url(
GET_ASSETS_VERSION_FORMATS_PATH.format(asset_id, version_id)
)
Expand All @@ -845,20 +840,18 @@ def test_get_asset_files_by_version():
asset_id = str(uuid.uuid4())
version_id = str(uuid.uuid4())

data = {
"objects": [],
"total": 0,
"page": 1,
"pages": 1,
"per_page": 50
}
data = {"objects": [], "total": 0, "page": 1, "pages": 1, "per_page": 50}
mock_address = FilesSpec.gen_url(
GET_ASSETS_VERSION_FILES_PATH.format(asset_id, version_id)
)

m.get(mock_address, json=data)
client = PythonikClient(app_id=app_id, auth_token=auth_token, timeout=3)
client.files().get_asset_files_by_version(
asset_id, version_id, per_page=50, last_id="last",
generate_signed_url=False, content_disposition="attachment"
asset_id,
version_id,
per_page=50,
last_id="last",
generate_signed_url=False,
content_disposition="attachment",
)