[paludis-commits] r4108 - in trunk: . python
peper at svn.pioto.org
peper at svn.pioto.org
Sun Dec 30 18:35:23 UTC 2007
Author: peper
Date: 2007-12-30 18:35:12 +0000 (Sun, 30 Dec 2007)
New Revision: 4108
Added:
trunk/python/use_requirements.cc
trunk/python/use_requirements_TEST.py
Modified:
trunk/ChangeLog
trunk/python/Makefile.am
trunk/python/dep_spec.cc
trunk/python/dep_spec_TEST.py
trunk/python/paludis_python.hh
trunk/python/paludis_python_so.cc
Log:
(python) Fix UseRequirements after r4105. Fixes: ticket:464.
Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog 2007-12-30 18:34:49 UTC (rev 4107)
+++ trunk/ChangeLog 2007-12-30 18:35:12 UTC (rev 4108)
@@ -7,6 +7,12 @@
2007-12-30 Piotr Jaroszyński
+ * python/: (python) Fix UseRequirements after r4105.
+
+ + Fixes: ticket:464
+
+2007-12-30 Piotr Jaroszyński
+
* python/validated.hh: (python) Add operators to Validated.
2007-12-30 Piotr Jaroszyński
Modified: trunk/python/Makefile.am
===================================================================
--- trunk/python/Makefile.am 2007-12-30 18:34:49 UTC (rev 4107)
+++ trunk/python/Makefile.am 2007-12-30 18:35:12 UTC (rev 4108)
@@ -27,6 +27,7 @@
version_operator_TEST.py \
version_requirements_TEST.py \
contents_TEST.py \
+ use_requirements_TEST.py \
dep_spec_TEST.py \
dep_tag_TEST.py \
dep_label_TEST.py \
@@ -72,6 +73,7 @@
package_id.cc \
query.cc \
repository.cc \
+ use_requirements.cc \
version_operator.cc \
version_requirements.cc \
version_spec.cc
Modified: trunk/python/dep_spec.cc
===================================================================
--- trunk/python/dep_spec.cc 2007-12-30 18:34:49 UTC (rev 4107)
+++ trunk/python/dep_spec.cc 2007-12-30 18:35:12 UTC (rev 4108)
@@ -1176,22 +1176,6 @@
;
/**
- * UseRequirements
- */
- bp::to_python_converter<std::pair<const UseFlagName, UseFlagState>,
- pair_to_tuple<const UseFlagName, UseFlagState> >();
- register_shared_ptrs_to_python<UseRequirements>();
- bp::class_<UseRequirements>
- (
- "UseRequirements",
- "A selection of USE flag requirements.",
- bp::no_init
- )
-
- .def("__iter__", bp::range(&UseRequirements::begin, &UseRequirements::end))
- ;
-
- /**
* PackageDepSpec
*/
Modified: trunk/python/dep_spec_TEST.py
===================================================================
--- trunk/python/dep_spec_TEST.py 2007-12-30 18:34:49 UTC (rev 4107)
+++ trunk/python/dep_spec_TEST.py 2007-12-30 18:35:12 UTC (rev 4108)
@@ -79,11 +79,10 @@
self.get_depspecs()
self.assertEquals(self.pds.version_requirements_mode, VersionRequirementsMode.AND)
-### def test_09_use_requirements(self):
-### spec = parse_user_package_dep_spec("foo/monkey[foo]", UserPackageDepSpecOptions())
-### ur = iter(spec.use_requirements).next()
-### self.assertEquals(str(ur[0]), "foo")
-### self.assertEquals(ur[1], UseFlagState.ENABLED)
+ def test_09_use_requirements(self):
+ spec = parse_user_package_dep_spec("foo/monkey[foo]", UserPackageDepSpecOptions())
+ ur = iter(spec.use_requirements).next()
+ self.assert_(isinstance(ur, EnabledUseRequirement))
def test_10_without_use_requirements(self):
spec = parse_user_package_dep_spec("foo/monkey[foo]", UserPackageDepSpecOptions())
Modified: trunk/python/paludis_python.hh
===================================================================
--- trunk/python/paludis_python.hh 2007-12-30 18:34:49 UTC (rev 4107)
+++ trunk/python/paludis_python.hh 2007-12-30 18:35:12 UTC (rev 4108)
@@ -177,6 +177,7 @@
void expose_qa() PALUDIS_VISIBLE;
void expose_query() PALUDIS_VISIBLE;
void expose_repository() PALUDIS_VISIBLE;
+void expose_use_requirements() PALUDIS_VISIBLE;
void expose_version_operator() PALUDIS_VISIBLE;
void expose_version_requirements() PALUDIS_VISIBLE;
void expose_version_spec() PALUDIS_VISIBLE;
Modified: trunk/python/paludis_python_so.cc
===================================================================
--- trunk/python/paludis_python_so.cc 2007-12-30 18:34:49 UTC (rev 4107)
+++ trunk/python/paludis_python_so.cc 2007-12-30 18:35:12 UTC (rev 4108)
@@ -36,6 +36,7 @@
expose_version_requirements();
expose_fs_entry();
expose_contents();
+ expose_use_requirements();
expose_dep_spec();
expose_dep_tag();
expose_dep_label();
Added: trunk/python/use_requirements.cc
===================================================================
--- trunk/python/use_requirements.cc (rev 0)
+++ trunk/python/use_requirements.cc 2007-12-30 18:35:12 UTC (rev 4108)
@@ -0,0 +1,147 @@
+/* vim: set sw=4 sts=4 et foldmethod=syntax : */
+
+/*
+ * Copyright (c) 2007 Piotr Jaroszyński
+ *
+ * This file is part of the Paludis package manager. Paludis is free software;
+ * you can redistribute it and/or modify it under the terms of the GNU General
+ * Public License version 2, as published by the Free Software Foundation.
+ *
+ * Paludis 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, write to the Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#include <python/paludis_python.hh>
+
+#include <paludis/use_requirements.hh>
+#include <paludis/util/wrapped_forward_iterator-impl.hh>
+#include <paludis/util/visitor-impl.hh>
+
+using namespace paludis;
+using namespace paludis::python;
+namespace bp = boost::python;
+
+struct UseRequirementsWrapper
+{
+ static PyObject *
+ find(const UseRequirements & self, const UseFlagName & u)
+ {
+ UseRequirements::ConstIterator i(self.find(u));
+ if (i != self.end())
+ return bp::incref(bp::object(*i).ptr());
+ else
+ return Py_None;
+ }
+};
+
+void expose_use_requirements()
+{
+ /**
+ * UseRequirements
+ */
+ register_shared_ptrs_to_python<UseRequirements>();
+ bp::class_<UseRequirements>
+ (
+ "UseRequirements",
+ "A selection of USE flag requirements.",
+ bp::no_init
+ )
+
+ .def("empty", &UseRequirements::empty,
+ "empty() -> bool\n"
+ "Are we empty?"
+ )
+
+ .def("find", UseRequirementsWrapper::find,
+ "find(UseFlagName) -> UseRequirement\n"
+ "Find the requirement for a particular USE flag."
+ )
+
+ .def("insert", &UseRequirements::insert,
+ "insert(UseRequirement)\n"
+ "Insert a new requirement."
+ )
+
+ .def("__iter__", bp::range(&UseRequirements::begin, &UseRequirements::end))
+ ;
+
+ /**
+ * UseRequirement
+ */
+ register_shared_ptrs_to_python<UseRequirement>();
+ bp::class_<UseRequirement, boost::noncopyable>
+ (
+ "UseRequirement",
+ "A requirement for a use flag.",
+ bp::no_init
+ )
+
+ .def("flag", &UseRequirement::flag,
+ "flag() -> UseFlagName\n"
+ "Our use flag."
+ )
+ ;
+
+ /**
+ * EnabledUseRequirement
+ */
+ bp::class_<EnabledUseRequirement, bp::bases<UseRequirement>, tr1::shared_ptr<EnabledUseRequirement> >
+ (
+ "EnabledUseRequirement",
+ "An enabled requirement for a use flag.",
+ bp::init<const UseFlagName &>("__init__(UseFlagName)")
+ );
+
+ /**
+ * DisabledUseRequirement
+ */
+ bp::class_<DisabledUseRequirement, bp::bases<UseRequirement> >
+ (
+ "DisabledUseRequirement",
+ "A disabled requirement for a use flag.",
+ bp::init<const UseFlagName &>("__init__(UseFlagName)")
+ );
+
+ /**
+ * EqualUseRequirement
+ */
+ bp::class_<EqualUseRequirement, bp::bases<UseRequirement> >
+ (
+ "EqualUseRequirement",
+ "An equal requirement for a use flag.",
+ bp::init<const UseFlagName &, const tr1::shared_ptr<const PackageID> &>(
+ "__init__(UseFlagName, PackageID)"
+ )
+ )
+
+ .def("package_id", &EqualUseRequirement::package_id,
+ "package_id() -> PackageID\n"
+ "Our package."
+ )
+ ;
+
+ /**
+ * NotEqualUseRequirement
+ */
+ bp::class_<NotEqualUseRequirement, bp::bases<UseRequirement> >
+ (
+ "NotEqualUseRequirement",
+ "A not equal requirement for a use flag.",
+ bp::init<const UseFlagName &, const tr1::shared_ptr<const PackageID> &>(
+ "__init__(UseFlagName, PackageID)"
+ )
+ )
+
+ .def("package_id", &NotEqualUseRequirement::package_id,
+ "package_id() -> PackageID\n"
+ "Our package."
+ )
+ ;
+
+}
Added: trunk/python/use_requirements_TEST.py
===================================================================
--- trunk/python/use_requirements_TEST.py (rev 0)
+++ trunk/python/use_requirements_TEST.py 2007-12-30 18:35:12 UTC (rev 4108)
@@ -0,0 +1,50 @@
+#!/usr/bin/env python
+# vim: set fileencoding=utf-8 sw=4 sts=4 et :
+
+#
+# Copyright (c) 2007 Piotr Jaroszyński
+#
+# This file is part of the Paludis package manager. Paludis is free software;
+# you can redistribute it and/or modify it under the terms of the GNU General
+# Public License version 2, as published by the Free Software Foundation.
+#
+# Paludis 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, write to the Free Software Foundation, Inc., 59 Temple
+# Place, Suite 330, Boston, MA 02111-1307 USA
+#
+
+from paludis import *
+import unittest
+
+class TestCase_1_UseRequirements(unittest.TestCase):
+ def setUp(self):
+ self.e = TestEnvironment()
+ self.r = FakeRepository(self.e, "fake")
+ self.pid = self.r.add_version("cat/pkg", "1")
+
+ self.ur1 = EnabledUseRequirement("foo")
+ self.ur2 = DisabledUseRequirement("foo")
+ self.ur3 = EqualUseRequirement("foo", self.pid)
+ self.ur4 = NotEqualUseRequirement("foo", self.pid)
+
+ def test_01_create(self):
+ self.assertRaises(Exception, UseRequirement)
+
+ def test_02_flag(self):
+ self.assertEquals(self.ur1.flag(), UseFlagName("foo"))
+ self.assertEquals(self.ur2.flag(), UseFlagName("foo"))
+ self.assertEquals(self.ur3.flag(), UseFlagName("foo"))
+ self.assertEquals(self.ur4.flag(), UseFlagName("foo"))
+
+ def test_03_package_id(self):
+ self.assertEquals(self.ur3.package_id(), self.pid)
+ self.assertEquals(self.ur4.package_id(), self.pid)
+
+
+if __name__ == "__main__":
+ unittest.main()
Property changes on: trunk/python/use_requirements_TEST.py
___________________________________________________________________
Name: svn:executable
+ *
More information about the paludis-commits
mailing list