Skip to content

Commit

Permalink
apply pr feedback
Browse files Browse the repository at this point in the history
  • Loading branch information
meghfossa committed May 1, 2024
1 parent 07a3f19 commit 9f65cc9
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 20 deletions.
4 changes: 2 additions & 2 deletions src/Strategy/Python/Poetry.hs
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ import Strategy.Python.Errors (
MissingPoetryLockFile (..),
commitPoetryLockToVCS,
)
import Strategy.Python.Poetry.Common (getPoetryBuildBackend, logIgnoredDeps, pyProjectDeps, toCanonicalName, toMap)
import Strategy.Python.Poetry.Common (getPoetryBuildBackend, logIgnoredDeps, makePackageToLockDependencyMap, pyProjectDeps, toCanonicalName)
import Strategy.Python.Poetry.PoetryLock (PackageName (..), PoetryLock (..), PoetryLockPackage (..), PoetryMetadata (poetryMetadataLockVersion), poetryLockCodec)
import Strategy.Python.Poetry.PyProject (PyProject (..), allPoetryProductionDeps, pyProjectCodec)
import Types (DependencyResults (..), DiscoveredProject (..), DiscoveredProjectType (PoetryProjectType), GraphBreadth (..))
Expand Down Expand Up @@ -247,7 +247,7 @@ graphFromPyProjectAndLockFile pyProject poetryLock = graph
canonicalPkgName name = PackageName . toCanonicalName $ unPackageName name

mapOfDependency :: Map PackageName Dependency
mapOfDependency = toMap prodPkgNames pkgs
mapOfDependency = makePackageToLockDependencyMap prodPkgNames pkgs

