From 92dc6c94d160da3b95bce00a0d496eb8e109a942 Mon Sep 17 00:00:00 2001 From: Marcel Klehr Date: Wed, 17 Apr 2024 15:05:23 +0200 Subject: [PATCH] fix: Update psalm and fix new psalm errors Signed-off-by: Marcel Klehr --- README.md | 1 - lib/BackgroundJobs/StorageCrawlJob.php | 2 +- lib/Classifiers/Classifier.php | 2 +- lib/Controller/AdminController.php | 3 + lib/Db/FaceClusterMapper.php | 3 + lib/Db/FaceDetectionMapper.php | 3 + lib/Db/QueueMapper.php | 3 + lib/Helper/TAR.php | 2 +- lib/Hooks/FileListener.php | 5 +- lib/Service/FaceClusterAnalyzer.php | 2 +- psalm-baseline.xml | 1761 +++++++++++------------- vendor-bin/php-scoper/composer.lock | 134 +- vendor-bin/psalm/composer.json | 2 +- 13 files changed, 912 insertions(+), 1011 deletions(-) diff --git a/README.md b/README.md index 7fd31656..85285d48 100644 --- a/README.md +++ b/README.md @@ -95,7 +95,6 @@ Recognize uses - Processor: x86 64-bit, arm64, armv7l (no AVX needed) - System with glibc or musl (incl. Alpine linux and thus also Nextcloud AIO) - ~4GB of free RAM (if you're cutting it close, make sure you have some swap available) -- This app is currently incompatible with the *Suspicious Login* app due to a dependency conflict (ie. you can only have one of the two installed) #### Tmp This app temporarily stores files to be recognized in /tmp. If you're using docker, you might find diff --git a/lib/BackgroundJobs/StorageCrawlJob.php b/lib/BackgroundJobs/StorageCrawlJob.php index ca7f7301..a63d5b4c 100644 --- a/lib/BackgroundJobs/StorageCrawlJob.php +++ b/lib/BackgroundJobs/StorageCrawlJob.php @@ -40,7 +40,7 @@ public function __construct(ITimeFactory $timeFactory, Logger $logger, QueueServ } /** - * @param array{storage_id:int, root_id:int, override_root:int, last_file_id:int} $argument + * @param array{storage_id:int, root_id:int, override_root:int, last_file_id:int, models?: list} $argument * @return void */ protected function run($argument): void { diff --git a/lib/Classifiers/Classifier.php b/lib/Classifiers/Classifier.php index 64ca3992..695f24c8 100644 --- a/lib/Classifiers/Classifier.php +++ b/lib/Classifiers/Classifier.php @@ -65,7 +65,7 @@ abstract public function classify(array $queueFiles): void; * @param QueueFile[] $queueFiles * @param int $timeout * @return \Generator - * @psalm-return \Generator + * @psalm-return \Generator * @throws \ErrorException|\RuntimeException */ public function classifyFiles(string $model, array $queueFiles, int $timeout): \Generator { diff --git a/lib/Controller/AdminController.php b/lib/Controller/AdminController.php index cdd10d14..2f78e743 100644 --- a/lib/Controller/AdminController.php +++ b/lib/Controller/AdminController.php @@ -168,6 +168,9 @@ public function platform(): JSONResponse { } $lscpu = \json_decode(trim(implode("\n", $output)), true); + if (!isset($lscpu['lscpu'][0]['data'])) { + return new JSONResponse(['platform' => null]); + } return new JSONResponse(['platform' => $lscpu['lscpu'][0]['data']]); } diff --git a/lib/Db/FaceClusterMapper.php b/lib/Db/FaceClusterMapper.php index ed03cfb4..012a628e 100644 --- a/lib/Db/FaceClusterMapper.php +++ b/lib/Db/FaceClusterMapper.php @@ -11,6 +11,9 @@ use OCP\DB\QueryBuilder\IQueryBuilder; use OCP\IDBConnection; +/** + * @psalm-extends QBMapper + */ class FaceClusterMapper extends QBMapper { public function __construct(IDBConnection $db) { parent::__construct($db, 'recognize_face_clusters', FaceCluster::class); diff --git a/lib/Db/FaceDetectionMapper.php b/lib/Db/FaceDetectionMapper.php index 32a7fbb9..edf5d106 100644 --- a/lib/Db/FaceDetectionMapper.php +++ b/lib/Db/FaceDetectionMapper.php @@ -14,6 +14,9 @@ use OCP\IConfig; use OCP\IDBConnection; +/** + * @psalm-extends QBMapper + */ class FaceDetectionMapper extends QBMapper { private IConfig $config; diff --git a/lib/Db/QueueMapper.php b/lib/Db/QueueMapper.php index 23cb6fbc..a3cc31ce 100644 --- a/lib/Db/QueueMapper.php +++ b/lib/Db/QueueMapper.php @@ -18,6 +18,9 @@ use OCP\DB\QueryBuilder\IQueryBuilder; use OCP\IDBConnection; +/** + * @psalm-extends QBMapper + */ class QueueMapper extends QBMapper { public const MODELS = [ ImagenetClassifier::MODEL_NAME, diff --git a/lib/Helper/TAR.php b/lib/Helper/TAR.php index 2d60b00c..49cd52b0 100644 --- a/lib/Helper/TAR.php +++ b/lib/Helper/TAR.php @@ -209,7 +209,7 @@ public function getFolder($path) { } if (substr($file, 0, $pathLength) == $path and $file != $path) { $result = substr($file, $pathLength); - if ($pos = strpos($result, '/')) { + if (($pos = strpos($result, '/')) !== false) { $result = substr($result, 0, $pos + 1); } if (array_search($result, $folderContent) === false) { diff --git a/lib/Hooks/FileListener.php b/lib/Hooks/FileListener.php index a46b7e63..a7a663be 100644 --- a/lib/Hooks/FileListener.php +++ b/lib/Hooks/FileListener.php @@ -38,6 +38,9 @@ use OCP\Share\IManager; use Psr\Log\LoggerInterface; +/** + * @psalm-implements IEventListener + */ class FileListener implements IEventListener { private FaceDetectionMapper $faceDetectionMapper; private LoggerInterface $logger; @@ -70,7 +73,7 @@ public function handle(Event $event): void { $node = $share->getNode(); $accessList = $this->shareManager->getAccessList($node, true, true); - $userIds = array_map(fn ($id) => (string)$id, array_keys($accessList['users'])); + $userIds = array_map(fn (int|string $id) => (string)$id, array_keys($accessList['users'])); if ($node->getType() === FileInfo::TYPE_FOLDER) { $mount = $node->getMountPoint(); diff --git a/lib/Service/FaceClusterAnalyzer.php b/lib/Service/FaceClusterAnalyzer.php index 759a493c..ee08cd84 100644 --- a/lib/Service/FaceClusterAnalyzer.php +++ b/lib/Service/FaceClusterAnalyzer.php @@ -99,7 +99,7 @@ public function calculateClusters(string $userId, int $batchSize = 0): void { /** @var int[] $detectionKeys */ $detectionKeys = array_keys($flatCluster->getClusterVertices()); - $clusterDetections = array_filter($detections, function (int $key) use ($detectionKeys) { + $clusterDetections = array_filter($detections, function ($key) use ($detectionKeys) { return isset($detectionKeys[$key]); }, ARRAY_FILTER_USE_KEY); $clusterCentroid = self::calculateCentroidOfDetections($clusterDetections); diff --git a/psalm-baseline.xml b/psalm-baseline.xml index 96ab5c4a..d1cd3688 100644 --- a/psalm-baseline.xml +++ b/psalm-baseline.xml @@ -1,1173 +1,1072 @@ - + - - $this->getContainer() - - - addServiceListener - addServiceListener - addServiceListener - addServiceListener - addServiceListener - addServiceListener - addServiceListener - addServiceListener - addServiceListener - addServiceListener - - - Principal::class + + getContainer()]]> + + + - - Principal + + - - $rootId + + - - $rootId + + + + + - - $argument + + - - $argument + + - - $files + + - - $argument + + - - $argument + + - - $files + + - - $argument + + - - $argument + + - - $files + + - - $argument + + - - $argument + + - - $files + + - - $argument + + - - $argument + + - - $files + + - - $argument + + - - $argument['userId'] + + - - $argument + + - - $argument['models'] + + - - getFileId + + - - $queueFile + + - - - time() - - - - $results + + - - $proc->getPid() + + getPid()]]> - - isset($dimensions) + + - - json_decode + + - - time() - - - $face['angle']['roll'] - $face['angle']['yaw'] - $face['height'] - $face['vector'] - $face['width'] - $face['x'] - $face['y'] + + + + + + + + - - $face['angle']['roll'] - $face['angle']['yaw'] + + + - - - time() - - - $queueFile - $queueFile->getFileId() - - - $queueFile - - - getFileId - - - - - time() - - - $queueFile->getFileId() - - - $queueFile - - - getFileId - - - - - time() - - - $queueFile->getFileId() - - - $queueFile - - - getFileId - - - - $distances + + - - Ball - Stats::mean($values) - - - Stats::mean($values) - compute - compute - isContinuous - new self($center, $radius, $subsets) - spatialSplit - - - $longestDistance + + - - $setId + + - - $values - $values + + + - - $column - $leftCentroid - $leftCentroid - $rightCentroid - $sample - $sample + + + + + + + - - $retVal - $setId - $this->longestDistanceInNode - $values + + + + longestDistanceInNode]]> + - - null|int|string - null|int|string + + + - - $this->setId - $this->setId - $this->setId + + setId]]> + setId]]> + setId]]> - - propagateSetChanges - propagateSetChanges - resetFullyConnectedStatus - resetLongestEdge + + + + + - - $distances + + - - Clique - Stats::mean($values) - - - Stats::mean($values) - compute - isContinuous - new self($dataset, $center, $radius) - - - $values - $values + + + - - $column - $sample + + + - - $labelToSetId[$label] - $labelToSetId[array_pop($labels)] + + + - - $labelToSetId[array_pop($labels)] + + - - $label - $values + + + - - $labelToSetId[$this->dataset->label(0)] + + dataset->label(0)]]]> - - $edges + + - - EstimatorType::clusterer() - - - EstimatorType::clusterer() - Params::stringify($this->params()) - compatibility - - - $flatClusters - list<MstClusterer> - - - $dataset + + + + + ]]> + + + - - center - center - center - center - cleanup - compute - compute - compute - compute - dataset - dataset - dataset - dataset - dataset - dataset - isPoint - radius - radius - radius - radius - radius - radius - radius - radius - radius - radius - radius - subsets - subsets - subsets - - - Labeled + + + + + + - - $this->root - [$labels, $distances] - [$labels, $distances] - [array_keys($this->coreNeighborDistances[$sampleLabel]), array_values($this->coreNeighborDistances[$sampleLabel])] + + root]]> - - $a - $b - $bestDistances - $k - $k - $label - $maxRange - $queryNode - $referenceNode + + + + + + + + + + - - $bestDistances - $coreNeighborDistances - $coreNeighborDistances - $k - $label - $label - $largestOldCoreDistance - $longestDistance - $longestLeft - $longestRight - $maxRange - $oldDistances - $queryLeft->radius() - $queryNode - $queryNode->radius() - $queryNode->radius() - $queryNode->radius() - $queryRight->radius() - $querySample - $referenceNode - $referenceSample - $shortestDistance - $this->coreNeighborDistances[$label] - $this->coreNeighborDistances[$label] - $this->coreNeighborDistances[$label] - $this->coreNeighborDistances[$queryLabel] - $this->coreNeighborDistances[$queryLabel] - $this->coreNeighborDistances[$queryLabel] - $this->coreNeighborDistances[$queryLabel] - $this->coreNeighborDistances[$queryLabel] - $this->coreNeighborDistances[$referenceLabel] - $this->coreNeighborDistances[$referenceLabel] - $this->coreNeighborDistances[$referenceLabel] - $this->coreNeighborDistances[$referenceLabel] - $this->coreNeighborDistances[$referenceLabel] - $this->coreNeighborDistances[$sampleLabel] - $this->coreNeighborDistances[$sampleLabel] - reset($oldCoreNeighbors) + + + + + + + + + + + + + radius()]]> + + radius()]]> + radius()]]> + radius()]]> + radius()]]> + + + + + coreNeighborDistances[$label]]]> + coreNeighborDistances[$label]]]> + coreNeighborDistances[$label]]]> + coreNeighborDistances[$queryLabel]]]> + coreNeighborDistances[$queryLabel]]]> + coreNeighborDistances[$queryLabel]]]> + coreNeighborDistances[$queryLabel]]]> + coreNeighborDistances[$queryLabel]]]> + coreNeighborDistances[$referenceLabel]]]> + coreNeighborDistances[$referenceLabel]]]> + coreNeighborDistances[$referenceLabel]]]> + coreNeighborDistances[$referenceLabel]]]> + coreNeighborDistances[$referenceLabel]]]> + coreNeighborDistances[$sampleLabel]]]> + coreNeighborDistances[$sampleLabel]]]> + - - $a_vector - $b_vector - $sample - $sample - $sampleKey - $sampleKey - array_slice($neighborLabels, 0, $this->sampleSize) + + + + + + + sampleSize)]]> - - $queryLabels[$queryKey] - $referenceLabels[$referenceKey] + + + + nativeInterpointCache[$smallIndex][$largeIndex]]]> - - $coreNeighborDistances[$referenceLabel] - $this->coreNeighborDistances[$neighborLabel][$label] - $this->coreNeighborDistances[$queryLabel][$referenceLabel] - $this->coreNeighborDistances[$queryLabel][$referenceLabel] - $this->coreNeighborDistances[$referenceLabel][$queryLabel] - $this->coreNeighborDistances[$referenceLabel][$queryLabel] - $this->nativeInterpointCache[$smallIndex][$largeIndex] - $this->nodeDistances[$smallIndex][$largeIndex] + + + coreNeighborDistances[$neighborLabel][$label]]]> + coreNeighborDistances[$queryLabel][$referenceLabel]]]> + coreNeighborDistances[$queryLabel][$referenceLabel]]]> + coreNeighborDistances[$referenceLabel][$queryLabel]]]> + coreNeighborDistances[$referenceLabel][$queryLabel]]]> + nativeInterpointCache[$smallIndex][$largeIndex]]]> + nodeDistances[$smallIndex][$largeIndex]]]> - - $bestDistances[$label] - $bestDistances[$queryLabel] - $bestDistances[$queryLabel] - $coreNeighborDistances[$referenceLabel] - $oldCoreNeighbors[$label] - $oldCoreNeighbors[$neighborLabel] - $queryLabels[$queryKey] - $referenceLabels[$referenceKey] - $this->coreDistances[$label] - $this->coreDistances[$label] - $this->coreDistances[$label] - $this->coreDistances[$label] - $this->coreDistances[$neighborLabel] - $this->coreDistances[$queryLabel] - $this->coreDistances[$queryLabel] - $this->coreDistances[$queryLabel] - $this->coreDistances[$queryLabel] - $this->coreDistances[$referenceLabel] - $this->coreDistances[$referenceLabel] - $this->coreDistances[$referenceLabel] - $this->coreNeighborDistances[$a] - $this->coreNeighborDistances[$b] - $this->coreNeighborDistances[$label] - $this->coreNeighborDistances[$label] - $this->coreNeighborDistances[$neighborLabel] - $this->coreNeighborDistances[$queryLabel] - $this->coreNeighborDistances[$queryLabel] - $this->coreNeighborDistances[$queryLabel] - $this->coreNeighborDistances[$queryLabel] - $this->coreNeighborDistances[$queryLabel] - $this->coreNeighborDistances[$referenceLabel] - $this->coreNeighborDistances[$referenceLabel] - $this->coreNeighborDistances[$referenceLabel] - $this->coreNeighborDistances[$referenceLabel] - $this->nativeInterpointCache[$smallIndex] - $this->nativeInterpointCache[$smallIndex] - $this->nodeDistances[$smallIndex] - $this->nodeDistances[$smallIndex] - $updatedOldCoreLabels[$neighborLabel] + + + + + + + + + + coreDistances[$label]]]> + coreDistances[$label]]]> + coreDistances[$label]]]> + coreDistances[$label]]]> + coreDistances[$neighborLabel]]]> + coreDistances[$queryLabel]]]> + coreDistances[$queryLabel]]]> + coreDistances[$queryLabel]]]> + coreDistances[$queryLabel]]]> + coreDistances[$referenceLabel]]]> + coreDistances[$referenceLabel]]]> + coreDistances[$referenceLabel]]]> + coreNeighborDistances[$a]]]> + coreNeighborDistances[$a][$b]]]> + coreNeighborDistances[$b]]]> + coreNeighborDistances[$b][$a]]]> + coreNeighborDistances[$label]]]> + coreNeighborDistances[$label]]]> + coreNeighborDistances[$neighborLabel]]]> + coreNeighborDistances[$neighborLabel][$label]]]> + coreNeighborDistances[$queryLabel]]]> + coreNeighborDistances[$queryLabel]]]> + coreNeighborDistances[$queryLabel]]]> + coreNeighborDistances[$queryLabel]]]> + coreNeighborDistances[$queryLabel]]]> + coreNeighborDistances[$queryLabel][$referenceLabel]]]> + coreNeighborDistances[$queryLabel][$referenceLabel]]]> + coreNeighborDistances[$referenceLabel]]]> + coreNeighborDistances[$referenceLabel]]]> + coreNeighborDistances[$referenceLabel]]]> + coreNeighborDistances[$referenceLabel]]]> + coreNeighborDistances[$referenceLabel][$queryLabel]]]> + coreNeighborDistances[$referenceLabel][$queryLabel]]]> + nativeInterpointCache[$smallIndex]]]> + nativeInterpointCache[$smallIndex]]]> + nativeInterpointCache[$smallIndex][$largeIndex]]]> + nativeInterpointCache[$smallIndex][$largeIndex]]]> + nativeInterpointCache[$smallIndex][$largeIndex]]]> + nodeDistances[$smallIndex]]]> + nodeDistances[$smallIndex]]]> + nodeDistances[$smallIndex][$largeIndex]]]> + nodeDistances[$smallIndex][$largeIndex]]]> + - - $this->nodeDistances[$smallIndex] + + nodeDistances[$smallIndex]]]> - - $bestDistance - $bestDistances[$queryLabel] - $child - $coreDistance - $coreNeighborDistances - $currentBound - $currentDistance - $label - $label - $label - $labels[] - $labels[] - $largeIndex - $largeIndex - $largeIndex - $largestOldCoreDistance - $longestDistance - $longestDistance - $longestDistance - $longestDistance - $longestDistance - $longestDistance - $longestDistance - $longestLeft - $longestLeft - $longestRight - $longestRight - $neighborLabel - $nodeDistance - $oldDistances - $queryKey - $queryLabel - $queryLabels - $queryLeft - $queryLeft - $queryNodeId - $queryRight - $queryRight - $querySample - $querySamples - $radius - $referenceKey - $referenceLabel - $referenceLabels - $referenceLeft - $referenceNodeId - $referenceRight - $referenceSample - $referenceSamples - $shortestDistance - $smallIndex - $smallIndex - $smallIndex - $subChild - $subStack[] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - float - float - float - float + + + + + - - children - getLongestDistance - getLongestDistance - getLongestDistance - labels - labels - left - left - left - radius - radius - radius - radius - radius - radius - radius - radius - radius - radius - right - right - right - samples - samples - setLongestDistance + + + + + + + + + + + + + + + + + + + + + + + + + + - - $longestLeft - $longestRight - $queryNode->radius() - $queryNode->radius() - $queryNode->radius() - $shortestDistance - min($longestLeft, $longestRight) + + + + radius()]]> + radius()]]> + radius()]]> + radius() - $queryLeft->radius()]]> + radius() - $queryRight->radius()]]> + + - - $nodeDistance - $this->coreDistances[$label] - $this->coreDistances[$queryLabel] ?? INF - $this->coreNeighborDistances[$a][$b] - $this->coreNeighborDistances[$b][$a] - $this->nativeInterpointCache[$smallIndex][$largeIndex] + + + + coreDistances[$label]]]> + coreDistances[$label]]]> + coreDistances[$queryLabel] ?? INF]]> + coreDistances[$queryLabel] ?? INF]]> + coreNeighborDistances[$a][$b]]]> + coreNeighborDistances[$b][$a]]]> + nativeInterpointCache[$smallIndex][$largeIndex]]]> - - DualTreeBall - array{list<mixed>,list<float>} - array{list<mixed>,list<float>} + + coreNeighborDistances[$sampleLabel]), array_values($this->coreNeighborDistances[$sampleLabel])]]]> + ,list}]]> + + + - - $this->dataset - $this->root + + dataset]]> + root]]> - - $sampleKey - $sampleKey + + + - - labels - labels - labels + + + + - - children - dataset - dataset - dataset - dataset + + + + + + - - resetFullyConnectedStatus - resetLongestEdge + + + - - $labels + + coreNeighborDistances[$queryLabel]]]> + + + - - $childCluster->getCoreEdges() + + getCoreEdges()]]> - - $a["distance"] - $a["distance"] - $b["distance"] - $b["distance"] + + + + + - - $childCluster - $childrenWeight + + + - - getClusterWeight - getCoreEdges + + + - - $childCluster->getClusterWeight() + + getClusterWeight()]]> - - array_merge($this->coreEdges, $childCluster->getCoreEdges()) + + coreEdges, $childCluster->getCoreEdges())]]> - - $edge["finalLambda"] - $edge["finalLambda"] + + + - - $child - $queryLeft - $queryLeft - $queryLeft - $queryRight - $queryRight - $queryRight - $referenceLeft - $referenceLeft - $referenceRight - $referenceRight + + + + + + + + + + + + - - radius - radius - radius - radius - radius - radius - - - $edges - - - $queryNode - $referenceNode + + + - - $label - $longestLeft - $longestRight - $queryLabel - $queryLeft->radius() - $queryNode->radius() - $queryRight->radius() - $querySample - $referenceLabel - $referenceSample - $shortestDistance + + + + + + radius()]]> + radius()]]> + radius()]]> + + + + - - $allLabels + + - - $connectingEdge["vertexFrom"] - $connectingEdge["vertexTo"] - $newEdges[$queryNode->getSetId()]["distance"] - $queryLabels[$queryKey] - $referenceLabels[$referenceKey] + + + + getSetId()]["distance"]]]> + + - - $newEdges[$querySetId] - $newEdges[$querySetId] - $newEdges[$querySetId] - $newEdges[$querySetId] - $queryLabels[$queryKey] - $referenceLabels[$referenceKey] - $vertexSets[$setId1] - $vertexSets[$setId1] - $vertexSets[$setId1] - $vertexSets[$setId2] - $vertexSets[$setId2] - $vertexToSetId[$connectingEdge["vertexFrom"]] - $vertexToSetId[$connectingEdge["vertexTo"]] - $vertexToSetId[$queryLabel] - $vertexToSetId[$referenceLabel] - $vertexToSetId[$vertexLabel] + + + + + + + + + + + + + + + + - - $vertexSets[$setId1] - $vertexSets[$setId1] - $vertexSets[$setId2] - $vertexSets[$setId2] + + + + + - - $candidateDist - $connectingEdge - $currentBound - $edges[] - $label - $longestDistance - $longestDistance - $longestDistance - $longestDistance - $longestDistance - $longestDistance - $longestDistance - $longestLeft - $longestLeft - $longestRight - $longestRight - $neighborLabel - $queryKey - $queryLabel - $queryLabels - $querySample - $querySamples - $querySetId - $referenceKey - $referenceLabel - $referenceLabels - $referenceSample - $referenceSamples - $referenceSetId - $setId1 - $setId1 - $setId2 - $setId2 - $shortestDistance - $vertexLabel - $vertexToSetId[$vertexLabel] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - dataset - dataset - dataset - dataset - labels - labels - radius - radius - samples - samples - setLongestDistance + + + + + + + + + + + + - - $queryNode->radius() - 2 * $queryNode->radius() - min($longestLeft, $longestRight) + + radius()]]> + radius()]]> + - - array<int,array{vertexFrom:int|string,vertexTo:int|string,distance:float}> - - - $queryLeft - $queryLeft - $queryLeft - $queryRight - $queryRight - $queryRight - $referenceLeft - $referenceLeft - $referenceRight - $referenceRight + + + ]]> + + + + + + + + + + + + - - $newEdges + + - - getLongestDistance - getLongestDistance - radius - radius - radius - radius + + + + + + + - - getLongestDistance - getLongestDistance - radius - radius - radius - radius + + + + + + + - - DataType::continuous() - - - DataType::continuous() - - - $a - $b + + + - - $output - $output - $output - - - $lscpu['lscpu'] + + + + - - $lscpu + + + + + - - IFile + + - - ICollection + + - - ICollection + + - - ServerPlugin + + - - FacePhoto + + - - ICollection + + - - ICollection + + - - AbstractPrincipalCollection + + - - $title - $userId + + + - - $array[$field] + + - - FaceCluster + + - - $this->findEntities($qb) - $this->findEntities($qb) - $this->findEntity($qb) + + + + + + findEntities($qb)]]> + findEntities($qb)]]> + findEntity($qb)]]> - - FaceCluster - list<\OCA\Recognize\Db\FaceCluster> - list<\OCA\Recognize\Db\FaceCluster> + + + + + + ]]> + ]]> - - $clusterId - $fileId - $height - $threshold - $userId - $vector - $width - $x - $y + + + + + + + + + + - - $array[$field] + + - - FaceDetection + + - - $this->findEntities($qb) - $this->findEntities($qb) - $this->findEntities($qb) - $this->findEntities($qb) - $this->findEntities($qb) - $this->findEntities($qb) - $this->findEntities($qb) - $this->findEntities($qb) - $this->findEntities($qb) - $this->findEntity($qb) - $this->findEntity($qb) - $this->findEntity($qb) + + + + + + executeQuery()->fetchAll(\PDO::FETCH_COLUMN)]]> + findEntities($qb)]]> + findEntities($qb)]]> + findEntities($qb)]]> + findEntities($qb)]]> + findEntities($qb)]]> + findEntities($qb)]]> + findEntities($qb)]]> + findEntities($qb)]]> + findEntities($qb)]]> + findEntity($qb)]]> + findEntity($qb)]]> + findEntity($qb)]]> - - $qb->executeQuery()->fetchAll(\PDO::FETCH_COLUMN) - list<string> - - - FaceDetection - FaceDetection - FaceDetection[] - FaceDetection[] - \OCA\Recognize\Db\FaceDetection[] - \OCA\Recognize\Db\FaceDetection[] - \OCA\Recognize\Db\FaceDetection[] - list<\OCA\Recognize\Db\FaceDetection> - list<\OCA\Recognize\Db\FaceDetection> - list<\OCA\Recognize\Db\FaceDetection> - list<\OCA\Recognize\Db\FaceDetectionWithTitle> + + + + + + + + + + + + ]]> + ]]> + ]]> + ]]> + ]]> - - self + + - - $title + + - - FaceDetectionWithTitle + + - - $fileId - $rootId - $storageId - $update + + + + + - - $array[$field] + + - - $result->fetchOne() + + fetchOne()]]> - - $this->findEntities($qb) + + + + + + findEntities($qb)]]> - - int + + + + + - - $result->fetchOne() + + fetchOne()]]> + fetchOne()]]> - - list<\OCA\Recognize\Db\QueueFile> + + ]]> - - $source + + - - $path - $tmpFile + + + - - $cachedHeaders - $fileList - $path + + + + - - getHeader + + - - $path - $this->path - $tmpFile - $tmpFile + + + path]]> + + - - $header['filename'] - $header['filename'] - $header['filename'] - $header['filename'] - $header['filename'] - $stat['mtime'] - $stat['size'] + + + + + + + + - - $files[] - $header - $header - $result - $stat - $stat - $this->tar - $this->tar + + + + + + + + tar]]> + tar]]> - - ?\PEAR_Error - bool - bool - bool - bool - bool - bool|resource - int - int - list<string> - string + + + + + + + + + + + ]]> + - - $result - $stat['mtime'] - $stat['size'] - $this->fileList - $this->tar->extract($dest) - $this->tar->extractInString($path) - $this->tar->extractList($list, $path, $removePath, $symlinks) + + + + + fileList]]> + tar->extract($dest)]]> + tar->extractInString($path)]]> + tar->extractList($list, $path, $removePath, $symlinks)]]> - - $files + + - - strrpos($file, '.') - strrpos($path, '.') + + + - - null - null + + + - - $this->tar - $this->tar + + tar]]> - - ?\PEAR_Error - \Archive_Tar - \Archive_Tar - \Archive_Tar + + + + + + + + - - $this->tar - $this->tar - $this->tar - $this->tar - $this->tar - $this->tar - $this->tar - \Archive_Tar - private $tar = null; + + tar]]> + tar]]> + tar]]> + tar]]> + tar]]> + tar]]> + tar]]> + + - - $accessList['users'] - $accessList['users'] + + + + + + + + + + - - $mount->getNumericStorageId() - $mount->getNumericStorageId() - $node->getMountPoint()->getNumericStorageId() + + (string)$id]]> + + + getNumericStorageId()]]> + getNumericStorageId()]]> + getMountPoint()->getNumericStorageId()]]> - - $item->getPathname() - $item->getPathname() + + getPathname()]]> + getPathname()]]> - - $output - $output - $output - $output - $output - $output - $output - - - $item - $item + + + - - getPathname - getPathname + + + - - $output - $returnCode + + + - - $file->getRealPath() - $file->getRealPath() + + getRealPath()]]> + getRealPath()]]> - - $packageJson['version'] + + - - $file - $packageJson + + + - - string + + - - getRealPath - getRealPath - isDir + + + + - - $packageJson['version'] + + + + + - - compute - - - -1 - - - $unclusteredDetections[$detectionKey]->getVector() - - - $clusterId + + getVector()]]> + + + - - list<string> + + ]]> - - $this->inMemoryCache[$cacheKey] + + inMemoryCache[$cacheKey]]]> - - $directories !== null + + - - (int)$row['root_id'] - (int)$row['storage_id'] + + + diff --git a/vendor-bin/php-scoper/composer.lock b/vendor-bin/php-scoper/composer.lock index 56415db0..a1f4ec10 100644 --- a/vendor-bin/php-scoper/composer.lock +++ b/vendor-bin/php-scoper/composer.lock @@ -291,21 +291,21 @@ }, { "name": "nikic/php-parser", - "version": "v4.18.0", + "version": "v4.19.1", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "1bcbb2179f97633e98bbbc87044ee2611c7d7999" + "reference": "4e1b88d21c69391150ace211e9eaf05810858d0b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/1bcbb2179f97633e98bbbc87044ee2611c7d7999", - "reference": "1bcbb2179f97633e98bbbc87044ee2611c7d7999", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/4e1b88d21c69391150ace211e9eaf05810858d0b", + "reference": "4e1b88d21c69391150ace211e9eaf05810858d0b", "shasum": "" }, "require": { "ext-tokenizer": "*", - "php": ">=7.0" + "php": ">=7.1" }, "require-dev": { "ircmaxell/php-yacc": "^0.0.7", @@ -341,9 +341,9 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.18.0" + "source": "https://github.com/nikic/PHP-Parser/tree/v4.19.1" }, - "time": "2023-12-10T21:03:43+00:00" + "time": "2024-03-17T08:10:35+00:00" }, { "name": "psr/container", @@ -450,16 +450,16 @@ }, { "name": "symfony/console", - "version": "v6.4.2", + "version": "v6.4.6", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "0254811a143e6bc6c8deea08b589a7e68a37f625" + "reference": "a2708a5da5c87d1d0d52937bdeac625df659e11f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/0254811a143e6bc6c8deea08b589a7e68a37f625", - "reference": "0254811a143e6bc6c8deea08b589a7e68a37f625", + "url": "https://api.github.com/repos/symfony/console/zipball/a2708a5da5c87d1d0d52937bdeac625df659e11f", + "reference": "a2708a5da5c87d1d0d52937bdeac625df659e11f", "shasum": "" }, "require": { @@ -524,7 +524,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v6.4.2" + "source": "https://github.com/symfony/console/tree/v6.4.6" }, "funding": [ { @@ -540,7 +540,7 @@ "type": "tidelift" } ], - "time": "2023-12-10T16:15:48+00:00" + "time": "2024-03-29T19:07:53+00:00" }, { "name": "symfony/deprecation-contracts", @@ -611,16 +611,16 @@ }, { "name": "symfony/event-dispatcher-contracts", - "version": "v3.4.0", + "version": "v3.4.2", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "a76aed96a42d2b521153fb382d418e30d18b59df" + "reference": "4e64b49bf370ade88e567de29465762e316e4224" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/a76aed96a42d2b521153fb382d418e30d18b59df", - "reference": "a76aed96a42d2b521153fb382d418e30d18b59df", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/4e64b49bf370ade88e567de29465762e316e4224", + "reference": "4e64b49bf370ade88e567de29465762e316e4224", "shasum": "" }, "require": { @@ -667,7 +667,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.4.0" + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.4.2" }, "funding": [ { @@ -683,20 +683,20 @@ "type": "tidelift" } ], - "time": "2023-05-23T14:45:45+00:00" + "time": "2024-01-23T14:51:35+00:00" }, { "name": "symfony/filesystem", - "version": "v6.4.0", + "version": "v6.4.6", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "952a8cb588c3bc6ce76f6023000fb932f16a6e59" + "reference": "9919b5509ada52cc7f66f9a35c86a4a29955c9d3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/952a8cb588c3bc6ce76f6023000fb932f16a6e59", - "reference": "952a8cb588c3bc6ce76f6023000fb932f16a6e59", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/9919b5509ada52cc7f66f9a35c86a4a29955c9d3", + "reference": "9919b5509ada52cc7f66f9a35c86a4a29955c9d3", "shasum": "" }, "require": { @@ -730,7 +730,7 @@ "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/filesystem/tree/v6.4.0" + "source": "https://github.com/symfony/filesystem/tree/v6.4.6" }, "funding": [ { @@ -746,7 +746,7 @@ "type": "tidelift" } ], - "time": "2023-07-26T17:27:13+00:00" + "time": "2024-03-21T19:36:20+00:00" }, { "name": "symfony/finder", @@ -814,16 +814,16 @@ }, { "name": "symfony/polyfill-ctype", - "version": "v1.28.0", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb" + "reference": "ef4d7e442ca910c4764bce785146269b30cb5fc4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb", - "reference": "ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/ef4d7e442ca910c4764bce785146269b30cb5fc4", + "reference": "ef4d7e442ca910c4764bce785146269b30cb5fc4", "shasum": "" }, "require": { @@ -837,9 +837,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -876,7 +873,7 @@ "portable" ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.28.0" + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.29.0" }, "funding": [ { @@ -892,20 +889,20 @@ "type": "tidelift" } ], - "time": "2023-01-26T09:26:14+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { "name": "symfony/polyfill-intl-grapheme", - "version": "v1.28.0", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "875e90aeea2777b6f135677f618529449334a612" + "reference": "32a9da87d7b3245e09ac426c83d334ae9f06f80f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/875e90aeea2777b6f135677f618529449334a612", - "reference": "875e90aeea2777b6f135677f618529449334a612", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/32a9da87d7b3245e09ac426c83d334ae9f06f80f", + "reference": "32a9da87d7b3245e09ac426c83d334ae9f06f80f", "shasum": "" }, "require": { @@ -916,9 +913,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -957,7 +951,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.28.0" + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.29.0" }, "funding": [ { @@ -973,20 +967,20 @@ "type": "tidelift" } ], - "time": "2023-01-26T09:26:14+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { "name": "symfony/polyfill-intl-normalizer", - "version": "v1.28.0", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92" + "reference": "bc45c394692b948b4d383a08d7753968bed9a83d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92", - "reference": "8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/bc45c394692b948b4d383a08d7753968bed9a83d", + "reference": "bc45c394692b948b4d383a08d7753968bed9a83d", "shasum": "" }, "require": { @@ -997,9 +991,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -1041,7 +1032,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.28.0" + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.29.0" }, "funding": [ { @@ -1057,20 +1048,20 @@ "type": "tidelift" } ], - "time": "2023-01-26T09:26:14+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.28.0", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "42292d99c55abe617799667f454222c54c60e229" + "reference": "9773676c8a1bb1f8d4340a62efe641cf76eda7ec" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/42292d99c55abe617799667f454222c54c60e229", - "reference": "42292d99c55abe617799667f454222c54c60e229", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9773676c8a1bb1f8d4340a62efe641cf76eda7ec", + "reference": "9773676c8a1bb1f8d4340a62efe641cf76eda7ec", "shasum": "" }, "require": { @@ -1084,9 +1075,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -1124,7 +1112,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.28.0" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.29.0" }, "funding": [ { @@ -1140,20 +1128,20 @@ "type": "tidelift" } ], - "time": "2023-07-28T09:04:16+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { "name": "symfony/service-contracts", - "version": "v3.4.1", + "version": "v3.4.2", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "fe07cbc8d837f60caf7018068e350cc5163681a0" + "reference": "11bbf19a0fb7b36345861e85c5768844c552906e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/fe07cbc8d837f60caf7018068e350cc5163681a0", - "reference": "fe07cbc8d837f60caf7018068e350cc5163681a0", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/11bbf19a0fb7b36345861e85c5768844c552906e", + "reference": "11bbf19a0fb7b36345861e85c5768844c552906e", "shasum": "" }, "require": { @@ -1206,7 +1194,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v3.4.1" + "source": "https://github.com/symfony/service-contracts/tree/v3.4.2" }, "funding": [ { @@ -1222,20 +1210,20 @@ "type": "tidelift" } ], - "time": "2023-12-26T14:02:43+00:00" + "time": "2023-12-19T21:51:00+00:00" }, { "name": "symfony/string", - "version": "v6.4.2", + "version": "v6.4.4", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "7cb80bc10bfcdf6b5492741c0b9357dac66940bc" + "reference": "4e465a95bdc32f49cf4c7f07f751b843bbd6dcd9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/7cb80bc10bfcdf6b5492741c0b9357dac66940bc", - "reference": "7cb80bc10bfcdf6b5492741c0b9357dac66940bc", + "url": "https://api.github.com/repos/symfony/string/zipball/4e465a95bdc32f49cf4c7f07f751b843bbd6dcd9", + "reference": "4e465a95bdc32f49cf4c7f07f751b843bbd6dcd9", "shasum": "" }, "require": { @@ -1292,7 +1280,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v6.4.2" + "source": "https://github.com/symfony/string/tree/v6.4.4" }, "funding": [ { @@ -1308,7 +1296,7 @@ "type": "tidelift" } ], - "time": "2023-12-10T16:15:48+00:00" + "time": "2024-02-01T13:16:41+00:00" }, { "name": "thecodingmachine/safe", diff --git a/vendor-bin/psalm/composer.json b/vendor-bin/psalm/composer.json index c7e68e7f..89710153 100644 --- a/vendor-bin/psalm/composer.json +++ b/vendor-bin/psalm/composer.json @@ -1,5 +1,5 @@ { "require": { - "psalm/phar": "^4" + "psalm/phar": "5.*" } }