[Patches] [ python-Patches-1368955 ] UUID module for Python

SourceForge.net noreply at sourceforge.net
Tue Mar 7 19:57:05 CET 2006


Patches item #1368955, was opened at 2005-11-29 08:58
Message generated for change (Comment added) made by tmick
You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=305470&aid=1368955&group_id=5470

Please note that this message will contain a full copy of the comment thread,
including the initial issue submission, for this request,
not just the latest update.
Category: Library (Lib)
Group: Python 2.5
Status: Open
Resolution: None
Priority: 5
Submitted By: Ka-Ping Yee (ping)
Assigned to: Nobody/Anonymous (nobody)
Summary: UUID module for Python

Initial Comment:
I recently tossed off a module to generate UUIDs
because i needed one.  Fredrik Lundh suggested i submit
it here for inclusion in the standard library.

See http://zesty.ca/python/uuid.html for a pydoc page.

The module provides a UUID class for representing UUIDs
and can generate version 1, 3, 4, or 5 UUIDs.

One drawback of the implementation is that it currently
runs external programs ("ipconfig" or "ifconfig") to
obtain the Ethernet hardware address used in a version
1 UUID.  The version 1 UUID implementation also does
not use persistent storage to determine the clock
sequence number.


----------------------------------------------------------------------

>Comment By: Trent Mick (tmick)
Date: 2006-03-07 18:57

Message:
Logged In: YES 
user_id=34892

Would require a C extension but perhaps this could be used
to get the MAC address on Windows instead of running and
grepping (unreliable for different locales as Thomas pointed
out) ipconfig.exe:

http://support.microsoft.com/default.aspx?scid=kb;en-us;118623
How To Get the MAC Address for an Ethernet Adapter

----------------------------------------------------------------------

Comment By: Trent Mick (tmick)
Date: 2006-03-07 18:28

Message:
Logged In: YES 
user_id=34892

> use something like webbrowser._iscommand

I have a Python implementation of `which`:
    http://trentm.com/projects/which/
    http://trentm.com/projects/which/which.py

though that is likely overkill for this case.

----------------------------------------------------------------------

Comment By: Trent Mick (tmick)
Date: 2006-03-07 18:20

Message:
Logged In: YES 
user_id=34892

> On Win 2k, "C:\WINNT" is used instead of XP-like 
> "C:\windows".

Perhaps uuid.py could use the "windir" environment variable.
It is defined on (at least) WinXP, Win2k, WinMe that I could
check and points to C:\WINDOWS (on WinXP and WinMe) and
C:\WINNT (on Win2k).

It would first be good to verify if it is defined on WinNT
and Win9x.


----------------------------------------------------------------------

Comment By: Georg Brandl (gbrandl)
Date: 2006-03-07 17:58

Message:
Logged In: YES 
user_id=849994

Instead of hardcoding directories for ipconfig, why not try
spawnp directly on UNIX or use something like
webbrowser._iscommand?

Minor nit: a,b,c = [1,2,3] is better a,b,c=1,2,3


----------------------------------------------------------------------

Comment By: George Yoshida (quiver)
Date: 2006-03-07 16:27

Message:
Logged In: YES 
user_id=671362

One more thing about getaddr function.

On Win 2k, "C:\WINNT" is used instead of XP-
like "C:\windows".
(If I remember correctly, Win 2k is still supportted. Am I 
right?)


----------------------------------------------------------------------

Comment By: Tim Peters (tim_one)
Date: 2006-03-07 15:45

Message:
Logged In: YES 
user_id=31435

On c.l.py, Thomas Heller noted:

"""
I haven't used this module, but:

The wingetaddr() function doesn't work on a german version
of windows (there is no line in the output that starts with
'physical address').

In getaddr(), what if windows is installed on the D: drive?
"""

----------------------------------------------------------------------

Comment By: Ian Bicking (ianbicking)
Date: 2006-03-07 08:06

Message:
Logged In: YES 
user_id=210337

We had some minor problems backporting this to Python 2.3;
this fixed it:

-        uuid = UUID(randrange(1<<32L), randrange(1<<16),
randrange(1<<16),
-                    randrange(1<<8), randrange(1<<8),
randrange(1<<48L))
+        uuid = UUID(randrange(1<<32), randrange(1<<16),
randrange(1<<16),
+                    randrange(1<<8), randrange(1<<8),
randrange(1<<48))

I'm not sure what the most current version looks like, so
this might not be a problem anymore (e.g. if the values get
precalculated)

----------------------------------------------------------------------

Comment By: Michael Ströder (stroeder)
Date: 2005-12-07 23:47

Message:
Logged In: YES 
user_id=64920

I'd like to see some constants pre-calculated for gaining
performance, e.g. during mass data handling. E.g. the MAC
address should only determined once after startup. Or at
least as key-word argument so that the caller can decide to
cache the MAC address.

def uuid1(node=None):
  [..]
  node = node or getaddr()


----------------------------------------------------------------------

Comment By: Ka-Ping Yee (ping)
Date: 2005-11-30 11:54

Message:
Logged In: YES 
user_id=45338

This update fixes the order of the bytes in a hash-generated
UUID.  With this fix, the interpretation of RFC 4122 is that
"octet 0" refers to the MOST significant octet, i.e. the one
printed on the left.

----------------------------------------------------------------------

Comment By: Ka-Ping Yee (ping)
Date: 2005-11-29 09:14

Message:
Logged In: YES 
user_id=45338

This update fixes __repr__ to return a proper expression
and adds the use of os.urandom (if available) to generate
randomness for version 4 UUIDs.

----------------------------------------------------------------------

Comment By: Ka-Ping Yee (ping)
Date: 2005-11-29 09:14

Message:
Logged In: YES 
user_id=45338

This update fixes __repr__ to return a proper expression
and adds the use of os.urandom (if available) to generate
randomness for version 4 UUIDs.

----------------------------------------------------------------------

Comment By: Ka-Ping Yee (ping)
Date: 2005-11-29 09:14

Message:
Logged In: YES 
user_id=45338

This update fixes __repr__ to return a proper expression
and adds the use of os.urandom (if available) to generate
randomness for version 4 UUIDs.

----------------------------------------------------------------------

You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=305470&aid=1368955&group_id=5470


More information about the Patches mailing list