Warning when doubly linked list is defined gloablly

C

chand

Hi.,

In my api.py file 'g_opt_list' is defined globally
g_opt_list =[[],[],[],[],[],[],[]]

I am using this global list in the fucntion

def function ():
gloabl g_opt_list

when I run the py file, I am getting the Following Error

SyntaxWarning: name 'g_opt_list' is used prior to global declaration

Please let me know how to remove this error

--BestRegars.,
--Chandra
 
D

Diez B. Roggisch

chand said:
In my api.py file 'g_opt_list' is defined globally
g_opt_list =[[],[],[],[],[],[],[]]

I am using this global list in the fucntion

def function ():
gloabl g_opt_list

This is obviously wrong and not the code you wrote, global being
written horribly wrong - which should teach you an important lesson:
post actual code that exposes the problem, not something you think that
is working. Then we might be able to help you.

Diez
 
B

Benjamin Niemann

chand said:
Hi.,

In my api.py file 'g_opt_list' is defined globally
g_opt_list =[[],[],[],[],[],[],[]]

I am using this global list in the fucntion

def function ():
gloabl g_opt_list
global?

when I run the py file, I am getting the Following Error

SyntaxWarning: name 'g_opt_list' is used prior to global declaration

Please let me know how to remove this error

This happens in cases like.... a
.... global a

Does your source only consist of the three lines above? (These would trigger
a SyntaxError because of the typo...)
You should provide a more complete example, so we can tell you where the
problem is. Try to build a minimal file that reproduces the problem. Often
you will find the line causing the error yourself - and the fix might be
obvious to you -, if your strip stuff away.
 
T

Terry Reedy

chand said:
Hi.,

In my api.py file 'g_opt_list' is defined globally
g_opt_list =[[],[],[],[],[],[],[]]

I am using this global list in the fucntion

def function ():
gloabl g_opt_list

when I run the py file, I am getting the Following Error

SyntaxWarning: name 'g_opt_list' is used prior to global declaration

Please let me know how to remove this error

To expand slightly on previous answers:

1. Write a *minimal* file that gives you the error. This means that
removing any statement ceases to give you the error. This may answer your
questions.

2. If still puzzled, post again. But cut and paste that *exact* file and
also the *full* error traceback.

Terry J. Reedy
 
C

chand

Hi Terry..,

Here is the code which gives the error...

Let me know exact reason for this Error


import os,sys,re,string,math
from xml.dom import minidom, Node
from Layer import Layer
from LMessage import *
from Param import *
from Message import *
from message_mapping import *
from protocol_mapping import *
from symbol_mapping import *
from opt_list_mapping import *
g_del_opt_list =[[],[],[],[],[],[],[]]
sflag = 0
index=0
del_index=0
radflag = 0
depth = 0
xmlflag = 0
opt_param_list = []
del_opt_param_list = []
#g_opt_list = []
MTAS_HOME="/home/chandras/XML_FILES/"
SIG_STANDARD_HOME = "/home/chandras/SIGNALLING_STANDARD/ANSI_SS7/"
symbols=['(',')','{','}','[',']','.']
reverse_symbols=['<','>','~']
layers=['MTP3','SCCP','IOS','CDTAPM2','CDTAPC2','ISUP','IS-41D-SQA']
GUI_API_COMMAND_LIST = [
"NEW",
"ADD_OPTIONAL_PARAM",
"DELETE_OPTIONAL_PARAM",
"DELETE_LAYER",
"RENAME"
]

BASE2 = "01"
BASE10 = "0123456789"
BASE16 = "0123456789ABCDEF"

Message_obj = Message()
filename =""
buffer = []
#LIST = []
def Process_GUI_Command(arg):
global Message_obj
global filename
print "### COMMAND ###", arg[0]
save_fd = os.dup(1)
if arg[0] == "DELETE_OPTIONAL_PARAM":
out_file = file('/tmp/te6.txt', 'w+')
elif arg[0] == "ADD_OPTIONAL_PARAM":
out_file = file('/tmp/te3.txt', 'w+')
else :
out_file = file('/tmp/te.txt', 'w+')
os.dup2(out_file.fileno(), sys.stdout.fileno())

if arg[0] == "NEW" :
global g_opt_list
Message_obj = Message()
layerList = listLayers("ANSI_Layers")
layerList = str(layerList)
layerList = layerList.replace(",","")
for i in range(0,len(g_opt_list)):
g_opt_list = []
os.dup2(save_fd, 1)
return layerList


elif arg[0] == "ADD_OPTIONAL_PARAM" :
global g_opt_list
global layers
global index
message_name = ""
layer_name = arg[1]
#print "Layer Name", layer_name
for layer in layers:
if layer == layer_name:
if OPT_LIST_MAPPING.has_key(layer_name):
index = OPT_LIST_MAPPING[layer_name]
break

