Compare commits

..

No commits in common. "643504edc974a5f39cc0b39b7ee6a4bd39431b70" and "8cce9c38cd7179ada7ee443007b174bd75642423" have entirely different histories.

11 changed files with 125 additions and 129 deletions

View File

@ -15,7 +15,7 @@ jobs:
steps:
- uses: actions/checkout@v5
- uses: actions/setup-python@v6
- uses: actions/setup-python@v5
with:
python-version: "3.12"
- uses: actions/cache@v4

View File

@ -25,7 +25,7 @@ jobs:
with:
fetch-depth: 0
- uses: actions/setup-python@v6
- uses: actions/setup-python@v5
with:
python-version: "3.12"

View File

@ -34,7 +34,7 @@ jobs:
restore-keys: |
${{ runner.os }}-docs-lint-tools
- uses: actions/setup-node@v5
- uses: actions/setup-node@v4
with:
node-version: "22"

View File

@ -22,7 +22,7 @@ jobs:
steps:
- uses: actions/checkout@v5
- uses: actions/setup-node@v5
- uses: actions/setup-node@v4
with:
node-version: "22"
@ -48,7 +48,7 @@ jobs:
- name: Check Links
id: lychee
uses: lycheeverse/lychee-action@v2.6.1
uses: lycheeverse/lychee-action@v2.5.0
with:
args: >-
'**/*.md'
@ -77,7 +77,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/stale@v10
- uses: actions/stale@v9
with:
stale-issue-message: >
This issue has been automatically marked as stale because it has not had

View File

@ -12,7 +12,7 @@ jobs:
name: Validate PR title
runs-on: ubuntu-latest
steps:
- uses: amannn/action-semantic-pull-request@v6.1.1
- uses: amannn/action-semantic-pull-request@v6.1.0
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:

View File

@ -17,7 +17,7 @@ jobs:
steps:
- uses: actions/checkout@v5
- uses: actions/setup-python@v6
- uses: actions/setup-python@v5
with:
python-version: "3.12"
@ -34,7 +34,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: actions/setup-python@v6
- uses: actions/setup-python@v5
with:
python-version: "3.x"
- run: make all

View File

@ -47,7 +47,7 @@ repos:
args: [--py38-plus]
- repo: https://github.com/adamchainz/django-upgrade
rev: 1.28.0
rev: 1.25.0
hooks:
- id: django-upgrade
args: [--target-version, "4.2"]

View File

@ -85,7 +85,7 @@ class Importer:
return File.objects.filter(md5=file_md5).exists()
def _upload_file(self, filepath: Path, library_id: Optional[int]) -> None:
def _upload_file(self, filepath: Path, library: Optional[str]) -> None:
try:
resp = requests.post(
f"{self.url}/rest/media",
@ -94,11 +94,7 @@ class Importer:
("file", (filepath.name, filepath.open("rb"))),
],
timeout=30,
cookies=(
{"tt_upload": str(library_id)}
if library_id not in (None, 0)
else {}
),
cookies={"tt_upload": library} if library is not None else {},
)
resp.raise_for_status()
@ -109,7 +105,7 @@ class Importer:
logger.info("deleting %s", filepath)
filepath.unlink()
def _handle_file(self, filepath: Path, library_id: Optional[int]) -> None:
def _handle_file(self, filepath: Path, library: Optional[str]) -> None:
logger.debug("handling file %s", filepath)
if not filepath.is_file():
@ -121,7 +117,7 @@ class Importer:
self._delete_file(filepath)
return
self._upload_file(filepath, library_id)
self._upload_file(filepath, library)
if self.delete_after_upload:
self._delete_file(filepath)
@ -129,7 +125,7 @@ class Importer:
def _walk_dir(
self,
path: Path,
library_id: Optional[int],
library: Optional[str],
allowed_extensions: List[str],
) -> None:
if not path.is_dir():
@ -137,13 +133,13 @@ class Importer:
for sub_path in path.iterdir():
if sub_path.is_dir():
self._walk_dir(sub_path, library_id, allowed_extensions)
self._walk_dir(sub_path, library, allowed_extensions)
continue
if sub_path.suffix.lower() not in allowed_extensions:
continue
self._handle_file(sub_path.resolve(), library_id)
self._handle_file(sub_path.resolve(), library)
def _check_library(self, library: str) -> bool:
return Library.objects.filter(code=library).exists()
@ -157,16 +153,8 @@ class Importer:
if library is not None and not self._check_library(library):
raise ValueError(f"provided library {library} does not exist")
if library:
try:
library_id = Library.objects.get(code=library).id
except Library.DoesNotExist as exc:
raise ValueError(f"provided library {library} does not exist") from exc
else:
library_id = 0
allowed_extensions = [
(x if x.startswith(".") else "." + x) for x in allowed_extensions
]
self._walk_dir(path, library_id, allowed_extensions)
self._walk_dir(path, library, allowed_extensions)

