Import Upstream version 1.4.0

This commit is contained in:
openKylinBot 2022-05-14 02:46:54 +08:00
commit 5c9aa18b94
148 changed files with 6271 additions and 0 deletions

147
CHANGELOG.md Normal file
View File

@ -0,0 +1,147 @@
## 1.4.0 (2019.2.4)
BACKWARD COMPATIBILITY:
* Prefer the VERSION_CODENAME field of os-release to parsing it from VERSION [[#230](https://github.com/nir0s/distro/pull/230)]
BUG FIXES:
* Return _uname_info from the uname_info() method [[#233](https://github.com/nir0s/distro/pull/233)]
* Fixed CloudLinux id discovery [[#234](https://github.com/nir0s/distro/pull/234)]
* Update Oracle matching [[#224](https://github.com/nir0s/distro/pull/224)]
DOCS:
* Update Fedora package link [[#225](https://github.com/nir0s/distro/pull/225)]
* Distro is the recommended replacement for platform.linux_distribution [[#220](https://github.com/nir0s/distro/pull/220)]
RELEASE:
* Use Markdown for long description in setup.py [[#219](https://github.com/nir0s/distro/pull/219)]
Additionally, The Python2.6 branch was fixed and rebased on top of master. It is now passing all tests. Thanks [abadger](https://github.com/abadger)!
## 1.3.0 (2018.05.09)
ENHANCEMENTS:
* Added support for OpenBSD, FreeBSD, and NetBSD [[#207](https://github.com/nir0s/distro/issues/207)]
TESTS:
* Add test for Kali Linux Rolling [[#214](https://github.com/nir0s/distro/issues/214)]
DOCS:
* Update docs with regards to #207 [[#209](https://github.com/nir0s/distro/issues/209)]
* Add Ansible reference implementation and fix arch-linux link [[#213](https://github.com/nir0s/distro/issues/213)]
* Add facter reference implementation [[#213](https://github.com/nir0s/distro/issues/213)]
## 1.2.0 (2017.12.24)
BACKWARD COMPATIBILITY:
* Don't raise ImportError on non-linux platforms [[#202](https://github.com/nir0s/distro/issues/202)]
ENHANCEMENTS:
* Lazily load the LinuxDistribution data [[#201](https://github.com/nir0s/distro/issues/201)]
BUG FIXES:
* Stdout of shell should be decoded with sys.getfilesystemencoding() [[#203](https://github.com/nir0s/distro/issues/203)]
TESTS:
* Explicitly set Python versions on Travis for flake [[#204](https://github.com/nir0s/distro/issues/204)]
## 1.1.0 (2017.11.28)
BACKWARD COMPATIBILITY:
* Drop python3.3 support [[#199](https://github.com/nir0s/distro/issues/199)]
* Remove Official Python26 support [[#195](https://github.com/nir0s/distro/issues/195)]
TESTS:
* Add MandrivaLinux test case [[#181](https://github.com/nir0s/distro/issues/181)]
* Add test cases for CloudLinux 5, 6, and 7 [[#180](https://github.com/nir0s/distro/issues/180)]
RELEASE:
* Modify MANIFEST to include resources for tests and docs in source tarballs [[97c91a1](97c91a1)]
## 1.0.4 (2017.04.01)
BUG FIXES:
* Guess common *-release files if /etc not readable [[#175](https://github.com/nir0s/distro/issues/175)]
## 1.0.3 (2017.03.19)
ENHANCEMENTS:
* Show keys for empty values when running distro from the CLI [[#160](https://github.com/nir0s/distro/issues/160)]
* Add manual mapping for `redhatenterpriseserver` (previously only redhatenterpriseworkstation was mapped) [[#148](https://github.com/nir0s/distro/issues/148)]
* Race condition in `_parse_distro_release_file` [[#163](https://github.com/nir0s/distro/issues/163)]
TESTS:
* Add RHEL5 test case [[#165](https://github.com/nir0s/distro/issues/165)]
* Add OpenELEC test case [[#166](https://github.com/nir0s/distro/issues/166)]
* Replace nose with pytest [[#158](https://github.com/nir0s/distro/issues/158)]
RELEASE:
* Update classifiers
* Update supported Python versions (with py36)
## 1.0.2 (2017.01.12)
TESTS:
* Test on py33, py36 and py3 based flake8
RELEASE:
* Add MANIFEST file (which also includes the LICENSE as part of Issue [[#139](https://github.com/nir0s/distro/issues/139)])
* Default to releasing using Twine [[#121](https://github.com/nir0s/distro/issues/121)]
* Add setup.cfg file [[#145](https://github.com/nir0s/distro/issues/145)]
* Update license in setup.py
## 1.0.1 (2016-11-03)
ENHANCEMENTS:
* Prettify distro -j's output and add more elaborate docs [[#147](https://github.com/nir0s/distro/issues/147)]
* Decode output of `lsb_release` as utf-8 [[#144](https://github.com/nir0s/distro/issues/144)]
* Logger now uses `message %s, string` form to not-evaulate log messages if unnecessary [[#145](https://github.com/nir0s/distro/issues/145)]
TESTS:
* Increase code-coverage [[#146](https://github.com/nir0s/distro/issues/146)]
* Fix landscape code-quality warnings [[#145](https://github.com/nir0s/distro/issues/145)]
RELEASE:
* Add CONTRIBUTING.md
## 1.0.0 (2016-09-25)
BACKWARD COMPATIBILITY:
* raise exception when importing on non-supported platforms [[#129](https://github.com/nir0s/distro/issues/129)]
ENHANCEMENTS:
* Use `bytes` invariantly [[#135](https://github.com/nir0s/distro/issues/135)]
* Some minor code adjustments plus a CLI [[#134](https://github.com/nir0s/distro/issues/134)]
* Emit stderr if `lsb_release` fails
BUG FIXES:
* Fix some encoding related issues
TESTS:
* Add many test cases (e.g. Raspbian 8, CoreOS, Amazon Linux, Scientific Linux, Gentoo, Manjaro)
* Completely redo the testing framework to make it easier to add tests
* Test on pypy
RELEASE:
* Remove six as a dependency
## 0.6.0 (2016-04-21)
This is the first release of `distro`.
All previous work was done on `ld` and therefore unmentioned here. See the release log in GitHub if you want the entire log.
BACKWARD COMPATIBILITY:
* No longer a package. constants.py has been removed and distro is now a single module
ENHANCEMENTS:
* distro.info() now receives best and pretty flags
* Removed get_ prefix from get_*_release_attr functions
* Codename is now passed in distro.info()
TESTS:
* Added Linux Mint test case
* Now testing on Python 3.4
DOCS:
* Documentation fixes

54
CONTRIBUTING.md Normal file
View File

@ -0,0 +1,54 @@
# General
* Contributing to distro identification currently doesn't have any specific standards and rather depends on the specific implementation.
* A 100% coverage is expected for each PR unless explicitly authorized by the reviewer.
* Please try to maintain maximum code-health (via landscape.io).
# Contributing distro specific tests
Distro's tests are implemented via a standardized framework under `tests/test_distro.py`
For each distribution, tests should be added in the relevant class according to which distribution file(s) exists on it, so, for example, tests should be added under `TestOSRelease` where `/etc/os-release` is available.
The tests must be self-contained, meaning that the release files for the distribution should be maintained in the repository under `tests/resources/distros/distribution_name+distribution_version`.
A tests method would like somewhat like this:
```python
def test_centos7_os_release(self):
desired_outcome = {
'id': 'centos',
'name': 'CentOS Linux',
'pretty_name': 'CentOS Linux 7 (Core)',
'version': '7',
'pretty_version': '7 (Core)',
'best_version': '7',
'like': 'rhel fedora',
'codename': 'Core'
}
self._test_outcome(desired_outcome)
```
The framework will automatically try to pick up the relevant file according to the method's name (`centos7` meaning the folder should be named `centos7` as well) and compare the `desired_outcome` with the parsed files found under the test dir.
The exception to the rule is under the `TestDistroRelease` test class which should look somewhat like this:
```python
def test_centos5_dist_release(self):
desired_outcome = {
'id': 'centos',
'name': 'CentOS',
'pretty_name': 'CentOS 5.11 (Final)',
'version': '5.11',
'pretty_version': '5.11 (Final)',
'best_version': '5.11',
'codename': 'Final',
'major_version': '5',
'minor_version': '11'
}
self._test_outcome(desired_outcome, 'centos', '5')
```
Where the name of the method is not indicative of the lookup folder but rather tha two last arguments in `_test_outcome`.
A test case is mandatory under `TestOverall` for a PR to be complete.

13
CONTRIBUTORS.md Normal file
View File

@ -0,0 +1,13 @@
Thanks!
* https://github.com/andy-maier
* https://github.com/SethMichaelLarson
* https://github.com/asottile
* https://github.com/MartijnBraam
* https://github.com/funkyfuture
* https://github.com/adamjstewart
* https://github.com/xavfernandez
* https://github.com/xsuchy
* https://github.com/marcoceppi
* https://github.com/tgamblin
* https://github.com/sebix

202
LICENSE Normal file
View File

@ -0,0 +1,202 @@
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "{}"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright {yyyy} {name of copyright owner}
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

12
MANIFEST.in Normal file
View File

@ -0,0 +1,12 @@
include *.md
include *.py
include *.txt
include LICENSE
include CHANGES
include Makefile
graft tests
include docs/*
global-exclude *.py[co]

145
Makefile Normal file
View File

@ -0,0 +1,145 @@
# Copyright 2015,2016 Nir Cohen
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Name of this package
PACKAGENAME = distro
# Additional options for Sphinx
SPHINXOPTS = -v
# Paper format for the Sphinx LaTex/PDF builder.
# Valid values: a4, letter
SPHINXPAPER = a4
# Sphinx build subtree.
SPHINXBUILDDIR = build_docs
# Directory where conf.py is located
SPHINXCONFDIR = docs
# Directory where input files for Sphinx are located
SPHINXSOURCEDIR = .
# Sphinx build command (Use 'pip install sphinx' to get it)
SPHINXBUILD = sphinx-build
# Internal variables for Sphinx
SPHINXPAPEROPT_a4 = -D latex_paper_size=a4
SPHINXPAPEROPT_letter = -D latex_paper_size=letter
ALLSPHINXOPTS = -d $(SPHINXBUILDDIR)/doctrees -c $(SPHINXCONFDIR) \
$(SPHINXPAPEROPT_$(SPHINXPAPER)) $(SPHINXOPTS) \
$(SPHINXSOURCEDIR)
.PHONY: help
help:
@echo 'Please use "make <target>" where <target> is one of'
@echo " release - build a release and publish it"
@echo " dev - prepare a development environment (includes tests)"
@echo " instdev - prepare a development environment (no tests)"
@echo " install - install into current Python environment"
@echo " html - generate docs as standalone HTML files in: $(SPHINXBUILDDIR)/html"
@echo " pdf - generate docs as PDF (via LaTeX) for paper format: $(SPHINXPAPER) in: $(SPHINXBUILDDIR)/pdf"
@echo " man - generate docs as manual pages in: $(SPHINXBUILDDIR)/man"
@echo " docchanges - generate an overview of all changed/added/deprecated items in docs"
@echo " doclinkcheck - check all external links in docs for integrity"
@echo " doccoverage - run coverage check of the documentation"
@echo " clobber - remove any build products"
@echo " build - build the package"
@echo " test - test from this directory using tox, including test coverage"
@echo " publish - upload to PyPI"
@echo " clean - remove any temporary build products"
@echo " dry-run - perform all action required for a release without actually releasing"
.PHONY: release
release: test clean build publish
@echo "$@ done."
.PHONY: test
test:
pip install 'tox>=1.7.2'
tox
@echo "$@ done."
.PHONY: clean
clean:
rm -rf dist build $(PACKAGENAME).egg-info
@echo "$@ done."
.PHONY: build
build:
python setup.py sdist bdist_wheel
.PHONY: publish
publish:
twine upload -r pypi dist/$(PACKAGENAME)-*
@echo "$@ done."
.PHONY: dry-run
dry-run: test clean build
@echo "$@ done."
.PHONY: dev
dev: instdev test
@echo "$@ done."
.PHONY: instdev
instdev:
pip install -r dev-requirements.txt
python setup.py develop
@echo "$@ done."
.PHONY: install
install:
python setup.py install
@echo "$@ done."
.PHONY: html
html:
$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(SPHINXBUILDDIR)/html
@echo "$@ done; the HTML pages are in $(SPHINXBUILDDIR)/html."
.PHONY: pdf
pdf:
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(SPHINXBUILDDIR)/pdf
@echo "Running LaTeX files through pdflatex..."
$(MAKE) -C $(SPHINXBUILDDIR)/pdf all-pdf
@echo "$@ done; the PDF files are in $(SPHINXBUILDDIR)/pdf."
.PHONY: man
man:
$(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(SPHINXBUILDDIR)/man
@echo "$@ done; the manual pages are in $(SPHINXBUILDDIR)/man."
.PHONY: docchanges
docchanges:
$(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(SPHINXBUILDDIR)/changes
@echo
@echo "$@ done; the doc changes overview file is in $(SPHINXBUILDDIR)/changes."
.PHONY: doclinkcheck
doclinkcheck:
$(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(SPHINXBUILDDIR)/linkcheck
@echo
@echo "$@ done; look for any errors in the above output " \
"or in $(SPHINXBUILDDIR)/linkcheck/output.txt."
.PHONY: doccoverage
doccoverage:
$(SPHINXBUILD) -b coverage $(ALLSPHINXOPTS) $(SPHINXBUILDDIR)/coverage
@echo "$@ done; the doc coverage results are in $(SPHINXBUILDDIR)/coverage/python.txt."
.PHONY: clobber
clobber: clean
rm -rf $(SPHINXBUILDDIR)
@echo "$@ done."

168
PKG-INFO Normal file
View File

@ -0,0 +1,168 @@
Metadata-Version: 2.1
Name: distro
Version: 1.4.0
Summary: Distro - an OS platform information API
Home-page: https://github.com/nir0s/distro
Author: Nir Cohen
Author-email: nir36g@gmail.com
License: Apache License, Version 2.0
Description: Distro - an OS platform information API
=======================================
[![Build Status](https://travis-ci.org/nir0s/distro.svg?branch=master)](https://travis-ci.org/nir0s/distro)
[![Build status](https://ci.appveyor.com/api/projects/status/e812qjk1gf0f74r5/branch/master?svg=true)](https://ci.appveyor.com/project/nir0s/distro/branch/master)
[![PyPI version](http://img.shields.io/pypi/v/distro.svg)](https://pypi.python.org/pypi/distro)
[![Supported Python Versions](https://img.shields.io/pypi/pyversions/distro.svg)](https://img.shields.io/pypi/pyversions/distro.svg)
[![Requirements Status](https://requires.io/github/nir0s/distro/requirements.svg?branch=master)](https://requires.io/github/nir0s/distro/requirements/?branch=master)
[![Code Coverage](https://codecov.io/github/nir0s/distro/coverage.svg?branch=master)](https://codecov.io/github/nir0s/distro?branch=master)
[![Code Quality](https://landscape.io/github/nir0s/distro/master/landscape.svg?style=flat)](https://landscape.io/github/nir0s/distro)
[![Is Wheel](https://img.shields.io/pypi/wheel/distro.svg?style=flat)](https://pypi.python.org/pypi/distro)
[![Latest Github Release](https://readthedocs.org/projects/distro/badge/?version=stable)](http://distro.readthedocs.io/en/latest/)
[![Join the chat at https://gitter.im/nir0s/distro](https://badges.gitter.im/nir0s/distro.svg)](https://gitter.im/nir0s/distro?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
`distro` provides information about the
OS distribution it runs on, such as a reliable machine-readable ID, or
version information.
It is the recommended replacement for Python's original
[`platform.linux_distribution`](https://docs.python.org/3.7/library/platform.html#platform.linux_distribution)
function (which will be removed in Python 3.8).
It also provides much more functionality which isn't necessarily Python bound,
like a command-line interface.
Distro currently supports Linux and BSD based systems but [Windows and OS X support](https://github.com/nir0s/distro/issues/177) is also planned.
For Python 2.6 support, see https://github.com/nir0s/distro/tree/python2.6-support
## Installation
Installation of the latest released version from PyPI:
```shell
pip install distro
```
Installation of the latest development version:
```shell
pip install https://github.com/nir0s/distro/archive/master.tar.gz
```
## Usage
```bash
$ distro
Name: Antergos Linux
Version: 2015.10 (ISO-Rolling)
Codename: ISO-Rolling
$ distro -j
{
"codename": "ISO-Rolling",
"id": "antergos",
"like": "arch",
"version": "16.9",
"version_parts": {
"build_number": "",
"major": "16",
"minor": "9"
}
}
$ python
>>> import distro
>>> distro.linux_distribution(full_distribution_name=False)
('centos', '7.1.1503', 'Core')
```
## Documentation
On top of the aforementioned API, several more functions are available. For a complete description of the
API, see the [latest API documentation](http://distro.readthedocs.org/en/latest/).
## Background
An alternative implementation became necessary because Python 3.5 deprecated
this function, and Python 3.8 will remove it altogether.
Its predecessor function `platform.dist` was already deprecated since
Python 2.6 and will also be removed in Python 3.8.
Still, there are many cases in which access to that information is needed.
See [Python issue 1322](https://bugs.python.org/issue1322) for more
information.
The `distro` package implements a robust and inclusive way of retrieving the
information about a distribution based on new standards and old methods,
namely from these data sources (from high to low precedence):
* The os-release file `/etc/os-release`, if present.
* The output of the `lsb_release` command, if available.
* The distro release file (`/etc/*(-|_)(release|version)`), if present.
* The `uname` command for BSD based distrubtions.
## Python and Distribution Support
`distro` is supported and tested on Python 2.7, 3.4+ and PyPy and on
any distribution that provides one or more of the data sources
covered.
This package is tested with test data that mimics the exact behavior of the data sources of [a number of Linux distributions](https://github.com/nir0s/distro/tree/master/tests/resources/distros).
## Testing
```shell
git clone git@github.com:nir0s/distro.git
cd distro
pip install tox
tox
```
## Contributions
Pull requests are always welcome to deal with specific distributions or just
for general merriment.
See [CONTRIBUTIONS](https://github.com/nir0s/distro/blob/master/CONTRIBUTING.md) for contribution info.
Reference implementations for supporting additional distributions and file
formats can be found here:
* https://github.com/saltstack/salt/blob/develop/salt/grains/core.py#L1172
* https://github.com/chef/ohai/blob/master/lib/ohai/plugins/linux/platform.rb
* https://github.com/ansible/ansible/blob/devel/lib/ansible/module_utils/facts/system/distribution.py
* https://github.com/puppetlabs/facter/blob/master/lib/src/facts/linux/os_linux.cc
## Package manager distributions
* https://src.fedoraproject.org/rpms/python-distro
* https://www.archlinux.org/packages/community/any/python-distro/
* https://launchpad.net/ubuntu/+source/python-distro
* https://packages.debian.org/sid/python-distro
* https://packages.gentoo.org/packages/dev-python/distro
* https://pkgs.org/download/python2-distro
* https://slackbuilds.org/repository/14.2/python/python-distro/
Platform: All
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: System Administrators
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Operating System :: POSIX :: Linux
Classifier: Operating System :: POSIX :: BSD
Classifier: Operating System :: POSIX :: BSD :: FreeBSD
Classifier: Operating System :: POSIX :: BSD :: NetBSD
Classifier: Operating System :: POSIX :: BSD :: OpenBSD
Classifier: Programming Language :: Python :: 2
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.4
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Topic :: System :: Operating System
Description-Content-Type: text/markdown

140
README.md Normal file
View File

@ -0,0 +1,140 @@
Distro - an OS platform information API
=======================================
[![Build Status](https://travis-ci.org/nir0s/distro.svg?branch=master)](https://travis-ci.org/nir0s/distro)
[![Build status](https://ci.appveyor.com/api/projects/status/e812qjk1gf0f74r5/branch/master?svg=true)](https://ci.appveyor.com/project/nir0s/distro/branch/master)
[![PyPI version](http://img.shields.io/pypi/v/distro.svg)](https://pypi.python.org/pypi/distro)
[![Supported Python Versions](https://img.shields.io/pypi/pyversions/distro.svg)](https://img.shields.io/pypi/pyversions/distro.svg)
[![Requirements Status](https://requires.io/github/nir0s/distro/requirements.svg?branch=master)](https://requires.io/github/nir0s/distro/requirements/?branch=master)
[![Code Coverage](https://codecov.io/github/nir0s/distro/coverage.svg?branch=master)](https://codecov.io/github/nir0s/distro?branch=master)
[![Code Quality](https://landscape.io/github/nir0s/distro/master/landscape.svg?style=flat)](https://landscape.io/github/nir0s/distro)
[![Is Wheel](https://img.shields.io/pypi/wheel/distro.svg?style=flat)](https://pypi.python.org/pypi/distro)
[![Latest Github Release](https://readthedocs.org/projects/distro/badge/?version=stable)](http://distro.readthedocs.io/en/latest/)
[![Join the chat at https://gitter.im/nir0s/distro](https://badges.gitter.im/nir0s/distro.svg)](https://gitter.im/nir0s/distro?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
`distro` provides information about the
OS distribution it runs on, such as a reliable machine-readable ID, or
version information.
It is the recommended replacement for Python's original
[`platform.linux_distribution`](https://docs.python.org/3.7/library/platform.html#platform.linux_distribution)
function (which will be removed in Python 3.8).
It also provides much more functionality which isn't necessarily Python bound,
like a command-line interface.
Distro currently supports Linux and BSD based systems but [Windows and OS X support](https://github.com/nir0s/distro/issues/177) is also planned.
For Python 2.6 support, see https://github.com/nir0s/distro/tree/python2.6-support
## Installation
Installation of the latest released version from PyPI:
```shell
pip install distro
```
Installation of the latest development version:
```shell
pip install https://github.com/nir0s/distro/archive/master.tar.gz
```
## Usage
```bash
$ distro
Name: Antergos Linux
Version: 2015.10 (ISO-Rolling)
Codename: ISO-Rolling
$ distro -j
{
"codename": "ISO-Rolling",
"id": "antergos",
"like": "arch",
"version": "16.9",
"version_parts": {
"build_number": "",
"major": "16",
"minor": "9"
}
}
$ python
>>> import distro
>>> distro.linux_distribution(full_distribution_name=False)
('centos', '7.1.1503', 'Core')
```
## Documentation
On top of the aforementioned API, several more functions are available. For a complete description of the
API, see the [latest API documentation](http://distro.readthedocs.org/en/latest/).
## Background
An alternative implementation became necessary because Python 3.5 deprecated
this function, and Python 3.8 will remove it altogether.
Its predecessor function `platform.dist` was already deprecated since
Python 2.6 and will also be removed in Python 3.8.
Still, there are many cases in which access to that information is needed.
See [Python issue 1322](https://bugs.python.org/issue1322) for more
information.
The `distro` package implements a robust and inclusive way of retrieving the
information about a distribution based on new standards and old methods,
namely from these data sources (from high to low precedence):
* The os-release file `/etc/os-release`, if present.
* The output of the `lsb_release` command, if available.
* The distro release file (`/etc/*(-|_)(release|version)`), if present.
* The `uname` command for BSD based distrubtions.
## Python and Distribution Support
`distro` is supported and tested on Python 2.7, 3.4+ and PyPy and on
any distribution that provides one or more of the data sources
covered.
This package is tested with test data that mimics the exact behavior of the data sources of [a number of Linux distributions](https://github.com/nir0s/distro/tree/master/tests/resources/distros).
## Testing
```shell
git clone git@github.com:nir0s/distro.git
cd distro
pip install tox
tox
```
## Contributions
Pull requests are always welcome to deal with specific distributions or just
for general merriment.
See [CONTRIBUTIONS](https://github.com/nir0s/distro/blob/master/CONTRIBUTING.md) for contribution info.
Reference implementations for supporting additional distributions and file
formats can be found here:
* https://github.com/saltstack/salt/blob/develop/salt/grains/core.py#L1172
* https://github.com/chef/ohai/blob/master/lib/ohai/plugins/linux/platform.rb
* https://github.com/ansible/ansible/blob/devel/lib/ansible/module_utils/facts/system/distribution.py
* https://github.com/puppetlabs/facter/blob/master/lib/src/facts/linux/os_linux.cc
## Package manager distributions
* https://src.fedoraproject.org/rpms/python-distro
* https://www.archlinux.org/packages/community/any/python-distro/
* https://launchpad.net/ubuntu/+source/python-distro
* https://packages.debian.org/sid/python-distro
* https://packages.gentoo.org/packages/dev-python/distro
* https://pkgs.org/download/python2-distro
* https://slackbuilds.org/repository/14.2/python/python-distro/

3
dev-requirements.txt Normal file
View File

@ -0,0 +1,3 @@
pytest
pytest-cov
sphinx>=1.1

168
distro.egg-info/PKG-INFO Normal file
View File

@ -0,0 +1,168 @@
Metadata-Version: 2.1
Name: distro
Version: 1.4.0
Summary: Distro - an OS platform information API
Home-page: https://github.com/nir0s/distro
Author: Nir Cohen
Author-email: nir36g@gmail.com
License: Apache License, Version 2.0
Description: Distro - an OS platform information API
=======================================
[![Build Status](https://travis-ci.org/nir0s/distro.svg?branch=master)](https://travis-ci.org/nir0s/distro)
[![Build status](https://ci.appveyor.com/api/projects/status/e812qjk1gf0f74r5/branch/master?svg=true)](https://ci.appveyor.com/project/nir0s/distro/branch/master)
[![PyPI version](http://img.shields.io/pypi/v/distro.svg)](https://pypi.python.org/pypi/distro)
[![Supported Python Versions](https://img.shields.io/pypi/pyversions/distro.svg)](https://img.shields.io/pypi/pyversions/distro.svg)
[![Requirements Status](https://requires.io/github/nir0s/distro/requirements.svg?branch=master)](https://requires.io/github/nir0s/distro/requirements/?branch=master)
[![Code Coverage](https://codecov.io/github/nir0s/distro/coverage.svg?branch=master)](https://codecov.io/github/nir0s/distro?branch=master)
[![Code Quality](https://landscape.io/github/nir0s/distro/master/landscape.svg?style=flat)](https://landscape.io/github/nir0s/distro)
[![Is Wheel](https://img.shields.io/pypi/wheel/distro.svg?style=flat)](https://pypi.python.org/pypi/distro)
[![Latest Github Release](https://readthedocs.org/projects/distro/badge/?version=stable)](http://distro.readthedocs.io/en/latest/)
[![Join the chat at https://gitter.im/nir0s/distro](https://badges.gitter.im/nir0s/distro.svg)](https://gitter.im/nir0s/distro?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
`distro` provides information about the
OS distribution it runs on, such as a reliable machine-readable ID, or
version information.
It is the recommended replacement for Python's original
[`platform.linux_distribution`](https://docs.python.org/3.7/library/platform.html#platform.linux_distribution)
function (which will be removed in Python 3.8).
It also provides much more functionality which isn't necessarily Python bound,
like a command-line interface.
Distro currently supports Linux and BSD based systems but [Windows and OS X support](https://github.com/nir0s/distro/issues/177) is also planned.
For Python 2.6 support, see https://github.com/nir0s/distro/tree/python2.6-support
## Installation
Installation of the latest released version from PyPI:
```shell
pip install distro
```
Installation of the latest development version:
```shell
pip install https://github.com/nir0s/distro/archive/master.tar.gz
```
## Usage
```bash
$ distro
Name: Antergos Linux
Version: 2015.10 (ISO-Rolling)
Codename: ISO-Rolling
$ distro -j
{
"codename": "ISO-Rolling",
"id": "antergos",
"like": "arch",
"version": "16.9",
"version_parts": {
"build_number": "",
"major": "16",
"minor": "9"
}
}
$ python
>>> import distro
>>> distro.linux_distribution(full_distribution_name=False)
('centos', '7.1.1503', 'Core')
```
## Documentation
On top of the aforementioned API, several more functions are available. For a complete description of the
API, see the [latest API documentation](http://distro.readthedocs.org/en/latest/).
## Background
An alternative implementation became necessary because Python 3.5 deprecated
this function, and Python 3.8 will remove it altogether.
Its predecessor function `platform.dist` was already deprecated since
Python 2.6 and will also be removed in Python 3.8.
Still, there are many cases in which access to that information is needed.
See [Python issue 1322](https://bugs.python.org/issue1322) for more
information.
The `distro` package implements a robust and inclusive way of retrieving the
information about a distribution based on new standards and old methods,
namely from these data sources (from high to low precedence):
* The os-release file `/etc/os-release`, if present.
* The output of the `lsb_release` command, if available.
* The distro release file (`/etc/*(-|_)(release|version)`), if present.
* The `uname` command for BSD based distrubtions.
## Python and Distribution Support
`distro` is supported and tested on Python 2.7, 3.4+ and PyPy and on
any distribution that provides one or more of the data sources
covered.
This package is tested with test data that mimics the exact behavior of the data sources of [a number of Linux distributions](https://github.com/nir0s/distro/tree/master/tests/resources/distros).
## Testing
```shell
git clone git@github.com:nir0s/distro.git
cd distro
pip install tox
tox
```
## Contributions
Pull requests are always welcome to deal with specific distributions or just
for general merriment.
See [CONTRIBUTIONS](https://github.com/nir0s/distro/blob/master/CONTRIBUTING.md) for contribution info.
Reference implementations for supporting additional distributions and file
formats can be found here:
* https://github.com/saltstack/salt/blob/develop/salt/grains/core.py#L1172
* https://github.com/chef/ohai/blob/master/lib/ohai/plugins/linux/platform.rb
* https://github.com/ansible/ansible/blob/devel/lib/ansible/module_utils/facts/system/distribution.py
* https://github.com/puppetlabs/facter/blob/master/lib/src/facts/linux/os_linux.cc
## Package manager distributions
* https://src.fedoraproject.org/rpms/python-distro
* https://www.archlinux.org/packages/community/any/python-distro/
* https://launchpad.net/ubuntu/+source/python-distro
* https://packages.debian.org/sid/python-distro
* https://packages.gentoo.org/packages/dev-python/distro
* https://pkgs.org/download/python2-distro
* https://slackbuilds.org/repository/14.2/python/python-distro/
Platform: All
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: System Administrators
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Operating System :: POSIX :: Linux
Classifier: Operating System :: POSIX :: BSD
Classifier: Operating System :: POSIX :: BSD :: FreeBSD
Classifier: Operating System :: POSIX :: BSD :: NetBSD
Classifier: Operating System :: POSIX :: BSD :: OpenBSD
Classifier: Programming Language :: Python :: 2
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.4
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Topic :: System :: Operating System
Description-Content-Type: text/markdown

147
distro.egg-info/SOURCES.txt Normal file
View File

@ -0,0 +1,147 @@
CHANGELOG.md
CONTRIBUTING.md
CONTRIBUTORS.md
LICENSE
MANIFEST.in
Makefile
README.md
dev-requirements.txt
distro.py
query_local_distro.py
setup.cfg
setup.py
distro.egg-info/PKG-INFO
distro.egg-info/SOURCES.txt
distro.egg-info/dependency_links.txt
distro.egg-info/entry_points.txt
distro.egg-info/top_level.txt
docs/conf.py
docs/index.rst
tests/__init__.py
tests/test_distro.py
tests/resources/distros/__shared__/bin/lsb_release
tests/resources/distros/amazon2014/etc/system-release
tests/resources/distros/amazon2016/etc/os-release
tests/resources/distros/amazon2016/etc/system-release
tests/resources/distros/arch/etc/arch-release
tests/resources/distros/arch/etc/os-release
tests/resources/distros/arch/usr/lib/os-release
tests/resources/distros/centos5/etc/centos-release
tests/resources/distros/centos5/etc/redhat-release
tests/resources/distros/centos5/etc/system-release
tests/resources/distros/centos7/etc/centos-release
tests/resources/distros/centos7/etc/os-release
tests/resources/distros/centos7/etc/redhat-release
tests/resources/distros/centos7/etc/system-release
tests/resources/distros/cloudlinux5/etc/redhat-release
tests/resources/distros/cloudlinux6/etc/redhat-release
tests/resources/distros/cloudlinux7/etc/os-release
tests/resources/distros/cloudlinux7/etc/redhat-release
tests/resources/distros/coreos/etc/oem-release
tests/resources/distros/coreos/etc/os-release
tests/resources/distros/debian8/bin/lsb_release
tests/resources/distros/debian8/etc/debian_version
tests/resources/distros/debian8/etc/os-release
tests/resources/distros/exherbo/etc/os-release
tests/resources/distros/fedora19/etc/fedora-release
tests/resources/distros/fedora19/etc/issue
tests/resources/distros/fedora19/etc/issue.net
tests/resources/distros/fedora19/etc/os-release
tests/resources/distros/fedora19/etc/redhat-release
tests/resources/distros/fedora19/etc/system-release
tests/resources/distros/fedora19/etc/system-release-cpe
tests/resources/distros/fedora23/etc/fedora-release
tests/resources/distros/fedora23/etc/os-release
tests/resources/distros/fedora23/etc/redhat-release
tests/resources/distros/fedora23/etc/system-release
tests/resources/distros/fedora23/usr/lib/os-release
tests/resources/distros/fedora30/etc/fedora-release
tests/resources/distros/fedora30/etc/os-release
tests/resources/distros/fedora30/etc/redhat-release
tests/resources/distros/fedora30/etc/system-release
tests/resources/distros/fedora30/usr/lib/os-release
tests/resources/distros/freebsd111/bin/uname
tests/resources/distros/gentoo/etc/gentoo-release
tests/resources/distros/gentoo/etc/os-release
tests/resources/distros/kali/etc/os-release
tests/resources/distros/kvmibm1/bin/lsb_release
tests/resources/distros/kvmibm1/etc/base-release
tests/resources/distros/kvmibm1/etc/os-release
tests/resources/distros/kvmibm1/etc/redhat-release
tests/resources/distros/kvmibm1/etc/system-release
tests/resources/distros/linuxmint17/bin/lsb_release
tests/resources/distros/linuxmint17/etc/debian_version
tests/resources/distros/linuxmint17/etc/lsb-release
tests/resources/distros/linuxmint17/etc/os-release
tests/resources/distros/linuxmint17/etc/upstream-release/lsb-release
tests/resources/distros/mageia5/bin/lsb_release
tests/resources/distros/mageia5/etc/lsb-release
tests/resources/distros/mageia5/etc/mageia-release
tests/resources/distros/mageia5/etc/mandrake-release
tests/resources/distros/mageia5/etc/mandrakelinux-release
tests/resources/distros/mageia5/etc/mandriva-release
tests/resources/distros/mageia5/etc/os-release
tests/resources/distros/mageia5/etc/redhat-release
tests/resources/distros/mageia5/etc/release
tests/resources/distros/mageia5/etc/version
tests/resources/distros/mageia5/usr/lib/os-release
tests/resources/distros/mandriva2011/bin/lsb_release
tests/resources/distros/mandriva2011/etc/lsb-release
tests/resources/distros/mandriva2011/etc/mandrake-release
tests/resources/distros/mandriva2011/etc/mandrakelinux-release
tests/resources/distros/mandriva2011/etc/mandriva-release
tests/resources/distros/mandriva2011/etc/redhat-release
tests/resources/distros/mandriva2011/etc/release
tests/resources/distros/mandriva2011/etc/version
tests/resources/distros/manjaro1512/bin/lsb_release
tests/resources/distros/manjaro1512/etc/lsb-release
tests/resources/distros/manjaro1512/etc/manjaro-release
tests/resources/distros/manjaro1512/etc/os-release
tests/resources/distros/netbsd711/bin/uname
tests/resources/distros/openbsd62/bin/uname
tests/resources/distros/openelec6/etc/os-release
tests/resources/distros/opensuse42/etc/SuSE-release
tests/resources/distros/opensuse42/etc/os-release
tests/resources/distros/oracle7/etc/oracle-release
tests/resources/distros/oracle7/etc/os-release
tests/resources/distros/raspbian7/etc/debian_version
tests/resources/distros/raspbian7/etc/os-release
tests/resources/distros/raspbian7/etc/os-release.orig
tests/resources/distros/raspbian8/etc/debian_version
tests/resources/distros/raspbian8/etc/os-release
tests/resources/distros/rhel5/etc/redhat-release
tests/resources/distros/rhel6/etc/redhat-release
tests/resources/distros/rhel6/etc/system-release
tests/resources/distros/rhel7/etc/os-release
tests/resources/distros/rhel7/etc/redhat-release
tests/resources/distros/rhel7/etc/system-release
tests/resources/distros/scientific6/etc/redhat-release
tests/resources/distros/scientific6/etc/system-release
tests/resources/distros/scientific7/etc/os-release
tests/resources/distros/scientific7/etc/redhat-release
tests/resources/distros/scientific7/etc/sl-release
tests/resources/distros/scientific7/etc/system-release
tests/resources/distros/slackware14/etc/os-release
tests/resources/distros/slackware14/etc/slackware-version
tests/resources/distros/sles12/bin/lsb_release
tests/resources/distros/sles12/etc/SuSE-release
tests/resources/distros/sles12/etc/os-release
tests/resources/distros/ubuntu14/bin/lsb_release
tests/resources/distros/ubuntu14/etc/debian_version
tests/resources/distros/ubuntu14/etc/lsb-release
tests/resources/distros/ubuntu14/etc/os-release
tests/resources/distros/ubuntu16/bin/lsb_release
tests/resources/distros/ubuntu16/etc/debian_version
tests/resources/distros/ubuntu16/etc/lsb-release
tests/resources/distros/ubuntu16/etc/os-release
tests/resources/special/empty-release
tests/resources/testdistros/distro/baduname/bin/uname
tests/resources/testdistros/distro/unknowndistro/etc/unknowndistro-release
tests/resources/testdistros/lsb/lsb_rc001/bin/lsb_release
tests/resources/testdistros/lsb/lsb_rc002/bin/lsb_release
tests/resources/testdistros/lsb/lsb_rc126/bin/lsb_release
tests/resources/testdistros/lsb/lsb_rc130/bin/lsb_release
tests/resources/testdistros/lsb/lsb_rc255/bin/lsb_release
tests/resources/testdistros/lsb/ubuntu14_nomodules/bin/lsb_release
tests/resources/testdistros/lsb/ubuntu14_normal/bin/lsb_release
tests/resources/testdistros/lsb/ubuntu14_trailingblanks/bin/lsb_release

View File

@ -0,0 +1 @@

View File

@ -0,0 +1,3 @@
[console_scripts]
distro = distro:main

View File

@ -0,0 +1 @@
distro

1216
distro.py Executable file

File diff suppressed because it is too large Load Diff

342
docs/conf.py Normal file
View File

@ -0,0 +1,342 @@
# -*- coding: utf-8 -*-
#
# Configuration file for Sphinx builds, created by
# sphinx-quickstart on Wed Mar 2 11:33:06 2016.
#
# This file is execfile()d with the current directory set to its
# containing dir.
#
# Note that not all possible configuration values are present in this
# autogenerated file.
#
# All configuration values have a default; values that are commented out
# serve to show the default.
import sys
import os
import re
# If extensions (or modules to document with autodoc) are in another directory,
# add these directories to sys.path here. If the directory is relative to the
# documentation root, use os.path.abspath to make it absolute, like shown here.
sys.path.insert(0, os.path.abspath('..'))
# -- General configuration ------------------------------------------------
# If your documentation needs a minimal Sphinx version, state it here.
needs_sphinx = '1.1'
# Add any Sphinx extension module names here, as strings. They can be
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
# ones.
extensions = [
'sphinx.ext.autodoc',
'sphinx.ext.intersphinx',
'sphinx.ext.todo',
'sphinx.ext.coverage',
'sphinx.ext.viewcode',
]
# Add any paths that contain templates here, relative to this directory.
templates_path = ['_templates']
# The suffix(es) of source filenames.
# You can specify multiple suffix as a list of string:
# source_suffix = ['.rst', '.md']
source_suffix = '.rst'
# The encoding of source files.
source_encoding = 'utf-8'
# The master toctree document.
on_rtd = os.environ.get('READTHEDOCS', None) == 'True'
if on_rtd:
master_doc = 'index'
else:
master_doc = 'docs/index'
# General information about the project.
project = u'distro'
copyright = u'2015,2016, Nir Cohen, Andreas Maier'
author = u'Nir Cohen, Andreas Maier'
# The short description of the package.
_short_description = u'Linux Distribution - a Linux OS platform information API'
# The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the
# built documents.
def parse_version():
with open('../setup.py', 'r') as _fp:
_lines = _fp.readlines()
for _line in _lines:
m = re.match(r'^package_version *= *[\'"](.+)[\'"].*$', _line)
if m:
break
if m:
return m.group(1)
else:
return 'unknown'
# The short X.Y version.
# Note: We use the full version in both cases.
version = parse_version()
# The full version, including alpha/beta/rc tags.
release = version
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
#
# This is also used if you do content translation via gettext catalogs.
# Usually you set "language" from the command line for these cases.
language = None
# There are two options for replacing |today|: either, you set today to some
# non-false value, then it is used:
#today = ''
# Else, today_fmt is used as the format for a strftime call.
#today_fmt = '%B %d, %Y'
# List of patterns, relative to source directory, that match files and
# directories to ignore when looking for source files.
exclude_patterns = ["tests", ".tox", ".git", "build_docs", "ld.egg-info"]
# The reST default role (used for this markup: `text`) to use for all
# documents.
#default_role = None
# If true, '()' will be appended to :func: etc. cross-reference text.
add_function_parentheses = True
# If true, the current module name will be prepended to all description
# unit titles (such as .. function::).
#add_module_names = True
# If true, sectionauthor and moduleauthor directives will be shown in the
# output. They are ignored by default.
#show_authors = False
# The name of the Pygments (syntax highlighting) style to use.
pygments_style = 'sphinx'
# A list of ignored prefixes for module index sorting.
#modindex_common_prefix = []
# If true, keep warnings as "system message" paragraphs in the built documents.
#keep_warnings = False
# If true, `todo` and `todoList` produce output, else they produce nothing.
todo_include_todos = True
# -- Options for HTML output ----------------------------------------------
# The theme to use for HTML and HTML Help pages.
# See http://www.sphinx-doc.org/en/stable/theming.html for built-in themes.
html_theme = "classic"
# Theme options are theme-specific and customize the look and feel of a theme
# further.
# See http://www.sphinx-doc.org/en/stable/theming.html for the options
# available for built-in themes.
html_theme_options = {
}
# Add any paths that contain custom themes here, relative to this directory.
#html_theme_path = []
# The name for this set of Sphinx documents. If not defined, it defaults to
# "<project> v<release> documentation".
#html_title = None
# A shorter title for the navigation bar. Default is the same as html_title.
#html_short_title = 'distro'
# The name of an image file (relative to this directory) to place at the top
# of the sidebar.
#html_logo = None
# The name of an image file (relative to this directory) to use as a favicon of
# the docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32
# pixels large.
#html_favicon = None
# Add any paths that contain custom static files (such as style sheets) here,
# relative to this directory. They are copied after the builtin static files,
# so a file named "default.css" will overwrite the builtin "default.css".
html_static_path = ['html_static']
# Add any extra paths that contain custom files (such as robots.txt or
# .htaccess) here, relative to this directory. These files are copied
# directly to the root of the documentation.
html_extra_path = ['html_extra']
# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
# using the given strftime format.
#html_last_updated_fmt = '%b %d, %Y'
# If true, SmartyPants will be used to convert quotes and dashes to
# typographically correct entities.
#html_use_smartypants = True
# Custom sidebar templates, maps document names to template names.
#html_sidebars = {}
# Additional templates that should be rendered to pages, maps page names to
# template names.
#html_additional_pages = {}
# If false, no module index is generated.
#html_domain_indices = True
# If false, no index is generated.
#html_use_index = True
# If true, the index is split into individual pages for each letter.
#html_split_index = False
# If true, links to the reST sources are added to the pages.
#html_show_sourcelink = True
# If true, "Created using Sphinx" is shown in the HTML footer. Default is True.
#html_show_sphinx = True
# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True.
#html_show_copyright = True
# If true, an OpenSearch description file will be output, and all pages will
# contain a <link> tag referring to it. The value of this option must be the
# base URL from which the finished HTML is served.
#html_use_opensearch = ''
# This is the file name suffix for HTML files (e.g. ".xhtml").
#html_file_suffix = None
# Language to be used for generating the HTML full-text search index.
# Sphinx supports the following languages:
# 'da', 'de', 'en', 'es', 'fi', 'fr', 'hu', 'it', 'ja'
# 'nl', 'no', 'pt', 'ro', 'ru', 'sv', 'tr'
#html_search_language = 'en'
# A dictionary with options for the search language support, empty by default.
# Now only 'ja' uses this config value
#html_search_options = {'type': 'default'}
# The name of a javascript file (relative to the configuration directory) that
# implements a search results scorer. If empty, the default will be used.
#html_search_scorer = 'scorer.js'
# Output file base name for HTML help builder.
htmlhelp_basename = 'distro_doc'
# -- Options for LaTeX output ---------------------------------------------
latex_elements = {
# The paper size ('letterpaper' or 'a4paper').
#'papersize': 'letterpaper',
# The font size ('10pt', '11pt' or '12pt').
#'pointsize': '10pt',
# Additional stuff for the LaTeX preamble.
#'preamble': '',
# Latex figure (float) alignment
#'figure_align': 'htbp',
}
# Grouping the document tree into LaTeX files. List of tuples
# (source start file, target name, title,
# author, documentclass [howto, manual, or own class]).
latex_documents = [
(master_doc, 'ld.tex', _short_description, author, 'manual'),
]
# The name of an image file (relative to this directory) to place at the top of
# the title page.
#latex_logo = None
# For "manual" documents, if this is true, then toplevel headings are parts,
# not chapters.
#latex_use_parts = False
# If true, show page references after internal links.
#latex_show_pagerefs = False
# If true, show URL addresses after external links.
#latex_show_urls = False
# Documents to append as an appendix to all manuals.
#latex_appendices = []
# If false, no module index is generated.
#latex_domain_indices = True
# -- Options for manual page output ---------------------------------------
# One entry per manual page. List of tuples
# (source start file, name, description, authors, manual section).
man_pages = [
(master_doc, 'ld', _short_description, [author], 1)
]
# If true, show URL addresses after external links.
#man_show_urls = False
# -- Options for Texinfo output -------------------------------------------
# Grouping the document tree into Texinfo files. List of tuples
# (source start file, target name, title, author,
# dir menu entry, description, category)
texinfo_documents = [
(master_doc, 'LinuxDistribution', _short_description,
author, 'LinuxDistribution', _short_description,
'Miscellaneous'),
]
# Documents to append as an appendix to all manuals.
#texinfo_appendices = []
# If false, no module index is generated.
#texinfo_domain_indices = True
# How to display URL addresses: 'footnote', 'no', or 'inline'.
#texinfo_show_urls = 'footnote'
# If true, do not generate a @detailmenu in the "Top" node's menu.
#texinfo_no_detailmenu = False
# -- Options for autodoc extension ----------------------------------------
# For documentation, see
# http://www.sphinx-doc.org/en/stable/ext/autodoc.html
# Selects what content will be inserted into a class description.
# The possible values are:
# "class" - Only the class docstring is inserted. This is the default.
# "both" - Both the class and the __init__ methods docstring are
# concatenated and inserted.
# "init" - Only the __init__ methods docstring is inserted.
autoclass_content = "both"
# Selects if automatically documented members are sorted alphabetically
# (value 'alphabetical'), by member type (value 'groupwise') or by source
# order (value 'bysource'). The default is alphabetical.
autodoc_member_order = "bysource"
# -- Options for intersphinx extension ------------------------------------
# For documentation, see
# http://www.sphinx-doc.org/en/stable/ext/intersphinx.html
# Defines the prefixes for intersphinx links, and the targets they resolve
# to. Example RST source for 'py' prefix:
# :py:func:`platform.dist`
intersphinx_mapping = {
'py': ('https://docs.python.org/3.5', None)
}
intersphinx_cache_limit = 5

476
docs/index.rst Normal file
View File

@ -0,0 +1,476 @@
.. _distro official repo: https://github.com/nir0s/distro
.. _distro issue tracker: https://github.com/nir0s/distro/issues
.. _open issues on missing test data: https://github.com/nir0s/distro/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22>
**distro** package (Linux Distribution) version |version|
*********************************************************
Official distro repository: `distro official repo`_
Overview and motivation
=======================
.. automodule:: distro
If you want to jump into the API description right away, read about the
`consolidated accessor functions`_.
Compatibility
=============
The ``distro`` package is supported on Python 2.7, 3.4+ and PyPy, and on
any Linux or *BSD distribution that provides one or more of the `data sources`_
used by this package.
This package is tested on Python 2.7, 3.4+ and PyPy, with test data that
mimics the exact behavior of the data sources of
`a number of Linux distributions <https://github.com/nir0s/distro/tree/master/tests/resources/distros>`_.
If you want to add test data for more distributions, please
create an issue in the `distro issue tracker`_
and provide the following information in the issue:
* The content of the `/etc/os-release` file, if any.
* The file names and content of the `/etc/*release` and `/etc/*version` files, if any.
* The output of the command: `lsb_release -a`, if available.
* The file names and content of any other files you are aware of that provide
useful information about the distro.
There are already some `open issues on missing test data`_.
Data sources
============
The ``distro`` package implements a robust and inclusive way of retrieving the
information about a Linux distribution based on new standards and old methods,
namely from these data sources:
* The `os-release file`_, if present.
* The `lsb_release command output`_, if the lsb_release command is available.
* The `distro release file`_, if present.
* The `uname command output`_, if present.
Access to the information
=========================
This package provides three ways to access the information about a Linux
distribution:
* `Consolidated accessor functions`_
These are module-global functions that take into account all data sources in
a priority order, and that return information about the current Linux
distribution.
These functions should be the normal way to access the information.
The precedence of data sources is applied for each information item
separately. Therefore, it is possible that not all information items returned
by these functions come from the same data source. For example, on a
distribution that has an lsb_release command that returns the
"Distributor ID" field but not the "Codename" field, and that has a distro
release file that specifies a codename inside, the distro ID will come from
the lsb_release command (because it has higher precedence), and the codename
will come from the distro release file (because it is not provided by the
lsb_release command).
Examples: :func:`distro.id` for retrieving
the distro ID, or :func:`ld.info` to get the machine-readable part of the
information in a more aggregated way, or :func:`distro.linux_distribution` with
an interface that is compatible to the original
:py:func:`platform.linux_distribution` function, supporting a subset of its
parameters.
* `Single source accessor functions`_
These are module-global functions that take into account a single data
source, and that return information about the current Linux distribution.
They are useful for distributions that provide multiple inconsistent data
sources, or for retrieving information items that are not provided by the
consolidated accessor functions.
Examples: :func:`distro.os_release_attr` for retrieving a single information
item from the os-release data source, or :func:`distro.lsb_release_info` for
retrieving all information items from the lsb_release command output data
source.
* `LinuxDistribution class`_
The :class:`distro.LinuxDistribution` class provides the main code of this
package.
This package contains a private module-global :class:`distro.LinuxDistribution`
instance with default initialization arguments, that is used by the
consolidated and single source accessor functions.
A user-defined instance of the :class:`distro.LinuxDistribution` class allows
specifying the path names of the os-release file and distro release file and
whether the lsb_release command should be used or not. That is useful for
example when the distribution information from a chrooted environment
is to be retrieved, or when a distro has multiple distro release files and
the default algorithm uses the wrong one.
Consolidated accessor functions
===============================
This section describes the consolidated accessor functions.
See `access to the information`_ for a discussion of the different kinds of
accessor functions.
.. autofunction:: distro.linux_distribution
.. autofunction:: distro.id
.. autofunction:: distro.name
.. autofunction:: distro.version
.. autofunction:: distro.version_parts
.. autofunction:: distro.major_version
.. autofunction:: distro.minor_version
.. autofunction:: distro.build_number
.. autofunction:: distro.like
.. autofunction:: distro.codename
.. autofunction:: distro.info
Single source accessor functions
================================
This section describes the single source accessor functions.
See `access to the information`_ for a discussion of the different kinds of
accessor functions.
.. autofunction:: distro.os_release_info
.. autofunction:: distro.lsb_release_info
.. autofunction:: distro.distro_release_info
.. autofunction:: distro.os_release_attr
.. autofunction:: distro.lsb_release_attr
.. autofunction:: distro.distro_release_attr
LinuxDistribution class
=======================
This section describes the access via the :class:`distro.LinuxDistribution` class.
See `access to the information`_ for a discussion of the different kinds of
accessor functions.
.. autoclass:: distro.LinuxDistribution
:members:
:undoc-members:
Normalization tables
====================
These translation tables are used to normalize the parsed distro ID values
into reliable IDs. See :func:`distro.id` for details.
They are documented in order to show for which distros a normalization is
currently defined.
As a quick fix, these tables can also be extended by the user by appending new
entries, should the need arise. If you have a need to get these tables
extended, please make an according request in the `distro issue tracker`_.
.. autodata:: distro.NORMALIZED_OS_ID
.. autodata:: distro.NORMALIZED_LSB_ID
.. autodata:: distro.NORMALIZED_DISTRO_ID
Os-release file
===============
The os-release file is looked up using the path name ``/etc/os-release``. Its
optional additional location ``/usr/lib/os-release`` is ignored.
The os-release file is expected to be encoded in UTF-8.
It is parsed using the standard Python :py:mod:`shlex` package, which treats it
like a shell script.
The attribute names found in the file are translated to lower case and then
become the keys of the information items from the os-release file data source.
These keys can be used to retrieve single items with the
:func:`distro.os_release_attr` function, and they are also used as keys in the
dictionary returned by :func:`distro.os_release_info`.
The attribute values found in the file are processed using shell rules (e.g.
for whitespace, escaping, and quoting) before they become the values of the
information items from the os-release file data source.
If the attribute "VERSION" is found in the file, the distro codename is
extracted from its value if it can be found there. If a codename is found, it
becomes an additional information item with key "codename".
See the `os-release man page
<http://www.freedesktop.org/software/systemd/man/os-release.html>`_
for a list of possible attributes in the file.
**Examples:**
1. The following os-release file content:
.. sourcecode:: shell
NAME='Ubuntu'
VERSION="14.04.3 LTS, Trusty Tahr"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 14.04.3 LTS"
VERSION_ID="14.04"
HOME_URL="http://www.ubuntu.com/"
SUPPORT_URL="http://help.ubuntu.com/"
BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"
results in these information items:
=============================== ==========================================
Key Value
=============================== ==========================================
name "Ubuntu"
version "14.04.3 LTS, Trusty Tahr"
id "ubuntu"
id_like "debian"
pretty_name "Ubuntu 14.04.3 LTS"
version_id "14.04"
home_url "http://www.ubuntu.com/"
support_url "http://help.ubuntu.com/"
bug_report_url "http://bugs.launchpad.net/ubuntu/"
codename "Trusty Tahr"
=============================== ==========================================
2. The following os-release file content:
.. sourcecode:: shell
NAME="Red Hat Enterprise Linux Server"
VERSION="7.0 (Maipo)"
ID="rhel"
ID_LIKE="fedora"
VERSION_ID="7.0"
PRETTY_NAME="Red Hat Enterprise Linux Server 7.0 (Maipo)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:redhat:enterprise_linux:7.0:GA:server"
HOME_URL="https://www.redhat.com/"
BUG_REPORT_URL="https://bugzilla.redhat.com/"
REDHAT_BUGZILLA_PRODUCT="Red Hat Enterprise Linux 7"
REDHAT_BUGZILLA_PRODUCT_VERSION=7.0
REDHAT_SUPPORT_PRODUCT="Red Hat Enterprise Linux"
REDHAT_SUPPORT_PRODUCT_VERSION=7.0
results in these information items:
=============================== ==========================================
Key Value
=============================== ==========================================
name "Red Hat Enterprise Linux Server"
version "7.0 (Maipo)"
id "rhel"
id_like "fedora"
version_id "7.0"
pretty_name "Red Hat Enterprise Linux Server 7.0 (Maipo)"
ansi_color "0;31"
cpe_name "cpe:/o:redhat:enterprise_linux:7.0:GA:server"
home_url "https://www.redhat.com/"
bug_report_url "https://bugzilla.redhat.com/"
redhat_bugzilla_product "Red Hat Enterprise Linux 7"
redhat_bugzilla_product_version "7.0"
redhat_support_product "Red Hat Enterprise Linux"
redhat_support_product_version "7.0"
codename "Maipo"
=============================== ==========================================
Lsb_release command output
==========================
The lsb_release command is expected to be in the PATH, and is invoked as
follows:
.. sourcecode:: shell
lsb_release -a
The command output is expected to be encoded in UTF-8.
Only lines in the command output with the following format will be used:
``<attr-name>: <attr-value>``
Where:
* ``<attr-name>`` is the name of the attribute, and
* ``<attr-value>`` is the attribute value.
The attribute names are stripped from surrounding blanks, any remaining blanks
are translated to underscores, they are translated to lower case, and then
become the keys of the information items from the lsb_release command output
data source.
The attribute values are stripped from surrounding blanks, and then become the
values of the information items from the lsb_release command output data
source.
See the `lsb_release man page
<http://refspecs.linuxfoundation.org/LSB_5.0.0/LSB-Core-generic/
LSB-Core-generic/lsbrelease.html>`_
for a description of standard attributes returned by the lsb_release command.
**Examples:**
1. The following lsb_release command output:
.. sourcecode:: text
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 14.04.3 LTS
Release: 14.04
Codename: trusty
results in these information items:
=============================== ==========================================
Key Value
=============================== ==========================================
distributor_id "Ubuntu"
description "Ubuntu 14.04.3 LTS"
release "14.04"
codename "trusty"
=============================== ==========================================
2. The following lsb_release command output:
.. sourcecode:: text
LSB Version: n/a
Distributor ID: SUSE LINUX
Description: SUSE Linux Enterprise Server 12 SP1
Release: 12.1
Codename: n/a
results in these information items:
=============================== ==========================================
Key Value
=============================== ==========================================
lsb_version "n/a"
distributor_id "SUSE LINUX"
description "SUSE Linux Enterprise Server 12 SP1"
release "12.1"
codename "n/a"
=============================== ==========================================
Distro release file
===================
Unless specified with a particular path name when using the
:class:`distro.LinuxDistribution` class, the distro release file is found by using
the first match in the alphabetically sorted list of the files matching the
following path name patterns:
* ``/etc/*-release``
* ``/etc/*_release``
* ``/etc/*-version``
* ``/etc/*_version``
where the following special path names are excluded:
* ``/etc/debian_version``
* ``/etc/system-release``
* ``/etc/os-release``
and where the first line within the file has the expected format.
The algorithm to sort the files alphabetically is far from perfect, but the
distro release file has the least priority as a data source, and it is expected
that distributions provide one of the other data sources.
The distro release file is expected to be encoded in UTF-8.
Only its first line is used, and it is expected to have the following format:
``<name> [[[release] <version_id>] (<codename>)]``
Where:
* square brackets indicate optionality,
* ``<name>`` is the distro name,
* ``<version_id>`` is the distro version, and
* ``<codename>`` is the distro codename.
The following information items can be found in a distro release file
(shown with their keys and data types):
* ``id`` (string): Distro ID, taken from the first part of the file name
before the hyphen (``-``) or underscore (``_``).
Note that the distro ID is not normalized or translated to lower case at this
point; this happens only for the result of the :func:`distro.id` function.
* ``name`` (string): Distro name, as found in the first line of the file.
* ``version_id`` (string): Distro version, as found in the first line of the
file. If not found, this information item will not exist.
* ``codename`` (string): Distro codename, as found in the first line of the
file. If not found, this information item will not exist.
Note that the string in the codename field is not always really a
codename. For example, openSUSE returns "x86_64".
**Examples:**
1. The following distro release file ``/etc/centos-release``:
.. sourcecode:: text
CentOS Linux release 7.1.1503 (Core)
results in these information items:
=============================== ==========================================
Key Value
=============================== ==========================================
id "centos"
name "CentOS Linux"
version_id "7.1.1503"
codename "Core"
=============================== ==========================================
2. The following distro release file ``/etc/oracle-release``:
.. sourcecode:: text
Oracle Linux Server release 7.1
results in these information items:
=============================== ==========================================
Key Value
=============================== ==========================================
id "oracle"
name "Oracle Linux Server"
version_id "7.1"
=============================== ==========================================
3. The following distro release file ``/etc/SuSE-release``:
.. sourcecode:: text
openSUSE 42.1 (x86_64)
results in these information items:
=============================== ==========================================
Key Value
=============================== ==========================================
id "SuSE"
name "openSUSE"
version_id "42.1"
codename "x86_64"
=============================== ==========================================

45
query_local_distro.py Executable file
View File

@ -0,0 +1,45 @@
#!/usr/bin/env python
# Copyright 2015,2016 Nir Cohen
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
from __future__ import print_function
from pprint import pformat
import distro
def pprint(obj):
for line in pformat(obj).split('\n'):
print(4 * ' ' + line)
print('os_release_info:')
pprint(distro.os_release_info())
print('lsb_release_info:')
pprint(distro.lsb_release_info())
print('distro_release_info:')
pprint(distro.distro_release_info())
print('id: {0}'.format(distro.id()))
print('name: {0}'.format(distro.name()))
print('name_pretty: {0}'.format(distro.name(True)))
print('version: {0}'.format(distro.version()))
print('version_pretty: {0}'.format(distro.version(True)))
print('like: {0}'.format(distro.like()))
print('codename: {0}'.format(distro.codename()))
print('linux_distribution_full: {0}'.format(distro.linux_distribution()))
print('linux_distribution: {0}'.format(distro.linux_distribution(False)))
print('major_version: {0}'.format(distro.major_version()))
print('minor_version: {0}'.format(distro.minor_version()))
print('build_number: {0}'.format(distro.build_number()))

10
setup.cfg Normal file
View File

@ -0,0 +1,10 @@
[bdist_wheel]
universal = 1
[metadata]
license_file = LICENSE
[egg_info]
tag_build =
tag_date = 0

67
setup.py Normal file
View File

@ -0,0 +1,67 @@
# Copyright 2015,2016 Nir Cohen
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import os
import codecs
from setuptools import setup
# The following version is parsed by other parts of this package.
# Don't change the format of the line, or the variable name.
package_version = "1.4.0"
here = os.path.abspath(os.path.dirname(__file__))
def read(*parts):
# intentionally *not* adding an encoding option to open
return codecs.open(os.path.join(here, *parts), 'r').read()
setup(
name='distro',
version=package_version,
url='https://github.com/nir0s/distro',
author='Nir Cohen',
author_email='nir36g@gmail.com',
license='Apache License, Version 2.0',
platforms='All',
description='Distro - an OS platform information API',
long_description=read('README.md'),
long_description_content_type='text/markdown',
py_modules=['distro'],
entry_points={
'console_scripts': [
'distro = distro:main',
]
},
classifiers=[
'Development Status :: 5 - Production/Stable',
'Intended Audience :: Developers',
'Intended Audience :: System Administrators',
'License :: OSI Approved :: Apache Software License',
'Operating System :: POSIX :: Linux',
'Operating System :: POSIX :: BSD',
'Operating System :: POSIX :: BSD :: FreeBSD',
'Operating System :: POSIX :: BSD :: NetBSD',
'Operating System :: POSIX :: BSD :: OpenBSD',
'Programming Language :: Python :: 2',
'Programming Language :: Python :: 2.7',
'Programming Language :: Python :: 3',
'Programming Language :: Python :: 3.4',
'Programming Language :: Python :: 3.5',
'Programming Language :: Python :: 3.6',
'Topic :: Software Development :: Libraries :: Python Modules',
'Topic :: System :: Operating System',
]
)

0
tests/__init__.py Normal file
View File

View File

@ -0,0 +1,43 @@
#!/bin/bash
#
# lsb_release command for testing the ld module.
# Only the -a option is supported.
#
# This version of the lsb_release command reads an lsb-release file.
#
# The lsb-release file has the usual format, e.g.:
# DISTRIB_ID=Ubuntu
# DISTRIB_RELEASE=14.04
# DISTRIB_CODENAME=trusty
# DISTRIB_DESCRIPTION="Ubuntu 14.04.3 LTS"
# Where each line is optional. If a line is missing, the default value
# will be the empty string.
#
if [[ "$@" != "-a" ]]; then
echo "Usage: lsb_release -a"
exit 2
fi
# Because the PATH is set to just this directory, we cannot use 'dirname'
# or other external programs, but need to use built-in abilities of bash.
LSB_FILE="${0%/*}/../etc/lsb-release"
if [[ ! -f $LSB_FILE ]]; then
echo "Error: LSB release file does not exist: $LSB_FILE"
exit 1
fi
source $LSB_FILE
if [[ -n $LSB_VERSION ]]; then
echo "LSB Version: $LSB_VERSION"
else
echo "No LSB modules are available."
fi
echo "Distributor ID: ${DISTRIB_ID:-}"
echo "Description: ${DISTRIB_DESCRIPTION:-}"
echo "Release: ${DISTRIB_RELEASE:-}"
echo "Codename: ${DISTRIB_CODENAME:-}"
exit 0

View File

@ -0,0 +1 @@
Amazon Linux AMI release 2014.03

View File

@ -0,0 +1,9 @@
NAME="Amazon Linux AMI"
VERSION="2016.03"
ID="amzn"
ID_LIKE="rhel fedora"
VERSION_ID="2016.03"
PRETTY_NAME="Amazon Linux AMI 2016.03"
ANSI_COLOR="0;33"
CPE_NAME="cpe:/o:amazon:linux:2016.03:ga"
HOME_URL="http://aws.amazon.com/amazon-linux-ami/"

View File

@ -0,0 +1 @@
Amazon Linux AMI release 2016.03

View File

@ -0,0 +1,7 @@
NAME="Arch Linux"
ID=arch
PRETTY_NAME="Arch Linux"
ANSI_COLOR="0;36"
HOME_URL="https://www.archlinux.org/"
SUPPORT_URL="https://bbs.archlinux.org/"
BUG_REPORT_URL="https://bugs.archlinux.org/"

View File

@ -0,0 +1,7 @@
NAME="Arch Linux"
ID=arch
PRETTY_NAME="Arch Linux"
ANSI_COLOR="0;36"
HOME_URL="https://www.archlinux.org/"
SUPPORT_URL="https://bbs.archlinux.org/"
BUG_REPORT_URL="https://bugs.archlinux.org/"

View File

@ -0,0 +1 @@
CentOS release 5.11 (Final)

View File

@ -0,0 +1 @@
CentOS release 5.11 (Final)

View File

@ -0,0 +1 @@
CentOS release 5.11 (Final)

View File

@ -0,0 +1 @@
CentOS Linux release 7.1.1503 (Core)

View File

@ -0,0 +1,16 @@
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"
CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"

View File

@ -0,0 +1 @@
CentOS Linux release 7.1.1503 (Core)

View File

@ -0,0 +1 @@
CentOS Linux release 7.1.1503 (Core)

View File

@ -0,0 +1 @@
CloudLinux Server release 5.11 (Vladislav Volkov)

View File

@ -0,0 +1 @@
CloudLinux Server release 6.8 (Oleg Makarov)

View File

@ -0,0 +1,10 @@
NAME="CloudLinux"
VERSION="7.3 (Yury Malyshev)"
ID="cloudlinux"
ID_LIKE="rhel fedora centos"
VERSION_ID="7.3"
PRETTY_NAME="CloudLinux 7.3 (Yury Malyshev)"
ANSI_COLOR="0:31"
CPE_NAME="cpe:/o:cloudlinux:cloudlinux:7.3:GA:server"
HOME_URL="https://www.cloudlinux.com/"
BUG_REPORT_URL="https://helpdesk.cloudlinux.com/"

View File

@ -0,0 +1 @@
CloudLinux release 7.3 (Yury Malyshev)

View File

@ -0,0 +1,5 @@
ID=digitalocean
VERSION_ID=0.0.4
NAME="DigitalOcean"
HOME_URL="https://www.digitalocean.com/"
BUG_REPORT_URL="https://github.com/coreos/bugs/issues"

View File

@ -0,0 +1,9 @@
NAME=CoreOS
ID=coreos
VERSION=899.15.0
VERSION_ID=899.15.0
BUILD_ID=2016-04-05-1035
PRETTY_NAME="CoreOS 899.15.0"
ANSI_COLOR="1;32"
HOME_URL="https://coreos.com/"
BUG_REPORT_URL="https://github.com/coreos/bugs/issues"

View File

@ -0,0 +1,21 @@
#!/bin/bash
#
# lsb_release command for testing the ld module.
# Only the -a option is supported.
#
# This version of the lsb_release command works without a corresponding
# etc/lsb-release file.
#
if [[ "$@" != "-a" ]]; then
echo "Usage: lsb_release -a"
exit 2
fi
echo "No LSB modules are available."
echo "Distributor ID: Debian"
echo "Description: Debian GNU/Linux 8.2 (jessie)"
echo "Release: 8.2"
echo "Codename: jessie"
exit 0

View File

@ -0,0 +1 @@
8.2

View File

@ -0,0 +1,8 @@
PRETTY_NAME="Debian GNU/Linux 8 (jessie)"
NAME="Debian GNU/Linux"
VERSION_ID="8"
VERSION="8 (jessie)"
ID=debian
HOME_URL="http://www.debian.org/"
SUPPORT_URL="http://www.debian.org/support/"
BUG_REPORT_URL="https://bugs.debian.org/"

View File

@ -0,0 +1,7 @@
NAME="Exherbo"
PRETTY_NAME="Exherbo Linux"
ID="exherbo"
ANSI_COLOR="0;32"
HOME_URL="https://www.exherbo.org/"
SUPPORT_URL="irc://irc.freenode.net/#exherbo"
BUG_REPORT_URL="https://bugs.exherbo.org/"

View File

@ -0,0 +1 @@
Fedora release 19 (Schrödingers Cat)

View File

@ -0,0 +1,3 @@
Fedora release 19 (Schrödingers Cat)
Kernel \r on an \m (\l)

View File

@ -0,0 +1,2 @@
Fedora release 19 (Schrödingers Cat)
Kernel \r on an \m (\l)

View File

@ -0,0 +1,7 @@
NAME=Fedora
VERSION="19 (Schrödingers Cat)"
ID=fedora
VERSION_ID=19
PRETTY_NAME="Fedora 19 (Schrödingers Cat)"
ANSI_COLOR="0;34"
CPE_NAME="cpe:/o:fedoraproject:fedora:19"

View File

@ -0,0 +1 @@
Fedora release 19 (Schrödingers Cat)

View File

@ -0,0 +1 @@
Fedora release 19 (Schrödingers Cat)

View File

@ -0,0 +1 @@
cpe:/o:fedoraproject:fedora:19

View File

@ -0,0 +1 @@
Fedora release 23 (Twenty Three)

View File

@ -0,0 +1,14 @@
NAME=Fedora
VERSION="23 (Twenty Three)"
ID=fedora
VERSION_ID=23
PRETTY_NAME="Fedora 23 (Twenty Three)"
ANSI_COLOR="0;34"
CPE_NAME="cpe:/o:fedoraproject:fedora:23"
HOME_URL="https://fedoraproject.org/"
BUG_REPORT_URL="https://bugzilla.redhat.com/"
REDHAT_BUGZILLA_PRODUCT="Fedora"
REDHAT_BUGZILLA_PRODUCT_VERSION=23
REDHAT_SUPPORT_PRODUCT="Fedora"
REDHAT_SUPPORT_PRODUCT_VERSION=23
PRIVACY_POLICY_URL=https://fedoraproject.org/wiki/Legal:PrivacyPolicy

View File

@ -0,0 +1 @@
Fedora release 23 (Twenty Three)

View File

@ -0,0 +1 @@
Fedora release 23 (Twenty Three)

View File

@ -0,0 +1,14 @@
NAME=Fedora
VERSION="23 (Twenty Three)"
ID=fedora
VERSION_ID=23
PRETTY_NAME="Fedora 23 (Twenty Three)"
ANSI_COLOR="0;34"
CPE_NAME="cpe:/o:fedoraproject:fedora:23"
HOME_URL="https://fedoraproject.org/"
BUG_REPORT_URL="https://bugzilla.redhat.com/"
REDHAT_BUGZILLA_PRODUCT="Fedora"
REDHAT_BUGZILLA_PRODUCT_VERSION=23
REDHAT_SUPPORT_PRODUCT="Fedora"
REDHAT_SUPPORT_PRODUCT_VERSION=23
PRIVACY_POLICY_URL=https://fedoraproject.org/wiki/Legal:PrivacyPolicy

View File

@ -0,0 +1 @@
Fedora release 30 (Thirty)

View File

@ -0,0 +1,19 @@
NAME=Fedora
VERSION="30 (Thirty)"
ID=fedora
VERSION_ID=30
VERSION_CODENAME=""
PLATFORM_ID="platform:f30"
PRETTY_NAME="Fedora 30 (Thirty)"
ANSI_COLOR="0;34"
LOGO=fedora-logo-icon
CPE_NAME="cpe:/o:fedoraproject:fedora:30"
HOME_URL="https://fedoraproject.org/"
DOCUMENTATION_URL="https://docs.fedoraproject.org/en-US/fedora/30/system-administrators-guide/"
SUPPORT_URL="https://fedoraproject.org/wiki/Communicating_and_getting_help"
BUG_REPORT_URL="https://bugzilla.redhat.com/"
REDHAT_BUGZILLA_PRODUCT="Fedora"
REDHAT_BUGZILLA_PRODUCT_VERSION=30
REDHAT_SUPPORT_PRODUCT="Fedora"
REDHAT_SUPPORT_PRODUCT_VERSION=30
PRIVACY_POLICY_URL="https://fedoraproject.org/wiki/Legal:PrivacyPolicy"

View File

@ -0,0 +1 @@
Fedora release 30 (Thirty)

View File

@ -0,0 +1 @@
Fedora release 30 (Thirty)

View File

@ -0,0 +1,19 @@
NAME=Fedora
VERSION="30 (Thirty)"
ID=fedora
VERSION_ID=30
VERSION_CODENAME=""
PLATFORM_ID="platform:f30"
PRETTY_NAME="Fedora 30 (Thirty)"
ANSI_COLOR="0;34"
LOGO=fedora-logo-icon
CPE_NAME="cpe:/o:fedoraproject:fedora:30"
HOME_URL="https://fedoraproject.org/"
DOCUMENTATION_URL="https://docs.fedoraproject.org/en-US/fedora/30/system-administrators-guide/"
SUPPORT_URL="https://fedoraproject.org/wiki/Communicating_and_getting_help"
BUG_REPORT_URL="https://bugzilla.redhat.com/"
REDHAT_BUGZILLA_PRODUCT="Fedora"
REDHAT_BUGZILLA_PRODUCT_VERSION=30
REDHAT_SUPPORT_PRODUCT="Fedora"
REDHAT_SUPPORT_PRODUCT_VERSION=30
PRIVACY_POLICY_URL="https://fedoraproject.org/wiki/Legal:PrivacyPolicy"

View File

@ -0,0 +1,4 @@
#!/bin/sh
echo "FreeBSD 11.1-RELEASE"

View File

@ -0,0 +1 @@
Gentoo Base System release 2.2

View File

@ -0,0 +1,7 @@
NAME=Gentoo
ID=gentoo
PRETTY_NAME="Gentoo/Linux"
ANSI_COLOR="1;32"
HOME_URL="http://www.gentoo.org/"
SUPPORT_URL="http://www.gentoo.org/main/en/support.xml"
BUG_REPORT_URL="https://bugs.gentoo.org/"

View File

@ -0,0 +1,10 @@
PRETTY_NAME="Kali GNU/Linux Rolling"
NAME="Kali GNU/Linux"
ID=kali
VERSION="2017.1"
VERSION_ID="2017.1"
ID_LIKE=debian
ANSI_COLOR="1;31"
HOME_URL="http://www.kali.org/"
SUPPORT_URL="http://forums.kali.org/"
BUG_REPORT_URL="http://bugs.kali.org/"

View File

@ -0,0 +1,21 @@
#!/bin/bash
#
# lsb_release command for testing the ld module.
# Only the -a option is supported.
#
# This version of the lsb_release command works without a corresponding
# etc/lsb-release file.
#
if [[ "$@" != "-a" ]]; then
echo "Usage: lsb_release -a"
exit 2
fi
echo "LSB Version: :core-4.1-noarch:core-4.1-s390x"
echo "Distributor ID: kvmibm"
echo "Description: KVM for IBM z Systems release 1.1.1 (Z) "
echo "Release: 1.1.1"
echo "Codename: Z"
exit 0

View File

@ -0,0 +1 @@
KVM for IBM z Systems release 1.1.1 (Z)

View File

@ -0,0 +1,9 @@
NAME="KVM for IBM z Systems"
VERSION="1.1.1 (Z)"
ID="kvmibm"
ID_LIKE="rhel fedora"
VERSION_ID="1.1.1"
PRETTY_NAME="KVM for IBM z Systems 1.1.1 (Z)"
ANSI_COLOR="0;34"
CPE_NAME="cpe:/o:ibm:kvmibm:1.1.1"
BUILD_ID="20160316"

View File

@ -0,0 +1 @@
KVM for IBM z Systems release 1.1.1 (Z)

View File

@ -0,0 +1 @@
KVM for IBM z Systems release 1.1.1 (Z)

View File

@ -0,0 +1,43 @@
#!/bin/bash
#
# lsb_release command for testing the ld module.
# Only the -a option is supported.
#
# This version of the lsb_release command reads an lsb-release file.
#
# The lsb-release file has the usual format, e.g.:
# DISTRIB_ID=Ubuntu
# DISTRIB_RELEASE=14.04
# DISTRIB_CODENAME=trusty
# DISTRIB_DESCRIPTION="Ubuntu 14.04.3 LTS"
# Where each line is optional. If a line is missing, the default value
# will be the empty string.
#
if [[ "$@" != "-a" ]]; then
echo "Usage: lsb_release -a"
exit 2
fi
# Because the PATH is set to just this directory, we cannot use 'dirname'
# or other external programs, but need to use built-in abilities of bash.
LSB_FILE="${0%/*}/../etc/lsb-release"
if [[ ! -f $LSB_FILE ]]; then
echo "Error: LSB release file does not exist: $LSB_FILE"
exit 1
fi
source $LSB_FILE
if [[ -n $LSB_VERSION ]]; then
echo "LSB Version: $LSB_VERSION"
else
echo "No LSB modules are available."
fi
echo "Distributor ID: ${DISTRIB_ID:-}"
echo "Description: ${DISTRIB_DESCRIPTION:-}"
echo "Release: ${DISTRIB_RELEASE:-}"
echo "Codename: ${DISTRIB_CODENAME:-}"
exit 0

View File

@ -0,0 +1 @@
jessie/sid

View File

@ -0,0 +1,4 @@
DISTRIB_ID=LinuxMint
DISTRIB_RELEASE=17.3
DISTRIB_CODENAME=rosa
DISTRIB_DESCRIPTION="Linux Mint 17.3 Rosa"

View File

@ -0,0 +1,9 @@
NAME="Ubuntu"
VERSION="14.04.3 LTS, Trusty Tahr"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 14.04.3 LTS"
VERSION_ID="14.04"
HOME_URL="http://www.ubuntu.com/"
SUPPORT_URL="http://help.ubuntu.com/"
BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"

View File

@ -0,0 +1,4 @@
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=14.04
DISTRIB_CODENAME=trusty
DISTRIB_DESCRIPTION="Ubuntu 14.04 LTS"

View File

@ -0,0 +1,39 @@
#!/bin/bash
#
# lsb_release command for testing the ld module.
# Only the -a option is supported.
#
# This version of the lsb_release command reads an lsb-release file.
#
# The lsb-release file has the usual format, e.g.:
# DISTRIB_ID=Ubuntu
# DISTRIB_RELEASE=14.04
# DISTRIB_CODENAME=trusty
# DISTRIB_DESCRIPTION="Ubuntu 14.04.3 LTS"
# Where each line is optional. If a line is missing, the default value
# will be the empty string.
#
if [[ "$@" != "-a" ]]; then
echo "Usage: lsb_release -a"
exit 2
fi
# Because the PATH is set to just this directory, we cannot use 'dirname'
# or other external programs, but need to use built-in abilities of bash.
LSB_FILE="${0%/*}/../etc/lsb-release"
if [[ ! -f $LSB_FILE ]]; then
echo "Error: LSB release file does not exist: $LSB_FILE"
exit 1
fi
source $LSB_FILE
echo "LSB Version: ${LSB_VERSION:-*}"
echo "Distributor ID: ${DISTRIB_ID:-}"
echo "Description: ${DISTRIB_DESCRIPTION:-}"
echo "Release: ${DISTRIB_RELEASE:-}"
echo "Codename: ${DISTRIB_CODENAME:-}"
exit 0

View File

@ -0,0 +1,5 @@
LSB_VERSION=
DISTRIB_ID="Mageia"
DISTRIB_RELEASE=5
DISTRIB_CODENAME=thornicroft
DISTRIB_DESCRIPTION="Mageia 5"

View File

@ -0,0 +1 @@
Mageia release 5 (Official) for x86_64

View File

@ -0,0 +1 @@
Mageia release 5 (Official) for x86_64

View File

@ -0,0 +1 @@
Mageia release 5 (Official) for x86_64

View File

@ -0,0 +1 @@
Mageia release 5 (Official) for x86_64

View File

@ -0,0 +1,10 @@
NAME="Mageia"
VERSION="5"
ID=mageia
VERSION_ID=5
ID_LIKE="mandriva fedora"
PRETTY_NAME="Mageia 5"
ANSI_COLOR="1;36"
HOME_URL="http://www.mageia.org/"
SUPPORT_URL="http://www.mageia.org/support/"
BUG_REPORT_URL="https://bugs.mageia.org/"

View File

@ -0,0 +1 @@
Mageia release 5 (Official) for x86_64

View File

@ -0,0 +1 @@
Mageia release 5 (Official) for x86_64

View File

@ -0,0 +1 @@
5 2 official

View File

@ -0,0 +1,10 @@
NAME="Mageia"
VERSION="5"
ID=mageia
VERSION_ID=5
ID_LIKE="mandriva fedora"
PRETTY_NAME="Mageia 5"
ANSI_COLOR="1;36"
HOME_URL="http://www.mageia.org/"
SUPPORT_URL="http://www.mageia.org/support/"
BUG_REPORT_URL="https://bugs.mageia.org/"

View File

@ -0,0 +1,39 @@
#!/bin/bash
#
# lsb_release command for testing the ld module.
# Only the -a option is supported.
#
# This version of the lsb_release command reads an lsb-release file.
#
# The lsb-release file has the usual format, e.g.:
# DISTRIB_ID=Ubuntu
# DISTRIB_RELEASE=14.04
# DISTRIB_CODENAME=trusty
# DISTRIB_DESCRIPTION="Ubuntu 14.04.3 LTS"
# Where each line is optional. If a line is missing, the default value
# will be the empty string.
#
if [[ "$@" != "-a" ]]; then
echo "Usage: lsb_release -a"
exit 2
fi
# Because the PATH is set to just this directory, we cannot use 'dirname'
# or other external programs, but need to use built-in abilities of bash.
LSB_FILE="${0%/*}/../etc/lsb-release"
if [[ ! -f $LSB_FILE ]]; then
echo "Error: LSB release file does not exist: $LSB_FILE"
exit 1
fi
source $LSB_FILE
echo "LSB Version: ${LSB_VERSION:-*}"
echo "Distributor ID: ${DISTRIB_ID:-}"
echo "Description: ${DISTRIB_DESCRIPTION:-}"
echo "Release: ${DISTRIB_RELEASE:-}"
echo "Codename: ${DISTRIB_CODENAME:-}"
exit 0

View File

@ -0,0 +1,5 @@
LSB_VERSION=
DISTRIB_ID=MandrivaLinux
DISTRIB_RELEASE=2011.0
DISTRIB_CODENAME=turtle
DISTRIB_DESCRIPTION="Mandriva Linux 2011.0"

View File

@ -0,0 +1 @@
Mandriva Linux release 2011.0 (Official) for x86_64

View File

@ -0,0 +1 @@
Mandriva Linux release 2011.0 (Official) for x86_64

View File

@ -0,0 +1 @@
Mandriva Linux release 2011.0 (Official) for x86_64

View File

@ -0,0 +1 @@
Mandriva Linux release 2011.0 (Official) for x86_64

View File

@ -0,0 +1 @@
Mandriva Linux release 2011.0 (Official) for x86_64

View File

@ -0,0 +1 @@
2011.0.0 2 cooker

View File

@ -0,0 +1,43 @@
#!/bin/bash
#
# lsb_release command for testing the ld module.
# Only the -a option is supported.
#
# This version of the lsb_release command reads an lsb-release file.
#
# The lsb-release file has the usual format, e.g.:
# DISTRIB_ID=Ubuntu
# DISTRIB_RELEASE=14.04
# DISTRIB_CODENAME=trusty
# DISTRIB_DESCRIPTION="Ubuntu 14.04.3 LTS"
# Where each line is optional. If a line is missing, the default value
# will be the empty string.
#
if [[ "$@" != "-a" ]]; then
echo "Usage: lsb_release -a"
exit 2
fi
# Because the PATH is set to just this directory, we cannot use 'dirname'
# or other external programs, but need to use built-in abilities of bash.
LSB_FILE="${0%/*}/../etc/lsb-release"
if [[ ! -f $LSB_FILE ]]; then
echo "Error: LSB release file does not exist: $LSB_FILE"
exit 1
fi
source $LSB_FILE
if [[ -n $LSB_VERSION ]]; then
echo "LSB Version: $LSB_VERSION"
else
echo "No LSB modules are available."
fi
echo "Distributor ID: ${DISTRIB_ID:-}"
echo "Description: ${DISTRIB_DESCRIPTION:-}"
echo "Release: ${DISTRIB_RELEASE:-}"
echo "Codename: ${DISTRIB_CODENAME:-}"
exit 0

View File

@ -0,0 +1,4 @@
DISTRIB_ID=ManjaroLinux
DISTRIB_RELEASE=15.12
DISTRIB_CODENAME=Capella
DISTRIB_DESCRIPTION="Manjaro Linux"

View File

@ -0,0 +1 @@
Manjaro Linux

View File

@ -0,0 +1,7 @@
NAME="Manjaro Linux"
ID=manjaro
PRETTY_NAME="Manjaro Linux"
ANSI_COLOR="1;32"
HOME_URL="http://www.manjaro.org/"
SUPPORT_URL="http://www.manjaro.org/"
BUG_REPORT_URL="http://bugs.manjaro.org/"

View File

@ -0,0 +1,4 @@
#!/bin/sh
echo "NetBSD 7.1.1"

Some files were not shown because too many files have changed in this diff Show More