Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
else:
package_name = Utils.basename(filename)
source_filename = Utils.joinpath(filename, "__init__.py")
if not Utils.isFile( source_filename ):
assert Utils.python_version >= 330, source_filename
source_ref, result = createNamespacePackage(
package_name = package_name,
module_relpath = filename
)
source_filename = None
else:
source_ref = SourceCodeReferences.fromFilename(
filename = Utils.abspath( source_filename ),
future_spec = FutureSpec()
)
result = PythonPackage(
name = package_name,
package_name = package,
source_ref = source_ref
)
else:
sys.stderr.write(
"%s: can't open file '%s'.\n" % (
Utils.basename( sys.argv[0] ),
filename
)
)
sys.exit( 2 )
else:
return node
# TODO: Function direct call node ought to be here too.
class ExpressionFunctionCreation(SideEffectsFromChildrenMixin,
ExpressionChildrenHavingBase):
kind = "EXPRESSION_FUNCTION_CREATION"
# Note: The order of evaluation for these is a bit unexpected, but
# true. Keyword defaults go first, then normal defaults, and annotations of
# all kinds go last.
# A bug of CPython3.x not fixed before version 3.4, see bugs.python.org/issue16967
kw_defaults_before_defaults = Utils.python_version < 340
if kw_defaults_before_defaults:
named_children = (
"kw_defaults", "defaults", "annotations", "function_ref"
)
else:
named_children = (
"defaults", "kw_defaults", "annotations", "function_ref"
)
checkers = {
"kw_defaults" : convertNoneConstantOrEmptyDictToNone,
}
def __init__(self, function_ref, defaults, kw_defaults, annotations,
source_ref):
)
)
return lower, upper
def generateSliceAccessIdentifiers( sliced, lower, upper, context ):
lower, upper = generateSliceRangeIdentifier( lower, upper, context )
sliced = generateExpressionCode(
expression = sliced,
context = context
)
return sliced, lower, upper
_slicing_available = Utils.python_version < 300
def decideSlicing( lower, upper ):
return _slicing_available and \
( lower is None or lower.isIndexable() ) and \
( upper is None or upper.isIndexable() )
def generateSubscriptLookupCode( expression, context ):
return Generator.getSubscriptLookupCode(
order_relevance = getOrderRelevance(
( expression.getLookupSource(), expression.getSubscript() )
),
subscript = generateExpressionCode(
expression = expression.getSubscript(),
context = context
),
source = generateExpressionCode(
def _consider( self, module_filename, module_package ):
assert module_package is None or ( type( module_package ) is str and module_package != "" )
module_filename = Utils.normpath( module_filename )
if Utils.isDir( module_filename ):
module_name = Utils.basename( module_filename )
elif module_filename.endswith( ".py" ):
module_name = Utils.basename( module_filename )[:-3]
else:
module_name = None
if module_name is not None:
decision = self._decide( module_filename, module_name, module_package )
if decision:
module_relpath = Utils.relpath( module_filename )
return self._recurseTo(
module_package = module_package,
module_filename = module_filename,
module_relpath = module_relpath
def readSourceCodeFromFilename(source_filename):
if Utils.python_version < 300:
return _readSourceCodeFromFilename2(source_filename)
else:
return _readSourceCodeFromFilename3(source_filename)
def buildVariableReferenceNode( provider, node, source_ref ):
if Utils.python_version >= 300 and node.id == "super" and provider.isExpressionFunctionBody():
provider.markAsClassClosureTaker()
return CPythonExpressionVariableRef(
variable_name = node.id,
source_ref = source_ref
)
"locals" : locals_arg,
},
source_ref = source_ref
)
getSourceCode = ExpressionChildrenHavingBase.childGetter("source")
getGlobals = ExpressionChildrenHavingBase.childGetter( "globals")
getLocals = ExpressionChildrenHavingBase.childGetter("locals")
def computeExpression(self, constraint_collection):
# TODO: Attempt for constant values to do it.
return self, None, None
# Note: Python3 only so far.
if Utils.python_version >= 300:
class ExpressionBuiltinExec(ExpressionBuiltinEval):
kind = "EXPRESSION_BUILTIN_EXEC"
def __init__(self, source_code, globals_arg, locals_arg, source_ref):
ExpressionBuiltinEval.__init__(
self,
source_code = source_code,
globals_arg = globals_arg,
locals_arg = locals_arg,
source_ref = source_ref
)
def needsLocalsDict(self):
return False
def computeExpression(self, constraint_collection):
def isSameModulePath(path1, path2):
if Utils.basename(path1) == "__init__.py":
path1 = Utils.dirname(path1)
if Utils.basename(path2) == "__init__.py":
path2 = Utils.dirname(path2)
return Utils.abspath(path1) == Utils.abspath(path2)
def getSconsBinaryCall():
""" Return a way to execute Scons.
Using potentially inline copy if no system Scons is available
or if we are on Windows.
"""
if Utils.isFile("/usr/bin/scons"):
return ["/usr/bin/scons"]
else:
return [
getPython2ExePath(),
Utils.joinpath(getSconsInlinePath(), "bin", "scons.py")
]
)
)
return lower, upper
def generateSliceAccessIdentifiers(sliced, lower, upper, context):
lower, upper = generateSliceRangeIdentifier( lower, upper, context )
sliced = generateExpressionCode(
expression = sliced,
context = context
)
return sliced, lower, upper
_slicing_available = Utils.python_version < 300
def decideSlicing(lower, upper):
return _slicing_available and \
( lower is None or lower.isIndexable() ) and \
( upper is None or upper.isIndexable() )
def generateSubscriptLookupCode(expression, context):
return Generator.getSubscriptLookupCode(
order_relevance = getOrderRelevance(
( expression.getLookupSource(), expression.getSubscript() )
),
subscript = generateExpressionCode(
expression = expression.getSubscript(),
context = context
),
source = generateExpressionCode(