This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

classification
Title: expanding platform module and making it work as it should
Type: enhancement Stage: test needed
Components: Library (Lib) Versions: Python 3.5
process
Status: open Resolution:
Dependencies: Superseder:
Assigned To: lemburg Nosy List: lemburg, nkour, xtreak
Priority: normal Keywords:

Created on 2005-04-10 16:44 by nkour, last changed 2022-04-11 14:56 by admin.

Messages (9)
msg60720 - (view) Author: Nikos Kouremenos (nkour) Date: 2005-04-10 16:44
platform.release() (which is supposed to return the
Name of Windows) also does not work as it should in
some versions of windows I tried (xp pro sp1). Luckily
to print more than Windows (eg. print Windows XP or
Windows 2000 etc) you can have a look at this
http://www.brunningonline.net/simon/blog/archives/001168.html
of Simon Brunning

also  only debian, mdk and redhat is scanned for
GNU/Linux ?? why even bother then?

I think that PSL is good but this module is has hell of
limitations. At least dont' make anyone write this:

import os

distro_info = {
  'Arch Linux': '/etc/arch-release',\
  'Aurox Linux': '/etc/aurox-release',\
  'Conectiva Linux': '/etc/conectiva-release',\
  'Debian GNU/Linux': '/etc/debian_release',\
  'Debian GNU/Linux': '/etc/debian_version',\
  'Fedora Linux': '/etc/fedora-release',\
  'Gentoo Linux': '/etc/gentoo-release',\
  'Mandrake Linux': '/etc/mandrake-release',\
  'Slackware Linux': '/etc/slackware-release',\
  'Slackware Linux': '/etc/slackware-version',\
  'Solaris/Sparc': '/etc/release',\
  'Sun JDS': '/etc/sun-release',\
  'Novell SUSE Linux': '/etc/SuSE-release',\
  'PLD Linux': '/etc/pld-release',\
  'SUSE Linux': '/etc/SuSE-release',\
  'Yellow Dog Linux': '/etc/yellowdog-release',\
  # many distros use the /etc/redhat-release for
compatibility
  # so Redhat is the last
  'Redhat Linux': '/etc/redhat-release'\
}

def get_os_info():
  if os.name =='nt':
    win_version = {
			(1, 4, 0): "95",\
			(1, 4, 10): "98",\
			(1, 4, 90): "ME",\
			(2, 4, 0): "NT",\
			(2, 5, 0): "2000",\
			(2, 5, 1): "XP"
		}[os.sys.getwindowsversion()[3],
os.sys.getwindowsversion()[0],
os.sys.getwindowsversion()[1]]
		return 'Windows' + ' ' + win_version
  elif os.name =='posix':
    executable = 'lsb_release'
    params = ' --id --codename --release --short'
    for path in os.environ['PATH'].split(':'):
      full_path_to_executable = os.path.join(path,
executable)
      if os.path.exists(full_path_to_executable):
        command = executable + params
        child_stdin, child_stdout = os.popen2(command)
        output = child_stdout.readline().strip()
        child_stdout.close()
        child_stdin.close()
        return output
    # lsb_release executable not available, so parse files
    for distro in distro_info:
      path_to_file = distro_info[distro]
      if os.path.exists(path_to_file):
        file = open(path_to_file)
        text = file.read().strip()
        file.close()
        if path_to_file.endswith('version'):
          text = distro + ' ' + text
        return text

print get_os_info()

Thank you
msg60721 - (view) Author: Nikos Kouremenos (nkour) Date: 2005-04-10 16:46
Logged In: YES 
user_id=865368

identation went to take a walk :(
I'm sorry
look here:
http://nkour.blogspot.com/2005/03/python-script-to-detect-gnulinux.html
msg60722 - (view) Author: Nikos Kouremenos (nkour) Date: 2005-04-11 12:38
Logged In: YES 
user_id=865368

ok nevermind the platform.release() part for windows name.
it seems to work now.. :$
msg60723 - (view) Author: Nikos Kouremenos (nkour) Date: 2005-04-12 10:56
Logged In: YES 
user_id=865368

ok I have it again in a friend of mine. he has win xp pro
sp1 French edition
and release() returns ""

the Simon's trick will return to him XP
which is correct!!
msg60724 - (view) Author: Nikos Kouremenos (nkour) Date: 2005-04-13 11:12
Logged In: YES 
user_id=865368

A friend of mine has a french win xp pro. your way says to
him WP

platform.release() returns "" to him
he has used antispam and such "tools" so he must have
accidentaly removed the place where release() seems to look.

So release() doesn't do for windows what you do. I also
noticed that On a windows exploer help --> about will give
Microsoft Windows
5.1 (more info)

it won't try the magic that release() [that fail]

simon's code still works there as charm. so if release()
returns "" I try to do that other code. I would like to see
that included though [or a better code for release() to
detect the correct stuff]
along with the more linux distros and the usage of lsb_release
Comments?
msg99567 - (view) Author: Florent Xicluna (flox) * (Python committer) Date: 2010-02-19 10:28
(removed spam)
msg112438 - (view) Author: Marc-Andre Lemburg (lemburg) * (Python committer) Date: 2010-08-02 09:21
You appear to be requesting two things:

 1. Determine the Windows version by looking at sys.getwindowsversion() rather than relying on the ver command line tool.

 2. Use lsb_release to fetch the release name on Linux systems that support it.

The first is possible, if that API is available. It would still have to fall back to the ver command line tool, since it's not future-proof, i.e. future versions of Windows will not automatically be supported.

The second is wrong, since platform.release() is only a short-cut to the uname() function and this refers to the underlying system rather than the Linux distrubtion.

However, I could add support for lsb_release to the linux_distribution() function.
msg228038 - (view) Author: Mark Lawrence (BreamoreBoy) * Date: 2014-09-30 23:52
I think this should be an enhancement request.  Regardless it goes nowhere without a patch, anybody?
msg326094 - (view) Author: Karthikeyan Singaravelan (xtreak) * (Python committer) Date: 2018-09-22 16:01
Can this be closed as since platform.linx_distribution() was removed with https://bugs.python.org/issue28167 and distro is the recommended package which can be frequently updated.

Thanks
History
Date User Action Args
2022-04-11 14:56:10adminsetgithub: 41840
2018-09-22 16:04:18BreamoreBoysetnosy: - BreamoreBoy
2018-09-22 16:01:01xtreaksetnosy: + xtreak
messages: + msg326094
2014-09-30 23:52:30BreamoreBoysetversions: + Python 3.5, - Python 2.6
nosy: + BreamoreBoy

messages: + msg228038

type: behavior -> enhancement
2010-08-02 09:21:59lemburgsetmessages: + msg112438
2010-08-01 07:39:14georg.brandlsetassignee: lemburg

nosy: + lemburg
2010-02-19 10:29:05floxsetnosy: - flox
2010-02-19 10:28:29floxsetnosy: + flox

messages: + msg99567
title: just look this -> expanding platform module and making it work as it should
2010-02-19 10:27:56floxsetmessages: - msg99561
2010-02-19 10:27:41floxsetnosy: - arcon007
type: crash -> behavior
2010-02-19 08:30:36arcon007settitle: arcon007 -> just look this
nosy: + arcon007

messages: + msg99561

type: behavior -> crash
2010-02-19 08:30:14arcon007settitle: expanding platform module and making it work as it should -> arcon007
2009-02-15 22:16:12ajaksu2setstage: test needed
type: behavior
versions: + Python 2.6
2005-04-10 16:44:28nkourcreate