On Tuesday, November 14, 2017 at 2:53:22 PM UTC-7, Cameron Simpson wrote:
> On 13Nov2017 08:58, bvdp <b...@mellowood.ca> wrote:
> >On Sunday, November 12, 2017 at 7:18:04 PM UTC-7, bvdp wrote:
> >> I'm having a conceptual mind-fart today. I just modified a bunch of co
On Sunday, November 12, 2017 at 7:18:04 PM UTC-7, bvdp wrote:
> I'm having a conceptual mind-fart today. I just modified a bunch of code to
> use "from xx import variable" when variable is a global in xx.py. But, when I
> change/read 'variable' it doesn't appear to change.
I'm having a conceptual mind-fart today. I just modified a bunch of code to use
"from xx import variable" when variable is a global in xx.py. But, when I
change/read 'variable' it doesn't appear to change. I've written a bit of code
to show the problem:
mod1.py
myvar = 99
def setvar(x):
On Wednesday, July 1, 2015 at 8:37:18 PM UTC-7, Dennis Lee Bieber wrote:
On Wed, 1 Jul 2015 18:49:34 -0700 (PDT), bvdp b...@mellowood.ca declaimed
the following:
Thanks guys. Yes, that is exactly what I want. I have a number of places
where a MIDI note value is being generated. MIDI
On Wednesday, July 1, 2015 at 6:27:57 PM UTC-7, rand...@fastmail.us wrote:
On Wed, Jul 1, 2015, at 20:12, bvdp wrote:
Not sure what this is called (and I'm sure it's not normalize). Perhaps
scaling?
Anyway, I need to convert various values ranging from around -50 to 50 to
an 0 to 12
On Wednesday, July 1, 2015 at 7:15:28 PM UTC-7, Steven D'Aprano wrote:
On Thu, 2 Jul 2015 10:12 am, bvdp wrote:
Not sure what this is called (and I'm sure it's not normalize). Perhaps
scaling?
Could be normalising, could be scaling.
Anyway, I need to convert various values ranging
On Wednesday, July 1, 2015 at 7:23:19 PM UTC-7, rand...@fastmail.us wrote:
On Wed, Jul 1, 2015, at 21:49, bvdp wrote:
Interesting that negative values translate properly. That's an
non-intuitive result to me. Guess I should have studied that math stuff
harder way back when
Not sure what this is called (and I'm sure it's not normalize). Perhaps
scaling?
Anyway, I need to convert various values ranging from around -50 to 50 to an 0
to 12 range (this is part of a MIDI music program). I have a number of places
where I do:
while x 0: x += 12
while x = 12: x
Every time I write a program with exception handling (and I suppose that
includes just about every program I write!) I need to scratch my brain when I
create try blocks.
For example, I'm writing a little program do copy specific files to a USB
stick. To do the actual copy I'm using:
try:
IOError and OSError should cover all copy problems, I think.
How do you know that? I can figure it out as well by running the program, but
I'd like to make the determination of what to catch when I'm writing the code.
--
http://mail.python.org/mailman/listinfo/python-list
Here's a bit of a left-field thought: Maybe none of them.
Not far left at all :)
What are you actually doing when you get an exception? Can you
plausibly recover? If not - that is, if you're going to abort the
whole operation anyway - then save yourself the trouble of writing the
Which is preferred in a raise: X or X()? I've seen both. In my specific case
I'm dumping out of a deep loop:
try:
for ...
for ...
for ...
if match:
raise StopInteration()
else ...
except StopInteration:
print found it
--
Thanks all for the comments.
Personally, I used raise X to mean this doesn't need arguments and
should never have any and raise X() to mean this needs arguments but
I'm too lazy to provide them right now. Think of it as a FIXME.
Yes, that makes as much sense as anything else :)
--
On Thursday, January 26, 2012 8:20:24 PM UTC-7, Michael Torrie wrote:
I'm getting mangled by the debian maintainers and friends who seem to
believe that python modules need to go into /usr/lib/python...
I guess the maintainers aren't distinguishing between python apps and
their submodules
On Friday, January 27, 2012 3:15:44 PM UTC-7, John Nagle wrote:
On 1/25/2012 9:26 AM, bvdp wrote:
I'm having a disagreement with a buddy on the packaging of a program
we're doing in Python. It's got a number of modules and large number
of library files. The library stuff is data, not code
On Wednesday, January 25, 2012 8:30:54 PM UTC-7, Michael Torrie wrote:
Unless you are writing a python library that will be used by others, I
don't think that where you put your files has anything to do with being
pythonic or not. Just do what works for your OS.
Yes. I agree and it's nice to
I'm having a disagreement with a buddy on the packaging of a program we're
doing in Python. It's got a number of modules and large number of library
files. The library stuff is data, not code.
I'd like to put the modules in /usr/lib/pythonX.Y/mymodules or wherever
setup.py decides. And the
Right now my program does a search for modules in all the normal places,
which seems to work for windows, mac and linux. Once the modules are found I
just insert that location into sys.path[0].
Which permits the modules to reside anywhere on the HDD. However, I have
feeling that this isn't
I would not put anything in the toplevel Python folder. You need to
place everything under site-packages -- Python27\Lib\site-packages
\PackageName\blah. Of course client created files should be saved to
a more accessible place.
Oh. Just looking at my setup (Ubunutu 11.10) and I see that
Thanks, Peter, for the detailed explanation. I was going to write a
bit of sample/minimal code to demo this, but you nicely beat me to
it!
Here's a minimal script to reproduces the problem:
$ cat tkcallclass.py
import Tkinter as tk
root = tk.Tk()
root.withdraw()
class Classic:
def
On May 20, 4:37 pm, rantingrick rantingr...@gmail.com wrote:
Thats sounds to me a lot like hammering square pegs though round
holes... Perhaps you should explain first in plain english what
Ahh, but what fun would the Internet, Usenet and programming be
without round holes and square pegs.
I
One of the purposes and advantages of Python 3 is having only one class
system. Best to always use new-style classes in Python 2.2+ unless you
understand and need old-style classes (and need should be never for most
people).
Thanks for this. I'll keep it in mind!
One thing I really don't
I've just done an update to my system here to Ubuntu 11.04. Mostly no
problems ... but I have an important (to me) python/TK program that's
stopped working. Well, it works ... mostly.
The python version is 2.7.1+ (no idea what the + means!).
I _think_ I have traced the problem to certain menus
I'm not a tk user, but it sounds like it has regressed from accepting
arbitrary callables as callbacks to accepting functions specifically.
What happens if you replace:
(Favorites, selectFav),
with:
(Favorites, lambda: selectFav()),
Okay, this works. Great and thanks! Seems to me that
Probably the fix is to use a function :)
The docs [1] say that a callback is a function, so I guess that if it
worked before it was just luck. You should bring it up on the tkinter
list and see what they have to say about it, though.
I'm a bit confused about why you would want to use a
On May 20, 4:29 pm, Ian Kelly ian.g.ke...@gmail.com wrote:
On Fri, May 20, 2011 at 5:07 PM, bvdp b...@mellowood.ca wrote:
You mention the tkinter group. Ummm, what group is that???
http://tkinter.unpythonic.net/wiki/TkinterDiscuss
Thanks. New one for me. I'll subscribe and see if they know
On Aug 20, 6:41 pm, Gregory Ewing greg.ew...@canterbury.ac.nz wrote:
bvdp wrote:
The whole problem I was having is that I was trying to tie a small
application (an helper to the main application) to use a bit of the
existing code as a pseudo-library.
This is precisely the reason that it's
On Aug 15, 12:52 pm, John Nagle na...@animats.com wrote:
On 8/14/2010 4:05 PM, bvdp wrote:
Assuming I have a module 'foo.py' with something like this:
def error(s):
print Error, s
sys.exit(1)
def func(s):
... do some processing
... call error() if bad .. go
Assuming I have a module 'foo.py' with something like this:
def error(s):
print Error, s
sys.exit(1)
def func(s):
... do some processing
... call error() if bad .. go to system exit.
... more processing
and then I write a new program, test.py, which:
import foo
def
An exception will walk up the stack, calling any cleaning-up code that needs
to be done (removing object references, executing finally: blocks, exiting
context managers properly. It won't break anything. Don't be afraid of
Python's high-level features!
Okay, I believe you (and the rest of
On Aug 14, 5:23 pm, Steven D'Aprano st...@remove-this-
cybersource.com.au wrote:
This general technique is called monkey patching.
New term for me :)
Now, if an error is encountered myerror() is called. Fine. But execution
resumes in func(). Not exactly what I wanted.
Of course it does.
I'm trying to NOT create a parser to do this and I'm sure that
it's easy if I could only see the light!
Is it possible to take an arbitrary string in the form 1:2, 1,
:-1, etc. and feed it to slice() and then apply the result to an
existing list?
For example, I have a normal python list.
Adam Olsen wrote:
On Feb 23, 7:18 pm, bvdp b...@mellowood.ca wrote:
Gabriel Genellina wrote:
En Mon, 23 Feb 2009 23:31:20 -0200, bvdp b...@mellowood.ca escribió:
Gabriel Genellina wrote:
En Mon, 23 Feb 2009 22:46:34 -0200, bvdp b...@mellowood.ca escribió:
Chris Rebert wrote:
On Mon, Feb 23
When reading lines of data from a file in the from (no quotes!)
foo\x20bar
and I assign to a variable in a line line like:
f = file('infile', 'r')
for a in f:
print a
the string is read in as string with the literal characters 'f', 'o' ...
'x' , '2' ...
as compared to an
MRAB wrote:
bvdp wrote:
When reading lines of data from a file in the from (no quotes!)
foo\x20bar
and I assign to a variable in a line line like:
f = file('infile', 'r')
for a in f:
print a
the string is read in as string with the literal characters 'f', 'o'
... 'x' , '2
Perfect ... thanks.
a = a.decode(string-escape)
Using string-escape does the trick!
Wonderful, this python. And the quick answers on this group.
--
http://mail.python.org/mailman/listinfo/python-list
So, we think something is working and send of a bug fix to our client :)
I'm not sure I understand this at all and wonder if there is bug?
a=c:\\Program\x20Files\\test
a
'c:\\Program Files\\test'
so far, so good.
a.decode(string-escape)
'c:\\Program Files\test'
Umm, not so good? The \\
I'm getting hopelessly lost in a series of \\\ s :)
Let's see if this makes sense:
a='c:\\Program Files\\test'
a.decode('string-escape')
'c:\\Program Files\test'
In this case there are still 2 '\'s before the P; but only 1 before the
't'. Now, when it comes time to open the file
andrew cooke wrote:
do you know that a string with the letter r in front doesn't escape
slashes? it's intended for regular expressions, but would simplify things
for you here too.
just do
a=r'c:\\Program Files\test'
Yes, I knew that. Unfortunately in my program loop I really don't have
Tim Wintle wrote:
On Mon, 2009-02-23 at 17:00 -0700, bvdp wrote:
Let's see if this makes sense:
a='c:\\Program Files\\test'
a.decode('string-escape')
'c:\\Program Files\test'
Hint: try running
print a
and see what's written - I think that the interpreter adds extra \
characters
Chris Rebert wrote:
On Mon, Feb 23, 2009 at 4:26 PM, bvdp b...@mellowood.ca wrote:
[problem with Python and Windows paths using backslashes]
Is there any particular reason you can't just internally use regular
forward-slashes for the paths? They work in Windows from Python in
nearly all cases
Bear in mind that it's the string as it really is that is
being operated on, not the representation of it that you displayed
Yes, that is the confusion ... what is displayed and what's actually in
the string.
I think I understand it all now :)
Thanks.
--
Gabriel Genellina wrote:
En Mon, 23 Feb 2009 22:46:34 -0200, bvdp b...@mellowood.ca escribió:
Chris Rebert wrote:
On Mon, Feb 23, 2009 at 4:26 PM, bvdp b...@mellowood.ca wrote:
[problem with Python and Windows paths using backslashes]
Is there any particular reason you can't just internally
Gabriel Genellina wrote:
En Mon, 23 Feb 2009 23:31:20 -0200, bvdp b...@mellowood.ca escribió:
Gabriel Genellina wrote:
En Mon, 23 Feb 2009 22:46:34 -0200, bvdp b...@mellowood.ca escribió:
Chris Rebert wrote:
On Mon, Feb 23, 2009 at 4:26 PM, bvdp b...@mellowood.ca wrote:
[problem
Mr.SpOOn wrote:
So for example in jazz music it is more common the minor seventh than
the major, so writing just G7 you mean the dominant seventh chord
(with minor seventh) and you have to write just the major one with
maj7.
A minor 7th has a flatted 3rd (ie. C, Eb, G, Bb). Don't confuse your
Mr.SpOOn wrote:
Hi,
I'm writing a method to create musical chords.
This method must follow a specific set of syntax rules. At least, this
is my idea, but maybe there's a better way.
Anyway, in the code I have class Chord which is a set.
The costrunction of a chord is based on a root note and a
John Machin wrote:
On Jun 30, 11:45 am, bvdp [EMAIL PROTECTED] wrote:
John Machin wrote:
snip
Good questions. Short answer ... probably 'cause I've not thought the
problem though completely :)
You are updating with *everything* in the 'more' module, not just the
functions. This includes
Is it possible to do this from a function: import a module and append
the defs in that module to an existing module/namesapce.
So, in my code I have something like:
# main code
import mods
def loadmore(n):
import_module(n, mods)
# end of main
this will permit the addition of the
Terry Reedy wrote:
bvdp wrote:
Is it possible to do this from a function: import a module and append
the defs in that module to an existing module/namesapce.
So, in my code I have something like:
# main code
import mods
def loadmore(n):
import_module(n, mods)
# end of main
Terry Reedy wrote:
snip
Do you mean something like this?
snip
math.__dict__.update(string.__dict__)
dir(math)
['Formatter', 'Template', '_TemplateMetaclass', '__builtins__',
snip
I think this is working First off, 2 module files:
funcs.py
def func1():
print I'm func1
John Machin wrote:
snip
Good questions. Short answer ... probably 'cause I've not thought the
problem though completely :)
You are updating with *everything* in the 'more' module, not just the
functions. This includes such things as __name__, __doc__, __file__.
Could have interesting
Aahz wrote:
In article [EMAIL PROTECTED],
Simon Forman [EMAIL PROTECTED] wrote:
FWIW, I got around to implementing a function that checks if a string
is safe to evaluate (that it consists only of numbers, operators, and
( and )). Here it is. :)
What's safe about 1000 ** 1000?
(Expression error in '%s' % text)
etx = text # for error reporting, bvdp
return _traverse(ast.body)
try:
import _ast
num_eval = safe_eval
except:
num_eval = unsafe_eval
# rest of matt's ast code follows.
Which appears to do the following: if there isn't an _ast module we just
George Sakkis wrote:
On Jun 16, 4:47 pm, bvdp [EMAIL PROTECTED] wrote:
2. I thought I'd be happy with * / + -, etc. Of course now I want to add
a few more funcs like int() and sin(). How would I do that?
For the builtin eval, just populate the globals dict with the names
you want to make
[EMAIL PROTECTED] wrote:
On Jun 17, 8:02 am, bvdp [EMAIL PROTECTED] wrote:
Thanks. That was easy :)
The change to the _ast version is left as an exercise to the reader ;)
And I have absolutely no idea on how to do this. I can't even find the
_ast import file on my system. I'm assuming
Matimus wrote:
On Jun 11, 9:16 pm, George Sakkis [EMAIL PROTECTED] wrote:
On Jun 11, 8:15 pm, bvdp [EMAIL PROTECTED] wrote:
Matimus wrote:
The solution I posted should work and is safe. It may not seem very
readable, but it is using Pythons internal parser to parse the passed
in string
dmitrey wrote:
hi all,
howto split string with both comma and semicolon delimiters?
i.e. (for example) get ['a','b','c'] from string a,b;c
I have tried s.split(',;') but it don't work
Thx, D.
Howabout:
s = s.replace(;, ,)
s = s.split(,)
--
George Sakkis wrote:
You probably missed the point in the posted examples. A malicious user
doesn't need to modify your program code to have access to far more
than you would hope, just devise an appropriate string s and pass it
to your safe eval.
Oppps, I did miss the point. I was assuming
Is there a simple/safe expression evaluator I can use in a python
program. I just want to pass along a string in the form 1 + 44 / 3 or
perhaps 1 + (-4.3*5) and get a numeric result.
I can do this with eval() but I really don't want to subject my users to
the problems with that method.
In
Matimus wrote:
On Jun 11, 1:25 pm, bvdp [EMAIL PROTECTED] wrote:
Is there a simple/safe expression evaluator I can use in a python
program. I just want to pass along a string in the form 1 + 44 / 3 or
perhaps 1 + (-4.3*5) and get a numeric result.
I can do this with eval() but I really don't
Simon Forman wrote:
On Jun 11, 1:25 pm, bvdp [EMAIL PROTECTED] wrote:
Is there a simple/safe expression evaluator I can use in a python
program. I just want to pass along a string in the form 1 + 44 / 3 or
perhaps 1 + (-4.3*5) and get a numeric result.
I can do this with eval() but I really
I'm finding my quest for a safe eval() quite frustrating :)
Any comments on this: Just forget about getting python to do this and,
instead, grab my set of values (from a user supplied text file) and call
an external program like 'bc' to do the dirty work. I think that this
would avoid
Matimus wrote:
The solution I posted should work and is safe. It may not seem very
readable, but it is using Pythons internal parser to parse the passed
in string into an abstract symbol tree (rather than code). Normally
Python would just use the ast internally to create code. Instead I've
My guess would be someone has used the common convention of naming the
get the corresponding localised version of this string from the
application's gettext database function as '_' for convenience.
Funny that this comes up.
I just noticed this in some code I was looking at the other day.
But, I still don't understand how python can access a function in a
file I have NOT included. In this case, to get things to work, I DO
NOT import MMA.grooves but later in the module I access a function
with xx=MMA.grooves.somefunc() and it finds the function, and works
just fine. It
Seehttp://effbot.org/zone/import-confusion.htm
Try to move the circular references later in the code (maybe inside a
function, when it is required), or much better, refactor it so there is no
circularity.
--
Gabriel Genellina
Yes, thanks. I'd read that page before posting. Helpful.
But,
Just as a bit of a followup, I have fixed the problem in my code. I
changed the order of some of the imports in some other modules.
What I was doing was more guesswork and good luck ... but it works. I
really wonder if there is a better way to figure these problems out.
Reading a few of the
I'm going quite nutty here with an import problem. I've got a fairly
complicated program (about 12,000 lines in 34 modules). I just made
some improvements and get the following error:
bob$ mma
Traceback (most recent call last):
File /usr/local/bin/mma, line 55, in module
import MMA.main
68 matches
Mail list logo