prodPkgNames :: [PackageName]
prodPkgNames = PackageName <$> Map.keys (allPoetryProductionDeps pyProject)
Expand Down
21 changes: 10 additions & 11 deletions src/Strategy/Python/Poetry/Common.hs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
module Strategy.Python.Poetry.Common (
getPoetryBuildBackend,
toMap,
makePackageToLockDependencyMap,
pyProjectDeps,
logIgnoredDeps,
toCanonicalName,
Expand Down Expand Up @@ -176,21 +176,20 @@ toCanonicalName :: Text -> Text
toCanonicalName t = toLower $ replace "_" "-" (replace "." "-" t)

-- | Maps poetry lock package to map of package name and associated dependency.
toMap :: [PackageName] -> [PoetryLockPackage] -> Map.Map PackageName Dependency
toMap prodPkgs pkgs = Map.fromList $ (\x -> (canonicalPkgName x, toDependency x)) <$> (filter supportedPoetryLockDep pkgs)
makePackageToLockDependencyMap :: [PackageName] -> [PoetryLockPackage] -> Map.Map PackageName Dependency
makePackageToLockDependencyMap prodPkgs pkgs = Map.fromList $ (\x -> (lockCanonicalPackageName x, toDependency x)) <$> (filter supportedPoetryLockDep pkgs)
where

canonicalPkgName :: PackageName -> PackageName
canonicalPkgName = PackageName . toCanonicalName . unPackageName

lockCanonicalPackageName :: PoetryLockPackage -> PackageName
lockCanonicalPackageName = canonicalPkgName . poetryLockPackageName

canonicalProdPkgNames :: Set [PackageName]
canonicalProdPkgNames = Set.fromList . map canonicalPkgName $ prodPkgs
canonicalProdPkgNames :: Set.Set PackageName
canonicalProdPkgNames = Set.fromList $ map canonicalPkgName prodPkgs

isProductionDirectDep :: PoetryLockPackage -> Bool
isProductionDirectDep pkg = canonicalPkgName pkg `Set.member` canonicalProdPkgNames
isProductionDirectDep pkg = lockCanonicalPackageName pkg `Set.member` canonicalProdPkgNames

toDependency :: PoetryLockPackage -> Dependency
toDependency pkg =
Expand All @@ -199,7 +198,7 @@ toMap prodPkgs pkgs = Map.fromList $ (\x -> (canonicalPkgName x, toDependency x)
, dependencyName = toDepName pkg
, dependencyVersion = toDepVersion pkg
, dependencyLocations = toDepLocs pkg
, dependencyEnvironments = toDepEnvironment pkg
, dependencyEnvironments = pkgEnvironments pkg
, dependencyTags = Map.empty
}

Expand Down Expand Up @@ -232,8 +231,8 @@ toMap prodPkgs pkgs = Map.fromList $ (\x -> (canonicalPkgName x, toDependency x)
ref <- poetryLockPackageSourceReference lockPkgSrc
if poetryLockPackageSourceType lockPkgSrc /= "legacy" then Just ref else Nothing

toDepEnvironment :: PoetryLockPackage -> Set.Set DepEnvironment
toDepEnvironment pkg = case poetryLockPackageCategory pkg of
pkgEnvironments :: PoetryLockPackage -> Set.Set DepEnvironment
pkgEnvironments pkg = case poetryLockPackageCategory pkg of
-- If category is provided, use category to infer if dependency's environment
Just category -> case category of
"dev" -> Set.singleton EnvDevelopment
Expand Down
14 changes: 7 additions & 7 deletions test/Python/Poetry/CommonSpec.hs
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import Data.Set qualified as Set
import Data.Text (Text)
import Data.Text.IO qualified as TIO
import DepTypes (DepEnvironment (..), DepType (..), Dependency (..), VerConstraint (..))
import Strategy.Python.Poetry.Common (getPoetryBuildBackend, pyProjectDeps, supportedPoetryLockDep, supportedPyProjectDep, toCanonicalName, toMap)
import Strategy.Python.Poetry.Common (getPoetryBuildBackend, makePackageToLockDependencyMap, pyProjectDeps, supportedPoetryLockDep, supportedPyProjectDep, toCanonicalName)
import Strategy.Python.Poetry.PoetryLock (
ObjectVersion (..),
PackageName (..),
Expand Down Expand Up @@ -180,9 +180,9 @@ spec = do
getPoetryBuildBackend <$> Toml.decode pyProjectCodec emptyContents
`shouldBe` Right Nothing

describe "toMap" $ do
describe "makePackageToLockDependencyMap" $ do
it "should map poetry lock package to dependency" $
toMap
makePackageToLockDependencyMap
mempty
[ PoetryLockPackage
{ poetryLockPackageName = PackageName "pkgOne"
Expand Down Expand Up @@ -215,7 +215,7 @@ spec = do

describe "when poetry lock dependency is from git source" $
it "should replace poetry lock package name to git url" $
toMap
makePackageToLockDependencyMap
mempty
[ PoetryLockPackage
{ poetryLockPackageName = PackageName "pkgWithGitSource"
Expand Down Expand Up @@ -243,7 +243,7 @@ spec = do

describe "when poetry lock dependency is from url source" $
it "should replace poetry lock package name to url" $
toMap
makePackageToLockDependencyMap
mempty
[ PoetryLockPackage
{ poetryLockPackageName = PackageName "pkgSourcedFromUrl"
Expand Down Expand Up @@ -271,7 +271,7 @@ spec = do

describe "when poetry lock dependency is from file source" $
it "should replace poetry lock package name to filepath" $
toMap
makePackageToLockDependencyMap
mempty
[ PoetryLockPackage
{ poetryLockPackageName = PackageName "pkgSourcedFromFile"
Expand All @@ -287,7 +287,7 @@ spec = do

describe "when poetry lock dependency is from secondary sources" $
it "should include url into dependency location" $
toMap
makePackageToLockDependencyMap
mempty
[ PoetryLockPackage
{ poetryLockPackageName = PackageName "myprivatepkg"
Expand Down

0 comments on commit 9f65cc9

Please sign in to comment.