From 894d5bb9f2a2115f4791ee3d01322d60cc6c63d7 Mon Sep 17 00:00:00 2001 From: prabhu Date: Wed, 3 Jul 2024 18:59:02 +0100 Subject: [PATCH] Feature/july pkg updates (#80) * Update packages Signed-off-by: Prabhu Subramanian * Some data flow fixes with tests Signed-off-by: Prabhu Subramanian * passes and passesNot Signed-off-by: Prabhu Subramanian * Update maven and gradle in container image Signed-off-by: Prabhu Subramanian --------- Signed-off-by: Prabhu Subramanian --- .sbtopts | 2 +- README.md | 6 +- build.sbt | 4 +- ci/Dockerfile | 4 +- codemeta.json | 2 +- console/build.sbt | 4 +- .../dataflowengineoss/language/package.scala | 15 + .../passes/reachingdef/EdgeValidator.scala | 5 + .../reachingdef/ReachingDefProblem.scala | 31 +- meta.yaml | 2 +- platform/frontends/c2cpg/build.sbt | 4 +- ...eclipse.cdt.core_8.4.201.202406290148.jar} | Bin 6232130 -> 6233613 bytes .../c2cpg/astcreation/AstCreatorHelper.scala | 313 ++-- .../astcreation/AstForFunctionsCreator.scala | 186 +- .../c2cpg/dataflow/DataFlowTests.scala | 4 +- .../c2cpg/passes/types/ClassTypeTests.scala | 266 +-- .../passes/types/NamespaceTypeTests.scala | 40 +- platform/frontends/javasrc2cpg/build.sbt | 4 +- .../appthreat/javasrc2cpg/JavaSrc2Cpg.scala | 5 +- .../javasrc2cpg/passes/AstCreationPass.scala | 18 +- .../javasrc2cpg/util/SourceParser.scala | 15 - platform/frontends/jssrc2cpg/build.sbt | 2 +- .../passes/JavaScriptTypeRecovery.scala | 30 +- .../passes/TypeRecoveryPassTests.scala | 598 ++++--- .../pysrc2cpg/PythonAstVisitor.scala | 12 +- .../pysrc2cpg/PythonTypeRecovery.scala | 89 +- .../pysrc2cpg/PySrc2CpgFixture.scala | 104 +- .../pysrc2cpg/dataflow/DataFlowTests.scala | 815 ++++++--- .../passes/TypeRecoveryPassTests.scala | 1561 ++++++++++------- .../x2cpg/passes/frontend/XTypeRecovery.scala | 2 +- .../src/universal/schema-extender/build.sbt | 2 +- poetry.lock | 911 +++++----- poetry.toml | 2 + project/Versions.scala | 10 +- project/meta-build.sbt | 2 +- pyproject.toml | 2 +- .../language/nodemethods/CfgNodeMethods.scala | 21 +- .../generalizations/CfgNodeTraversal.scala | 9 - 38 files changed, 2877 insertions(+), 2225 deletions(-) rename platform/frontends/c2cpg/lib/{org.eclipse.cdt.core_8.4.0.202402110645.jar => org.eclipse.cdt.core_8.4.201.202406290148.jar} (85%) create mode 100644 poetry.toml diff --git a/.sbtopts b/.sbtopts index b95704d9..8a06137a 100644 --- a/.sbtopts +++ b/.sbtopts @@ -1,2 +1,2 @@ -J-Xms3G --J-Xmx4G +-J-Xmx16G diff --git a/README.md b/README.md index b1f5fcce..14ba73d1 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ Code Hierarchy Exploration Net (chen) is an advanced exploration toolkit for you - Java >= 21 - Python >= 3.10 -- Node.js >= 18 (To run [atom](https://github.com/AppThreat/atom)) +- Node.js >= 20 (To run [atom](https://github.com/AppThreat/atom)) - Minimum 16GB RAM ## Getting started @@ -147,9 +147,9 @@ Refer to the documentation site to learn more about the commands. ## Languages supported -- C/C++ (Requires Java 21 or above) +- C/C++ - H (C/C++ Header files alone) -- Java (Requires compilation) - 8 to 17 +- Java (Requires compilation) - 8 to 21 - Jar - Android APK (Requires Android SDK. Set the environment variable `ANDROID_HOME`) - JavaScript diff --git a/build.sbt b/build.sbt index 3334e3ee..0a08734b 100644 --- a/build.sbt +++ b/build.sbt @@ -1,7 +1,7 @@ name := "chen" ThisBuild / organization := "io.appthreat" -ThisBuild / version := "2.1.0" -ThisBuild / scalaVersion := "3.4.1" +ThisBuild / version := "2.1.1" +ThisBuild / scalaVersion := "3.4.2" val cpgVersion = "1.0.0" diff --git a/ci/Dockerfile b/ci/Dockerfile index b8f694d6..b60081a3 100644 --- a/ci/Dockerfile +++ b/ci/Dockerfile @@ -12,8 +12,8 @@ LABEL maintainer="appthreat" \ org.opencontainers.docker.cmd="docker run --rm -v /tmp:/tmp -v $HOME:$HOME -v $(pwd):/app:rw -it ghcr.io/appthreat/chen chennai" ARG JAVA_VERSION=22.0.1-graalce -ARG MAVEN_VERSION=3.9.6 -ARG GRADLE_VERSION=8.7 +ARG MAVEN_VERSION=3.9.8 +ARG GRADLE_VERSION=8.8 ENV JAVA_VERSION=$JAVA_VERSION \ MAVEN_VERSION=$MAVEN_VERSION \ diff --git a/codemeta.json b/codemeta.json index c99f7f45..332b070e 100644 --- a/codemeta.json +++ b/codemeta.json @@ -7,7 +7,7 @@ "downloadUrl": "https://github.com/AppThreat/chen", "issueTracker": "https://github.com/AppThreat/chen/issues", "name": "chen", - "version": "2.1.0", + "version": "2.1.1", "description": "Code Hierarchy Exploration Net (chen) is an advanced exploration toolkit for your application source code and its dependency hierarchy.", "applicationCategory": "code-analysis", "keywords": [ diff --git a/console/build.sbt b/console/build.sbt index 4f6c9437..44a2fbba 100644 --- a/console/build.sbt +++ b/console/build.sbt @@ -4,7 +4,7 @@ enablePlugins(JavaAppPackaging) val ScoptVersion = "4.1.0" val CaskVersion = "0.9.2" -val CirceVersion = "0.14.6" +val CirceVersion = "0.14.9" val ZeroturnaroundVersion = "1.17" dependsOn( @@ -24,7 +24,7 @@ libraryDependencies ++= Seq( "io.circe" %% "circe-generic" % CirceVersion, "io.circe" %% "circe-parser" % CirceVersion, "org.zeroturnaround" % "zt-zip" % ZeroturnaroundVersion, - "com.lihaoyi" %% "os-lib" % "0.10.0", + "com.lihaoyi" %% "os-lib" % "0.10.2", "com.lihaoyi" %% "pprint" % "0.9.0", "com.lihaoyi" %% "cask" % CaskVersion, "dev.scalapy" %% "scalapy-core" % "0.5.3", diff --git a/dataflowengineoss/src/main/scala/io/appthreat/dataflowengineoss/language/package.scala b/dataflowengineoss/src/main/scala/io/appthreat/dataflowengineoss/language/package.scala index 399ac644..c5bac851 100644 --- a/dataflowengineoss/src/main/scala/io/appthreat/dataflowengineoss/language/package.scala +++ b/dataflowengineoss/src/main/scala/io/appthreat/dataflowengineoss/language/package.scala @@ -6,6 +6,8 @@ import io.appthreat.dataflowengineoss.language.nodemethods.{ ExtendedCfgNodeMethods } import io.shiftleft.codepropertygraph.generated.nodes.* +import io.shiftleft.semanticcpg.language.* +import scala.language.implicitConversions package object language: @@ -26,4 +28,17 @@ package object language: implicit def toDdgNodeDotSingle(method: Method): DdgNodeDot = new DdgNodeDot(Iterator.single(method)) + + implicit def toExtendedPathsTrav[NodeType <: Path](traversal: IterableOnce[NodeType]) + : PassesExt = + new PassesExt(traversal.iterator) + + class PassesExt(traversal: Iterator[Path]): + + def passes(trav: Iterator[AstNode] => Iterator[?]): Iterator[Path] = + traversal.filter(_.elements.exists(_.start.where(trav).nonEmpty)) + + def passesNot(trav: Iterator[AstNode] => Iterator[?]): Iterator[Path] = + traversal.filter(_.elements.forall(_.start.where(trav).isEmpty)) + end language diff --git a/dataflowengineoss/src/main/scala/io/appthreat/dataflowengineoss/passes/reachingdef/EdgeValidator.scala b/dataflowengineoss/src/main/scala/io/appthreat/dataflowengineoss/passes/reachingdef/EdgeValidator.scala index e9b863e6..2ab75eda 100644 --- a/dataflowengineoss/src/main/scala/io/appthreat/dataflowengineoss/passes/reachingdef/EdgeValidator.scala +++ b/dataflowengineoss/src/main/scala/io/appthreat/dataflowengineoss/passes/reachingdef/EdgeValidator.scala @@ -24,6 +24,11 @@ object EdgeValidator: case (childNode: Expression, parentNode) if isCallRetval(parentNode) || !isValidEdgeToExpression(parentNode, childNode) => false + case (childNode: Call, parentNode: Expression) + if isCallRetval(childNode) && childNode.argument.contains(parentNode) => + // e.g. foo(x), but there are semantics for `foo` that don't taint its return value + // in which case we don't want `x` to taint `foo(x)`. + false case (childNode: Expression, parentNode: Expression) if parentNode.isArgToSameCallWith( childNode diff --git a/dataflowengineoss/src/main/scala/io/appthreat/dataflowengineoss/passes/reachingdef/ReachingDefProblem.scala b/dataflowengineoss/src/main/scala/io/appthreat/dataflowengineoss/passes/reachingdef/ReachingDefProblem.scala index 10816445..f6b6a7f3 100644 --- a/dataflowengineoss/src/main/scala/io/appthreat/dataflowengineoss/passes/reachingdef/ReachingDefProblem.scala +++ b/dataflowengineoss/src/main/scala/io/appthreat/dataflowengineoss/passes/reachingdef/ReachingDefProblem.scala @@ -165,7 +165,7 @@ class ReachingDefTransferFunction(flowGraph: ReachingDefFlowGraph) val gen: Map[StoredNode, mutable.BitSet] = initGen(method).withDefaultValue(mutable.BitSet()) - val kill: Map[StoredNode, Set[Definition]] = + val kill: Map[StoredNode, mutable.BitSet] = initKill(method, gen).withDefaultValue(mutable.BitSet()) /** For a given flow graph node `n` and set of definitions, apply the transfer function to @@ -226,8 +226,8 @@ class ReachingDefTransferFunction(flowGraph: ReachingDefFlowGraph) */ private def initKill( method: Method, - gen: Map[StoredNode, Set[Definition]] - ): Map[StoredNode, Set[Definition]] = + gen: Map[StoredNode, mutable.BitSet] + ): Map[StoredNode, mutable.BitSet] = val allIdentifiers: Map[String, List[CfgNode]] = val results = mutable.Map.empty[String, List[CfgNode]] @@ -266,44 +266,45 @@ class ReachingDefTransferFunction(flowGraph: ReachingDefFlowGraph) * gen(call). */ private def killsForGens( - genOfCall: Set[Definition], + genOfCall: mutable.BitSet, allIdentifiers: Map[String, List[CfgNode]], allCalls: Map[String, List[Call]] - ): Set[Definition] = + ): mutable.BitSet = - def definitionsOfSameVariable(definition: Definition): Set[Definition] = + def definitionsOfSameVariable(definition: Definition): Iterator[Definition] = val definedNodes = flowGraph.numberToNode(definition) match case param: MethodParameterIn => - allIdentifiers(param.name) + allIdentifiers(param.name).iterator .filter(x => x.id != param.id) case identifier: Identifier => - val sameIdentifiers = allIdentifiers(identifier.name) + val sameIdentifiers = allIdentifiers(identifier.name).iterator .filter(x => x.id != identifier.id) /** Killing an identifier should also kill field accesses on that identifier. * For example, a reassignment `x = new Box()` should kill any previous calls * to `x.value`, `x.length()`, etc. */ - val sameObjects: Iterable[Call] = allCalls.values.flatten + val sameObjects: Iterator[Call] = allCalls.valuesIterator.flatten .filter(_.name == Operators.fieldAccess) .filter(_.ast.isIdentifier.nameExact(identifier.name).nonEmpty) sameIdentifiers ++ sameObjects case call: Call => - allCalls(call.code) + allCalls(call.code).iterator .filter(x => x.id != call.id) - case _ => Set() + case _ => Iterator.empty definedNodes // It can happen that the CFG is broken and contains isolated nodes, // in which case they are not in `nodeToNumber`. Let's filter those. .collect { case x if nodeToNumber.contains(x) => Definition.fromNode(x, nodeToNumber) - }.toSet + } end definitionsOfSameVariable - genOfCall.flatMap { definition => - definitionsOfSameVariable(definition) - } + val res = mutable.BitSet() + for definition <- genOfCall do + res.addAll(definitionsOfSameVariable(definition)) + res end killsForGens end ReachingDefTransferFunction diff --git a/meta.yaml b/meta.yaml index 7444c66a..f4346683 100644 --- a/meta.yaml +++ b/meta.yaml @@ -1,4 +1,4 @@ -{% set version = "2.1.0" %} +{% set version = "2.1.1" %} package: name: chen diff --git a/platform/frontends/c2cpg/build.sbt b/platform/frontends/c2cpg/build.sbt index c9c11c47..e230a670 100644 --- a/platform/frontends/c2cpg/build.sbt +++ b/platform/frontends/c2cpg/build.sbt @@ -4,8 +4,8 @@ dependsOn(Projects.semanticcpg, Projects.dataflowengineoss % Test, Projects.x2cp libraryDependencies ++= Seq( "org.scala-lang.modules" %% "scala-parallel-collections" % "1.0.4", - "org.eclipse.platform" % "org.eclipse.equinox.common" % "3.19.0", - "org.eclipse.platform" % "org.eclipse.core.resources" % "3.20.100" excludeAll( + "org.eclipse.platform" % "org.eclipse.equinox.common" % "3.19.100", + "org.eclipse.platform" % "org.eclipse.core.resources" % "3.20.200" excludeAll( ExclusionRule(organization = "com.ibm.icu", name = "icu4j"), ExclusionRule(organization = "org.eclipse.platform", name = "org.eclipse.jface"), ExclusionRule(organization = "org.eclipse.platform", name = "org.eclipse.jface.text") diff --git a/platform/frontends/c2cpg/lib/org.eclipse.cdt.core_8.4.0.202402110645.jar b/platform/frontends/c2cpg/lib/org.eclipse.cdt.core_8.4.201.202406290148.jar similarity index 85% rename from platform/frontends/c2cpg/lib/org.eclipse.cdt.core_8.4.0.202402110645.jar rename to platform/frontends/c2cpg/lib/org.eclipse.cdt.core_8.4.201.202406290148.jar index aed282498f31cd95d67da6968d968f7d17ae8bb8..4e3a4707e54f531718d738f54fb1c5c9dcdb8efe 100644 GIT binary patch delta 471183 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�MX$^Y*->c&vZ-2hI=zue64Bu81=*1TWai;CI z@FTY%&k(xhkAR?e*?@{qMYa1kxJOvUX%&KRNb+0rDR{}l-QrF9Y}eMq&Fk_mIt;Q` zvJ`YqGFALRsF@bsj$@XWUUObW859xg!4r3Qy8krowQ{(zI+k(=>! zJK_?~PSt6f0cWTLGePOI%h5C+f(t$dRyB+t34eOtgsjH>!dyU;XXDJ$UHTHSF~+(H zf&#KjS9_+Ov;OHK{bQZHqlB23FYo40X*-#*Xc@wV;lP)@dCZck0p`&Rnk=P6hs$Ge zhNKmjs_FqB6)gli`Ut4RVwZibH!vi;pNcG9RNo@TWLnZoKlek zZ5lP#CLkY6tq~P601enGpFXaiTEfS{EnaMTZr$8hddQuWzl&)#IPPUMX0ToYE&#)7 zml;j~g{Fv>L@s!$kHrL*-_Dk9zoN9i0A??P$y+IMKNqm%F++yyF@qFn zpU}Qo@21^0luSYKl>1L(udt zUFB*`t-4D!+kj@huf`r1(Y%G)bS5e2@enH11vj{2n(F-54PgZ10wOgVn-o6 zA4a*i6C5RW%CPSCpKs87!MW=enXb`@isDBZ)^XR_L|8{v-Q^SSyMe6pWYItuW{-bsE7Lxy+@gBo#X*;bq*tNDhZ%o4^y7h`GS#hNijj2L(a?$IGZN`VZ ztLNf)kDkVm$CtA@0AjQ1iE|(lI7y1ELu@W(w-+P&QWcfFr^nU}K5sMd`+}&hzwtcF%-rn)#6i?` z5!KZ-h|A@=+p3|4?6ysLsl^yW%hEg`(*FV!{oAzj#~W7V?#9MF2(}qaJJwOHr0&jt z*fl^waSVaY&R<`|ci+(DZe*%#QU63t!LeoR6kBle6o3b#6v!to` zv|Mg95NOA2j~AS3zHMmvsNH(+vQG1I-6n!sZz)3^;;LEIS*#s!N3DFfJ|H_p47Mg) z1ml;oak35F{3(k-9jmjCFgxI2*azExy_vdW}EPilhtpEZE^MR})OKM8-l_H_Sv zRlKE~ujuq2YFO4|`0}z)-_;yMcyHCf*HzDlHV{#ZpvEw9450;IwlmjwukJZwVV)WI!M7>t?kG8T2 z!Zff^EX9mG&F?E1XlIRC?0gpbM($Gal$xkD>=O0ARPyij$S<<%gNaco$!EI*+QWaw zv~UEmmW8nMY2|FAH44)exuxSZHWpFoKEzHNQR| zcQYp96i4$kXaEj)t_-Xy&nm=Nd!f7l2ZM#>Q2V__}xG za5t$Kahid69l^24I(ZtT;~J^Ir!Rl;#&G$|pz&D|z$iOZI>YvQNdoPB&dO@s+BT(> z+dSo9KNyf2GK=mSG`~IY{|8k`dMRvQaO6K*o2RQ6PM>^w z8O}oI@xxBtHndWNkajc{Id=BI>f4a*H^=mAnw3^V_;#ef)Z%x$6CmiNDZGCH2zzCj z`_NPRRijXx42!EauvLQD^m>aP{D*bQ?-%tpXL^Z@zl1e@CjtDsRyYB0rDxs1on?m@ zm{|y9RgO0m2a7fzN6DoKV<*pAKK*`Y>9Ys(a

0P1d#tk0sfF-wJ_=b#@M$5SMZB0VDxf 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°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 z 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

^OBrUomppU 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 F{Xe;x1#|!a diff --git a/platform/frontends/c2cpg/src/main/scala/io/appthreat/c2cpg/astcreation/AstCreatorHelper.scala b/platform/frontends/c2cpg/src/main/scala/io/appthreat/c2cpg/astcreation/AstCreatorHelper.scala index 747ae14a..eb0480f6 100644 --- a/platform/frontends/c2cpg/src/main/scala/io/appthreat/c2cpg/astcreation/AstCreatorHelper.scala +++ b/platform/frontends/c2cpg/src/main/scala/io/appthreat/c2cpg/astcreation/AstCreatorHelper.scala @@ -16,13 +16,14 @@ import org.eclipse.cdt.core.dom.ast.c.{ import org.eclipse.cdt.core.dom.ast.cpp.* import org.eclipse.cdt.core.dom.ast.gnu.c.ICASTKnRFunctionDeclarator import org.eclipse.cdt.internal.core.dom.parser.c.CASTArrayRangeDesignator -import org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.{EvalBinding, EvalMemberAccess} import org.eclipse.cdt.internal.core.dom.parser.cpp.* +import org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.{EvalBinding, EvalMemberAccess} import org.eclipse.cdt.internal.core.model.ASTStringUtil import java.nio.file.{Path, Paths} import scala.annotation.nowarn import scala.collection.mutable +import scala.util.Try object AstCreatorHelper: @@ -36,11 +37,30 @@ trait AstCreatorHelper(implicit withSchemaValidation: ValidationMode): import AstCreatorHelper.* - private var usedVariablePostfix: Int = 0 - private val IncludeKeyword = "include" - - protected def isIncludedNode(node: IASTNode): Boolean = fileName(node) != filename + // Sadly, there is no predefined List / Enum of this within Eclipse CDT: + private val reservedTypeKeywords: List[String] = + List( + "const", + "static", + "volatile", + "restrict", + "extern", + "typedef", + "inline", + "constexpr", + "auto", + "virtual", + "enum", + "struct", + "interface", + "class", + "naked", + "export", + "module", + "import" + ) + private var usedVariablePostfix: Int = 0 protected def uniqueName(target: String, name: String, fullName: String): (String, String) = if name.isEmpty && (fullName.isEmpty || fullName.endsWith(".")) then @@ -51,39 +71,20 @@ trait AstCreatorHelper(implicit withSchemaValidation: ValidationMode): else (name, fullName) - private def fileOffsetTable(node: IASTNode): Array[Int] = - val path = SourceFiles.toAbsolutePath(fileName(node), config.inputPath) - file2OffsetTable.computeIfAbsent(path, _ => genFileOffsetTable(Paths.get(path))) - - private def genFileOffsetTable(absolutePath: Path): Array[Int] = - val asCharArray = IOUtils.readLinesInFile(absolutePath).mkString("\n").toCharArray - val offsets = mutable.ArrayBuffer.empty[Int] - - for i <- Range(0, asCharArray.length) do - if asCharArray(i) == '\n' then - offsets.append(i + 1) - offsets.toArray - - private def nullSafeFileLocation(node: IASTNode): Option[IASTFileLocation] = - Option(cdtAst.flattenLocationsToFile(node.getNodeLocations)).map(_.asFileLocation()) - - private def nullSafeFileLocationLast(node: IASTNode): Option[IASTFileLocation] = - Option(cdtAst.flattenLocationsToFile(node.getNodeLocations.lastOption.toArray)).map( - _.asFileLocation() - ) - protected def code(node: IASTNode): String = shortenCode(nodeSignature(node)) - protected def fileName(node: IASTNode): String = - val path = nullSafeFileLocation(node).map(_.getFileName).getOrElse(filename) - SourceFiles.toRelativePath(path, config.inputPath) - protected def line(node: IASTNode): Option[Integer] = nullSafeFileLocation(node).map(_.getStartingLineNumber) protected def lineEnd(node: IASTNode): Option[Integer] = nullSafeFileLocationLast(node).map(_.getEndingLineNumber) + protected def column(node: IASTNode): Option[Integer] = + val loc = nullSafeFileLocation(node) + loc.map { x => + offsetToColumn(node, x.getNodeOffset) + } + private def offsetToColumn(node: IASTNode, offset: Int): Int = val table = fileOffsetTable(node) val index = java.util.Arrays.binarySearch(table, offset) @@ -95,11 +96,25 @@ trait AstCreatorHelper(implicit withSchemaValidation: ValidationMode): val column = offset - lineStartOffset + 1 column - protected def column(node: IASTNode): Option[Integer] = - val loc = nullSafeFileLocation(node) - loc.map { x => - offsetToColumn(node, x.getNodeOffset) - } + private def fileOffsetTable(node: IASTNode): Array[Int] = + val path = SourceFiles.toAbsolutePath(fileName(node), config.inputPath) + file2OffsetTable.computeIfAbsent(path, _ => genFileOffsetTable(Paths.get(path))) + + private def genFileOffsetTable(absolutePath: Path): Array[Int] = + val asCharArray = IOUtils.readLinesInFile(absolutePath).mkString("\n").toCharArray + val offsets = mutable.ArrayBuffer.empty[Int] + + for i <- Range(0, asCharArray.length) do + if asCharArray(i) == '\n' then + offsets.append(i + 1) + offsets.toArray + + protected def fileName(node: IASTNode): String = + val path = nullSafeFileLocation(node).map(_.getFileName).getOrElse(filename) + SourceFiles.toRelativePath(path, config.inputPath) + + private def nullSafeFileLocation(node: IASTNode): Option[IASTFileLocation] = + Option(cdtAst.flattenLocationsToFile(node.getNodeLocations)).map(_.asFileLocation()) protected def columnEnd(node: IASTNode): Option[Integer] = val loc = nullSafeFileLocation(node) @@ -112,27 +127,10 @@ trait AstCreatorHelper(implicit withSchemaValidation: ValidationMode): CGlobal.usedTypes.putIfAbsent(fixedTypeName, true) fixedTypeName - // Sadly, there is no predefined List / Enum of this within Eclipse CDT: - private val reservedTypeKeywords: List[String] = - List( - "const", - "static", - "volatile", - "restrict", - "extern", - "typedef", - "inline", - "constexpr", - "auto", - "virtual", - "enum", - "struct", - "interface", - "class", - "naked", - "export", - "module", - "import" + protected def fixQualifiedName(name: String): String = + name.stripPrefix(Defines.qualifiedNameSeparator).replace( + Defines.qualifiedNameSeparator, + "." ) protected def cleanType(rawType: String, stripKeywords: Boolean = true): String = @@ -162,9 +160,8 @@ trait AstCreatorHelper(implicit withSchemaValidation: ValidationMode): val anonType = s"${uniqueName("type", "", "")._1}${t.substring(0, t.indexOf("{"))}${t.substring(t.indexOf("}") + 1)}" anonType.replace(" ", "") - case t if t.startsWith("[") && t.endsWith("]") => Defines.anyTypeName - case t if t.contains(Defines.qualifiedNameSeparator) => - fixQualifiedName(t).split(".").lastOption.getOrElse(Defines.anyTypeName) + case t if t.startsWith("[") && t.endsWith("]") => Defines.anyTypeName + case t if t.contains(Defines.qualifiedNameSeparator) => fixQualifiedName(t) case t if t.startsWith("unsigned ") => "unsigned " + t.substring(9).replace(" ", "") case t if t.contains("[") && t.contains("]") => t.replace(" ", "") case t if t.contains("*") => t.replace(" ", "") @@ -177,8 +174,8 @@ trait AstCreatorHelper(implicit withSchemaValidation: ValidationMode): import org.eclipse.cdt.core.dom.ast.ASTSignatureUtil.getNodeSignature node match case f: CPPASTFieldReference => - f.getFieldOwner.getEvaluation match - case evaluation: EvalBinding => + safeGetEvaluation(f.getFieldOwner) match + case Some(evaluation: EvalBinding) => cleanType(evaluation.getType.toString, stripKeywords) case _ => cleanType( ASTTypeUtil.getType(f.getFieldOwner.getExpressionType), @@ -198,10 +195,10 @@ trait AstCreatorHelper(implicit withSchemaValidation: ValidationMode): case a: IASTArrayDeclarator if ASTTypeUtil.getNodeType(a).contains(" [") => cleanType(ASTTypeUtil.getNodeType(node)) case s: CPPASTIdExpression => - s.getEvaluation match - case evaluation: EvalMemberAccess => + safeGetEvaluation(s) match + case Some(evaluation: EvalMemberAccess) => cleanType(evaluation.getOwnerType.toString, stripKeywords) - case evalBinding: EvalBinding => + case Some(evalBinding: EvalBinding) => evalBinding.getBinding match case m: CPPMethod => cleanType(fullName(m.getDefinition)) case _ => cleanType(ASTTypeUtil.getNodeType(s), stripKeywords) @@ -220,18 +217,19 @@ trait AstCreatorHelper(implicit withSchemaValidation: ValidationMode): cleanType(ASTTypeUtil.getType(l.getExpressionType)) case e: IASTExpression => cleanType(ASTTypeUtil.getNodeType(e), stripKeywords) + case c: ICPPASTConstructorInitializer + if c.getParent.isInstanceOf[ICPPASTConstructorChainInitializer] => + cleanType( + fullName(c.getParent.asInstanceOf[ + ICPPASTConstructorChainInitializer + ].getMemberInitializerId), + stripKeywords + ) case _ => cleanType(getNodeSignature(node), stripKeywords) end match end typeFor - private def notHandledText(node: IASTNode): String = - s"""Node '${node.getClass.getSimpleName}' not handled yet! - | Code: '${node.getRawSignature}' - | File: '$filename' - | Line: ${line(node).getOrElse(-1)} - | """.stripMargin - protected def notHandledYet(node: IASTNode): Ast = if !node.isInstanceOf[IASTProblem] && !node.isInstanceOf[IASTProblemHolder] then val text = notHandledText(node) @@ -258,12 +256,6 @@ trait AstCreatorHelper(implicit withSchemaValidation: ValidationMode): protected def dereferenceTypeFullName(fullName: String): String = fullName.replace("*", "") - protected def fixQualifiedName(name: String): String = - name.stripPrefix(Defines.qualifiedNameSeparator).replace( - Defines.qualifiedNameSeparator, - "." - ) - protected def isQualifiedName(name: String): Boolean = name.startsWith(Defines.qualifiedNameSeparator) @@ -342,6 +334,7 @@ trait AstCreatorHelper(implicit withSchemaValidation: ValidationMode): case d: IASTIdExpression => ASTStringUtil.getSimpleName(d.getName) case _: IASTTranslationUnit => "" case u: IASTUnaryExpression => nodeSignature(u.getOperand) + case x: ICPPASTQualifiedName => ASTStringUtil.getQualifiedName(x) case other if other.getParent != null => fullName(other.getParent) case other if other != null => notHandledYet(other); "" case null => "" @@ -393,23 +386,6 @@ trait AstCreatorHelper(implicit withSchemaValidation: ValidationMode): name end shortName - private def pointersAsString( - spec: IASTDeclSpecifier, - parentDecl: IASTDeclarator, - stripKeywords: Boolean - ): String = - val tpe = typeFor(spec, stripKeywords) - val pointers = parentDecl.getPointerOperators - val arr = parentDecl match - case p: IASTArrayDeclarator => - p.getArrayModifiers.toList.map(_.getRawSignature).mkString - case _ => "" - if pointers.isEmpty then s"$tpe$arr" - else - val refs = - "*" * (pointers.length - pointers.count(_.isInstanceOf[ICPPASTReferenceOperator])) - s"$tpe$arr$refs".strip() - protected def astsForDependenciesAndImports(iASTTranslationUnit: IASTTranslationUnit) : Seq[Ast] = val allIncludes = iASTTranslationUnit.getIncludeDirectives.toList.filterNot(isIncludedNode) @@ -422,6 +398,8 @@ trait AstCreatorHelper(implicit withSchemaValidation: ValidationMode): Ast(importNode) } + protected def isIncludedNode(node: IASTNode): Boolean = fileName(node) != filename + protected def astsForComments(iASTTranslationUnit: IASTTranslationUnit): Seq[Ast] = if config.includeComments then iASTTranslationUnit.getComments.toList.filterNot(isIncludedNode).map(comment => @@ -430,63 +408,6 @@ trait AstCreatorHelper(implicit withSchemaValidation: ValidationMode): else Seq.empty - private def astForDecltypeSpecifier(decl: ICPPASTDecltypeSpecifier): Ast = - val op = ".typeOf" - val cpgUnary = callNode(decl, nodeSignature(decl), op, op, DispatchTypes.STATIC_DISPATCH) - val operand = nullSafeAst(decl.getDecltypeExpression) - callAst(cpgUnary, List(operand)) - - private def astForCASTDesignatedInitializer(d: ICASTDesignatedInitializer): Ast = - val node = blockNode(d, Defines.empty, Defines.voidTypeName) - scope.pushNewScope(node) - val op = Operators.assignment - val calls = withIndex(d.getDesignators) { (des, o) => - val callNode_ = - callNode(d, nodeSignature(d), op, op, DispatchTypes.STATIC_DISPATCH) - .argumentIndex(o) - val left = astForNode(des) - val right = astForNode(d.getOperand) - callAst(callNode_, List(left, right)) - } - scope.popScope() - blockAst(node, calls.toList) - - private def astForCPPASTDesignatedInitializer(d: ICPPASTDesignatedInitializer): Ast = - val node = blockNode(d, Defines.empty, Defines.voidTypeName) - scope.pushNewScope(node) - val op = Operators.assignment - val calls = withIndex(d.getDesignators) { (des, o) => - val callNode_ = - callNode(d, nodeSignature(d), op, op, DispatchTypes.STATIC_DISPATCH) - .argumentIndex(o) - val left = astForNode(des) - val right = astForNode(d.getOperand) - callAst(callNode_, List(left, right)) - } - scope.popScope() - blockAst(node, calls.toList) - - private def astForCPPASTConstructorInitializer(c: ICPPASTConstructorInitializer): Ast = - val name = ".constructorInitializer" - val callNode_ = - callNode(c, nodeSignature(c), name, name, DispatchTypes.STATIC_DISPATCH) - val args = c.getArguments.toList.map(a => astForNode(a)) - callAst(callNode_, args) - - private def astForCASTArrayRangeDesignator(des: CASTArrayRangeDesignator): Ast = - val op = Operators.arrayInitializer - val callNode_ = callNode(des, nodeSignature(des), op, op, DispatchTypes.STATIC_DISPATCH) - val floorAst = nullSafeAst(des.getRangeFloor) - val ceilingAst = nullSafeAst(des.getRangeCeiling) - callAst(callNode_, List(floorAst, ceilingAst)) - - private def astForCPPASTArrayRangeDesignator(des: CPPASTArrayRangeDesignator): Ast = - val op = Operators.arrayInitializer - val callNode_ = callNode(des, nodeSignature(des), op, op, DispatchTypes.STATIC_DISPATCH) - val floorAst = nullSafeAst(des.getRangeFloor) - val ceilingAst = nullSafeAst(des.getRangeCeiling) - callAst(callNode_, List(floorAst, ceilingAst)) - protected def astForNode(node: IASTNode): Ast = if config.includeFunctionBodies then astForNodeFull(node) else astForNodePartial(node) @@ -570,4 +491,94 @@ trait AstCreatorHelper(implicit withSchemaValidation: ValidationMode): case _ => Defines.anyTypeName if tpe.isEmpty then Defines.anyTypeName else tpe end typeForDeclSpecifier + + private def nullSafeFileLocationLast(node: IASTNode): Option[IASTFileLocation] = + Option(cdtAst.flattenLocationsToFile(node.getNodeLocations.lastOption.toArray)).map( + _.asFileLocation() + ) + + private def safeGetEvaluation(expr: ICPPASTExpression): Option[ICPPEvaluation] = + // In case of unresolved includes etc. this may fail throwing an unrecoverable exception + Try(expr.getEvaluation).toOption + + private def notHandledText(node: IASTNode): String = + s"""Node '${node.getClass.getSimpleName}' not handled yet! + | Code: '${node.getRawSignature}' + | File: '$filename' + | Line: ${line(node).getOrElse(-1)} + | """.stripMargin + + private def pointersAsString( + spec: IASTDeclSpecifier, + parentDecl: IASTDeclarator, + stripKeywords: Boolean + ): String = + val tpe = typeFor(spec, stripKeywords) + val pointers = parentDecl.getPointerOperators + val arr = parentDecl match + case p: IASTArrayDeclarator => + p.getArrayModifiers.toList.map(_.getRawSignature).mkString + case _ => "" + if pointers.isEmpty then s"$tpe$arr" + else + val refs = + "*" * (pointers.length - pointers.count(_.isInstanceOf[ICPPASTReferenceOperator])) + s"$tpe$arr$refs".strip() + + private def astForDecltypeSpecifier(decl: ICPPASTDecltypeSpecifier): Ast = + val op = ".typeOf" + val cpgUnary = callNode(decl, nodeSignature(decl), op, op, DispatchTypes.STATIC_DISPATCH) + val operand = nullSafeAst(decl.getDecltypeExpression) + callAst(cpgUnary, List(operand)) + + private def astForCASTDesignatedInitializer(d: ICASTDesignatedInitializer): Ast = + val node = blockNode(d, Defines.empty, Defines.voidTypeName) + scope.pushNewScope(node) + val op = Operators.assignment + val calls = withIndex(d.getDesignators) { (des, o) => + val callNode_ = + callNode(d, nodeSignature(d), op, op, DispatchTypes.STATIC_DISPATCH) + .argumentIndex(o) + val left = astForNode(des) + val right = astForNode(d.getOperand) + callAst(callNode_, List(left, right)) + } + scope.popScope() + blockAst(node, calls.toList) + + private def astForCPPASTDesignatedInitializer(d: ICPPASTDesignatedInitializer): Ast = + val node = blockNode(d, Defines.empty, Defines.voidTypeName) + scope.pushNewScope(node) + val op = Operators.assignment + val calls = withIndex(d.getDesignators) { (des, o) => + val callNode_ = + callNode(d, nodeSignature(d), op, op, DispatchTypes.STATIC_DISPATCH) + .argumentIndex(o) + val left = astForNode(des) + val right = astForNode(d.getOperand) + callAst(callNode_, List(left, right)) + } + scope.popScope() + blockAst(node, calls.toList) + + private def astForCPPASTConstructorInitializer(c: ICPPASTConstructorInitializer): Ast = + val name = ".constructorInitializer" + val callNode_ = + callNode(c, nodeSignature(c), name, name, DispatchTypes.STATIC_DISPATCH) + val args = c.getArguments.toList.map(a => astForNode(a)) + callAst(callNode_, args) + + private def astForCASTArrayRangeDesignator(des: CASTArrayRangeDesignator): Ast = + val op = Operators.arrayInitializer + val callNode_ = callNode(des, nodeSignature(des), op, op, DispatchTypes.STATIC_DISPATCH) + val floorAst = nullSafeAst(des.getRangeFloor) + val ceilingAst = nullSafeAst(des.getRangeCeiling) + callAst(callNode_, List(floorAst, ceilingAst)) + + private def astForCPPASTArrayRangeDesignator(des: CPPASTArrayRangeDesignator): Ast = + val op = Operators.arrayInitializer + val callNode_ = callNode(des, nodeSignature(des), op, op, DispatchTypes.STATIC_DISPATCH) + val floorAst = nullSafeAst(des.getRangeFloor) + val ceilingAst = nullSafeAst(des.getRangeCeiling) + callAst(callNode_, List(floorAst, ceilingAst)) end AstCreatorHelper diff --git a/platform/frontends/c2cpg/src/main/scala/io/appthreat/c2cpg/astcreation/AstForFunctionsCreator.scala b/platform/frontends/c2cpg/src/main/scala/io/appthreat/c2cpg/astcreation/AstForFunctionsCreator.scala index 119f1b0e..73ec30ce 100644 --- a/platform/frontends/c2cpg/src/main/scala/io/appthreat/c2cpg/astcreation/AstForFunctionsCreator.scala +++ b/platform/frontends/c2cpg/src/main/scala/io/appthreat/c2cpg/astcreation/AstForFunctionsCreator.scala @@ -1,19 +1,21 @@ package io.appthreat.c2cpg.astcreation -import io.shiftleft.codepropertygraph.generated.EvaluationStrategies -import io.shiftleft.codepropertygraph.generated.nodes.* +import io.appthreat.x2cpg.datastructures.Stack.* +import io.appthreat.x2cpg.utils.NodeBuilders.newModifierNode import io.appthreat.x2cpg.{Ast, ValidationMode} +import io.shiftleft.codepropertygraph.generated.{EvaluationStrategies, ModifierTypes} +import io.shiftleft.codepropertygraph.generated.nodes.* +import org.apache.commons.lang.StringUtils import org.eclipse.cdt.core.dom.ast.* import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTLambdaExpression import org.eclipse.cdt.core.dom.ast.gnu.c.ICASTKnRFunctionDeclarator import org.eclipse.cdt.internal.core.dom.parser.c.{CASTFunctionDeclarator, CASTParameterDeclaration} import org.eclipse.cdt.internal.core.dom.parser.cpp.{ CPPASTFunctionDeclarator, + CPPASTFunctionDefinition, CPPASTParameterDeclaration } import org.eclipse.cdt.internal.core.model.ASTStringUtil -import io.appthreat.x2cpg.datastructures.Stack.* -import org.apache.commons.lang.StringUtils import scala.annotation.tailrec import scala.collection.mutable @@ -23,82 +25,6 @@ trait AstForFunctionsCreator(implicit withSchemaValidation: ValidationMode): private val seenFunctionSignatures = mutable.HashSet.empty[String] - private def createFunctionTypeAndTypeDecl( - node: IASTNode, - method: NewMethod, - methodName: String, - methodFullName: String, - signature: String - ): Ast = - val normalizedName = StringUtils.normalizeSpace(methodName) - val normalizedFullName = StringUtils.normalizeSpace(methodFullName) - - val parentNode: NewTypeDecl = methodAstParentStack.collectFirst { case t: NewTypeDecl => - t - }.getOrElse { - val astParentType = methodAstParentStack.head.label - val astParentFullName = methodAstParentStack.head.properties("FULL_NAME").toString - val typeDeclNode_ = typeDeclNode( - node, - normalizedName, - normalizedFullName, - method.filename, - normalizedName, - astParentType, - astParentFullName - ) - Ast.storeInDiffGraph(Ast(typeDeclNode_), diffGraph) - typeDeclNode_ - } - - method.astParentFullName = parentNode.fullName - method.astParentType = parentNode.label - val functionBinding = NewBinding().name(normalizedName).methodFullName( - normalizedFullName - ).signature(signature) - Ast(functionBinding).withBindsEdge(parentNode, functionBinding).withRefEdge( - functionBinding, - method - ) - end createFunctionTypeAndTypeDecl - - private def parameters(functionNode: IASTNode): Seq[IASTNode] = functionNode match - case arr: IASTArrayDeclarator => parameters(arr.getNestedDeclarator) - case decl: CPPASTFunctionDeclarator => - decl.getParameters.toIndexedSeq ++ parameters(decl.getNestedDeclarator) - case decl: CASTFunctionDeclarator => - decl.getParameters.toIndexedSeq ++ parameters(decl.getNestedDeclarator) - case defn: IASTFunctionDefinition => parameters(defn.getDeclarator) - case lambdaExpression: ICPPASTLambdaExpression => parameters(lambdaExpression.getDeclarator) - case knr: ICASTKnRFunctionDeclarator => knr.getParameterDeclarations.toIndexedSeq - case _: IASTDeclarator => Seq.empty - case other if other != null => notHandledYet(other); Seq.empty - case null => Seq.empty - - @tailrec - private def isVariadic(functionNode: IASTNode): Boolean = functionNode match - case decl: CPPASTFunctionDeclarator => decl.takesVarArgs() - case decl: CASTFunctionDeclarator => decl.takesVarArgs() - case defn: IASTFunctionDefinition => isVariadic(defn.getDeclarator) - case lambdaExpression: ICPPASTLambdaExpression => isVariadic(lambdaExpression.getDeclarator) - case _ => false - - private def parameterListSignature(func: IASTNode): String = - val variadic = if isVariadic(func) then "..." else "" - val elements = parameters(func).map { - case p: IASTParameterDeclaration => typeForDeclSpecifier(p.getDeclSpecifier) - case other => typeForDeclSpecifier(other) - } - s"(${elements.mkString(",")}$variadic)" - - private def setVariadic(parameterNodes: Seq[NewMethodParameterIn], func: IASTNode): Unit = - parameterNodes.lastOption.foreach { - case p: NewMethodParameterIn if isVariadic(func) => - p.isVariadic = true - p.code = s"${p.code}..." - case _ => - } - protected def astForMethodRefForLambda(lambdaExpression: ICPPASTLambdaExpression): Ast = val filename = fileName(lambdaExpression) @@ -173,11 +99,13 @@ trait AstForFunctionsCreator(implicit withSchemaValidation: ValidationMode): end if end astForFunctionDeclarator - private def fullNameWithoutLocation(fullName: String) = fullName.split(":").last - protected def astForFunctionDefinition(funcDef: IASTFunctionDefinition): Ast = - val filename = fileName(funcDef) - val returnType = typeForDeclSpecifier(funcDef.getDeclSpecifier) + val filename = fileName(funcDef) + val returnType = if isCppConstructor(funcDef) then + typeFor(funcDef.asInstanceOf[ + CPPASTFunctionDefinition + ].getMemberInitializers.head.getInitializer) + else typeForDeclSpecifier(funcDef.getDeclSpecifier) val name = shortName(funcDef) val fullname = fullName(funcDef) val templateParams = templateParameters(funcDef).getOrElse("") @@ -196,12 +124,15 @@ trait AstForFunctionsCreator(implicit withSchemaValidation: ValidationMode): parameterNode(p, i) } setVariadic(parameterNodes, funcDef) - + val modifiers = if isCppConstructor(funcDef) then + List(newModifierNode(ModifierTypes.CONSTRUCTOR), newModifierNode(ModifierTypes.PUBLIC)) + else Nil val astForMethod = methodAst( methodNode_, parameterNodes.map(Ast(_)), astForMethodBody(Option(funcDef.getBody)), - newMethodReturnNode(funcDef, registerType(returnType)) + newMethodReturnNode(funcDef, registerType(returnType)), + modifiers = modifiers ) scope.popScope() @@ -212,6 +143,89 @@ trait AstForFunctionsCreator(implicit withSchemaValidation: ValidationMode): astForMethod.merge(typeDeclAst) end astForFunctionDefinition + private def createFunctionTypeAndTypeDecl( + node: IASTNode, + method: NewMethod, + methodName: String, + methodFullName: String, + signature: String + ): Ast = + val normalizedName = StringUtils.normalizeSpace(methodName) + val normalizedFullName = StringUtils.normalizeSpace(methodFullName) + + val parentNode: NewTypeDecl = methodAstParentStack.collectFirst { case t: NewTypeDecl => + t + }.getOrElse { + val astParentType = methodAstParentStack.head.label + val astParentFullName = methodAstParentStack.head.properties("FULL_NAME").toString + val typeDeclNode_ = typeDeclNode( + node, + normalizedName, + normalizedFullName, + method.filename, + normalizedName, + astParentType, + astParentFullName + ) + Ast.storeInDiffGraph(Ast(typeDeclNode_), diffGraph) + typeDeclNode_ + } + + method.astParentFullName = parentNode.fullName + method.astParentType = parentNode.label + val functionBinding = NewBinding().name(normalizedName).methodFullName( + normalizedFullName + ).signature(signature) + Ast(functionBinding).withBindsEdge(parentNode, functionBinding).withRefEdge( + functionBinding, + method + ) + end createFunctionTypeAndTypeDecl + + private def parameters(functionNode: IASTNode): Seq[IASTNode] = functionNode match + case arr: IASTArrayDeclarator => parameters(arr.getNestedDeclarator) + case decl: CPPASTFunctionDeclarator => + decl.getParameters.toIndexedSeq ++ parameters(decl.getNestedDeclarator) + case decl: CASTFunctionDeclarator => + decl.getParameters.toIndexedSeq ++ parameters(decl.getNestedDeclarator) + case defn: IASTFunctionDefinition => parameters(defn.getDeclarator) + case lambdaExpression: ICPPASTLambdaExpression => parameters(lambdaExpression.getDeclarator) + case knr: ICASTKnRFunctionDeclarator => knr.getParameterDeclarations.toIndexedSeq + case _: IASTDeclarator => Seq.empty + case other if other != null => notHandledYet(other); Seq.empty + case null => Seq.empty + + @tailrec + private def isVariadic(functionNode: IASTNode): Boolean = functionNode match + case decl: CPPASTFunctionDeclarator => decl.takesVarArgs() + case decl: CASTFunctionDeclarator => decl.takesVarArgs() + case defn: IASTFunctionDefinition => isVariadic(defn.getDeclarator) + case lambdaExpression: ICPPASTLambdaExpression => isVariadic(lambdaExpression.getDeclarator) + case _ => false + + private def parameterListSignature(func: IASTNode): String = + val variadic = if isVariadic(func) then "..." else "" + val elements = parameters(func).map { + case p: IASTParameterDeclaration => typeForDeclSpecifier(p.getDeclSpecifier) + case other => typeForDeclSpecifier(other) + } + s"(${elements.mkString(",")}$variadic)" + + private def setVariadic(parameterNodes: Seq[NewMethodParameterIn], func: IASTNode): Unit = + parameterNodes.lastOption.foreach { + case p: NewMethodParameterIn if isVariadic(func) => + p.isVariadic = true + p.code = s"${p.code}..." + case _ => + } + + private def fullNameWithoutLocation(fullName: String) = fullName.split(":").last + + private def isCppConstructor(funcDef: IASTFunctionDefinition): Boolean = + funcDef match + case cppFunc: CPPASTFunctionDefinition => cppFunc.getMemberInitializers.nonEmpty + case _ => false + private def parameterNode(parameter: IASTNode, paramIndex: Int): NewMethodParameterIn = val (name, code, tpe, variadic) = parameter match case p: CASTParameterDeclaration => diff --git a/platform/frontends/c2cpg/src/test/scala/io/appthreat/c2cpg/dataflow/DataFlowTests.scala b/platform/frontends/c2cpg/src/test/scala/io/appthreat/c2cpg/dataflow/DataFlowTests.scala index 16db15a0..0c8c9417 100644 --- a/platform/frontends/c2cpg/src/test/scala/io/appthreat/c2cpg/dataflow/DataFlowTests.scala +++ b/platform/frontends/c2cpg/src/test/scala/io/appthreat/c2cpg/dataflow/DataFlowTests.scala @@ -49,7 +49,7 @@ class DataFlowTests extends DataFlowCodeToCpgSuite { "find flows to `free`" in { val source = cpg.identifier - val sink = cpg.call.name("free") + val sink = cpg.call.name("free").argument(1) sink.reachableByFlows(source).l.map(flowToResultPairs).distinct.size shouldBe 6 } @@ -1252,7 +1252,7 @@ class DataFlowTests extends DataFlowCodeToCpgSuite { "find flows to `free`" in { val source = cpg.identifier - val sink = cpg.call.name("free") + val sink = cpg.call.name("free").argument(1) sink.reachableByFlows(source).l.map(flowToResultPairs).distinct.toSet.size shouldBe 6 } diff --git a/platform/frontends/c2cpg/src/test/scala/io/appthreat/c2cpg/passes/types/ClassTypeTests.scala b/platform/frontends/c2cpg/src/test/scala/io/appthreat/c2cpg/passes/types/ClassTypeTests.scala index c3caec82..d31956f2 100644 --- a/platform/frontends/c2cpg/src/test/scala/io/appthreat/c2cpg/passes/types/ClassTypeTests.scala +++ b/platform/frontends/c2cpg/src/test/scala/io/appthreat/c2cpg/passes/types/ClassTypeTests.scala @@ -5,10 +5,10 @@ import io.appthreat.c2cpg.testfixtures.CCodeToCpgSuite import io.shiftleft.semanticcpg.language.* import io.shiftleft.semanticcpg.language.types.structure.NamespaceTraversal -class ClassTypeTests extends CCodeToCpgSuite(FileDefaults.CPP_EXT) { +class ClassTypeTests extends CCodeToCpgSuite(FileDefaults.CPP_EXT): - "handling C++ classes (code example 1)" should { - val cpg = code(""" + "handling C++ classes (code example 1)" should { + val cpg = code(""" | class Foo { | member_type x; | }; @@ -18,53 +18,53 @@ class ClassTypeTests extends CCodeToCpgSuite(FileDefaults.CPP_EXT) { | } |""".stripMargin) - "create TYPE node with correct fields for class member" in { - val List(x) = cpg.typ.name("member_type").l - x.fullName shouldBe "member_type" - x.typeDeclFullName shouldBe "member_type" - } - - "create TYPE node with correct fields for return type" in { - val List(x) = cpg.typ.name("ret_type").l - x.fullName shouldBe "ret_type" - x.typeDeclFullName shouldBe "ret_type" - } - - "create TYPE node with correct fields for parameter type" in { - val List(x) = cpg.typ.name("param_type").l - x.fullName shouldBe "param_type" - x.typeDeclFullName shouldBe "param_type" - } - - "create TYPE node with correct fields for local type" in { - val List(x) = cpg.typ.name("local_type").l - x.fullName shouldBe "local_type" - x.typeDeclFullName shouldBe "local_type" - } - - "allow traversing from member's TYPE to member" in { - val List(x) = cpg.typ("member_type").memberOfType.l - x.name shouldBe "x" - } - - "allow traversing from return params TYPE to return param" in { - val List(x) = cpg.typ("ret_type").methodReturnOfType.l - x.typeFullName shouldBe "ret_type" - } - - "allow traversing from params TYPE to param" in { - val List(x) = cpg.typ("param_type").parameterOfType.l - x.name shouldBe "param" - } - - "allow traversing from local's TYPE to local" in { - val List(x) = cpg.typ("local_type").localOfType.l - x.name shouldBe "y" - } - } - - "handling C++ classes (code example 2)" should { - val cpg = code(""" + "create TYPE node with correct fields for class member" in { + val List(x) = cpg.typ.name("member_type").l + x.fullName shouldBe "member_type" + x.typeDeclFullName shouldBe "member_type" + } + + "create TYPE node with correct fields for return type" in { + val List(x) = cpg.typ.name("ret_type").l + x.fullName shouldBe "ret_type" + x.typeDeclFullName shouldBe "ret_type" + } + + "create TYPE node with correct fields for parameter type" in { + val List(x) = cpg.typ.name("param_type").l + x.fullName shouldBe "param_type" + x.typeDeclFullName shouldBe "param_type" + } + + "create TYPE node with correct fields for local type" in { + val List(x) = cpg.typ.name("local_type").l + x.fullName shouldBe "local_type" + x.typeDeclFullName shouldBe "local_type" + } + + "allow traversing from member's TYPE to member" in { + val List(x) = cpg.typ("member_type").memberOfType.l + x.name shouldBe "x" + } + + "allow traversing from return params TYPE to return param" in { + val List(x) = cpg.typ("ret_type").methodReturnOfType.l + x.typeFullName shouldBe "ret_type" + } + + "allow traversing from params TYPE to param" in { + val List(x) = cpg.typ("param_type").parameterOfType.l + x.name shouldBe "param" + } + + "allow traversing from local's TYPE to local" in { + val List(x) = cpg.typ("local_type").localOfType.l + x.name shouldBe "y" + } + } + + "handling C++ classes (code example 2)" should { + val cpg = code(""" | class foo : bar { | char x; | int y; @@ -73,67 +73,75 @@ class ClassTypeTests extends CCodeToCpgSuite(FileDefaults.CPP_EXT) { | | typedef int mytype;""".stripMargin) - "should contain a type decl for `foo` with correct fields" in { - val List(x) = cpg.typeDecl("foo").l - x.fullName shouldBe "foo" - x.isExternal shouldBe false - x.inheritsFromTypeFullName shouldBe List("bar") - x.aliasTypeFullName shouldBe None - x.order shouldBe 1 - x.filename shouldBe "Test0.cpp" - x.filename.endsWith(FileDefaults.CPP_EXT) shouldBe true - } - - "should contain type decl for alias `mytype` of `int`" in { - val List(x) = cpg.typeDecl("mytype").l - x.fullName shouldBe "mytype" - x.isExternal shouldBe false - x.inheritsFromTypeFullName shouldBe List() - x.aliasTypeFullName shouldBe Some("int") - x.code shouldBe "typedef int mytype;" - x.order shouldBe 2 - x.filename shouldBe "Test0.cpp" - x.filename.endsWith(FileDefaults.CPP_EXT) shouldBe true - } - - "should contain type decl for external type `int`" in { - val List(x) = cpg.typeDecl("int").l - x.fullName shouldBe "int" - x.isExternal shouldBe true - x.inheritsFromTypeFullName shouldBe List() - x.aliasTypeFullName shouldBe None - x.order shouldBe -1 - x.filename shouldBe "" - } - - "should find exactly 1 internal type" in { - cpg.typeDecl.nameNot(NamespaceTraversal.globalNamespaceName).internal.name.toSetMutable shouldBe Set("foo") - } - - "should find five external types (`bar`, `char`, `int`, `void`, `ANY`)" in { - cpg.typeDecl.external.name.toSetMutable shouldBe Set("bar", "char", "int", "void", "ANY") - } - - "should find two members for `foo`: `x` and `y`" in { - cpg.typeDecl.name("foo").member.name.toSetMutable shouldBe Set("x", "y") - } - - "should allow traversing from `int` to its alias `mytype`" in { - cpg.typeDecl("int").aliasTypeDecl.name.l shouldBe List("mytype") - cpg.typeDecl("mytype").aliasTypeDecl.l shouldBe List() - } - - "should find one method in type `foo`" in { - cpg.typeDecl.name("foo").method.name.toSetMutable shouldBe Set("method") - } - - "should allow traversing from type to enclosing file" in { - cpg.typeDecl.file.filter(_.name.endsWith(FileDefaults.CPP_EXT)).l should not be empty - } - "handling C++ classes (code example 3)" should { - "generate correct call fullnames" in { - val cpg = code( - """ + "should contain a type decl for `foo` with correct fields" in { + val List(x) = cpg.typeDecl("foo").l + x.fullName shouldBe "foo" + x.isExternal shouldBe false + x.inheritsFromTypeFullName shouldBe List("bar") + x.aliasTypeFullName shouldBe None + x.order shouldBe 1 + x.filename shouldBe "Test0.cpp" + x.filename.endsWith(FileDefaults.CPP_EXT) shouldBe true + } + + "should contain type decl for alias `mytype` of `int`" in { + val List(x) = cpg.typeDecl("mytype").l + x.fullName shouldBe "mytype" + x.isExternal shouldBe false + x.inheritsFromTypeFullName shouldBe List() + x.aliasTypeFullName shouldBe Some("int") + x.code shouldBe "typedef int mytype;" + x.order shouldBe 2 + x.filename shouldBe "Test0.cpp" + x.filename.endsWith(FileDefaults.CPP_EXT) shouldBe true + } + + "should contain type decl for external type `int`" in { + val List(x) = cpg.typeDecl("int").l + x.fullName shouldBe "int" + x.isExternal shouldBe true + x.inheritsFromTypeFullName shouldBe List() + x.aliasTypeFullName shouldBe None + x.order shouldBe -1 + x.filename shouldBe "" + } + + "should find exactly 1 internal type" in { + cpg.typeDecl.nameNot( + NamespaceTraversal.globalNamespaceName + ).internal.name.toSetMutable shouldBe Set("foo") + } + + "should find five external types (`bar`, `char`, `int`, `void`, `ANY`)" in { + cpg.typeDecl.external.name.toSetMutable shouldBe Set( + "bar", + "char", + "int", + "void", + "ANY" + ) + } + + "should find two members for `foo`: `x` and `y`" in { + cpg.typeDecl.name("foo").member.name.toSetMutable shouldBe Set("x", "y") + } + + "should allow traversing from `int` to its alias `mytype`" in { + cpg.typeDecl("int").aliasTypeDecl.name.l shouldBe List("mytype") + cpg.typeDecl("mytype").aliasTypeDecl.l shouldBe List() + } + + "should find one method in type `foo`" in { + cpg.typeDecl.name("foo").method.name.toSetMutable shouldBe Set("method") + } + + "should allow traversing from type to enclosing file" in { + cpg.typeDecl.file.filter(_.name.endsWith(FileDefaults.CPP_EXT)).l should not be empty + } + "handling C++ classes (code example 3)" should { + "generate correct call fullnames" in { + val cpg = code( + """ |class B { |public: | void foo2() {} @@ -153,11 +161,31 @@ class ClassTypeTests extends CCodeToCpgSuite(FileDefaults.CPP_EXT) { | A a; | a.foo1(); | return 0; - |}""".stripMargin) - cpg.call("foo1").methodFullName.toSetMutable shouldBe Set("A.foo1") - cpg.call("foo2").methodFullName.toSetMutable shouldBe Set("B.foo2") - } - } - } - -} + |}""".stripMargin + ) + cpg.call("foo1").methodFullName.toSetMutable shouldBe Set("A.foo1") + cpg.call("foo2").methodFullName.toSetMutable shouldBe Set("B.foo2") + } + } + + "handling C++ class constructors" should { + "generate correct types" in { + val cpg = code( + """ + |class FooT : public Foo { + | public: + | FooT( + | const std::string& a, + | const Bar::SomeClass& b + | ): Bar::Foo(a, b) {} + |}""".stripMargin + ) + val List(constructor) = cpg.typeDecl.nameExact("FooT").method.isConstructor.l + constructor.signature shouldBe "Bar.Foo FooT.FooT (std.string,Bar.SomeClass)" + val List(p1, p2) = constructor.parameter.l + p1.typ.fullName shouldBe "std.string" + p2.typ.fullName shouldBe "Bar.SomeClass" + } + } + } +end ClassTypeTests diff --git a/platform/frontends/c2cpg/src/test/scala/io/appthreat/c2cpg/passes/types/NamespaceTypeTests.scala b/platform/frontends/c2cpg/src/test/scala/io/appthreat/c2cpg/passes/types/NamespaceTypeTests.scala index a7ba274d..dcb94d0f 100644 --- a/platform/frontends/c2cpg/src/test/scala/io/appthreat/c2cpg/passes/types/NamespaceTypeTests.scala +++ b/platform/frontends/c2cpg/src/test/scala/io/appthreat/c2cpg/passes/types/NamespaceTypeTests.scala @@ -371,35 +371,17 @@ class NamespaceTypeTests extends CCodeToCpgSuite(fileSuffix = FileDefaults.CPP_E finalClasses.name shouldBe "FinalClasses" finalClasses.fullName shouldBe "FinalClasses" } - inside(cpg.typ.name("A").derivedTypeTransitive.l) { case List(b1, c11, c12, b2, c21, c22, c23) => - b1.name shouldBe "B1" - b1.fullName shouldBe "IntermediateClasses.B1" - b1.typeDeclFullName shouldBe "IntermediateClasses.B1" - - c11.name shouldBe "C11" - c11.fullName shouldBe "FinalClasses.C11" - c11.typeDeclFullName shouldBe "FinalClasses.C11" - - c12.name shouldBe "C12" - c12.fullName shouldBe "FinalClasses.C12" - c12.typeDeclFullName shouldBe "FinalClasses.C12" - - b2.name shouldBe "B2" - b2.fullName shouldBe "IntermediateClasses.B2" - b2.typeDeclFullName shouldBe "IntermediateClasses.B2" - - c21.name shouldBe "C21" - c21.fullName shouldBe "FinalClasses.C21" - c21.typeDeclFullName shouldBe "FinalClasses.C21" - - c22.name shouldBe "C22" - c22.fullName shouldBe "FinalClasses.C22" - c22.typeDeclFullName shouldBe "FinalClasses.C22" - - c23.name shouldBe "C23" - c23.fullName shouldBe "FinalClasses.C23" - c23.typeDeclFullName shouldBe "FinalClasses.C23" - } + cpg.typ.name("A").derivedTypeTransitive.typeDeclFullName.sorted.l shouldBe List( + "FinalClasses.C11", + "FinalClasses.C12", + "FinalClasses.C21", + "FinalClasses.C22", + "FinalClasses.C23", + "IntermediateClasses.B1", + "IntermediateClasses.B1*", + "IntermediateClasses.B2", + "IntermediateClasses.B2*" + ) } } diff --git a/platform/frontends/javasrc2cpg/build.sbt b/platform/frontends/javasrc2cpg/build.sbt index 35fbba66..bf83efb5 100644 --- a/platform/frontends/javasrc2cpg/build.sbt +++ b/platform/frontends/javasrc2cpg/build.sbt @@ -4,10 +4,10 @@ dependsOn(Projects.dataflowengineoss, Projects.x2cpg % "compile->compile;test->t libraryDependencies ++= Seq( "io.appthreat" %% "cpg2" % Versions.cpg, - "com.github.javaparser" % "javaparser-symbol-solver-core" % "3.25.10", + "com.github.javaparser" % "javaparser-symbol-solver-core" % "3.26.1", "org.gradle" % "gradle-tooling-api" % Versions.gradleTooling, "org.scalatest" %% "scalatest" % Versions.scalatest % Test, - "org.projectlombok" % "lombok" % "1.18.32", + "org.projectlombok" % "lombok" % "1.18.34", "org.scala-lang.modules" %% "scala-parallel-collections" % "1.0.4", "org.scala-lang.modules" %% "scala-parser-combinators" % "2.4.0", "net.lingala.zip4j" % "zip4j" % "2.11.5" diff --git a/platform/frontends/javasrc2cpg/src/main/scala/io/appthreat/javasrc2cpg/JavaSrc2Cpg.scala b/platform/frontends/javasrc2cpg/src/main/scala/io/appthreat/javasrc2cpg/JavaSrc2Cpg.scala index 655bd2a3..e939aeff 100644 --- a/platform/frontends/javasrc2cpg/src/main/scala/io/appthreat/javasrc2cpg/JavaSrc2Cpg.scala +++ b/platform/frontends/javasrc2cpg/src/main/scala/io/appthreat/javasrc2cpg/JavaSrc2Cpg.scala @@ -14,7 +14,6 @@ import io.appthreat.x2cpg.X2CpgFrontend import io.shiftleft.codepropertygraph.Cpg import io.shiftleft.codepropertygraph.generated.Languages import io.shiftleft.passes.CpgPassBase -import org.slf4j.LoggerFactory import scala.jdk.CollectionConverters.* import scala.util.Try @@ -23,13 +22,12 @@ import scala.util.matching.Regex class JavaSrc2Cpg extends X2CpgFrontend[Config]: import JavaSrc2Cpg.* - private val logger = LoggerFactory.getLogger(this.getClass) - override def createCpg(config: Config): Try[Cpg] = withNewEmptyCpg(config.outputPath, config: Config) { (cpg, config) => new MetaDataPass(cpg, language, config.inputPath).createAndApply() val astCreationPass = new AstCreationPass(config, cpg) astCreationPass.createAndApply() + astCreationPass.clearJavaParserCaches() new ConfigFileCreationPass(cpg).createAndApply() if !config.skipTypeInfPass then TypeNodePass.withRegisteredTypes( @@ -41,7 +39,6 @@ class JavaSrc2Cpg extends X2CpgFrontend[Config]: object JavaSrc2Cpg: val language: String = Languages.JAVASRC - private val logger = LoggerFactory.getLogger(this.getClass) val sourceFileExtensions: Set[String] = Set(".java") diff --git a/platform/frontends/javasrc2cpg/src/main/scala/io/appthreat/javasrc2cpg/passes/AstCreationPass.scala b/platform/frontends/javasrc2cpg/src/main/scala/io/appthreat/javasrc2cpg/passes/AstCreationPass.scala index 7363c33d..036cf720 100644 --- a/platform/frontends/javasrc2cpg/src/main/scala/io/appthreat/javasrc2cpg/passes/AstCreationPass.scala +++ b/platform/frontends/javasrc2cpg/src/main/scala/io/appthreat/javasrc2cpg/passes/AstCreationPass.scala @@ -3,6 +3,7 @@ package io.appthreat.javasrc2cpg.passes import better.files.File import com.github.javaparser.ast.CompilationUnit import com.github.javaparser.symbolsolver.JavaSymbolSolver +import com.github.javaparser.symbolsolver.javaparsermodel.JavaParserFacade import com.github.javaparser.symbolsolver.resolution.typesolvers.{ JarTypeSolver, ReflectionTypeSolver @@ -26,7 +27,6 @@ class AstCreationPass(config: Config, cpg: Cpg, sourcesOverride: Option[List[Str extends ConcurrentWriterCpgPass[String](cpg): val global: Global = new Global() - private val logger = LoggerFactory.getLogger(classOf[AstCreationPass]) private val sourceFilenames = SourceParser.getSourceFilenames(config, sourcesOverride) @@ -52,7 +52,13 @@ class AstCreationPass(config: Config, cpg: Cpg, sourcesOverride: Option[List[Str ).createAst() ) - case None => logger.debug(s"Skipping AST creation for $filename") + case None => + + /** Clear JavaParser caches. Should only be invoked after we no longer need JavaParser, e.g. as + * soon as we've built the AST layer for all files. + */ + def clearJavaParserCaches(): Unit = + JavaParserFacade.clearInstances() private def initParserAndUtils( config: Config, @@ -69,10 +75,8 @@ class AstCreationPass(config: Config, cpg: Cpg, sourcesOverride: Option[List[Str DependencyResolver.getDependencies(Paths.get(inputPath)) match case Some(deps) => deps.toList case None => - logger.debug(s"Could not fetch dependencies for project at path $inputPath") List() else - logger.debug("dependency resolving disabled") List() private def createSymbolSolver( @@ -91,15 +95,9 @@ class AstCreationPass(config: Config, cpg: Cpg, sourcesOverride: Option[List[Str if javaHome != null && javaHome.nonEmpty then javaHome else System.getenv("JAVA_HOME") case (None, Some(jdkPath)) => - logger.debug( - s"Using JDK path from environment variable ${JavaSrcEnvVar.JdkPath.name} for JDK type information: $jdkPath" - ) jdkPath case (Some(jdkPath), _) => - logger.debug( - s"Using JDK path set with jdk-path option for JDK type information: $jdkPath" - ) jdkPath var jdkJarTypeSolver: JdkJarTypeSolver = null // native-image could have empty JAVA_HOME diff --git a/platform/frontends/javasrc2cpg/src/main/scala/io/appthreat/javasrc2cpg/util/SourceParser.scala b/platform/frontends/javasrc2cpg/src/main/scala/io/appthreat/javasrc2cpg/util/SourceParser.scala index 1b0b3fd4..a83936c5 100644 --- a/platform/frontends/javasrc2cpg/src/main/scala/io/appthreat/javasrc2cpg/util/SourceParser.scala +++ b/platform/frontends/javasrc2cpg/src/main/scala/io/appthreat/javasrc2cpg/util/SourceParser.scala @@ -9,7 +9,6 @@ import com.github.javaparser.ParserConfiguration.LanguageLevel import com.github.javaparser.ast.CompilationUnit import com.github.javaparser.ast.Node.Parsedness import io.appthreat.javasrc2cpg.{Config, JavaSrc2Cpg} -import org.slf4j.LoggerFactory import scala.collection.mutable import scala.jdk.CollectionConverters.* @@ -25,8 +24,6 @@ import scala.util.Success class SourceParser private (originalInputPath: Path, analysisRoot: Path, typesRoot: Path): - private val logger = LoggerFactory.getLogger(this.getClass) - /** Parse the given file into a JavaParser CompliationUnit that will be used for creating the * CPG AST. * @@ -70,24 +67,13 @@ class SourceParser private (originalInputPath: Path, analysisRoot: Path, typesRo .setStoreTokens(storeTokens) val parseResult = new JavaParser(javaParserConfig).parse(file.toJava) - parseResult.getProblems.asScala.toList match - case Nil => // Just carry on as usual - case problems => - logger.debug(s"Encountered problems while parsing file ${file.name}:") - problems.foreach { problem => - logger.debug(s"- ${problem.getMessage}") - } - parseResult.getResult.toScala match case Some(result) if result.getParsed == Parsedness.PARSED => Some(result) case _ => - logger.debug(s"Failed to parse file ${file.name}") None - end parse end SourceParser object SourceParser: - private val logger = LoggerFactory.getLogger(this.getClass) def apply(config: Config, hasLombokDependency: Boolean): SourceParser = val canonicalInputPath = File(config.inputPath).canonicalPath @@ -128,7 +114,6 @@ object SourceParser: if delombokDir.nonEmpty then Delombok.parseDelombokModeOption(delombokMode) match case Default if hasLombokDependency => - logger.debug(s"Analysing delomboked code as lombok dependency was found.") (delombokDir, delombokDir) case Default => (originalDir, originalDir) diff --git a/platform/frontends/jssrc2cpg/build.sbt b/platform/frontends/jssrc2cpg/build.sbt index 929934e6..62e3b675 100644 --- a/platform/frontends/jssrc2cpg/build.sbt +++ b/platform/frontends/jssrc2cpg/build.sbt @@ -20,7 +20,7 @@ astGenVersion := appProperties.value.getString("jssrc2cpg.astgen_version") libraryDependencies ++= Seq( "io.appthreat" %% "cpg2" % Versions.cpg, "com.lihaoyi" %% "upickle" % Versions.upickle, - "com.fasterxml.jackson.core" % "jackson-databind" % "2.17.0", + "com.fasterxml.jackson.core" % "jackson-databind" % "2.17.1", "com.typesafe" % "config" % "1.4.3", "com.michaelpollmeier" % "versionsort" % "1.0.11", "org.scalatest" %% "scalatest" % Versions.scalatest % Test diff --git a/platform/frontends/jssrc2cpg/src/main/scala/io/appthreat/jssrc2cpg/passes/JavaScriptTypeRecovery.scala b/platform/frontends/jssrc2cpg/src/main/scala/io/appthreat/jssrc2cpg/passes/JavaScriptTypeRecovery.scala index 8e16e4cf..a1d84109 100644 --- a/platform/frontends/jssrc2cpg/src/main/scala/io/appthreat/jssrc2cpg/passes/JavaScriptTypeRecovery.scala +++ b/platform/frontends/jssrc2cpg/src/main/scala/io/appthreat/jssrc2cpg/passes/JavaScriptTypeRecovery.scala @@ -36,6 +36,15 @@ private class RecoverForJavaScriptFile( state: XTypeRecoveryState ) extends RecoverForXCompilationUnit[File](cpg, cu, builder, state): + private lazy val exportedIdentifiers = cu.method + .nameExact(":program") + .flatMap(_._callViaContainsOut) + .nameExact(Operators.assignment) + .filter(_.code.startsWith("exports.*")) + .argument + .isIdentifier + .name + .toSet override protected val pathSep = ':' /** A heuristic method to determine if a call is a constructor or not. @@ -103,16 +112,6 @@ private class RecoverForJavaScriptFile( } end prepopulateSymbolTable - private lazy val exportedIdentifiers = cu.method - .nameExact(":program") - .flatMap(_._callViaContainsOut) - .nameExact(Operators.assignment) - .filter(_.code.startsWith("exports.*")) - .argument - .isIdentifier - .name - .toSet - override protected def isField(i: Identifier): Boolean = state.isFieldCache.getOrElseUpdate( i.id(), @@ -124,12 +123,15 @@ private class RecoverForJavaScriptFile( c: Call ): Set[String] = val constructorPaths = if c.methodFullName.endsWith(".alloc") then - def newChildren = - c.inAssignment.astSiblings.isCall.nameExact(".new").astChildren + val newOp = c.inAssignment.astSiblings.isCall.nameExact(".new").headOption + val newChildren = newOp.astChildren.l val possibleImportIdentifier = newChildren.isIdentifier.headOption match case Some(i) if GlobalBuiltins.builtins.contains(i.name) => Set(s"__ecma.${i.name}") - case Some(i) => symbolTable.get(i) - case None => Set.empty[String] + case Some(i) => + val typs = symbolTable.get(CallAlias(i.name, Option("this"))) + if typs.nonEmpty then newOp.foreach(symbolTable.put(_, typs)) + symbolTable.get(i) + case None => Set.empty[String] lazy val possibleConstructorPointer = newChildren.astChildren.isFieldIdentifier.map(f => CallAlias(f.canonicalName, Some("this")) diff --git a/platform/frontends/jssrc2cpg/src/test/scala/io/appthreat/jssrc2cpg/passes/TypeRecoveryPassTests.scala b/platform/frontends/jssrc2cpg/src/test/scala/io/appthreat/jssrc2cpg/passes/TypeRecoveryPassTests.scala index c01d3776..99609d10 100644 --- a/platform/frontends/jssrc2cpg/src/test/scala/io/appthreat/jssrc2cpg/passes/TypeRecoveryPassTests.scala +++ b/platform/frontends/jssrc2cpg/src/test/scala/io/appthreat/jssrc2cpg/passes/TypeRecoveryPassTests.scala @@ -3,12 +3,11 @@ package io.appthreat.jssrc2cpg.passes import io.appthreat.jssrc2cpg.testfixtures.DataFlowCodeToCpgSuite import io.appthreat.x2cpg.passes.frontend.ImportsPass.* import io.shiftleft.semanticcpg.language.* -import io.shiftleft.semanticcpg.language.NoResolve -class TypeRecoveryPassTests extends DataFlowCodeToCpgSuite { +class TypeRecoveryPassTests extends DataFlowCodeToCpgSuite: - "literals declared from built-in types" should { - val cpg = code(""" + "literals declared from built-in types" should { + val cpg = code(""" |let x = 123; | |function foo_shadowing() { @@ -21,20 +20,20 @@ class TypeRecoveryPassTests extends DataFlowCodeToCpgSuite { |z.push(4) |""".stripMargin) - "resolve 'z' types correctly" in { - // The dictionary/object type is just considered "ANY" which is fine for now - cpg.identifier("z").typeFullName.toSet.headOption shouldBe Some("__ecma.Array") - } + "resolve 'z' types correctly" in { + // The dictionary/object type is just considered "ANY" which is fine for now + cpg.identifier("z").typeFullName.toSet.headOption shouldBe Some("__ecma.Array") + } - "resolve 'z' identifier call correctly" in { - val List(zAppend) = cpg.call("push").l - zAppend.methodFullName shouldBe "__ecma.Array:push" + "resolve 'z' identifier call correctly" in { + val List(zAppend) = cpg.call("push").l + zAppend.methodFullName shouldBe "__ecma.Array:push" + } } - } - "call from a function from an external type" should { - val cpg = code( - """ + "call from a function from an external type" should { + val cpg = code( + """ |import { WebClient } from "slack_sdk"; |import { SendGridAPIClient } from "sendgrid"; | @@ -47,79 +46,79 @@ class TypeRecoveryPassTests extends DataFlowCodeToCpgSuite { | |let response = sg.send(message); |""".stripMargin, - "Test1.ts" - ) - - "resolve correct imports via tag nodes" in { - val List(a: UnknownMethod, b: UnknownTypeDecl, x: UnknownMethod, y: UnknownTypeDecl) = - cpg.call.where(_.referencedImports).tag.toResolvedImport.toList: @unchecked - a.fullName shouldBe "slack_sdk:WebClient" - b.fullName shouldBe "slack_sdk:WebClient" - x.fullName shouldBe "sendgrid:SendGridAPIClient" - y.fullName shouldBe "sendgrid:SendGridAPIClient" - } + "Test1.ts" + ) - "resolve 'sg' identifier types from import information" in { - val List(sg1, sg2, sg3) = cpg.identifier.nameExact("sg").l - sg1.typeFullName shouldBe "sendgrid:SendGridAPIClient" - sg2.typeFullName shouldBe "sendgrid:SendGridAPIClient" - sg3.typeFullName shouldBe "sendgrid:SendGridAPIClient" - } + "resolve correct imports via tag nodes" in { + val List(a: UnknownMethod, b: UnknownTypeDecl, x: UnknownMethod, y: UnknownTypeDecl) = + cpg.call.where(_.referencedImports).tag.toResolvedImport.toList: @unchecked + a.fullName shouldBe "slack_sdk:WebClient" + b.fullName shouldBe "slack_sdk:WebClient" + x.fullName shouldBe "sendgrid:SendGridAPIClient" + y.fullName shouldBe "sendgrid:SendGridAPIClient" + } - "resolve 'sg' call path from import information" in { - val List(sendCall) = cpg.call("send").l - sendCall.methodFullName shouldBe "sendgrid:SendGridAPIClient:send" - } + "resolve 'sg' identifier types from import information" in { + val List(sg1, sg2, sg3) = cpg.identifier.nameExact("sg").l + sg1.typeFullName shouldBe "sendgrid:SendGridAPIClient" + sg2.typeFullName shouldBe "sendgrid:SendGridAPIClient" + sg3.typeFullName shouldBe "sendgrid:SendGridAPIClient" + } - "resolve 'client' identifier types from import information" in { - val List(client1, client2, client3) = cpg.identifier.nameExact("client").l - client1.typeFullName shouldBe "slack_sdk:WebClient" - client2.typeFullName shouldBe "slack_sdk:WebClient" - client3.typeFullName shouldBe "slack_sdk:WebClient" - } + "resolve 'sg' call path from import information" in { + val List(sendCall) = cpg.call("send").l + sendCall.methodFullName shouldBe "sendgrid:SendGridAPIClient:send" + } - "resolve 'client' call path from identifier in child scope" in { - val List(postMessage) = cpg.call("chatPostMessage").l - postMessage.methodFullName shouldBe "slack_sdk:WebClient:chatPostMessage" - } + "resolve 'client' identifier types from import information" in { + val List(client1, client2, client3) = cpg.identifier.nameExact("client").l + client1.typeFullName shouldBe "slack_sdk:WebClient" + client2.typeFullName shouldBe "slack_sdk:WebClient" + client3.typeFullName shouldBe "slack_sdk:WebClient" + } - "resolve a dummy 'send' return value from sg.send" in { - val List(postMessage) = cpg.identifier("response").l - postMessage.typeFullName shouldBe "sendgrid:SendGridAPIClient:send:" - } + "resolve 'client' call path from identifier in child scope" in { + val List(postMessage) = cpg.call("chatPostMessage").l + postMessage.methodFullName shouldBe "slack_sdk:WebClient:chatPostMessage" + } - } + "resolve a dummy 'send' return value from sg.send" in { + val List(postMessage) = cpg.identifier("response").l + postMessage.typeFullName shouldBe "sendgrid:SendGridAPIClient:send:" + } + + } - "recovering paths for built-in calls" should { - val cpg = code(""" + "recovering paths for built-in calls" should { + val cpg = code(""" |console.log("Hello world"); |let x = Math.abs(-1); |""".stripMargin) - "resolve 'print' and 'max' calls" in { - val List(printCall) = cpg.call("log").l - printCall.methodFullName shouldBe "__whatwg.console:log" - val List(maxCall) = cpg.call("abs").l - maxCall.methodFullName shouldBe "__ecma.Math:abs" - val List(x) = cpg.identifier("x").l - // TODO: Ideally we would know the result of `abs` but this can be a future task - x.typeFullName shouldBe "__ecma.Math:abs:" - } + "resolve 'print' and 'max' calls" in { + val List(printCall) = cpg.call("log").l + printCall.methodFullName shouldBe "__whatwg.console:log" + val List(maxCall) = cpg.call("abs").l + maxCall.methodFullName shouldBe "__ecma.Math:abs" + val List(x) = cpg.identifier("x").l + // TODO: Ideally we would know the result of `abs` but this can be a future task + x.typeFullName shouldBe "__ecma.Math:abs:" + } - } + } - "recovering module members across modules" should { - val cpg = code( - """ + "recovering module members across modules" should { + val cpg = code( + """ |import { SQLAlchemy } from "flask_sqlalchemy"; | |export const x = 1; |export const y = "test"; |export const db = new SQLAlchemy(); |""".stripMargin, - "Foo.ts" - ).moreCode( - """ + "Foo.ts" + ).moreCode( + """ |import { x, y, db } from './Foo'; | |let z = x; @@ -131,74 +130,86 @@ class TypeRecoveryPassTests extends DataFlowCodeToCpgSuite { | |db.deleteTable(); |""".stripMargin, - "Bar.ts" - ) - - "resolve correct imports via tag nodes" in { - val List(a: ResolvedMember, b: ResolvedMember, c: ResolvedMember, d: UnknownMethod, e: UnknownTypeDecl) = - cpg.call.where(_.referencedImports).tag.toResolvedImport.toList: @unchecked - a.basePath shouldBe "Foo.ts::program" - a.memberName shouldBe "x" - b.basePath shouldBe "Foo.ts::program" - b.memberName shouldBe "y" - c.basePath shouldBe "Foo.ts::program" - c.memberName shouldBe "db" - d.fullName shouldBe "flask_sqlalchemy:SQLAlchemy" - e.fullName shouldBe "flask_sqlalchemy:SQLAlchemy" - } + "Bar.ts" + ) - "resolve 'x' and 'y' locally under Foo.ts" in { - val List(x1, x2) = cpg.file.name(".*Foo.*").ast.isIdentifier.nameExact("x").l - x1.typeFullName shouldBe "__ecma.Number" - x2.typeFullName shouldBe "__ecma.Number" - val List(y1, y2) = cpg.file.name(".*Foo.*").ast.isIdentifier.nameExact("y").l - y1.typeFullName shouldBe "__ecma.String" - y2.typeFullName shouldBe "__ecma.String" - val List(db1, db2) = cpg.file.name(".*Foo.*").ast.isIdentifier.nameExact("db").l - db1.typeFullName shouldBe "flask_sqlalchemy:SQLAlchemy" - db2.typeFullName shouldBe "flask_sqlalchemy:SQLAlchemy" - } + "resolve correct imports via tag nodes" in { + val List( + a: ResolvedMember, + b: ResolvedMember, + c: ResolvedMember, + d: UnknownMethod, + e: UnknownTypeDecl + ) = + cpg.call.where(_.referencedImports).tag.toResolvedImport.toList: @unchecked + a.basePath shouldBe "Foo.ts::program" + a.memberName shouldBe "x" + b.basePath shouldBe "Foo.ts::program" + b.memberName shouldBe "y" + c.basePath shouldBe "Foo.ts::program" + c.memberName shouldBe "db" + d.fullName shouldBe "flask_sqlalchemy:SQLAlchemy" + e.fullName shouldBe "flask_sqlalchemy:SQLAlchemy" + } - "resolve 'foo.x' and 'foo.y' field access primitive types correctly" in { - val List(z1, z2) = cpg.file.name(".*Bar.*").ast.isIdentifier.nameExact("z").l - z1.typeFullName shouldBe "__ecma.String" - z1.dynamicTypeHintFullName shouldBe Seq("__ecma.Number") - z2.typeFullName shouldBe "__ecma.String" - z2.dynamicTypeHintFullName shouldBe Seq("__ecma.Number") - } + "resolve 'x' and 'y' locally under Foo.ts" in { + val List(x1, x2) = cpg.file.name(".*Foo.*").ast.isIdentifier.nameExact("x").l + x1.typeFullName shouldBe "__ecma.Number" + x2.typeFullName shouldBe "__ecma.Number" + val List(y1, y2) = cpg.file.name(".*Foo.*").ast.isIdentifier.nameExact("y").l + y1.typeFullName shouldBe "__ecma.String" + y2.typeFullName shouldBe "__ecma.String" + val List(db1, db2) = cpg.file.name(".*Foo.*").ast.isIdentifier.nameExact("db").l + db1.typeFullName shouldBe "flask_sqlalchemy:SQLAlchemy" + db2.typeFullName shouldBe "flask_sqlalchemy:SQLAlchemy" + } - "resolve 'foo.d' field access object types correctly" in { - val List(d1, d2, d3) = cpg.file.name(".*Bar.*").ast.isIdentifier.nameExact("d").l - d1.typeFullName shouldBe "flask_sqlalchemy:SQLAlchemy" - d1.dynamicTypeHintFullName shouldBe Seq() - d2.typeFullName shouldBe "flask_sqlalchemy:SQLAlchemy" - d2.dynamicTypeHintFullName shouldBe Seq() - d3.typeFullName shouldBe "flask_sqlalchemy:SQLAlchemy" - d3.dynamicTypeHintFullName shouldBe Seq() - } + "resolve 'foo.x' and 'foo.y' field access primitive types correctly" in { + val List(z1, z2) = cpg.file.name(".*Bar.*").ast.isIdentifier.nameExact("z").l + z1.typeFullName shouldBe "__ecma.String" + z1.dynamicTypeHintFullName shouldBe Seq("__ecma.Number") + z2.typeFullName shouldBe "__ecma.String" + z2.dynamicTypeHintFullName shouldBe Seq("__ecma.Number") + } - "resolve a 'createTable' call indirectly from 'foo.d' field access correctly" in { - val List(d) = cpg.file.name(".*Bar.*").ast.isCall.name("createTable").l - d.dynamicTypeHintFullName shouldBe Seq("d.createTable", "flask_sqlalchemy:SQLAlchemy:createTable") - d.callee(NoResolve).isExternal.headOption shouldBe Some(true) - } + "resolve 'foo.d' field access object types correctly" in { + val List(d1, d2, d3) = cpg.file.name(".*Bar.*").ast.isIdentifier.nameExact("d").l + d1.typeFullName shouldBe "flask_sqlalchemy:SQLAlchemy" + d1.dynamicTypeHintFullName shouldBe Seq() + d2.typeFullName shouldBe "flask_sqlalchemy:SQLAlchemy" + d2.dynamicTypeHintFullName shouldBe Seq() + d3.typeFullName shouldBe "flask_sqlalchemy:SQLAlchemy" + d3.dynamicTypeHintFullName shouldBe Seq() + } - "resolve a 'deleteTable' call directly from 'foo.db' field access correctly" in { - val List(d) = cpg.file - .name(".*Bar.*") - .ast - .isCall - .name("deleteTable") - .l - d.dynamicTypeHintFullName shouldBe Seq("db.deleteTable", "flask_sqlalchemy:SQLAlchemy:deleteTable") - d.callee(NoResolve).isExternal.headOption shouldBe Some(true) - } + "resolve a 'createTable' call indirectly from 'foo.d' field access correctly" in { + val List(d) = cpg.file.name(".*Bar.*").ast.isCall.name("createTable").l + d.dynamicTypeHintFullName shouldBe Seq( + "d.createTable", + "flask_sqlalchemy:SQLAlchemy:createTable" + ) + d.callee(NoResolve).isExternal.headOption shouldBe Some(true) + } - } + "resolve a 'deleteTable' call directly from 'foo.db' field access correctly" in { + val List(d) = cpg.file + .name(".*Bar.*") + .ast + .isCall + .name("deleteTable") + .l + d.dynamicTypeHintFullName shouldBe Seq( + "db.deleteTable", + "flask_sqlalchemy:SQLAlchemy:deleteTable" + ) + d.callee(NoResolve).isExternal.headOption shouldBe Some(true) + } + + } - "Importing an anonymous function" should { - val cpg = code( - """ + "Importing an anonymous function" should { + val cpg = code( + """ |var refThis = this; | |exports.getIncrementalInteger = (function() { @@ -211,79 +222,80 @@ class TypeRecoveryPassTests extends DataFlowCodeToCpgSuite { | |refThis.getIncrementalInteger(); |""".stripMargin, - "util.js" - ).moreCode( - """ + "util.js" + ).moreCode( + """ |var util = require("./util.js"); | |util.getIncrementalInteger() |""".stripMargin, - "foo.js" - ) + "foo.js" + ) - "resolve correct imports via tag nodes" in { - val List(x: ResolvedMethod) = cpg.call.where(_.referencedImports).tag.toResolvedImport.toList: @unchecked - x.fullName shouldBe "util.js::program:getIncrementalInteger" - } + "resolve correct imports via tag nodes" in { + val List(x: ResolvedMethod) = + cpg.call.where(_.referencedImports).tag.toResolvedImport.toList: @unchecked + x.fullName shouldBe "util.js::program:getIncrementalInteger" + } - "resolve the method full name off of an aliased 'this'" in { - val List(x) = cpg.file("util.js").ast.isCall.nameExact("getIncrementalInteger").l - x.methodFullName shouldBe "util.js::program:getIncrementalInteger" - } + "resolve the method full name off of an aliased 'this'" in { + val List(x) = cpg.file("util.js").ast.isCall.nameExact("getIncrementalInteger").l + x.methodFullName shouldBe "util.js::program:getIncrementalInteger" + } - "resolve the full name of the currying from the closure" in { - val List(x) = cpg.file("util.js").ast.isCall.nameExact("anonymous").lineNumber(4).l - x.name shouldBe "anonymous" - x.methodFullName shouldBe "util.js::program:anonymous" + "resolve the full name of the currying from the closure" in { + val List(x) = cpg.file("util.js").ast.isCall.nameExact("anonymous").lineNumber(4).l + x.name shouldBe "anonymous" + x.methodFullName shouldBe "util.js::program:anonymous" + } } - } - "Type obtained via assignment from `require`" should { - val cpg = code(""" + "Type obtained via assignment from `require`" should { + val cpg = code(""" |const google = require('googleapis'); |const driveObj = google.drive({ version: 'v3', auth }); |""".stripMargin) - "resolve correct imports via tag nodes" in { - val List(x: UnknownMethod, y: UnknownTypeDecl) = - cpg.call.where(_.referencedImports).tag.toResolvedImport.toList: @unchecked - x.fullName shouldBe "googleapis" - y.fullName shouldBe "googleapis" - } + "resolve correct imports via tag nodes" in { + val List(x: UnknownMethod, y: UnknownTypeDecl) = + cpg.call.where(_.referencedImports).tag.toResolvedImport.toList: @unchecked + x.fullName shouldBe "googleapis" + y.fullName shouldBe "googleapis" + } - "be propagated to `methodFullName` of call" in { - val List(methodFullName) = cpg.call.code("google.drive\\(.*").methodFullName.l - methodFullName shouldBe "googleapis:drive" - val List(typeFullName) = cpg.identifier.name("driveObj").typeFullName.l - typeFullName shouldBe "googleapis:drive:" - } + "be propagated to `methodFullName` of call" in { + val List(methodFullName) = cpg.call.code("google.drive\\(.*").methodFullName.l + methodFullName shouldBe "googleapis:drive" + val List(typeFullName) = cpg.identifier.name("driveObj").typeFullName.l + typeFullName shouldBe "googleapis:drive:" + } - } + } - "Type obtained via assignment from `require` to {...}" should { - val cpg = code(""" + "Type obtained via assignment from `require` to {...}" should { + val cpg = code(""" |const { google } = require('googleapis'); |const driveObj = google.drive({ version: 'v3', auth }); |""".stripMargin) - "resolve correct imports via tag nodes" in { - val List(x: UnknownMethod, y: UnknownTypeDecl, z: UnknownMethod) = - cpg.call.where(_.referencedImports).tag.toResolvedImport.toList: @unchecked - x.fullName shouldBe "googleapis" - y.fullName shouldBe "googleapis" - z.fullName shouldBe "googleapis" - } + "resolve correct imports via tag nodes" in { + val List(x: UnknownMethod, y: UnknownTypeDecl, z: UnknownMethod) = + cpg.call.where(_.referencedImports).tag.toResolvedImport.toList: @unchecked + x.fullName shouldBe "googleapis" + y.fullName shouldBe "googleapis" + z.fullName shouldBe "googleapis" + } - "be propagated to `methodFullName` of call" in { - val List(methodFullName) = cpg.call.code("google.drive\\(.*").methodFullName.l - methodFullName shouldBe "googleapis:drive" - val List(typeFullName) = cpg.identifier.name("driveObj").typeFullName.l - typeFullName shouldBe "googleapis:drive:" + "be propagated to `methodFullName` of call" in { + val List(methodFullName) = cpg.call.code("google.drive\\(.*").methodFullName.l + methodFullName shouldBe "googleapis:drive" + val List(typeFullName) = cpg.identifier.name("driveObj").typeFullName.l + typeFullName shouldBe "googleapis:drive:" + } } - } - "Type obtained via field access from 'require' derived identifier" should { - val cpg = code(""" + "Type obtained via field access from 'require' derived identifier" should { + val cpg = code(""" |import google from 'googleapis'; |export const authObj = new google.auth.GoogleAuth({ | keyFile: 'path/to/your/credentials.json', @@ -291,35 +303,35 @@ class TypeRecoveryPassTests extends DataFlowCodeToCpgSuite { |}); |""".stripMargin) - "be propagated to `methodFullName` of call" in { - val List(constructor) = cpg.call.code("new google.auth.GoogleAuth\\(.*").l - constructor.methodFullName shouldBe "googleapis:google:(auth):GoogleAuth:" - val List(authObj1, authObj2) = cpg.identifier.name("authObj").l - authObj1.typeFullName shouldBe "googleapis:google:(auth):GoogleAuth" - authObj2.typeFullName shouldBe "googleapis:google:(auth):GoogleAuth" + "be propagated to `methodFullName` of call" in { + val List(constructor) = cpg.call.code("new google.auth.GoogleAuth\\(.*").l + constructor.methodFullName shouldBe "googleapis:google:(auth):GoogleAuth:" + val List(authObj1, authObj2) = cpg.identifier.name("authObj").l + authObj1.typeFullName shouldBe "googleapis:google:(auth):GoogleAuth" + authObj2.typeFullName shouldBe "googleapis:google:(auth):GoogleAuth" + } } - } - "Type casts of an identifier and call receiver" should { - val cpg = code(""" + "Type casts of an identifier and call receiver" should { + val cpg = code(""" |let imgScr: string = this.imageElement; |this.imageElement = new HTMLImageElement(); |(this.imageElement).src = imgScr; |""".stripMargin) - "succeed in propagating type cast identifiers" in { - val List(imgSrc1, imgSrc2) = cpg.identifier("imgScr").l - imgSrc1.typeFullName shouldBe "__ecma.String" - imgSrc2.typeFullName shouldBe "__ecma.String" - val List(tmp1, tmp2, tmp3) = cpg.identifier("_tmp_0").l - tmp1.typeFullName shouldBe "__ecma.HTMLImageElement" - tmp2.typeFullName shouldBe "__ecma.HTMLImageElement" - tmp3.typeFullName shouldBe "__ecma.HTMLImageElement" + "succeed in propagating type cast identifiers" in { + val List(imgSrc1, imgSrc2) = cpg.identifier("imgScr").l + imgSrc1.typeFullName shouldBe "__ecma.String" + imgSrc2.typeFullName shouldBe "__ecma.String" + val List(tmp1, tmp2, tmp3) = cpg.identifier("_tmp_0").l + tmp1.typeFullName shouldBe "__ecma.HTMLImageElement" + tmp2.typeFullName shouldBe "__ecma.HTMLImageElement" + tmp3.typeFullName shouldBe "__ecma.HTMLImageElement" + } } - } - "Type hints for method parameters and returns" should { - val cpg = code(""" + "Type hints for method parameters and returns" should { + val cpg = code(""" |import google from 'googleapis'; | |function foo(a: google.More, b: google.Money): google.Problems { @@ -328,19 +340,19 @@ class TypeRecoveryPassTests extends DataFlowCodeToCpgSuite { |} |""".stripMargin) - "be propagated within the method full name reflecting the import `googleapis`" in { - val List(bar) = cpg.call("bar").l - bar.methodFullName shouldBe "googleapis:google:More:bar" - val List(baz) = cpg.call("baz").l - baz.methodFullName shouldBe "googleapis:google:Money:baz" - val List(foo) = cpg.method("foo").methodReturn.l - foo.typeFullName shouldBe "googleapis:google:Problems" + "be propagated within the method full name reflecting the import `googleapis`" in { + val List(bar) = cpg.call("bar").l + bar.methodFullName shouldBe "googleapis:google:More:bar" + val List(baz) = cpg.call("baz").l + baz.methodFullName shouldBe "googleapis:google:Money:baz" + val List(foo) = cpg.method("foo").methodReturn.l + foo.typeFullName shouldBe "googleapis:google:Problems" + } } - } - "Recovered values that are returned in methods" should { - val cpg = code( - """ + "Recovered values that are returned in methods" should { + val cpg = code( + """ |const axios = require("axios"); | |exports.literalFunction = function() { return 2; }; @@ -356,50 +368,56 @@ class TypeRecoveryPassTests extends DataFlowCodeToCpgSuite { |}; | |""".stripMargin, - "foo.js" - ).moreCode( - """ + "foo.js" + ).moreCode( + """ |const foo = require("./foo"); | |const x = foo.literalFunction(); |const y = foo.get(); |""".stripMargin, - "bar.js" - ) - - "resolve correct imports via tag nodes" in { - val List(a: ResolvedTypeDecl, b: ResolvedMethod, c: ResolvedMethod, d: UnknownMethod, e: UnknownTypeDecl) = - cpg.call.where(_.referencedImports).tag.toResolvedImport.toList: @unchecked - a.fullName shouldBe "foo.js::program" - b.fullName shouldBe "foo.js::program:literalFunction" - c.fullName shouldBe "foo.js::program:get" - d.fullName shouldBe "axios" - e.fullName shouldBe "axios" + "bar.js" + ) - } + "resolve correct imports via tag nodes" in { + val List( + a: ResolvedTypeDecl, + b: ResolvedMethod, + c: ResolvedMethod, + d: UnknownMethod, + e: UnknownTypeDecl + ) = + cpg.call.where(_.referencedImports).tag.toResolvedImport.toList: @unchecked + a.fullName shouldBe "foo.js::program" + b.fullName shouldBe "foo.js::program:literalFunction" + c.fullName shouldBe "foo.js::program:get" + d.fullName shouldBe "axios" + e.fullName shouldBe "axios" - "propagate literal types to the method return" in { - val List(literalMethod) = cpg.method.nameExact("literalFunction").l - literalMethod.methodReturn.typeFullName shouldBe "__ecma.Number" - val List(x) = cpg.identifier("x").l - x.typeFullName shouldBe "__ecma.Number" - val List(literalCall) = cpg.call.nameExact("literalFunction").l - literalCall.typeFullName shouldBe "__ecma.Number" - } + } - "propagate complex types to the method return" in { - val List(getMethod) = cpg.method.nameExact("get").lineNumber(12).l - getMethod.methodReturn.typeFullName shouldBe "axios:create::get:" - val List(y) = cpg.identifier("y").l - y.typeFullName shouldBe "axios:create::get:" - val List(getCall) = cpg.call.nameExact("get").lineNumber(5).l - getCall.typeFullName shouldBe "axios:create::get:" + "propagate literal types to the method return" in { + val List(literalMethod) = cpg.method.nameExact("literalFunction").l + literalMethod.methodReturn.typeFullName shouldBe "__ecma.Number" + val List(x) = cpg.identifier("x").l + x.typeFullName shouldBe "__ecma.Number" + val List(literalCall) = cpg.call.nameExact("literalFunction").l + literalCall.typeFullName shouldBe "__ecma.Number" + } + + "propagate complex types to the method return" in { + val List(getMethod) = cpg.method.nameExact("get").lineNumber(12).l + getMethod.methodReturn.typeFullName shouldBe "axios:create::get:" + val List(y) = cpg.identifier("y").l + y.typeFullName shouldBe "axios:create::get:" + val List(getCall) = cpg.call.nameExact("get").lineNumber(5).l + getCall.typeFullName shouldBe "axios:create::get:" + } } - } - "Temporary variables inserted to produce a three-address code structure" should { - val cpg = code( - """ + "Temporary variables inserted to produce a three-address code structure" should { + val cpg = code( + """ |import { HttpClient } from '@angular/common/http'; | |@Injectable({ @@ -412,20 +430,24 @@ class TypeRecoveryPassTests extends DataFlowCodeToCpgSuite { | } |} |""".stripMargin, - "foo.ts" - ) + "foo.ts" + ) - "have their calls from a field access structure successfully recovered" in { - cpg.identifier("_tmp_2").typeFullName.headOption shouldBe Some("@angular/common/http:HttpClient") - cpg.call("post").methodFullName.headOption shouldBe Some("@angular/common/http:HttpClient:post") - } + "have their calls from a field access structure successfully recovered" in { + cpg.identifier("_tmp_2").typeFullName.headOption shouldBe Some( + "@angular/common/http:HttpClient" + ) + cpg.call("post").methodFullName.headOption shouldBe Some( + "@angular/common/http:HttpClient:post" + ) + } - } + } - "Members initialized from constructors where the parameter has a type hint" should { + "Members initialized from constructors where the parameter has a type hint" should { - val cpg = code( - """ + val cpg = code( + """ |import { HttpClient } from '@angular/common/http'; | |@Injectable({ @@ -440,21 +462,63 @@ class TypeRecoveryPassTests extends DataFlowCodeToCpgSuite { | } |} |""".stripMargin, - "foo.ts" - ) + "foo.ts" + ) + + "have the type hint recovered and successfully propagated" in { + val m = cpg.method.fullNameExact("foo.ts::program:SharedService:").head + m.parameter.nameExact("http").typeFullName.headOption shouldBe Some( + "@angular/common/http:HttpClient" + ) + cpg.call("post").methodFullName.headOption shouldBe Some( + "@angular/common/http:HttpClient:post" + ) + } + + } + + "resolve a function full name called as a constructor" in { + val cpg = code( + """ + |var Print = function(str) { + | console.log(str); + |} + | + |new Print("Hello") + |""".stripMargin + ) - "have the type hint recovered and successfully propagated" in { - val m = cpg.method.fullNameExact("foo.ts::program:SharedService:").head - m.parameter.nameExact("http").typeFullName.headOption shouldBe Some("@angular/common/http:HttpClient") - cpg.call("post").methodFullName.headOption shouldBe Some("@angular/common/http:HttpClient:post") + cpg.call.nameExact(".new").methodFullName.head shouldBe "Test0.js::program:Print" } - } + "A function assigned to a member should have it's full name resolved" in { + val cpg = code( + """ + |var foo = {}; + | + |foo.bar = {}; + | + |foo.bar.evaluator = function evaluator (src) { + | eval(src); + |}; + | + |foo.bar.getGlobals = function getGlobals (src) { + | "use strict"; + | var original = Object.keys(global); + | foo.bar.evaluator(src); + |}; + |""".stripMargin + ) + + cpg.call( + "evaluator" + ).methodFullName.head shouldBe "foo:bar::(bar):evaluator" + } "Default exports with calls" should { val cpg = code( - """ + """ |const logger = require('./logger'); | |function a(){ @@ -463,13 +527,14 @@ class TypeRecoveryPassTests extends DataFlowCodeToCpgSuite { | |a(); |""".stripMargin, - "app.js" + "app.js" ).moreCode( """ |const pino = require('pino'); | |module.exports = pino({}); - |""".stripMargin, "logger.js" + |""".stripMargin, + "logger.js" ) "have the correct method full name" in { @@ -477,5 +542,4 @@ class TypeRecoveryPassTests extends DataFlowCodeToCpgSuite { } } - -} +end TypeRecoveryPassTests diff --git a/platform/frontends/pysrc2cpg/src/main/scala/io/appthreat/pysrc2cpg/PythonAstVisitor.scala b/platform/frontends/pysrc2cpg/src/main/scala/io/appthreat/pysrc2cpg/PythonAstVisitor.scala index f39a8d34..8e62fb05 100644 --- a/platform/frontends/pysrc2cpg/src/main/scala/io/appthreat/pysrc2cpg/PythonAstVisitor.scala +++ b/platform/frontends/pysrc2cpg/src/main/scala/io/appthreat/pysrc2cpg/PythonAstVisitor.scala @@ -12,7 +12,7 @@ import io.appthreat.pythonparser.ast import io.appthreat.pysrc2cpg.memop.* import io.appthreat.x2cpg.ValidationMode import io.shiftleft.codepropertygraph.generated.* -import io.shiftleft.codepropertygraph.generated.nodes.{NewNode, NewTypeDecl} +import io.shiftleft.codepropertygraph.generated.nodes.{NewCall, NewIdentifier, NewNode, NewTypeDecl} import overflowdb.BatchedUpdate.DiffGraphBuilder import scala.collection.mutable @@ -243,7 +243,7 @@ class PythonAstVisitor( * The lowering is: * func = f1(arg)(f2(func)) * - * This function takes a method ref, wrappes it in the decorator calls and returns the resulting expression. + * This function takes a method ref, wraps it in the decorator calls and returns the resulting expression. * In the example case this is: * f1(arg)(f2(func)) */ @@ -253,9 +253,13 @@ class PythonAstVisitor( ): nodes.NewNode = decoratorList.foldRight(methodRefNode)( (decorator: ast.iexpr, wrappedMethodRef: nodes.NewNode) => + val (decoratorNode, decoratorName) = convert(decorator) match + case decoratorNode: NewIdentifier => decoratorNode -> decoratorNode.name + case decoratorNode => + decoratorNode -> "" // other decorators are dynamic so we leave this blank createCall( - convert(decorator), - "", + decoratorNode, + decoratorName, lineAndColOf(decorator), wrappedMethodRef :: Nil, Nil diff --git a/platform/frontends/pysrc2cpg/src/main/scala/io/appthreat/pysrc2cpg/PythonTypeRecovery.scala b/platform/frontends/pysrc2cpg/src/main/scala/io/appthreat/pysrc2cpg/PythonTypeRecovery.scala index 17ab2a3f..187aff15 100644 --- a/platform/frontends/pysrc2cpg/src/main/scala/io/appthreat/pysrc2cpg/PythonTypeRecovery.scala +++ b/platform/frontends/pysrc2cpg/src/main/scala/io/appthreat/pysrc2cpg/PythonTypeRecovery.scala @@ -6,7 +6,7 @@ import io.shiftleft.codepropertygraph.generated.nodes.* import io.shiftleft.codepropertygraph.generated.{Operators, PropertyNames} import io.shiftleft.semanticcpg.language.* import io.shiftleft.semanticcpg.language.operatorextension.OpNodes -import OpNodes.FieldAccess +import io.shiftleft.semanticcpg.language.operatorextension.OpNodes.FieldAccess import overflowdb.BatchedUpdate.DiffGraphBuilder class PythonTypeRecoveryPass(cpg: Cpg, config: XTypeRecoveryConfig = XTypeRecoveryConfig()) @@ -38,14 +38,6 @@ private class RecoverForPythonFile( state: XTypeRecoveryState ) extends RecoverForXCompilationUnit[File](cpg, cu, builder, state): - /** Replaces the `this` prefix with the Pythonic `self` prefix for instance methods of functions - * local to this compilation unit. - */ - private def fromNodeToLocalPythonKey(node: AstNode): Option[LocalKey] = - node match - case n: Method => Option(CallAlias(n.name, Option("self"))) - case _ => SBKey.fromNodeToLocalKey(node) - override val symbolTable: SymbolTable[LocalKey] = new SymbolTable[LocalKey](fromNodeToLocalPythonKey) @@ -92,9 +84,6 @@ private class RecoverForPythonFile( override def isConstructor(c: Call): Boolean = isConstructor(c.name) && c.code.endsWith(")") - override protected def isConstructor(name: String): Boolean = - name.nonEmpty && name.charAt(0).isUpper - /** If the parent method is module then it can be used as a field. */ override def isField(i: Identifier): Boolean = @@ -119,6 +108,9 @@ private class RecoverForPythonFile( associateTypes(i, Set(s"${PythonAstVisitor.builtinPrefix}set")) case Operators.conditional => associateTypes(i, Set(s"${PythonAstVisitor.builtinPrefix}bool")) + case Operators.indexAccess => + c.argument.argumentIndex(1).isCall.foreach(setCallMethodFullNameFromBase) + visitIdentifierAssignedToIndexAccess(i, c) case _ => super.visitIdentifierAssignedToOperator(i, c, operation) override def visitIdentifierAssignedToConstructor(i: Identifier, c: Call): Set[String] = @@ -147,13 +139,6 @@ private class RecoverForPythonFile( associateTypes(i, globalTypes) case _ => super.visitIdentifierAssignedToFieldLoad(i, fa) - override def getTypesFromCall(c: Call): Set[String] = c.name match - case ".listLiteral" => Set(s"${PythonAstVisitor.builtinPrefix}list") - case ".tupleLiteral" => Set(s"${PythonAstVisitor.builtinPrefix}tuple") - case ".dictLiteral" => Set(s"${PythonAstVisitor.builtinPrefix}dict") - case ".setLiteral" => Set(s"${PythonAstVisitor.builtinPrefix}set") - case _ => super.getTypesFromCall(c) - override def getFieldParents(fa: FieldAccess): Set[String] = if fa.method.name == "" then Set(fa.method.fullName) @@ -165,9 +150,6 @@ private class RecoverForPythonFile( else super.getFieldParents(fa) - private def isPyString(s: String): Boolean = - (s.startsWith("\"") || s.startsWith("'")) && (s.endsWith("\"") || s.endsWith("'")) - override def getLiteralType(l: Literal): Set[String] = (l.code match case code if code.toIntOption.isDefined => Some(s"${PythonAstVisitor.builtinPrefix}int") @@ -180,6 +162,9 @@ private class RecoverForPythonFile( case _ => None ).toSet + private def isPyString(s: String): Boolean = + (s.startsWith("\"") || s.startsWith("'")) && (s.endsWith("\"") || s.endsWith("'")) + override def createCallFromIdentifierTypeFullName( typeFullName: String, callName: String @@ -194,24 +179,8 @@ private class RecoverForPythonFile( Seq(t, callName).mkString(pathSep.toString) case _ => super.createCallFromIdentifierTypeFullName(typeFullName, callName) - override protected def postSetTypeInformation(): Unit = - cu.typeDecl - .map(t => - t -> t.inheritsFromTypeFullName.partition(itf => - symbolTable.contains(LocalVar(itf)) - ) - ) - .foreach { case (t, (identifierTypes, otherTypes)) => - val existingTypes = (identifierTypes ++ otherTypes).distinct - val resolvedTypes = identifierTypes.map(LocalVar.apply).flatMap(symbolTable.get) - if existingTypes != resolvedTypes && resolvedTypes.nonEmpty then - state.changesWereMade.compareAndExchange(false, true) - builder.setNodeProperty( - t, - PropertyNames.INHERITS_FROM_TYPE_FULL_NAME, - resolvedTypes - ) - } + override protected def isConstructor(name: String): Boolean = + name.nonEmpty && name.charAt(0).isUpper override def prepopulateSymbolTable(): Unit = cu.ast.isMethodRef.where( @@ -234,6 +203,25 @@ private class RecoverForPythonFile( super.prepopulateSymbolTable() end prepopulateSymbolTable + override protected def postSetTypeInformation(): Unit = + cu.typeDecl + .map(t => + t -> t.inheritsFromTypeFullName.partition(itf => + symbolTable.contains(LocalVar(itf)) + ) + ) + .foreach { case (t, (identifierTypes, otherTypes)) => + val existingTypes = (identifierTypes ++ otherTypes).distinct + val resolvedTypes = identifierTypes.map(LocalVar.apply).flatMap(symbolTable.get) + if existingTypes != resolvedTypes && resolvedTypes.nonEmpty then + state.changesWereMade.compareAndExchange(false, true) + builder.setNodeProperty( + t, + PropertyNames.INHERITS_FROM_TYPE_FULL_NAME, + resolvedTypes + ) + } + override protected def visitIdentifierAssignedToTypeRef( i: Identifier, t: TypeRef, @@ -244,4 +232,25 @@ private class RecoverForPythonFile( .map(td => symbolTable.append(CallAlias(i.name, rec), Set(td))) .headOption .getOrElse(super.visitIdentifierAssignedToTypeRef(i, t, rec)) + + override protected def getIndexAccessTypes(ia: Call): Set[String] = + ia.argument.argumentIndex(1).isCall.headOption match + case Some(c) => + getTypesFromCall(c).map(x => s"$x$pathSep${XTypeRecovery.DummyIndexAccess}") + case _ => super.getIndexAccessTypes(ia) + + override def getTypesFromCall(c: Call): Set[String] = c.name match + case ".listLiteral" => Set(s"${PythonAstVisitor.builtinPrefix}list") + case ".tupleLiteral" => Set(s"${PythonAstVisitor.builtinPrefix}tuple") + case ".dictLiteral" => Set(s"${PythonAstVisitor.builtinPrefix}dict") + case ".setLiteral" => Set(s"${PythonAstVisitor.builtinPrefix}set") + case _ => super.getTypesFromCall(c) + + /** Replaces the `this` prefix with the Pythonic `self` prefix for instance methods of functions + * local to this compilation unit. + */ + private def fromNodeToLocalPythonKey(node: AstNode): Option[LocalKey] = + node match + case n: Method => Option(CallAlias(n.name, Option("self"))) + case _ => SBKey.fromNodeToLocalKey(node) end RecoverForPythonFile diff --git a/platform/frontends/pysrc2cpg/src/test/scala/io/appthreat/pysrc2cpg/PySrc2CpgFixture.scala b/platform/frontends/pysrc2cpg/src/test/scala/io/appthreat/pysrc2cpg/PySrc2CpgFixture.scala index 7d1d262c..4144d69c 100644 --- a/platform/frontends/pysrc2cpg/src/test/scala/io/appthreat/pysrc2cpg/PySrc2CpgFixture.scala +++ b/platform/frontends/pysrc2cpg/src/test/scala/io/appthreat/pysrc2cpg/PySrc2CpgFixture.scala @@ -1,6 +1,7 @@ package io.appthreat.pysrc2cpg import io.appthreat.dataflowengineoss.layers.dataflows.{OssDataFlow, OssDataFlowOptions} +import io.appthreat.dataflowengineoss.language.Path import io.appthreat.dataflowengineoss.queryengine.EngineContext import io.appthreat.dataflowengineoss.semanticsloader.FlowSemantic import io.appthreat.x2cpg.X2Cpg @@ -10,53 +11,56 @@ import io.shiftleft.codepropertygraph.Cpg import io.shiftleft.semanticcpg.language.{ICallResolver, NoResolve} import io.shiftleft.semanticcpg.layers.LayerCreatorContext -trait PythonFrontend extends LanguageFrontend { - override val fileSuffix: String = ".py" - - override def execute(sourceCodePath: java.io.File): Cpg = { - new Py2CpgOnFileSystem().createCpg(sourceCodePath.getAbsolutePath)(new Py2CpgOnFileSystemConfig()).get - } -} - -class PySrcTestCpg extends TestCpg with PythonFrontend { - private var _withOssDataflow = false - private var _extraFlows = List.empty[FlowSemantic] - - def withOssDataflow(value: Boolean = true): this.type = { - _withOssDataflow = value - this - } - - def withExtraFlows(value: List[FlowSemantic] = List.empty): this.type = { - _extraFlows = value - this - } - - override def applyPasses(): Unit = { - X2Cpg.applyDefaultOverlays(this) - new ImportsPass(this).createAndApply() - new ImportResolverPass(this).createAndApply() - new PythonInheritanceNamePass(this).createAndApply() - new DynamicTypeHintFullNamePass(this).createAndApply() - new PythonTypeRecoveryPass(this).createAndApply() - new PythonTypeHintCallLinker(this).createAndApply() - - // Some of passes above create new methods, so, we - // need to run the ASTLinkerPass one more time - new AstLinkerPass(this).createAndApply() - - if (_withOssDataflow) { - val context = new LayerCreatorContext(this) - val options = new OssDataFlowOptions(extraFlows = _extraFlows) - new OssDataFlow(options).run(context) - } - } -} - -class PySrc2CpgFixture(withOssDataflow: Boolean = false, extraFlows: List[FlowSemantic] = List.empty) - extends Code2CpgFixture(() => new PySrcTestCpg().withOssDataflow(withOssDataflow).withExtraFlows(extraFlows)) { - - implicit val resolver: ICallResolver = NoResolve - implicit val context: EngineContext = EngineContext() - -} +trait PythonFrontend extends LanguageFrontend: + override val fileSuffix: String = ".py" + + override def execute(sourceCodePath: java.io.File): Cpg = + new Py2CpgOnFileSystem().createCpg(sourceCodePath.getAbsolutePath)( + new Py2CpgOnFileSystemConfig() + ).get + +class PySrcTestCpg extends TestCpg with PythonFrontend: + private var _withOssDataflow = false + private var _extraFlows = List.empty[FlowSemantic] + + def withOssDataflow(value: Boolean = true): this.type = + _withOssDataflow = value + this + + def withExtraFlows(value: List[FlowSemantic] = List.empty): this.type = + _extraFlows = value + this + + override def applyPasses(): Unit = + X2Cpg.applyDefaultOverlays(this) + new ImportsPass(this).createAndApply() + new ImportResolverPass(this).createAndApply() + new PythonInheritanceNamePass(this).createAndApply() + new DynamicTypeHintFullNamePass(this).createAndApply() + new PythonTypeRecoveryPass(this).createAndApply() + new PythonTypeHintCallLinker(this).createAndApply() + + // Some of passes above create new methods, so, we + // need to run the ASTLinkerPass one more time + new AstLinkerPass(this).createAndApply() + + if _withOssDataflow then + val context = new LayerCreatorContext(this) + val options = new OssDataFlowOptions(extraFlows = _extraFlows) + new OssDataFlow(options).run(context) +end PySrcTestCpg + +class PySrc2CpgFixture( + withOssDataflow: Boolean = false, + extraFlows: List[FlowSemantic] = List.empty +) extends Code2CpgFixture(() => + new PySrcTestCpg().withOssDataflow(withOssDataflow).withExtraFlows(extraFlows) + ): + + implicit val resolver: ICallResolver = NoResolve + implicit val context: EngineContext = EngineContext() + + protected def flowToResultPairs(path: Path): List[(String, Integer)] = + path.resultPairs().collect { case (firstElement: String, secondElement: Option[Integer]) => + (firstElement, secondElement.getOrElse(-1)) + } diff --git a/platform/frontends/pysrc2cpg/src/test/scala/io/appthreat/pysrc2cpg/dataflow/DataFlowTests.scala b/platform/frontends/pysrc2cpg/src/test/scala/io/appthreat/pysrc2cpg/dataflow/DataFlowTests.scala index 4f2ab168..3ce42d16 100644 --- a/platform/frontends/pysrc2cpg/src/test/scala/io/appthreat/pysrc2cpg/dataflow/DataFlowTests.scala +++ b/platform/frontends/pysrc2cpg/src/test/scala/io/appthreat/pysrc2cpg/dataflow/DataFlowTests.scala @@ -1,122 +1,347 @@ package io.appthreat.pysrc2cpg.dataflow -import io.appthreat.pysrc2cpg.PySrc2CpgFixture import io.appthreat.dataflowengineoss.language.toExtendedCfgNode -import io.appthreat.dataflowengineoss.semanticsloader.FlowSemantic +import io.appthreat.dataflowengineoss.semanticsloader.{FlowMapping, FlowSemantic, PassThroughMapping} +import io.appthreat.pysrc2cpg.PySrc2CpgFixture import io.shiftleft.codepropertygraph.Cpg import io.shiftleft.codepropertygraph.generated.nodes.{Literal, Member, Method} -import io.shiftleft.semanticcpg.language._ +import io.shiftleft.semanticcpg.language.* import org.scalatest.Ignore import java.io.File -class DataFlowTests extends PySrc2CpgFixture(withOssDataflow = true) { +class DataFlowTests extends PySrc2CpgFixture(withOssDataflow = true): - "intra-procedural" in { - val cpg: Cpg = code(""" + "intra-procedural" in { + val cpg: Cpg = code(""" |a = 42 |c = foo(a, b) |print(c) |""".stripMargin) - val source = cpg.literal("42") - val sink = cpg.call.code("print.*").argument - sink.reachableByFlows(source).size shouldBe 1 - } + val source = cpg.literal("42") + val sink = cpg.call.code("print.*").argument + sink.reachableByFlows(source).size shouldBe 1 + } + + "intra-procedural 2" in { + val cpg = code( + """ + |x = foo(20) + |print(x) + |""".stripMargin + ) + + def source = cpg.literal("20") + def sink = cpg.call("print").argument + val flows = sink.reachableByFlows(source).l + flows.map(flowToResultPairs) shouldBe List(List(("foo(20)", 2), ("print(x)", 3)), List(("foo(20)", 2), ("print(x)", 3))) + } + + "flow from aliased literal to imported external method call return value" in { + val cpg = code( + """ + |from helpers import foo + |a = 20 + |print(foo(a)) + |""".stripMargin + ) + val source = cpg.literal("20").l + val sink = cpg.call("print").argument(1).l + val flows = sink.reachableByFlows(source).l + flows.map(flowToResultPairs) shouldBe List(List(("a = 20", 3), ("foo(a)", 4))) + } + + "flow from literal directly used in imported external method call return value" in { + val cpg = code( + """ + |from helpers import foo + |print(foo(20)) + |""".stripMargin + ) + val source = cpg.literal("20").l + val sink = cpg.call("print").argument(1).l + val flows = sink.reachableByFlows(source).l + flows.map(flowToResultPairs) shouldBe List(List(("foo(20)", 3))) + } + + "no flow from aliased literal to imported external method call return value given empty semantics" in { + val cpg = code( + """ + |from helpers import foo + |a = 20 + |print(foo(a)) + |""".stripMargin + ) + .withExtraFlows(List(FlowSemantic("helpers.py:.foo", List()))) + val source = cpg.literal("20").l + val sink = cpg.call("print").argument(1).l + val flows = sink.reachableByFlows(source).l + flows shouldBe empty + } + + "no flow from aliased literal to imported external method call return value given receiver-only semantics" in { + val cpg = code( + """ + |from helpers import foo + |a = 20 + |print(foo(a)) + |""".stripMargin + ) + .withExtraFlows(List(FlowSemantic("helpers.py:.foo", List(FlowMapping(0, 0))))) + val source = cpg.literal("20").l + val sink = cpg.call("print").argument(1).l + val flows = sink.reachableByFlows(source).l + flows shouldBe empty + } + + "no flow from aliased literal to imported external method call return value given argument1-only semantics" in { + val cpg = code( + """ + |from helpers import foo + |a = 20 + |print(foo(a)) + |""".stripMargin + ) + .withExtraFlows(List(FlowSemantic("helpers.py:.foo", List(FlowMapping(1, 1))))) + val source = cpg.literal("20").l + val sink = cpg.call("print").argument(1).l + val flows = sink.reachableByFlows(source).l + flows shouldBe empty + } + + "no flow from literal to imported external method return value given empty semantics" in { + val cpg = code( + """ + |from helpers import foo + |print(foo(20)) + |""".stripMargin + ) + .withExtraFlows(List(FlowSemantic("helpers.py:.foo", List()))) + val source = cpg.literal("20").l + val sink = cpg.call("print").argument(1).l + val flows = sink.reachableByFlows(source).l + flows shouldBe empty + } + + "no flow from literal to imported external method return value given receiver-only semantics" in { + val cpg = code( + """ + |from helpers import foo + |print(foo(20)) + |""".stripMargin + ) + .withExtraFlows(List(FlowSemantic("helpers.py:.foo", List(FlowMapping(0, 0))))) + val source = cpg.literal("20").l + val sink = cpg.call("print").argument(1).l + val flows = sink.reachableByFlows(source).l + flows shouldBe empty + } + + "no flow from literal to imported external method return value given argument1-only semantics" in { + val cpg = code( + """ + |from helpers import foo + |print(foo(20)) + |""".stripMargin + ) + .withExtraFlows(List(FlowSemantic("helpers.py:.foo", List(FlowMapping(1, 1))))) + val source = cpg.literal("20").l + val sink = cpg.call("print").argument(1).l + val flows = sink.reachableByFlows(source).l + flows shouldBe empty + } + + "no flow from aliased literal to method call return value given empty semantics" in { + val cpg = code( + """ + |def foo(x): + | return x + | + |a = 20 + |print(foo(a)) + |""".stripMargin + ) + .withExtraFlows(List(FlowSemantic("Test0.py:.foo", List()))) + val source = cpg.literal("20").l + val sink = cpg.call("print").argument(1).l + val flows = sink.reachableByFlows(source).l + flows shouldBe empty + } + + "no flow from aliased literal to method call return value given receiver-only semantics" in { + val cpg = code( + """ + |def foo(x): + | return x + | + |a = 20 + |print(foo(a)) + |""".stripMargin + ) + .withExtraFlows(List(FlowSemantic("Test0.py:.foo", List(FlowMapping(0, 0))))) + val source = cpg.literal("20").l + val sink = cpg.call("print").argument(1).l + val flows = sink.reachableByFlows(source).l + flows shouldBe empty + } + + "no flow from aliased literal to method call return value given argument1-only semantics" ignore { + val cpg = code( + """ + |def foo(x): + | return x + | + |a = 20 + |print(foo(a)) + |""".stripMargin + ) + .withExtraFlows(List(FlowSemantic("Test0.py:.foo", List(FlowMapping(1, 1))))) + val source = cpg.literal("20").l + val sink = cpg.call("print").argument(1).l + val flows = sink.reachableByFlows(source).l + flows shouldBe empty + } - "chained call" in { - val cpg: Cpg = code(""" + "no flow from literal to method call return value given empty semantics" ignore { + val cpg = code( + """ + |def foo(x): + | return x + | + |print(foo(20)) + |""".stripMargin + ) + .withExtraFlows(List(FlowSemantic("Test0.py:.foo", List()))) + val source = cpg.literal("20").l + val sink = cpg.call("print").argument(1).l + val flows = sink.reachableByFlows(source).l + flows shouldBe empty + } + + "no flow from literal to method call return value given receiver-only semantics" ignore { + val cpg = code( + """ + |def foo(x): + | return x + | + |print(foo(20)) + |""".stripMargin + ) + .withExtraFlows(List(FlowSemantic("Test0.py:.foo", List(FlowMapping(0, 0))))) + val source = cpg.literal("20").l + val sink = cpg.call("print").argument(1).l + val flows = sink.reachableByFlows(source).l + flows shouldBe empty + } + + "no flow from literal to method call return value given argument1-only semantics" ignore { + val cpg = code( + """ + |def foo(x): + | return x + | + |print(foo(20)) + |""".stripMargin + ) + .withExtraFlows(List(FlowSemantic("Test0.py:.foo", List(FlowMapping(1, 1))))) + val source = cpg.literal("20").l + val sink = cpg.call("print").argument(1).l + val flows = sink.reachableByFlows(source).l + flows shouldBe empty + } + + "chained call" in { + val cpg: Cpg = code(""" |a = 42 |c = foo(a).bar() |sink(c) |""".stripMargin) - def source = cpg.literal("42") - def sink = cpg.call("sink").argument - sink.reachableByFlows(source).size shouldBe 1 - } + def source = cpg.literal("42") + def sink = cpg.call("sink").argument + sink.reachableByFlows(source).size shouldBe 1 + } - "inter procedural call 1" in { - val cpg: Cpg = code(""" + "inter procedural call 1" in { + val cpg: Cpg = code(""" |def foo(): | return 42 |bar = foo() |print(bar) |""".stripMargin) - def source = cpg.literal("42") - def sink = cpg.call("print") - sink.reachableByFlows(source).size shouldBe 1 - } + def source = cpg.literal("42") + def sink = cpg.call("print") + sink.reachableByFlows(source).size shouldBe 1 + } - "inter procedural call 2" in { - val cpg: Cpg = code(""" + "inter procedural call 2" in { + val cpg: Cpg = code(""" |def foo(input): | sink(input) |def main(): | source = 42 | foo(source) |""".stripMargin) - def source = cpg.literal("42") - def sink = cpg.call("sink") - sink.reachableByFlows(source).size shouldBe 1 - } + def source = cpg.literal("42") + def sink = cpg.call("sink") + sink.reachableByFlows(source).size shouldBe 1 + } - "flow from class variable to sink" in { - val cpg: Cpg = code(""" + "flow from class variable to sink" in { + val cpg: Cpg = code(""" |class Foo(): | x = 'sensitive' | def foo(self): | sink(self.x) |""".stripMargin) - val source = cpg.member(".*x.*").l - val sink = cpg.call(".*sink").argument(1).l - source.size shouldBe 1 - sink.size shouldBe 1 - sink.reachableByFlows(source).size shouldBe 1 - } - - "flow from class variable to sink in assignment" in { - val cpg: Cpg = code(""" + val source = cpg.member(".*x.*").l + val sink = cpg.call(".*sink").argument(1).l + source.size shouldBe 1 + sink.size shouldBe 1 + sink.reachableByFlows(source).size shouldBe 1 + } + + "flow from class variable to sink in assignment" in { + val cpg: Cpg = code(""" |class Foo(): | x = 'sensitive' | def foo(self): | a = sink(self.x) |""".stripMargin) - val source = cpg.member(".*x.*").l - val sink = cpg.call(".*sink").argument(1).l - source.size shouldBe 1 - sink.size shouldBe 1 - val flows = sink.reachableByFlows(source).l - flows.size shouldBe 1 - flows.head.elements.head match { - case member: Member => - member.name shouldBe "x" - case _ => fail() - } - } - - "flow from literal to class variable to sink in assignment" in { - val cpg: Cpg = code(""" + val source = cpg.member(".*x.*").l + val sink = cpg.call(".*sink").argument(1).l + source.size shouldBe 1 + sink.size shouldBe 1 + val flows = sink.reachableByFlows(source).l + flows.size shouldBe 1 + flows.head.elements.head match + case member: Member => + member.name shouldBe "x" + case _ => fail() + } + + "flow from literal to class variable to sink in assignment" in { + val cpg: Cpg = code(""" |class Foo(): | x = 'sensitive' | def foo(self): | a = sink(self.x) |""".stripMargin) - val source = cpg.literal.code(".*sensitive.*").l - val sink = cpg.call(".*sink").argument(1).l - source.size shouldBe 1 - sink.size shouldBe 1 - val flows = sink.reachableByFlows(source).l - flows.size shouldBe 1 - flows.head.elements.head match { - case literal: Literal => - literal.code shouldBe "'sensitive'" - case _ => fail() - } - } - - "flow from instance variable in constructor (MEMBER) to sink" in { - val cpg: Cpg = code(""" + val source = cpg.literal.code(".*sensitive.*").l + val sink = cpg.call(".*sink").argument(1).l + source.size shouldBe 1 + sink.size shouldBe 1 + val flows = sink.reachableByFlows(source).l + flows.size shouldBe 1 + flows.head.elements.head match + case literal: Literal => + literal.code shouldBe "'sensitive'" + case _ => fail() + } + + "flow from instance variable in constructor (MEMBER) to sink" in { + val cpg: Cpg = code(""" |class Foo: | def __init__(self): | self.x = 'sensitive' @@ -126,21 +351,20 @@ class DataFlowTests extends PySrc2CpgFixture(withOssDataflow = true) { | |""".stripMargin) - val source = cpg.member(".*x.*").l - val sink = cpg.call(".*sink").argument(1).l - source.size shouldBe 1 - sink.size shouldBe 1 - val flows = sink.reachableByFlows(source).l - flows.size shouldBe 1 - flows.head.elements.head match { - case member: Member => - member.name shouldBe "x" - case _ => fail() - } - } - - "flow from literal to instance variable in constructor (MEMBER) to sink" in { - val cpg: Cpg = code(""" + val source = cpg.member(".*x.*").l + val sink = cpg.call(".*sink").argument(1).l + source.size shouldBe 1 + sink.size shouldBe 1 + val flows = sink.reachableByFlows(source).l + flows.size shouldBe 1 + flows.head.elements.head match + case member: Member => + member.name shouldBe "x" + case _ => fail() + } + + "flow from literal to instance variable in constructor (MEMBER) to sink" in { + val cpg: Cpg = code(""" |class Foo: | def __init__(self): | self.x = 'sensitive' @@ -150,22 +374,21 @@ class DataFlowTests extends PySrc2CpgFixture(withOssDataflow = true) { | |""".stripMargin) - val source = cpg.literal.code(".*sensitive.*").l - val sink = cpg.call(".*sink").argument(1).l - source.size shouldBe 1 - sink.size shouldBe 1 - val flows = sink.reachableByFlows(source).l - flows.size shouldBe 1 - - flows.head.elements.head match { - case literal: Literal => - literal.code shouldBe "'sensitive'" - case _ => fail() + val source = cpg.literal.code(".*sensitive.*").l + val sink = cpg.call(".*sink").argument(1).l + source.size shouldBe 1 + sink.size shouldBe 1 + val flows = sink.reachableByFlows(source).l + flows.size shouldBe 1 + + flows.head.elements.head match + case literal: Literal => + literal.code shouldBe "'sensitive'" + case _ => fail() } - } - "flow from global variable to sink" in { - val cpg: Cpg = code(""" + "flow from global variable to sink" in { + val cpg: Cpg = code(""" |import requests |url = "https://app.commissionly.io/api/public/opportunity" | @@ -182,19 +405,19 @@ class DataFlowTests extends PySrc2CpgFixture(withOssDataflow = true) { |accountId="sometext" |response = client.post_data(data, accountId) |""".stripMargin) - val sourceUrlIdentifier = cpg.identifier(".*url.*").l - val sink = cpg.call("post").l - sourceUrlIdentifier.size shouldBe 2 - sink.size shouldBe 1 - sink.reachableByFlows(sourceUrlIdentifier).size shouldBe 2 - - val sourceUrlLiteral = cpg.literal(".*app.commissionly.io.*").l - sourceUrlLiteral.size shouldBe 1 - sink.reachableByFlows(sourceUrlLiteral).size shouldBe 1 - } - - "Flow correctly from parent scope to child function scope" in { - val cpg: Cpg = code(""" + val sourceUrlIdentifier = cpg.identifier(".*url.*").l + val sink = cpg.call("post").l + sourceUrlIdentifier.size shouldBe 2 + sink.size shouldBe 1 + sink.reachableByFlows(sourceUrlIdentifier).size shouldBe 2 + + val sourceUrlLiteral = cpg.literal(".*app.commissionly.io.*").l + sourceUrlLiteral.size shouldBe 1 + sink.reachableByFlows(sourceUrlLiteral).size shouldBe 1 + } + + "Flow correctly from parent scope to child function scope" in { + val cpg: Cpg = code(""" |def foo(u): | | x = 1 @@ -207,26 +430,26 @@ class DataFlowTests extends PySrc2CpgFixture(withOssDataflow = true) { | |""".stripMargin) - val sink1 = cpg.call("print").l - val sink2 = cpg.call("debug").l - sink1.size shouldBe 1 - sink2.size shouldBe 1 + val sink1 = cpg.call("print").l + val sink2 = cpg.call("debug").l + sink1.size shouldBe 1 + sink2.size shouldBe 1 - val iSrc = cpg.method("foo").ast.isIdentifier.name("x").lineNumber(4).l - iSrc.size shouldBe 1 - sink1.reachableBy(iSrc).dedup.size shouldBe 1 + val iSrc = cpg.method("foo").ast.isIdentifier.name("x").lineNumber(4).l + iSrc.size shouldBe 1 + sink1.reachableBy(iSrc).dedup.size shouldBe 1 - val lSrc = cpg.method("foo").ast.isLiteral.code("1").lineNumber(4).l - lSrc.size shouldBe 1 - sink1.reachableBy(lSrc).size shouldBe 1 + val lSrc = cpg.method("foo").ast.isLiteral.code("1").lineNumber(4).l + lSrc.size shouldBe 1 + sink1.reachableBy(lSrc).size shouldBe 1 - val pSrc = cpg.method("foo").parameter.nameExact("u").l - pSrc.size shouldBe 1 - sink2.reachableBy(pSrc).size shouldBe 1 - } + val pSrc = cpg.method("foo").parameter.nameExact("u").l + pSrc.size shouldBe 1 + sink2.reachableBy(pSrc).size shouldBe 1 + } - "flow from function param to sink" in { - val cpg: Cpg = code(""" + "flow from function param to sink" in { + val cpg: Cpg = code(""" |import requests | |class TestClient: @@ -242,20 +465,20 @@ class DataFlowTests extends PySrc2CpgFixture(withOssDataflow = true) { | auth=(self.user, self.password) | ) |""".stripMargin) - val sourceMember = cpg.member(".*password.*").l - val sinkPost = cpg.call.methodFullName(".*requests.*post.*").l - val flowsPost = sinkPost.reachableByFlows(sourceMember).l - flowsPost.size shouldBe 1 + val sourceMember = cpg.member(".*password.*").l + val sinkPost = cpg.call.methodFullName(".*requests.*post.*").l + val flowsPost = sinkPost.reachableByFlows(sourceMember).l + flowsPost.size shouldBe 1 - val sourceParam = cpg.identifier("accountId").l - val sinkGet = cpg.call.methodFullName(".*requests.*get.*").l + val sourceParam = cpg.identifier("accountId").l + val sinkGet = cpg.call.methodFullName(".*requests.*get.*").l - val flowsGet = sinkGet.reachableByFlows(sourceParam).l - flowsGet.size shouldBe 2 - } + val flowsGet = sinkGet.reachableByFlows(sourceParam).l + flowsGet.size shouldBe 2 + } - "flow from index access to index access" in { - val cpg: Cpg = code(""" + "flow from index access to index access" in { + val cpg: Cpg = code(""" | |def foo(): | y = dict() @@ -263,14 +486,14 @@ class DataFlowTests extends PySrc2CpgFixture(withOssDataflow = true) { | sink(y) |""".stripMargin) - val sources = cpg.identifier("x").l - val sinks = cpg.call("sink").argument.l - val flows = sinks.reachableByFlows(sources) - flows.size shouldBe 1 - } + val sources = cpg.identifier("x").l + val sinks = cpg.call("sink").argument.l + val flows = sinks.reachableByFlows(sources) + flows.size shouldBe 1 + } - "flow from expression that taints global variable to sink" in { - val cpg: Cpg = code(""" + "flow from expression that taints global variable to sink" in { + val cpg: Cpg = code(""" |d = { | 'x': F.sum('x'), | 'y': F.sum('y'), @@ -282,52 +505,51 @@ class DataFlowTests extends PySrc2CpgFixture(withOssDataflow = true) { | return sink(d) |""".stripMargin) - val sources = cpg.call(".indexAccess").argument.isIdentifier.l - val sinks = cpg.call("sink").l - sinks.reachableByFlows(sources).size should not be 0 - } + val sources = cpg.call(".indexAccess").argument.isIdentifier.l + val sinks = cpg.call("sink").l + sinks.reachableByFlows(sources).size should not be 0 + } - "lookup of __init__ call" in { - val cpg = code(""" + "lookup of __init__ call" in { + val cpg = code(""" |from models import Foo |foo = Foo(x,y,z) |""".stripMargin) - .moreCode( - """ + .moreCode( + """ |class Foo: | def __init__(self, a, b, c): | println("foo") | pass |""".stripMargin, - "models.py" - ) + "models.py" + ) - val List(method: Method) = cpg.identifier.name("foo").inAssignment.source.isCall.callee.l - method.fullName shouldBe "models.py:.Foo.__init__" - val List(typeDeclFullName) = method.typeDecl.fullName.l - typeDeclFullName shouldBe "models.py:.Foo" - } + val List(method: Method) = cpg.identifier.name("foo").inAssignment.source.isCall.callee.l + method.fullName shouldBe "models.py:.Foo.__init__" + val List(typeDeclFullName) = method.typeDecl.fullName.l + typeDeclFullName shouldBe "models.py:.Foo" + } - "lookup of __init__ call even when hidden in base class" in { - val cpg = code(""" + "lookup of __init__ call even when hidden in base class" in { + val cpg = code(""" |from models import Foo |foo = Foo(x,y,z) |""".stripMargin) - .moreCode( - """ + .moreCode( + """ |class Foo(SomeType): | pass |""".stripMargin, - "models.py" - ) + "models.py" + ) - val List(method: Method) = cpg.identifier.name("foo").inAssignment.source.isCall.callee.l - method.fullName shouldBe "models.py:.Foo.__init__" - val List(typeDeclFullName) = method.typeDecl.fullName.l - typeDeclFullName shouldBe "models.py:.Foo" - } - -} + val List(method: Method) = cpg.identifier.name("foo").inAssignment.source.isCall.callee.l + method.fullName shouldBe "models.py:.Foo.__init__" + val List(typeDeclFullName) = method.typeDecl.fullName.l + typeDeclFullName shouldBe "models.py:.Foo" + } +end DataFlowTests class RegexDefinedFlowsDataFlowTests extends PySrc2CpgFixture( @@ -335,40 +557,50 @@ class RegexDefinedFlowsDataFlowTests extraFlows = List( FlowSemantic.from("^path.*\\.sanitizer$", List((0, 0), (1, 1)), regex = true), FlowSemantic.from("^foo.*\\.sanitizer.*", List((0, 0), (1, 1)), regex = true), - FlowSemantic.from("^foo.*\\.create_sanitizer\\.\\.sanitize", List((0, 0), (1, 1)), regex = true), + FlowSemantic.from( + "^foo.*\\.create_sanitizer\\.\\.sanitize", + List((0, 0), (1, 1)), + regex = true + ), FlowSemantic - .from( - "requests.py:.post", - List((0, 0), (1, "url", -1), (2, "body", -1), (1, "url", 1, "url"), (2, "body", 2, "body")) - ), + .from( + "requests.py:.post", + List( + (0, 0), + (1, "url", -1), + (2, "body", -1), + (1, "url", 1, "url"), + (2, "body", 2, "body") + ) + ), FlowSemantic.from("cross_taint.py:.go", List((0, 0), (1, 1), (1, "a", 2, "b"))) ) - ) { + ): - "regex matched semantic for imported method" should { - lazy val cpg = code( - """ + "regex matched semantic for imported method" should { + lazy val cpg = code( + """ |from path import sanitizer | |source = 1 |x = sanitizer(source) |sink(x) |""".stripMargin, - Seq("foo.py").mkString(java.io.File.separator) - ) + Seq("foo.py").mkString(java.io.File.separator) + ) - "register that sanitizer kills the flow on the parameter" in { - def source = cpg.literal("1") - def sink = cpg.call("sink") + "register that sanitizer kills the flow on the parameter" in { + def source = cpg.literal("1") + def sink = cpg.call("sink") - sink.reachableBy(source).size shouldBe 0 - } + sink.reachableBy(source).size shouldBe 0 + } - } + } - "regex matched semantic for more than one imported method" should { - lazy val cpg = code( - """ + "regex matched semantic for more than one imported method" should { + lazy val cpg = code( + """ |from foo import sanitizerFoo, sanitizerBar | |source = 1 @@ -376,21 +608,21 @@ class RegexDefinedFlowsDataFlowTests |y = sanitizerBar(source) |sink(x, y) |""".stripMargin, - Seq("foo.py").mkString(java.io.File.separator) - ) + Seq("foo.py").mkString(java.io.File.separator) + ) - "register that all sanitizers kill the flow on the parameter" in { - def source = cpg.literal("1") - def sink = cpg.call("sink") + "register that all sanitizers kill the flow on the parameter" in { + def source = cpg.literal("1") + def sink = cpg.call("sink") - sink.reachableBy(source).size shouldBe 0 - } + sink.reachableBy(source).size shouldBe 0 + } - } + } - "regex matched semantic for a dummy type resulting from type recovery" should { - val cpg = code( - """ + "regex matched semantic for a dummy type resulting from type recovery" should { + val cpg = code( + """ |from foo import create_sanitizer | |source = 1 @@ -398,20 +630,20 @@ class RegexDefinedFlowsDataFlowTests |y = x.sanitize(source) |sink(y) |""".stripMargin, - Seq("foo.py").mkString(java.io.File.separator) - ) + Seq("foo.py").mkString(java.io.File.separator) + ) - "register that the call off of a return value has no flow" in { - def source = cpg.literal("1") - def sink = cpg.call("sink") + "register that the call off of a return value has no flow" in { + def source = cpg.literal("1") + def sink = cpg.call("sink") - sink.reachableBy(source).size shouldBe 0 - } + sink.reachableBy(source).size shouldBe 0 + } - } + } - "flows to parameterized arguments" should { - val cpg = code(""" + "flows to parameterized arguments" should { + val cpg = code(""" |import requests |def foo(): | orderId = "Mysource" @@ -422,16 +654,16 @@ class RegexDefinedFlowsDataFlowTests | ) |""".stripMargin) - "have summarized flows accurately pass parameterized argument behaviour" in { - val source = cpg.identifier("orderId") - val sink = cpg.call("post") + "have summarized flows accurately pass parameterized argument behaviour" in { + val source = cpg.identifier("orderId") + val sink = cpg.call("post") - sink.reachableBy(source).size shouldBe 2 + sink.reachableBy(source).size shouldBe 2 + } } - } - "flows across named parameterized arguments" should { - val cpg = code(""" + "flows across named parameterized arguments" should { + val cpg = code(""" |import cross_taint | |def foo(): @@ -441,44 +673,44 @@ class RegexDefinedFlowsDataFlowTests | sink(transport) |""".stripMargin) - "have passed taint from one parameter to the next" in { - val source = cpg.literal("\"Mysource\"") - val sink = cpg.call("sink") + "have passed taint from one parameter to the next" in { + val source = cpg.literal("\"Mysource\"") + val sink = cpg.call("sink") - sink.reachableBy(source).size shouldBe 1 + sink.reachableBy(source).size shouldBe 1 + } } - } - "flows from receivers" should { - val cpg = code(""" + "flows from receivers" should { + val cpg = code(""" |class Foo: | def func(): | return "x" |print(Foo.func()) |""".stripMargin) - "be found" in { - val src = cpg.call.code("Foo.func").l - val snk = cpg.call("print").l - snk.argument.reachableByFlows(src).size shouldBe 1 + "be found" in { + val src = cpg.call.code("Foo.func").l + val snk = cpg.call("print").l + snk.argument.reachableByFlows(src).size shouldBe 1 + } } - } - "flows from receivers directly" should { - val cpg = code(""" + "flows from receivers directly" should { + val cpg = code(""" |class Foo: | def func(): | return "x" |print(Foo.func()) |""".stripMargin) - "be found" in { - val src = cpg.identifier("Foo").l - val snk = cpg.call("print").l - snk.reachableByFlows(src).size shouldBe 2 - } - } - "Import statement with method ref sample four" in { - val controller = - """ + "be found" in { + val src = cpg.identifier("Foo").l + val snk = cpg.call("print").l + snk.reachableByFlows(src).size shouldBe 2 + } + } + "Import statement with method ref sample four" in { + val controller = + """ |from django.contrib import admin |from django.urls import path |from django.conf.urls import url @@ -488,21 +720,21 @@ class RegexDefinedFlowsDataFlowTests | url(r'allPage', all_page) |] |""".stripMargin - val views = - """ + val views = + """ |def all_page(request): | print("All pages") |""".stripMargin - val cpg = code(controller, Seq("controller", "urls.py").mkString(File.separator)) - .moreCode(views, Seq("controller", "views.py").mkString(File.separator)) + val cpg = code(controller, Seq("controller", "urls.py").mkString(File.separator)) + .moreCode(views, Seq("controller", "views.py").mkString(File.separator)) - val args = cpg.call.methodFullName("django.*[.](path|url)").l.head.argument.l - args.size shouldBe 3 - } + val args = cpg.call.methodFullName("django.*[.](path|url)").l.head.argument.l + args.size shouldBe 3 + } - "Import statement with method ref sample five" in { - val controller = - """ + "Import statement with method ref sample five" in { + val controller = + """ |from django.contrib import admin |from django.urls import path |from django.conf.urls import url @@ -512,20 +744,20 @@ class RegexDefinedFlowsDataFlowTests | url(r'allPage', all_page) |] |""".stripMargin - val views = - """ + val views = + """ |def all_page(request): | print("All pages") |""".stripMargin - val cpg = code(controller, Seq("controller", "urls.py").mkString(File.separator)) - .moreCode(views, Seq("student", "views.py").mkString(File.separator)) + val cpg = code(controller, Seq("controller", "urls.py").mkString(File.separator)) + .moreCode(views, Seq("student", "views.py").mkString(File.separator)) - val args = cpg.call.methodFullName("django.*[.](path|url)").l.head.argument.l - args.size shouldBe 3 - } + val args = cpg.call.methodFullName("django.*[.](path|url)").l.head.argument.l + args.size shouldBe 3 + } - "flows via tuple literal" should { - val cpg = code(""" + "flows via tuple literal" should { + val cpg = code(""" |a = 1 |b = 2 |c = 3 @@ -535,21 +767,21 @@ class RegexDefinedFlowsDataFlowTests |sink1(b) |sink2(x) |""".stripMargin) - "not cross-taint due to 'pass through' semantics" in { - val src = cpg.literal("1").l - val snk = cpg.call("sink1").l - snk.reachableByFlows(src).size shouldBe 0 - } - - "taint the return value due to 'pass through' semantics" in { - val src = cpg.call.nameExact(".tupleLiteral").l - val snk = cpg.call("sink2").l - snk.reachableByFlows(src).size shouldBe 1 + "not cross-taint due to 'pass through' semantics" in { + val src = cpg.literal("1").l + val snk = cpg.call("sink1").l + snk.reachableByFlows(src).size shouldBe 0 + } + + "taint the return value due to 'pass through' semantics" in { + val src = cpg.call.nameExact(".tupleLiteral").l + val snk = cpg.call("sink2").l + snk.reachableByFlows(src).size shouldBe 1 + } } - } - "Exception block flow sample one" in { - val cpg: Cpg = code(""" + "Exception block flow sample one" in { + val cpg: Cpg = code(""" |import logging |tmp = logging.getLogger(__name__) | @@ -562,15 +794,15 @@ class RegexDefinedFlowsDataFlowTests | tmp.error(f"Failure: {accountId}") | return None |""".stripMargin) - val sources = cpg.identifier(".*account.*").lineNumber(6).l - val sinks = cpg.call.methodFullName(".*log.*(debug|info|error).*").l - val flows = sinks.reachableByFlows(sources).l - flows.size shouldBe 2 - } - - // TODO: Need to fix this scenario. This use case is not working across the frontend. Had tested it for Java as well. - "Exception block flow sample two" ignore { - val cpg: Cpg = code(""" + val sources = cpg.identifier(".*account.*").lineNumber(6).l + val sinks = cpg.call.methodFullName(".*log.*(debug|info|error).*").l + val flows = sinks.reachableByFlows(sources).l + flows.size shouldBe 2 + } + + // TODO: Need to fix this scenario. This use case is not working across the frontend. Had tested it for Java as well. + "Exception block flow sample two" ignore { + val cpg: Cpg = code(""" |import logging |tmp = logging.getLogger(__name__) | @@ -583,10 +815,9 @@ class RegexDefinedFlowsDataFlowTests | tmp.error(f"Failure: {accountId}") | return None |""".stripMargin) - val sources = cpg.identifier(".*account.*").lineNumber(6).l - val sinks = cpg.call.methodFullName(".*log.*(debug|info|error).*").l - val flows = sinks.reachableByFlows(sources).l - flows.size shouldBe 2 - } - -} + val sources = cpg.identifier(".*account.*").lineNumber(6).l + val sinks = cpg.call.methodFullName(".*log.*(debug|info|error).*").l + val flows = sinks.reachableByFlows(sources).l + flows.size shouldBe 2 + } +end RegexDefinedFlowsDataFlowTests diff --git a/platform/frontends/pysrc2cpg/src/test/scala/io/appthreat/pysrc2cpg/passes/TypeRecoveryPassTests.scala b/platform/frontends/pysrc2cpg/src/test/scala/io/appthreat/pysrc2cpg/passes/TypeRecoveryPassTests.scala index 896697fd..152e9d78 100644 --- a/platform/frontends/pysrc2cpg/src/test/scala/io/appthreat/pysrc2cpg/passes/TypeRecoveryPassTests.scala +++ b/platform/frontends/pysrc2cpg/src/test/scala/io/appthreat/pysrc2cpg/passes/TypeRecoveryPassTests.scala @@ -9,10 +9,10 @@ import io.appthreat.x2cpg.passes.frontend.ImportsPass.* import io.shiftleft.semanticcpg.language.NoResolve import scala.collection.immutable.Seq -class TypeRecoveryPassTests extends PySrc2CpgFixture(withOssDataflow = false) { +class TypeRecoveryPassTests extends PySrc2CpgFixture(withOssDataflow = false): - "literals declared from built-in types" should { - lazy val cpg = code(""" + "literals declared from built-in types" should { + lazy val cpg = code(""" |x = 123 | |def foo_shadowing(): @@ -25,35 +25,47 @@ class TypeRecoveryPassTests extends PySrc2CpgFixture(withOssDataflow = false) { |z.append(4) |""".stripMargin).cpg - "resolve 'x' identifier types despite shadowing" in { - val List(xOuterScope, xInnerScope) = cpg.identifier("x").take(2).l - xOuterScope.dynamicTypeHintFullName shouldBe Seq("__builtin.int") - xInnerScope.dynamicTypeHintFullName shouldBe Seq("__builtin.int") + "resolve 'x' identifier types despite shadowing" in { + val List(xOuterScope, xInnerScope) = cpg.identifier("x").take(2).l + xOuterScope.dynamicTypeHintFullName shouldBe Seq("__builtin.int") + xInnerScope.dynamicTypeHintFullName shouldBe Seq("__builtin.int") + } + + "resolve 'y' and 'z' identifier collection types" in { + val List(zDict, zList, zTuple) = cpg.identifier("z").take(3).l + zDict.dynamicTypeHintFullName shouldBe Seq( + "__builtin.dict", + "__builtin.list", + "__builtin.tuple" + ) + zList.dynamicTypeHintFullName shouldBe Seq( + "__builtin.dict", + "__builtin.list", + "__builtin.tuple" + ) + zTuple.dynamicTypeHintFullName shouldBe Seq( + "__builtin.dict", + "__builtin.list", + "__builtin.tuple" + ) + } + + "resolve 'z' identifier calls conservatively" in { + val List(zAppend) = cpg.call("append").l + zAppend.methodFullName shouldBe "" + // Since we don't have method nodes with this full name, this should belong to the call linker namespace + zAppend.callee.astParentFullName.headOption shouldBe Some(XTypeHintCallLinker.namespace) + zAppend.dynamicTypeHintFullName shouldBe Seq( + "__builtin.dict.append", + "__builtin.list.append", + "__builtin.tuple.append" + ) + } } - "resolve 'y' and 'z' identifier collection types" in { - val List(zDict, zList, zTuple) = cpg.identifier("z").take(3).l - zDict.dynamicTypeHintFullName shouldBe Seq("__builtin.dict", "__builtin.list", "__builtin.tuple") - zList.dynamicTypeHintFullName shouldBe Seq("__builtin.dict", "__builtin.list", "__builtin.tuple") - zTuple.dynamicTypeHintFullName shouldBe Seq("__builtin.dict", "__builtin.list", "__builtin.tuple") - } - - "resolve 'z' identifier calls conservatively" in { - val List(zAppend) = cpg.call("append").l - zAppend.methodFullName shouldBe "" - // Since we don't have method nodes with this full name, this should belong to the call linker namespace - zAppend.callee.astParentFullName.headOption shouldBe Some(XTypeHintCallLinker.namespace) - zAppend.dynamicTypeHintFullName shouldBe Seq( - "__builtin.dict.append", - "__builtin.list.append", - "__builtin.tuple.append" - ) - } - } + "call from a function from an external type" should { - "call from a function from an external type" should { - - lazy val cpg = code(""" + lazy val cpg = code(""" |from slack_sdk import WebClient |from sendgrid import SendGridAPIClient | @@ -66,54 +78,54 @@ class TypeRecoveryPassTests extends PySrc2CpgFixture(withOssDataflow = false) { |response = sg.send(message) |""".stripMargin).cpg - "resolve correct imports via tag nodes" in { - val List( - webClientM: UnknownMethod, - webClientT: UnknownTypeDecl, - sendGridM: UnknownMethod, - sendGridT: UnknownTypeDecl - ) = cpg.call.where(_.referencedImports).tag.toResolvedImport.toList: @unchecked - webClientM.fullName shouldBe "slack_sdk.py:.WebClient.__init__" - webClientT.fullName shouldBe "slack_sdk.py:.WebClient" - sendGridM.fullName shouldBe "sendgrid.py:.SendGridAPIClient.__init__" - sendGridT.fullName shouldBe "sendgrid.py:.SendGridAPIClient" - } - - "resolve 'sg' identifier types from import information" in { - val List(sgAssignment, sgElseWhere) = cpg.identifier("sg").take(2).l - sgAssignment.typeFullName shouldBe "sendgrid.py:.SendGridAPIClient" - sgElseWhere.typeFullName shouldBe "sendgrid.py:.SendGridAPIClient" - } - - "resolve 'sg' call path from import information" in { - val List(apiClient) = cpg.call("SendGridAPIClient").l - apiClient.methodFullName shouldBe "sendgrid.py:.SendGridAPIClient.__init__" - val List(sendCall) = cpg.call("send").l - sendCall.methodFullName shouldBe "sendgrid.py:.SendGridAPIClient.send" - } - - "resolve 'client' identifier types from import information" in { - val List(clientAssignment, clientElseWhere) = cpg.identifier("client").take(2).l - clientAssignment.typeFullName shouldBe "slack_sdk.py:.WebClient" - clientElseWhere.typeFullName shouldBe "slack_sdk.py:.WebClient" - } - - "resolve 'client' call path from identifier in child scope" in { - val List(client) = cpg.call("WebClient").l - client.methodFullName shouldBe "slack_sdk.py:.WebClient.__init__" - val List(postMessage) = cpg.call("chat_postMessage").l - postMessage.methodFullName shouldBe "slack_sdk.py:.WebClient.chat_postMessage" - } + "resolve correct imports via tag nodes" in { + val List( + webClientM: UnknownMethod, + webClientT: UnknownTypeDecl, + sendGridM: UnknownMethod, + sendGridT: UnknownTypeDecl + ) = cpg.call.where(_.referencedImports).tag.toResolvedImport.toList: @unchecked + webClientM.fullName shouldBe "slack_sdk.py:.WebClient.__init__" + webClientT.fullName shouldBe "slack_sdk.py:.WebClient" + sendGridM.fullName shouldBe "sendgrid.py:.SendGridAPIClient.__init__" + sendGridT.fullName shouldBe "sendgrid.py:.SendGridAPIClient" + } + + "resolve 'sg' identifier types from import information" in { + val List(sgAssignment, sgElseWhere) = cpg.identifier("sg").take(2).l + sgAssignment.typeFullName shouldBe "sendgrid.py:.SendGridAPIClient" + sgElseWhere.typeFullName shouldBe "sendgrid.py:.SendGridAPIClient" + } + + "resolve 'sg' call path from import information" in { + val List(apiClient) = cpg.call("SendGridAPIClient").l + apiClient.methodFullName shouldBe "sendgrid.py:.SendGridAPIClient.__init__" + val List(sendCall) = cpg.call("send").l + sendCall.methodFullName shouldBe "sendgrid.py:.SendGridAPIClient.send" + } + + "resolve 'client' identifier types from import information" in { + val List(clientAssignment, clientElseWhere) = cpg.identifier("client").take(2).l + clientAssignment.typeFullName shouldBe "slack_sdk.py:.WebClient" + clientElseWhere.typeFullName shouldBe "slack_sdk.py:.WebClient" + } + + "resolve 'client' call path from identifier in child scope" in { + val List(client) = cpg.call("WebClient").l + client.methodFullName shouldBe "slack_sdk.py:.WebClient.__init__" + val List(postMessage) = cpg.call("chat_postMessage").l + postMessage.methodFullName shouldBe "slack_sdk.py:.WebClient.chat_postMessage" + } + + "resolve a dummy 'send' return value from sg.send" in { + val List(postMessage) = cpg.identifier("response").l + postMessage.typeFullName shouldBe "sendgrid.py:.SendGridAPIClient.send." + } - "resolve a dummy 'send' return value from sg.send" in { - val List(postMessage) = cpg.identifier("response").l - postMessage.typeFullName shouldBe "sendgrid.py:.SendGridAPIClient.send." } - } - - "type recovery on class members" should { - lazy val cpg = code(""" + "type recovery on class members" should { + lazy val cpg = code(""" |from flask_sqlalchemy import SQLAlchemy | |db = SQLAlchemy() @@ -139,35 +151,35 @@ class TypeRecoveryPassTests extends PySrc2CpgFixture(withOssDataflow = false) { | } |""".stripMargin).cpg - "resolve 'db' identifier types from import information" in { - val List(clientAssignment, clientElseWhere) = cpg.identifier("db").take(2).l - clientAssignment.typeFullName shouldBe "flask_sqlalchemy.py:.SQLAlchemy" - clientElseWhere.typeFullName shouldBe "flask_sqlalchemy.py:.SQLAlchemy" - } - - "resolve the 'SQLAlchemy' constructor in the module" in { - val Some(client) = cpg.call("SQLAlchemy").headOption: @unchecked - client.methodFullName shouldBe "flask_sqlalchemy.py:.SQLAlchemy.__init__" - } - - "resolve 'User' field types" in { - val List(id, firstname, age, address) = - cpg.identifier.nameExact("id", "firstname", "age", "address").l.takeRight(4) - id.typeFullName shouldBe "flask_sqlalchemy.py:.SQLAlchemy.Column" - firstname.typeFullName shouldBe "flask_sqlalchemy.py:.SQLAlchemy.Column" - age.typeFullName shouldBe "flask_sqlalchemy.py:.SQLAlchemy.Column" - address.typeFullName shouldBe "flask_sqlalchemy.py:.SQLAlchemy.Column" - } + "resolve 'db' identifier types from import information" in { + val List(clientAssignment, clientElseWhere) = cpg.identifier("db").take(2).l + clientAssignment.typeFullName shouldBe "flask_sqlalchemy.py:.SQLAlchemy" + clientElseWhere.typeFullName shouldBe "flask_sqlalchemy.py:.SQLAlchemy" + } + + "resolve the 'SQLAlchemy' constructor in the module" in { + val Some(client) = cpg.call("SQLAlchemy").headOption: @unchecked + client.methodFullName shouldBe "flask_sqlalchemy.py:.SQLAlchemy.__init__" + } + + "resolve 'User' field types" in { + val List(id, firstname, age, address) = + cpg.identifier.nameExact("id", "firstname", "age", "address").l.takeRight(4) + id.typeFullName shouldBe "flask_sqlalchemy.py:.SQLAlchemy.Column" + firstname.typeFullName shouldBe "flask_sqlalchemy.py:.SQLAlchemy.Column" + age.typeFullName shouldBe "flask_sqlalchemy.py:.SQLAlchemy.Column" + address.typeFullName shouldBe "flask_sqlalchemy.py:.SQLAlchemy.Column" + } + + "resolve the 'Column' constructor for a class member" in { + val Some(columnConstructor) = cpg.call("Column").headOption: @unchecked + columnConstructor.methodFullName shouldBe "flask_sqlalchemy.py:.SQLAlchemy.Column.__init__" + } - "resolve the 'Column' constructor for a class member" in { - val Some(columnConstructor) = cpg.call("Column").headOption: @unchecked - columnConstructor.methodFullName shouldBe "flask_sqlalchemy.py:.SQLAlchemy.Column.__init__" } - } - - "recovering paths for built-in calls" should { - lazy val cpg = code(""" + "recovering paths for built-in calls" should { + lazy val cpg = code(""" |print("Hello world") |max(1, 2) | @@ -176,32 +188,32 @@ class TypeRecoveryPassTests extends PySrc2CpgFixture(withOssDataflow = false) { |x = abs(-1) |""".stripMargin).cpg - "resolve 'print' and 'max' calls" in { - val Some(printCall) = cpg.call("print").headOption: @unchecked - printCall.methodFullName shouldBe "__builtin.print" - val Some(maxCall) = cpg.call("max").headOption: @unchecked - maxCall.methodFullName shouldBe "__builtin.max" - } + "resolve 'print' and 'max' calls" in { + val Some(printCall) = cpg.call("print").headOption: @unchecked + printCall.methodFullName shouldBe "__builtin.print" + val Some(maxCall) = cpg.call("max").headOption: @unchecked + maxCall.methodFullName shouldBe "__builtin.max" + } - "conservatively present either option when an imported function uses the same name as a builtin" in { - val Some(absCall) = cpg.call("abs").headOption: @unchecked - absCall.dynamicTypeHintFullName shouldBe Seq("foo.py:.abs", "__builtin.abs") - } + "conservatively present either option when an imported function uses the same name as a builtin" in { + val Some(absCall) = cpg.call("abs").headOption: @unchecked + absCall.dynamicTypeHintFullName shouldBe Seq("foo.py:.abs", "__builtin.abs") + } - } + } - "recovering module members across modules" should { - lazy val cpg = code( - """ + "recovering module members across modules" should { + lazy val cpg = code( + """ |from flask_sqlalchemy import SQLAlchemy | |x = 1 |y = "test" |db = SQLAlchemy() |""".stripMargin, - "foo.py" - ).moreCode( - """ + "foo.py" + ).moreCode( + """ |import foo | |z = foo.x @@ -213,81 +225,85 @@ class TypeRecoveryPassTests extends PySrc2CpgFixture(withOssDataflow = false) { | |foo.db.deleteTable() |""".stripMargin, - "bar.py" - ).cpg - - "resolve correct imports via tag nodes" in { - val List(foo1: UnknownMethod, foo2: UnknownTypeDecl) = - cpg.file(".*foo.py").ast.isCall.where(_.referencedImports).tag.toResolvedImport.toList: @unchecked - foo1.fullName shouldBe "flask_sqlalchemy.py:.SQLAlchemy.__init__" - foo2.fullName shouldBe "flask_sqlalchemy.py:.SQLAlchemy" - val List(bar1: ResolvedTypeDecl, bar2: ResolvedMethod) = - cpg.file(".*bar.py").ast.isCall.where(_.referencedImports).tag.toResolvedImport.toList: @unchecked - bar1.fullName shouldBe "foo.py:" - bar2.fullName shouldBe "foo.py:" - } + "bar.py" + ).cpg + + "resolve correct imports via tag nodes" in { + val List(foo1: UnknownMethod, foo2: UnknownTypeDecl) = + cpg.file(".*foo.py").ast.isCall.where( + _.referencedImports + ).tag.toResolvedImport.toList: @unchecked + foo1.fullName shouldBe "flask_sqlalchemy.py:.SQLAlchemy.__init__" + foo2.fullName shouldBe "flask_sqlalchemy.py:.SQLAlchemy" + val List(bar1: ResolvedTypeDecl, bar2: ResolvedMethod) = + cpg.file(".*bar.py").ast.isCall.where( + _.referencedImports + ).tag.toResolvedImport.toList: @unchecked + bar1.fullName shouldBe "foo.py:" + bar2.fullName shouldBe "foo.py:" + } + + "resolve 'x' and 'y' locally under foo.py" in { + val Some(x) = cpg.file.name(".*foo.*").ast.isIdentifier.name("x").headOption: @unchecked + x.typeFullName shouldBe "__builtin.int" + val Some(y) = cpg.file.name(".*foo.*").ast.isIdentifier.name("y").headOption: @unchecked + y.typeFullName shouldBe "__builtin.str" + } + + "resolve 'foo.x' and 'foo.y' field access primitive types correctly" in { + val List(z1, z2) = cpg.file + .name(".*bar.*") + .ast + .isIdentifier + .name("z") + .l + z1.typeFullName shouldBe "__builtin.str" + z1.dynamicTypeHintFullName shouldBe Seq("__builtin.int") + z2.typeFullName shouldBe "__builtin.str" + z2.dynamicTypeHintFullName shouldBe Seq("__builtin.int") + } + + "resolve 'foo.d' field access object types correctly" in { + val Some(d) = cpg.file + .name(".*bar.*") + .ast + .isIdentifier + .name("d") + .headOption: @unchecked + d.typeFullName shouldBe "flask_sqlalchemy.py:.SQLAlchemy" + d.dynamicTypeHintFullName shouldBe Seq() + } + + "resolve a 'createTable' call indirectly from 'foo.d' field access correctly" in { + val List(d) = cpg.file + .name(".*bar.*") + .ast + .isCall + .name("createTable") + .l + d.methodFullName shouldBe "flask_sqlalchemy.py:.SQLAlchemy.createTable" + d.dynamicTypeHintFullName shouldBe Seq() + d.callee(NoResolve).isExternal.headOption shouldBe Some(true) + } + + "resolve a 'deleteTable' call directly from 'foo.db' field access correctly" in { + val List(d) = cpg.file + .name(".*bar.*") + .ast + .isCall + .name("deleteTable") + .l + + d.methodFullName shouldBe "flask_sqlalchemy.py:.SQLAlchemy.deleteTable" + d.dynamicTypeHintFullName shouldBe Seq() + d.callee(NoResolve).isExternal.headOption shouldBe Some(true) + } - "resolve 'x' and 'y' locally under foo.py" in { - val Some(x) = cpg.file.name(".*foo.*").ast.isIdentifier.name("x").headOption: @unchecked - x.typeFullName shouldBe "__builtin.int" - val Some(y) = cpg.file.name(".*foo.*").ast.isIdentifier.name("y").headOption: @unchecked - y.typeFullName shouldBe "__builtin.str" } - "resolve 'foo.x' and 'foo.y' field access primitive types correctly" in { - val List(z1, z2) = cpg.file - .name(".*bar.*") - .ast - .isIdentifier - .name("z") - .l - z1.typeFullName shouldBe "__builtin.str" - z1.dynamicTypeHintFullName shouldBe Seq("__builtin.int") - z2.typeFullName shouldBe "__builtin.str" - z2.dynamicTypeHintFullName shouldBe Seq("__builtin.int") - } - - "resolve 'foo.d' field access object types correctly" in { - val Some(d) = cpg.file - .name(".*bar.*") - .ast - .isIdentifier - .name("d") - .headOption: @unchecked - d.typeFullName shouldBe "flask_sqlalchemy.py:.SQLAlchemy" - d.dynamicTypeHintFullName shouldBe Seq() - } - - "resolve a 'createTable' call indirectly from 'foo.d' field access correctly" in { - val List(d) = cpg.file - .name(".*bar.*") - .ast - .isCall - .name("createTable") - .l - d.methodFullName shouldBe "flask_sqlalchemy.py:.SQLAlchemy.createTable" - d.dynamicTypeHintFullName shouldBe Seq() - d.callee(NoResolve).isExternal.headOption shouldBe Some(true) - } - - "resolve a 'deleteTable' call directly from 'foo.db' field access correctly" in { - val List(d) = cpg.file - .name(".*bar.*") - .ast - .isCall - .name("deleteTable") - .l - - d.methodFullName shouldBe "flask_sqlalchemy.py:.SQLAlchemy.deleteTable" - d.dynamicTypeHintFullName shouldBe Seq() - d.callee(NoResolve).isExternal.headOption shouldBe Some(true) - } - - } - - "type recovery for a field imported as an individual component" should { - lazy val cpg = code( - """import app + "type recovery for a field imported as an individual component" should { + lazy val cpg = code( + """import app |from flask import jsonify | |def store(): @@ -299,104 +315,113 @@ class TypeRecoveryPassTests extends PySrc2CpgFixture(withOssDataflow = false) { | except Exception as e: | return 'There was an issue adding your task' |""".stripMargin, - "UserController.py" - ).moreCode( - """ + "UserController.py" + ).moreCode( + """ |from flask_sqlalchemy import SQLAlchemy | |db = SQLAlchemy() |""".stripMargin, - "app.py" - ).cpg - - "resolve correct imports via tag nodes" in { - val List(a: ResolvedTypeDecl, b: ResolvedMethod, c: UnknownImport, d: ResolvedMember) = - cpg.file(".*UserController.py").ast.isCall.where(_.referencedImports).tag.toResolvedImport.toList: @unchecked - a.fullName shouldBe "app.py:" - b.fullName shouldBe "app.py:" - c.path shouldBe "flask.py:.jsonify" - d.basePath shouldBe "app.py:" - d.memberName shouldBe "db" - - val List(sqlAlchemyM: UnknownMethod, sqlAlchemyT: UnknownTypeDecl) = - cpg.file(".*app.py").ast.isCall.where(_.referencedImports).tag.toResolvedImport.toList: @unchecked - sqlAlchemyM.fullName shouldBe "flask_sqlalchemy.py:.SQLAlchemy.__init__" - sqlAlchemyT.fullName shouldBe "flask_sqlalchemy.py:.SQLAlchemy" - } - - "be determined as a variable reference and have its type recovered correctly" in { - cpg.identifier("db").map(_.typeFullName).toSet shouldBe Set("flask_sqlalchemy.py:.SQLAlchemy") + "app.py" + ).cpg + + "resolve correct imports via tag nodes" in { + val List(a: ResolvedTypeDecl, b: ResolvedMethod, c: UnknownImport, d: ResolvedMember) = + cpg.file(".*UserController.py").ast.isCall.where( + _.referencedImports + ).tag.toResolvedImport.toList: @unchecked + a.fullName shouldBe "app.py:" + b.fullName shouldBe "app.py:" + c.path shouldBe "flask.py:.jsonify" + d.basePath shouldBe "app.py:" + d.memberName shouldBe "db" + + val List(sqlAlchemyM: UnknownMethod, sqlAlchemyT: UnknownTypeDecl) = + cpg.file(".*app.py").ast.isCall.where( + _.referencedImports + ).tag.toResolvedImport.toList: @unchecked + sqlAlchemyM.fullName shouldBe "flask_sqlalchemy.py:.SQLAlchemy.__init__" + sqlAlchemyT.fullName shouldBe "flask_sqlalchemy.py:.SQLAlchemy" + } + + "be determined as a variable reference and have its type recovered correctly" in { + cpg.identifier("db").map(_.typeFullName).toSet shouldBe Set( + "flask_sqlalchemy.py:.SQLAlchemy" + ) + + cpg + .call("add") + .where(_.parentBlock.ast.isIdentifier.typeFullName( + "flask_sqlalchemy.py:.SQLAlchemy" + )) + .where(_.parentBlock.ast.isFieldIdentifier.canonicalName("session")) + .headOption + .map(_.code) shouldBe Some("tmp0.add(user)") + } + + "provide a dummy type to a member if the member type is not known" in { + val Some(sessionTmpVar) = cpg.identifier("tmp0").headOption: @unchecked + sessionTmpVar.typeFullName shouldBe "flask_sqlalchemy.py:.SQLAlchemy.(session)" + + val Some(addCall) = cpg + .call("add") + .headOption: @unchecked + addCall.typeFullName shouldBe "ANY" + addCall.methodFullName shouldBe "flask_sqlalchemy.py:.SQLAlchemy.(session).add" + addCall.callee(NoResolve).isExternal.headOption shouldBe Some(true) + } - cpg - .call("add") - .where(_.parentBlock.ast.isIdentifier.typeFullName("flask_sqlalchemy.py:.SQLAlchemy")) - .where(_.parentBlock.ast.isFieldIdentifier.canonicalName("session")) - .headOption - .map(_.code) shouldBe Some("tmp0.add(user)") } - "provide a dummy type to a member if the member type is not known" in { - val Some(sessionTmpVar) = cpg.identifier("tmp0").headOption: @unchecked - sessionTmpVar.typeFullName shouldBe "flask_sqlalchemy.py:.SQLAlchemy.(session)" - - val Some(addCall) = cpg - .call("add") - .headOption: @unchecked - addCall.typeFullName shouldBe "ANY" - addCall.methodFullName shouldBe "flask_sqlalchemy.py:.SQLAlchemy.(session).add" - addCall.callee(NoResolve).isExternal.headOption shouldBe Some(true) - } - - } - - "assignment from a call to a method inside an imported module" should { - lazy val cpg = code(""" + "assignment from a call to a method inside an imported module" should { + lazy val cpg = code(""" |import logging |log = logging.getLogger(__name__) |log.error("foo") |""".stripMargin).cpg - "resolve correct imports via tag nodes" in { - val List(logging: UnknownImport) = cpg.call.where(_.referencedImports).tag.toResolvedImport.toList: @unchecked - logging.path shouldBe "logging.py:" + "resolve correct imports via tag nodes" in { + val List(logging: UnknownImport) = + cpg.call.where(_.referencedImports).tag.toResolvedImport.toList: @unchecked + logging.path shouldBe "logging.py:" + } + + "provide a dummy type" in { + val Some(log) = cpg.identifier("log").headOption: @unchecked + log.typeFullName shouldBe "logging.py:.getLogger." + val List(errorCall) = cpg.call("error").l + errorCall.methodFullName shouldBe "logging.py:.getLogger..error" + val List(getLoggerCall) = cpg.call("getLogger").l + getLoggerCall.methodFullName shouldBe "logging.py:.getLogger" + } } - "provide a dummy type" in { - val Some(log) = cpg.identifier("log").headOption: @unchecked - log.typeFullName shouldBe "logging.py:.getLogger." - val List(errorCall) = cpg.call("error").l - errorCall.methodFullName shouldBe "logging.py:.getLogger..error" - val List(getLoggerCall) = cpg.call("getLogger").l - getLoggerCall.methodFullName shouldBe "logging.py:.getLogger" - } - } - - "a constructor call from a field access of an externally imported package" should { - lazy val cpg = code(""" + "a constructor call from a field access of an externally imported package" should { + lazy val cpg = code(""" |import urllib.error |import urllib.request | |req = urllib.request.Request(url=apiUrl, data=dataBytes, method='POST') |""".stripMargin).cpg - "resolve correct imports via tag nodes" in { - val List(error: UnknownImport, request: UnknownImport) = - cpg.call.where(_.referencedImports).tag.toResolvedImport.toList: @unchecked - error.path shouldBe "urllib.py:.error" - request.path shouldBe "urllib.py:.request" + "resolve correct imports via tag nodes" in { + val List(error: UnknownImport, request: UnknownImport) = + cpg.call.where(_.referencedImports).tag.toResolvedImport.toList: @unchecked + error.path shouldBe "urllib.py:.error" + request.path shouldBe "urllib.py:.request" + } + + "reasonably determine the constructor type" in { + val Some(tmp0) = cpg.identifier("tmp0").headOption: @unchecked + tmp0.typeFullName shouldBe "urllib.py:.request" + val Some(requestCall) = cpg.call("Request").headOption: @unchecked + requestCall.methodFullName shouldBe "urllib.py:.request.Request.__init__" + } } - "reasonably determine the constructor type" in { - val Some(tmp0) = cpg.identifier("tmp0").headOption: @unchecked - tmp0.typeFullName shouldBe "urllib.py:.request" - val Some(requestCall) = cpg.call("Request").headOption: @unchecked - requestCall.methodFullName shouldBe "urllib.py:.request.Request.__init__" - } - } - - "a method call inherited from a super class should be recovered" should { - lazy val cpg = code( - """from pymongo import MongoClient + "a method call inherited from a super class should be recovered" should { + lazy val cpg = code( + """from pymongo import MongoClient |from django.conf import settings | | @@ -415,9 +440,9 @@ class TypeRecoveryPassTests extends PySrc2CpgFixture(withOssDataflow = false) { | def get_collection(self, name): | self.collection = self.db[name] |""".stripMargin, - "MongoConnection.py" - ).moreCode( - """ + "MongoConnection.py" + ).moreCode( + """ |from MongoConnection import MongoConnection | |class InstallationsDAO(MongoConnection): @@ -431,42 +456,52 @@ class TypeRecoveryPassTests extends PySrc2CpgFixture(withOssDataflow = false) { | return None | return dict(res).get("customerId", None) |""".stripMargin, - "InstallationDao.py" - ).moreCode( - """ + "InstallationDao.py" + ).moreCode( + """ |# dummy file to trigger isExternal = false on methods that are imported from here |""".stripMargin, - "pymongo.py" - ).cpg - - "resolve correct imports via tag nodes" in { - val List(a: ResolvedTypeDecl, b: ResolvedMethod, c: UnknownMethod, d: UnknownTypeDecl, e: UnknownImport) = - cpg.call.where(_.referencedImports).tag.toResolvedImport.toList: @unchecked - - a.fullName shouldBe "MongoConnection.py:.MongoConnection" - b.fullName shouldBe "MongoConnection.py:.MongoConnection.__init__" - c.fullName shouldBe "pymongo.py:.MongoClient.__init__" - d.fullName shouldBe "pymongo.py:.MongoClient" - e.path shouldBe Seq("django", "conf.py:.settings").mkString(File.separator) - } - - "recover a potential type for `self.collection` using the assignment at `get_collection` as a type hint" in { - val Some(selfFindFound) = cpg.typeDecl(".*InstallationsDAO.*").ast.isCall.name("find_one").headOption: @unchecked - selfFindFound.dynamicTypeHintFullName shouldBe Seq( - "__builtin.None.find_one", - "pymongo.py:.MongoClient.__init__...find_one" - ) - } - - "correctly determine that, despite being unable to resolve the correct method full name, that it is an internal method" in { - val Some(selfFindFound) = cpg.typeDecl(".*InstallationsDAO.*").ast.isCall.name("find_one").headOption: @unchecked - selfFindFound.callee.isExternal.toSeq shouldBe Seq(true, true, true) + "pymongo.py" + ).cpg + + "resolve correct imports via tag nodes" in { + val List( + a: ResolvedTypeDecl, + b: ResolvedMethod, + c: UnknownMethod, + d: UnknownTypeDecl, + e: UnknownImport + ) = + cpg.call.where(_.referencedImports).tag.toResolvedImport.toList: @unchecked + + a.fullName shouldBe "MongoConnection.py:.MongoConnection" + b.fullName shouldBe "MongoConnection.py:.MongoConnection.__init__" + c.fullName shouldBe "pymongo.py:.MongoClient.__init__" + d.fullName shouldBe "pymongo.py:.MongoClient" + e.path shouldBe Seq("django", "conf.py:.settings").mkString(File.separator) + } + + "recover a potential type for `self.collection` using the assignment at `get_collection` as a type hint" in { + val Some(selfFindFound) = cpg.typeDecl(".*InstallationsDAO.*").ast.isCall.name( + "find_one" + ).headOption: @unchecked + selfFindFound.dynamicTypeHintFullName shouldBe Seq( + "__builtin.None.find_one", + "pymongo.py:.MongoClient.__init__...find_one" + ) + } + + "correctly determine that, despite being unable to resolve the correct method full name, that it is an internal method" in { + val Some(selfFindFound) = cpg.typeDecl(".*InstallationsDAO.*").ast.isCall.name( + "find_one" + ).headOption: @unchecked + selfFindFound.callee.isExternal.toSeq shouldBe Seq(true, true, true) + } } - } - "a recursive field access based call type" should { - lazy val cpg = code( - """ + "a recursive field access based call type" should { + lazy val cpg = code( + """ |from flask import Flask, render_template |from flask_pymongo import PyMongo | @@ -481,18 +516,18 @@ class TypeRecoveryPassTests extends PySrc2CpgFixture(withOssDataflow = false) { | bikes = mongo.db.bikes.find() | return render_template("index.html", bikes=bikes) |""".stripMargin, - "app.py" - ) + "app.py" + ) - "manage to create a correct chain of dummy field accesses before the call" in { - val Some(bikeFind) = cpg.call.name("find").headOption: @unchecked - bikeFind.methodFullName shouldBe "flask_pymongo.py:.PyMongo.(db).(bikes).find" + "manage to create a correct chain of dummy field accesses before the call" in { + val Some(bikeFind) = cpg.call.name("find").headOption: @unchecked + bikeFind.methodFullName shouldBe "flask_pymongo.py:.PyMongo.(db).(bikes).find" + } } - } - "a call from an import where the import acts as a module" should { - lazy val cpg = code( - """import os + "a call from an import where the import acts as a module" should { + lazy val cpg = code( + """import os |import datadog | |# Initialize the Datadog client @@ -503,17 +538,17 @@ class TypeRecoveryPassTests extends PySrc2CpgFixture(withOssDataflow = false) { | |datadog.initialize(**options) |""".stripMargin, - "app.py" - ) + "app.py" + ) - "recover the import as an identifier and not directly as a call" in { - val Some(initCall) = cpg.call.name("initialize").headOption: @unchecked - initCall.methodFullName shouldBe "datadog.py:.initialize" + "recover the import as an identifier and not directly as a call" in { + val Some(initCall) = cpg.call.name("initialize").headOption: @unchecked + initCall.methodFullName shouldBe "datadog.py:.initialize" + } } - } - "a call made from within a call invocation" should { - lazy val cpg = code(""" + "a call made from within a call invocation" should { + lazy val cpg = code(""" |from __future__ import unicode_literals | |from django.db import migrations, models @@ -534,63 +569,82 @@ class TypeRecoveryPassTests extends PySrc2CpgFixture(withOssDataflow = false) { | ] |""".stripMargin) - "recover its full name successfully" in { - val Some(addFieldConstructor) = cpg.call.name("AddField").headOption: @unchecked - addFieldConstructor.methodFullName shouldBe Seq("django", "db.py:.migrations.AddField.__init__").mkString( - File.separator - ) - val Some(booleanFieldConstructor) = cpg.call.name("BooleanField").headOption: @unchecked - booleanFieldConstructor.methodFullName shouldBe Seq("django", "db.py:.models.BooleanField.__init__") - .mkString(File.separator) + "recover its full name successfully" in { + val Some(addFieldConstructor) = cpg.call.name("AddField").headOption: @unchecked + addFieldConstructor.methodFullName shouldBe Seq( + "django", + "db.py:.migrations.AddField.__init__" + ).mkString( + File.separator + ) + val Some(booleanFieldConstructor) = cpg.call.name("BooleanField").headOption: @unchecked + booleanFieldConstructor.methodFullName shouldBe Seq( + "django", + "db.py:.models.BooleanField.__init__" + ) + .mkString(File.separator) + } } - } - "a call made via an import from a directory" should { - lazy val cpg = code(""" + "a call made via an import from a directory" should { + lazy val cpg = code(""" |from data import db_session | |def foo(): | db_sess = db_session.create_session() | x = db_sess.query(foo, bar) |""".stripMargin) - .moreCode( - """ + .moreCode( + """ |from sqlalchemy.orm import Session | |def create_session() -> Session: | global __factory | return __factory() |""".stripMargin, - Seq("data", "db_session.py").mkString(File.separator) - ) - - "resolve correct imports via tag nodes" in { - val List( - sessionT: ResolvedTypeDecl, - sessionM: ResolvedMethod, - sqlSessionM: UnknownMethod, - sqlSessionT: UnknownTypeDecl - ) = cpg.call.where(_.referencedImports).tag.toResolvedImport.toList: @unchecked - sessionT.fullName shouldBe Seq("data", "db_session.py:").mkString(File.separator) - sessionM.fullName shouldBe Seq("data", "db_session.py:").mkString(File.separator) - sqlSessionM.fullName shouldBe Seq("sqlalchemy", "orm.py:.Session.__init__").mkString(File.separator) - sqlSessionT.fullName shouldBe Seq("sqlalchemy", "orm.py:.Session").mkString(File.separator) + Seq("data", "db_session.py").mkString(File.separator) + ) + + "resolve correct imports via tag nodes" in { + val List( + sessionT: ResolvedTypeDecl, + sessionM: ResolvedMethod, + sqlSessionM: UnknownMethod, + sqlSessionT: UnknownTypeDecl + ) = cpg.call.where(_.referencedImports).tag.toResolvedImport.toList: @unchecked + sessionT.fullName shouldBe Seq("data", "db_session.py:").mkString( + File.separator + ) + sessionM.fullName shouldBe Seq("data", "db_session.py:").mkString( + File.separator + ) + sqlSessionM.fullName shouldBe Seq( + "sqlalchemy", + "orm.py:.Session.__init__" + ).mkString(File.separator) + sqlSessionT.fullName shouldBe Seq("sqlalchemy", "orm.py:.Session").mkString( + File.separator + ) + } + + "recover its full name successfully" in { + val List(methodFullName) = cpg.call("query").methodFullName.l + methodFullName shouldBe Seq("sqlalchemy", "orm.py:.Session.query").mkString( + File.separator + ) + } + + "reflect these types as under the type full name" in { + val Some(ret) = cpg.method("create_session").methodReturn.headOption: @unchecked + ret.typeFullName shouldBe Seq("sqlalchemy", "orm.py:.Session").mkString( + File.separator + ) + } } - "recover its full name successfully" in { - val List(methodFullName) = cpg.call("query").methodFullName.l - methodFullName shouldBe Seq("sqlalchemy", "orm.py:.Session.query").mkString(File.separator) - } - - "reflect these types as under the type full name" in { - val Some(ret) = cpg.method("create_session").methodReturn.headOption: @unchecked - ret.typeFullName shouldBe Seq("sqlalchemy", "orm.py:.Session").mkString(File.separator) - } - } - - "recover a method ref from a field identifier" should { - lazy val cpg = code( - """ + "recover a method ref from a field identifier" should { + lazy val cpg = code( + """ |from django.conf.urls import url | |from student import views @@ -599,40 +653,46 @@ class TypeRecoveryPassTests extends PySrc2CpgFixture(withOssDataflow = false) { | url(r'^addStudent/$', views.add_student) |] |""".stripMargin, - "urls.py" - ).moreCode( - """ + "urls.py" + ).moreCode( + """ |def add_student(): | pass |""".stripMargin, - Seq("student", "views.py").mkString(File.separator) - ) - - "recover the method full name related" in { - val Some(methodRef) = cpg.methodRef.code("views.add_student").headOption: @unchecked - methodRef.methodFullName shouldBe Seq("student", "views.py:.add_student").mkString(File.separator) - methodRef.typeFullName shouldBe "" + Seq("student", "views.py").mkString(File.separator) + ) + + "recover the method full name related" in { + val Some(methodRef) = cpg.methodRef.code("views.add_student").headOption: @unchecked + methodRef.methodFullName shouldBe Seq( + "student", + "views.py:.add_student" + ).mkString(File.separator) + methodRef.typeFullName shouldBe "" + } } - } - "a type hint on a parameter" should { - lazy val cpg = code(""" + "a type hint on a parameter" should { + lazy val cpg = code(""" |import sqlalchemy.orm as orm | |async def get_user_by_email(email: str, db: orm.Session): | return db.query(user_models.User).filter(user_models.User.email == email).first() |""".stripMargin) - "be sufficient to resolve method full names at calls" in { - val List(call) = cpg.call("query").l - call.methodFullName shouldBe Seq("sqlalchemy", "orm.py:.Session.query").mkString(File.separator) - } + "be sufficient to resolve method full names at calls" in { + val List(call) = cpg.call("query").l + call.methodFullName shouldBe Seq( + "sqlalchemy", + "orm.py:.Session.query" + ).mkString(File.separator) + } - } + } - "recover a member call from a reference to an imported global variable" should { - lazy val cpg = code( - """from api import db + "recover a member call from a reference to an imported global variable" should { + lazy val cpg = code( + """from api import db | |class UserModel(db.Model): | @@ -644,34 +704,38 @@ class TypeRecoveryPassTests extends PySrc2CpgFixture(withOssDataflow = false) { | print(f"User with username={self.username} already exist") | db.session.rollback() |""".stripMargin, - Seq("api", "models", "user.py").mkString(File.separator) - ).moreCode( - """from flask_sqlalchemy import SQLAlchemy + Seq("api", "models", "user.py").mkString(File.separator) + ).moreCode( + """from flask_sqlalchemy import SQLAlchemy | |app = Flask(__name__, static_folder=Config.UPLOAD_FOLDER) | |db = SQLAlchemy(app) |""".stripMargin, - Seq("api", "__init__.py").mkString(File.separator) - ) - - "resolve correct imports via tag nodes" in { - val List(sqlSessionM: UnknownMethod, sqlSessionT: UnknownTypeDecl, db: ResolvedMember) = - cpg.call.where(_.referencedImports).tag.toResolvedImport.toList: @unchecked - sqlSessionM.fullName shouldBe Seq("flask_sqlalchemy.py:.SQLAlchemy.__init__").mkString(File.separator) - sqlSessionT.fullName shouldBe Seq("flask_sqlalchemy.py:.SQLAlchemy").mkString(File.separator) - db.basePath shouldBe Seq("api", "__init__.py:").mkString(File.separator) - db.memberName shouldBe "db" - } - - "recover a call to `add`" in { - val Some(addCall) = cpg.call("add").headOption: @unchecked - addCall.methodFullName shouldBe "flask_sqlalchemy.py:.SQLAlchemy.(session).add" + Seq("api", "__init__.py").mkString(File.separator) + ) + + "resolve correct imports via tag nodes" in { + val List(sqlSessionM: UnknownMethod, sqlSessionT: UnknownTypeDecl, db: ResolvedMember) = + cpg.call.where(_.referencedImports).tag.toResolvedImport.toList: @unchecked + sqlSessionM.fullName shouldBe Seq( + "flask_sqlalchemy.py:.SQLAlchemy.__init__" + ).mkString(File.separator) + sqlSessionT.fullName shouldBe Seq("flask_sqlalchemy.py:.SQLAlchemy").mkString( + File.separator + ) + db.basePath shouldBe Seq("api", "__init__.py:").mkString(File.separator) + db.memberName shouldBe "db" + } + + "recover a call to `add`" in { + val Some(addCall) = cpg.call("add").headOption: @unchecked + addCall.methodFullName shouldBe "flask_sqlalchemy.py:.SQLAlchemy.(session).add" + } } - } - "handle a wrapper function with the same name as an imported function" should { - lazy val cpg = code(""" + "handle a wrapper function with the same name as an imported function" should { + lazy val cpg = code(""" |import requests | |class Client: @@ -690,16 +754,16 @@ class TypeRecoveryPassTests extends PySrc2CpgFixture(withOssDataflow = false) { | return response |""".stripMargin) - "recover the child function `post` path correctly via receiver" in { - val Some(postCallReceiver) = cpg.identifier("requests").headOption: @unchecked - postCallReceiver.typeFullName shouldBe "requests.py:" - val Some(postCall) = cpg.call("post").headOption: @unchecked - postCall.methodFullName shouldBe "requests.py:.post" + "recover the child function `post` path correctly via receiver" in { + val Some(postCallReceiver) = cpg.identifier("requests").headOption: @unchecked + postCallReceiver.typeFullName shouldBe "requests.py:" + val Some(postCall) = cpg.call("post").headOption: @unchecked + postCall.methodFullName shouldBe "requests.py:.post" + } } - } - "handle a call from parameter with a type hint" should { - lazy val cpg = code(""" + "handle a call from parameter with a type hint" should { + lazy val cpg = code(""" |import models.user as user_models |import sqlalchemy.orm as orm | @@ -707,23 +771,31 @@ class TypeRecoveryPassTests extends PySrc2CpgFixture(withOssDataflow = false) { | return db.query(user_models.User).filter(user_models.User.email == email).first() |""".stripMargin) - "with the correct identifier and call types" in { - val Some(postCallReceiver) = cpg.identifier("db").headOption: @unchecked - postCallReceiver.typeFullName shouldBe Seq("sqlalchemy", "orm.py:.Session").mkString(File.separator) - val Some(postCall) = cpg.call("query").headOption: @unchecked - postCall.methodFullName shouldBe Seq("sqlalchemy", "orm.py:.Session.query").mkString(File.separator) + "with the correct identifier and call types" in { + val Some(postCallReceiver) = cpg.identifier("db").headOption: @unchecked + postCallReceiver.typeFullName shouldBe Seq( + "sqlalchemy", + "orm.py:.Session" + ).mkString(File.separator) + val Some(postCall) = cpg.call("query").headOption: @unchecked + postCall.methodFullName shouldBe Seq( + "sqlalchemy", + "orm.py:.Session.query" + ).mkString(File.separator) + } + + "reflect these types as under the type full name" in { + val List(p1, p2) = cpg.method("get_user_by_email").parameter.l + p1.typeFullName shouldBe "__builtin.str" + p2.typeFullName shouldBe Seq("sqlalchemy", "orm.py:.Session").mkString( + File.separator + ) + } } - "reflect these types as under the type full name" in { - val List(p1, p2) = cpg.method("get_user_by_email").parameter.l - p1.typeFullName shouldBe "__builtin.str" - p2.typeFullName shouldBe Seq("sqlalchemy", "orm.py:.Session").mkString(File.separator) - } - } - - "Import statement with method ref sample one" in { - val controller = - """ + "Import statement with method ref sample one" in { + val controller = + """ |from django.contrib import admin |from django.urls import path |from django.conf.urls import url @@ -733,23 +805,27 @@ class TypeRecoveryPassTests extends PySrc2CpgFixture(withOssDataflow = false) { | url(r'allPage', views.all_page) |] |""".stripMargin - val views = - """ + val views = + """ |def all_page(request): | print("All pages") |""".stripMargin - val cpg = code("print('Hello, world!')") - .moreCode(controller, Seq("controller", "urls.py").mkString(File.separator)) - .moreCode(views, Seq("student", "views.py").mkString(File.separator)) - - val Some(allPageRef) = cpg.call.methodFullName("django.*[.](path|url)").argument.isMethodRef.headOption: @unchecked - allPageRef.methodFullName shouldBe Seq("student", "views.py:.all_page").mkString(File.separator) - allPageRef.code shouldBe "views.all_page" - } - - "Import statement with method ref sample two" in { - val controller = - """ + val cpg = code("print('Hello, world!')") + .moreCode(controller, Seq("controller", "urls.py").mkString(File.separator)) + .moreCode(views, Seq("student", "views.py").mkString(File.separator)) + + val Some(allPageRef) = cpg.call.methodFullName( + "django.*[.](path|url)" + ).argument.isMethodRef.headOption: @unchecked + allPageRef.methodFullName shouldBe Seq("student", "views.py:.all_page").mkString( + File.separator + ) + allPageRef.code shouldBe "views.all_page" + } + + "Import statement with method ref sample two" in { + val controller = + """ |from django.contrib import admin |from django.urls import path |from django.conf.urls import url @@ -759,22 +835,24 @@ class TypeRecoveryPassTests extends PySrc2CpgFixture(withOssDataflow = false) { | url(r'allPage', views.all_page) |] |""".stripMargin - val views = - """ + val views = + """ |def all_page(request): | print("All pages") |""".stripMargin - val cpg = code(controller, "urls.py") - .moreCode(views, "views.py") - - val Some(allPageRef) = cpg.call.methodFullName("django.*[.](path|url)").argument.isMethodRef.headOption: @unchecked - allPageRef.methodFullName shouldBe "views.py:.all_page" - allPageRef.code shouldBe "views.all_page" - } + val cpg = code(controller, "urls.py") + .moreCode(views, "views.py") + + val Some(allPageRef) = cpg.call.methodFullName( + "django.*[.](path|url)" + ).argument.isMethodRef.headOption: @unchecked + allPageRef.methodFullName shouldBe "views.py:.all_page" + allPageRef.code shouldBe "views.all_page" + } - "Import statement with method ref sample three" in { - val controller = - """ + "Import statement with method ref sample three" in { + val controller = + """ |from django.contrib import admin |from django.urls import path |from django.conf.urls import url @@ -784,22 +862,26 @@ class TypeRecoveryPassTests extends PySrc2CpgFixture(withOssDataflow = false) { | url(r'allPage', views.all_page) |] |""".stripMargin - val views = - """ + val views = + """ |def all_page(request): | print("All pages") |""".stripMargin - val cpg = code(controller, Seq("controller", "urls.py").mkString(File.separator)) - .moreCode(views, Seq("controller", "views.py").mkString(File.separator)) - - val Some(allPageRef) = cpg.call.methodFullName("django.*[.](path|url)").argument.isMethodRef.headOption: @unchecked - allPageRef.methodFullName shouldBe Seq("controller", "views.py:.all_page").mkString(File.separator) - allPageRef.code shouldBe "views.all_page" - } + val cpg = code(controller, Seq("controller", "urls.py").mkString(File.separator)) + .moreCode(views, Seq("controller", "views.py").mkString(File.separator)) + + val Some(allPageRef) = cpg.call.methodFullName( + "django.*[.](path|url)" + ).argument.isMethodRef.headOption: @unchecked + allPageRef.methodFullName shouldBe Seq("controller", "views.py:.all_page").mkString( + File.separator + ) + allPageRef.code shouldBe "views.all_page" + } - "Import statement with method ref sample four" in { - val controller = - """ + "Import statement with method ref sample four" in { + val controller = + """ |from django.contrib import admin |from django.urls import path |from django.conf.urls import url @@ -809,22 +891,26 @@ class TypeRecoveryPassTests extends PySrc2CpgFixture(withOssDataflow = false) { | url(r'allPage', all_page) |] |""".stripMargin - val views = - """ + val views = + """ |def all_page(request): | print("All pages") |""".stripMargin - val cpg = code(controller, Seq("controller", "urls.py").mkString(File.separator)) - .moreCode(views, Seq("controller", "views.py").mkString(File.separator)) - - val Some(allPageRef) = cpg.call.methodFullName("django.*[.](path|url)").argument.isMethodRef.headOption: @unchecked - allPageRef.methodFullName shouldBe Seq("controller", "views.py:.all_page").mkString(File.separator) - allPageRef.code shouldBe "all_page" - } + val cpg = code(controller, Seq("controller", "urls.py").mkString(File.separator)) + .moreCode(views, Seq("controller", "views.py").mkString(File.separator)) + + val Some(allPageRef) = cpg.call.methodFullName( + "django.*[.](path|url)" + ).argument.isMethodRef.headOption: @unchecked + allPageRef.methodFullName shouldBe Seq("controller", "views.py:.all_page").mkString( + File.separator + ) + allPageRef.code shouldBe "all_page" + } - "Import statement with method ref sample five" in { - val controller = - """ + "Import statement with method ref sample five" in { + val controller = + """ |from django.contrib import admin |from django.urls import path |from django.conf.urls import url @@ -834,22 +920,26 @@ class TypeRecoveryPassTests extends PySrc2CpgFixture(withOssDataflow = false) { | url(r'allPage', all_page) |] |""".stripMargin - val views = - """ + val views = + """ |def all_page(request): | print("All pages") |""".stripMargin - val cpg = code(controller, Seq("controller", "urls.py").mkString(File.separator)) - .moreCode(views, Seq("student", "views.py").mkString(File.separator)) - - val Some(allPageRef) = cpg.call.methodFullName("django.*[.](path|url)").argument.isMethodRef.headOption: @unchecked - allPageRef.methodFullName shouldBe Seq("student", "views.py:.all_page").mkString(File.separator) - allPageRef.code shouldBe "all_page" - } + val cpg = code(controller, Seq("controller", "urls.py").mkString(File.separator)) + .moreCode(views, Seq("student", "views.py").mkString(File.separator)) + + val Some(allPageRef) = cpg.call.methodFullName( + "django.*[.](path|url)" + ).argument.isMethodRef.headOption: @unchecked + allPageRef.methodFullName shouldBe Seq("student", "views.py:.all_page").mkString( + File.separator + ) + allPageRef.code shouldBe "all_page" + } - "Import statement with method ref sample six" in { - val controller = - """ + "Import statement with method ref sample six" in { + val controller = + """ |from django.urls import path |from authy.views import PasswordChange | @@ -857,24 +947,29 @@ class TypeRecoveryPassTests extends PySrc2CpgFixture(withOssDataflow = false) { | path('changepassword/', PasswordChange, name='change_password') |] |""".stripMargin - val views = - """from django.contrib.auth.decorators import login_required + val views = + """from django.contrib.auth.decorators import login_required | |@login_required |def PasswordChange(request): | print("All pages") | |""".stripMargin - val cpg = code(controller, Seq("controller", "urls.py").mkString(File.separator)) - .moreCode(views, Seq("authy", "views.py").mkString(File.separator)) - - val Some(allPageRef) = cpg.call.methodFullName("django.*[.](path|url)").argument.isMethodRef.headOption: @unchecked - allPageRef.methodFullName shouldBe Seq("authy", "views.py:.PasswordChange").mkString(File.separator) - allPageRef.code shouldBe "PasswordChange" - } + val cpg = code(controller, Seq("controller", "urls.py").mkString(File.separator)) + .moreCode(views, Seq("authy", "views.py").mkString(File.separator)) + + val Some(allPageRef) = cpg.call.methodFullName( + "django.*[.](path|url)" + ).argument.isMethodRef.headOption: @unchecked + allPageRef.methodFullName shouldBe Seq( + "authy", + "views.py:.PasswordChange" + ).mkString(File.separator) + allPageRef.code shouldBe "PasswordChange" + } - "Classes extended by function calls" should { - lazy val cpg = code(""" + "Classes extended by function calls" should { + lazy val cpg = code(""" |from sqlalchemy.ext.declarative import declarative_base | |class Foo(declarative_base(metadata=metadata)): @@ -886,21 +981,29 @@ class TypeRecoveryPassTests extends PySrc2CpgFixture(withOssDataflow = false) { | |""".stripMargin) - "present an appropriate dummy type for direct call returns" in { - cpg.typeDecl("Foo").inheritsFromTypeFullName.l shouldBe List( - Seq("sqlalchemy", "ext", "declarative.py:.declarative_base.").mkString(File.separator) - ) + "present an appropriate dummy type for direct call returns" in { + cpg.typeDecl("Foo").inheritsFromTypeFullName.l shouldBe List( + Seq( + "sqlalchemy", + "ext", + "declarative.py:.declarative_base." + ).mkString(File.separator) + ) + } + + "present an appropriate dummy type for call results held by identifiers" in { + cpg.typeDecl("Bar").inheritsFromTypeFullName.l shouldBe List( + Seq( + "sqlalchemy", + "ext", + "declarative.py:.declarative_base." + ).mkString(File.separator) + ) + } } - "present an appropriate dummy type for call results held by identifiers" in { - cpg.typeDecl("Bar").inheritsFromTypeFullName.l shouldBe List( - Seq("sqlalchemy", "ext", "declarative.py:.declarative_base.").mkString(File.separator) - ) - } - } - - "Class methods with the `@classmethod` decorator" should { - lazy val cpg = code(""" + "Class methods with the `@classmethod` decorator" should { + lazy val cpg = code(""" |class MyClass: | | @classmethod @@ -909,51 +1012,57 @@ class TypeRecoveryPassTests extends PySrc2CpgFixture(withOssDataflow = false) { | |""".stripMargin) - "resolve the cls variable" in { - cpg.method("class_method").parameter.name("cls").typeFullName.headOption shouldBe Some( - "Test0.py:.MyClass" - ) + "resolve the cls variable" in { + cpg.method("class_method").parameter.name("cls").typeFullName.headOption shouldBe Some( + "Test0.py:.MyClass" + ) + } } - } - "calls from imported class fields" should { - lazy val cpg = code( - """ + "calls from imported class fields" should { + lazy val cpg = code( + """ |from .models import Profile | |def profile(request): | profile = Profile.objects.filter(user=request.user).order_by('-id')[0] |""".stripMargin, - "views.py" - ).moreCode( - """ + "views.py" + ).moreCode( + """ |from django.db import models | |class Profile(models.Model): | user = models.CharField(max_length=20) | name = models.CharField(max_length=50) |""".stripMargin, - "models.py" - ) - - "resolve correct imports via tag nodes" in { - val List(djangoModels: UnknownImport, profileT: ResolvedTypeDecl, profileM: ResolvedMethod) = - cpg.call.where(_.referencedImports).tag.toResolvedImport.toList: @unchecked - djangoModels.path shouldBe Seq("django", "db.py:.models").mkString(File.separator) - profileT.fullName shouldBe "models.py:.Profile" - profileM.fullName shouldBe "models.py:.Profile.__init__" - } + "models.py" + ) + + "resolve correct imports via tag nodes" in { + val List( + djangoModels: UnknownImport, + profileT: ResolvedTypeDecl, + profileM: ResolvedMethod + ) = + cpg.call.where(_.referencedImports).tag.toResolvedImport.toList: @unchecked + djangoModels.path shouldBe Seq("django", "db.py:.models").mkString( + File.separator + ) + profileT.fullName shouldBe "models.py:.Profile" + profileM.fullName shouldBe "models.py:.Profile.__init__" + } + + "resolve the `filter` call" in { + val Some(call) = cpg.call.nameExact("filter").headOption: @unchecked + call.methodFullName shouldBe "models.py:.Profile.(objects).filter" + } - "resolve the `filter` call" in { - val Some(call) = cpg.call.nameExact("filter").headOption: @unchecked - call.methodFullName shouldBe "models.py:.Profile.(objects).filter" } - } - - "Recovered values that are returned in methods" should { - lazy val cpg = code( - """ + "Recovered values that are returned in methods" should { + lazy val cpg = code( + """ |class Connector: | | botoClient = boto("s3") @@ -965,9 +1074,9 @@ class TypeRecoveryPassTests extends PySrc2CpgFixture(withOssDataflow = false) { | return self.botoClient | |""".stripMargin, - Seq("lib", "connector.py").mkString(File.separator) - ).moreCode( - """ + Seq("lib", "connector.py").mkString(File.separator) + ).moreCode( + """ |from lib.connector import Connector | |class Impl: @@ -975,31 +1084,41 @@ class TypeRecoveryPassTests extends PySrc2CpgFixture(withOssDataflow = false) { | c = Connector() | c.getBotoClient().getS3Object() |""".stripMargin, - "impl.py" - ) - - "resolve correct imports via tag nodes" in { - val List(connectorT: ResolvedTypeDecl, connectorM: ResolvedMethod) = - cpg.call.where(_.referencedImports).tag.toResolvedImport.toList: @unchecked - connectorT.fullName shouldBe Seq("lib", "connector.py:.Connector").mkString(File.separator) - connectorM.fullName shouldBe Seq("lib", "connector.py:.Connector.__init__").mkString(File.separator) - } - - "be able to use field accesses as type hints" in { - val Some(c) = cpg.identifier("c").headOption: @unchecked - c.typeFullName shouldBe Seq("lib", "connector.py:.Connector").mkString(File.separator) - val Some(getBotoClient) = cpg.call.nameExact("getBotoClient").headOption: @unchecked - getBotoClient.methodFullName shouldBe Seq("lib", "connector.py:.Connector.getBotoClient").mkString( - File.separator - ) - val Some(getS3Object) = cpg.call.nameExact("getS3Object").headOption: @unchecked - getS3Object.methodFullName shouldBe "boto..getS3Object" + "impl.py" + ) + + "resolve correct imports via tag nodes" in { + val List(connectorT: ResolvedTypeDecl, connectorM: ResolvedMethod) = + cpg.call.where(_.referencedImports).tag.toResolvedImport.toList: @unchecked + connectorT.fullName shouldBe Seq("lib", "connector.py:.Connector").mkString( + File.separator + ) + connectorM.fullName shouldBe Seq( + "lib", + "connector.py:.Connector.__init__" + ).mkString(File.separator) + } + + "be able to use field accesses as type hints" in { + val Some(c) = cpg.identifier("c").headOption: @unchecked + c.typeFullName shouldBe Seq("lib", "connector.py:.Connector").mkString( + File.separator + ) + val Some(getBotoClient) = cpg.call.nameExact("getBotoClient").headOption: @unchecked + getBotoClient.methodFullName shouldBe Seq( + "lib", + "connector.py:.Connector.getBotoClient" + ).mkString( + File.separator + ) + val Some(getS3Object) = cpg.call.nameExact("getS3Object").headOption: @unchecked + getS3Object.methodFullName shouldBe "boto..getS3Object" + } } - } - "Static class calls from imported types" should { - lazy val cpg = code( - """ + "Static class calls from imported types" should { + lazy val cpg = code( + """ |from db.redis import RedisDB | |class FooServer(): @@ -1010,9 +1129,9 @@ class TypeRecoveryPassTests extends PySrc2CpgFixture(withOssDataflow = false) { | redis = await RedisDB.instance().get_redis() | await redis.publish_json(123, {}) |""".stripMargin, - "fooserver.py" - ).moreCode( - """ + "fooserver.py" + ).moreCode( + """ |import aioredis | |class RedisDB(object): @@ -1033,34 +1152,44 @@ class TypeRecoveryPassTests extends PySrc2CpgFixture(withOssDataflow = false) { | redis = await self.get_redis() | await redis.set(key, value, expire=expires) |""".stripMargin, - Seq("db", "redis.py").mkString(File.separator) - ) - - "assert the method properties in RedisDB, especially quoted type hints" in { - val Some(redisDB) = cpg.typeDecl.nameExact("RedisDB").method.nameExact("").headOption: @unchecked - val List(instanceM, getRedisM, setM) = redisDB.astOut.isMethod.nameExact("instance", "get_redis", "set").l - - instanceM.methodReturn.typeFullName shouldBe Seq("db", "redis.py:.RedisDB").mkString(File.separator) - getRedisM.methodReturn.typeFullName shouldBe "aioredis.py:.Redis" - setM.methodReturn.typeFullName shouldBe "ANY" - } - - "be able to generate an appropriate dummy value" in { - val Some(redisSet) = cpg.call.code(".*set.*apiuserscache.*").headOption: @unchecked - redisSet.methodFullName shouldBe Seq("db", "redis.py:.RedisDB.set").mkString(File.separator) - } - - "be able to handle a simple call off an alias" in { - val Some(redisGet) = cpg.call.nameExact("publish_json").headOption: @unchecked - redisGet.methodFullName shouldBe Seq("db", "redis.py:.RedisDB.get_redis.publish_json").mkString( - File.separator - ) + Seq("db", "redis.py").mkString(File.separator) + ) + + "assert the method properties in RedisDB, especially quoted type hints" in { + val Some(redisDB) = + cpg.typeDecl.nameExact("RedisDB").method.nameExact("").headOption: @unchecked + val List(instanceM, getRedisM, setM) = + redisDB.astOut.isMethod.nameExact("instance", "get_redis", "set").l + + instanceM.methodReturn.typeFullName shouldBe Seq( + "db", + "redis.py:.RedisDB" + ).mkString(File.separator) + getRedisM.methodReturn.typeFullName shouldBe "aioredis.py:.Redis" + setM.methodReturn.typeFullName shouldBe "ANY" + } + + "be able to generate an appropriate dummy value" in { + val Some(redisSet) = cpg.call.code(".*set.*apiuserscache.*").headOption: @unchecked + redisSet.methodFullName shouldBe Seq("db", "redis.py:.RedisDB.set").mkString( + File.separator + ) + } + + "be able to handle a simple call off an alias" in { + val Some(redisGet) = cpg.call.nameExact("publish_json").headOption: @unchecked + redisGet.methodFullName shouldBe Seq( + "db", + "redis.py:.RedisDB.get_redis.publish_json" + ).mkString( + File.separator + ) + } } - } - "Type instantiation via caller" should { - lazy val cpg = code( - """ + "Type instantiation via caller" should { + lazy val cpg = code( + """ |from oauth2 import Token | |class FlickrAuth(ConsumerBasedOAuth): @@ -1068,10 +1197,10 @@ class TypeRecoveryPassTests extends PySrc2CpgFixture(withOssDataflow = false) { | response = self.fetch_response(request) | token = Token.from_string(response) |""".stripMargin, - Seq("social_auth", "backends", "contrib", "flickr.py").mkString(File.separator) - ) - .moreCode( - """ + Seq("social_auth", "backends", "contrib", "flickr.py").mkString(File.separator) + ) + .moreCode( + """ |class Token(object): | | key = None @@ -1104,27 +1233,36 @@ class TypeRecoveryPassTests extends PySrc2CpgFixture(withOssDataflow = false) { | token = Token(key, secret) | return token |""".stripMargin, - Seq("oauth2", "__init__.py").mkString(File.separator) - ) - - "instantiate the return value correctly under `from_string`" in { - val Some(token) = cpg.method("from_string").ast.isIdentifier.nameExact("token").headOption: @unchecked - token.typeFullName shouldBe Seq("oauth2", "__init__.py:.Token").mkString(File.separator) - val Some(fromString) = cpg.method("from_string").methodReturn.headOption: @unchecked - fromString.typeFullName shouldBe Seq("oauth2", "__init__.py:.Token").mkString(File.separator) - } + Seq("oauth2", "__init__.py").mkString(File.separator) + ) + + "instantiate the return value correctly under `from_string`" in { + val Some(token) = + cpg.method("from_string").ast.isIdentifier.nameExact("token").headOption: @unchecked + token.typeFullName shouldBe Seq("oauth2", "__init__.py:.Token").mkString( + File.separator + ) + val Some(fromString) = cpg.method("from_string").methodReturn.headOption: @unchecked + fromString.typeFullName shouldBe Seq("oauth2", "__init__.py:.Token").mkString( + File.separator + ) + } + + "propagate the type in the return value" in { + val Some(token) = cpg.method("access_token").ast.isIdentifier.nameExact( + "token" + ).headOption: @unchecked + token.typeFullName shouldBe Seq("oauth2", "__init__.py:.Token").mkString( + File.separator + ) + } - "propagate the type in the return value" in { - val Some(token) = cpg.method("access_token").ast.isIdentifier.nameExact("token").headOption: @unchecked - token.typeFullName shouldBe Seq("oauth2", "__init__.py:.Token").mkString(File.separator) } - } - - "Imports from two module neighbours" should { + "Imports from two module neighbours" should { - lazy val cpg = code( - """ + lazy val cpg = code( + """ |from fastapi import FastAPI |import itemsrouter |app = FastAPI() @@ -1135,9 +1273,9 @@ class TypeRecoveryPassTests extends PySrc2CpgFixture(withOssDataflow = false) { | responses={404: {"description": "Not found"}}, |) |""".stripMargin, - Seq("code", "main.py").mkString(File.separator) - ).moreCode( - """ + Seq("code", "main.py").mkString(File.separator) + ).moreCode( + """ |from fastapi import APIRouter | |router = APIRouter() @@ -1147,21 +1285,184 @@ class TypeRecoveryPassTests extends PySrc2CpgFixture(withOssDataflow = false) { | return fake_items_db | |""".stripMargin, - Seq("code", "itemsrouter.py").mkString(File.separator) - ) - - "preserve the filename path relative to the root and not themselves" in { - val itemsrouter = cpg.identifier.where(_.typeFullName(".*itemsrouter.py:")).l - itemsrouter.forall( - _.typeFullName == Seq("code", "itemsrouter.py:").mkString(File.separator) - ) shouldBe true + Seq("code", "itemsrouter.py").mkString(File.separator) + ) + + "preserve the filename path relative to the root and not themselves" in { + val itemsrouter = cpg.identifier.where(_.typeFullName(".*itemsrouter.py:")).l + itemsrouter.forall( + _.typeFullName == Seq("code", "itemsrouter.py:").mkString(File.separator) + ) shouldBe true + } + + "correctly infer the `fastapi` types" in { + cpg.identifier("fastapi").forall( + _.typeFullName == "fastapi.py:.APIRouter" + ) shouldBe true + cpg.identifier("app").forall( + _.typeFullName == "fastapi.py:.FastAPI" + ) shouldBe true + } + } - "correctly infer the `fastapi` types" in { - cpg.identifier("fastapi").forall(_.typeFullName == "fastapi.py:.APIRouter") shouldBe true - cpg.identifier("app").forall(_.typeFullName == "fastapi.py:.FastAPI") shouldBe true + "assignment to non-chained index access of an imported member method call" should { + val cpg = code( + """ + |import foo + |x = foo.bar() + |y = x[0] + |""".stripMargin + ) + + "provide meaningful typeFullName for the target of the first assignment" in { + cpg.assignment.target.isIdentifier.name("x").l match + case List(x) => x.typeFullName shouldBe "foo.py:.bar." + case result => fail(s"Expected single assignment to x, but got $result") + } + + "provide meaningful typeFullName for the target of the second assignment" in { + cpg.assignment.target.isIdentifier.name("y").l match + case List(y) => + y.typeFullName shouldBe "foo.py:.bar.." + case result => fail(s"Expected single assignment to y, but got $result") + } } - } + "assignment to chained index access of an imported member method call" should { + val cpg = code( + """ + |import foo + |y = foo.bar()[0] + |""".stripMargin + ) + + "provide meaningful typeFullName for the target of the assignment" in { + cpg.assignment.target.isIdentifier.name("y").l match + case List(y) => y.typeFullName shouldBe "foo.py:.bar." + case result => fail(s"Expected single assignment to y, but got $result") + } + } + + "assignment to interspersed index access with imported method calls" should { + val cpg = code( + """ + |import foo + |x = foo.bar()[0].baz() + |""".stripMargin + ) + + "have correct methodFullName for `bar`" in { + cpg.call.name("bar").l match + case List(bar) => bar.methodFullName shouldBe "foo.py:.bar" + case result => fail(s"Expected single call to bar, but got $result") + } + + "have correct methodFullName for `baz`" in { + cpg.call.name("baz").l match + case List(baz) => + baz.methodFullName shouldBe "foo.py:.bar..baz" + case result => fail(s"Expected single call to baz, but got $result") + } + + // TODO: Missing the last . Needs to take into account the lowering of consecutive + // field accesses into three-address code blocks. + "provide meaningful typeFullName for the target of the assignment" ignore { + cpg.assignment.target.isIdentifier.name("x").l match + case List(x) => x.typeFullName shouldBe "foo.py:.bar..baz" + case result => fail(s"Expected single assignment to x, but got $result") + } + } -} + "call to interspersed index access with imported method calls and constructors" should { + val cpg = code( + """ + |import boto3 + |sqs = boto3.resource('sqs') + |queue = sqs.Queue('url') + |queue.receive_messages()[0].delete() + |""".stripMargin + ) + + "have correct methodFullName for `delete`" in { + cpg.call.name("delete").l match + case List(delete) => + delete.methodFullName shouldBe "boto3.py:.resource..Queue.receive_messages..delete" + case result => fail(s"Expected single call to delete, but got $result") + } + + "have correct methodFullName for `resource`" in { + cpg.call.name("resource").l match + case List(resource) => resource.methodFullName shouldBe "boto3.py:.resource" + case result => fail(s"Expected single call to resource, but got $result") + } + + "have correct methodFullName for `receive_messages`" in { + cpg.call.name("receive_messages").l match + case List(recv) => + recv.methodFullName shouldBe "boto3.py:.resource..Queue.receive_messages" + case result => fail(s"Expected single call to receive_messages, but got $result") + } + + "provide meaningful typeFullName for `sqs`" in { + cpg.assignment.target.isIdentifier.name("sqs").l match + case List(sqs) => + sqs.typeFullName shouldBe "boto3.py:.resource." + case result => fail(s"Expected single assignment to sqs, but got $result") + } + + "provide meaningful typeFullName for `queue`" in { + cpg.assignment.target.isIdentifier.name("queue").l match + case List(queue) => + queue.typeFullName shouldBe "boto3.py:.resource..Queue" + case result => fail(s"Expected single assignment to queue, but got $result") + } + } + + "`__builtin.print` call with an external non-imported call result variable for argument" should { + val cpg = code( + """ + |a = foo(10) + |print(a) + |""".stripMargin + ) + "have correct methodFullName for `print`" in { + cpg.call("print").l match + case List(printCall) => printCall.methodFullName shouldBe "__builtin.print" + case result => fail(s"Expected single print call but got $result") + } + "have correct methodFullName for `foo`" in { + cpg.call("foo").l match + case List(fooCall) => fooCall.methodFullName shouldBe "foo" + case result => fail(s"Expected single foo call but got $result") + } + + "provide meaningful typeFullName for the target of assignment" in { + cpg.assignment.target.isIdentifier.name("a").l match + case List(a) => a.typeFullName shouldBe "foo." + case result => fail(s"Expected single assignment to a, but got $result") + } + } + + "assignment to non imported call with int variable for argument" should { + val cpg = code( + """ + |a = 10 + |b = foo(a) + |""".stripMargin) + + "have correct methodFullName for `foo`" in { + cpg.call("foo").l match { + case List(fooCall) => fooCall.methodFullName shouldBe "__builtin.int.foo" + case result => fail(s"Expected single foo call but got $result") + } + } + + "provide meaningful typeFullName for the target of the assignment" in { + cpg.assignment.target.isIdentifier.name("b").l match { + case List(b) => b.typeFullName shouldBe "foo." + case result => fail(s"Expected single assignment to b, but got $result") + } + } + } +end TypeRecoveryPassTests diff --git a/platform/frontends/x2cpg/src/main/scala/io/appthreat/x2cpg/passes/frontend/XTypeRecovery.scala b/platform/frontends/x2cpg/src/main/scala/io/appthreat/x2cpg/passes/frontend/XTypeRecovery.scala index 8d911865..18406b20 100644 --- a/platform/frontends/x2cpg/src/main/scala/io/appthreat/x2cpg/passes/frontend/XTypeRecovery.scala +++ b/platform/frontends/x2cpg/src/main/scala/io/appthreat/x2cpg/passes/frontend/XTypeRecovery.scala @@ -422,7 +422,7 @@ abstract class RecoverForXCompilationUnit[CompilationUnitType <: AstNode]( visitIdentifierAssignedToConstructor(i, c) else if symbolTable.contains(c) then visitIdentifierAssignedToCallRetVal(i, c) - else if c.argument.headOption.exists(symbolTable.contains) then + else if c.argument.argumentIndex(0).headOption.exists(symbolTable.contains) then setCallMethodFullNameFromBase(c) // Repeat this method now that the call has a type visitIdentifierAssignedToCall(i, c) diff --git a/platform/src/universal/schema-extender/build.sbt b/platform/src/universal/schema-extender/build.sbt index 6566e7d3..be40d153 100644 --- a/platform/src/universal/schema-extender/build.sbt +++ b/platform/src/universal/schema-extender/build.sbt @@ -1,6 +1,6 @@ name := "schema-extender" -ThisBuild / scalaVersion := "3.4.1" +ThisBuild / scalaVersion := "3.4.2" val cpgVersion = IO.read(file("cpg-version")) diff --git a/poetry.lock b/poetry.lock index 84d69182..6a1d0482 100644 --- a/poetry.lock +++ b/poetry.lock @@ -404,13 +404,13 @@ css = ["tinycss2 (>=1.1.0,<1.3)"] [[package]] name = "certifi" -version = "2024.2.2" +version = "2024.6.2" description = "Python package for providing Mozilla's CA Bundle." optional = false python-versions = ">=3.6" files = [ - {file = "certifi-2024.2.2-py3-none-any.whl", hash = "sha256:dc383c07b76109f368f6106eee2b593b04a011ea4d55f652c6ca24a754d1cdd1"}, - {file = "certifi-2024.2.2.tar.gz", hash = "sha256:0569859f95fc761b18b45ef421b1290a0f65f147e92a1e5eb3e635f9a5e4e66f"}, + {file = "certifi-2024.6.2-py3-none-any.whl", hash = "sha256:ddc6c8ce995e6987e7faf5e3f1b02b302836a0e5d98ece18392cb1a36c72ad56"}, + {file = "certifi-2024.6.2.tar.gz", hash = "sha256:3cd43f1c6fa7dedc5899d69d3ad0398fd018ad1a17fba83ddaf78aa46c747516"}, ] [[package]] @@ -683,63 +683,63 @@ test-no-images = ["pytest", "pytest-cov", "pytest-xdist", "wurlitzer"] [[package]] name = "coverage" -version = "7.5.3" +version = "7.5.4" description = "Code coverage measurement for Python" optional = false python-versions = ">=3.8" files = [ - {file = "coverage-7.5.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:a6519d917abb15e12380406d721e37613e2a67d166f9fb7e5a8ce0375744cd45"}, - {file = "coverage-7.5.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:aea7da970f1feccf48be7335f8b2ca64baf9b589d79e05b9397a06696ce1a1ec"}, - {file = "coverage-7.5.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:923b7b1c717bd0f0f92d862d1ff51d9b2b55dbbd133e05680204465f454bb286"}, - {file = "coverage-7.5.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:62bda40da1e68898186f274f832ef3e759ce929da9a9fd9fcf265956de269dbc"}, - {file = "coverage-7.5.3-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d8b7339180d00de83e930358223c617cc343dd08e1aa5ec7b06c3a121aec4e1d"}, - {file = "coverage-7.5.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:25a5caf742c6195e08002d3b6c2dd6947e50efc5fc2c2205f61ecb47592d2d83"}, - {file = "coverage-7.5.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:05ac5f60faa0c704c0f7e6a5cbfd6f02101ed05e0aee4d2822637a9e672c998d"}, - {file = "coverage-7.5.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:239a4e75e09c2b12ea478d28815acf83334d32e722e7433471fbf641c606344c"}, - {file = "coverage-7.5.3-cp310-cp310-win32.whl", hash = "sha256:a5812840d1d00eafae6585aba38021f90a705a25b8216ec7f66aebe5b619fb84"}, - {file = "coverage-7.5.3-cp310-cp310-win_amd64.whl", hash = "sha256:33ca90a0eb29225f195e30684ba4a6db05dbef03c2ccd50b9077714c48153cac"}, - {file = "coverage-7.5.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f81bc26d609bf0fbc622c7122ba6307993c83c795d2d6f6f6fd8c000a770d974"}, - {file = "coverage-7.5.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7cec2af81f9e7569280822be68bd57e51b86d42e59ea30d10ebdbb22d2cb7232"}, - {file = "coverage-7.5.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:55f689f846661e3f26efa535071775d0483388a1ccfab899df72924805e9e7cd"}, - {file = "coverage-7.5.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:50084d3516aa263791198913a17354bd1dc627d3c1639209640b9cac3fef5807"}, - {file = "coverage-7.5.3-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:341dd8f61c26337c37988345ca5c8ccabeff33093a26953a1ac72e7d0103c4fb"}, - {file = "coverage-7.5.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ab0b028165eea880af12f66086694768f2c3139b2c31ad5e032c8edbafca6ffc"}, - {file = "coverage-7.5.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:5bc5a8c87714b0c67cfeb4c7caa82b2d71e8864d1a46aa990b5588fa953673b8"}, - {file = "coverage-7.5.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:38a3b98dae8a7c9057bd91fbf3415c05e700a5114c5f1b5b0ea5f8f429ba6614"}, - {file = "coverage-7.5.3-cp311-cp311-win32.whl", hash = "sha256:fcf7d1d6f5da887ca04302db8e0e0cf56ce9a5e05f202720e49b3e8157ddb9a9"}, - {file = "coverage-7.5.3-cp311-cp311-win_amd64.whl", hash = "sha256:8c836309931839cca658a78a888dab9676b5c988d0dd34ca247f5f3e679f4e7a"}, - {file = "coverage-7.5.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:296a7d9bbc598e8744c00f7a6cecf1da9b30ae9ad51c566291ff1314e6cbbed8"}, - {file = "coverage-7.5.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:34d6d21d8795a97b14d503dcaf74226ae51eb1f2bd41015d3ef332a24d0a17b3"}, - {file = "coverage-7.5.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e317953bb4c074c06c798a11dbdd2cf9979dbcaa8ccc0fa4701d80042d4ebf1"}, - {file = "coverage-7.5.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:705f3d7c2b098c40f5b81790a5fedb274113373d4d1a69e65f8b68b0cc26f6db"}, - {file = "coverage-7.5.3-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b1196e13c45e327d6cd0b6e471530a1882f1017eb83c6229fc613cd1a11b53cd"}, - {file = "coverage-7.5.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:015eddc5ccd5364dcb902eaecf9515636806fa1e0d5bef5769d06d0f31b54523"}, - {file = "coverage-7.5.3-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:fd27d8b49e574e50caa65196d908f80e4dff64d7e592d0c59788b45aad7e8b35"}, - {file = "coverage-7.5.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:33fc65740267222fc02975c061eb7167185fef4cc8f2770267ee8bf7d6a42f84"}, - {file = "coverage-7.5.3-cp312-cp312-win32.whl", hash = "sha256:7b2a19e13dfb5c8e145c7a6ea959485ee8e2204699903c88c7d25283584bfc08"}, - {file = "coverage-7.5.3-cp312-cp312-win_amd64.whl", hash = "sha256:0bbddc54bbacfc09b3edaec644d4ac90c08ee8ed4844b0f86227dcda2d428fcb"}, - {file = "coverage-7.5.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:f78300789a708ac1f17e134593f577407d52d0417305435b134805c4fb135adb"}, - {file = "coverage-7.5.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:b368e1aee1b9b75757942d44d7598dcd22a9dbb126affcbba82d15917f0cc155"}, - {file = "coverage-7.5.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f836c174c3a7f639bded48ec913f348c4761cbf49de4a20a956d3431a7c9cb24"}, - {file = "coverage-7.5.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:244f509f126dc71369393ce5fea17c0592c40ee44e607b6d855e9c4ac57aac98"}, - {file = "coverage-7.5.3-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c4c2872b3c91f9baa836147ca33650dc5c172e9273c808c3c3199c75490e709d"}, - {file = "coverage-7.5.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:dd4b3355b01273a56b20c219e74e7549e14370b31a4ffe42706a8cda91f19f6d"}, - {file = "coverage-7.5.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:f542287b1489c7a860d43a7d8883e27ca62ab84ca53c965d11dac1d3a1fab7ce"}, - {file = "coverage-7.5.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:75e3f4e86804023e991096b29e147e635f5e2568f77883a1e6eed74512659ab0"}, - {file = "coverage-7.5.3-cp38-cp38-win32.whl", hash = "sha256:c59d2ad092dc0551d9f79d9d44d005c945ba95832a6798f98f9216ede3d5f485"}, - {file = "coverage-7.5.3-cp38-cp38-win_amd64.whl", hash = "sha256:fa21a04112c59ad54f69d80e376f7f9d0f5f9123ab87ecd18fbb9ec3a2beed56"}, - {file = "coverage-7.5.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f5102a92855d518b0996eb197772f5ac2a527c0ec617124ad5242a3af5e25f85"}, - {file = "coverage-7.5.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:d1da0a2e3b37b745a2b2a678a4c796462cf753aebf94edcc87dcc6b8641eae31"}, - {file = "coverage-7.5.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8383a6c8cefba1b7cecc0149415046b6fc38836295bc4c84e820872eb5478b3d"}, - {file = "coverage-7.5.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9aad68c3f2566dfae84bf46295a79e79d904e1c21ccfc66de88cd446f8686341"}, - {file = "coverage-7.5.3-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2e079c9ec772fedbade9d7ebc36202a1d9ef7291bc9b3a024ca395c4d52853d7"}, - {file = "coverage-7.5.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:bde997cac85fcac227b27d4fb2c7608a2c5f6558469b0eb704c5726ae49e1c52"}, - {file = "coverage-7.5.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:990fb20b32990b2ce2c5f974c3e738c9358b2735bc05075d50a6f36721b8f303"}, - {file = "coverage-7.5.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:3d5a67f0da401e105753d474369ab034c7bae51a4c31c77d94030d59e41df5bd"}, - {file = "coverage-7.5.3-cp39-cp39-win32.whl", hash = "sha256:e08c470c2eb01977d221fd87495b44867a56d4d594f43739a8028f8646a51e0d"}, - {file = "coverage-7.5.3-cp39-cp39-win_amd64.whl", hash = "sha256:1d2a830ade66d3563bb61d1e3c77c8def97b30ed91e166c67d0632c018f380f0"}, - {file = "coverage-7.5.3-pp38.pp39.pp310-none-any.whl", hash = "sha256:3538d8fb1ee9bdd2e2692b3b18c22bb1c19ffbefd06880f5ac496e42d7bb3884"}, - {file = "coverage-7.5.3.tar.gz", hash = "sha256:04aefca5190d1dc7a53a4c1a5a7f8568811306d7a8ee231c42fb69215571944f"}, + {file = "coverage-7.5.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6cfb5a4f556bb51aba274588200a46e4dd6b505fb1a5f8c5ae408222eb416f99"}, + {file = "coverage-7.5.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2174e7c23e0a454ffe12267a10732c273243b4f2d50d07544a91198f05c48f47"}, + {file = "coverage-7.5.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2214ee920787d85db1b6a0bd9da5f8503ccc8fcd5814d90796c2f2493a2f4d2e"}, + {file = "coverage-7.5.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1137f46adb28e3813dec8c01fefadcb8c614f33576f672962e323b5128d9a68d"}, + {file = "coverage-7.5.4-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b385d49609f8e9efc885790a5a0e89f2e3ae042cdf12958b6034cc442de428d3"}, + {file = "coverage-7.5.4-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:b4a474f799456e0eb46d78ab07303286a84a3140e9700b9e154cfebc8f527016"}, + {file = "coverage-7.5.4-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:5cd64adedf3be66f8ccee418473c2916492d53cbafbfcff851cbec5a8454b136"}, + {file = "coverage-7.5.4-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:e564c2cf45d2f44a9da56f4e3a26b2236504a496eb4cb0ca7221cd4cc7a9aca9"}, + {file = "coverage-7.5.4-cp310-cp310-win32.whl", hash = "sha256:7076b4b3a5f6d2b5d7f1185fde25b1e54eb66e647a1dfef0e2c2bfaf9b4c88c8"}, + {file = "coverage-7.5.4-cp310-cp310-win_amd64.whl", hash = "sha256:018a12985185038a5b2bcafab04ab833a9a0f2c59995b3cec07e10074c78635f"}, + {file = "coverage-7.5.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:db14f552ac38f10758ad14dd7b983dbab424e731588d300c7db25b6f89e335b5"}, + {file = "coverage-7.5.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3257fdd8e574805f27bb5342b77bc65578e98cbc004a92232106344053f319ba"}, + {file = "coverage-7.5.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3a6612c99081d8d6134005b1354191e103ec9705d7ba2754e848211ac8cacc6b"}, + {file = "coverage-7.5.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d45d3cbd94159c468b9b8c5a556e3f6b81a8d1af2a92b77320e887c3e7a5d080"}, + {file = "coverage-7.5.4-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ed550e7442f278af76d9d65af48069f1fb84c9f745ae249c1a183c1e9d1b025c"}, + {file = "coverage-7.5.4-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:7a892be37ca35eb5019ec85402c3371b0f7cda5ab5056023a7f13da0961e60da"}, + {file = "coverage-7.5.4-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:8192794d120167e2a64721d88dbd688584675e86e15d0569599257566dec9bf0"}, + {file = "coverage-7.5.4-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:820bc841faa502e727a48311948e0461132a9c8baa42f6b2b84a29ced24cc078"}, + {file = "coverage-7.5.4-cp311-cp311-win32.whl", hash = "sha256:6aae5cce399a0f065da65c7bb1e8abd5c7a3043da9dceb429ebe1b289bc07806"}, + {file = "coverage-7.5.4-cp311-cp311-win_amd64.whl", hash = "sha256:d2e344d6adc8ef81c5a233d3a57b3c7d5181f40e79e05e1c143da143ccb6377d"}, + {file = "coverage-7.5.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:54317c2b806354cbb2dc7ac27e2b93f97096912cc16b18289c5d4e44fc663233"}, + {file = "coverage-7.5.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:042183de01f8b6d531e10c197f7f0315a61e8d805ab29c5f7b51a01d62782747"}, + {file = "coverage-7.5.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a6bb74ed465d5fb204b2ec41d79bcd28afccf817de721e8a807d5141c3426638"}, + {file = "coverage-7.5.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b3d45ff86efb129c599a3b287ae2e44c1e281ae0f9a9bad0edc202179bcc3a2e"}, + {file = "coverage-7.5.4-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5013ed890dc917cef2c9f765c4c6a8ae9df983cd60dbb635df8ed9f4ebc9f555"}, + {file = "coverage-7.5.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1014fbf665fef86cdfd6cb5b7371496ce35e4d2a00cda501cf9f5b9e6fced69f"}, + {file = "coverage-7.5.4-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:3684bc2ff328f935981847082ba4fdc950d58906a40eafa93510d1b54c08a66c"}, + {file = "coverage-7.5.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:581ea96f92bf71a5ec0974001f900db495488434a6928a2ca7f01eee20c23805"}, + {file = "coverage-7.5.4-cp312-cp312-win32.whl", hash = "sha256:73ca8fbc5bc622e54627314c1a6f1dfdd8db69788f3443e752c215f29fa87a0b"}, + {file = "coverage-7.5.4-cp312-cp312-win_amd64.whl", hash = "sha256:cef4649ec906ea7ea5e9e796e68b987f83fa9a718514fe147f538cfeda76d7a7"}, + {file = "coverage-7.5.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:cdd31315fc20868c194130de9ee6bfd99755cc9565edff98ecc12585b90be882"}, + {file = "coverage-7.5.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:02ff6e898197cc1e9fa375581382b72498eb2e6d5fc0b53f03e496cfee3fac6d"}, + {file = "coverage-7.5.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d05c16cf4b4c2fc880cb12ba4c9b526e9e5d5bb1d81313d4d732a5b9fe2b9d53"}, + {file = "coverage-7.5.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c5986ee7ea0795a4095ac4d113cbb3448601efca7f158ec7f7087a6c705304e4"}, + {file = "coverage-7.5.4-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5df54843b88901fdc2f598ac06737f03d71168fd1175728054c8f5a2739ac3e4"}, + {file = "coverage-7.5.4-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:ab73b35e8d109bffbda9a3e91c64e29fe26e03e49addf5b43d85fc426dde11f9"}, + {file = "coverage-7.5.4-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:aea072a941b033813f5e4814541fc265a5c12ed9720daef11ca516aeacd3bd7f"}, + {file = "coverage-7.5.4-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:16852febd96acd953b0d55fc842ce2dac1710f26729b31c80b940b9afcd9896f"}, + {file = "coverage-7.5.4-cp38-cp38-win32.whl", hash = "sha256:8f894208794b164e6bd4bba61fc98bf6b06be4d390cf2daacfa6eca0a6d2bb4f"}, + {file = "coverage-7.5.4-cp38-cp38-win_amd64.whl", hash = "sha256:e2afe743289273209c992075a5a4913e8d007d569a406ffed0bd080ea02b0633"}, + {file = "coverage-7.5.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b95c3a8cb0463ba9f77383d0fa8c9194cf91f64445a63fc26fb2327e1e1eb088"}, + {file = "coverage-7.5.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:3d7564cc09dd91b5a6001754a5b3c6ecc4aba6323baf33a12bd751036c998be4"}, + {file = "coverage-7.5.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:44da56a2589b684813f86d07597fdf8a9c6ce77f58976727329272f5a01f99f7"}, + {file = "coverage-7.5.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e16f3d6b491c48c5ae726308e6ab1e18ee830b4cdd6913f2d7f77354b33f91c8"}, + {file = "coverage-7.5.4-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dbc5958cb471e5a5af41b0ddaea96a37e74ed289535e8deca404811f6cb0bc3d"}, + {file = "coverage-7.5.4-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:a04e990a2a41740b02d6182b498ee9796cf60eefe40cf859b016650147908029"}, + {file = "coverage-7.5.4-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:ddbd2f9713a79e8e7242d7c51f1929611e991d855f414ca9996c20e44a895f7c"}, + {file = "coverage-7.5.4-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:b1ccf5e728ccf83acd313c89f07c22d70d6c375a9c6f339233dcf792094bcbf7"}, + {file = "coverage-7.5.4-cp39-cp39-win32.whl", hash = "sha256:56b4eafa21c6c175b3ede004ca12c653a88b6f922494b023aeb1e836df953ace"}, + {file = "coverage-7.5.4-cp39-cp39-win_amd64.whl", hash = "sha256:65e528e2e921ba8fd67d9055e6b9f9e34b21ebd6768ae1c1723f4ea6ace1234d"}, + {file = "coverage-7.5.4-pp38.pp39.pp310-none-any.whl", hash = "sha256:79b356f3dd5b26f3ad23b35c75dbdaf1f9e2450b6bcefc6d0825ea0aa3f86ca5"}, + {file = "coverage-7.5.4.tar.gz", hash = "sha256:a44963520b069e12789d0faea4e9fdb1e410cdc4aab89d94f7f55cbb7fef0353"}, ] [package.dependencies] @@ -765,33 +765,33 @@ tests = ["pytest", "pytest-cov", "pytest-xdist"] [[package]] name = "debugpy" -version = "1.8.1" +version = "1.8.2" description = "An implementation of the Debug Adapter Protocol for Python" optional = false python-versions = ">=3.8" files = [ - {file = "debugpy-1.8.1-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:3bda0f1e943d386cc7a0e71bfa59f4137909e2ed947fb3946c506e113000f741"}, - {file = "debugpy-1.8.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dda73bf69ea479c8577a0448f8c707691152e6c4de7f0c4dec5a4bc11dee516e"}, - {file = "debugpy-1.8.1-cp310-cp310-win32.whl", hash = "sha256:3a79c6f62adef994b2dbe9fc2cc9cc3864a23575b6e387339ab739873bea53d0"}, - {file = "debugpy-1.8.1-cp310-cp310-win_amd64.whl", hash = "sha256:7eb7bd2b56ea3bedb009616d9e2f64aab8fc7000d481faec3cd26c98a964bcdd"}, - {file = "debugpy-1.8.1-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:016a9fcfc2c6b57f939673c874310d8581d51a0fe0858e7fac4e240c5eb743cb"}, - {file = "debugpy-1.8.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd97ed11a4c7f6d042d320ce03d83b20c3fb40da892f994bc041bbc415d7a099"}, - {file = "debugpy-1.8.1-cp311-cp311-win32.whl", hash = "sha256:0de56aba8249c28a300bdb0672a9b94785074eb82eb672db66c8144fff673146"}, - {file = "debugpy-1.8.1-cp311-cp311-win_amd64.whl", hash = "sha256:1a9fe0829c2b854757b4fd0a338d93bc17249a3bf69ecf765c61d4c522bb92a8"}, - {file = "debugpy-1.8.1-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:3ebb70ba1a6524d19fa7bb122f44b74170c447d5746a503e36adc244a20ac539"}, - {file = "debugpy-1.8.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a2e658a9630f27534e63922ebf655a6ab60c370f4d2fc5c02a5b19baf4410ace"}, - {file = "debugpy-1.8.1-cp312-cp312-win32.whl", hash = "sha256:caad2846e21188797a1f17fc09c31b84c7c3c23baf2516fed5b40b378515bbf0"}, - {file = "debugpy-1.8.1-cp312-cp312-win_amd64.whl", hash = "sha256:edcc9f58ec0fd121a25bc950d4578df47428d72e1a0d66c07403b04eb93bcf98"}, - {file = "debugpy-1.8.1-cp38-cp38-macosx_11_0_x86_64.whl", hash = "sha256:7a3afa222f6fd3d9dfecd52729bc2e12c93e22a7491405a0ecbf9e1d32d45b39"}, - {file = "debugpy-1.8.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d915a18f0597ef685e88bb35e5d7ab968964b7befefe1aaea1eb5b2640b586c7"}, - {file = "debugpy-1.8.1-cp38-cp38-win32.whl", hash = "sha256:92116039b5500633cc8d44ecc187abe2dfa9b90f7a82bbf81d079fcdd506bae9"}, - {file = "debugpy-1.8.1-cp38-cp38-win_amd64.whl", hash = "sha256:e38beb7992b5afd9d5244e96ad5fa9135e94993b0c551ceebf3fe1a5d9beb234"}, - {file = "debugpy-1.8.1-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:bfb20cb57486c8e4793d41996652e5a6a885b4d9175dd369045dad59eaacea42"}, - {file = "debugpy-1.8.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:efd3fdd3f67a7e576dd869c184c5dd71d9aaa36ded271939da352880c012e703"}, - {file = "debugpy-1.8.1-cp39-cp39-win32.whl", hash = "sha256:58911e8521ca0c785ac7a0539f1e77e0ce2df753f786188f382229278b4cdf23"}, - {file = "debugpy-1.8.1-cp39-cp39-win_amd64.whl", hash = "sha256:6df9aa9599eb05ca179fb0b810282255202a66835c6efb1d112d21ecb830ddd3"}, - {file = "debugpy-1.8.1-py2.py3-none-any.whl", hash = "sha256:28acbe2241222b87e255260c76741e1fbf04fdc3b6d094fcf57b6c6f75ce1242"}, - {file = "debugpy-1.8.1.zip", hash = "sha256:f696d6be15be87aef621917585f9bb94b1dc9e8aced570db1b8a6fc14e8f9b42"}, + {file = "debugpy-1.8.2-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:7ee2e1afbf44b138c005e4380097d92532e1001580853a7cb40ed84e0ef1c3d2"}, + {file = "debugpy-1.8.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3f8c3f7c53130a070f0fc845a0f2cee8ed88d220d6b04595897b66605df1edd6"}, + {file = "debugpy-1.8.2-cp310-cp310-win32.whl", hash = "sha256:f179af1e1bd4c88b0b9f0fa153569b24f6b6f3de33f94703336363ae62f4bf47"}, + {file = "debugpy-1.8.2-cp310-cp310-win_amd64.whl", hash = "sha256:0600faef1d0b8d0e85c816b8bb0cb90ed94fc611f308d5fde28cb8b3d2ff0fe3"}, + {file = "debugpy-1.8.2-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:8a13417ccd5978a642e91fb79b871baded925d4fadd4dfafec1928196292aa0a"}, + {file = "debugpy-1.8.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:acdf39855f65c48ac9667b2801234fc64d46778021efac2de7e50907ab90c634"}, + {file = "debugpy-1.8.2-cp311-cp311-win32.whl", hash = "sha256:2cbd4d9a2fc5e7f583ff9bf11f3b7d78dfda8401e8bb6856ad1ed190be4281ad"}, + {file = "debugpy-1.8.2-cp311-cp311-win_amd64.whl", hash = "sha256:d3408fddd76414034c02880e891ea434e9a9cf3a69842098ef92f6e809d09afa"}, + {file = "debugpy-1.8.2-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:5d3ccd39e4021f2eb86b8d748a96c766058b39443c1f18b2dc52c10ac2757835"}, + {file = "debugpy-1.8.2-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:62658aefe289598680193ff655ff3940e2a601765259b123dc7f89c0239b8cd3"}, + {file = "debugpy-1.8.2-cp312-cp312-win32.whl", hash = "sha256:bd11fe35d6fd3431f1546d94121322c0ac572e1bfb1f6be0e9b8655fb4ea941e"}, + {file = "debugpy-1.8.2-cp312-cp312-win_amd64.whl", hash = "sha256:15bc2f4b0f5e99bf86c162c91a74c0631dbd9cef3c6a1d1329c946586255e859"}, + {file = "debugpy-1.8.2-cp38-cp38-macosx_11_0_x86_64.whl", hash = "sha256:5a019d4574afedc6ead1daa22736c530712465c0c4cd44f820d803d937531b2d"}, + {file = "debugpy-1.8.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:40f062d6877d2e45b112c0bbade9a17aac507445fd638922b1a5434df34aed02"}, + {file = "debugpy-1.8.2-cp38-cp38-win32.whl", hash = "sha256:c78ba1680f1015c0ca7115671fe347b28b446081dada3fedf54138f44e4ba031"}, + {file = "debugpy-1.8.2-cp38-cp38-win_amd64.whl", hash = "sha256:cf327316ae0c0e7dd81eb92d24ba8b5e88bb4d1b585b5c0d32929274a66a5210"}, + {file = "debugpy-1.8.2-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:1523bc551e28e15147815d1397afc150ac99dbd3a8e64641d53425dba57b0ff9"}, + {file = "debugpy-1.8.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e24ccb0cd6f8bfaec68d577cb49e9c680621c336f347479b3fce060ba7c09ec1"}, + {file = "debugpy-1.8.2-cp39-cp39-win32.whl", hash = "sha256:7f8d57a98c5a486c5c7824bc0b9f2f11189d08d73635c326abef268f83950326"}, + {file = "debugpy-1.8.2-cp39-cp39-win_amd64.whl", hash = "sha256:16c8dcab02617b75697a0a925a62943e26a0330da076e2a10437edd9f0bf3755"}, + {file = "debugpy-1.8.2-py2.py3-none-any.whl", hash = "sha256:16e16df3a98a35c63c3ab1e4d19be4cbc7fdda92d9ddc059294f18910928e0ca"}, + {file = "debugpy-1.8.2.zip", hash = "sha256:95378ed08ed2089221896b9b3a8d021e642c24edc8fef20e5d4342ca8be65c00"}, ] [[package]] @@ -846,13 +846,13 @@ tests = ["asttokens (>=2.1.0)", "coverage", "coverage-enable-subprocess", "ipyth [[package]] name = "fastjsonschema" -version = "2.19.1" +version = "2.20.0" description = "Fastest Python implementation of JSON schema" optional = false python-versions = "*" files = [ - {file = "fastjsonschema-2.19.1-py3-none-any.whl", hash = "sha256:3672b47bc94178c9f23dbb654bf47440155d4db9df5f7bc47643315f9c405cd0"}, - {file = "fastjsonschema-2.19.1.tar.gz", hash = "sha256:e3126a94bdc4623d3de4485f8d468a12f02a67921315ddc87836d6e456dc789d"}, + {file = "fastjsonschema-2.20.0-py3-none-any.whl", hash = "sha256:5875f0b0fa7a0043a91e93a9b8f793bcbbba9691e7fd83dca95c28ba26d21f0a"}, + {file = "fastjsonschema-2.20.0.tar.gz", hash = "sha256:3d48fc5300ee96f5d116f10fe6f28d938e6008f59a6a025c2649475b87f76a23"}, ] [package.extras] @@ -860,85 +860,85 @@ devel = ["colorama", "json-spec", "jsonschema", "pylint", "pytest", "pytest-benc [[package]] name = "filelock" -version = "3.14.0" +version = "3.15.4" description = "A platform independent file lock." optional = false python-versions = ">=3.8" files = [ - {file = "filelock-3.14.0-py3-none-any.whl", hash = "sha256:43339835842f110ca7ae60f1e1c160714c5a6afd15a2873419ab185334975c0f"}, - {file = "filelock-3.14.0.tar.gz", hash = "sha256:6ea72da3be9b8c82afd3edcf99f2fffbb5076335a5ae4d03248bb5b6c3eae78a"}, + {file = "filelock-3.15.4-py3-none-any.whl", hash = "sha256:6ca1fffae96225dab4c6eaf1c4f4f28cd2568d3ec2a44e15a08520504de468e7"}, + {file = "filelock-3.15.4.tar.gz", hash = "sha256:2207938cbc1844345cb01a5a95524dae30f0ce089eba5b00378295a17e3e90cb"}, ] [package.extras] docs = ["furo (>=2023.9.10)", "sphinx (>=7.2.6)", "sphinx-autodoc-typehints (>=1.25.2)"] -testing = ["covdefaults (>=2.3)", "coverage (>=7.3.2)", "diff-cover (>=8.0.1)", "pytest (>=7.4.3)", "pytest-cov (>=4.1)", "pytest-mock (>=3.12)", "pytest-timeout (>=2.2)"] +testing = ["covdefaults (>=2.3)", "coverage (>=7.3.2)", "diff-cover (>=8.0.1)", "pytest (>=7.4.3)", "pytest-asyncio (>=0.21)", "pytest-cov (>=4.1)", "pytest-mock (>=3.12)", "pytest-timeout (>=2.2)", "virtualenv (>=20.26.2)"] typing = ["typing-extensions (>=4.8)"] [[package]] name = "flake8" -version = "7.0.0" +version = "7.1.0" description = "the modular source code checker: pep8 pyflakes and co" optional = false python-versions = ">=3.8.1" files = [ - {file = "flake8-7.0.0-py2.py3-none-any.whl", hash = "sha256:a6dfbb75e03252917f2473ea9653f7cd799c3064e54d4c8140044c5c065f53c3"}, - {file = "flake8-7.0.0.tar.gz", hash = "sha256:33f96621059e65eec474169085dc92bf26e7b2d47366b70be2f67ab80dc25132"}, + {file = "flake8-7.1.0-py2.py3-none-any.whl", hash = "sha256:2e416edcc62471a64cea09353f4e7bdba32aeb079b6e360554c659a122b1bc6a"}, + {file = "flake8-7.1.0.tar.gz", hash = "sha256:48a07b626b55236e0fb4784ee69a465fbf59d79eec1f5b4785c3d3bc57d17aa5"}, ] [package.dependencies] mccabe = ">=0.7.0,<0.8.0" -pycodestyle = ">=2.11.0,<2.12.0" +pycodestyle = ">=2.12.0,<2.13.0" pyflakes = ">=3.2.0,<3.3.0" [[package]] name = "fonttools" -version = "4.52.4" +version = "4.53.0" description = "Tools to manipulate font files" optional = false python-versions = ">=3.8" files = [ - {file = "fonttools-4.52.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:fb8cd6559f0ae3a8f5e146f80ab2a90ad0325a759be8d48ee82758a0b89fa0aa"}, - {file = "fonttools-4.52.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5ecb88318ff249bd2a715e7aec36774ce7ae3441128007ef72a39a60601f4a8f"}, - {file = "fonttools-4.52.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b9a22cf1adaae7b2ba2ed7d8651a4193a4f348744925b4b740e6b38a94599c5b"}, - {file = "fonttools-4.52.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8873d6edd1dae5c088dd3d61c9fd4dd80c827c486fa224d368233e7f33dc98af"}, - {file = "fonttools-4.52.4-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:73ba38b98c012957940a04d9eb5439b42565ac892bba8cfc32e10d88e73921fe"}, - {file = "fonttools-4.52.4-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:9725687db3c1cef13c0f40b380c3c15bea0113f4d0231b204d58edd5f2a53d90"}, - {file = "fonttools-4.52.4-cp310-cp310-win32.whl", hash = "sha256:9180775c9535389a665cae7c5282f8e07754beabf59b66aeba7f6bfeb32a3652"}, - {file = "fonttools-4.52.4-cp310-cp310-win_amd64.whl", hash = "sha256:46cc5d06ee05fd239c45d7935aaffd060ee773a88b97e901df50478247472643"}, - {file = "fonttools-4.52.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:d272c7e173c3085308345ccc7fb2ad6ce7f415d777791dd6ce4e8140e354d09c"}, - {file = "fonttools-4.52.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:21921e5855c399d10ddfc373538b425cabcf8b3258720b51450909e108896450"}, - {file = "fonttools-4.52.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:52f6001814ec5e0c961cabe89642f7e8d7e07892b565057aa526569b9ebb711c"}, - {file = "fonttools-4.52.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b0b9eb0f55dce9c7278ad4175f1cbaed23b799dce5ecc20e3213da241584140"}, - {file = "fonttools-4.52.4-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:70d87f2099006304d33438bdaa5101953b7e22e23a93b1c7b7ed0f32ff44b423"}, - {file = "fonttools-4.52.4-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:e176249292eccd89f81d39f514f2b5e8c75dfc9cef8653bdc3021d06697e9eff"}, - {file = "fonttools-4.52.4-cp311-cp311-win32.whl", hash = "sha256:bb7d206fa5ba6e082ba5d5e1b7107731029fc3a55c71c48de65121710d817986"}, - {file = "fonttools-4.52.4-cp311-cp311-win_amd64.whl", hash = "sha256:346d08ff92e577b2dc5a0c228487667d23fe2da35a8b9a8bba22c2b6ba8be21c"}, - {file = "fonttools-4.52.4-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:d2cc7906bc0afdd2689aaf88b910307333b1f936262d1d98f25dbf8a5eb2e829"}, - {file = "fonttools-4.52.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:00d9abf4b400f98fb895566eb298f60432b4b29048e3dc02807427b09a06604e"}, - {file = "fonttools-4.52.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4b419207e53db1599b3d385afd4bca6692c219d53732890d0814a2593104d0e2"}, - {file = "fonttools-4.52.4-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cf694159528022daa71b1777cb6ec9e0ebbdd29859f3e9c845826cafaef4ca29"}, - {file = "fonttools-4.52.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:9a5d1b0475050056d2e3bc378014f2ea2230e8ae434eeac8dfb182aa8efaf642"}, - {file = "fonttools-4.52.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:4c3ad89204c2d7f419436f1d6fde681b070c5e20b888beb57ccf92f640628cc9"}, - {file = "fonttools-4.52.4-cp312-cp312-win32.whl", hash = "sha256:1dc626de4b204d025d029e646bae8fdbf5acd9217158283a567f4b523fda3bae"}, - {file = "fonttools-4.52.4-cp312-cp312-win_amd64.whl", hash = "sha256:309b617942041073ffa96090d320b99d75648ed16e0c67fb1aa7788e06c834de"}, - {file = "fonttools-4.52.4-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:8b186cd6b8844f6cf04a7e0a174bc3649d3deddbfc10dc59846a4381f796d348"}, - {file = "fonttools-4.52.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:9ed23a03b7d9f0e29ca0679eafe5152aeccb0580312a3fc36f0662e178b4791b"}, - {file = "fonttools-4.52.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:89b53386214197bd5b3e3c753895bad691de84726ced3c222a59cde1dd12d57b"}, - {file = "fonttools-4.52.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7467161f1eed557dbcec152d5ee95540200b1935709fa73307da16bc0b7ca361"}, - {file = "fonttools-4.52.4-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:b4cba644e2515d685d4ee3ca2fbb5d53930a0e9ec2cf332ed704dc341b145878"}, - {file = "fonttools-4.52.4-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:890e7a657574610330e42dd1e38d3b9e0a8cb0eff3da080f80995460a256d3dd"}, - {file = "fonttools-4.52.4-cp38-cp38-win32.whl", hash = "sha256:7dccf4666f716e5e0753f0fa28dad2f4431154c87747bc781c838b8a5dca990e"}, - {file = "fonttools-4.52.4-cp38-cp38-win_amd64.whl", hash = "sha256:a791f002d1b717268235cfae7e4957b7fd132e92e2c5400e521bf191f1b3a9a5"}, - {file = "fonttools-4.52.4-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:05e4291db6af66f466a203d9922e4c1d3e18ef16868f76f10b00e2c3b9814df2"}, - {file = "fonttools-4.52.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a64e72d2c144630e017ac9c1c416ddf8ac43bef9a083bf81fe08c0695f0baa95"}, - {file = "fonttools-4.52.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ebb183ed8b789cece0bd6363121913fb6da4034af89a2fa5408e42a1592889a8"}, - {file = "fonttools-4.52.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a4daf2751a98c69d9620717826ed6c5743b662ef0ae7bb33dc6c205425e48eba"}, - {file = "fonttools-4.52.4-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:15efb2ba4b8c2d012ee0bb7a850c2e4780c530cc83ec8e843b2a97f8b3a5fd4b"}, - {file = "fonttools-4.52.4-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:35af630404223273f1d7acd4761f399131c62820366f53eac029337069f5826a"}, - {file = "fonttools-4.52.4-cp39-cp39-win32.whl", hash = "sha256:d0184aa88865339d96f7f452e8c5b621186ef7638744d78bf9b775d67e206819"}, - {file = "fonttools-4.52.4-cp39-cp39-win_amd64.whl", hash = "sha256:e03dae26084bb3632b4a77b1cd0419159d2226911aff6dc4c7e3058df68648c6"}, - {file = "fonttools-4.52.4-py3-none-any.whl", hash = "sha256:95e8a5975d08d0b624a14eec0f987e204ad81b480e24c5436af99170054434b8"}, - {file = "fonttools-4.52.4.tar.gz", hash = "sha256:859399b7adc8ac067be8e5c80ef4bb2faddff97e9b40896a9de75606a43d0469"}, + {file = "fonttools-4.53.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:52a6e0a7a0bf611c19bc8ec8f7592bdae79c8296c70eb05917fd831354699b20"}, + {file = "fonttools-4.53.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:099634631b9dd271d4a835d2b2a9e042ccc94ecdf7e2dd9f7f34f7daf333358d"}, + {file = "fonttools-4.53.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e40013572bfb843d6794a3ce076c29ef4efd15937ab833f520117f8eccc84fd6"}, + {file = "fonttools-4.53.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:715b41c3e231f7334cbe79dfc698213dcb7211520ec7a3bc2ba20c8515e8a3b5"}, + {file = "fonttools-4.53.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:74ae2441731a05b44d5988d3ac2cf784d3ee0a535dbed257cbfff4be8bb49eb9"}, + {file = "fonttools-4.53.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:95db0c6581a54b47c30860d013977b8a14febc206c8b5ff562f9fe32738a8aca"}, + {file = "fonttools-4.53.0-cp310-cp310-win32.whl", hash = "sha256:9cd7a6beec6495d1dffb1033d50a3f82dfece23e9eb3c20cd3c2444d27514068"}, + {file = "fonttools-4.53.0-cp310-cp310-win_amd64.whl", hash = "sha256:daaef7390e632283051e3cf3e16aff2b68b247e99aea916f64e578c0449c9c68"}, + {file = "fonttools-4.53.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:a209d2e624ba492df4f3bfad5996d1f76f03069c6133c60cd04f9a9e715595ec"}, + {file = "fonttools-4.53.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4f520d9ac5b938e6494f58a25c77564beca7d0199ecf726e1bd3d56872c59749"}, + {file = "fonttools-4.53.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eceef49f457253000e6a2d0f7bd08ff4e9fe96ec4ffce2dbcb32e34d9c1b8161"}, + {file = "fonttools-4.53.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa1f3e34373aa16045484b4d9d352d4c6b5f9f77ac77a178252ccbc851e8b2ee"}, + {file = "fonttools-4.53.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:28d072169fe8275fb1a0d35e3233f6df36a7e8474e56cb790a7258ad822b6fd6"}, + {file = "fonttools-4.53.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:4a2a6ba400d386e904fd05db81f73bee0008af37799a7586deaa4aef8cd5971e"}, + {file = "fonttools-4.53.0-cp311-cp311-win32.whl", hash = "sha256:bb7273789f69b565d88e97e9e1da602b4ee7ba733caf35a6c2affd4334d4f005"}, + {file = "fonttools-4.53.0-cp311-cp311-win_amd64.whl", hash = "sha256:9fe9096a60113e1d755e9e6bda15ef7e03391ee0554d22829aa506cdf946f796"}, + {file = "fonttools-4.53.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:d8f191a17369bd53a5557a5ee4bab91d5330ca3aefcdf17fab9a497b0e7cff7a"}, + {file = "fonttools-4.53.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:93156dd7f90ae0a1b0e8871032a07ef3178f553f0c70c386025a808f3a63b1f4"}, + {file = "fonttools-4.53.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bff98816cb144fb7b85e4b5ba3888a33b56ecef075b0e95b95bcd0a5fbf20f06"}, + {file = "fonttools-4.53.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:973d030180eca8255b1bce6ffc09ef38a05dcec0e8320cc9b7bcaa65346f341d"}, + {file = "fonttools-4.53.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:c4ee5a24e281fbd8261c6ab29faa7fd9a87a12e8c0eed485b705236c65999109"}, + {file = "fonttools-4.53.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:bd5bc124fae781a4422f61b98d1d7faa47985f663a64770b78f13d2c072410c2"}, + {file = "fonttools-4.53.0-cp312-cp312-win32.whl", hash = "sha256:a239afa1126b6a619130909c8404070e2b473dd2b7fc4aacacd2e763f8597fea"}, + {file = "fonttools-4.53.0-cp312-cp312-win_amd64.whl", hash = "sha256:45b4afb069039f0366a43a5d454bc54eea942bfb66b3fc3e9a2c07ef4d617380"}, + {file = "fonttools-4.53.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:93bc9e5aaa06ff928d751dc6be889ff3e7d2aa393ab873bc7f6396a99f6fbb12"}, + {file = "fonttools-4.53.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:2367d47816cc9783a28645bc1dac07f8ffc93e0f015e8c9fc674a5b76a6da6e4"}, + {file = "fonttools-4.53.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:907fa0b662dd8fc1d7c661b90782ce81afb510fc4b7aa6ae7304d6c094b27bce"}, + {file = "fonttools-4.53.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3e0ad3c6ea4bd6a289d958a1eb922767233f00982cf0fe42b177657c86c80a8f"}, + {file = "fonttools-4.53.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:73121a9b7ff93ada888aaee3985a88495489cc027894458cb1a736660bdfb206"}, + {file = "fonttools-4.53.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:ee595d7ba9bba130b2bec555a40aafa60c26ce68ed0cf509983e0f12d88674fd"}, + {file = "fonttools-4.53.0-cp38-cp38-win32.whl", hash = "sha256:fca66d9ff2ac89b03f5aa17e0b21a97c21f3491c46b583bb131eb32c7bab33af"}, + {file = "fonttools-4.53.0-cp38-cp38-win_amd64.whl", hash = "sha256:31f0e3147375002aae30696dd1dc596636abbd22fca09d2e730ecde0baad1d6b"}, + {file = "fonttools-4.53.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7d6166192dcd925c78a91d599b48960e0a46fe565391c79fe6de481ac44d20ac"}, + {file = "fonttools-4.53.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ef50ec31649fbc3acf6afd261ed89d09eb909b97cc289d80476166df8438524d"}, + {file = "fonttools-4.53.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7f193f060391a455920d61684a70017ef5284ccbe6023bb056e15e5ac3de11d1"}, + {file = "fonttools-4.53.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba9f09ff17f947392a855e3455a846f9855f6cf6bec33e9a427d3c1d254c712f"}, + {file = "fonttools-4.53.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:0c555e039d268445172b909b1b6bdcba42ada1cf4a60e367d68702e3f87e5f64"}, + {file = "fonttools-4.53.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:5a4788036201c908079e89ae3f5399b33bf45b9ea4514913f4dbbe4fac08efe0"}, + {file = "fonttools-4.53.0-cp39-cp39-win32.whl", hash = "sha256:d1a24f51a3305362b94681120c508758a88f207fa0a681c16b5a4172e9e6c7a9"}, + {file = "fonttools-4.53.0-cp39-cp39-win_amd64.whl", hash = "sha256:1e677bfb2b4bd0e5e99e0f7283e65e47a9814b0486cb64a41adf9ef110e078f2"}, + {file = "fonttools-4.53.0-py3-none-any.whl", hash = "sha256:6b4f04b1fbc01a3569d63359f2227c89ab294550de277fd09d8fca6185669fa4"}, + {file = "fonttools-4.53.0.tar.gz", hash = "sha256:c93ed66d32de1559b6fc348838c7572d5c0ac1e4a258e76763a5caddd8944002"}, ] [package.extras] @@ -1054,13 +1054,13 @@ files = [ [[package]] name = "fsspec" -version = "2024.5.0" +version = "2024.6.1" description = "File-system specification" optional = false python-versions = ">=3.8" files = [ - {file = "fsspec-2024.5.0-py3-none-any.whl", hash = "sha256:e0fdbc446d67e182f49a70b82cf7889028a63588fde6b222521f10937b2b670c"}, - {file = "fsspec-2024.5.0.tar.gz", hash = "sha256:1d021b0b0f933e3b3029ed808eb400c08ba101ca2de4b3483fbc9ca23fcee94a"}, + {file = "fsspec-2024.6.1-py3-none-any.whl", hash = "sha256:3cb443f8bcd2efb31295a5b9fdb02aee81d8452c80d28f97a6d0959e6cee101e"}, + {file = "fsspec-2024.6.1.tar.gz", hash = "sha256:fad7d7e209dd4c1208e3bbfda706620e0da5142bebbd9c384afb95b07e798e49"}, ] [package.extras] @@ -1069,6 +1069,7 @@ adl = ["adlfs"] arrow = ["pyarrow (>=1)"] dask = ["dask", "distributed"] dev = ["pre-commit", "ruff"] +doc = ["numpydoc", "sphinx", "sphinx-design", "sphinx-rtd-theme", "yarl"] dropbox = ["dropbox", "dropboxdrivefs", "requests"] full = ["adlfs", "aiohttp (!=4.0.0a0,!=4.0.0a1)", "dask", "distributed", "dropbox", "dropboxdrivefs", "fusepy", "gcsfs", "libarchive-c", "ocifs", "panel", "paramiko", "pyarrow (>=1)", "pygit2", "requests", "s3fs", "smbprotocol", "tqdm"] fuse = ["fusepy"] @@ -1216,13 +1217,13 @@ files = [ [[package]] name = "ipykernel" -version = "6.29.4" +version = "6.29.5" description = "IPython Kernel for Jupyter" optional = false python-versions = ">=3.8" files = [ - {file = "ipykernel-6.29.4-py3-none-any.whl", hash = "sha256:1181e653d95c6808039c509ef8e67c4126b3b3af7781496c7cbfb5ed938a27da"}, - {file = "ipykernel-6.29.4.tar.gz", hash = "sha256:3d44070060f9475ac2092b760123fadf105d2e2493c24848b6691a7c4f42af5c"}, + {file = "ipykernel-6.29.5-py3-none-any.whl", hash = "sha256:afdb66ba5aa354b09b91379bac28ae4afebbb30e8b39510c9690afb7a10421b5"}, + {file = "ipykernel-6.29.5.tar.gz", hash = "sha256:f093a22c4a40f8828f8e330a9c297cb93dcab13bd9678ded6de8e5cf81c56215"}, ] [package.dependencies] @@ -1249,13 +1250,13 @@ test = ["flaky", "ipyparallel", "pre-commit", "pytest (>=7.0)", "pytest-asyncio [[package]] name = "ipython" -version = "8.24.0" +version = "8.26.0" description = "IPython: Productive Interactive Computing" optional = false python-versions = ">=3.10" files = [ - {file = "ipython-8.24.0-py3-none-any.whl", hash = "sha256:d7bf2f6c4314984e3e02393213bab8703cf163ede39672ce5918c51fe253a2a3"}, - {file = "ipython-8.24.0.tar.gz", hash = "sha256:010db3f8a728a578bb641fdd06c063b9fb8e96a9464c63aec6310fbcb5e80501"}, + {file = "ipython-8.26.0-py3-none-any.whl", hash = "sha256:e6b347c27bdf9c32ee9d31ae85defc525755a1869f14057e900675b9e8d6e6ff"}, + {file = "ipython-8.26.0.tar.gz", hash = "sha256:1cec0fbba8404af13facebe83d04436a7434c7400e59f47acf467c64abd0956c"}, ] [package.dependencies] @@ -1274,7 +1275,7 @@ typing-extensions = {version = ">=4.6", markers = "python_version < \"3.12\""} [package.extras] all = ["ipython[black,doc,kernel,matplotlib,nbconvert,nbformat,notebook,parallel,qtconsole]", "ipython[test,test-extra]"] black = ["black"] -doc = ["docrepr", "exceptiongroup", "ipykernel", "ipython[test]", "matplotlib", "setuptools (>=18.5)", "sphinx (>=1.3)", "sphinx-rtd-theme", "sphinxcontrib-jquery", "stack-data", "typing-extensions"] +doc = ["docrepr", "exceptiongroup", "intersphinx-registry", "ipykernel", "ipython[test]", "matplotlib", "setuptools (>=18.5)", "sphinx (>=1.3)", "sphinx-rtd-theme", "sphinxcontrib-jquery", "tomli", "typing-extensions"] kernel = ["ipykernel"] matplotlib = ["matplotlib"] nbconvert = ["nbconvert"] @@ -1282,7 +1283,7 @@ nbformat = ["nbformat"] notebook = ["ipywidgets", "notebook"] parallel = ["ipyparallel"] qtconsole = ["qtconsole"] -test = ["pickleshare", "pytest", "pytest-asyncio (<0.22)", "testpath"] +test = ["packaging", "pickleshare", "pytest", "pytest-asyncio (<0.22)", "testpath"] test-extra = ["curio", "ipython[test]", "matplotlib (!=3.2.0)", "nbformat", "numpy (>=1.23)", "pandas", "trio"] [[package]] @@ -1359,13 +1360,13 @@ files = [ [[package]] name = "jsonpointer" -version = "2.4" +version = "3.0.0" description = "Identify specific nodes in a JSON document (RFC 6901)" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, !=3.6.*" +python-versions = ">=3.7" files = [ - {file = "jsonpointer-2.4-py2.py3-none-any.whl", hash = "sha256:15d51bba20eea3165644553647711d150376234112651b4f1811022aecad7d7a"}, - {file = "jsonpointer-2.4.tar.gz", hash = "sha256:585cee82b70211fa9e6043b7bb89db6e1aa49524340dde8ad6b63206ea689d88"}, + {file = "jsonpointer-3.0.0-py2.py3-none-any.whl", hash = "sha256:13e088adc14fca8b6aa8177c044e12701e6ad4b28ff10e65f2267a90109c9942"}, + {file = "jsonpointer-3.0.0.tar.gz", hash = "sha256:2b2d729f2091522d61c3b31f82e11870f60b68f43fbc705cb76bf4b832af59ef"}, ] [[package]] @@ -1494,13 +1495,13 @@ jupyter-server = ">=1.1.2" [[package]] name = "jupyter-server" -version = "2.14.0" +version = "2.14.1" description = "The backendā€”i.e. core services, APIs, and REST endpointsā€”to Jupyter web applications." optional = false python-versions = ">=3.8" files = [ - {file = "jupyter_server-2.14.0-py3-none-any.whl", hash = "sha256:fb6be52c713e80e004fac34b35a0990d6d36ba06fd0a2b2ed82b899143a64210"}, - {file = "jupyter_server-2.14.0.tar.gz", hash = "sha256:659154cea512083434fd7c93b7fe0897af7a2fd0b9dd4749282b42eaac4ae677"}, + {file = "jupyter_server-2.14.1-py3-none-any.whl", hash = "sha256:16f7177c3a4ea8fe37784e2d31271981a812f0b2874af17339031dc3510cc2a5"}, + {file = "jupyter_server-2.14.1.tar.gz", hash = "sha256:12558d158ec7a0653bf96cc272bc7ad79e0127d503b982ed144399346694f726"}, ] [package.dependencies] @@ -1525,7 +1526,7 @@ traitlets = ">=5.6.0" websocket-client = ">=1.7" [package.extras] -docs = ["ipykernel", "jinja2", "jupyter-client", "jupyter-server", "myst-parser", "nbformat", "prometheus-client", "pydata-sphinx-theme", "send2trash", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-openapi (>=0.8.0)", "sphinxcontrib-spelling", "sphinxemoji", "tornado", "typing-extensions"] +docs = ["ipykernel", "jinja2", "jupyter-client", "myst-parser", "nbformat", "prometheus-client", "pydata-sphinx-theme", "send2trash", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-openapi (>=0.8.0)", "sphinxcontrib-spelling", "sphinxemoji", "tornado", "typing-extensions"] test = ["flaky", "ipykernel", "pre-commit", "pytest (>=7.0,<9)", "pytest-console-scripts", "pytest-jupyter[server] (>=0.7)", "pytest-timeout", "requests"] [[package]] @@ -1549,13 +1550,13 @@ test = ["jupyter-server (>=2.0.0)", "pytest (>=7.0)", "pytest-jupyter[server] (> [[package]] name = "jupyterlab" -version = "4.2.1" +version = "4.2.3" description = "JupyterLab computational environment" optional = false python-versions = ">=3.8" files = [ - {file = "jupyterlab-4.2.1-py3-none-any.whl", hash = "sha256:6ac6e3827b3c890e6e549800e8a4f4aaea6a69321e2240007902aa7a0c56a8e4"}, - {file = "jupyterlab-4.2.1.tar.gz", hash = "sha256:a10fb71085a6900820c62d43324005046402ffc8f0fde696103e37238a839507"}, + {file = "jupyterlab-4.2.3-py3-none-any.whl", hash = "sha256:0b59d11808e84bb84105c73364edfa867dd475492429ab34ea388a52f2e2e596"}, + {file = "jupyterlab-4.2.3.tar.gz", hash = "sha256:df6e46969ea51d66815167f23d92f105423b7f1f06fa604d4f44aeb018c82c7b"}, ] [package.dependencies] @@ -1569,6 +1570,7 @@ jupyter-server = ">=2.4.0,<3" jupyterlab-server = ">=2.27.1,<3" notebook-shim = ">=0.2" packaging = "*" +setuptools = ">=40.1.0" tomli = {version = ">=1.2.2", markers = "python_version < \"3.11\""} tornado = ">=6.2.0" traitlets = "*" @@ -2393,13 +2395,13 @@ test = ["pytest (>=7.2)", "pytest-cov (>=4.0)"] [[package]] name = "notebook" -version = "7.2.0" +version = "7.2.1" description = "Jupyter Notebook - A web-based notebook environment for interactive computing" optional = false python-versions = ">=3.8" files = [ - {file = "notebook-7.2.0-py3-none-any.whl", hash = "sha256:b4752d7407d6c8872fc505df0f00d3cae46e8efb033b822adacbaa3f1f3ce8f5"}, - {file = "notebook-7.2.0.tar.gz", hash = "sha256:34a2ba4b08ad5d19ec930db7484fb79746a1784be9e1a5f8218f9af8656a141f"}, + {file = "notebook-7.2.1-py3-none-any.whl", hash = "sha256:f45489a3995746f2195a137e0773e2130960b51c9ac3ce257dbc2705aab3a6ca"}, + {file = "notebook-7.2.1.tar.gz", hash = "sha256:4287b6da59740b32173d01d641f763d292f49c30e7a51b89c46ba8473126341e"}, ] [package.dependencies] @@ -2433,47 +2435,56 @@ test = ["pytest", "pytest-console-scripts", "pytest-jupyter", "pytest-tornasync" [[package]] name = "numpy" -version = "1.26.4" +version = "2.0.0" description = "Fundamental package for array computing in Python" optional = false python-versions = ">=3.9" files = [ - {file = "numpy-1.26.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:9ff0f4f29c51e2803569d7a51c2304de5554655a60c5d776e35b4a41413830d0"}, - {file = "numpy-1.26.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2e4ee3380d6de9c9ec04745830fd9e2eccb3e6cf790d39d7b98ffd19b0dd754a"}, - {file = "numpy-1.26.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d209d8969599b27ad20994c8e41936ee0964e6da07478d6c35016bc386b66ad4"}, - {file = "numpy-1.26.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ffa75af20b44f8dba823498024771d5ac50620e6915abac414251bd971b4529f"}, - {file = "numpy-1.26.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:62b8e4b1e28009ef2846b4c7852046736bab361f7aeadeb6a5b89ebec3c7055a"}, - {file = "numpy-1.26.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a4abb4f9001ad2858e7ac189089c42178fcce737e4169dc61321660f1a96c7d2"}, - {file = "numpy-1.26.4-cp310-cp310-win32.whl", hash = "sha256:bfe25acf8b437eb2a8b2d49d443800a5f18508cd811fea3181723922a8a82b07"}, - {file = "numpy-1.26.4-cp310-cp310-win_amd64.whl", hash = "sha256:b97fe8060236edf3662adfc2c633f56a08ae30560c56310562cb4f95500022d5"}, - {file = "numpy-1.26.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4c66707fabe114439db9068ee468c26bbdf909cac0fb58686a42a24de1760c71"}, - {file = "numpy-1.26.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:edd8b5fe47dab091176d21bb6de568acdd906d1887a4584a15a9a96a1dca06ef"}, - {file = "numpy-1.26.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7ab55401287bfec946ced39700c053796e7cc0e3acbef09993a9ad2adba6ca6e"}, - {file = "numpy-1.26.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:666dbfb6ec68962c033a450943ded891bed2d54e6755e35e5835d63f4f6931d5"}, - {file = "numpy-1.26.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:96ff0b2ad353d8f990b63294c8986f1ec3cb19d749234014f4e7eb0112ceba5a"}, - {file = "numpy-1.26.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:60dedbb91afcbfdc9bc0b1f3f402804070deed7392c23eb7a7f07fa857868e8a"}, - {file = "numpy-1.26.4-cp311-cp311-win32.whl", hash = "sha256:1af303d6b2210eb850fcf03064d364652b7120803a0b872f5211f5234b399f20"}, - {file = "numpy-1.26.4-cp311-cp311-win_amd64.whl", hash = "sha256:cd25bcecc4974d09257ffcd1f098ee778f7834c3ad767fe5db785be9a4aa9cb2"}, - {file = "numpy-1.26.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:b3ce300f3644fb06443ee2222c2201dd3a89ea6040541412b8fa189341847218"}, - {file = "numpy-1.26.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:03a8c78d01d9781b28a6989f6fa1bb2c4f2d51201cf99d3dd875df6fbd96b23b"}, - {file = "numpy-1.26.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9fad7dcb1aac3c7f0584a5a8133e3a43eeb2fe127f47e3632d43d677c66c102b"}, - {file = "numpy-1.26.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:675d61ffbfa78604709862923189bad94014bef562cc35cf61d3a07bba02a7ed"}, - {file = "numpy-1.26.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:ab47dbe5cc8210f55aa58e4805fe224dac469cde56b9f731a4c098b91917159a"}, - {file = "numpy-1.26.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:1dda2e7b4ec9dd512f84935c5f126c8bd8b9f2fc001e9f54af255e8c5f16b0e0"}, - {file = "numpy-1.26.4-cp312-cp312-win32.whl", hash = "sha256:50193e430acfc1346175fcbdaa28ffec49947a06918b7b92130744e81e640110"}, - {file = "numpy-1.26.4-cp312-cp312-win_amd64.whl", hash = "sha256:08beddf13648eb95f8d867350f6a018a4be2e5ad54c8d8caed89ebca558b2818"}, - {file = "numpy-1.26.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:7349ab0fa0c429c82442a27a9673fc802ffdb7c7775fad780226cb234965e53c"}, - {file = "numpy-1.26.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:52b8b60467cd7dd1e9ed082188b4e6bb35aa5cdd01777621a1658910745b90be"}, - {file = "numpy-1.26.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d5241e0a80d808d70546c697135da2c613f30e28251ff8307eb72ba696945764"}, - {file = "numpy-1.26.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f870204a840a60da0b12273ef34f7051e98c3b5961b61b0c2c1be6dfd64fbcd3"}, - {file = "numpy-1.26.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:679b0076f67ecc0138fd2ede3a8fd196dddc2ad3254069bcb9faf9a79b1cebcd"}, - {file = "numpy-1.26.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:47711010ad8555514b434df65f7d7b076bb8261df1ca9bb78f53d3b2db02e95c"}, - {file = "numpy-1.26.4-cp39-cp39-win32.whl", hash = "sha256:a354325ee03388678242a4d7ebcd08b5c727033fcff3b2f536aea978e15ee9e6"}, - {file = "numpy-1.26.4-cp39-cp39-win_amd64.whl", hash = "sha256:3373d5d70a5fe74a2c1bb6d2cfd9609ecf686d47a2d7b1d37a8f3b6bf6003aea"}, - {file = "numpy-1.26.4-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:afedb719a9dcfc7eaf2287b839d8198e06dcd4cb5d276a3df279231138e83d30"}, - {file = "numpy-1.26.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95a7476c59002f2f6c590b9b7b998306fba6a5aa646b1e22ddfeaf8f78c3a29c"}, - {file = "numpy-1.26.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:7e50d0a0cc3189f9cb0aeb3a6a6af18c16f59f004b866cd2be1c14b36134a4a0"}, - {file = "numpy-1.26.4.tar.gz", hash = "sha256:2a02aba9ed12e4ac4eb3ea9421c420301a0c6460d9830d74a9df87efa4912010"}, + {file = "numpy-2.0.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:04494f6ec467ccb5369d1808570ae55f6ed9b5809d7f035059000a37b8d7e86f"}, + {file = "numpy-2.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2635dbd200c2d6faf2ef9a0d04f0ecc6b13b3cad54f7c67c61155138835515d2"}, + {file = "numpy-2.0.0-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:0a43f0974d501842866cc83471bdb0116ba0dffdbaac33ec05e6afed5b615238"}, + {file = "numpy-2.0.0-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:8d83bb187fb647643bd56e1ae43f273c7f4dbcdf94550d7938cfc32566756514"}, + {file = "numpy-2.0.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:79e843d186c8fb1b102bef3e2bc35ef81160ffef3194646a7fdd6a73c6b97196"}, + {file = "numpy-2.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d7696c615765091cc5093f76fd1fa069870304beaccfd58b5dcc69e55ef49c1"}, + {file = "numpy-2.0.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b4c76e3d4c56f145d41b7b6751255feefae92edbc9a61e1758a98204200f30fc"}, + {file = "numpy-2.0.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:acd3a644e4807e73b4e1867b769fbf1ce8c5d80e7caaef0d90dcdc640dfc9787"}, + {file = "numpy-2.0.0-cp310-cp310-win32.whl", hash = "sha256:cee6cc0584f71adefe2c908856ccc98702baf95ff80092e4ca46061538a2ba98"}, + {file = "numpy-2.0.0-cp310-cp310-win_amd64.whl", hash = "sha256:ed08d2703b5972ec736451b818c2eb9da80d66c3e84aed1deeb0c345fefe461b"}, + {file = "numpy-2.0.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ad0c86f3455fbd0de6c31a3056eb822fc939f81b1618f10ff3406971893b62a5"}, + {file = "numpy-2.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e7f387600d424f91576af20518334df3d97bc76a300a755f9a8d6e4f5cadd289"}, + {file = "numpy-2.0.0-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:34f003cb88b1ba38cb9a9a4a3161c1604973d7f9d5552c38bc2f04f829536609"}, + {file = "numpy-2.0.0-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:b6f6a8f45d0313db07d6d1d37bd0b112f887e1369758a5419c0370ba915b3871"}, + {file = "numpy-2.0.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5f64641b42b2429f56ee08b4f427a4d2daf916ec59686061de751a55aafa22e4"}, + {file = "numpy-2.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a7039a136017eaa92c1848152827e1424701532ca8e8967fe480fe1569dae581"}, + {file = "numpy-2.0.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:46e161722e0f619749d1cd892167039015b2c2817296104487cd03ed4a955995"}, + {file = "numpy-2.0.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:0e50842b2295ba8414c8c1d9d957083d5dfe9e16828b37de883f51fc53c4016f"}, + {file = "numpy-2.0.0-cp311-cp311-win32.whl", hash = "sha256:2ce46fd0b8a0c947ae047d222f7136fc4d55538741373107574271bc00e20e8f"}, + {file = "numpy-2.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:fbd6acc766814ea6443628f4e6751d0da6593dae29c08c0b2606164db026970c"}, + {file = "numpy-2.0.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:354f373279768fa5a584bac997de6a6c9bc535c482592d7a813bb0c09be6c76f"}, + {file = "numpy-2.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:4d2f62e55a4cd9c58c1d9a1c9edaedcd857a73cb6fda875bf79093f9d9086f85"}, + {file = "numpy-2.0.0-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:1e72728e7501a450288fc8e1f9ebc73d90cfd4671ebbd631f3e7857c39bd16f2"}, + {file = "numpy-2.0.0-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:84554fc53daa8f6abf8e8a66e076aff6ece62de68523d9f665f32d2fc50fd66e"}, + {file = "numpy-2.0.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c73aafd1afca80afecb22718f8700b40ac7cab927b8abab3c3e337d70e10e5a2"}, + {file = "numpy-2.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:49d9f7d256fbc804391a7f72d4a617302b1afac1112fac19b6c6cec63fe7fe8a"}, + {file = "numpy-2.0.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:0ec84b9ba0654f3b962802edc91424331f423dcf5d5f926676e0150789cb3d95"}, + {file = "numpy-2.0.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:feff59f27338135776f6d4e2ec7aeeac5d5f7a08a83e80869121ef8164b74af9"}, + {file = "numpy-2.0.0-cp312-cp312-win32.whl", hash = "sha256:c5a59996dc61835133b56a32ebe4ef3740ea5bc19b3983ac60cc32be5a665d54"}, + {file = "numpy-2.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:a356364941fb0593bb899a1076b92dfa2029f6f5b8ba88a14fd0984aaf76d0df"}, + {file = "numpy-2.0.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:e61155fae27570692ad1d327e81c6cf27d535a5d7ef97648a17d922224b216de"}, + {file = "numpy-2.0.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4554eb96f0fd263041baf16cf0881b3f5dafae7a59b1049acb9540c4d57bc8cb"}, + {file = "numpy-2.0.0-cp39-cp39-macosx_14_0_arm64.whl", hash = "sha256:903703372d46bce88b6920a0cd86c3ad82dae2dbef157b5fc01b70ea1cfc430f"}, + {file = "numpy-2.0.0-cp39-cp39-macosx_14_0_x86_64.whl", hash = "sha256:3e8e01233d57639b2e30966c63d36fcea099d17c53bf424d77f088b0f4babd86"}, + {file = "numpy-2.0.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1cde1753efe513705a0c6d28f5884e22bdc30438bf0085c5c486cdaff40cd67a"}, + {file = "numpy-2.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:821eedb7165ead9eebdb569986968b541f9908979c2da8a4967ecac4439bae3d"}, + {file = "numpy-2.0.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9a1712c015831da583b21c5bfe15e8684137097969c6d22e8316ba66b5baabe4"}, + {file = "numpy-2.0.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:9c27f0946a3536403efb0e1c28def1ae6730a72cd0d5878db38824855e3afc44"}, + {file = "numpy-2.0.0-cp39-cp39-win32.whl", hash = "sha256:63b92c512d9dbcc37f9d81b123dec99fdb318ba38c8059afc78086fe73820275"}, + {file = "numpy-2.0.0-cp39-cp39-win_amd64.whl", hash = "sha256:3f6bed7f840d44c08ebdb73b1825282b801799e325bcbdfa6bc5c370e5aecc65"}, + {file = "numpy-2.0.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:9416a5c2e92ace094e9f0082c5fd473502c91651fb896bc17690d6fc475128d6"}, + {file = "numpy-2.0.0-pp39-pypy39_pp73-macosx_14_0_x86_64.whl", hash = "sha256:17067d097ed036636fa79f6a869ac26df7db1ba22039d962422506640314933a"}, + {file = "numpy-2.0.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:38ecb5b0582cd125f67a629072fed6f83562d9dd04d7e03256c9829bdec027ad"}, + {file = "numpy-2.0.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:cef04d068f5fb0518a77857953193b6bb94809a806bd0a14983a8f12ada060c9"}, + {file = "numpy-2.0.0.tar.gz", hash = "sha256:cf5d1c9e6837f8af9f92b6bd3e86d513cdc11f60fd62185cc49ec7d1aba34864"}, ] [[package]] @@ -2498,57 +2509,62 @@ tests = ["pytest (>=4.6.2)"] [[package]] name = "orjson" -version = "3.10.3" +version = "3.10.6" description = "Fast, correct Python JSON library supporting dataclasses, datetimes, and numpy" optional = false python-versions = ">=3.8" files = [ - {file = "orjson-3.10.3-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:9fb6c3f9f5490a3eb4ddd46fc1b6eadb0d6fc16fb3f07320149c3286a1409dd8"}, - {file = "orjson-3.10.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:252124b198662eee80428f1af8c63f7ff077c88723fe206a25df8dc57a57b1fa"}, - {file = "orjson-3.10.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9f3e87733823089a338ef9bbf363ef4de45e5c599a9bf50a7a9b82e86d0228da"}, - {file = "orjson-3.10.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c8334c0d87103bb9fbbe59b78129f1f40d1d1e8355bbed2ca71853af15fa4ed3"}, - {file = "orjson-3.10.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1952c03439e4dce23482ac846e7961f9d4ec62086eb98ae76d97bd41d72644d7"}, - {file = "orjson-3.10.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:c0403ed9c706dcd2809f1600ed18f4aae50be263bd7112e54b50e2c2bc3ebd6d"}, - {file = "orjson-3.10.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:382e52aa4270a037d41f325e7d1dfa395b7de0c367800b6f337d8157367bf3a7"}, - {file = "orjson-3.10.3-cp310-none-win32.whl", hash = "sha256:be2aab54313752c04f2cbaab4515291ef5af8c2256ce22abc007f89f42f49109"}, - {file = "orjson-3.10.3-cp310-none-win_amd64.whl", hash = "sha256:416b195f78ae461601893f482287cee1e3059ec49b4f99479aedf22a20b1098b"}, - {file = "orjson-3.10.3-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:73100d9abbbe730331f2242c1fc0bcb46a3ea3b4ae3348847e5a141265479700"}, - {file = "orjson-3.10.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:544a12eee96e3ab828dbfcb4d5a0023aa971b27143a1d35dc214c176fdfb29b3"}, - {file = "orjson-3.10.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:520de5e2ef0b4ae546bea25129d6c7c74edb43fc6cf5213f511a927f2b28148b"}, - {file = "orjson-3.10.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ccaa0a401fc02e8828a5bedfd80f8cd389d24f65e5ca3954d72c6582495b4bcf"}, - {file = "orjson-3.10.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9a7bc9e8bc11bac40f905640acd41cbeaa87209e7e1f57ade386da658092dc16"}, - {file = "orjson-3.10.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:3582b34b70543a1ed6944aca75e219e1192661a63da4d039d088a09c67543b08"}, - {file = "orjson-3.10.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1c23dfa91481de880890d17aa7b91d586a4746a4c2aa9a145bebdbaf233768d5"}, - {file = "orjson-3.10.3-cp311-none-win32.whl", hash = "sha256:1770e2a0eae728b050705206d84eda8b074b65ee835e7f85c919f5705b006c9b"}, - {file = "orjson-3.10.3-cp311-none-win_amd64.whl", hash = "sha256:93433b3c1f852660eb5abdc1f4dd0ced2be031ba30900433223b28ee0140cde5"}, - {file = "orjson-3.10.3-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:a39aa73e53bec8d410875683bfa3a8edf61e5a1c7bb4014f65f81d36467ea098"}, - {file = "orjson-3.10.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0943a96b3fa09bee1afdfccc2cb236c9c64715afa375b2af296c73d91c23eab2"}, - {file = "orjson-3.10.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e852baafceff8da3c9defae29414cc8513a1586ad93e45f27b89a639c68e8176"}, - {file = "orjson-3.10.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:18566beb5acd76f3769c1d1a7ec06cdb81edc4d55d2765fb677e3eaa10fa99e0"}, - {file = "orjson-3.10.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1bd2218d5a3aa43060efe649ec564ebedec8ce6ae0a43654b81376216d5ebd42"}, - {file = "orjson-3.10.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:cf20465e74c6e17a104ecf01bf8cd3b7b252565b4ccee4548f18b012ff2f8069"}, - {file = "orjson-3.10.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ba7f67aa7f983c4345eeda16054a4677289011a478ca947cd69c0a86ea45e534"}, - {file = "orjson-3.10.3-cp312-none-win32.whl", hash = "sha256:17e0713fc159abc261eea0f4feda611d32eabc35708b74bef6ad44f6c78d5ea0"}, - {file = "orjson-3.10.3-cp312-none-win_amd64.whl", hash = "sha256:4c895383b1ec42b017dd2c75ae8a5b862fc489006afde06f14afbdd0309b2af0"}, - {file = "orjson-3.10.3-cp38-cp38-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:be2719e5041e9fb76c8c2c06b9600fe8e8584e6980061ff88dcbc2691a16d20d"}, - {file = "orjson-3.10.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb0175a5798bdc878956099f5c54b9837cb62cfbf5d0b86ba6d77e43861bcec2"}, - {file = "orjson-3.10.3-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:978be58a68ade24f1af7758626806e13cff7748a677faf95fbb298359aa1e20d"}, - {file = "orjson-3.10.3-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:16bda83b5c61586f6f788333d3cf3ed19015e3b9019188c56983b5a299210eb5"}, - {file = "orjson-3.10.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4ad1f26bea425041e0a1adad34630c4825a9e3adec49079b1fb6ac8d36f8b754"}, - {file = "orjson-3.10.3-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:9e253498bee561fe85d6325ba55ff2ff08fb5e7184cd6a4d7754133bd19c9195"}, - {file = "orjson-3.10.3-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:0a62f9968bab8a676a164263e485f30a0b748255ee2f4ae49a0224be95f4532b"}, - {file = "orjson-3.10.3-cp38-none-win32.whl", hash = "sha256:8d0b84403d287d4bfa9bf7d1dc298d5c1c5d9f444f3737929a66f2fe4fb8f134"}, - {file = "orjson-3.10.3-cp38-none-win_amd64.whl", hash = "sha256:8bc7a4df90da5d535e18157220d7915780d07198b54f4de0110eca6b6c11e290"}, - {file = "orjson-3.10.3-cp39-cp39-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:9059d15c30e675a58fdcd6f95465c1522b8426e092de9fff20edebfdc15e1cb0"}, - {file = "orjson-3.10.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8d40c7f7938c9c2b934b297412c067936d0b54e4b8ab916fd1a9eb8f54c02294"}, - {file = "orjson-3.10.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d4a654ec1de8fdaae1d80d55cee65893cb06494e124681ab335218be6a0691e7"}, - {file = "orjson-3.10.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:831c6ef73f9aa53c5f40ae8f949ff7681b38eaddb6904aab89dca4d85099cb78"}, - {file = "orjson-3.10.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:99b880d7e34542db89f48d14ddecbd26f06838b12427d5a25d71baceb5ba119d"}, - {file = "orjson-3.10.3-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:2e5e176c994ce4bd434d7aafb9ecc893c15f347d3d2bbd8e7ce0b63071c52e25"}, - {file = "orjson-3.10.3-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:b69a58a37dab856491bf2d3bbf259775fdce262b727f96aafbda359cb1d114d8"}, - {file = "orjson-3.10.3-cp39-none-win32.whl", hash = "sha256:b8d4d1a6868cde356f1402c8faeb50d62cee765a1f7ffcfd6de732ab0581e063"}, - {file = "orjson-3.10.3-cp39-none-win_amd64.whl", hash = "sha256:5102f50c5fc46d94f2033fe00d392588564378260d64377aec702f21a7a22912"}, - {file = "orjson-3.10.3.tar.gz", hash = "sha256:2b166507acae7ba2f7c315dcf185a9111ad5e992ac81f2d507aac39193c2c818"}, + {file = "orjson-3.10.6-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:fb0ee33124db6eaa517d00890fc1a55c3bfe1cf78ba4a8899d71a06f2d6ff5c7"}, + {file = "orjson-3.10.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9c1c4b53b24a4c06547ce43e5fee6ec4e0d8fe2d597f4647fc033fd205707365"}, + {file = "orjson-3.10.6-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:eadc8fd310edb4bdbd333374f2c8fec6794bbbae99b592f448d8214a5e4050c0"}, + {file = "orjson-3.10.6-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:61272a5aec2b2661f4fa2b37c907ce9701e821b2c1285d5c3ab0207ebd358d38"}, + {file = "orjson-3.10.6-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:57985ee7e91d6214c837936dc1608f40f330a6b88bb13f5a57ce5257807da143"}, + {file = "orjson-3.10.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:633a3b31d9d7c9f02d49c4ab4d0a86065c4a6f6adc297d63d272e043472acab5"}, + {file = "orjson-3.10.6-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:1c680b269d33ec444afe2bdc647c9eb73166fa47a16d9a75ee56a374f4a45f43"}, + {file = "orjson-3.10.6-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:f759503a97a6ace19e55461395ab0d618b5a117e8d0fbb20e70cfd68a47327f2"}, + {file = "orjson-3.10.6-cp310-none-win32.whl", hash = "sha256:95a0cce17f969fb5391762e5719575217bd10ac5a189d1979442ee54456393f3"}, + {file = "orjson-3.10.6-cp310-none-win_amd64.whl", hash = "sha256:df25d9271270ba2133cc88ee83c318372bdc0f2cd6f32e7a450809a111efc45c"}, + {file = "orjson-3.10.6-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:b1ec490e10d2a77c345def52599311849fc063ae0e67cf4f84528073152bb2ba"}, + {file = "orjson-3.10.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:55d43d3feb8f19d07e9f01e5b9be4f28801cf7c60d0fa0d279951b18fae1932b"}, + {file = "orjson-3.10.6-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ac3045267e98fe749408eee1593a142e02357c5c99be0802185ef2170086a863"}, + {file = "orjson-3.10.6-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c27bc6a28ae95923350ab382c57113abd38f3928af3c80be6f2ba7eb8d8db0b0"}, + {file = "orjson-3.10.6-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d27456491ca79532d11e507cadca37fb8c9324a3976294f68fb1eff2dc6ced5a"}, + {file = "orjson-3.10.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:05ac3d3916023745aa3b3b388e91b9166be1ca02b7c7e41045da6d12985685f0"}, + {file = "orjson-3.10.6-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:1335d4ef59ab85cab66fe73fd7a4e881c298ee7f63ede918b7faa1b27cbe5212"}, + {file = "orjson-3.10.6-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:4bbc6d0af24c1575edc79994c20e1b29e6fb3c6a570371306db0993ecf144dc5"}, + {file = "orjson-3.10.6-cp311-none-win32.whl", hash = "sha256:450e39ab1f7694465060a0550b3f6d328d20297bf2e06aa947b97c21e5241fbd"}, + {file = "orjson-3.10.6-cp311-none-win_amd64.whl", hash = "sha256:227df19441372610b20e05bdb906e1742ec2ad7a66ac8350dcfd29a63014a83b"}, + {file = "orjson-3.10.6-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:ea2977b21f8d5d9b758bb3f344a75e55ca78e3ff85595d248eee813ae23ecdfb"}, + {file = "orjson-3.10.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b6f3d167d13a16ed263b52dbfedff52c962bfd3d270b46b7518365bcc2121eed"}, + {file = "orjson-3.10.6-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f710f346e4c44a4e8bdf23daa974faede58f83334289df80bc9cd12fe82573c7"}, + {file = "orjson-3.10.6-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7275664f84e027dcb1ad5200b8b18373e9c669b2a9ec33d410c40f5ccf4b257e"}, + {file = "orjson-3.10.6-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0943e4c701196b23c240b3d10ed8ecd674f03089198cf503105b474a4f77f21f"}, + {file = "orjson-3.10.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:446dee5a491b5bc7d8f825d80d9637e7af43f86a331207b9c9610e2f93fee22a"}, + {file = "orjson-3.10.6-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:64c81456d2a050d380786413786b057983892db105516639cb5d3ee3c7fd5148"}, + {file = "orjson-3.10.6-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:960db0e31c4e52fa0fc3ecbaea5b2d3b58f379e32a95ae6b0ebeaa25b93dfd34"}, + {file = "orjson-3.10.6-cp312-none-win32.whl", hash = "sha256:a6ea7afb5b30b2317e0bee03c8d34c8181bc5a36f2afd4d0952f378972c4efd5"}, + {file = "orjson-3.10.6-cp312-none-win_amd64.whl", hash = "sha256:874ce88264b7e655dde4aeaacdc8fd772a7962faadfb41abe63e2a4861abc3dc"}, + {file = "orjson-3.10.6-cp38-cp38-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:66680eae4c4e7fc193d91cfc1353ad6d01b4801ae9b5314f17e11ba55e934183"}, + {file = "orjson-3.10.6-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:caff75b425db5ef8e8f23af93c80f072f97b4fb3afd4af44482905c9f588da28"}, + {file = "orjson-3.10.6-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3722fddb821b6036fd2a3c814f6bd9b57a89dc6337b9924ecd614ebce3271394"}, + {file = "orjson-3.10.6-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c2c116072a8533f2fec435fde4d134610f806bdac20188c7bd2081f3e9e0133f"}, + {file = "orjson-3.10.6-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6eeb13218c8cf34c61912e9df2de2853f1d009de0e46ea09ccdf3d757896af0a"}, + {file = "orjson-3.10.6-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:965a916373382674e323c957d560b953d81d7a8603fbeee26f7b8248638bd48b"}, + {file = "orjson-3.10.6-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:03c95484d53ed8e479cade8628c9cea00fd9d67f5554764a1110e0d5aa2de96e"}, + {file = "orjson-3.10.6-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:e060748a04cccf1e0a6f2358dffea9c080b849a4a68c28b1b907f272b5127e9b"}, + {file = "orjson-3.10.6-cp38-none-win32.whl", hash = "sha256:738dbe3ef909c4b019d69afc19caf6b5ed0e2f1c786b5d6215fbb7539246e4c6"}, + {file = "orjson-3.10.6-cp38-none-win_amd64.whl", hash = "sha256:d40f839dddf6a7d77114fe6b8a70218556408c71d4d6e29413bb5f150a692ff7"}, + {file = "orjson-3.10.6-cp39-cp39-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:697a35a083c4f834807a6232b3e62c8b280f7a44ad0b759fd4dce748951e70db"}, + {file = "orjson-3.10.6-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fd502f96bf5ea9a61cbc0b2b5900d0dd68aa0da197179042bdd2be67e51a1e4b"}, + {file = "orjson-3.10.6-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f215789fb1667cdc874c1b8af6a84dc939fd802bf293a8334fce185c79cd359b"}, + {file = "orjson-3.10.6-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a2debd8ddce948a8c0938c8c93ade191d2f4ba4649a54302a7da905a81f00b56"}, + {file = "orjson-3.10.6-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5410111d7b6681d4b0d65e0f58a13be588d01b473822483f77f513c7f93bd3b2"}, + {file = "orjson-3.10.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bb1f28a137337fdc18384079fa5726810681055b32b92253fa15ae5656e1dddb"}, + {file = "orjson-3.10.6-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:bf2fbbce5fe7cd1aa177ea3eab2b8e6a6bc6e8592e4279ed3db2d62e57c0e1b2"}, + {file = "orjson-3.10.6-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:79b9b9e33bd4c517445a62b90ca0cc279b0f1f3970655c3df9e608bc3f91741a"}, + {file = "orjson-3.10.6-cp39-none-win32.whl", hash = "sha256:30b0a09a2014e621b1adf66a4f705f0809358350a757508ee80209b2d8dae219"}, + {file = "orjson-3.10.6-cp39-none-win_amd64.whl", hash = "sha256:49e3bc615652617d463069f91b867a4458114c5b104e13b7ae6872e5f79d0844"}, + {file = "orjson-3.10.6.tar.gz", hash = "sha256:e54b63d0a7c6c54a5f5f726bc93a2078111ef060fec4ecbf34c5db800ca3b3a7"}, ] [[package]] @@ -2581,13 +2597,13 @@ test = ["pytest"] [[package]] name = "packaging" -version = "24.0" +version = "24.1" description = "Core utilities for Python packages" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "packaging-24.0-py3-none-any.whl", hash = "sha256:2ddfb553fdf02fb784c234c7ba6ccc288296ceabec964ad2eae3777778130bc5"}, - {file = "packaging-24.0.tar.gz", hash = "sha256:eb82c5e3e56209074766e6885bb04b8c38a0c015d0a30036ebe7ece34c9989e9"}, + {file = "packaging-24.1-py3-none-any.whl", hash = "sha256:5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124"}, + {file = "packaging-24.1.tar.gz", hash = "sha256:026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002"}, ] [[package]] @@ -2740,84 +2756,95 @@ ptyprocess = ">=0.5" [[package]] name = "pillow" -version = "10.3.0" +version = "10.4.0" description = "Python Imaging Library (Fork)" optional = false python-versions = ">=3.8" files = [ - {file = "pillow-10.3.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:90b9e29824800e90c84e4022dd5cc16eb2d9605ee13f05d47641eb183cd73d45"}, - {file = "pillow-10.3.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a2c405445c79c3f5a124573a051062300936b0281fee57637e706453e452746c"}, - {file = "pillow-10.3.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:78618cdbccaa74d3f88d0ad6cb8ac3007f1a6fa5c6f19af64b55ca170bfa1edf"}, - {file = "pillow-10.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:261ddb7ca91fcf71757979534fb4c128448b5b4c55cb6152d280312062f69599"}, - {file = "pillow-10.3.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:ce49c67f4ea0609933d01c0731b34b8695a7a748d6c8d186f95e7d085d2fe475"}, - {file = "pillow-10.3.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:b14f16f94cbc61215115b9b1236f9c18403c15dd3c52cf629072afa9d54c1cbf"}, - {file = "pillow-10.3.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d33891be6df59d93df4d846640f0e46f1a807339f09e79a8040bc887bdcd7ed3"}, - {file = "pillow-10.3.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b50811d664d392f02f7761621303eba9d1b056fb1868c8cdf4231279645c25f5"}, - {file = "pillow-10.3.0-cp310-cp310-win32.whl", hash = "sha256:ca2870d5d10d8726a27396d3ca4cf7976cec0f3cb706debe88e3a5bd4610f7d2"}, - {file = "pillow-10.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:f0d0591a0aeaefdaf9a5e545e7485f89910c977087e7de2b6c388aec32011e9f"}, - {file = "pillow-10.3.0-cp310-cp310-win_arm64.whl", hash = "sha256:ccce24b7ad89adb5a1e34a6ba96ac2530046763912806ad4c247356a8f33a67b"}, - {file = "pillow-10.3.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:5f77cf66e96ae734717d341c145c5949c63180842a545c47a0ce7ae52ca83795"}, - {file = "pillow-10.3.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e4b878386c4bf293578b48fc570b84ecfe477d3b77ba39a6e87150af77f40c57"}, - {file = "pillow-10.3.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fdcbb4068117dfd9ce0138d068ac512843c52295ed996ae6dd1faf537b6dbc27"}, - {file = "pillow-10.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9797a6c8fe16f25749b371c02e2ade0efb51155e767a971c61734b1bf6293994"}, - {file = "pillow-10.3.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:9e91179a242bbc99be65e139e30690e081fe6cb91a8e77faf4c409653de39451"}, - {file = "pillow-10.3.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:1b87bd9d81d179bd8ab871603bd80d8645729939f90b71e62914e816a76fc6bd"}, - {file = "pillow-10.3.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:81d09caa7b27ef4e61cb7d8fbf1714f5aec1c6b6c5270ee53504981e6e9121ad"}, - {file = "pillow-10.3.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:048ad577748b9fa4a99a0548c64f2cb8d672d5bf2e643a739ac8faff1164238c"}, - {file = "pillow-10.3.0-cp311-cp311-win32.whl", hash = "sha256:7161ec49ef0800947dc5570f86568a7bb36fa97dd09e9827dc02b718c5643f09"}, - {file = "pillow-10.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:8eb0908e954d093b02a543dc963984d6e99ad2b5e36503d8a0aaf040505f747d"}, - {file = "pillow-10.3.0-cp311-cp311-win_arm64.whl", hash = "sha256:4e6f7d1c414191c1199f8996d3f2282b9ebea0945693fb67392c75a3a320941f"}, - {file = "pillow-10.3.0-cp312-cp312-macosx_10_10_x86_64.whl", hash = "sha256:e46f38133e5a060d46bd630faa4d9fa0202377495df1f068a8299fd78c84de84"}, - {file = "pillow-10.3.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:50b8eae8f7334ec826d6eeffaeeb00e36b5e24aa0b9df322c247539714c6df19"}, - {file = "pillow-10.3.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9d3bea1c75f8c53ee4d505c3e67d8c158ad4df0d83170605b50b64025917f338"}, - {file = "pillow-10.3.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:19aeb96d43902f0a783946a0a87dbdad5c84c936025b8419da0a0cd7724356b1"}, - {file = "pillow-10.3.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:74d28c17412d9caa1066f7a31df8403ec23d5268ba46cd0ad2c50fb82ae40462"}, - {file = "pillow-10.3.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:ff61bfd9253c3915e6d41c651d5f962da23eda633cf02262990094a18a55371a"}, - {file = "pillow-10.3.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d886f5d353333b4771d21267c7ecc75b710f1a73d72d03ca06df49b09015a9ef"}, - {file = "pillow-10.3.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4b5ec25d8b17217d635f8935dbc1b9aa5907962fae29dff220f2659487891cd3"}, - {file = "pillow-10.3.0-cp312-cp312-win32.whl", hash = "sha256:51243f1ed5161b9945011a7360e997729776f6e5d7005ba0c6879267d4c5139d"}, - {file = "pillow-10.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:412444afb8c4c7a6cc11a47dade32982439925537e483be7c0ae0cf96c4f6a0b"}, - {file = "pillow-10.3.0-cp312-cp312-win_arm64.whl", hash = "sha256:798232c92e7665fe82ac085f9d8e8ca98826f8e27859d9a96b41d519ecd2e49a"}, - {file = "pillow-10.3.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:4eaa22f0d22b1a7e93ff0a596d57fdede2e550aecffb5a1ef1106aaece48e96b"}, - {file = "pillow-10.3.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:cd5e14fbf22a87321b24c88669aad3a51ec052eb145315b3da3b7e3cc105b9a2"}, - {file = "pillow-10.3.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1530e8f3a4b965eb6a7785cf17a426c779333eb62c9a7d1bbcf3ffd5bf77a4aa"}, - {file = "pillow-10.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5d512aafa1d32efa014fa041d38868fda85028e3f930a96f85d49c7d8ddc0383"}, - {file = "pillow-10.3.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:339894035d0ede518b16073bdc2feef4c991ee991a29774b33e515f1d308e08d"}, - {file = "pillow-10.3.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:aa7e402ce11f0885305bfb6afb3434b3cd8f53b563ac065452d9d5654c7b86fd"}, - {file = "pillow-10.3.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:0ea2a783a2bdf2a561808fe4a7a12e9aa3799b701ba305de596bc48b8bdfce9d"}, - {file = "pillow-10.3.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:c78e1b00a87ce43bb37642c0812315b411e856a905d58d597750eb79802aaaa3"}, - {file = "pillow-10.3.0-cp38-cp38-win32.whl", hash = "sha256:72d622d262e463dfb7595202d229f5f3ab4b852289a1cd09650362db23b9eb0b"}, - {file = "pillow-10.3.0-cp38-cp38-win_amd64.whl", hash = "sha256:2034f6759a722da3a3dbd91a81148cf884e91d1b747992ca288ab88c1de15999"}, - {file = "pillow-10.3.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:2ed854e716a89b1afcedea551cd85f2eb2a807613752ab997b9974aaa0d56936"}, - {file = "pillow-10.3.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:dc1a390a82755a8c26c9964d457d4c9cbec5405896cba94cf51f36ea0d855002"}, - {file = "pillow-10.3.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4203efca580f0dd6f882ca211f923168548f7ba334c189e9eab1178ab840bf60"}, - {file = "pillow-10.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3102045a10945173d38336f6e71a8dc71bcaeed55c3123ad4af82c52807b9375"}, - {file = "pillow-10.3.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:6fb1b30043271ec92dc65f6d9f0b7a830c210b8a96423074b15c7bc999975f57"}, - {file = "pillow-10.3.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:1dfc94946bc60ea375cc39cff0b8da6c7e5f8fcdc1d946beb8da5c216156ddd8"}, - {file = "pillow-10.3.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b09b86b27a064c9624d0a6c54da01c1beaf5b6cadfa609cf63789b1d08a797b9"}, - {file = "pillow-10.3.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d3b2348a78bc939b4fed6552abfd2e7988e0f81443ef3911a4b8498ca084f6eb"}, - {file = "pillow-10.3.0-cp39-cp39-win32.whl", hash = "sha256:45ebc7b45406febf07fef35d856f0293a92e7417ae7933207e90bf9090b70572"}, - {file = "pillow-10.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:0ba26351b137ca4e0db0342d5d00d2e355eb29372c05afd544ebf47c0956ffeb"}, - {file = "pillow-10.3.0-cp39-cp39-win_arm64.whl", hash = "sha256:50fd3f6b26e3441ae07b7c979309638b72abc1a25da31a81a7fbd9495713ef4f"}, - {file = "pillow-10.3.0-pp310-pypy310_pp73-macosx_10_10_x86_64.whl", hash = "sha256:6b02471b72526ab8a18c39cb7967b72d194ec53c1fd0a70b050565a0f366d355"}, - {file = "pillow-10.3.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:8ab74c06ffdab957d7670c2a5a6e1a70181cd10b727cd788c4dd9005b6a8acd9"}, - {file = "pillow-10.3.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:048eeade4c33fdf7e08da40ef402e748df113fd0b4584e32c4af74fe78baaeb2"}, - {file = "pillow-10.3.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9e2ec1e921fd07c7cda7962bad283acc2f2a9ccc1b971ee4b216b75fad6f0463"}, - {file = "pillow-10.3.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:4c8e73e99da7db1b4cad7f8d682cf6abad7844da39834c288fbfa394a47bbced"}, - {file = "pillow-10.3.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:16563993329b79513f59142a6b02055e10514c1a8e86dca8b48a893e33cf91e3"}, - {file = "pillow-10.3.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:dd78700f5788ae180b5ee8902c6aea5a5726bac7c364b202b4b3e3ba2d293170"}, - {file = "pillow-10.3.0-pp39-pypy39_pp73-macosx_10_10_x86_64.whl", hash = "sha256:aff76a55a8aa8364d25400a210a65ff59d0168e0b4285ba6bf2bd83cf675ba32"}, - {file = "pillow-10.3.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:b7bc2176354defba3edc2b9a777744462da2f8e921fbaf61e52acb95bafa9828"}, - {file = "pillow-10.3.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:793b4e24db2e8742ca6423d3fde8396db336698c55cd34b660663ee9e45ed37f"}, - {file = "pillow-10.3.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d93480005693d247f8346bc8ee28c72a2191bdf1f6b5db469c096c0c867ac015"}, - {file = "pillow-10.3.0-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:c83341b89884e2b2e55886e8fbbf37c3fa5efd6c8907124aeb72f285ae5696e5"}, - {file = "pillow-10.3.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:1a1d1915db1a4fdb2754b9de292642a39a7fb28f1736699527bb649484fb966a"}, - {file = "pillow-10.3.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:a0eaa93d054751ee9964afa21c06247779b90440ca41d184aeb5d410f20ff591"}, - {file = "pillow-10.3.0.tar.gz", hash = "sha256:9d2455fbf44c914840c793e89aa82d0e1763a14253a000743719ae5946814b2d"}, + {file = "pillow-10.4.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:4d9667937cfa347525b319ae34375c37b9ee6b525440f3ef48542fcf66f2731e"}, + {file = "pillow-10.4.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:543f3dc61c18dafb755773efc89aae60d06b6596a63914107f75459cf984164d"}, + {file = "pillow-10.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7928ecbf1ece13956b95d9cbcfc77137652b02763ba384d9ab508099a2eca856"}, + {file = "pillow-10.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e4d49b85c4348ea0b31ea63bc75a9f3857869174e2bf17e7aba02945cd218e6f"}, + {file = "pillow-10.4.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:6c762a5b0997f5659a5ef2266abc1d8851ad7749ad9a6a5506eb23d314e4f46b"}, + {file = "pillow-10.4.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:a985e028fc183bf12a77a8bbf36318db4238a3ded7fa9df1b9a133f1cb79f8fc"}, + {file = "pillow-10.4.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:812f7342b0eee081eaec84d91423d1b4650bb9828eb53d8511bcef8ce5aecf1e"}, + {file = "pillow-10.4.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:ac1452d2fbe4978c2eec89fb5a23b8387aba707ac72810d9490118817d9c0b46"}, + {file = "pillow-10.4.0-cp310-cp310-win32.whl", hash = "sha256:bcd5e41a859bf2e84fdc42f4edb7d9aba0a13d29a2abadccafad99de3feff984"}, + {file = "pillow-10.4.0-cp310-cp310-win_amd64.whl", hash = "sha256:ecd85a8d3e79cd7158dec1c9e5808e821feea088e2f69a974db5edf84dc53141"}, + {file = "pillow-10.4.0-cp310-cp310-win_arm64.whl", hash = "sha256:ff337c552345e95702c5fde3158acb0625111017d0e5f24bf3acdb9cc16b90d1"}, + {file = "pillow-10.4.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:0a9ec697746f268507404647e531e92889890a087e03681a3606d9b920fbee3c"}, + {file = "pillow-10.4.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:dfe91cb65544a1321e631e696759491ae04a2ea11d36715eca01ce07284738be"}, + {file = "pillow-10.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5dc6761a6efc781e6a1544206f22c80c3af4c8cf461206d46a1e6006e4429ff3"}, + {file = "pillow-10.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5e84b6cc6a4a3d76c153a6b19270b3526a5a8ed6b09501d3af891daa2a9de7d6"}, + {file = "pillow-10.4.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:bbc527b519bd3aa9d7f429d152fea69f9ad37c95f0b02aebddff592688998abe"}, + {file = "pillow-10.4.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:76a911dfe51a36041f2e756b00f96ed84677cdeb75d25c767f296c1c1eda1319"}, + {file = "pillow-10.4.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:59291fb29317122398786c2d44427bbd1a6d7ff54017075b22be9d21aa59bd8d"}, + {file = "pillow-10.4.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:416d3a5d0e8cfe4f27f574362435bc9bae57f679a7158e0096ad2beb427b8696"}, + {file = "pillow-10.4.0-cp311-cp311-win32.whl", hash = "sha256:7086cc1d5eebb91ad24ded9f58bec6c688e9f0ed7eb3dbbf1e4800280a896496"}, + {file = "pillow-10.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:cbed61494057c0f83b83eb3a310f0bf774b09513307c434d4366ed64f4128a91"}, + {file = "pillow-10.4.0-cp311-cp311-win_arm64.whl", hash = "sha256:f5f0c3e969c8f12dd2bb7e0b15d5c468b51e5017e01e2e867335c81903046a22"}, + {file = "pillow-10.4.0-cp312-cp312-macosx_10_10_x86_64.whl", hash = "sha256:673655af3eadf4df6b5457033f086e90299fdd7a47983a13827acf7459c15d94"}, + {file = "pillow-10.4.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:866b6942a92f56300012f5fbac71f2d610312ee65e22f1aa2609e491284e5597"}, + {file = "pillow-10.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:29dbdc4207642ea6aad70fbde1a9338753d33fb23ed6956e706936706f52dd80"}, + {file = "pillow-10.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf2342ac639c4cf38799a44950bbc2dfcb685f052b9e262f446482afaf4bffca"}, + {file = "pillow-10.4.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:f5b92f4d70791b4a67157321c4e8225d60b119c5cc9aee8ecf153aace4aad4ef"}, + {file = "pillow-10.4.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:86dcb5a1eb778d8b25659d5e4341269e8590ad6b4e8b44d9f4b07f8d136c414a"}, + {file = "pillow-10.4.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:780c072c2e11c9b2c7ca37f9a2ee8ba66f44367ac3e5c7832afcfe5104fd6d1b"}, + {file = "pillow-10.4.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:37fb69d905be665f68f28a8bba3c6d3223c8efe1edf14cc4cfa06c241f8c81d9"}, + {file = "pillow-10.4.0-cp312-cp312-win32.whl", hash = "sha256:7dfecdbad5c301d7b5bde160150b4db4c659cee2b69589705b6f8a0c509d9f42"}, + {file = "pillow-10.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:1d846aea995ad352d4bdcc847535bd56e0fd88d36829d2c90be880ef1ee4668a"}, + {file = "pillow-10.4.0-cp312-cp312-win_arm64.whl", hash = "sha256:e553cad5179a66ba15bb18b353a19020e73a7921296a7979c4a2b7f6a5cd57f9"}, + {file = "pillow-10.4.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:8bc1a764ed8c957a2e9cacf97c8b2b053b70307cf2996aafd70e91a082e70df3"}, + {file = "pillow-10.4.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:6209bb41dc692ddfee4942517c19ee81b86c864b626dbfca272ec0f7cff5d9fb"}, + {file = "pillow-10.4.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bee197b30783295d2eb680b311af15a20a8b24024a19c3a26431ff83eb8d1f70"}, + {file = "pillow-10.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1ef61f5dd14c300786318482456481463b9d6b91ebe5ef12f405afbba77ed0be"}, + {file = "pillow-10.4.0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:297e388da6e248c98bc4a02e018966af0c5f92dfacf5a5ca22fa01cb3179bca0"}, + {file = "pillow-10.4.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:e4db64794ccdf6cb83a59d73405f63adbe2a1887012e308828596100a0b2f6cc"}, + {file = "pillow-10.4.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:bd2880a07482090a3bcb01f4265f1936a903d70bc740bfcb1fd4e8a2ffe5cf5a"}, + {file = "pillow-10.4.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4b35b21b819ac1dbd1233317adeecd63495f6babf21b7b2512d244ff6c6ce309"}, + {file = "pillow-10.4.0-cp313-cp313-win32.whl", hash = "sha256:551d3fd6e9dc15e4c1eb6fc4ba2b39c0c7933fa113b220057a34f4bb3268a060"}, + {file = "pillow-10.4.0-cp313-cp313-win_amd64.whl", hash = "sha256:030abdbe43ee02e0de642aee345efa443740aa4d828bfe8e2eb11922ea6a21ea"}, + {file = "pillow-10.4.0-cp313-cp313-win_arm64.whl", hash = "sha256:5b001114dd152cfd6b23befeb28d7aee43553e2402c9f159807bf55f33af8a8d"}, + {file = "pillow-10.4.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:8d4d5063501b6dd4024b8ac2f04962d661222d120381272deea52e3fc52d3736"}, + {file = "pillow-10.4.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:7c1ee6f42250df403c5f103cbd2768a28fe1a0ea1f0f03fe151c8741e1469c8b"}, + {file = "pillow-10.4.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b15e02e9bb4c21e39876698abf233c8c579127986f8207200bc8a8f6bb27acf2"}, + {file = "pillow-10.4.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7a8d4bade9952ea9a77d0c3e49cbd8b2890a399422258a77f357b9cc9be8d680"}, + {file = "pillow-10.4.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:43efea75eb06b95d1631cb784aa40156177bf9dd5b4b03ff38979e048258bc6b"}, + {file = "pillow-10.4.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:950be4d8ba92aca4b2bb0741285a46bfae3ca699ef913ec8416c1b78eadd64cd"}, + {file = "pillow-10.4.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:d7480af14364494365e89d6fddc510a13e5a2c3584cb19ef65415ca57252fb84"}, + {file = "pillow-10.4.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:73664fe514b34c8f02452ffb73b7a92c6774e39a647087f83d67f010eb9a0cf0"}, + {file = "pillow-10.4.0-cp38-cp38-win32.whl", hash = "sha256:e88d5e6ad0d026fba7bdab8c3f225a69f063f116462c49892b0149e21b6c0a0e"}, + {file = "pillow-10.4.0-cp38-cp38-win_amd64.whl", hash = "sha256:5161eef006d335e46895297f642341111945e2c1c899eb406882a6c61a4357ab"}, + {file = "pillow-10.4.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:0ae24a547e8b711ccaaf99c9ae3cd975470e1a30caa80a6aaee9a2f19c05701d"}, + {file = "pillow-10.4.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:298478fe4f77a4408895605f3482b6cc6222c018b2ce565c2b6b9c354ac3229b"}, + {file = "pillow-10.4.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:134ace6dc392116566980ee7436477d844520a26a4b1bd4053f6f47d096997fd"}, + {file = "pillow-10.4.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:930044bb7679ab003b14023138b50181899da3f25de50e9dbee23b61b4de2126"}, + {file = "pillow-10.4.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:c76e5786951e72ed3686e122d14c5d7012f16c8303a674d18cdcd6d89557fc5b"}, + {file = "pillow-10.4.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:b2724fdb354a868ddf9a880cb84d102da914e99119211ef7ecbdc613b8c96b3c"}, + {file = "pillow-10.4.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:dbc6ae66518ab3c5847659e9988c3b60dc94ffb48ef9168656e0019a93dbf8a1"}, + {file = "pillow-10.4.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:06b2f7898047ae93fad74467ec3d28fe84f7831370e3c258afa533f81ef7f3df"}, + {file = "pillow-10.4.0-cp39-cp39-win32.whl", hash = "sha256:7970285ab628a3779aecc35823296a7869f889b8329c16ad5a71e4901a3dc4ef"}, + {file = "pillow-10.4.0-cp39-cp39-win_amd64.whl", hash = "sha256:961a7293b2457b405967af9c77dcaa43cc1a8cd50d23c532e62d48ab6cdd56f5"}, + {file = "pillow-10.4.0-cp39-cp39-win_arm64.whl", hash = "sha256:32cda9e3d601a52baccb2856b8ea1fc213c90b340c542dcef77140dfa3278a9e"}, + {file = "pillow-10.4.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:5b4815f2e65b30f5fbae9dfffa8636d992d49705723fe86a3661806e069352d4"}, + {file = "pillow-10.4.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:8f0aef4ef59694b12cadee839e2ba6afeab89c0f39a3adc02ed51d109117b8da"}, + {file = "pillow-10.4.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9f4727572e2918acaa9077c919cbbeb73bd2b3ebcfe033b72f858fc9fbef0026"}, + {file = "pillow-10.4.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ff25afb18123cea58a591ea0244b92eb1e61a1fd497bf6d6384f09bc3262ec3e"}, + {file = "pillow-10.4.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:dc3e2db6ba09ffd7d02ae9141cfa0ae23393ee7687248d46a7507b75d610f4f5"}, + {file = "pillow-10.4.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:02a2be69f9c9b8c1e97cf2713e789d4e398c751ecfd9967c18d0ce304efbf885"}, + {file = "pillow-10.4.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:0755ffd4a0c6f267cccbae2e9903d95477ca2f77c4fcf3a3a09570001856c8a5"}, + {file = "pillow-10.4.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:a02364621fe369e06200d4a16558e056fe2805d3468350df3aef21e00d26214b"}, + {file = "pillow-10.4.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:1b5dea9831a90e9d0721ec417a80d4cbd7022093ac38a568db2dd78363b00908"}, + {file = "pillow-10.4.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9b885f89040bb8c4a1573566bbb2f44f5c505ef6e74cec7ab9068c900047f04b"}, + {file = "pillow-10.4.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:87dd88ded2e6d74d31e1e0a99a726a6765cda32d00ba72dc37f0651f306daaa8"}, + {file = "pillow-10.4.0-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:2db98790afc70118bd0255c2eeb465e9767ecf1f3c25f9a1abb8ffc8cfd1fe0a"}, + {file = "pillow-10.4.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:f7baece4ce06bade126fb84b8af1c33439a76d8a6fd818970215e0560ca28c27"}, + {file = "pillow-10.4.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:cfdd747216947628af7b259d274771d84db2268ca062dd5faf373639d00113a3"}, + {file = "pillow-10.4.0.tar.gz", hash = "sha256:166c1cd4d24309b30d61f79f4a9114b7b2313d7450912277855ff5dfd7cd4a06"}, ] [package.extras] -docs = ["furo", "olefile", "sphinx (>=2.4)", "sphinx-copybutton", "sphinx-inline-tabs", "sphinx-removed-in", "sphinxext-opengraph"] +docs = ["furo", "olefile", "sphinx (>=7.3)", "sphinx-copybutton", "sphinx-inline-tabs", "sphinxext-opengraph"] fpx = ["olefile"] mic = ["olefile"] tests = ["check-manifest", "coverage", "defusedxml", "markdown2", "olefile", "packaging", "pyroma", "pytest", "pytest-cov", "pytest-timeout"] @@ -2871,13 +2898,13 @@ twisted = ["twisted"] [[package]] name = "prompt-toolkit" -version = "3.0.45" +version = "3.0.47" description = "Library for building powerful interactive command lines in Python" optional = false python-versions = ">=3.7.0" files = [ - {file = "prompt_toolkit-3.0.45-py3-none-any.whl", hash = "sha256:a29b89160e494e3ea8622b09fa5897610b437884dcdcd054fdc1308883326c2a"}, - {file = "prompt_toolkit-3.0.45.tar.gz", hash = "sha256:07c60ee4ab7b7e90824b61afa840c8f5aad2d46b3e2e10acc33d8ecc94a49089"}, + {file = "prompt_toolkit-3.0.47-py3-none-any.whl", hash = "sha256:0d7bfa67001d5e39d02c224b663abc33687405033a8c422d0d675a5a13361d10"}, + {file = "prompt_toolkit-3.0.47.tar.gz", hash = "sha256:1e1b29cb58080b1e69f207c893a1a7bf16d127a5c30c9d17a25a5d77792e5360"}, ] [package.dependencies] @@ -2938,13 +2965,13 @@ tests = ["pytest"] [[package]] name = "pycodestyle" -version = "2.11.1" +version = "2.12.0" description = "Python style guide checker" optional = false python-versions = ">=3.8" files = [ - {file = "pycodestyle-2.11.1-py2.py3-none-any.whl", hash = "sha256:44fe31000b2d866f2e41841b18528a505fbd7fef9017b04eff4e2648a0fadc67"}, - {file = "pycodestyle-2.11.1.tar.gz", hash = "sha256:41ba0e7afc9752dfb53ced5489e89f8186be00e599e712660695b7a75ff2663f"}, + {file = "pycodestyle-2.12.0-py2.py3-none-any.whl", hash = "sha256:949a39f6b86c3e1515ba1787c2022131d165a8ad271b11370a8819aa070269e4"}, + {file = "pycodestyle-2.12.0.tar.gz", hash = "sha256:442f950141b4f43df752dd303511ffded3a04c2b6fb7f65980574f0c31e6e79c"}, ] [[package]] @@ -3014,23 +3041,23 @@ files = [ [[package]] name = "pyinstaller" -version = "6.7.0" +version = "6.8.0" description = "PyInstaller bundles a Python application and all its dependencies into a single package." optional = false python-versions = "<3.13,>=3.8" files = [ - {file = "pyinstaller-6.7.0-py3-none-macosx_10_13_universal2.whl", hash = "sha256:6decedba07031d1318528cb76d8400ae1572f7b08197f771ceca9e454e0060bf"}, - {file = "pyinstaller-6.7.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:0756b3d4d3283ae2a5bda56abe479b80801ecafecdb3a96cd928542c2c75d016"}, - {file = "pyinstaller-6.7.0-py3-none-manylinux2014_i686.whl", hash = "sha256:df1b66500a7def997790bdadc23c142a2f96585ccd440beac63b72a4f3e41684"}, - {file = "pyinstaller-6.7.0-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:fa552214a8cbb5bfe4621c46a73c3cce12f299a520aa5ac397dc18718278f03a"}, - {file = "pyinstaller-6.7.0-py3-none-manylinux2014_s390x.whl", hash = "sha256:5263ecbfd34a2297f0e5d41ecfcf7a6fb1ebbf60dbe0dc7c2d64f4a55871a99d"}, - {file = "pyinstaller-6.7.0-py3-none-manylinux2014_x86_64.whl", hash = "sha256:4ff8ce04f1e5ab3a65d4a1ee6036cba648d0cdae6a7a33c6f0ca4ace46cdd43c"}, - {file = "pyinstaller-6.7.0-py3-none-musllinux_1_1_aarch64.whl", hash = "sha256:95efc2de7722213f376c5bac9620f390899f9a3c9eed70bd65adf29e2a085d5f"}, - {file = "pyinstaller-6.7.0-py3-none-musllinux_1_1_x86_64.whl", hash = "sha256:1b6dd6a50a7315214d345875cd08f8aa71025e7ba6bfa0f95c09285585e8d372"}, - {file = "pyinstaller-6.7.0-py3-none-win32.whl", hash = "sha256:73b94ce02b208c34eaabd032dd1522a3c03c0b3118a31bf7e4eafe7a9f4af2da"}, - {file = "pyinstaller-6.7.0-py3-none-win_amd64.whl", hash = "sha256:a3f85935b40f89e717f1e67377d3bfc953060e5795828ecf5357e2c1f7aa52bf"}, - {file = "pyinstaller-6.7.0-py3-none-win_arm64.whl", hash = "sha256:53038419ca09eea59de02dfb52453dd327983b0957821be610fb04cfd84676d0"}, - {file = "pyinstaller-6.7.0.tar.gz", hash = "sha256:8f09179c5f3d1b4b8453ac61adfe394dd416f9fc33abd7553f77d4897bc3a582"}, + {file = "pyinstaller-6.8.0-py3-none-macosx_10_13_universal2.whl", hash = "sha256:5ff6bc2784c1026f8e2f04aa3760cbed41408e108a9d4cf1dd52ee8351a3f6e1"}, + {file = "pyinstaller-6.8.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:39ac424d2ee2457d2ab11a5091436e75a0cccae207d460d180aa1fcbbafdd528"}, + {file = "pyinstaller-6.8.0-py3-none-manylinux2014_i686.whl", hash = "sha256:355832a3acc7de90a255ecacd4b9f9e166a547a79c8905d49f14e3a75c1acdb9"}, + {file = "pyinstaller-6.8.0-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:6303c7a009f47e6a96ef65aed49f41e36ece8d079b9193ca92fe807403e5fe80"}, + {file = "pyinstaller-6.8.0-py3-none-manylinux2014_s390x.whl", hash = "sha256:2b71509468c811968c0b5decb5bbe85b6292ea52d7b1f26313d2aabb673fa9a5"}, + {file = "pyinstaller-6.8.0-py3-none-manylinux2014_x86_64.whl", hash = "sha256:ff31c5b99e05a4384bbe2071df67ec8b2b347640a375eae9b40218be2f1754c6"}, + {file = "pyinstaller-6.8.0-py3-none-musllinux_1_1_aarch64.whl", hash = "sha256:000c36b13fe4cd8d0d8c2bc855b1ddcf39867b5adf389e6b5ca45b25fa3e619d"}, + {file = "pyinstaller-6.8.0-py3-none-musllinux_1_1_x86_64.whl", hash = "sha256:fe0af018d7d5077180e3144ada89a4da5df8d07716eb7e9482834a56dc57a4e8"}, + {file = "pyinstaller-6.8.0-py3-none-win32.whl", hash = "sha256:d257f6645c7334cbd66f38a4fac62c3ad614cc46302b2b5d9f8cc48c563bce0e"}, + {file = "pyinstaller-6.8.0-py3-none-win_amd64.whl", hash = "sha256:81cccfa9b16699b457f4788c5cc119b50f3cd4d0db924955f15c33f2ad27a50d"}, + {file = "pyinstaller-6.8.0-py3-none-win_arm64.whl", hash = "sha256:1c3060a263758cf7f0144ab4c016097b20451b2469d468763414665db1bb743d"}, + {file = "pyinstaller-6.8.0.tar.gz", hash = "sha256:3f4b6520f4423fe19bcc2fd63ab7238851ae2bdcbc98f25bc5d2f97cc62012e9"}, ] [package.dependencies] @@ -3048,13 +3075,13 @@ hook-testing = ["execnet (>=1.5.0)", "psutil", "pytest (>=2.7.3)"] [[package]] name = "pyinstaller-hooks-contrib" -version = "2024.6" +version = "2024.7" description = "Community maintained hooks for PyInstaller" optional = false python-versions = ">=3.7" files = [ - {file = "pyinstaller_hooks_contrib-2024.6-py2.py3-none-any.whl", hash = "sha256:6cc88dad75261d9e1a7e0c6385139f35dcdbb16640c911a27f6078fe924a38cf"}, - {file = "pyinstaller_hooks_contrib-2024.6.tar.gz", hash = "sha256:3c188b3a79f5cd46d96520df3934642556a1b6ce8988ec5bbce820ada424bc2b"}, + {file = "pyinstaller_hooks_contrib-2024.7-py2.py3-none-any.whl", hash = "sha256:8bf0775771fbaf96bcd2f4dfd6f7ae6c1dd1b1efe254c7e50477b3c08e7841d8"}, + {file = "pyinstaller_hooks_contrib-2024.7.tar.gz", hash = "sha256:fd5f37dcf99bece184e40642af88be16a9b89613ecb958a8bd1136634fc9fac5"}, ] [package.dependencies] @@ -3077,13 +3104,13 @@ diagrams = ["jinja2", "railroad-diagrams"] [[package]] name = "pytest" -version = "8.2.1" +version = "8.2.2" description = "pytest: simple powerful testing with Python" optional = false python-versions = ">=3.8" files = [ - {file = "pytest-8.2.1-py3-none-any.whl", hash = "sha256:faccc5d332b8c3719f40283d0d44aa5cf101cec36f88cde9ed8f2bc0538612b1"}, - {file = "pytest-8.2.1.tar.gz", hash = "sha256:5046e5b46d8e4cac199c373041f26be56fdb81eb4e67dc11d4e10811fc3408fd"}, + {file = "pytest-8.2.2-py3-none-any.whl", hash = "sha256:c434598117762e2bd304e526244f67bf66bbd7b5d6cf22138be51ff661980343"}, + {file = "pytest-8.2.2.tar.gz", hash = "sha256:de4bb8104e201939ccdc688b27a89a7be2079b22e2bd2b07f806b6ba71117977"}, ] [package.dependencies] @@ -3548,32 +3575,32 @@ files = [ [[package]] name = "scikit-learn" -version = "1.5.0" +version = "1.5.1" description = "A set of python modules for machine learning and data mining" optional = false python-versions = ">=3.9" files = [ - {file = "scikit_learn-1.5.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:12e40ac48555e6b551f0a0a5743cc94cc5a765c9513fe708e01f0aa001da2801"}, - {file = "scikit_learn-1.5.0-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:f405c4dae288f5f6553b10c4ac9ea7754d5180ec11e296464adb5d6ac68b6ef5"}, - {file = "scikit_learn-1.5.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:df8ccabbf583315f13160a4bb06037bde99ea7d8211a69787a6b7c5d4ebb6fc3"}, - {file = "scikit_learn-1.5.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2c75ea812cd83b1385bbfa94ae971f0d80adb338a9523f6bbcb5e0b0381151d4"}, - {file = "scikit_learn-1.5.0-cp310-cp310-win_amd64.whl", hash = "sha256:a90c5da84829a0b9b4bf00daf62754b2be741e66b5946911f5bdfaa869fcedd6"}, - {file = "scikit_learn-1.5.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2a65af2d8a6cce4e163a7951a4cfbfa7fceb2d5c013a4b593686c7f16445cf9d"}, - {file = "scikit_learn-1.5.0-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:4c0c56c3005f2ec1db3787aeaabefa96256580678cec783986836fc64f8ff622"}, - {file = "scikit_learn-1.5.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f77547165c00625551e5c250cefa3f03f2fc92c5e18668abd90bfc4be2e0bff"}, - {file = "scikit_learn-1.5.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:118a8d229a41158c9f90093e46b3737120a165181a1b58c03461447aa4657415"}, - {file = "scikit_learn-1.5.0-cp311-cp311-win_amd64.whl", hash = "sha256:a03b09f9f7f09ffe8c5efffe2e9de1196c696d811be6798ad5eddf323c6f4d40"}, - {file = "scikit_learn-1.5.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:460806030c666addee1f074788b3978329a5bfdc9b7d63e7aad3f6d45c67a210"}, - {file = "scikit_learn-1.5.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:1b94d6440603752b27842eda97f6395f570941857456c606eb1d638efdb38184"}, - {file = "scikit_learn-1.5.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d82c2e573f0f2f2f0be897e7a31fcf4e73869247738ab8c3ce7245549af58ab8"}, - {file = "scikit_learn-1.5.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a3a10e1d9e834e84d05e468ec501a356226338778769317ee0b84043c0d8fb06"}, - {file = "scikit_learn-1.5.0-cp312-cp312-win_amd64.whl", hash = "sha256:855fc5fa8ed9e4f08291203af3d3e5fbdc4737bd617a371559aaa2088166046e"}, - {file = "scikit_learn-1.5.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:40fb7d4a9a2db07e6e0cae4dc7bdbb8fada17043bac24104d8165e10e4cff1a2"}, - {file = "scikit_learn-1.5.0-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:47132440050b1c5beb95f8ba0b2402bbd9057ce96ec0ba86f2f445dd4f34df67"}, - {file = "scikit_learn-1.5.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:174beb56e3e881c90424e21f576fa69c4ffcf5174632a79ab4461c4c960315ac"}, - {file = "scikit_learn-1.5.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:261fe334ca48f09ed64b8fae13f9b46cc43ac5f580c4a605cbb0a517456c8f71"}, - {file = "scikit_learn-1.5.0-cp39-cp39-win_amd64.whl", hash = "sha256:057b991ac64b3e75c9c04b5f9395eaf19a6179244c089afdebaad98264bff37c"}, - {file = "scikit_learn-1.5.0.tar.gz", hash = "sha256:789e3db01c750ed6d496fa2db7d50637857b451e57bcae863bff707c1247bef7"}, + {file = "scikit_learn-1.5.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:781586c414f8cc58e71da4f3d7af311e0505a683e112f2f62919e3019abd3745"}, + {file = "scikit_learn-1.5.1-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:f5b213bc29cc30a89a3130393b0e39c847a15d769d6e59539cd86b75d276b1a7"}, + {file = "scikit_learn-1.5.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1ff4ba34c2abff5ec59c803ed1d97d61b036f659a17f55be102679e88f926fac"}, + {file = "scikit_learn-1.5.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:161808750c267b77b4a9603cf9c93579c7a74ba8486b1336034c2f1579546d21"}, + {file = "scikit_learn-1.5.1-cp310-cp310-win_amd64.whl", hash = "sha256:10e49170691514a94bb2e03787aa921b82dbc507a4ea1f20fd95557862c98dc1"}, + {file = "scikit_learn-1.5.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:154297ee43c0b83af12464adeab378dee2d0a700ccd03979e2b821e7dd7cc1c2"}, + {file = "scikit_learn-1.5.1-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:b5e865e9bd59396220de49cb4a57b17016256637c61b4c5cc81aaf16bc123bbe"}, + {file = "scikit_learn-1.5.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:909144d50f367a513cee6090873ae582dba019cb3fca063b38054fa42704c3a4"}, + {file = "scikit_learn-1.5.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:689b6f74b2c880276e365fe84fe4f1befd6a774f016339c65655eaff12e10cbf"}, + {file = "scikit_learn-1.5.1-cp311-cp311-win_amd64.whl", hash = "sha256:9a07f90846313a7639af6a019d849ff72baadfa4c74c778821ae0fad07b7275b"}, + {file = "scikit_learn-1.5.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:5944ce1faada31c55fb2ba20a5346b88e36811aab504ccafb9f0339e9f780395"}, + {file = "scikit_learn-1.5.1-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:0828673c5b520e879f2af6a9e99eee0eefea69a2188be1ca68a6121b809055c1"}, + {file = "scikit_learn-1.5.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:508907e5f81390e16d754e8815f7497e52139162fd69c4fdbd2dfa5d6cc88915"}, + {file = "scikit_learn-1.5.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:97625f217c5c0c5d0505fa2af28ae424bd37949bb2f16ace3ff5f2f81fb4498b"}, + {file = "scikit_learn-1.5.1-cp312-cp312-win_amd64.whl", hash = "sha256:da3f404e9e284d2b0a157e1b56b6566a34eb2798205cba35a211df3296ab7a74"}, + {file = "scikit_learn-1.5.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:88e0672c7ac21eb149d409c74cc29f1d611d5158175846e7a9c2427bd12b3956"}, + {file = "scikit_learn-1.5.1-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:7b073a27797a283187a4ef4ee149959defc350b46cbf63a84d8514fe16b69855"}, + {file = "scikit_learn-1.5.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b59e3e62d2be870e5c74af4e793293753565c7383ae82943b83383fdcf5cc5c1"}, + {file = "scikit_learn-1.5.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1bd8d3a19d4bd6dc5a7d4f358c8c3a60934dc058f363c34c0ac1e9e12a31421d"}, + {file = "scikit_learn-1.5.1-cp39-cp39-win_amd64.whl", hash = "sha256:5f57428de0c900a98389c4a433d4a3cf89de979b3aa24d1c1d251802aa15e44d"}, + {file = "scikit_learn-1.5.1.tar.gz", hash = "sha256:0ea5d40c0e3951df445721927448755d3fe1d80833b0b7308ebff5d2a45e6414"}, ] [package.dependencies] @@ -3584,8 +3611,8 @@ threadpoolctl = ">=3.1.0" [package.extras] benchmark = ["matplotlib (>=3.3.4)", "memory_profiler (>=0.57.0)", "pandas (>=1.1.5)"] -build = ["cython (>=3.0.10)", "meson-python (>=0.15.0)", "numpy (>=1.19.5)", "scipy (>=1.6.0)"] -docs = ["Pillow (>=7.1.2)", "matplotlib (>=3.3.4)", "memory_profiler (>=0.57.0)", "numpydoc (>=1.2.0)", "pandas (>=1.1.5)", "plotly (>=5.14.0)", "polars (>=0.20.23)", "pooch (>=1.6.0)", "scikit-image (>=0.17.2)", "seaborn (>=0.9.0)", "sphinx (>=6.0.0)", "sphinx-copybutton (>=0.5.2)", "sphinx-gallery (>=0.15.0)", "sphinx-prompt (>=1.3.0)", "sphinxext-opengraph (>=0.4.2)"] +build = ["cython (>=3.0.10)", "meson-python (>=0.16.0)", "numpy (>=1.19.5)", "scipy (>=1.6.0)"] +docs = ["Pillow (>=7.1.2)", "matplotlib (>=3.3.4)", "memory_profiler (>=0.57.0)", "numpydoc (>=1.2.0)", "pandas (>=1.1.5)", "plotly (>=5.14.0)", "polars (>=0.20.23)", "pooch (>=1.6.0)", "pydata-sphinx-theme (>=0.15.3)", "scikit-image (>=0.17.2)", "seaborn (>=0.9.0)", "sphinx (>=7.3.7)", "sphinx-copybutton (>=0.5.2)", "sphinx-design (>=0.5.0)", "sphinx-gallery (>=0.16.0)", "sphinx-prompt (>=1.4.0)", "sphinx-remove-toctrees (>=1.0.0.post1)", "sphinxcontrib-sass (>=0.3.4)", "sphinxext-opengraph (>=0.9.1)"] examples = ["matplotlib (>=3.3.4)", "pandas (>=1.1.5)", "plotly (>=5.14.0)", "pooch (>=1.6.0)", "scikit-image (>=0.17.2)", "seaborn (>=0.9.0)"] install = ["joblib (>=1.2.0)", "numpy (>=1.19.5)", "scipy (>=1.6.0)", "threadpoolctl (>=3.1.0)"] maintenance = ["conda-lock (==2.5.6)"] @@ -3593,45 +3620,45 @@ tests = ["black (>=24.3.0)", "matplotlib (>=3.3.4)", "mypy (>=1.9)", "numpydoc ( [[package]] name = "scipy" -version = "1.13.1" +version = "1.14.0" description = "Fundamental algorithms for scientific computing in Python" optional = false -python-versions = ">=3.9" +python-versions = ">=3.10" files = [ - {file = "scipy-1.13.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:20335853b85e9a49ff7572ab453794298bcf0354d8068c5f6775a0eabf350aca"}, - {file = "scipy-1.13.1-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:d605e9c23906d1994f55ace80e0125c587f96c020037ea6aa98d01b4bd2e222f"}, - {file = "scipy-1.13.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cfa31f1def5c819b19ecc3a8b52d28ffdcc7ed52bb20c9a7589669dd3c250989"}, - {file = "scipy-1.13.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f26264b282b9da0952a024ae34710c2aff7d27480ee91a2e82b7b7073c24722f"}, - {file = "scipy-1.13.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:eccfa1906eacc02de42d70ef4aecea45415f5be17e72b61bafcfd329bdc52e94"}, - {file = "scipy-1.13.1-cp310-cp310-win_amd64.whl", hash = "sha256:2831f0dc9c5ea9edd6e51e6e769b655f08ec6db6e2e10f86ef39bd32eb11da54"}, - {file = "scipy-1.13.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:27e52b09c0d3a1d5b63e1105f24177e544a222b43611aaf5bc44d4a0979e32f9"}, - {file = "scipy-1.13.1-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:54f430b00f0133e2224c3ba42b805bfd0086fe488835effa33fa291561932326"}, - {file = "scipy-1.13.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e89369d27f9e7b0884ae559a3a956e77c02114cc60a6058b4e5011572eea9299"}, - {file = "scipy-1.13.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a78b4b3345f1b6f68a763c6e25c0c9a23a9fd0f39f5f3d200efe8feda560a5fa"}, - {file = "scipy-1.13.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:45484bee6d65633752c490404513b9ef02475b4284c4cfab0ef946def50b3f59"}, - {file = "scipy-1.13.1-cp311-cp311-win_amd64.whl", hash = "sha256:5713f62f781eebd8d597eb3f88b8bf9274e79eeabf63afb4a737abc6c84ad37b"}, - {file = "scipy-1.13.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:5d72782f39716b2b3509cd7c33cdc08c96f2f4d2b06d51e52fb45a19ca0c86a1"}, - {file = "scipy-1.13.1-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:017367484ce5498445aade74b1d5ab377acdc65e27095155e448c88497755a5d"}, - {file = "scipy-1.13.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:949ae67db5fa78a86e8fa644b9a6b07252f449dcf74247108c50e1d20d2b4627"}, - {file = "scipy-1.13.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:de3ade0e53bc1f21358aa74ff4830235d716211d7d077e340c7349bc3542e884"}, - {file = "scipy-1.13.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:2ac65fb503dad64218c228e2dc2d0a0193f7904747db43014645ae139c8fad16"}, - {file = "scipy-1.13.1-cp312-cp312-win_amd64.whl", hash = "sha256:cdd7dacfb95fea358916410ec61bbc20440f7860333aee6d882bb8046264e949"}, - {file = "scipy-1.13.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:436bbb42a94a8aeef855d755ce5a465479c721e9d684de76bf61a62e7c2b81d5"}, - {file = "scipy-1.13.1-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:8335549ebbca860c52bf3d02f80784e91a004b71b059e3eea9678ba994796a24"}, - {file = "scipy-1.13.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d533654b7d221a6a97304ab63c41c96473ff04459e404b83275b60aa8f4b7004"}, - {file = "scipy-1.13.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:637e98dcf185ba7f8e663e122ebf908c4702420477ae52a04f9908707456ba4d"}, - {file = "scipy-1.13.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a014c2b3697bde71724244f63de2476925596c24285c7a637364761f8710891c"}, - {file = "scipy-1.13.1-cp39-cp39-win_amd64.whl", hash = "sha256:392e4ec766654852c25ebad4f64e4e584cf19820b980bc04960bca0b0cd6eaa2"}, - {file = "scipy-1.13.1.tar.gz", hash = "sha256:095a87a0312b08dfd6a6155cbbd310a8c51800fc931b8c0b84003014b874ed3c"}, + {file = "scipy-1.14.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:7e911933d54ead4d557c02402710c2396529540b81dd554fc1ba270eb7308484"}, + {file = "scipy-1.14.0-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:687af0a35462402dd851726295c1a5ae5f987bd6e9026f52e9505994e2f84ef6"}, + {file = "scipy-1.14.0-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:07e179dc0205a50721022344fb85074f772eadbda1e1b3eecdc483f8033709b7"}, + {file = "scipy-1.14.0-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:6a9c9a9b226d9a21e0a208bdb024c3982932e43811b62d202aaf1bb59af264b1"}, + {file = "scipy-1.14.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:076c27284c768b84a45dcf2e914d4000aac537da74236a0d45d82c6fa4b7b3c0"}, + {file = "scipy-1.14.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:42470ea0195336df319741e230626b6225a740fd9dce9642ca13e98f667047c0"}, + {file = "scipy-1.14.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:176c6f0d0470a32f1b2efaf40c3d37a24876cebf447498a4cefb947a79c21e9d"}, + {file = "scipy-1.14.0-cp310-cp310-win_amd64.whl", hash = "sha256:ad36af9626d27a4326c8e884917b7ec321d8a1841cd6dacc67d2a9e90c2f0359"}, + {file = "scipy-1.14.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6d056a8709ccda6cf36cdd2eac597d13bc03dba38360f418560a93050c76a16e"}, + {file = "scipy-1.14.0-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:f0a50da861a7ec4573b7c716b2ebdcdf142b66b756a0d392c236ae568b3a93fb"}, + {file = "scipy-1.14.0-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:94c164a9e2498e68308e6e148646e486d979f7fcdb8b4cf34b5441894bdb9caf"}, + {file = "scipy-1.14.0-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:a7d46c3e0aea5c064e734c3eac5cf9eb1f8c4ceee756262f2c7327c4c2691c86"}, + {file = "scipy-1.14.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9eee2989868e274aae26125345584254d97c56194c072ed96cb433f32f692ed8"}, + {file = "scipy-1.14.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9e3154691b9f7ed73778d746da2df67a19d046a6c8087c8b385bc4cdb2cfca74"}, + {file = "scipy-1.14.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:c40003d880f39c11c1edbae8144e3813904b10514cd3d3d00c277ae996488cdb"}, + {file = "scipy-1.14.0-cp311-cp311-win_amd64.whl", hash = "sha256:5b083c8940028bb7e0b4172acafda6df762da1927b9091f9611b0bcd8676f2bc"}, + {file = "scipy-1.14.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:bff2438ea1330e06e53c424893ec0072640dac00f29c6a43a575cbae4c99b2b9"}, + {file = "scipy-1.14.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:bbc0471b5f22c11c389075d091d3885693fd3f5e9a54ce051b46308bc787e5d4"}, + {file = "scipy-1.14.0-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:64b2ff514a98cf2bb734a9f90d32dc89dc6ad4a4a36a312cd0d6327170339eb0"}, + {file = "scipy-1.14.0-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:7d3da42fbbbb860211a811782504f38ae7aaec9de8764a9bef6b262de7a2b50f"}, + {file = "scipy-1.14.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d91db2c41dd6c20646af280355d41dfa1ec7eead235642178bd57635a3f82209"}, + {file = "scipy-1.14.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a01cc03bcdc777c9da3cfdcc74b5a75caffb48a6c39c8450a9a05f82c4250a14"}, + {file = "scipy-1.14.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:65df4da3c12a2bb9ad52b86b4dcf46813e869afb006e58be0f516bc370165159"}, + {file = "scipy-1.14.0-cp312-cp312-win_amd64.whl", hash = "sha256:4c4161597c75043f7154238ef419c29a64ac4a7c889d588ea77690ac4d0d9b20"}, + {file = "scipy-1.14.0.tar.gz", hash = "sha256:b5923f48cb840380f9854339176ef21763118a7300a88203ccd0bdd26e58527b"}, ] [package.dependencies] -numpy = ">=1.22.4,<2.3" +numpy = ">=1.23.5,<2.3" [package.extras] -dev = ["cython-lint (>=0.12.2)", "doit (>=0.36.0)", "mypy", "pycodestyle", "pydevtool", "rich-click", "ruff", "types-psutil", "typing_extensions"] -doc = ["jupyterlite-pyodide-kernel", "jupyterlite-sphinx (>=0.12.0)", "jupytext", "matplotlib (>=3.5)", "myst-nb", "numpydoc", "pooch", "pydata-sphinx-theme (>=0.15.2)", "sphinx (>=5.0.0)", "sphinx-design (>=0.4.0)"] -test = ["array-api-strict", "asv", "gmpy2", "hypothesis (>=6.30)", "mpmath", "pooch", "pytest", "pytest-cov", "pytest-timeout", "pytest-xdist", "scikit-umfpack", "threadpoolctl"] +dev = ["cython-lint (>=0.12.2)", "doit (>=0.36.0)", "mypy (==1.10.0)", "pycodestyle", "pydevtool", "rich-click", "ruff (>=0.0.292)", "types-psutil", "typing_extensions"] +doc = ["jupyterlite-pyodide-kernel", "jupyterlite-sphinx (>=0.13.1)", "jupytext", "matplotlib (>=3.5)", "myst-nb", "numpydoc", "pooch", "pydata-sphinx-theme (>=0.15.2)", "sphinx (>=5.0.0)", "sphinx-design (>=0.4.0)"] +test = ["Cython", "array-api-strict", "asv", "gmpy2", "hypothesis (>=6.30)", "meson", "mpmath", "ninja", "pooch", "pytest", "pytest-cov", "pytest-timeout", "pytest-xdist", "scikit-umfpack", "threadpoolctl"] [[package]] name = "send2trash" @@ -3651,18 +3678,18 @@ win32 = ["pywin32"] [[package]] name = "setuptools" -version = "70.0.0" +version = "70.2.0" description = "Easily download, build, install, upgrade, and uninstall Python packages" optional = false python-versions = ">=3.8" files = [ - {file = "setuptools-70.0.0-py3-none-any.whl", hash = "sha256:54faa7f2e8d2d11bcd2c07bed282eef1046b5c080d1c32add737d7b5817b1ad4"}, - {file = "setuptools-70.0.0.tar.gz", hash = "sha256:f211a66637b8fa059bb28183da127d4e86396c991a942b028c6650d4319c3fd0"}, + {file = "setuptools-70.2.0-py3-none-any.whl", hash = "sha256:b8b8060bb426838fbe942479c90296ce976249451118ef566a5a0b7d8b78fb05"}, + {file = "setuptools-70.2.0.tar.gz", hash = "sha256:bd63e505105011b25c3c11f753f7e3b8465ea739efddaccef8f0efac2137bac1"}, ] [package.extras] -docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "pyproject-hooks (!=1.1)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"] -testing = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "importlib-metadata", "ini2toml[lite] (>=0.14)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "mypy (==1.9)", "packaging (>=23.2)", "pip (>=19.1)", "pyproject-hooks (!=1.1)", "pytest (>=6,!=8.1.1)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-home (>=0.5)", "pytest-mypy", "pytest-perf", "pytest-ruff (>=0.2.1)", "pytest-subprocess", "pytest-timeout", "pytest-xdist (>=3)", "tomli", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] +doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "pyproject-hooks (!=1.1)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"] +test = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "importlib-metadata", "ini2toml[lite] (>=0.14)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "jaraco.test", "mypy (==1.10.0)", "packaging (>=23.2)", "pip (>=19.1)", "pyproject-hooks (!=1.1)", "pytest (>=6,!=8.1.*)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-home (>=0.5)", "pytest-mypy", "pytest-perf", "pytest-ruff (>=0.3.2)", "pytest-subprocess", "pytest-timeout", "pytest-xdist (>=3)", "tomli", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] [[package]] name = "six" @@ -3743,15 +3770,15 @@ mpmath = ">=1.1.0,<1.4.0" [[package]] name = "tbb" -version = "2021.12.0" +version = "2021.13.0" description = "IntelĀ® oneAPI Threading Building Blocks (oneTBB)" optional = false python-versions = "*" files = [ - {file = "tbb-2021.12.0-py2.py3-none-manylinux1_i686.whl", hash = "sha256:f2cc9a7f8ababaa506cbff796ce97c3bf91062ba521e15054394f773375d81d8"}, - {file = "tbb-2021.12.0-py2.py3-none-manylinux1_x86_64.whl", hash = "sha256:a925e9a7c77d3a46ae31c34b0bb7f801c4118e857d137b68f68a8e458fcf2bd7"}, - {file = "tbb-2021.12.0-py3-none-win32.whl", hash = "sha256:b1725b30c174048edc8be70bd43bb95473f396ce895d91151a474d0fa9f450a8"}, - {file = "tbb-2021.12.0-py3-none-win_amd64.whl", hash = "sha256:fc2772d850229f2f3df85f1109c4844c495a2db7433d38200959ee9265b34789"}, + {file = "tbb-2021.13.0-py2.py3-none-manylinux1_i686.whl", hash = "sha256:a2567725329639519d46d92a2634cf61e76601dac2f777a05686fea546c4fe4f"}, + {file = "tbb-2021.13.0-py2.py3-none-manylinux1_x86_64.whl", hash = "sha256:aaf667e92849adb012b8874d6393282afc318aca4407fc62f912ee30a22da46a"}, + {file = "tbb-2021.13.0-py3-none-win32.whl", hash = "sha256:6669d26703e9943f6164c6407bd4a237a45007e79b8d3832fe6999576eaaa9ef"}, + {file = "tbb-2021.13.0-py3-none-win_amd64.whl", hash = "sha256:3528a53e4bbe64b07a6112b4c5a00ff3c61924ee46c9c68e004a1ac7ad1f09c3"}, ] [[package]] @@ -3817,21 +3844,21 @@ files = [ [[package]] name = "torch" -version = "2.3.0+cpu" +version = "2.3.1+cpu" description = "Tensors and Dynamic neural networks in Python with strong GPU acceleration" optional = false python-versions = ">=3.8.0" files = [ - {file = "torch-2.3.0+cpu-cp310-cp310-linux_x86_64.whl", hash = "sha256:e3c220702d82c7596924150e0499fbbffcf62a88a59adc860fa357cd8dc1c302"}, - {file = "torch-2.3.0+cpu-cp310-cp310-win_amd64.whl", hash = "sha256:ab0c05525195b8fecdf2ea75968ed32ccd87dff16381b6e13249babb4a9596ff"}, - {file = "torch-2.3.0+cpu-cp311-cp311-linux_x86_64.whl", hash = "sha256:97a38b25ee0e3d020691e7846efbca62a3d8a57645c027dcb5ba0adfec36fe55"}, - {file = "torch-2.3.0+cpu-cp311-cp311-win_amd64.whl", hash = "sha256:a8ac195974be6f067245bae8156b8c06fb0a723b0eed8f2e244b5dd58c7e2a49"}, - {file = "torch-2.3.0+cpu-cp312-cp312-linux_x86_64.whl", hash = "sha256:a8982e52185771591dad577a124a7770f72f288f8ae5833317b1e329c0d2f07e"}, - {file = "torch-2.3.0+cpu-cp312-cp312-win_amd64.whl", hash = "sha256:483131a7997995d867313ee902743084e844e830ab2a0c5e079c61ec2da3cd17"}, - {file = "torch-2.3.0+cpu-cp38-cp38-linux_x86_64.whl", hash = "sha256:8c52484880d5fbe511cffc255dd34847ddeced3f94334c6bf7eb2b0445f10cb4"}, - {file = "torch-2.3.0+cpu-cp38-cp38-win_amd64.whl", hash = "sha256:28a11bcc0d709b397d675cff689707019b8cc122e6bf328b57b900f47c36f156"}, - {file = "torch-2.3.0+cpu-cp39-cp39-linux_x86_64.whl", hash = "sha256:1e86e225e472392440ace378ba3165b5e87648e8b5fbf16adc41c0df881c38b8"}, - {file = "torch-2.3.0+cpu-cp39-cp39-win_amd64.whl", hash = "sha256:5c2afdff80203eaabf4c223a294c2f465020b3360e8e87f76b52ace9c5801ebe"}, + {file = "torch-2.3.1+cpu-cp310-cp310-linux_x86_64.whl", hash = "sha256:d679e21d871982b9234444331a26350902cfd2d5ca44ce6f49896af8b3a3087d"}, + {file = "torch-2.3.1+cpu-cp310-cp310-win_amd64.whl", hash = "sha256:500bf790afc2fd374a15d06213242e517afccc50a46ea5955d321a9a68003335"}, + {file = "torch-2.3.1+cpu-cp311-cp311-linux_x86_64.whl", hash = "sha256:a272defe305dbd944aa28a91cc3db0f0149495b3ebec2e39723a7224fa05dc57"}, + {file = "torch-2.3.1+cpu-cp311-cp311-win_amd64.whl", hash = "sha256:d2965eb54d3c8818e2280a54bd53e8246a6bb34e4b10bd19c59f35b611dd9f05"}, + {file = "torch-2.3.1+cpu-cp312-cp312-linux_x86_64.whl", hash = "sha256:2141a6cb7021adf2f92a0fd372cfeac524ba460bd39ce3a641d30a561e41f69a"}, + {file = "torch-2.3.1+cpu-cp312-cp312-win_amd64.whl", hash = "sha256:6acdca2530462611095c44fd95af75ecd5b9646eac813452fe0adf31a9bc310a"}, + {file = "torch-2.3.1+cpu-cp38-cp38-linux_x86_64.whl", hash = "sha256:cab92d5101e6db686c5525e04d87cedbcf3a556073d71d07fbe7d1ce09630ffb"}, + {file = "torch-2.3.1+cpu-cp38-cp38-win_amd64.whl", hash = "sha256:dbc784569a367fd425158cf4ae82057dd3011185ba5fc68440432ba0562cb5b2"}, + {file = "torch-2.3.1+cpu-cp39-cp39-linux_x86_64.whl", hash = "sha256:a3cb8e61ba311cee1bb7463cbdcf3ebdfd071e2091e74c5785e3687eb02819f9"}, + {file = "torch-2.3.1+cpu-cp39-cp39-win_amd64.whl", hash = "sha256:df68668056e62c0332e03f43d9da5d4278b39df1ba58d30ec20d34242070955d"}, ] [package.dependencies] @@ -3915,22 +3942,22 @@ reference = "torch" [[package]] name = "tornado" -version = "6.4" +version = "6.4.1" description = "Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed." optional = false -python-versions = ">= 3.8" +python-versions = ">=3.8" files = [ - {file = "tornado-6.4-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:02ccefc7d8211e5a7f9e8bc3f9e5b0ad6262ba2fbb683a6443ecc804e5224ce0"}, - {file = "tornado-6.4-cp38-abi3-macosx_10_9_x86_64.whl", hash = "sha256:27787de946a9cffd63ce5814c33f734c627a87072ec7eed71f7fc4417bb16263"}, - {file = "tornado-6.4-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f7894c581ecdcf91666a0912f18ce5e757213999e183ebfc2c3fdbf4d5bd764e"}, - {file = "tornado-6.4-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e43bc2e5370a6a8e413e1e1cd0c91bedc5bd62a74a532371042a18ef19e10579"}, - {file = "tornado-6.4-cp38-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f0251554cdd50b4b44362f73ad5ba7126fc5b2c2895cc62b14a1c2d7ea32f212"}, - {file = "tornado-6.4-cp38-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:fd03192e287fbd0899dd8f81c6fb9cbbc69194d2074b38f384cb6fa72b80e9c2"}, - {file = "tornado-6.4-cp38-abi3-musllinux_1_1_i686.whl", hash = "sha256:88b84956273fbd73420e6d4b8d5ccbe913c65d31351b4c004ae362eba06e1f78"}, - {file = "tornado-6.4-cp38-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:71ddfc23a0e03ef2df1c1397d859868d158c8276a0603b96cf86892bff58149f"}, - {file = "tornado-6.4-cp38-abi3-win32.whl", hash = "sha256:6f8a6c77900f5ae93d8b4ae1196472d0ccc2775cc1dfdc9e7727889145c45052"}, - {file = "tornado-6.4-cp38-abi3-win_amd64.whl", hash = "sha256:10aeaa8006333433da48dec9fe417877f8bcc21f48dda8d661ae79da357b2a63"}, - {file = "tornado-6.4.tar.gz", hash = "sha256:72291fa6e6bc84e626589f1c29d90a5a6d593ef5ae68052ee2ef000dfd273dee"}, + {file = "tornado-6.4.1-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:163b0aafc8e23d8cdc3c9dfb24c5368af84a81e3364745ccb4427669bf84aec8"}, + {file = "tornado-6.4.1-cp38-abi3-macosx_10_9_x86_64.whl", hash = "sha256:6d5ce3437e18a2b66fbadb183c1d3364fb03f2be71299e7d10dbeeb69f4b2a14"}, + {file = "tornado-6.4.1-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e2e20b9113cd7293f164dc46fffb13535266e713cdb87bd2d15ddb336e96cfc4"}, + {file = "tornado-6.4.1-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8ae50a504a740365267b2a8d1a90c9fbc86b780a39170feca9bcc1787ff80842"}, + {file = "tornado-6.4.1-cp38-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:613bf4ddf5c7a95509218b149b555621497a6cc0d46ac341b30bd9ec19eac7f3"}, + {file = "tornado-6.4.1-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:25486eb223babe3eed4b8aecbac33b37e3dd6d776bc730ca14e1bf93888b979f"}, + {file = "tornado-6.4.1-cp38-abi3-musllinux_1_2_i686.whl", hash = "sha256:454db8a7ecfcf2ff6042dde58404164d969b6f5d58b926da15e6b23817950fc4"}, + {file = "tornado-6.4.1-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:a02a08cc7a9314b006f653ce40483b9b3c12cda222d6a46d4ac63bb6c9057698"}, + {file = "tornado-6.4.1-cp38-abi3-win32.whl", hash = "sha256:d9a566c40b89757c9aa8e6f032bcdb8ca8795d7c1a9762910c722b1635c9de4d"}, + {file = "tornado-6.4.1-cp38-abi3-win_amd64.whl", hash = "sha256:b24b8982ed444378d7f21d563f4180a2de31ced9d8d84443907a0a64da2072e7"}, + {file = "tornado-6.4.1.tar.gz", hash = "sha256:92d3ab53183d8c50f8204a51e6f91d18a15d5ef261e84d452800d4ff6fc504e9"}, ] [[package]] @@ -3981,13 +4008,13 @@ files = [ [[package]] name = "typing-extensions" -version = "4.12.0" +version = "4.12.2" description = "Backported and Experimental Type Hints for Python 3.8+" optional = false python-versions = ">=3.8" files = [ - {file = "typing_extensions-4.12.0-py3-none-any.whl", hash = "sha256:b349c66bea9016ac22978d800cfff206d5f9816951f12a7d0ec5578b0a819594"}, - {file = "typing_extensions-4.12.0.tar.gz", hash = "sha256:8cbcdc8606ebcb0d95453ad7dc5065e6237b6aa230a31e81d0f440c30fed5fd8"}, + {file = "typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d"}, + {file = "typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"}, ] [[package]] @@ -4017,13 +4044,13 @@ dev = ["flake8", "flake8-annotations", "flake8-bandit", "flake8-bugbear", "flake [[package]] name = "urllib3" -version = "2.2.1" +version = "2.2.2" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false python-versions = ">=3.8" files = [ - {file = "urllib3-2.2.1-py3-none-any.whl", hash = "sha256:450b20ec296a467077128bff42b73080516e71b56ff59a60a02bef2232c4fa9d"}, - {file = "urllib3-2.2.1.tar.gz", hash = "sha256:d0570876c61ab9e520d776c38acbbb5b05a776d3f9ff98a5c8fd5162a444cf19"}, + {file = "urllib3-2.2.2-py3-none-any.whl", hash = "sha256:a448b2f64d686155468037e1ace9f2d2199776e17f0a46610480d311f73e3472"}, + {file = "urllib3-2.2.2.tar.gz", hash = "sha256:dd505485549a7a552833da5e6063639d0d177c04f23bc3864e41e5dc5f612168"}, ] [package.extras] @@ -4089,18 +4116,18 @@ files = [ [[package]] name = "webcolors" -version = "1.13" +version = "24.6.0" description = "A library for working with the color formats defined by HTML and CSS." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "webcolors-1.13-py3-none-any.whl", hash = "sha256:29bc7e8752c0a1bd4a1f03c14d6e6a72e93d82193738fa860cbff59d0fcc11bf"}, - {file = "webcolors-1.13.tar.gz", hash = "sha256:c225b674c83fa923be93d235330ce0300373d02885cef23238813b0d5668304a"}, + {file = "webcolors-24.6.0-py3-none-any.whl", hash = "sha256:8cf5bc7e28defd1d48b9e83d5fc30741328305a8195c29a8e668fa45586568a1"}, + {file = "webcolors-24.6.0.tar.gz", hash = "sha256:1d160d1de46b3e81e58d0a280d0c78b467dc80f47294b91b1ad8029d2cedb55b"}, ] [package.extras] docs = ["furo", "sphinx", "sphinx-copybutton", "sphinx-inline-tabs", "sphinx-notfound-page", "sphinxext-opengraph"] -tests = ["pytest", "pytest-cov"] +tests = ["coverage[toml]"] [[package]] name = "webencodings" diff --git a/poetry.toml b/poetry.toml new file mode 100644 index 00000000..084377a0 --- /dev/null +++ b/poetry.toml @@ -0,0 +1,2 @@ +[virtualenvs] +create = false diff --git a/project/Versions.scala b/project/Versions.scala index 2046b2a5..116cfb92 100644 --- a/project/Versions.scala +++ b/project/Versions.scala @@ -2,13 +2,13 @@ object Versions { val cpg = parseVersion("cpgVersion") val antlr = "4.13.1" - val scalatest = "3.2.18" + val scalatest = "3.2.19" val cats = "3.5.4" val json4s = "4.0.7" - val gradleTooling = "8.7" - val circe = "0.14.6" - val requests = "0.8.2" - val upickle = "3.3.0" + val gradleTooling = "8.8" + val circe = "0.14.9" + val requests = "0.8.3" + val upickle = "3.3.1" val scalaReplPP = "0.1.85" private def parseVersion(key: String): String = { diff --git a/project/meta-build.sbt b/project/meta-build.sbt index f4942268..2f97926d 100644 --- a/project/meta-build.sbt +++ b/project/meta-build.sbt @@ -4,5 +4,5 @@ libraryDependencies ++= Seq( "net.lingala.zip4j" % "zip4j" % "2.11.5", "com.github.pathikrit" %% "better-files" % "3.9.2", "net.java.dev.javacc" % "javacc" % "7.0.13", - "com.lihaoyi" %% "os-lib" % "0.10.0" + "com.lihaoyi" %% "os-lib" % "0.10.2" ) diff --git a/pyproject.toml b/pyproject.toml index 2fddc36c..77c028d8 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "appthreat-chen" -version = "2.1.0" +version = "2.1.1" description = "Code Hierarchy Exploration Net (chen)" authors = ["Team AppThreat "] license = "Apache-2.0" diff --git a/semanticcpg/src/main/scala/io/shiftleft/semanticcpg/language/nodemethods/CfgNodeMethods.scala b/semanticcpg/src/main/scala/io/shiftleft/semanticcpg/language/nodemethods/CfgNodeMethods.scala index 3c6f05a2..185cba76 100644 --- a/semanticcpg/src/main/scala/io/shiftleft/semanticcpg/language/nodemethods/CfgNodeMethods.scala +++ b/semanticcpg/src/main/scala/io/shiftleft/semanticcpg/language/nodemethods/CfgNodeMethods.scala @@ -73,26 +73,6 @@ class CfgNodeMethods(val node: CfgNode) extends AnyVal with NodeExtension: v._postDominateOut } - /** Using the post dominator tree, will determine if this node passes through the included set - * of nodes and filter it in. - * @param included - * the nodes this node must pass through. - * @return - * the traversal of this node if it passes through the included set. - */ - def passes(included: Set[CfgNode]): Iterator[CfgNode] = - Iterator.single(node).filter(_.postDominatedBy.exists(included.contains)) - - /** Using the post dominator tree, will determine if this node passes through the excluded set - * of nodes and filter it out. - * @param excluded - * the nodes this node must not pass through. - * @return - * the traversal of this node if it does not pass through the excluded set. - */ - def passesNot(excluded: Set[CfgNode]): Iterator[CfgNode] = - Iterator.single(node).filterNot(_.postDominatedBy.exists(excluded.contains)) - private def expandExhaustively(expand: CfgNode => Iterator[StoredNode]): Iterator[CfgNode] = var controllingNodes = List.empty[CfgNode] var visited = Set.empty + node @@ -115,6 +95,7 @@ class CfgNodeMethods(val node: CfgNode) extends AnyVal with NodeExtension: case _: MethodParameterIn | _: MethodParameterOut | _: MethodReturn => walkUpAst(node) case _: CallRepr if !node.isInstanceOf[Call] => walkUpAst(node) + case _: Annotation | _: AnnotationLiteral => node.inAst.collectAll[Method].head case _: Expression | _: JumpTarget => walkUpContains(node) /** Obtain hexadecimal string representation of lineNumber field. diff --git a/semanticcpg/src/main/scala/io/shiftleft/semanticcpg/language/types/expressions/generalizations/CfgNodeTraversal.scala b/semanticcpg/src/main/scala/io/shiftleft/semanticcpg/language/types/expressions/generalizations/CfgNodeTraversal.scala index 230ffea3..bc64bd8a 100644 --- a/semanticcpg/src/main/scala/io/shiftleft/semanticcpg/language/types/expressions/generalizations/CfgNodeTraversal.scala +++ b/semanticcpg/src/main/scala/io/shiftleft/semanticcpg/language/types/expressions/generalizations/CfgNodeTraversal.scala @@ -89,13 +89,4 @@ class CfgNodeTraversal[A <: CfgNode](val traversal: Iterator[A]) extends AnyVal: def address: Iterator[Option[String]] = traversal.map(_.address) - @Doc(info = "Filters in paths that pass though the given traversal") - def passes(included: Iterator[CfgNode]): Iterator[CfgNode] = - val in = included.toSet - traversal.flatMap(_.passes(in)) - - @Doc(info = "Filters out paths that pass though the given traversal") - def passesNot(excluded: Iterator[CfgNode]): Iterator[CfgNode] = - val ex = excluded.toSet - traversal.flatMap(_.passesNot(ex)) end CfgNodeTraversal