if arg[2] != 'Null':
optional_parameter_name = str(arg[2]).replace("+",",")
for symbol in reverse_symbols:
if symbol in optional_parameter_name:
if SYMBOL_REVERSE_MAPPING.has_key(symbol):
old_symbol = SYMBOL_REVERSE_MAPPING[symbol]
optional_parameter_name =
optional_parameter_name.replace(symbol,old_symbol)


Message_obj.AddParam(message_name,layer_name,
optional_parameter_name )
else : optional_parameter_name= 'Null'


add_delete_flag = 0

param_name = optional_parameter_name
show_opts(layer_name,add_delete_flag,param_name)
if int(add_delete_flag) == 0:
add_delete_flag = 0
if optional_parameter_name != "Null":
optList =
Message_obj.showOptionalParameters(layer_name,add_delete_flag,optional_parameter_name)
g_opt_list[int(index)].append(optional_parameter_name)
for i in g_opt_list[int(index)]:
if g_opt_list[int(index)].count(i) == 1:
optList =
Message_obj.showOptionalParameters(layer_name,add_delete_flag,i)
displayoptparams(optList,layer_name,0,"Null")
i= "Null"
optional_parameter_name = "Null"
add_delete_flag = 1
os.dup2(save_fd, 1)

else:
print "Invalid Option"



def show_opts(layer_name,add_delete_flag,param_name):
global index
global g_opt_list
#param_name = "Null"
List =
Message_obj.showOptionalParameters(layer_name,add_delete_flag,"Null")
if (len(List)== 0) :
return "None"
displayoptparams(List,layer_name,add_delete_flag,Message_obj._message_name)
if param_name == 'Null':
for i in g_opt_list[int(index)]:
if g_opt_list[int(index)].count(i) == 1:
optList =
Message_obj.showOptionalParameters(layer_name,add_delete_flag,i)
displayoptparams(optList,layer_name,0,"Null")
add_delete_flag = 1
return "None"



def main():

#choice = sys.argv[1]
print "####### choice ",
#Process_GUI_Command("NEW")
#list=CMSR.showOptionalParameters("SCCP",0)
#CMSR.saveXMLfile("CMSR2.xml","CMSR")


if __name__ == '__main__':
main()


--Thanks and bestregards.,
--Chandra

Terry said:
chand said:
Hi.,

In my api.py file 'g_opt_list' is defined globally
g_opt_list =[[],[],[],[],[],[],[]]

I am using this global list in the fucntion

def function ():
gloabl g_opt_list

when I run the py file, I am getting the Following Error

SyntaxWarning: name 'g_opt_list' is used prior to global declaration

Please let me know how to remove this error

To expand slightly on previous answers:

1. Write a *minimal* file that gives you the error. This means that
removing any statement ceases to give you the error. This may answer your
questions.

2. If still puzzled, post again. But cut and paste that *exact* file and
also the *full* error traceback.

Terry J. Reedy
 
C

chand

Hi All..,


Sorry for mailing the code which does't even compile !!

Please find below the code which compiles. Please let me know how to
resolve this warning message..!!
SyntaxWarning: name 'g_opt_list' is used prior to global declaration


import os,sys,re,string,math
from xml.dom import minidom, Node
from Layer import Layer
from LMessage import *
from Param import *
from Message import *
#from message_mapping import *
#from protocol_mapping import *
#from symbol_mapping import *
#from opt_list_mapping import *
g_del_opt_list =[[],[],[],[],[],[],[]]
sflag = 0
index=0
del_index=0
radflag = 0
depth = 0
xmlflag = 0
opt_param_list = []
del_opt_param_list = []
#g_opt_list = []
MTAS_HOME="/home/chandras/XML_FILES/"
SIG_STANDARD_HOME = "/home/chandras/SIGNALLING_STANDARD/ANSI_SS7/"
reverse_symbols=['<','>','~']
layers=['MTP3','SCCP','IOS','CDTAPM2','CDTAPC2','ISUP','IS-41D-SQA']
GUI_API_COMMAND_LIST = [
"NEW",
"ADD_OPTIONAL_PARAM",
"DELETE_OPTIONAL_PARAM",
"DELETE_LAYER",
"RENAME"
]

BASE2 = "01"
BASE10 = "0123456789"
BASE16 = "0123456789ABCDEF"

Message_obj = Message()
filename =""
buffer = []
#LIST = []
def Process_GUI_Command(arg):
global Message_obj
global filename
print "### COMMAND ###", arg[0]
save_fd = os.dup(1)
if arg[0] == "DELETE_OPTIONAL_PARAM":
out_file = file('/tmp/te6.txt', 'w+')
elif arg[0] == "ADD_OPTIONAL_PARAM":
out_file = file('/tmp/te3.txt', 'w+')
else :
out_file = file('/tmp/te.txt', 'w+')
os.dup2(out_file.fileno(), sys.stdout.fileno())

