Can't uninstall wxPython
I have two versions of wxPython installed on my Mac (OS X Tiger). One is version 2.6.1.0 and the other is version 2.6.0.0. I want to keep the newer version, but I can't seem to uninstall either one using the uninstall_wxPython.py script. When I run that script, I get this error message: $ sudo: uninstall_wxPython.py: command not found Is there any way I could delete one, or both, of these installations manually? For some reason, whenever I try to run a wxPython script, it uses the older version of wxPython and it doesn't always run correctly. Thanks in advance. Justin -- http://mail.python.org/mailman/listinfo/python-list
Re: LARGE numbers
Tuvas [EMAIL PROTECTED] writes: I've been thinking about writing a program to generate the world's largest prime numbers, just for the fun of it. This would require being able to hold an 800 digit number into memory (25 megabits, or a little over 3 megs of memory for just one variable...) I would also need several smaller variables. This came about as I optimised a prime number generator more and more, until I came with the idea to try to find the largest ever, using python. Any ideas? I'll probably try to run this on a mainframe eventually, although they might not like it very much... I'll run it on my home computer to first test it. Anyways, let me know if there's a way to make python support numbers so high. Python already supports numbers that large: math.log(10 ** 800) 18420680.743952367 However, you probably want to look into something like gmpy, as you'll get better performance out of it. mike -- Mike Meyer [EMAIL PROTECTED] http://www.mired.org/home/mwm/ Independent WWW/Perforce/FreeBSD/Unix consultant, email for more information. -- http://mail.python.org/mailman/listinfo/python-list
Which blog do you use?
I want to to get a free blog sapce these days, which has category for my posts. What blog do you use? I'll apprecaiteyour recommendation. -- http://mail.python.org/mailman/listinfo/python-list
Re: Good python reference?
derek [EMAIL PROTECTED] wrote: Hello! I'm new to the group and am looking for a decent reference for information about the history / evolution of the Python language and its features. Typing, scoping, etc... I'd appreciate any good links. $ tar xvfz Python-2.4.2.tgz $ cd Python-2.4.2 $ more Misc/HISTORY /F -- http://mail.python.org/mailman/listinfo/python-list
Re: modify dictionary while iterating
[EMAIL PROTECTED] wrote: hi I wish to pop/del some items out of dictionary while iterating over it. a = { 'a':1, 'b':2 } for k, v in a.iteritems(): if v==2: del a[k] the output say RuntimeError: dictionary changed size during iteration how can i suppress this message in an actual script and still get the final value of the dict? is it something like try/except/else statment? try: for v,k in a.iteritems(): if v==something: del a[k] except RuntimeError: don't know what to do here else: should i include this part ? what other ways can i do this ? thanks for any help. If you expect to delete only a few items: a = dict(a=1, b=2, c=3, d=2) delenda = [k for k, v in a.iteritems() if v == 2] for k in delenda: ... del a[k] ... a {'a': 1, 'c': 3} If you expect to delete most items: a = dict(a=1, b=2, c=3, d=2) a = dict((k, v) for k, v in a.iteritems() if v != 2) a {'a': 1, 'c': 3} or (if rebinding a is not an option) a = dict(a=1, b=2, c=3, d=2) for k, v in a.items(): ... if v == 2: ... del a[k] ... a {'a': 1, 'c': 3} Peter -- http://mail.python.org/mailman/listinfo/python-list
Re: modify dictionary while iterating
[EMAIL PROTECTED] wrote: I wish to pop/del some items out of dictionary while iterating over it. Iterate over a copy. a_orig = { 'a': 1, 'b': 2 } a = dict(a_orig) for k, v in a_orig.iteritems(): if v == 2: del a[k] -- \ I know the guy who writes all those bumper stickers. He hates | `\ New York. -- Steven Wright | _o__) | Ben Finney -- http://mail.python.org/mailman/listinfo/python-list
How do I bind multiple Pmw.Balloon tooltip with Buttons to the same widget?
hi, I find a code in FAQTs about how to bind a tooltip with a button. FAQTs link http://www.faqts.com/knowledge_base/view.phtml/aid/20565/fid/264 but not enough informatin for how to make multiple tooltip. Someone can help me and show a little example how it's done. thanks in advance. -- http://mail.python.org/mailman/listinfo/python-list
Re: Diff. between Class types and classic classes
Dear Colin, Forgive me for this late reply. Your explanation was of great help to me. Thank you very much. It was crystal clear. -- http://mail.python.org/mailman/listinfo/python-list
how to start a process and get it's pid?
Hello, another question rose for me today... Is there a way to start an external process, in it's own context (not as the exec-() functions do), and get it's pid...? e.g.: pid = wonderfulstartprocfunction('/usr/bin/wine bla.exe') #... later if (...): os.kill(pid,9) best regards, Yves -- http://mail.python.org/mailman/listinfo/python-list
Re: how to start a process and get it's pid?
Yves Glodt wrote: Hello, another question rose for me today... Is there a way to start an external process, in it's own context (not as the exec-() functions do), and get it's pid...? [...] Check out the subprocess module if you're using Python 2.4. Otherwise, you can always use os.spawn*, for example: os.spawnl(os.P_NOWAIT, c:/windows/notepad.exe) 1944 HTH, -- Gerhard -- http://mail.python.org/mailman/listinfo/python-list
Re: LARGE numbers
[EMAIL PROTECTED] wrote: An early alpha-quality release is available at http://home.comcast.net/~casevh/ Given the module named Decimal in Python 2.4, I'd suggest you to rename your library. -- Giovanni Bajo -- http://mail.python.org/mailman/listinfo/python-list
RE: Looking Python script to compare two files
[david] So if I want to use these tools: antiword,pdf2text, can I pack these tools and python script into a windows EXE file? I know there is open source tool which can pack python script and libs and generate the windows EXE file. I'm not especially qualified to answer this, but I think the answer's Yes. I think that you can just tell py2exe that the executables and DLLs of the other products are data files for the Python one. Best look at the py2exe site and mailing list for further info. An alternative is just to use an installer to package the whole thing in the usual Windows way. Yes, this approach can't handle the pictures in the PDF/WORD file. There is a way to play around it? maybe it's very hard. I'm not even sure how I'd go about it conceptually. How *do* you compare two pictures? Do you really want to do this? BTW, don't forget that if you're comparing Word with Word, you can use its inbuilt comparison ability, which just needs COM automation. (Don't know how that takes care of picture either, but if Word's own Compare can't, no-one else has got a chance). TJG This e-mail has been scanned for all viruses by Star. The service is powered by MessageLabs. For more information on a proactive anti-virus service working around the clock, around the globe, visit: http://www.star.net.uk -- http://mail.python.org/mailman/listinfo/python-list
output buffering
Hello, When reading a large datafile, I want to print a '.' to show the progress. This fails, I get the series of '.'s after the data has been read. Is there a trick to fix this? Thanks -- http://mail.python.org/mailman/listinfo/python-list
Re: output buffering
JD [EMAIL PROTECTED] wrote: When reading a large datafile, I want to print a '.' to show the progress. This fails, I get the series of '.'s after the data has been read. Is there a trick to fix this? assuming that you're printing to stdout, sys.stdout.flush() should do the trick. /F -- http://mail.python.org/mailman/listinfo/python-list
Re: derived / base class name conflicts
[EMAIL PROTECTED] wrote: (snip) So putting two underscores in front of an instance variable (or any identifier used inside the scope of a class statement) invokes a name mangling mechanism (snip) Is it commonplace to use underscores I assume you mean double underscore... when defining derived class instance variables, or is this considered against the grain of python? I don't know if it's 'commonplace', but that's something I only do when I absolutely want to protect a given attribute of a base class from being accidentally overriden by a derived class. Else I use the usual convention ('_name' = implementation, 'name' = API), and assume users of my code will read the documentation (or the source FWIW) before subclassing. Note that since 'users of my code' are mostly my coworkers and I, this is a quite sensible assumption !-) -- bruno desthuilliers python -c print '@'.join(['.'.join([w[::-1] for w in p.split('.')]) for p in '[EMAIL PROTECTED]'.split('@')]) -- http://mail.python.org/mailman/listinfo/python-list
Re: Command-line tool able to take multiple commands at one time?
Peter A. Schott wrote: Per subject - I realize I can copy/paste a line at a time into an interactive session when I'm trying to debug, but was wondering if there is any tool out there that allows me to copy sections of working Python scripts to paste into my interactive console and let those run so I don't have to copy line-by-line. There's much better than that : emacs + python-mode let you evaluate either the whole script, a single class or def statement, or an arbitrary region in an interactive Python interpreter running as an emacs sub-process. Of course, this interpreter don't die after, so you can inspect/play with/do whatever with the results of this evaluation. -- bruno desthuilliers python -c print '@'.join(['.'.join([w[::-1] for w in p.split('.')]) for p in '[EMAIL PROTECTED]'.split('@')]) -- http://mail.python.org/mailman/listinfo/python-list
Needed class whose instances are many test cases
I have scinario like I have to Create resource(in __init__()) Before Running a set of testcases and then In Testcases resources are going to used and then It will cleared off after Running the testcases by destructor __del__() import unittest import time class app_adminfunc(unittest.TestCase): def __init__(self, method = 'runTests'): unittest.TestCase.__init__(self, method) #Resource Creation def __del__(self): #--Resource Deletion - def test01- def test02- ... But in this above code Problem is that __init__() called at each time when the Testcase is run ,But i want Single time run of the Init Prior to run of each tests inside the class . Can Anybody help me on this ? -- http://mail.python.org/mailman/listinfo/python-list
Re: Newb ??
did you test the script? here's a simulator: snip Fredrik, thank you very much indeed for taking the trouble to show me the way. I am sorry that I made the comment I did, that will teach me to read more carefully. It is said that there is no fool like an old fool and, as I am approaching 78 years old, I think I qualify. It is also said that you are never too old to learn so I am trying. Now, I put the script you gave into an editor and ran it , (I use Ubuntu Linux by the way). It certainly showed how the computer arrived at the number guessed but guessed the number itself and gave me no chance to say whether high or low. I noticed also that the numbers were all greater than 50 and the loop ran until the number guessed was 100, then it stopped. Perhaps you can point out to me how I should go about debugging. Incidentally, I am only just starting to learn about functions and have not come across the module 're'. Also why is it (lo+hi)//2 and not (lo+hi)/2. Thanks again for your help. Norman # end Comments please. if this had been a java let's pretend you're the java runtime certification question, you would have failed. /F -- http://mail.python.org/mailman/listinfo/python-list
Re: MoinMoin - Can't create new pages
In case anyone else finds this thread, the solution is that for Moin = 1.3.5, the 404 handling in IIS has to be changed for the Wiki Virtual Directory. See my blog at http://www.bloglines.com/blog/Kolossi?id=13 for details. -- http://mail.python.org/mailman/listinfo/python-list
Re: XML GUI
py napisał(a): Looking for information on creating a GUI using a configuration file (like an XML file or something). Also, how do you map actions (button clicks, menu selections, etc) to the XML? Depending on GUI toolkit, you will have a range of choices: Glade for GTK, XRC for wxPython, Qt dialog editor also produces XML files with UI description. Each of these toolkits has its own way to process GUI events. -- Jarek Zgoda http://jpa.berlios.de/ -- http://mail.python.org/mailman/listinfo/python-list
Re: output buffering
On 2005-11-11, Fredrik Lundh [EMAIL PROTECTED] wrote: JD [EMAIL PROTECTED] wrote: When reading a large datafile, I want to print a '.' to show the progress. This fails, I get the series of '.'s after the data has been read. Is there a trick to fix this? assuming that you're printing to stdout, sys.stdout.flush() should do the trick. It does, Thanks! -- http://mail.python.org/mailman/listinfo/python-list
Re: SuSe 10.0 missing Idle
Joseph Garvin wrote: SuSE probably has a seperate package, something like python-tk, that will install IDLE. # rpm -qf `which idle` python-idle-2.4.1-3 Ciao, Michael. -- http://mail.python.org/mailman/listinfo/python-list
Re: Good python reference?
derek schrieb: Hello! I'm new to the group and am looking for a decent reference for information about the history / evolution of the Python language and its features. Typing, scoping, etc... I'd appreciate any good links. Thanks! - Derek Looking at the title of your mail I would answer http://rgruet.free.fr/PQR24/PQR2.4.html But history? Sorry Hans Georg -- http://mail.python.org/mailman/listinfo/python-list
Re: Needed class whose instances are many test cases
Sumit == Sumit [EMAIL PROTECTED] writes: Sumit I have scinario like I have to Create resource(in Sumit __init__()) Before Running a set of testcases and then In Sumit Testcases resources are going to used and then It will Sumit cleared off after Running the testcases by destructor Sumit __del__() import unittest import time Sumit class app_adminfunc(unittest.TestCase): Sumit def __init__(self, method = 'runTests'): Sumit unittest.TestCase.__init__(self, method) Sumit #Resource Creation Sumit def __del__(self): #--Resource Sumit Deletion - Sumitdef test01- def test02- ... Sumit But in this above code Problem is that __init__() called at Sumit each time when the Testcase is run ,But i want Single time Sumit run of the Init Prior to run of each tests inside the class Sumit . Can Anybody help me on this ? The unittest module runs a setUp and tearDown before each test case. If that is too high-frequency, why not just do something like class app_adminfunc(unittest.TestCase): def setUp(self): pass def tearDown(self): pass def allYourTestCase(self): def test01(): pass def test02(): pass since python is so mellow about nesting functions and classes and such. HTH, Chris -- http://mail.python.org/mailman/listinfo/python-list
Re: Looking Python script to compare two files
Thanks Tim! I will have a try,maybe this weekend and let you know the result. -- http://mail.python.org/mailman/listinfo/python-list
Re: Needed class whose instances are many test cases
Sumit [EMAIL PROTECTED] wrote: I have scinario like I have to Create resource(in __init__()) Before Running a set of testcases and then In Testcases resources are going to used and then It will cleared off after Running the testcases by destructor __del__() This is a poor design; your tests will each be starting in a different state, and will likely not run the same way if run in a different order, making them fragile. Test cases should each run individually, from a known state, and not depend on any other tests. You can define a fixture for several tests in the unittest.TestCase methods setUp() and tearDown(), to establish and clear up respectively for each test. -- \ When I wake up in the morning, I just can't get started until | `\ I've had that first, piping hot pot of coffee. Oh, I've tried | _o__) other enemas... -- Emo Philips | Ben Finney -- http://mail.python.org/mailman/listinfo/python-list
creating single-instance executables using python/py2exe
Hi, I have created an application using python/wxPython and py2exe. I have associated a certain file extension with this application so that when I double-click the file, my application is launched. The application runs fine except that a new instance is created when I double click on two different files. Is there a way in which I can make sure only one instance is created? Any additional files are opened in the same running instance? Would appreciate any comments/feedback. thanks, Satchit -- Satchidanand Haridas (sharidas at zeomega dot com) ZeOmega (www.zeomega.com) Open Minds' Open Solutions -- http://mail.python.org/mailman/listinfo/python-list
Re: how to start a process and get it's pid?
Daniel Crespo wrote: os.spawnl(os.P_NOWAIT, c:/windows/notepad.exe) 1944 I don't get the correct PID. When I do os.spawnl(os.P_NOWAIT, c:/windows/notepad.exe) I get 168 (for example), while in the tasklist appears notepad.exe with the 2476 PID. Why? not sure, but the return value looks like a PID, so maybe you're seeing the PID for the cmd.exe instance used to run the program. or something. try this instead: import subprocess p = subprocess.Popen(c:/windows/notepad.exe) p.pid 1948 /F -- http://mail.python.org/mailman/listinfo/python-list
Re: LARGE numbers
Already done for next version. Tentatively, there will be a package called ar (Arbitrary Radix) and the module will be called BigInt. I'm also working on an arbitrary radix BigFloat module. Case -- http://mail.python.org/mailman/listinfo/python-list
Import statements for timeit module
Hi I was wondering if someone could help with the import statements needed to use the timeit module in the following code. I need to access the cur object. Thanks, import cx_Oracle import timeit def VerifyTagIntegrity(con, TableOwner): cur = con.cursor() sql = 'select (select count(*) from %s.f4111) as F4111_COUNT, (select count(*) from %s.f4111_tag) as TAG_COUNT from dual;' % (TableOwner, TableOwner) print SQL: %s % (sql) timer = timeit.Timer('cur.execute(sql)', 'from __main__ import cur') print timer.timeit() -- http://mail.python.org/mailman/listinfo/python-list
Re: how to start a process and get it's pid?
Hi os.spawnl(os.P_NOWAIT, c:/windows/notepad.exe) 1944 I don't get the correct PID. When I do os.spawnl(os.P_NOWAIT, c:/windows/notepad.exe) I get 168 (for example), while in the tasklist appears notepad.exe with the 2476 PID. Why? Thanks Daniel -- http://mail.python.org/mailman/listinfo/python-list
Re: testing C code with python
On 11/10/05, Peter Hansen [EMAIL PROTECTED] wrote: [EMAIL PROTECTED] wrote: A simple question - Is it common/good practice to test C code using Python? For example one could wrap individual C functions, and test each of them using python, maybe not for low-level things but at least for algorithmic correctness. Anyone effectively doing this as common practice? Take a look at swig.org There are some examples for testing C code y python and/or extend python with C functions. -- http://mail.python.org/mailman/listinfo/python-list
Re: creating single-instance executables using python/py2exe
Satchidanand Haridas enlightened us with: a new instance is created when I double click on two different files. Is there a way in which I can make sure only one instance is created? You could open a listening socket to listen for open file commands. If opening that socket fails (address already in use), connect a client socket to it, send the appropriate open file command, and exit. That way, you even have a cross-platform solution. Sybren -- The problem with the world is stupidity. Not saying there should be a capital punishment for stupidity, but why don't we just take the safety labels off of everything and let the problem solve itself? Frank Zappa -- http://mail.python.org/mailman/listinfo/python-list
Re: A Tcl/Tk programmer learns Python--any advice?
Robert Hicks [EMAIL PROTECTED] wrote: Why does there need to be OO in the core? That is one thing I have never understood. If you want OO, get a package that fits your style of OO and package require you are off and running. That probably isn't what you would be looking at Tcl for anyway. The problem there is that you end up with N different implementations. They each have roughly similar capabilities, but are different enough in the details that somebody who knows one will have trouble maintaining code using another. Each one probably has some features which make it better than the others in some ways, and some ugly warts too. None is superior enough in all respects to become dominant. It's just like C++ went through with strings and containers before STL came along. Everybody rolled their own, or bought one of the several commercially available libraries. That meant you could be an expert at C++ and still have a steep learning curve when coming into a new project. -- http://mail.python.org/mailman/listinfo/python-list
Re: Needed class whose instances are many test cases
In article [EMAIL PROTECTED], Ben Finney [EMAIL PROTECTED] wrote: This is a poor design; your tests will each be starting in a different state, and will likely not run the same way if run in a different order, making them fragile. Test cases should each run individually, from a known state, and not depend on any other tests. You can define a fixture for several tests in the unittest.TestCase methods setUp() and tearDown(), to establish and clear up respectively for each test. In general, I certainly agree with the above. The problem is that sometimes setup is so expensive, it becomes impractical to do a full setup/teardown cycle for each test. -- http://mail.python.org/mailman/listinfo/python-list
Re: modify dictionary while iterating
Iterate over the keys ( for entry in adict.keys(): ) All the best, Fuzzy http://www.voidspace.org.uk/python/index.shtml -- http://mail.python.org/mailman/listinfo/python-list
something wrong in wx
something wrong in wx I wrote program training na Artificial Neural Network. It work well in console mode, but when I try to add GUI there is an error: FANN Error 10: Error reading info from train data file zapis.txt, line: 2 There is a code: # this work #!/usr/bin/python import fann connection_rate = 1 learning_rate = 0.7 num_layers = 3 num_input = 319 num_neurons_hidden = 50 num_output = 5 ann = fann.fann_create(connection_rate, learning_rate, num_layers,num_input, num_neurons_hidden, num_output) desired_error = 0.1 max_iterations = 50 iterations_between_reports = 1000 fann.fann_train_on_file(ann, zapis.txt, max_iterations, iterations_between_reports, desired_error) print fann.fann_get_MSE(ann) fann.fann_save(ann, po_nauce.net) fann.fann_destroy(ann) # with GUI (not work) # #!/usr/bin/python import wx import fann class TestFrame(wx.Frame): def __init__(self): wx.Frame.__init__(self, None, -1, Trenowanie sieci, pos=(50, 50)) panel = wx.Panel(self) # First create the controls topLbl = wx.StaticText(panel, -1, Trenowanie sieci, size=wx.Size(400, 21), style=wx.ALIGN_CENTRE) topLbl.Center(wx.HORIZONTAL) topLbl.SetFont(wx.Font(18, wx.SWISS, wx.NORMAL, wx.BOLD)) polaczenia_Lbl = wx.StaticText(panel, -1, u'Stopie\u0144 po\u0142\u0105cze\u0144 [%]:') self.polaczenia = wx.SpinCtrl(panel, -1, ) self.polaczenia.SetRange(0,100) self.polaczenia.SetValue(100) ilosc_warstw_Lbl = wx.StaticText(panel, -1, u'Ilo\u015b\u0107 warstw:') self.ilosc_warstw = wx.SpinCtrl(panel, -1, ) self.ilosc_warstw.SetRange(0,5) self.ilosc_warstw.SetValue(3) cstLbl1 = wx.StaticText(panel, -1, '\n' u'Poszczeg\xf3lne warstwy sieci: ') cstLbl = wx.StaticText(panel, -1, '\n' u'wej\u015biowa ukryta wyj\u015biowa') self.ilosc_wejsc = wx.SpinCtrl(panel, -1, ) self.ilosc_wejsc.SetRange(0,2000) self.ilosc_wejsc.SetValue(319) self.ukryte = wx.SpinCtrl(panel, -1, ) self.ukryte.SetRange(0,500) self.ukryte.SetValue(50) self.ilosc_wyjsc = wx.SpinCtrl(panel, -1, ) self.ilosc_wyjsc.SetRange(0,100) self.ilosc_wyjsc.SetValue(5) uczenie_Lbl = wx.StaticText(panel, -1, u'Cz\u0119sto\u015b\u0107 uczenia [%]:') self.uczenie = wx.SpinCtrl(panel, -1, ) self.uczenie.SetRange(0,100) self.uczenie.SetValue(70) oczekiwany_blad_Lbl = wx.StaticText(panel, -1, u'Oczekiwany b\u0142\u0105d: [1/x]') self.oczekiwany_blad = wx.SpinCtrl(panel, -1, ) self.oczekiwany_blad.SetRange(0,1) self.oczekiwany_blad.SetValue(10) powtorzen_Lbl = wx.StaticText(panel, -1, u'Maxymalna liczba powt\xf3rze\u0144:') self.powtorzen = wx.SpinCtrl(panel, -1, ) self.powtorzen.SetRange(0,10) self.powtorzen.SetValue(5) raporty_Lbl = wx.StaticText(panel, -1, u'raport co:') self.raporty = wx.SpinCtrl(panel, -1, ) self.raporty.SetRange(0,1) self.raporty.SetValue(1000) trenujBtn = wx.Button(panel, -1, Trenuj Siec) self.Bind(wx.EVT_BUTTON, self.on_trenujBtn, trenujBtn) cancelBtn = wx.Button(panel, -1, Cancel) # Now do the layout. # mainSizer is the top-level one that manages everything mainSizer = wx.BoxSizer(wx.VERTICAL) mainSizer.Add(topLbl, 0, wx.ALL, 5) ainSizer.Add(wx.StaticLine(panel), 0, wx.EXPAND|wx.TOP|wx.BOTTOM, 5) # addrSizer is a grid that holds all of the address info addrSizer = wx.FlexGridSizer(cols=2, hgap=5, vgap=5) addrSizer.AddGrowableCol(1) addrSizer.Add(polaczenia_Lbl, 0, wx.ALIGN_RIGHT|wx.ALIGN_CENTER_VERTICAL) addrSizer.Add(self.polaczenia, 0, wx.EXPAND) addrSizer.Add(ilosc_warstw_Lbl, 0, wx.ALIGN_RIGHT| wx.ALIGN_CENTER_VERTICAL) addrSizer.Add(self.ilosc_warstw, 0, wx.EXPAND) #addrSizer.Add((10,10)) # some empty space #addrSizer.Add(addr2, 0, wx.EXPAND) addrSizer.Add(cstLbl1, 0, wx.ALIGN_RIGHT|wx.ALIGN_CENTER_VERTICAL) addrSizer.Add(cstLbl, 0, wx.ALIGN_RIGHT|wx.ALIGN_CENTER_VERTICAL) addrSizer.Add((10,10)) # some empty space # the city, state, zip fields are in a sub-sizer cstSizer = wx.BoxSizer(wx.HORIZONTAL)
Re: Python obfuscation
The Eternal Squire wrote: Two things: ... 2) Only sell to an honest customer willing to be locked into nondisclosure agreements. This goes back to the maxim of good salesmanship: Know Your Customer. If you have this, you don't need the obfuscation. -- http://mail.python.org/mailman/listinfo/python-list
Re: Python obfuscation
petantik wrote: Alex Martelli wrote: I think that's feeble protection. If you have valuable code, and distribute it, people WILL crack it -- just check the warez sites for experimental proof... EVERYTHING that people are really interested in DOES get cracked, no matter what tricky machine-code the protections are coded in. There's ONE way to have uncrackable code -- don't distribute it, but rather put it up on the net on a well-secured machine under your control, available as (say) a webservice (subscription-only, pay per use, or whatever business model you want). ... I think that is not workable because it is easy to say the the internet is available everywhere. It is not available in developing countries... Erh, the internet is certainly spreading to most of the world, and there is an abundance of cracked and pirated software in the poorer countries in the world, so the obfuscation part has certainly proven not to work there. -- http://mail.python.org/mailman/listinfo/python-list
Re: modify dictionary while iterating
I wish to pop/del some items out of dictionary while iterating over it. Ben Iterate over a copy. Ben a_orig = { 'a': 1, 'b': 2 } Ben a = dict(a_orig) Ben for k, v in a_orig.iteritems(): Ben if v == 2: Ben del a[k] Or iterate over just a copy of the keys: for k in a_orig.keys(): if a_orig[k] == 2: del a_orig[k] Skip -- http://mail.python.org/mailman/listinfo/python-list
Re: Job - PYTHON Engineers, BitTorrent, Inc., San Francisco, CA
camdenjobs wrote: PYTHON Engineers, BitTorrent, Inc., San Francisco, CA Interested candidates should forward their resumes to ... Please understand that due to the large volume of responses, I will not be able to acknowledge each of you individually. Now, that's confidence! May such optimism always be fulfilled. :) -- http://mail.python.org/mailman/listinfo/python-list
Re: output buffering
jd When reading a large datafile, I want to print a '.' to show the jd progress. This fails, I get the series of '.'s after the data has jd been read. Is there a trick to fix this? As Fredrik indicated, you need to flush the output buffer. You might also want to check out the progress module available from my Python Bits page: http://orca.mojam.com/~skip/python/ Skip -- http://mail.python.org/mailman/listinfo/python-list
Re: Python obfuscation
Mike Meyer wrote: Yu-Xi Lim [EMAIL PROTECTED] writes: Ben's analogy of the house is not a perfect example, but it's still a fair one. You know that if some one really wants to break into your house, he will get in, regardless of your sophisticated laser trip wire system, ex-SAS guards, and genetically-engineered guard dogs. But as long as the cost of protection is less than the cost of the item you're protecting (multiplied by the relevant probabilities, factoring recurring costs, etc), it's worthwhile to spend money on protection. If that fails, then you will of course fall back on the law, but you still try to prevent it from happening in the first place. Sounds like you just said that manufacturers should improve their protection until they aren't making any profit on the product. That's silly. The goal isn't to maximize protection, it's to maximize profit. That means it only makes sense to spend money on better protection if the cost of the protection is less than the expected profit from adding it. I agree with what you're saying, but it seems like you're arguing against what was said rather than what was intended. Without wishing to put words into anybody's mouths, I'm pretty sure what Yu-Xi Lim meant was just that even imperfect protection is worthwhile if you estimate that it will benefit you more than it will cost you. This is in contrast to the opinion that any protection is useless because someone will break it if they want to. A recent, heavily publicized case where Sony added copy protection to a product cost them sales, and from what I've heard, even legal fees. I think that's a poor example - the cost hasn't come from the mere act of adding protection, but the method in which that protection operates. I don't think anybody here - certainly not me - is talking about infecting a user's system to protect our property, or taking any other intrusive steps. I'd just like to make it non-trivial to make or use additional copies. -- Ben Sizer. -- http://mail.python.org/mailman/listinfo/python-list
Re: What do you use as symbols for Python ?
Gary Herron [EMAIL PROTECTED] wrote: Another similar approach that keeps those values together in a single namespace is this (my favorite): class State: OPENED, CLOSED, ERROR = range(3) Then you can refer to the values as State.OPENED State.CLOSED State.ERROR The extra clarity (and slight wordiness) of the dotted notation seems, somehow, quite Pythonic to me. I have here an implementation (written by a colleague) of a whole pile of such -- in this particular case it's helpful to do it in this style rather than the class OPENED: pass because the values are coming from/ going to a database. And it goes a little further, with class State: Enum = range(3) OPENED, CLOSED, ERROR = Enum Names = { OPENED: OPENED, CLOSED: CLOSED, ERROR: ERROR } so you can used State.Names[state] to provide something user-readable, and state in State.Enum to check data consistency. (OK, that probably doesn't make much sense with this particular State, but it does when your getting value-as-number from an external source.) -- \S -- [EMAIL PROTECTED] -- http://www.chaos.org.uk/~sion/ ___ | Frankly I have no feelings towards penguins one way or the other \X/ |-- Arthur C. Clarke her nu becomeþ se bera eadward ofdun hlæddre heafdes bæce bump bump bump -- http://mail.python.org/mailman/listinfo/python-list
Re: Python obfuscation
Mike Meyer wrote: There are ways to distribute Python modules so that the user can't just open them in a text editor. There are also ways to get cryptographic security for distributed modules. I know distributing as bytecode helps, but I was under the impression that the disassembers worked pretty well. With the dynamic nature of the language I expect that all the variable names are largely left intact. You win some, you lose some, I guess. As for cryptographic security, could you provide a link or reference for this? I am quite interested for obvious reasons. I'd be concerned that there's a weak link in there at the decoding stage, however. I have considered distributing my program as open source but with encrypted data. Unfortunately anyone can just read the source to determine the decryption method and password. Maybe I could put that into an extension module, but that just moves the weak link along the chain. Yes, if you use the same methods you use in C++, it's much harder. But by the same token, if you tried to use the methods you'd use in a Python program in C++, you'd find that the C++ version was much harder. Well, I'm not sure what you mean here. A compiled C++ program is much harder to extract information from than a compiled Python program. That's without applying any special 'methods' on top of the normal distribution process. Of course, as Alex pointed out, all of these are just keeping honest people honest. The crooks have all the advantages in this game, so you really can't expect to win. No, certainly not. But if you can mitigate your losses easily enough - without infringing upon anyone else's rights, I must add - then why not do so. -- Ben Sizer. -- http://mail.python.org/mailman/listinfo/python-list
Re: modify dictionary while iterating
[EMAIL PROTECTED] I wish to pop/del some items out of dictionary while iterating over it. a = { 'a':1, 'b':2 } for k, v in a.iteritems(): if v==2: del a[k] A simple change would be using items() instead of iteritems(). Or else, you may prefer to loop over keys, and retrieve values, either: for k in a.keys(): if a[k] == 2: del a[k] or: for k in set(a): if a[k] == 2: del a[k] But in no way, you may directly iterate over the original dictionary while altering its keys, this is explicitly forbidden in Python. -- François Pinard http://pinard.progiciels-bpi.ca -- http://mail.python.org/mailman/listinfo/python-list
Re: help make it faster please
[EMAIL PROTECTED] wrote: Oh sorry indentation was messed here...the wordlist = countDict.keys() wordlist.sort() should be outside the word loop now def create_words(lines): cnt = 0 spl_set = '[,;{}_?!():-[\.=+*\t\n\r]+' for content in lines: words=content.split() countDict={} wordlist = [] for w in words: w=string.lower(w) if w[-1] in spl_set: w = w[:-1] if w != '': if countDict.has_key(w): countDict[w]=countDict[w]+1 else: countDict[w]=1 wordlist = countDict.keys() wordlist.sort() cnt += 1 if countDict != {}: for word in wordlist: print (word+' '+ str(countDict[word])+'\n') ok now this is the correct question I am asking... (a) You might be better off doing: words = words.lower() for w in words: ... instead of calling lower() on each separate word (and note that most functions from string are deprecated in favour of string methods). (b) spl_set isn't doing what you might think it is -- it looks like you've written it as a regexp but your using it as a character set. What you might want is: spl_set = ',;{}_?!():-[\.=+*\t\n\r' and while w[-1] in spl_set: w = w[:-1] That loop can be written: w = w.rstrip(spl_set) (which by my timings is faster if you have multiple characters from spl_set at the end of your word, but slower if you have 0 or 1). -- \S -- [EMAIL PROTECTED] -- http://www.chaos.org.uk/~sion/ ___ | Frankly I have no feelings towards penguins one way or the other \X/ |-- Arthur C. Clarke her nu becomeþ se bera eadward ofdun hlæddre heafdes bæce bump bump bump -- http://mail.python.org/mailman/listinfo/python-list
Re: Abstract Base Classes
Ben Finney wrote: Howdy all, Okay, so Guido doesn't like Abstract Base Classes[0], and interfaces are the way of the future[1]. But they're not here now, and I understand ABCs better. This is a very interesting discussion - not all of it understandable to me. Are interfaces really in our future? I found the contributions of steffen particularly appealing. Interfaces seem to add another level of complexity without significant benefit. Colin W. I want my modules to (sometimes) define an abstract base exception class, that all other exceptions in that module inherit from. class FooException(Exception): Base class for all FooModule exceptions class FooBadFilename(FooException): Raised when a bad filename is used in a foo class FooUnknownBar(FooException, KeyError): Raised when an unknown bar is used with a foo However, there should never be an exception raised of class FooException, and in fact I want that to cause an appropriate error to be raised from the module. Normally, I'd pick some key part of the functionality of the class, and cause that to raise NotImplementedError. It's then the responsibility of subclasses to override that. However, in the case of exceptions, I don't want to override *any* functionality; everything should be provided by the base classes. It'd be messy to have to override something in every subclass just to ensure the abstraction of the module base exception. I've tried doing this in the __init__(): class FooException(Exception): Base class for all FooModule exceptions def __init__(self): raise NotImplementedError, \ %s is an abstract class for exceptions % self.__class__ When I use this, I discovered to my horror that the subclasses were calling FooException.__init__ -- which I though wasn't supposed to happen in Python! It's also rather semantically weird, to my eye. Can I do something tricky with checking base classes in the FooException.__init__() ? [0] Although he's apparently been quoted earlier as saying he did. He's changed his mind[1] since then. [1] URL:http://www.artima.com/weblogs/viewpost.jsp?thread=92662 -- http://mail.python.org/mailman/listinfo/python-list
Re: gmpy 1.01 rc near... anybody wanna test
[EMAIL PROTECTED] wrote: I've created Windows binaries for Python 2.3 and 2.4. It should be compatible with PentiumPro or later processors. Thanks! I hope to package up a release early next week, and to include these. Alex -- http://mail.python.org/mailman/listinfo/python-list
Re: Newb ??
Norman Silverstone [EMAIL PROTECTED] wrote: ... Incidentally, I am only just starting to learn about functions and have not come across the module 're'. Also why is it (lo+hi)//2 and not (lo+hi)/2. Using // ensures truncation, which is what you want. A single / may mean truncating division in the default legacy/compatibility mode, but with the new division behavior (which one day will become standard) it means true division, so that for example 1/2 means 0.5 -- better get used to the new behavior ASAP (which is why you can ask for new division behavior with -Qnew on Python's commandline or 'from __future__ import division' at the top of your module -- to help you get used to it). Alex -- http://mail.python.org/mailman/listinfo/python-list
Re: how to start a process and get it's pid?
import subprocess p = subprocess.Popen(c:/windows/notepad.exe) p.pid 1948 Yes, it works. But in my case, I need to run the program totally separated from my main program. So, when I start a new program through subprocess, it doesn't unlink. I mean, if I close my main app, so does the launched program. With startfile() it does the job, but I then I have to find what pid is through win32all module, etc. it would be very good if I can use spawnl Daniel -- http://mail.python.org/mailman/listinfo/python-list
Is there a built-in method for transforming (1, None, Hello!) to 1, None, Hello!?
Is there a built-in method for transforming (1,None,Hello!) to 1,None,Hello!? Thanks -- http://mail.python.org/mailman/listinfo/python-list
Calling values from a webform to Python
hi, I'm trying to pass some values from a webform into a python script. ___ html form action=proccessForm.py pName: input type=text name=filename//p pEmail: input type=text name=title//p pinput type=submit name=submit value= Submit /p /form /html ___ Now, how do I call these individual attributes (filename,title, etc.) in my processForm.py. I think it has something to do with the: REQUEST=context.REQUEST command, but I'm not quite sure how to implement it properly. Also this is done through Zope if that makes a difference to anyone. Thanks in advance, mjakowlew -- http://mail.python.org/mailman/listinfo/python-list
Re: how to start a process and get it's pid?
not sure, but the return value looks like a PID, so maybe you're seeing the PID for the cmd.exe instance used to run the program. or something. No. There wasn't a 196 PID for any of the processes. -- http://mail.python.org/mailman/listinfo/python-list
Re: Is there a built-in method for transforming (1, None, Hello!) to 1, None, Hello!?
On 2005-11-11, Daniel Crespo [EMAIL PROTECTED] wrote: Is there a built-in method for transforming (1,None,Hello!) to 1,None,Hello!? What transformation? The two are identical: x = (1,None,Hello!) y = 1,None,Hello! x == y True -- Grant Edwards grante Yow! Nice decor! at visi.com -- http://mail.python.org/mailman/listinfo/python-list
Re: Import statements for timeit module
ChaosKCW wrote: Hi I was wondering if someone could help with the import statements needed to use the timeit module in the following code. I need to access the cur object. Thanks, import cx_Oracle import timeit def VerifyTagIntegrity(con, TableOwner): cur = con.cursor() sql = 'select (select count(*) from %s.f4111) as F4111_COUNT, (select count(*) from %s.f4111_tag) as TAG_COUNT from dual;' % (TableOwner, TableOwner) print SQL: %s % (sql) timer = timeit.Timer('cur.execute(sql)', 'from __main__ import cur') print timer.timeit() 'cur' is local to the function, so it's not an attribute of your module, so you can't hope to import it anyway. -- bruno desthuilliers python -c print '@'.join(['.'.join([w[::-1] for w in p.split('.')]) for p in '[EMAIL PROTECTED]'.split('@')]) -- http://mail.python.org/mailman/listinfo/python-list
Re: Is there a built-in method for transforming (1, None, Hello!) to 1, None, Hello!?
do you mean this ? otherwise, don't know what you want. a, b, c = (1, None, Hello!) Daniel Crespo wrote: Is there a built-in method for transforming (1,None,Hello!) to 1,None,Hello!? Thanks -- http://mail.python.org/mailman/listinfo/python-list
Re: Is there a built-in method for transforming (1, None, Hello!) to 1, None, Hello!?
On 11 Nov 2005 07:21:46 -0800, Daniel Crespo [EMAIL PROTECTED] wrote: Is there a built-in method for transforming (1,None,Hello!) to 1,None,Hello!? There's no conversion to do: (1,None,Hello!) (1, None, 'Hello!') 1,None,Hello! (1, None, 'Hello!') They are both tuples contining identicle elements. What is it that you want to do? -- Cheers, Simon B, [EMAIL PROTECTED], http://www.brunningonline.net/simon/blog/ -- http://mail.python.org/mailman/listinfo/python-list
This Week in PyPy 2
Introduction This is the second of what will hopefully be many summaries of what's been going on in the world of PyPy in the last week. I'd still like to remind people that when something worth summarizing happens to recommend if for This Week in PyPy as mentioned on: http://codespeak.net/pypy/dist/pypy/doc/weekly/ where you can also find old summaries. There were about 100 commits to the pypy section of codespeak's repository this week. pypy-c py.py Over the weekend (while I was being blown around Wales by the remnants of hurricane Wilma) Armin and a few others worked on trying to get a translated pypy-c to run the interpreted py.py. This resulted in a fixing a welter of small differences between CPython and pypy-c, though at the end of it all we are still left in the dark of incomprehensible geninterplevel crashes caused by subtle differences between the most internal types of CPython and pypy-c. Multiple Spaces === In one of the reports we're currently writing for the end of phase 1 EU review: http://codespeak.net/pypy/dist/pypy/doc/draft-low-level-encapsulation.html we made this claim: The situation of multiple interpreters is thus handled automatically: if there is only one space instance, it is regarded as a pre-constructed constant and the space object pointer (though not its non-constant contents) disappears from the produced source, i.e. both from function arguments and local variables and from instance fields. If there are two or more such instances, a 'space' attribute will be automatically added to all application objects (or more precisely, it will not be removed by the translation process), the best of both worlds. And then we tried to do it, and had to tune the claim down because it doesn't work. This is because the StdObjSpace class has a 'specialized method' -- a different version of the wrap() method is generated for each type it is seen to be called with. This causes problems when there are genuine StdObjSpace instances in the translated pypy because of limitations in our tools. We looked at these limitations and decided that it was time to rewrite the world again, leading in to the next section... SomePBC-refactoring === One of the more unusual annotations produced by PyPy's annotator is that of 'SomePBC', short for 'SomePrebuiltConstant'. This annotation means that a variable contains a reference to some object that existed before the annotation process began (key example: functions). Up until now, the annotation has actually explicitly included which prebuiltconstants a variable might refer to, which seems like the obvious thing to do. Unfortunately, not all things that we'd like to annotate as a prebuiltconstant actually exist as unique CPython objects -- in particular the point of specializing a function is that it becomes many functions in the translated result. Also for 'external', i.e. not written in RPython, functions we want to be able to supply annotations for the input and exit args even if there is no corresponding CPython function at all. The chosen solution is to have the SomePBC annotation refer not to a CPython object but to a more abstracted 'Description' of this object. In some sense, this isn't a very large change but it affects most files in the annotation directory and a fair fraction of those under rpython/ and translator/. We're also cleaning up some other mess while we're there and breaking everything anyway. Draft-Dynamic-... = It's not linked from anywhere on the website (yet...) but the report that will become Deliverable 05.1: http://codespeak.net/pypy/dist/pypy/doc/draft-dynamic-language-translation.html has been reviewed and re-reviewed in the last couple of weeks and is definitely required reading for anyone who has an interest in the more theoretical side of PyPy. Gtbg Sprint in December === Hopefully very soon, we'll announce the next PyPy sprint... stay tuned! Cheers, mwh -- I'm a little confused. That's because you're Australian! So all the blood flows to your head, away from the organ most normal guys think with. -- Mark Hammond Tim Peters, comp.lang.python -- http://mail.python.org/mailman/listinfo/python-list
Re: derived / base class name conflicts
I see what you mean now. It would indeed be enlightening if I wanted to study the internals of Tkinter, and perhaps one day I will. -- http://mail.python.org/mailman/listinfo/python-list
Re: Python obfuscation
Ben Sizer [EMAIL PROTECTED] writes: A recent, heavily publicized case where Sony added copy protection to a product cost them sales, and from what I've heard, even legal fees. I think that's a poor example - the cost hasn't come from the mere act of adding protection, but the method in which that protection operates. That was sort of the point - that the effect on the bottom line of adding copy protection is usually worse than just the cost of the software, and can be much worse. This is a particularly egregious example, but that just makes it an egregious example, not a poor one. I don't think anybody here - certainly not me - is talking about infecting a user's system to protect our property, or taking any other intrusive steps. I'd just like to make it non-trivial to make or use additional copies. I've returned software that wouldn't run from a backup copy. Would I return your software? If yes, have you factored the loss of sales to people like me into your profit calculations? mike -- Mike Meyer [EMAIL PROTECTED] http://www.mired.org/home/mwm/ Independent WWW/Perforce/FreeBSD/Unix consultant, email for more information. -- http://mail.python.org/mailman/listinfo/python-list
Re: LARGE numbers
[EMAIL PROTECTED] wrote: ... Python does support large numbers, but it's not very fast for such large numbers. There is a Python module called GMPY that uses the GMP (Gnu Multiple Precision) library for faster operations on large numbers. As the author of gmpy, I'd like to point out that the speed difference isn't all that large, if all you're doing is ordinary arithmetic -- a few times at most (it can be better if you need some of GMP's functionality which gmpy exposes, such as primality testing). Alex -- http://mail.python.org/mailman/listinfo/python-list
Re: derived / base class name conflicts
Your suggestion ('_name' - implementation, 'name' - API) makes sense as a convention between programmers that know a fair amount about each other's classes before using them. I don't think it is reasonable in general to only subclass from base classes you have studied the full API of, however. The double underscore is a decent solution to my problem. I imagine it must be used a lot in domains where people are making heavy use of third party python code. Chris Marshall -- http://mail.python.org/mailman/listinfo/python-list
Re: Newb ??
Norman Silverstone wrote: did you test the script? here's a simulator: snip Fredrik, thank you very much indeed for taking the trouble to show me the way. I am sorry that I made the comment I did, that will teach me to read more carefully. It is said that there is no fool like an old fool and, as I am approaching 78 years old, I think I qualify. It is also said that you are never too old to learn so I am trying. Now, I put the script you gave into an editor and ran it , (I use Ubuntu Linux by the way). It certainly showed how the computer arrived at the number guessed but guessed the number itself and gave me no chance to say whether high or low. I noticed also that the numbers were all greater than 50 and the loop ran until the number guessed was 100, then it stopped. Perhaps you can point out to me how I should go about debugging. debugging? the script I posted was intended to show you that given an honest human (simulated by the raw_input function), the posted algorithm found the right answer for all values in the given range. (if the algorithm had been broken, the simulator wouldn't have finished). if you want to play yourself, use Steven's original code, and follow the in- structions... /F -- http://mail.python.org/mailman/listinfo/python-list
Re: Import statements for timeit module
ChaosKCW [EMAIL PROTECTED] wrote: So timeit is mostly useless then ? No, it's a precious jewel, but if you want to use it you must allow it to import the code you want it to run. Alex -- http://mail.python.org/mailman/listinfo/python-list
Re: how to start a process and get it's pid?
Gerhard Häring wrote: Yves Glodt wrote: Hello, another question rose for me today... Is there a way to start an external process, in it's own context (not as the exec-() functions do), and get it's pid...? [...] Check out the subprocess module if you're using Python 2.4. Otherwise, you can always use os.spawn*, for example: os.spawnl(os.P_NOWAIT, c:/windows/notepad.exe) 1944 Thanks, in Linux it seems to work. HTH, -- Gerhard -- http://mail.python.org/mailman/listinfo/python-list
Re: derived / base class name conflicts
[EMAIL PROTECTED] wrote: ... I don't think it is reasonable in general to only subclass from base classes you have studied the full API of, however. The double I think you underestimate the level of coupling that inevitably occurs between base and derived classes. In general, such coupling being strong, knowing the full API of the base class is inevitable (although in some special corner-case, when you do only need to add private data, you may, exceptionally, get away with less knowledge). Alex -- http://mail.python.org/mailman/listinfo/python-list
Inserting Records into SQL Server - is there a faster interface than ADO
I have a program that reads records from a binary file and loads them into an MS-SQL Server database. It is using a stored proc, passing the parameters. I am using pywin32 to create a connection object. Once the connection is open I simple pass the SQL formatted commands using cnx.Execute(sqlstring). My test examples; 20,000 records using the ADO connection: 0:04:45:45 If I setup the program to not send the record to the database - so all other variables and processes are constant, it simply just skips the cnx.Execute(sqlstring) step, then it takes only 0:00:25:78 to process thru the same number of trx. Obviously the times in my test are that , but I have a client that woud like to use this and has several million transactions to content with. So my questions is Is there a faster method I can use to connect to the SQL server ? Or does anyone have any optimization tips the can offer ? -- http://mail.python.org/mailman/listinfo/python-list
Re: Is there a built-in method for transforming (1, None, Hello!) to 1, None, Hello!?
Daniel Crespo [EMAIL PROTECTED] wrote: Is there a built-in method for transforming (1,None,Hello!) to 1,None,Hello!? You're mentioning two different literal syntaxes for the same object (a tuple) -- the one with parentheses works everywhere, the other one _almost_ everywhere (not where parentheses would be ambiguous). Not sure, therefore, what you mean by transforming here; if you're dealing with a string for in either case, for example, you could remove the first and last characters by slicing with [1:-1], etc, etc. Perhaps you can clarify exactly what you're asking for! Alex -- http://mail.python.org/mailman/listinfo/python-list
Nufox : Nouveaux examples...
Sur : http://www.salvatore.exolia.net:9090/ (Nécessite Firefox ou Mozilla) Cordialement Salvatore. -- http://mail.python.org/mailman/listinfo/python-list
Re: LARGE numbers
[EMAIL PROTECTED] (Alex Martelli) writes: As the author of gmpy, I'd like to point out that the speed difference isn't all that large, if all you're doing is ordinary arithmetic -- a few times at most (it can be better if you need some of GMP's functionality which gmpy exposes, such as primality testing). For numbers of this size, won't gmpy use FFT-based multiplication? That's potentially orders of magnitude faster than ordinary n**2 multiplication. -- http://mail.python.org/mailman/listinfo/python-list
Re: Python obfuscation
Ben Sizer wrote: Mike Meyer wrote: There are ways to distribute Python modules so that the user can't just open them in a text editor. There are also ways to get cryptographic security for distributed modules. I know distributing as bytecode helps, but I was under the impression that the disassembers worked pretty well. With the dynamic nature of the language I expect that all the variable names are largely left intact. You win some, you lose some, I guess. As for cryptographic security, could you provide a link or reference for this? I am quite interested for obvious reasons. I'd be concerned that there's a weak link in there at the decoding stage, however. I have considered distributing my program as open source but with encrypted data. Unfortunately anyone can just read the source to determine the decryption method and password. Maybe I could put that into an extension module, but that just moves the weak link along the chain. Yes, if you use the same methods you use in C++, it's much harder. But by the same token, if you tried to use the methods you'd use in a Python program in C++, you'd find that the C++ version was much harder. Well, I'm not sure what you mean here. A compiled C++ program is much harder to extract information from than a compiled Python program. That's without applying any special 'methods' on top of the normal distribution process. Of course, as Alex pointed out, all of these are just keeping honest people honest. The crooks have all the advantages in this game, so you really can't expect to win. No, certainly not. But if you can mitigate your losses easily enough - without infringing upon anyone else's rights, I must add - then why not do so. -- Ben Sizer. The economics of software distribution must certainly come into it, doing a cost/benefit analysis of whether it's worth the effort to protect your code from would be crackers. The problem with code protection methodology in general is that once its cracked everyone has access to code for, maybe, all software using the particular protection scheme. the argument that most people buy software rather than get a pirated version depends on the country that they are in e.g. china's piracy problem where shops sell pirated software with no retribution by the state - remember china is about to be the worlds largest economic superpower The above problem illustrate why code needs to be protected in an effective way, by law and code protection schemes With python there is no comfort factor in knowing that your code is being protected, well not than I can see, compared with protection schemes for compiled code which are used by many commercial software companies. Of course, we know that there can never be a 100% way to protect code that some pirate won't overcome but it still stops the casual user or beginner 'crackers' from stealing the code and digging in to your profit margin. btw i'm no expert on copy protection mechanism but the question I raised originally, i believe, is valid and should be discussed http://petantik.blogsome.com - A Lucid Look at Reality -- http://mail.python.org/mailman/listinfo/python-list
Re: Import statements for timeit module
So timeit is mostly useless then ? -- http://mail.python.org/mailman/listinfo/python-list
Re: gmpy 1.01 rc near... anybody wanna test
Include me in your list, please. David From: [EMAIL PROTECTED] (Alex Martelli) To: python-list@python.org Subject: Re: gmpy 1.01 rc near... anybody wanna test Date: Fri, 11 Nov 2005 07:10:01 -0800 MIME-Version: 1.0 Received: from smtp-vbr7.xs4all.nl ([194.109.24.27]) by mc10-f5.hotmail.com with Microsoft SMTPSVC(6.0.3790.211); Fri, 11 Nov 2005 07:15:45 -0800 Received: from bag.python.org (bag.python.org [194.109.207.14])by smtp-vbr7.xs4all.nl (8.13.3/8.13.3) with ESMTP id jABFFh8j021412for [EMAIL PROTECTED]; Fri, 11 Nov 2005 16:15:43 +0100 (CET)(envelope-from [EMAIL PROTECTED]) Received: from bag.python.org (bag [127.0.0.1])by bag.python.org (Postfix) with ESMTP id 9F2C51E4028for [EMAIL PROTECTED]; Fri, 11 Nov 2005 16:15:43 +0100 (CET) X-Message-Info: JGTYoYF78jGfyzkyXoeo8ch9fcaQi0v8snnTTXNK87Q= Path: news.xs4all.nl!newsspool.news.xs4all.nl!transit.news.xs4all.nl!news.tele.dk!news.tele.dk!small.news.tele.dk!newsfeed.icl.net!newsfeed.fjserv.net!nx02.iad01.newshosting.com!newshosting.com!news.glorb.com!border1.nntp.dca.giganews.com!nntp.giganews.com!local01.nntp.dca.giganews.com!nntp.comcast.com!news.comcast.com.POSTED!not-for-mail NNTP-Posting-Date: Fri, 11 Nov 2005 09:09:59 -0600 Newsgroups: comp.lang.python References: [EMAIL PROTECTED][EMAIL PROTECTED][EMAIL PROTECTED][EMAIL PROTECTED][EMAIL PROTECTED][EMAIL PROTECTED][EMAIL PROTECTED][EMAIL PROTECTED][EMAIL PROTECTED][EMAIL PROTECTED] Organization: None in Sight User-Agent: MacSOUP/2.7 (unregistered for 40 days) Lines: 10 NNTP-Posting-Host: 67.174.192.152 X-Trace: sv3-Yf86cpyoEmrCYhyX8lOf5fInoVfid2sHdLjs5wGBsNNfmQ+Y+TUXQ3tQv3nKjaKF2OJSybv1oOjUIdf!CXoxdwIrHFQSorKECjQhg+5m0exXk34yybLQwCedyYraRrLvSb1squreROVZuY6cShDftkfCWDdr!7/VhGxMMM9id X-Complaints-To: [EMAIL PROTECTED] X-DMCA-Complaints-To: [EMAIL PROTECTED] X-Abuse-and-DMCA-Info: Please be sure to forward a copy of ALL headers X-Abuse-and-DMCA-Info: Otherwise we will be unable to process your complaintproperly X-Postfilter: 1.3.32 Xref: news.xs4all.nl comp.lang.python:405582 X-BeenThere: python-list@python.org X-Mailman-Version: 2.1.6 Precedence: list List-Id: General discussion list for the Python programming languagepython-list.python.org List-Unsubscribe: http://mail.python.org/mailman/listinfo/python-list,mailto:[EMAIL PROTECTED] List-Archive: http://mail.python.org/pipermail/python-list List-Post: mailto:python-list@python.org List-Help: mailto:[EMAIL PROTECTED] List-Subscribe: http://mail.python.org/mailman/listinfo/python-list,mailto:[EMAIL PROTECTED] Errors-To: [EMAIL PROTECTED] X-Virus-Scanned: by XS4ALL Virus Scanner Return-Path: [EMAIL PROTECTED] X-OriginalArrivalTime: 11 Nov 2005 15:15:46.0002 (UTC) FILETIME=[CA368B20:01C5E6D2] [EMAIL PROTECTED] wrote: I've created Windows binaries for Python 2.3 and 2.4. It should be compatible with PentiumPro or later processors. Thanks! I hope to package up a release early next week, and to include these. Alex -- http://mail.python.org/mailman/listinfo/python-list -- http://mail.python.org/mailman/listinfo/python-list
Re: Python obfuscation
Ben Sizer [EMAIL PROTECTED] writes: Mike Meyer wrote: There are ways to distribute Python modules so that the user can't just open them in a text editor. There are also ways to get cryptographic security for distributed modules. As for cryptographic security, could you provide a link or reference for this? I am quite interested for obvious reasons. I'd be concerned that there's a weak link in there at the decoding stage, however. How about some ideas: Store your code in a zip file, and add it to the search path. That immediately takes you out of the just open the file with a text editor mode. For cryptographic security, use the ihooks module to make import detect and decode encrypted modules before actually importing them. Or digitally sign the modules, and check the signature at import time. All of these are dead simple in Python. I have considered distributing my program as open source but with encrypted data. Unfortunately anyone can just read the source to determine the decryption method and password. Maybe I could put that into an extension module, but that just moves the weak link along the chain. This isn't aPython problem, it's a problem with what you're doing. Try Alex's solution, and put the data on a network server that goes through whatever authentication you want it to. Yes, if you use the same methods you use in C++, it's much harder. But by the same token, if you tried to use the methods you'd use in a Python program in C++, you'd find that the C++ version was much harder. Well, I'm not sure what you mean here. A compiled C++ program is much harder to extract information from than a compiled Python program. It is? Is the Python disassembler so much advanced over the state of the art of binary disassemblers, then? Or maybe it's the Python decompilers that are so advanced? As far as I can tell, the only real difference between Python bytecodes and x86 (for instance) binaries is that Python bytecodes keep the variable names around so it can do run-timme lookups. That's not that big a difference. As for what I meant - Python has ihooks and imp, that make it simple to customize import behavior. Doing those kinds of things with C++ code requires building the tools to do that kind of thing from scratch. Of course, as Alex pointed out, all of these are just keeping honest people honest. The crooks have all the advantages in this game, so you really can't expect to win. No, certainly not. But if you can mitigate your losses easily enough - without infringing upon anyone else's rights, I must add - then why not do so. Elsewhere in the thread, you said: I'd just like to make it non-trivial to make or use additional copies. How do you do that without infringing my fair use rights? mike -- Mike Meyer [EMAIL PROTECTED] http://www.mired.org/home/mwm/ Independent WWW/Perforce/FreeBSD/Unix consultant, email for more information. -- http://mail.python.org/mailman/listinfo/python-list
Re: Nufox : Nouveaux examples...
Salvatore wrote: Sur : http://www.salvatore.exolia.net:9090/ (Nécessite Firefox ou Mozilla) pardon-my-french Heu, Salvatore, tu te serais pas un peu trompé de ng, là ?-) (x-post et fu2 f.c.l.py) /pardon-my-french -- bruno desthuilliers python -c print '@'.join(['.'.join([w[::-1] for w in p.split('.')]) for p in '[EMAIL PROTECTED]'.split('@')]) -- http://mail.python.org/mailman/listinfo/python-list
Nufox : New examples
On : http://www.salvatore.exolia.net:9090/ (Firefox ou Mozilla) Regards -- http://mail.python.org/mailman/listinfo/python-list
Re: Inserting Records into SQL Server - is there a faster interface than ADO
[EMAIL PROTECTED] napisał(a): Is there a faster method I can use to connect to the SQL server ? Or does anyone have any optimization tips the can offer ? This has nothing with python, but the fastest way to load large amount of data to MS SQL Server database is DTS import from flat file. To spped up the things a bit, do not commit transaction after each row inserted -- commit whole batch. -- Jarek Zgoda http://jpa.berlios.de/ -- http://mail.python.org/mailman/listinfo/python-list
Re: Inserting Records into SQL Server - is there a faster interface than ADO
[EMAIL PROTECTED] I have a program that reads records from a binary file and loads them into an MS-SQL Server database. It is using a stored proc, passing the parameters. [snip] So my questions is Is there a faster method I can use to connect to the SQL server ? Or does anyone have any optimization tips the can offer ? Is there a reason why you need to use a stored procedure? Do you need to process the data in some way in order to maintain referential integrity of the database? If the answer to both these questions is no, then you can use the bcp (Bulk CoPy) utility to transfer data into SQLServer *very* quickly. http://msdn.microsoft.com/library/en-us/coprompt/cp_bcp_61et.asp http://www.sql-server-performance.com/bcp.asp thought-it-was-worth-mentioning-ly y'rs, -- alan kennedy -- email alan: http://xhaus.com/contact/alan -- http://mail.python.org/mailman/listinfo/python-list
Re: Calling values from a webform to Python
mjakowlew wrote: hi, I'm trying to pass some values from a webform into a python script. (snip) Also this is done through Zope if that makes a difference to anyone. Yes, it makes a difference. Zope is a world in itself, and is slighty OT here. Note that there's a Zope mailing-list: http://mail.zope.org/mailman/listinfo/zope (Zope answers sent in private) -- bruno desthuilliers python -c print '@'.join(['.'.join([w[::-1] for w in p.split('.')]) for p in '[EMAIL PROTECTED]'.split('@')]) -- http://mail.python.org/mailman/listinfo/python-list
Re: LARGE numbers
Paul Rubin wrote: [EMAIL PROTECTED] (Alex Martelli) writes: For numbers of this size, won't gmpy use FFT-based multiplication? That's potentially orders of magnitude faster than ordinary n**2 multiplication. But Python is no slouch with its use of Karatsuba multiplication. (in other words, Python is not N**2 for large numbers). --Scott David Daniels [EMAIL PROTECTED] -- http://mail.python.org/mailman/listinfo/python-list
Re: Python-based Document Management System?
If you search for CONTENT management system, there is Plone: A user-friendly and powerful open source Content Management ... http://plone.org/ No, I'm looking for a DMS, not a CMS. My impression from the Plone web page is, that it does not have DMS features. Cheers, WB -- http://mail.python.org/mailman/listinfo/python-list
Re: Python-based Document Management System?
W. Borgert wrote: If you search for CONTENT management system, there is Plone: A user-friendly and powerful open source Content Management ... http://plone.org/ No, I'm looking for a DMS, not a CMS. My impression from the Plone web page is, that it does not have DMS features. maybe this is what you want ? http://bscw.fit.fraunhofer.de/ for a hosted (and very polished) implementation of BSCW, see http://www.projectplace.com/index.html /F -- http://mail.python.org/mailman/listinfo/python-list
Re: Import statements for timeit module
bruno at modulix wrote: ChaosKCW wrote: Hi I was wondering if someone could help with the import statements needed to use the timeit module in the following code. I need to access the cur object. Thanks, ... 'cur' is local to the function, so it's not an attribute of your module, so you can't hope to import it anyway. Although you could change your code as follows: import cx_Oracle import timeit def VerifyTagIntegrity(con, TableOwner): global cur, sql ### cur = con.cursor() sql = 'select (select count(*) from %s.f4111) as F4111_COUNT, (select count(*) from %s.f4111_tag) as TAG_COUNT from dual;' % (TableOwner, TableOwner) print SQL: %s % (sql) XXX timer = timeit.Timer('cur.execute(sql)', 'from __main__ import cur') timer = timeit.Timer('cur.execute(sql)', ### 'from __main__ import cur, sql') ### print timer.timeit() -- -Scott David Daniels [EMAIL PROTECTED] -- http://mail.python.org/mailman/listinfo/python-list
Re: Inserting Records into SQL Server - is there a faster interfacethan ADO
Alan Kennedy wrote: [EMAIL PROTECTED] I have a program that reads records from a binary file and loads them into an MS-SQL Server database. It is using a stored proc, passing the parameters. So my questions is Is there a faster method I can use to connect to the SQL server ? Or does anyone have any optimization tips the can offer ? Is there a reason why you need to use a stored procedure? Do you need to process the data in some way in order to maintain referential integrity of the database? If the answer to both these questions is no, then you can use the bcp (Bulk CoPy) utility to transfer data into SQLServer *very* quickly. http://msdn.microsoft.com/library/en-us/coprompt/cp_bcp_61et.asp http://www.sql-server-performance.com/bcp.asp thought-it-was-worth-mentioning-ly y'rs, If the answer to some of the earlier questions is yes, I have found bcp can be a great tool to fill up a new table of data on its way in. SQL can then move it to where it should really go with nice transaction-protected SQL, proper index-building and so on. After distributing the data, you can drop the table of pending data. I agree this is off-topic, but it is too close to my experience. --Scott David Daniels [EMAIL PROTECTED] -- http://mail.python.org/mailman/listinfo/python-list
Re: Lie Hetland book: Beginning Python..
Magnus Lycka wrote: Vittorio wrote: Using the same symbol for both string substitutions and SQL placeholder such as pysqlite 1 and the MySQL interface does, is not really a bright idea in my opinion. Who thinks this is pretty? sql = SELECT %s FROM %s WHERE %s = %%s cur.execute(sql % (col,table,search_col), (param,)) I think it's less confusing with: sql = SELECT %s FROM %s WHERE %s = ? cur.execute(sql % (col,table,search_col), (param,)) or you could use: sql = SELECT %s FROM %s WHERE %s = %s cur.execute(sql % (col,table,search_col, '%s'), (param,)) which I like better, because you don't have to read extremely carefully for the double-percents. --Scott David Daniels [EMAIL PROTECTED] -- http://mail.python.org/mailman/listinfo/python-list
Re: LARGE numbers
Paul Rubin wrote: [EMAIL PROTECTED] (Alex Martelli) writes: As the author of gmpy, I'd like to point out that the speed difference isn't all that large, if all you're doing is ordinary arithmetic -- a few times at most (it can be better if you need some of GMP's functionality which gmpy exposes, such as primality testing). For numbers of this size, won't gmpy use FFT-based multiplication? That's potentially orders of magnitude faster than ordinary n**2 multiplication. Python's native longs use Karatsuba multiplication with is O(n^1.585). My early version of DecInt (BigDecimal) uses 4-way Toom-Cook multiplication which is O(n^1.4). My development version uses Nussbaumer convolution with is O(n ln(n)). For multiplicaiton of two 1,000,000 digits numbers and conversion to a decimal string, here are some times: GMPY multiplication: 0.96 seconds conversion to string: 712.7 seconds DecInt with GMPY multiplication: 1.33 seconds conversion to string: 0.83 seconds DecInt without GMPY multiplication: 2.84 seconds conversion to string: 0.45 seconds Python (using native long) multiplication: 8.47 seconds conversion to string: a really long time Case -- http://mail.python.org/mailman/listinfo/python-list
Re: LARGE numbers
[EMAIL PROTECTED] writes: Python's native longs use Karatsuba multiplication with is O(n^1.585). My early version of DecInt (BigDecimal) uses 4-way Toom-Cook ... Wow, cool! Thanks. -- http://mail.python.org/mailman/listinfo/python-list
Re: Invoking Python from Python
Cameron Laird wrote: ... I should make that explicit: application developers, you don't have to tell customers everything your programs do. Your obligation is to make 'em meet requirements. If it helps *you* that they do more, so be it. I'd agree with the proviso that you at least inform your customer if you are creating a security hole. -- -Scott David Daniels [EMAIL PROTECTED] -- http://mail.python.org/mailman/listinfo/python-list
Re: Import statements for timeit module
ChaosKCW wrote: So timeit is mostly useless then ? I wouldn't say so. -- bruno desthuilliers python -c print '@'.join(['.'.join([w[::-1] for w in p.split('.')]) for p in '[EMAIL PROTECTED]'.split('@')]) -- http://mail.python.org/mailman/listinfo/python-list
RE: Inserting Records into SQL Server - is there a faster interface thanADO
[EMAIL PROTECTED] I have a program that reads records from a binary file and loads them into an MS-SQL Server database. It is using a stored proc, passing the parameters. I am using pywin32 to create a connection object. Once the connection is open I simple pass the SQL formatted commands using cnx.Execute(sqlstring). So my questions is Is there a faster method I can use to connect to the SQL server ? Or does anyone have any optimization tips the can offer ? If you haven't, try to form your SQL statement so it is parameterised. ie do this: unreal code db = get connection q = db.cursor () list_of_data = [...] for row in list_of_data: q.execute (INSERT INTO table (x, y, z) VALUES (?, ?, ?), row) /unreal code rather than this: unreal code ... for row in list_of_data: q.execute (INSERT INTO table (x, y, z) VALUES (%s, %s, %s) % row) ... /unreal code In theory, that should be more efficient, as the RDBMS can optimise the SQL once. Don't know if it'll really make a difference. TJG This e-mail has been scanned for all viruses by Star. The service is powered by MessageLabs. For more information on a proactive anti-virus service working around the clock, around the globe, visit: http://www.star.net.uk -- http://mail.python.org/mailman/listinfo/python-list
Re: What do you use as symbols for Python ?
Sion Arrowsmith wrote: ... class State: Enum = range(3) OPENED, CLOSED, ERROR = Enum Names = { OPENED: OPENED, CLOSED: CLOSED, ERROR: ERROR } so you can used State.Names[state] to provide something user-readable, ... Or use a function like: def named(value, classes): for klass in classes: for name, val in vars(klass).iteritems(): if val == value: return name raise ValueError, No names for %r in %s (value, classes) Remember CPU time is almost free when it is associated with a line typed to a user paying attention. This way you (A) don't have to repeat the names in the source (a great place for errors), and (B) you can say to yourself, I think this is in one of these several things and go hunting happily. In our example, named(2, [State]) gives us ERROR -- -Scott David Daniels [EMAIL PROTECTED] -- http://mail.python.org/mailman/listinfo/python-list
Re: output buffering
This is something I wrote that might help. http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/299207 -Larry Bates JD wrote: Hello, When reading a large datafile, I want to print a '.' to show the progress. This fails, I get the series of '.'s after the data has been read. Is there a trick to fix this? Thanks -- http://mail.python.org/mailman/listinfo/python-list
Re: testing C code with python
[EMAIL PROTECTED] wrote: A simple question - Is it common/good practice to test C code using Python? I certainly do such testing (hand-wrapped, because it doesn't seem to cost too much time to do so. Usually I develop in Python and accumulate my tests there, then write the C equivalent, and move the tests to the C code. I've done this for programs that were always to have become C programs as well as for those things I intend to wrap as Python modules. -- -Scott David Daniels [EMAIL PROTECTED] -- http://mail.python.org/mailman/listinfo/python-list
PIL- error message- cannot open libtiff.so.3
Okay, so I've been getting this error message when trying to use PIL to open a JPEG, that there isn't a library by the name of libtiff.so.3 . I've been searching the documentation, there isn't any reference to this library. Also, I don't know why it's doing this as I'm trying to open a JPEG, and not a tiff. I tried with a .bmp with similar results. Any ideas? Thanks! -- http://mail.python.org/mailman/listinfo/python-list
Re: testing C code with python
I have recently started using tcl to do this with C++ code and will soon be switching to doing it with python. I think it is a fantastic way to arrange to test C++ and C code. Python makes an excellent test-harness, and writing interfaces for complex units of C++ code to enable them to be tested from Python is an valuable exercise in itself. It forces you to make your code inspectable and brings up all sorts of important design issues that otherwise would never occur to you. It was a lot of work to get started with this but once you put in the initial effort, it gets eaiser to maintiain. And the payoff is that it lets you write regression tests easily so that would be too hard to do otherwise. -- http://mail.python.org/mailman/listinfo/python-list
Dynamically Update Class Definitions?
Is there a way to loop through all instantiated objects and update their classes when a source file changes? I know about Michael Hudson's method (http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/160164), but you have to modify all your classes to subclass AutoReloader. Is there something less intrusive (visitor pattern?) that you can use like update(old_class, new_class) to automagically do the work? Chris -- http://mail.python.org/mailman/listinfo/python-list
Re: LARGE numbers
Well, as I'll be doing lots of multiplication, guess that GMPY is the way to go. I'll use DecInt only for converting to strings if I find anything interesting. This is all just kind of a theoretical aproach, but, it can be lots of fun. Who knows if Python'll help find the largest prime number ever? That would sure be cool. Thanks for all of your help. -- http://mail.python.org/mailman/listinfo/python-list
Re: What do you use as symbols for Python ?
Hi! Never would have thought of this... I mixed this with the class-version and created a new class derived from str for easier printing and added an iterator: --- class Enum: class Type(str): def __init__(self, name): self.__name = name def __str__(self): return self.__name def __init__(self, *keys): self.__keys = [] for key in keys: mytype = self.Type(key) self.__dict__[key] = mytype self.__keys.append(mytype) self.__index = -1 self.__count = len(keys) def __iter__(self): return self def next(self): self.__index = self.__index + 1 if (self.__index = self.__count): self.__index = -1 raise StopIteration return self.__keys[self.__index] friends = Enum(Eric, Kyle, Stan, Kenny) print These are my friends:, print , .join([kid for kid in friends]) for kid in friends: print kid, if kid is friends.Kenny: print dead else: print alive --- Daniel -- http://mail.python.org/mailman/listinfo/python-list
Re: PIL- error message- cannot open libtiff.so.3
Tuvas wrote: Okay, so I've been getting this error message when trying to use PIL to open a JPEG, that there isn't a library by the name of libtiff.so.3 . I've been searching the documentation, there isn't any reference to this library. Also, I don't know why it's doing this as I'm trying to open a JPEG, and not a tiff. I tried with a .bmp with similar results. sounds like someone has linked _imaging.so against the libtiff library. what PIL version is this, and where did you get it ? /F -- http://mail.python.org/mailman/listinfo/python-list