Accepting request 708982 from devel:languages:python

OBS-URL: https://build.opensuse.org/request/show/708982
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-ana?expand=0&rev=4
This commit is contained in:
2019-06-12 11:15:47 +00:00
committed by Git OBS Bridge
7 changed files with 192 additions and 31 deletions

24
LICENSE
View File

@@ -1,24 +0,0 @@
Copyright (c) 2015, The Regents of the University of California
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

View File

@@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:463e69cb3079fabf1e952893e89d211736512ffe13ca7b320f743050cf2a1ac5
size 3132

3
ana-0.06.tar.gz Normal file
View File

@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:5fa16e511773a0efc6ac9294f93eee583612ffb580859737eed07e703947d6f8
size 5876

View File

@@ -1,3 +1,27 @@
-------------------------------------------------------------------
Mon Jun 10 14:19:34 UTC 2019 - Andreas Färber <afaerber@suse.de>
- Update to v0.06
* LICENSE and README.md files are now included in the tarball
* Repo URL is deprecated but no new one known (gh#zardus/ana#13)
- Don't overwrite tarball files with local copies
-------------------------------------------------------------------
Thu Jun 6 12:58:58 UTC 2019 - pgajdos@suse.com
- revert to previous behaviour: in case LICENSE, test.py or
test_pickle.p are shipped in future upstream version, do not
abort build (but also do not overwrite them)
-------------------------------------------------------------------
Thu Jun 6 07:33:30 UTC 2019 - pgajdos@suse.com
- run tests
- added sources
https://github.com/zardus/ana/issues/13
+ test.py
+ test_pickle.p
-------------------------------------------------------------------
Tue Dec 4 12:45:32 UTC 2018 - Matej Cepl <mcepl@suse.com>

View File

@@ -1,7 +1,7 @@
#
# spec file for package python-ana
#
# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -18,15 +18,18 @@
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
Name: python-ana
Version: 0.05
Version: 0.06
Release: 0
Summary: The Python "ana" module
License: BSD-2-Clause
Group: Development/Languages/Python
Url: https://github.com/zardus/ana
Source: https://files.pythonhosted.org/packages/source/a/ana/ana-%{version}.tar.gz
Source1: https://github.com/zardus/ana/raw/master/LICENSE
# https://github.com/zardus/ana/issues/13
Source2: https://raw.githubusercontent.com/zardus/ana/master/test.py
Source3: https://raw.githubusercontent.com/zardus/ana/master/test_pickle.p
BuildRequires: %{python_module future}
BuildRequires: %{python_module nose}
BuildRequires: %{python_module setuptools}
BuildRequires: fdupes
BuildRequires: python-rpm-macros
@@ -41,7 +44,8 @@ A Python module that provides an undocumented data layer for Python objects.
%prep
%setup -q -n ana-%{version}
[ -e LICENSE ] || cp %{SOURCE1} LICENSE
[ -e test.py ] || cp %{SOURCE2} test.py
[ -e test_pickle.p ] || cp %{SOURCE3} test_pickle.p
%build
%python_build
@@ -50,9 +54,13 @@ A Python module that provides an undocumented data layer for Python objects.
%python_install
%python_expand %fdupes %{buildroot}%{$python_sitelib}
%check
%python_expand nosetests-%{$python_bin_suffix} -v
%files %{python_files}
%defattr(-,root,root,-)
%license LICENSE
%doc README.md
%{python_sitelib}/*
%changelog

140
test.py Normal file
View File

@@ -0,0 +1,140 @@
import os
import gc
import ana
import nose
import pickle
import logging
l = logging.getLogger("ana.test")
class A(ana.Storable):
def __init__(self, n):
nose.tools.assert_false(hasattr(self, 'n'))
self.n = n
l.debug("%s.__init__", self)
def __repr__(self):
return "<A %s>" % str(self.n)
def _ana_getstate(self):
l.debug("%s._ana_getstate", self)
return (self.n,)
def _ana_setstate(self, s):
self.n = s[0]
l.debug("%s._ana_setstate", self)
def _ana_getliteral(self):
return { 'n': self.n }
def test_simple():
ana.set_dl(ana.SimpleDataLayer())
one = A(1)
one.make_uuid()
o = pickle.dumps(one)
one_copy = pickle.loads(o)
assert one is one_copy
two = A(1)
t = pickle.dumps(one)
two_copy = pickle.loads(t)
assert two_copy is not two
assert pickle.load(open(os.path.join(os.path.dirname(__file__), 'test_pickle.p'), 'rb')).n == 1337
def write_a1337():
a1337 = A(1337)
a1337.make_uuid()
pickle.dump(a1337, open(os.path.join(os.path.dirname(__file__), 'test_pickle.p'), 'w'))
def test_dict():
ana.set_dl(ana.DictDataLayer())
l.debug("Initializing 1")
one = A(1)
l.debug("Initializing 2")
two = A(2)
one.make_uuid()
l.debug("Copying 1")
one_p = pickle.dumps(one)
one_copy = pickle.loads(one_p)
l.debug("Copying 2")
two_p = pickle.dumps(two)
two_copy = pickle.loads(two_p)
nose.tools.assert_is(one_copy, one)
nose.tools.assert_is_not(two_copy, two)
nose.tools.assert_equal(str(two_copy), str(two))
nose.tools.assert_is(one, A.ana_load(one.ana_store()))
nose.tools.assert_is(two, A.ana_load(two.ana_store()))
two_copy2 = pickle.loads(pickle.dumps(two))
nose.tools.assert_equal(str(two_copy2), str(two))
l.debug("Initializing 3")
three = A(3)
three_str = str(three)
l.debug("Storing 3")
three_uuid = three.ana_store()
l.debug("Deleting 3")
del three
gc.collect()
nose.tools.assert_false(three_uuid in ana.get_dl().uuid_cache)
l.debug("Loading 3")
three_copy = A.ana_load(three_uuid)
nose.tools.assert_equal(three_copy.ana_uuid, three_uuid) #pylint:disable=no-member
nose.tools.assert_equal(str(three_copy), three_str)
known = set()
first_json = three_copy.to_literal(known)
nose.tools.assert_true(three_copy.ana_uuid in first_json['objects'])
nose.tools.assert_equal(first_json['objects'][three_copy.ana_uuid]['object']['n'], three_copy.n)
nose.tools.assert_equal(first_json['value']['ana_uuid'], three_copy.ana_uuid)
second_json = three_copy.to_literal(known)
nose.tools.assert_false(three_copy.ana_uuid in second_json['objects'])
nose.tools.assert_equal(second_json['value']['ana_uuid'], three_copy.ana_uuid)
def test_dir():
ana.dl = ana.DirDataLayer(pickle_dir="/tmp/test_ana")
one = A(1)
nose.tools.assert_is(one, A.ana_load(one.ana_store()))
nose.tools.assert_true(os.path.exists("/tmp/test_ana/%s.p" % one.ana_uuid))
uuid = one.ana_uuid
old_id = id(one)
del one
gc.collect()
ana.dl = ana.DirDataLayer(pickle_dir="/tmp/test_ana")
two = A.ana_load(uuid)
nose.tools.assert_equals(uuid, two.ana_uuid)
nose.tools.assert_not_equals(old_id, id(two))
# reset the datalayer to make sure we handle it properly
ana.set_dl(ana.DictDataLayer())
try:
two = A.ana_load(uuid)
assert False
except KeyError:
pass
two.ana_store()
del two
three = A.ana_load(uuid)
assert uuid, three.ana_uuid
if __name__ == '__main__':
import sys
logging.getLogger("ana.test").setLevel(logging.DEBUG)
logging.getLogger("ana.storable").setLevel(logging.DEBUG)
logging.getLogger("ana.datalayer").setLevel(logging.DEBUG)
logging.getLogger("ana.d").setLevel(logging.DEBUG)
if len(sys.argv) > 1:
globals()['test_%s' % sys.argv[1]]()
else:
test_simple()
test_dict()
test_dir()

13
test_pickle.p Normal file
View File

@@ -0,0 +1,13 @@
cana.d
D
p0
(S'bcf9e574-7901-4292-8873-5423edb1ca1c'
p1
ctest
A
p2
(I1337
tp3
tp4
Rp5
.