if arg[0] == "NEW" :
global g_opt_list
Message_obj = Message()
layerList = listLayers("ANSI_Layers")
layerList = str(layerList)
layerList = layerList.replace(",","")
for i in range(0,len(g_opt_list)):
g_opt_list = []
os.dup2(save_fd, 1)
return layerList

elif arg[0] == "ADD_OPTIONAL_PARAM" :
global g_opt_list
global layers
global index
message_name = ""
layer_name = arg[1]
#print "Layer Name", layer_name
for layer in layers:
if layer == layer_name:
if
OPT_LIST_MAPPING.has_key(layer_name):
index =
OPT_LIST_MAPPING[layer_name]
break

if arg[2] != 'Null':
optional_parameter_name =
str(arg[2]).replace("+",",")
for symbol in reverse_symbols:
if symbol in optional_parameter_name:
if
SYMBOL_REVERSE_MAPPING.has_key(symbol):
old_symbol =
SYMBOL_REVERSE_MAPPING[symbol]
optional_parameter_name
= optional_parameter_name.replace(symbol,old_symbol)

Message_obj.AddParam(message_name,layer_name,
optional_parameter_name )
else : optional_parameter_name= 'Null'

add_delete_flag = 0

param_name = optional_parameter_name
show_opts(layer_name,add_delete_flag,param_name)
if int(add_delete_flag) == 0:
add_delete_flag = 0
if optional_parameter_name != "Null":
optList =
Message_obj.showOptionalParameters(layer_name,add_delete_flag,optional_parameter_name)

g_opt_list[int(index)].append(optional_parameter_name)
for i in g_opt_list[int(index)]:
if
g_opt_list[int(index)].count(i) == 1:
optList =
Message_obj.showOptionalParameters(layer_name,add_delete_flag,i)

displayoptparams(optList,layer_name,0,"Null")
i= "Null"
optional_parameter_name = "Null"
add_delete_flag = 1
os.dup2(save_fd, 1)

else:
print "Invalid Option"


def show_opts(layer_name,add_delete_flag,param_name):
global index
global g_opt_list
#param_name = "Null"
List =
Message_obj.showOptionalParameters(layer_name,add_delete_flag,"Null")
if (len(List)== 0) :
return "None"

displayoptparams(List,layer_name,add_delete_flag,Message_obj._message_name)
if param_name == 'Null':
for i in g_opt_list[int(index)]:
if g_opt_list[int(index)].count(i) == 1:
optList =
Message_obj.showOptionalParameters(layer_name,add_delete_flag,i)

displayoptparams(optList,layer_name,0,"Null")
add_delete_flag = 1
return "None"



def main():

#choice = sys.argv[1]
print "####### choice ",
#Process_GUI_Command("NEW")
#list=CMSR.showOptionalParameters("SCCP",0)
#CMSR.saveXMLfile("CMSR2.xml","CMSR")

if __name__ == '__main__':
main()





















































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































Hi.,

In my api.py file 'g_opt_list' is defined globally
g_opt_list =[[],[],[],[],[],[],[]]

I am using this global list in the fucntion

def function ():
gloabl g_opt_list

when I run the py file, I am getting the Following Error

SyntaxWarning: name 'g_opt_list' is used prior to global declaration

Please let me know how to remove this error

--BestRegars.,
--Chandra
 
P

Peter Otten

chand said:
Sorry for mailing the code which does't even compile !!

You probably missed that other hint where Fredrik Lunddh told you to
somewhat reduce the script's size.
Please find below the code which compiles. Please let me know how to
resolve this warning message..!!
SyntaxWarning: name 'g_opt_list' is used prior to global declaration

This warning occurs if a global variable is used before it is declared as
such:
.... v = 42
.... global v
....
<stdin>:1: SyntaxWarning: name 'v' is assigned to before global declaration

This kind of code is dangerous because a casual reader might think that v is
a local variable. You can avoid the warning -- and the source of confusion
-- by moving the declaration to before the variable's first usage (I prefer
the top of the function):
.... global v
.... v = 42
....

In your script things are even more messed up. You declare g_opt_list twice:
.... global v
.... v = 42
.... global v
....
<stdin>:1: SyntaxWarning: name 'v' is assigned to before global declaration

Now that you understand the cause of the warning it is time to proceed to
yet another effbot hint: You never rebind the global variable g_opt_list
and therefore do not need the

global g_opt_list

statement at all.

Peter
 
T

Terry Reedy

chand said:
Please let me know how to
resolve this warning message..!!
SyntaxWarning: name 'g_opt_list' is used prior to global declaration

Post the entire error traceback.
Post the entire error traceback.
Post the entire error traceback ;-).
[hundreds? more snipped]

Don't post hundread of blank lines. It took me at least half a minute to
delete them for this reply.

Terry J. Reedy
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,744
Messages
2,569,484
Members
44,903
Latest member
orderPeak8CBDGummies

Latest Threads

Top