# Python Tooling for Flightgear Development
This package contains Python modules and scripts used for development of the
[FlightGear](https://www.flightgear.org/) flight simulator. It is built from
an official FlightGear repository called
[fgmeta-python](https://gitlab.com/flightgear/fgmeta-python), uploaded by
FlightGear developers but does not contain the flight simulator itself. If you
are interested in the latter, please visit its [home
page](https://www.flightgear.org/).
This package is mostly of interest to FlightGear developers and
contributors. For instance:
- the internationalization scripts it ships can be useful for aircraft and
add-on developers that want to add translations to their work;
- catalog scripts for preparing aircraft catalogs;
- `git-date.py` for easily finding commits close to a given date in
several FlightGear repositories;
- `fg-validate-PropertyList` for checking XML files in PropertyList
format;
- etc.
There is nothing special about the packaging. The following instructions
are for people familiar with FlightGear but not necessarily with `pip` and
Python `venv`s.
## Quick Installation Instructions
This is for people who want to use the latest state of the code:
git clone https://gitlab.com/flightgear/fgmeta-python.git
cd fgmeta-python
python3 -m venv .venv
.venv/bin/pip install -e .
If the last command shows an error, this is likely due to outdated
packages. In such a case, run the following:
.venv/bin/pip install -U build pip setuptools
then redo the `pip install` step.
Scripts declared in `pyproject.toml` have been created by that step in the
`.venv/bin` directory. Updates are obtained by updating the
`fgmeta-python` clone (`git pull`). If your Python installation is updated
(version change) or if you move the directories in the above commands
elsewhere, delete the `.venv` directory, recreate the venv and redo the
`pip install` step.
## Long Installation Instructions
Normal installation of the package is done with the Python package
installer [pip](https://pip.pypa.io/).
### A Word on `pip`
Telling people to just `pip install ...` is quite common but reality is a
bit more complex. If you installed Python without a package manager, this
should be just fine (on Windows, you may have to use something like
`py -m pip install ...` if `pip` is not in your `PATH` but the Python
Launcher for Windows `py` is).
The main case where straight `pip install ...` commands are not
appropriate is if your Python installation (at large, including Python
packages that don't belong to the Python standard library) is managed by a
package manager such as `dpkg` or `rpm`. This is typically the case on
Linux distributions (unless you are using a Python you compiled yourself).
In that case, permissions would require you to run `pip` as root, which
would modify files and directories in places that are normally under
complete control of the package manager, “behind its back”. That would
likely lead to problems with your Python installation.
For this reason, in such cases where the whole Python installation is
managed by a package manager, we advise you to perform the installation
inside a `venv`—which is very quick and easy, see below.
### Installation Inside a Venv
According to the above, you may possibly skip this section.
A Python [venv](https://docs.python.org/3/library/venv.html) (a kind of
virtual environment) is a directory tree that is linked to a Python
installation and can be used to install packages in a way that doesn't
alter the Python installation itself nor other venvs. Venvs are quick and
easy to create. You can store them where you see fit. They are convenient
for installing Python packages without messing with the rest of the
system. Another strong point of venvs (probably the initial motivation) is
that using several ones, you can install Python packages that have
incompatible dependencies (each in its own venv).
Installation of Python packages inside a venv is very easy:
1. First, you create a venv in some some directory `⟨dir⟩` of your choice:
python3 -m venv ⟨dir⟩
When using per-project venvs, people often choose the `.venv`
subdirectory of the project root.
2. Then you use the `pip` executable from the venv, for instance:
⟨dir⟩/bin/pip install flightgear
After these commands, `⟨dir⟩/bin` contains all scripts declared as such in
the installed package. Besides, `⟨dir⟩/bin/python` is a Python interpreter
pretty much like the one from the base installation, except it has access
to all modules belonging to packages installed in the venv (not to
third-party modules from the underlying Python installation, unless the
venv was created with option `--system-site-packages`).
Uninstalling the package would be done with
`⟨dir⟩/bin/pip uninstall flightgear`, etc. If you have many commands to run
from the venv and don't want to write `⟨dir⟩/bin/` over and over, you may
want to read about `activate` in a venv tutorial or in the
[documentation](https://docs.python.org/3/library/venv.html#how-venvs-work).
In the rest of this documentation, whenever you see a `pip` command, you
should read it as `⟨dir⟩/bin/pip` if you chose to work in a venv whose
base directory is `⟨dir⟩`.
After installing a package in a venv, if you want to have the installed
scripts in your `PATH`, there are basically two ways:
- create symbolic links from a directory that is in your `PATH`;
- add `⟨dir⟩/bin` to your `PATH`; this can be convenient if you use a
“main venv” but before doing so, please note that `⟨dir⟩/bin` normally
contains `python`, `python3` and `pip` executables that would then also
be in your `PATH`—your call.
If the underlying Python installation for a venv is updated (as in,
upgraded from Python X.Y to Python X.Y+1) or if the venv directory is
moved elsewhere (which includes one of its parents being moved or
renamed), you'll have to recreate the venv: simply delete the `⟨dir⟩`
directory and redo the preceding steps (if you use a “main venv” with a
bunch of packages, having a script to recreate it is convenient).
### Installing Using `pip`
The Python distribution package this document belongs to is called
`flightgear` (case doesn't matter) and normal installations should be done
with [pip](https://pip.pypa.io/), for instance:
pip install flightgear
This would install the latest release. It is also possible to install
using the URL of a Git repository:
pip install git+https://gitlab.com/flightgear/fgmeta-python.git@next
(here, `@next` could be removed as `next` is the default branch). Another
interesting possibility is to install from a local clone of the
repository. Assuming you have one in directory `/path/to/fgmeta-python`,
you could install the package with:
pip install /path/to/fgmeta-python
(This may show an error due to outdated packages; in this case, run
`pip install -U build pip setuptools` and retry.)
Finally, given the target audience of this package and since releases may
not be that frequent, an interesting variation is to add option `-e`, like
so:
pip install -e /path/to/fgmeta-python
This performs the installation in *editable mode*. This has the
consequence that updates to Python files that belong to the package under
`/path/to/fgmeta-python` are immediately visible to the Python
installation or venv in which you installed the package. This is perfect
for developing the package, or if you want to get the latest state of the
code by simply updating the `fgmeta-python` repository.
Installations done with `pip` perform two things:
- they install Python modules so that Python can import them (here, the
`flightgear` import package would be in Python's `sys.path`);
- they create scripts in the `bin` subdirectory of the Python installation
or venv: this is the case for scripts declared as such in the
`pyproject.toml` file.
Another possibility that doesn't use `pip`, explained below in more
detail, is to modify `PYTHONPATH` yourself; however, this only covers the
first item of the previous list.
### Upgrading Using `pip`
If you installed a release of the package, upgrading it can be done with
the following command, where option `-U` is a shorthand for `--upgrade`:
pip install -U flightgear
If, on the other hand, you installed in editable mode from a clone of the
`fgmeta-python` repository, simply update the repository (for changes like
installed scripts or dependencies being added to or removed from
`pyproject.toml`, you'll need to redo the `pip install -e` step too).
### Uninstalling Using `pip`
Uninstallation of the package using `pip` can be done with:
pip uninstall flightgear
(yes, even if you installed with `pip install -e /path/to/fgmeta-python`).
### Partial Installation Without `pip`
This section describes a partial installation method. It may be helpful in
some cases but isn't equivalent to normal installation with `pip`.
This method consists in modifying the `sys.path` value seen by the Python
interpreter, either by adding an element (directory) to the `PYTHONPATH`
environment variable or by creating a `.pth` file. This has a few
drawbacks as compared to the installation with `pip`:
- it won't warn you if your Python version is unsuitable for running the
code contained in the package;
- it won't warn you if you don't have required dependencies (whereas `pip`
would automatically install them for you);
- it won't create the scripts declared in the `pyproject.toml` file
(however, they can currently be invoked as Python modules).
So, how does it work? For instance, you can use something like the
following in your shell setup:
export PYTHONPATH="/path/to/fgmeta-python/src"
This example uses Bourne-style shell syntax; adjust for your particular
shell. Several directories may be added this way using a colon separator
on Unix or macOS (`:`), and a semicolon on Windows (`;`).
An alternative to setting `PYTHONPATH` is to add `.pth` files in special
directories of your Python installation(s). For instance, you could create
a file, say, `fgmeta-python.pth`, containing a single line (with no space
at the beginning):
/path/to/fgmeta-python/src
If you want the modules present in `/path/to/fgmeta-python/src` to be
accessible to a particular Python interpreter (say, a Python 3.13), simply
put the `.pth` file in
`/path/to/python-install-dir/lib/python3.13/site-packages/`. For the
system Python interpreters on Debian, you can put the `.pth` file in, e.g,
`/usr/local/lib/python3.13/dist-packages/`. You may put several lines in a
`.pth` file in case you want to add several paths to the Python
interpreter's `sys.path`.
Note that if you use this method, you won't have the scripts declared in
the `pyproject.toml` file that `pip` would create in normal installations.
## The Scripts
Regardless of the method chosen for installation, the Python modules from
`fgmeta-python/src` should be available to the chosen Python interpreter
(if you installed in a venv whose base directory is `⟨dir⟩`, the
interpreter is `⟨dir⟩/bin/python`). What about scripts that rely on these
modules?
Normally, scripts are declared in the `pyproject.toml` file and
automatically created by the `pip install` command in the `bin`
subdirectory of the Python installation or venv. These scripts work out of
the box, can be invoked directly.
There are a few other scripts, like currently `catalog/update-catalog.py`,
which exist as files in the repository rather than being declared in
`pyproject.toml`. As long as the required modules are available to the
Python interpreter in use (i.e., accessible via its `sys.path`), such
scripts will work too. For instance, if you installed the package in a
`⟨dir⟩` venv, `⟨dir⟩/bin/python` is a Python interpreter that can see the
modules, therefore `⟨dir⟩/bin/python some-script` would be a suitable
command for running `some-script`.
The only remaining problem is therefore the following: if you used the
partial installation method, you don't have the scripts that `pip install`
would have normally created for you. However, these scripts are currently
available as Python modules. For instance, the file
`src/flightgear/meta/scripts/i18n/fg_extract_translatable_strings.py`
can be imported as a Python module. Example: the command
python3 -m flightgear.meta.scripts.i18n.fg_extract_translatable_strings --help
is equivalent to
fg-extract-translatable-strings --help
This might be useful for one-off uses of the scripts where one doesn't
necessarily want to run `pip`: one could set `PYTHONPATH` and run the
desired module(s) as shown above (the obvious alternative being to create
a temporary venv and use the normal installation method).
## Running the Unit Tests
Once the modules from this package are visible to Python (regardless of
the method used), the unit tests can be run with the following command
from the root of the `fgmeta-python` repository:
python3 -m unittest
(this is equivalent to `python3 -m unittest discover`; for more details,
see `tests/README.md`).
## Building the Package
In case you want to build the package, you can run the following command
from the root of the `fgmeta-python` repository:
python3 -m build
This requires the Python `build` tool as explained in the
[Python Packaging User Guide](https://packaging.python.org/en/latest/guides/distributing-packages-using-setuptools/#packaging-your-project).
Raw data
{
"_id": null,
"home_page": null,
"name": "FlightGear",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": "Florent Rougon <f.rougon@frougon.net>, James Turner <james@flightgear.org>",
"keywords": "FlightGear, flightgear, flight, simulator, tools",
"author": null,
"author_email": "Florent Rougon <f.rougon@frougon.net>, James Turner <james@flightgear.org>",
"download_url": "https://files.pythonhosted.org/packages/80/cc/3c45a21498546c1ef5a16eba78cf933509bd4aa40d7a2b19754751c2fbe9/flightgear-1.0.0b1.tar.gz",
"platform": null,
"description": "# Python Tooling for Flightgear Development\n\nThis package contains Python modules and scripts used for development of the\n[FlightGear](https://www.flightgear.org/) flight simulator. It is built from\nan official FlightGear repository called\n[fgmeta-python](https://gitlab.com/flightgear/fgmeta-python), uploaded by\nFlightGear developers but does not contain the flight simulator itself. If you\nare interested in the latter, please visit its [home\npage](https://www.flightgear.org/).\n\nThis package is mostly of interest to FlightGear developers and\ncontributors. For instance:\n\n- the internationalization scripts it ships can be useful for aircraft and\n add-on developers that want to add translations to their work;\n- catalog scripts for preparing aircraft catalogs;\n- `git-date.py` for easily finding commits close to a given date in\n several FlightGear repositories;\n- `fg-validate-PropertyList` for checking XML files in PropertyList\n format;\n- etc.\n\nThere is nothing special about the packaging. The following instructions\nare for people familiar with FlightGear but not necessarily with `pip` and\nPython `venv`s.\n\n## Quick Installation Instructions\n\nThis is for people who want to use the latest state of the code:\n\n git clone https://gitlab.com/flightgear/fgmeta-python.git\n cd fgmeta-python\n python3 -m venv .venv\n .venv/bin/pip install -e .\n\nIf the last command shows an error, this is likely due to outdated\npackages. In such a case, run the following:\n\n .venv/bin/pip install -U build pip setuptools\n\nthen redo the `pip install` step.\n\nScripts declared in `pyproject.toml` have been created by that step in the\n`.venv/bin` directory. Updates are obtained by updating the\n`fgmeta-python` clone (`git pull`). If your Python installation is updated\n(version change) or if you move the directories in the above commands\nelsewhere, delete the `.venv` directory, recreate the venv and redo the\n`pip install` step.\n\n## Long Installation Instructions\n\nNormal installation of the package is done with the Python package\ninstaller [pip](https://pip.pypa.io/).\n\n### A Word on `pip`\n\nTelling people to just `pip install ...` is quite common but reality is a\nbit more complex. If you installed Python without a package manager, this\nshould be just fine (on Windows, you may have to use something like\n`py -m pip install ...` if `pip` is not in your `PATH` but the Python\nLauncher for Windows `py` is).\n\nThe main case where straight `pip install ...` commands are not\nappropriate is if your Python installation (at large, including Python\npackages that don't belong to the Python standard library) is managed by a\npackage manager such as `dpkg` or `rpm`. This is typically the case on\nLinux distributions (unless you are using a Python you compiled yourself).\nIn that case, permissions would require you to run `pip` as root, which\nwould modify files and directories in places that are normally under\ncomplete control of the package manager, \u201cbehind its back\u201d. That would\nlikely lead to problems with your Python installation.\n\nFor this reason, in such cases where the whole Python installation is\nmanaged by a package manager, we advise you to perform the installation\ninside a `venv`\u2014which is very quick and easy, see below.\n\n### Installation Inside a Venv\n\nAccording to the above, you may possibly skip this section.\n\nA Python [venv](https://docs.python.org/3/library/venv.html) (a kind of\nvirtual environment) is a directory tree that is linked to a Python\ninstallation and can be used to install packages in a way that doesn't\nalter the Python installation itself nor other venvs. Venvs are quick and\neasy to create. You can store them where you see fit. They are convenient\nfor installing Python packages without messing with the rest of the\nsystem. Another strong point of venvs (probably the initial motivation) is\nthat using several ones, you can install Python packages that have\nincompatible dependencies (each in its own venv).\n\nInstallation of Python packages inside a venv is very easy:\n\n1. First, you create a venv in some some directory `\u27e8dir\u27e9` of your choice:\n\n python3 -m venv \u27e8dir\u27e9\n\n When using per-project venvs, people often choose the `.venv`\n subdirectory of the project root.\n\n2. Then you use the `pip` executable from the venv, for instance:\n\n \u27e8dir\u27e9/bin/pip install flightgear\n\nAfter these commands, `\u27e8dir\u27e9/bin` contains all scripts declared as such in\nthe installed package. Besides, `\u27e8dir\u27e9/bin/python` is a Python interpreter\npretty much like the one from the base installation, except it has access\nto all modules belonging to packages installed in the venv (not to\nthird-party modules from the underlying Python installation, unless the\nvenv was created with option `--system-site-packages`).\n\nUninstalling the package would be done with\n`\u27e8dir\u27e9/bin/pip uninstall flightgear`, etc. If you have many commands to run\nfrom the venv and don't want to write `\u27e8dir\u27e9/bin/` over and over, you may\nwant to read about `activate` in a venv tutorial or in the\n[documentation](https://docs.python.org/3/library/venv.html#how-venvs-work).\n\nIn the rest of this documentation, whenever you see a `pip` command, you\nshould read it as `\u27e8dir\u27e9/bin/pip` if you chose to work in a venv whose\nbase directory is `\u27e8dir\u27e9`.\n\nAfter installing a package in a venv, if you want to have the installed\nscripts in your `PATH`, there are basically two ways:\n\n- create symbolic links from a directory that is in your `PATH`;\n\n- add `\u27e8dir\u27e9/bin` to your `PATH`; this can be convenient if you use a\n \u201cmain venv\u201d but before doing so, please note that `\u27e8dir\u27e9/bin` normally\n contains `python`, `python3` and `pip` executables that would then also\n be in your `PATH`\u2014your call.\n\nIf the underlying Python installation for a venv is updated (as in,\nupgraded from Python X.Y to Python X.Y+1) or if the venv directory is\nmoved elsewhere (which includes one of its parents being moved or\nrenamed), you'll have to recreate the venv: simply delete the `\u27e8dir\u27e9`\ndirectory and redo the preceding steps (if you use a \u201cmain venv\u201d with a\nbunch of packages, having a script to recreate it is convenient).\n\n### Installing Using `pip`\n\nThe Python distribution package this document belongs to is called\n`flightgear` (case doesn't matter) and normal installations should be done\nwith [pip](https://pip.pypa.io/), for instance:\n\n pip install flightgear\n\nThis would install the latest release. It is also possible to install\nusing the URL of a Git repository:\n\n pip install git+https://gitlab.com/flightgear/fgmeta-python.git@next\n\n(here, `@next` could be removed as `next` is the default branch). Another\ninteresting possibility is to install from a local clone of the\nrepository. Assuming you have one in directory `/path/to/fgmeta-python`,\nyou could install the package with:\n\n pip install /path/to/fgmeta-python\n\n(This may show an error due to outdated packages; in this case, run\n`pip install -U build pip setuptools` and retry.)\n\nFinally, given the target audience of this package and since releases may\nnot be that frequent, an interesting variation is to add option `-e`, like\nso:\n\n pip install -e /path/to/fgmeta-python\n\nThis performs the installation in *editable mode*. This has the\nconsequence that updates to Python files that belong to the package under\n`/path/to/fgmeta-python` are immediately visible to the Python\ninstallation or venv in which you installed the package. This is perfect\nfor developing the package, or if you want to get the latest state of the\ncode by simply updating the `fgmeta-python` repository.\n\nInstallations done with `pip` perform two things:\n\n- they install Python modules so that Python can import them (here, the\n `flightgear` import package would be in Python's `sys.path`);\n\n- they create scripts in the `bin` subdirectory of the Python installation\n or venv: this is the case for scripts declared as such in the\n `pyproject.toml` file.\n\nAnother possibility that doesn't use `pip`, explained below in more\ndetail, is to modify `PYTHONPATH` yourself; however, this only covers the\nfirst item of the previous list.\n\n### Upgrading Using `pip`\n\nIf you installed a release of the package, upgrading it can be done with\nthe following command, where option `-U` is a shorthand for `--upgrade`:\n\n pip install -U flightgear\n\nIf, on the other hand, you installed in editable mode from a clone of the\n`fgmeta-python` repository, simply update the repository (for changes like\ninstalled scripts or dependencies being added to or removed from\n`pyproject.toml`, you'll need to redo the `pip install -e` step too).\n\n### Uninstalling Using `pip`\n\nUninstallation of the package using `pip` can be done with:\n\n pip uninstall flightgear\n\n(yes, even if you installed with `pip install -e /path/to/fgmeta-python`).\n\n### Partial Installation Without `pip`\n\nThis section describes a partial installation method. It may be helpful in\nsome cases but isn't equivalent to normal installation with `pip`.\n\nThis method consists in modifying the `sys.path` value seen by the Python\ninterpreter, either by adding an element (directory) to the `PYTHONPATH`\nenvironment variable or by creating a `.pth` file. This has a few\ndrawbacks as compared to the installation with `pip`:\n\n- it won't warn you if your Python version is unsuitable for running the\n code contained in the package;\n\n- it won't warn you if you don't have required dependencies (whereas `pip`\n would automatically install them for you);\n\n- it won't create the scripts declared in the `pyproject.toml` file\n (however, they can currently be invoked as Python modules).\n\nSo, how does it work? For instance, you can use something like the\nfollowing in your shell setup:\n\n export PYTHONPATH=\"/path/to/fgmeta-python/src\"\n\nThis example uses Bourne-style shell syntax; adjust for your particular\nshell. Several directories may be added this way using a colon separator\non Unix or macOS (`:`), and a semicolon on Windows (`;`).\n\nAn alternative to setting `PYTHONPATH` is to add `.pth` files in special\ndirectories of your Python installation(s). For instance, you could create\na file, say, `fgmeta-python.pth`, containing a single line (with no space\nat the beginning):\n\n /path/to/fgmeta-python/src\n\nIf you want the modules present in `/path/to/fgmeta-python/src` to be\naccessible to a particular Python interpreter (say, a Python\u00a03.13), simply\nput the `.pth` file in\n`/path/to/python-install-dir/lib/python3.13/site-packages/`. For the\nsystem Python interpreters on Debian, you can put the `.pth` file in, e.g,\n`/usr/local/lib/python3.13/dist-packages/`. You may put several lines in a\n`.pth` file in case you want to add several paths to the Python\ninterpreter's `sys.path`.\n\nNote that if you use this method, you won't have the scripts declared in\nthe `pyproject.toml` file that `pip` would create in normal installations.\n\n## The Scripts\n\nRegardless of the method chosen for installation, the Python modules from\n`fgmeta-python/src` should be available to the chosen Python interpreter\n(if you installed in a venv whose base directory is `\u27e8dir\u27e9`, the\ninterpreter is `\u27e8dir\u27e9/bin/python`). What about scripts that rely on these\nmodules?\n\nNormally, scripts are declared in the `pyproject.toml` file and\nautomatically created by the `pip install` command in the `bin`\nsubdirectory of the Python installation or venv. These scripts work out of\nthe box, can be invoked directly.\n\nThere are a few other scripts, like currently `catalog/update-catalog.py`,\nwhich exist as files in the repository rather than being declared in\n`pyproject.toml`. As long as the required modules are available to the\nPython interpreter in use (i.e., accessible via its `sys.path`), such\nscripts will work too. For instance, if you installed the package in a\n`\u27e8dir\u27e9` venv, `\u27e8dir\u27e9/bin/python` is a Python interpreter that can see the\nmodules, therefore `\u27e8dir\u27e9/bin/python some-script` would be a suitable\ncommand for running `some-script`.\n\nThe only remaining problem is therefore the following: if you used the\npartial installation method, you don't have the scripts that `pip install`\nwould have normally created for you. However, these scripts are currently\navailable as Python modules. For instance, the file\n`src/flightgear/meta/scripts/i18n/fg_extract_translatable_strings.py`\ncan be imported as a Python module. Example: the command\n\n python3 -m flightgear.meta.scripts.i18n.fg_extract_translatable_strings --help\n\nis equivalent to\n\n fg-extract-translatable-strings --help\n\nThis might be useful for one-off uses of the scripts where one doesn't\nnecessarily want to run `pip`: one could set `PYTHONPATH` and run the\ndesired module(s) as shown above (the obvious alternative being to create\na temporary venv and use the normal installation method).\n\n## Running the Unit Tests\n\nOnce the modules from this package are visible to Python (regardless of\nthe method used), the unit tests can be run with the following command\nfrom the root of the `fgmeta-python` repository:\n\n python3 -m unittest\n\n(this is equivalent to `python3 -m unittest discover`; for more details,\nsee `tests/README.md`).\n\n## Building the Package\n\nIn case you want to build the package, you can run the following command\nfrom the root of the `fgmeta-python` repository:\n\n python3 -m build\n\nThis requires the Python `build` tool as explained in the\n[Python Packaging User Guide](https://packaging.python.org/en/latest/guides/distributing-packages-using-setuptools/#packaging-your-project).\n",
"bugtrack_url": null,
"license": null,
"summary": "Tooling for the FlightGear flight simulator",
"version": "1.0.0b1",
"project_urls": {
"Homepage": "https://www.flightgear.org/",
"Issues": "https://gitlab.com/flightgear/fgmeta-python/-/issues",
"Repository": "https://gitlab.com/flightgear/fgmeta-python/"
},
"split_keywords": [
"flightgear",
" flightgear",
" flight",
" simulator",
" tools"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "e332374cc9ee9a21647d286f1a741c8b56c5c7e8f012d0cff44d594c38bee9e5",
"md5": "1c6097119b177b0a681e9fd3e53ab4f1",
"sha256": "bb3606762d3bd7665e6ecac364855661b1a7fa34de504dbdfcb4cc3556490414"
},
"downloads": -1,
"filename": "flightgear-1.0.0b1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "1c6097119b177b0a681e9fd3e53ab4f1",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8",
"size": 98806,
"upload_time": "2025-10-23T12:47:48",
"upload_time_iso_8601": "2025-10-23T12:47:48.838161Z",
"url": "https://files.pythonhosted.org/packages/e3/32/374cc9ee9a21647d286f1a741c8b56c5c7e8f012d0cff44d594c38bee9e5/flightgear-1.0.0b1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "80cc3c45a21498546c1ef5a16eba78cf933509bd4aa40d7a2b19754751c2fbe9",
"md5": "e48afbe6b59cedcbb6c6a6c555976584",
"sha256": "07f1c31482b8e207c2bedbeb29af86f5efde287b44a3a759df2eed3b0fae7250"
},
"downloads": -1,
"filename": "flightgear-1.0.0b1.tar.gz",
"has_sig": false,
"md5_digest": "e48afbe6b59cedcbb6c6a6c555976584",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 87122,
"upload_time": "2025-10-23T12:47:50",
"upload_time_iso_8601": "2025-10-23T12:47:50.068237Z",
"url": "https://files.pythonhosted.org/packages/80/cc/3c45a21498546c1ef5a16eba78cf933509bd4aa40d7a2b19754751c2fbe9/flightgear-1.0.0b1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-10-23 12:47:50",
"github": false,
"gitlab": true,
"bitbucket": false,
"codeberg": false,
"gitlab_user": "flightgear",
"gitlab_project": "fgmeta-python",
"lcname": "flightgear"
}