View File

@ -22,8 +22,6 @@ class Library(models.Model):
db_column="analyze_cue_points",
)
id = models.AutoField(primary_key=True)
class Meta:
managed = False
db_table = "cc_track_types"

View File

@ -30,7 +30,6 @@ def _import_paths(tmp_path: Path):
def _library():
return baker.make(
"storage.Library",
id=1,
code="MUS",
name="Music",
description="Some music",
@ -63,8 +62,8 @@ def test_importer(
):
importer.import_dir(import_paths[0], library.code, [".mp3"])
importer._handle_file.assert_called_with(import_paths[1], library.id)
importer._upload_file.assert_called_with(import_paths[1], library.id)
importer._handle_file.assert_called_with(import_paths[1], library.code)
importer._upload_file.assert_called_with(import_paths[1], library.code)
importer._delete_file.assert_not_called()
@ -77,8 +76,8 @@ def test_importer_and_delete(
importer.delete_after_upload = True
importer.import_dir(import_paths[0], library.code, [".mp3"])
importer._handle_file.assert_called_with(import_paths[1], library.id)
importer._upload_file.assert_called_with(import_paths[1], library.id)
importer._handle_file.assert_called_with(import_paths[1], library.code)
importer._upload_file.assert_called_with(import_paths[1], library.code)
importer._delete_file.assert_called_with(import_paths[1])
@ -88,11 +87,11 @@ def test_importer_existing_file(
importer: MockImporter,
library,
):
baker.make("storage.File", id=1, md5="46305a7cf42ee53976c88d337e47e940")
baker.make("storage.File", md5="46305a7cf42ee53976c88d337e47e940")
importer.import_dir(import_paths[0], library.code, [".mp3"])
importer._handle_file.assert_called_with(import_paths[1], library.id)
importer._handle_file.assert_called_with(import_paths[1], library.code)
importer._upload_file.assert_not_called()
importer._delete_file.assert_not_called()
@ -103,12 +102,12 @@ def test_importer_existing_file_and_delete(
importer: MockImporter,
library,
):
baker.make("storage.File", id=1, md5="46305a7cf42ee53976c88d337e47e940")
baker.make("storage.File", md5="46305a7cf42ee53976c88d337e47e940")
importer.delete_if_exists = True
importer.import_dir(import_paths[0], library.code, [".mp3"])
importer._handle_file.assert_called_with(import_paths[1], library.id)
importer._handle_file.assert_called_with(import_paths[1], library.code)
importer._upload_file.assert_not_called()
importer._delete_file.assert_called_with(import_paths[1])

187
legacy/composer.lock generated
View File

@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
"content-hash": "3664fa9473d4b70e3c383b59ca794c82",
"content-hash": "99a8bfaf51b5e36bb702f789ce200fea",
"packages": [
{
"name": "adbario/php-dot-notation",
@ -62,16 +62,16 @@
},
{
"name": "composer/semver",
"version": "3.4.3",
"version": "3.4.4",
"source": {
"type": "git",
"url": "https://github.com/composer/semver.git",
"reference": "4313d26ada5e0c4edfbd1dc481a92ff7bff91f12"
"reference": "198166618906cb2de69b95d7d47e5fa8aa1b2b95"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/composer/semver/zipball/4313d26ada5e0c4edfbd1dc481a92ff7bff91f12",
"reference": "4313d26ada5e0c4edfbd1dc481a92ff7bff91f12",
"url": "https://api.github.com/repos/composer/semver/zipball/198166618906cb2de69b95d7d47e5fa8aa1b2b95",
"reference": "198166618906cb2de69b95d7d47e5fa8aa1b2b95",
"shasum": ""
},
"require": {
@ -123,7 +123,7 @@
"support": {
"irc": "ircs://irc.libera.chat:6697/composer",
"issues": "https://github.com/composer/semver/issues",
"source": "https://github.com/composer/semver/tree/3.4.3"
"source": "https://github.com/composer/semver/tree/3.4.4"
},
"funding": [
{
@ -133,13 +133,9 @@
{
"url": "https://github.com/composer",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/composer/composer",
"type": "tidelift"
}
],
"time": "2024-09-19T14:15:21+00:00"
"time": "2025-08-20T19:15:30+00:00"
},
{
"name": "james-heinrich/getid3",
@ -458,17 +454,17 @@
"source": {
"type": "git",
"url": "https://github.com/libretime/propel1.git",
"reference": "b7e07124f494646da5be7342e949e133140c8eba"
"reference": "64a9a47a8d492945b6810d8c3f0e5fc1b20a7d90"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/libretime/propel1/zipball/b7e07124f494646da5be7342e949e133140c8eba",
"reference": "b7e07124f494646da5be7342e949e133140c8eba",
"url": "https://api.github.com/repos/libretime/propel1/zipball/64a9a47a8d492945b6810d8c3f0e5fc1b20a7d90",
"reference": "64a9a47a8d492945b6810d8c3f0e5fc1b20a7d90",
"shasum": ""
},
"require": {
"phing/phing": "~2.4",
"php": "^7.1"
"phing/phing": "^2.17",
"php": ">7.1"
},
"require-dev": {
"pear-pear.php.net/pear_packagefilemanager2": "@stable",
@ -527,7 +523,7 @@
"support": {
"source": "https://github.com/libretime/propel1/tree/main"
},
"time": "2023-01-12T16:06:29+00:00"
"time": "2025-08-10T11:00:05+00:00"
},
{
"name": "paragonie/constant_time_encoding",
@ -760,16 +756,16 @@
},
{
"name": "php-amqplib/php-amqplib",
"version": "v3.7.2",
"version": "v3.7.3",
"source": {
"type": "git",
"url": "https://github.com/php-amqplib/php-amqplib.git",
"reference": "738a73eb0019b6c99d9bc25d7a0c0dd8f56a5199"
"reference": "9f50fe69a9f1a19e2cb25596a354d705de36fe59"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/php-amqplib/php-amqplib/zipball/738a73eb0019b6c99d9bc25d7a0c0dd8f56a5199",
"reference": "738a73eb0019b6c99d9bc25d7a0c0dd8f56a5199",
"url": "https://api.github.com/repos/php-amqplib/php-amqplib/zipball/9f50fe69a9f1a19e2cb25596a354d705de36fe59",
"reference": "9f50fe69a9f1a19e2cb25596a354d705de36fe59",
"shasum": ""
},
"require": {
@ -835,22 +831,22 @@
],
"support": {
"issues": "https://github.com/php-amqplib/php-amqplib/issues",
"source": "https://github.com/php-amqplib/php-amqplib/tree/v3.7.2"
"source": "https://github.com/php-amqplib/php-amqplib/tree/v3.7.3"
},
"time": "2024-11-21T09:21:41+00:00"
"time": "2025-02-18T20:11:13+00:00"
},
{
"name": "phpseclib/phpseclib",
"version": "3.0.42",
"version": "3.0.46",
"source": {
"type": "git",
"url": "https://github.com/phpseclib/phpseclib.git",
"reference": "db92f1b1987b12b13f248fe76c3a52cadb67bb98"
"reference": "56483a7de62a6c2a6635e42e93b8a9e25d4f0ec6"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/db92f1b1987b12b13f248fe76c3a52cadb67bb98",
"reference": "db92f1b1987b12b13f248fe76c3a52cadb67bb98",
"url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/56483a7de62a6c2a6635e42e93b8a9e25d4f0ec6",
"reference": "56483a7de62a6c2a6635e42e93b8a9e25d4f0ec6",
"shasum": ""
},
"require": {
@ -931,7 +927,7 @@
],
"support": {
"issues": "https://github.com/phpseclib/phpseclib/issues",
"source": "https://github.com/phpseclib/phpseclib/tree/3.0.42"
"source": "https://github.com/phpseclib/phpseclib/tree/3.0.46"
},
"funding": [
{
@ -947,7 +943,7 @@
"type": "tidelift"
}
],
"time": "2024-09-16T03:06:04+00:00"
"time": "2025-06-26T16:29:55+00:00"
},
{
"name": "psr/http-message",
@ -1176,12 +1172,12 @@
},
"type": "library",
"extra": {
"thanks": {
"url": "https://github.com/symfony/contracts",
"name": "symfony/contracts"
},
"branch-alias": {
"dev-main": "2.5-dev"
},
"thanks": {
"name": "symfony/contracts",
"url": "https://github.com/symfony/contracts"
}
},
"autoload": {
@ -1293,7 +1289,7 @@
},
{
"name": "symfony/polyfill-ctype",
"version": "v1.31.0",
"version": "v1.33.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-ctype.git",
@ -1317,8 +1313,8 @@
"type": "library",
"extra": {
"thanks": {
"name": "symfony/polyfill",
"url": "https://github.com/symfony/polyfill"
"url": "https://github.com/symfony/polyfill",
"name": "symfony/polyfill"
}
},
"autoload": {
@ -1352,7 +1348,7 @@
"portable"
],
"support": {
"source": "https://github.com/symfony/polyfill-ctype/tree/v1.31.0"
"source": "https://github.com/symfony/polyfill-ctype/tree/v1.33.0"
},
"funding": [
{
@ -1363,6 +1359,10 @@
"url": "https://github.com/fabpot",
"type": "github"
},
{
"url": "https://github.com/nicolas-grekas",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
@ -1372,19 +1372,20 @@
},
{
"name": "symfony/polyfill-mbstring",
"version": "v1.31.0",
"version": "v1.33.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-mbstring.git",
"reference": "85181ba99b2345b0ef10ce42ecac37612d9fd341"
"reference": "6d857f4d76bd4b343eac26d6b539585d2bc56493"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/85181ba99b2345b0ef10ce42ecac37612d9fd341",
"reference": "85181ba99b2345b0ef10ce42ecac37612d9fd341",
"url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/6d857f4d76bd4b343eac26d6b539585d2bc56493",
"reference": "6d857f4d76bd4b343eac26d6b539585d2bc56493",
"shasum": ""
},
"require": {
"ext-iconv": "*",
"php": ">=7.2"
},
"provide": {
@ -1396,8 +1397,8 @@
"type": "library",
"extra": {
"thanks": {
"name": "symfony/polyfill",
"url": "https://github.com/symfony/polyfill"
"url": "https://github.com/symfony/polyfill",
"name": "symfony/polyfill"
}
},
"autoload": {
@ -1432,7 +1433,7 @@
"shim"
],
"support": {
"source": "https://github.com/symfony/polyfill-mbstring/tree/v1.31.0"
"source": "https://github.com/symfony/polyfill-mbstring/tree/v1.33.0"
},
"funding": [
{
@ -1443,25 +1444,29 @@
"url": "https://github.com/fabpot",
"type": "github"
},
{
"url": "https://github.com/nicolas-grekas",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
"time": "2024-09-09T11:45:10+00:00"
"time": "2024-12-23T08:48:59+00:00"
},
{
"name": "symfony/polyfill-php80",
"version": "v1.31.0",
"version": "v1.33.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php80.git",
"reference": "60328e362d4c2c802a54fcbf04f9d3fb892b4cf8"
"reference": "0cc9dd0f17f61d8131e7df6b84bd344899fe2608"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/60328e362d4c2c802a54fcbf04f9d3fb892b4cf8",
"reference": "60328e362d4c2c802a54fcbf04f9d3fb892b4cf8",
"url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/0cc9dd0f17f61d8131e7df6b84bd344899fe2608",
"reference": "0cc9dd0f17f61d8131e7df6b84bd344899fe2608",
"shasum": ""
},
"require": {
@ -1470,8 +1475,8 @@
"type": "library",
"extra": {
"thanks": {
"name": "symfony/polyfill",
"url": "https://github.com/symfony/polyfill"
"url": "https://github.com/symfony/polyfill",
"name": "symfony/polyfill"
}
},
"autoload": {
@ -1512,7 +1517,7 @@
"shim"
],
"support": {
"source": "https://github.com/symfony/polyfill-php80/tree/v1.31.0"
"source": "https://github.com/symfony/polyfill-php80/tree/v1.33.0"
},
"funding": [
{
@ -1523,16 +1528,20 @@
"url": "https://github.com/fabpot",
"type": "github"
},
{
"url": "https://github.com/nicolas-grekas",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
"time": "2024-09-09T11:45:10+00:00"
"time": "2025-01-02T08:10:11+00:00"
},
{
"name": "symfony/polyfill-php81",
"version": "v1.31.0",
"version": "v1.33.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php81.git",
@ -1550,8 +1559,8 @@
"type": "library",
"extra": {
"thanks": {
"name": "symfony/polyfill",
"url": "https://github.com/symfony/polyfill"
"url": "https://github.com/symfony/polyfill",
"name": "symfony/polyfill"
}
},
"autoload": {
@ -1588,7 +1597,7 @@
"shim"
],
"support": {
"source": "https://github.com/symfony/polyfill-php81/tree/v1.31.0"
"source": "https://github.com/symfony/polyfill-php81/tree/v1.33.0"
},
"funding": [
{
@ -1599,6 +1608,10 @@
"url": "https://github.com/fabpot",
"type": "github"
},
{
"url": "https://github.com/nicolas-grekas",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
@ -3323,29 +3336,27 @@
"packages-dev": [
{
"name": "doctrine/deprecations",
"version": "1.1.3",
"version": "1.1.4",
"source": {
"type": "git",
"url": "https://github.com/doctrine/deprecations.git",
"reference": "dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab"
"reference": "31610dbb31faa98e6b5447b62340826f54fbc4e9"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/doctrine/deprecations/zipball/dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab",
"reference": "dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab",
"url": "https://api.github.com/repos/doctrine/deprecations/zipball/31610dbb31faa98e6b5447b62340826f54fbc4e9",
"reference": "31610dbb31faa98e6b5447b62340826f54fbc4e9",
"shasum": ""
},
"require": {
"php": "^7.1 || ^8.0"
},
"require-dev": {
"doctrine/coding-standard": "^9",
"phpstan/phpstan": "1.4.10 || 1.10.15",
"phpstan/phpstan-phpunit": "^1.0",
"doctrine/coding-standard": "^9 || ^12",
"phpstan/phpstan": "1.4.10 || 2.0.3",
"phpstan/phpstan-phpunit": "^1.0 || ^2",
"phpunit/phpunit": "^7.5 || ^8.5 || ^9.5",
"psalm/plugin-phpunit": "0.18.4",
"psr/log": "^1 || ^2 || ^3",
"vimeo/psalm": "4.30.0 || 5.12.0"
"psr/log": "^1 || ^2 || ^3"
},
"suggest": {
"psr/log": "Allows logging deprecations via PSR-3 logger implementation"
@ -3353,7 +3364,7 @@
"type": "library",
"autoload": {
"psr-4": {
"Doctrine\\Deprecations\\": "lib/Doctrine/Deprecations"
"Doctrine\\Deprecations\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
@ -3364,9 +3375,9 @@
"homepage": "https://www.doctrine-project.org/",
"support": {
"issues": "https://github.com/doctrine/deprecations/issues",
"source": "https://github.com/doctrine/deprecations/tree/1.1.3"
"source": "https://github.com/doctrine/deprecations/tree/1.1.4"
},
"time": "2024-01-30T19:34:25+00:00"
"time": "2024-12-07T21:18:45+00:00"
},
{
"name": "doctrine/instantiator",
@ -3440,16 +3451,16 @@
},
{
"name": "myclabs/deep-copy",
"version": "1.12.1",
"version": "1.13.4",
"source": {
"type": "git",
"url": "https://github.com/myclabs/DeepCopy.git",
"reference": "123267b2c49fbf30d78a7b2d333f6be754b94845"
"reference": "07d290f0c47959fd5eed98c95ee5602db07e0b6a"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/123267b2c49fbf30d78a7b2d333f6be754b94845",
"reference": "123267b2c49fbf30d78a7b2d333f6be754b94845",
"url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/07d290f0c47959fd5eed98c95ee5602db07e0b6a",
"reference": "07d290f0c47959fd5eed98c95ee5602db07e0b6a",
"shasum": ""
},
"require": {
@ -3488,7 +3499,7 @@
],
"support": {
"issues": "https://github.com/myclabs/DeepCopy/issues",
"source": "https://github.com/myclabs/DeepCopy/tree/1.12.1"
"source": "https://github.com/myclabs/DeepCopy/tree/1.13.4"
},
"funding": [
{
@ -3496,7 +3507,7 @@
"type": "tidelift"
}
],
"time": "2024-11-08T17:47:46+00:00"
"time": "2025-08-01T08:46:24+00:00"
},
{
"name": "phpdocumentor/reflection-common",
@ -3553,16 +3564,16 @@
},
{
"name": "phpdocumentor/reflection-docblock",
"version": "5.6.0",
"version": "5.6.3",
"source": {
"type": "git",
"url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
"reference": "f3558a4c23426d12bffeaab463f8a8d8b681193c"
"reference": "94f8051919d1b0369a6bcc7931d679a511c03fe9"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/f3558a4c23426d12bffeaab463f8a8d8b681193c",
"reference": "f3558a4c23426d12bffeaab463f8a8d8b681193c",
"url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/94f8051919d1b0369a6bcc7931d679a511c03fe9",
"reference": "94f8051919d1b0369a6bcc7931d679a511c03fe9",
"shasum": ""
},
"require": {
@ -3611,9 +3622,9 @@
"description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
"support": {
"issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues",
"source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.6.0"
"source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.6.3"
},
"time": "2024-11-12T11:25:25+00:00"
"time": "2025-08-01T19:43:32+00:00"
},
{
"name": "phpdocumentor/type-resolver",
@ -3742,16 +3753,16 @@
},
{
"name": "phpstan/phpdoc-parser",
"version": "2.0.0",
"version": "2.2.0",
"source": {
"type": "git",
"url": "https://github.com/phpstan/phpdoc-parser.git",
"reference": "c00d78fb6b29658347f9d37ebe104bffadf36299"
"reference": "b9e61a61e39e02dd90944e9115241c7f7e76bfd8"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/c00d78fb6b29658347f9d37ebe104bffadf36299",
"reference": "c00d78fb6b29658347f9d37ebe104bffadf36299",
"url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/b9e61a61e39e02dd90944e9115241c7f7e76bfd8",
"reference": "b9e61a61e39e02dd90944e9115241c7f7e76bfd8",
"shasum": ""
},
"require": {
@ -3783,9 +3794,9 @@
"description": "PHPDoc parser with support for nullable, intersection and generic types",
"support": {
"issues": "https://github.com/phpstan/phpdoc-parser/issues",
"source": "https://github.com/phpstan/phpdoc-parser/tree/2.0.0"
"source": "https://github.com/phpstan/phpdoc-parser/tree/2.2.0"
},
"time": "2024-10-13T11:29:49+00:00"
"time": "2025-07-13T07:04:09+00:00"
},
{
"name": "phpunit/dbunit",