Switch to new toml library
The previous library, pytoml from https://github.com/avakar/pytoml is no longer supported. So this adds a compatibility layer on top of the suggested replacement, toml from https://github.com/uiri/toml
This commit is contained in:
parent
932ff5812c
commit
abe7df34fc
@ -17,7 +17,7 @@ RUN dnf -y install \
|
|||||||
python3-pycdlib \
|
python3-pycdlib \
|
||||||
python3-pylint \
|
python3-pylint \
|
||||||
python3-pyparted \
|
python3-pyparted \
|
||||||
python3-pytoml \
|
python3-toml \
|
||||||
python3-semantic_version \
|
python3-semantic_version \
|
||||||
python3-sphinx \
|
python3-sphinx \
|
||||||
python3-sphinx-argparse \
|
python3-sphinx-argparse \
|
||||||
|
@ -132,14 +132,14 @@ Lorax templates for creating the boot.iso and live isos are placed in
|
|||||||
%package composer
|
%package composer
|
||||||
Summary: Lorax Image Composer API Server
|
Summary: Lorax Image Composer API Server
|
||||||
# For Sphinx documentation build
|
# For Sphinx documentation build
|
||||||
BuildRequires: python3-flask python3-gobject libgit2-glib python3-pytoml python3-semantic_version
|
BuildRequires: python3-flask python3-gobject libgit2-glib python3-toml python3-semantic_version
|
||||||
|
|
||||||
Requires: lorax = %{version}-%{release}
|
Requires: lorax = %{version}-%{release}
|
||||||
Requires(pre): /usr/bin/getent
|
Requires(pre): /usr/bin/getent
|
||||||
Requires(pre): /usr/sbin/groupadd
|
Requires(pre): /usr/sbin/groupadd
|
||||||
Requires(pre): /usr/sbin/useradd
|
Requires(pre): /usr/sbin/useradd
|
||||||
|
|
||||||
Requires: python3-pytoml
|
Requires: python3-toml
|
||||||
Requires: python3-semantic_version
|
Requires: python3-semantic_version
|
||||||
Requires: libgit2
|
Requires: libgit2
|
||||||
Requires: libgit2-glib
|
Requires: libgit2-glib
|
||||||
|
@ -37,7 +37,6 @@ import os
|
|||||||
from glob import glob
|
from glob import glob
|
||||||
from io import StringIO
|
from io import StringIO
|
||||||
from math import ceil
|
from math import ceil
|
||||||
import pytoml as toml
|
|
||||||
import shutil
|
import shutil
|
||||||
from uuid import uuid4
|
from uuid import uuid4
|
||||||
|
|
||||||
@ -51,6 +50,7 @@ from pylorax.api.projects import projects_depsolve, projects_depsolve_with_size,
|
|||||||
from pylorax.api.projects import ProjectsError
|
from pylorax.api.projects import ProjectsError
|
||||||
from pylorax.api.recipes import read_recipe_and_id
|
from pylorax.api.recipes import read_recipe_and_id
|
||||||
from pylorax.api.timestamp import TS_CREATED, write_timestamp
|
from pylorax.api.timestamp import TS_CREATED, write_timestamp
|
||||||
|
import pylorax.api.toml as toml
|
||||||
from pylorax.base import DataHolder
|
from pylorax.base import DataHolder
|
||||||
from pylorax.imgutils import default_image_name
|
from pylorax.imgutils import default_image_name
|
||||||
from pylorax.ltmpl import LiveTemplateRunner
|
from pylorax.ltmpl import LiveTemplateRunner
|
||||||
|
@ -21,7 +21,6 @@ import os
|
|||||||
import grp
|
import grp
|
||||||
from glob import glob
|
from glob import glob
|
||||||
import multiprocessing as mp
|
import multiprocessing as mp
|
||||||
import pytoml as toml
|
|
||||||
import pwd
|
import pwd
|
||||||
import shutil
|
import shutil
|
||||||
import subprocess
|
import subprocess
|
||||||
@ -32,6 +31,7 @@ from pylorax import find_templates
|
|||||||
from pylorax.api.compose import move_compose_results
|
from pylorax.api.compose import move_compose_results
|
||||||
from pylorax.api.recipes import recipe_from_file
|
from pylorax.api.recipes import recipe_from_file
|
||||||
from pylorax.api.timestamp import TS_CREATED, TS_STARTED, TS_FINISHED, write_timestamp, timestamp_dict
|
from pylorax.api.timestamp import TS_CREATED, TS_STARTED, TS_FINISHED, write_timestamp, timestamp_dict
|
||||||
|
import pylorax.api.toml as toml
|
||||||
from pylorax.base import DataHolder
|
from pylorax.base import DataHolder
|
||||||
from pylorax.creator import run_creator
|
from pylorax.creator import run_creator
|
||||||
from pylorax.sysutils import joinpaths
|
from pylorax.sysutils import joinpaths
|
||||||
|
@ -22,12 +22,12 @@ from gi.repository import Gio
|
|||||||
from gi.repository import GLib
|
from gi.repository import GLib
|
||||||
|
|
||||||
import os
|
import os
|
||||||
import pytoml as toml
|
|
||||||
import semantic_version as semver
|
import semantic_version as semver
|
||||||
|
|
||||||
from pylorax.api.projects import dep_evra
|
from pylorax.api.projects import dep_evra
|
||||||
from pylorax.base import DataHolder
|
from pylorax.base import DataHolder
|
||||||
from pylorax.sysutils import joinpaths
|
from pylorax.sysutils import joinpaths
|
||||||
|
import pylorax.api.toml as toml
|
||||||
|
|
||||||
|
|
||||||
class CommitTimeValError(Exception):
|
class CommitTimeValError(Exception):
|
||||||
|
@ -15,10 +15,10 @@
|
|||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
#
|
#
|
||||||
|
|
||||||
import pytoml as toml
|
|
||||||
import time
|
import time
|
||||||
|
|
||||||
from pylorax.sysutils import joinpaths
|
from pylorax.sysutils import joinpaths
|
||||||
|
import pylorax.api.toml as toml
|
||||||
|
|
||||||
TS_CREATED = "created"
|
TS_CREATED = "created"
|
||||||
TS_STARTED = "started"
|
TS_STARTED = "started"
|
||||||
|
32
src/pylorax/api/toml.py
Normal file
32
src/pylorax/api/toml.py
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
#
|
||||||
|
# Copyright (C) 2019 Red Hat, Inc.
|
||||||
|
#
|
||||||
|
# This program is free software; you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation; either version 2 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
#
|
||||||
|
|
||||||
|
import toml
|
||||||
|
|
||||||
|
class TomlError(toml.TomlDecodeError):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def loads(s):
|
||||||
|
if isinstance(s, bytes):
|
||||||
|
s = s.decode('utf-8')
|
||||||
|
try:
|
||||||
|
return toml.loads(s)
|
||||||
|
except toml.TomlDecodeError as e:
|
||||||
|
raise TomlError(e.msg, e.doc, e.pos)
|
||||||
|
|
||||||
|
def dumps(o):
|
||||||
|
return toml.dumps(o, encoder=toml.TomlEncoder(dict))
|
@ -54,7 +54,6 @@ log = logging.getLogger("lorax-composer")
|
|||||||
import os
|
import os
|
||||||
from flask import jsonify, request, Response, send_file
|
from flask import jsonify, request, Response, send_file
|
||||||
from flask import current_app as api
|
from flask import current_app as api
|
||||||
import pytoml as toml
|
|
||||||
|
|
||||||
from pylorax.sysutils import joinpaths
|
from pylorax.sysutils import joinpaths
|
||||||
from pylorax.api.checkparams import checkparams
|
from pylorax.api.checkparams import checkparams
|
||||||
@ -70,6 +69,7 @@ from pylorax.api.recipes import RecipeError, list_branch_files, read_recipe_comm
|
|||||||
from pylorax.api.recipes import recipe_from_dict, recipe_from_toml, commit_recipe, delete_recipe, revert_recipe
|
from pylorax.api.recipes import recipe_from_dict, recipe_from_toml, commit_recipe, delete_recipe, revert_recipe
|
||||||
from pylorax.api.recipes import tag_recipe_commit, recipe_diff, RecipeFileError
|
from pylorax.api.recipes import tag_recipe_commit, recipe_diff, RecipeFileError
|
||||||
from pylorax.api.regexes import VALID_API_STRING
|
from pylorax.api.regexes import VALID_API_STRING
|
||||||
|
import pylorax.api.toml as toml
|
||||||
from pylorax.api.workspace import workspace_read, workspace_write, workspace_delete
|
from pylorax.api.workspace import workspace_read, workspace_write, workspace_delete
|
||||||
|
|
||||||
# The API functions don't actually get called by any code here
|
# The API functions don't actually get called by any code here
|
||||||
|
@ -15,7 +15,6 @@
|
|||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
#
|
#
|
||||||
import os
|
import os
|
||||||
import pytoml as toml
|
|
||||||
import rpm
|
import rpm
|
||||||
import shutil
|
import shutil
|
||||||
import stat
|
import stat
|
||||||
@ -25,6 +24,7 @@ import unittest
|
|||||||
|
|
||||||
from ..lib import create_git_repo
|
from ..lib import create_git_repo
|
||||||
from pylorax.api.gitrpm import GitArchiveTarball, GitRpmBuild, make_git_rpm, create_gitrpm_repo
|
from pylorax.api.gitrpm import GitArchiveTarball, GitRpmBuild, make_git_rpm, create_gitrpm_repo
|
||||||
|
import pylorax.api.toml as toml
|
||||||
from pylorax.sysutils import joinpaths
|
from pylorax.sysutils import joinpaths
|
||||||
|
|
||||||
class GitArchiveTest(unittest.TestCase):
|
class GitArchiveTest(unittest.TestCase):
|
||||||
|
@ -16,13 +16,13 @@
|
|||||||
#
|
#
|
||||||
import os
|
import os
|
||||||
import mock
|
import mock
|
||||||
from pytoml import TomlError
|
|
||||||
import shutil
|
import shutil
|
||||||
import tempfile
|
import tempfile
|
||||||
import unittest
|
import unittest
|
||||||
|
|
||||||
import pylorax.api.recipes as recipes
|
import pylorax.api.recipes as recipes
|
||||||
from pylorax.api.compose import add_customizations, customize_ks_template
|
from pylorax.api.compose import add_customizations, customize_ks_template
|
||||||
|
from pylorax.api.toml import TomlError
|
||||||
from pylorax.sysutils import joinpaths
|
from pylorax.sysutils import joinpaths
|
||||||
|
|
||||||
from pykickstart.parser import KickstartParser
|
from pykickstart.parser import KickstartParser
|
||||||
@ -721,7 +721,7 @@ version = "2.7.*"
|
|||||||
recipes.commit_recipe_directory(self.repo, "master", self.examples_path)
|
recipes.commit_recipe_directory(self.repo, "master", self.examples_path)
|
||||||
|
|
||||||
# try to commit while raising TomlError
|
# try to commit while raising TomlError
|
||||||
with mock.patch('pylorax.api.recipes.commit_recipe_file', side_effect=TomlError('TESTING', 0, 0, '__test__')):
|
with mock.patch('pylorax.api.recipes.commit_recipe_file', side_effect=TomlError('TESTING', "", 0)):
|
||||||
recipes.commit_recipe_directory(self.repo, "master", self.examples_path)
|
recipes.commit_recipe_directory(self.repo, "master", self.examples_path)
|
||||||
|
|
||||||
# verify again that the newly created file isn't present b/c we raised an exception
|
# verify again that the newly created file isn't present b/c we raised an exception
|
||||||
|
@ -27,13 +27,13 @@ from threading import Lock
|
|||||||
import unittest
|
import unittest
|
||||||
|
|
||||||
from flask import json
|
from flask import json
|
||||||
import pytoml as toml
|
|
||||||
from ..lib import create_git_repo
|
from ..lib import create_git_repo
|
||||||
from pylorax.api.config import configure, make_dnf_dirs, make_queue_dirs
|
from pylorax.api.config import configure, make_dnf_dirs, make_queue_dirs
|
||||||
from pylorax.api.errors import * # pylint: disable=wildcard-import
|
from pylorax.api.errors import * # pylint: disable=wildcard-import
|
||||||
from pylorax.api.queue import start_queue_monitor
|
from pylorax.api.queue import start_queue_monitor
|
||||||
from pylorax.api.recipes import open_or_create_repo, commit_recipe_directory
|
from pylorax.api.recipes import open_or_create_repo, commit_recipe_directory
|
||||||
from pylorax.api.server import server, GitLock
|
from pylorax.api.server import server, GitLock
|
||||||
|
import pylorax.api.toml as toml
|
||||||
from pylorax.api.dnfbase import DNFLock
|
from pylorax.api.dnfbase import DNFLock
|
||||||
from pylorax.sysutils import joinpaths
|
from pylorax.sysutils import joinpaths
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user