public static async Task WarnIfAzureFunctionsWorkerInRequirementsTxt() { if (FileSystemHelpers.FileExists(Path.Join(Environment.CurrentDirectory, Constants.RequirementsTxt))) { List <PythonPackage> packages = await RequirementsTxtParser.ParseRequirementsTxtFile(Environment.CurrentDirectory); PythonPackage workerPackage = packages.FirstOrDefault(p => p.Name == "azure-functions-worker"); if (workerPackage != null) { ColoredConsole.WriteLine(WarningColor($"Please remove '{workerPackage.Name}{workerPackage.Specification}' from requirements.txt as it may conflict with the Azure Functions platform.")); } } }
public void ShouldReturnPackageWithSpecification(string content, string expectedName, string expectedSpec) { List <PythonPackage> result = RequirementsTxtParser.ParseRequirementsTxtContent("" + content); Assert.Single(result); PythonPackage numpyPackage = result[0]; Assert.Equal(expectedName, numpyPackage.Name); Assert.Equal(expectedSpec, numpyPackage.Specification); Assert.Empty(numpyPackage.EnvironmentMarkers); Assert.Empty(numpyPackage.DirectReference); }
public void ShouldReturnPackageWithSpecAndEnvironmentMarker() { List <PythonPackage> result = RequirementsTxtParser.ParseRequirementsTxtContent("" + "numpy>=3.5.1; python_version == '2.7'"); Assert.Single(result); PythonPackage numpyPackage = result[0]; Assert.Equal("numpy", numpyPackage.Name); Assert.Equal(">=3.5.1", numpyPackage.Specification); Assert.Equal("python_version == '2.7'", numpyPackage.EnvironmentMarkers); Assert.Empty(numpyPackage.DirectReference); }
public void PackageSpecWithDirectReference() { List <PythonPackage> result = RequirementsTxtParser.ParseRequirementsTxtContent("" + "numpy==3.5.2 @ https://direct.reference/numpy"); Assert.Single(result); PythonPackage numpyPackage = result[0]; Assert.Equal("numpy", numpyPackage.Name); Assert.Equal("==3.5.2", numpyPackage.Specification); Assert.Empty(numpyPackage.EnvironmentMarkers); Assert.Equal("https://direct.reference/numpy", numpyPackage.DirectReference); }
private void AssignImportedVariables(IPythonModule module, DottedName moduleImportExpression, NameExpression asNameExpression) { // "import fob.oar as baz" is handled as // baz = import_module('fob.oar') if (asNameExpression != null) { Eval.DeclareVariable(asNameExpression.Name, module, asNameExpression); return; } // "import fob.oar" is handled as // import_module('fob.oar') // fob = import_module('fob') var importNames = moduleImportExpression.Names; PythonPackage pythonPackage = null; var existingDepth = 0; var childPackage = Eval.GetInScope <PythonPackage>(importNames[0].Name); while (childPackage != null && existingDepth < importNames.Count - 1) { existingDepth++; pythonPackage = childPackage; childPackage = pythonPackage.GetMember <PythonPackage>(importNames[existingDepth].Name); } var child = module; for (var i = importNames.Count - 2; i >= existingDepth; i--) { var childName = importNames[i + 1].Name; var parentName = importNames[i].Name; var parent = new PythonPackage(parentName, Eval.Services); parent.AddChildModule(childName, child); child = parent; } if (pythonPackage == null) { Eval.DeclareVariable(importNames[0].Name, child, importNames[0]); } else { pythonPackage.AddChildModule(importNames[existingDepth].Name, child); } }