Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-plette for openSUSE:Factory 
checked in at 2023-01-07 17:19:31
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-plette (Old)
 and      /work/SRC/openSUSE:Factory/.python-plette.new.1563 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-plette"

Sat Jan  7 17:19:31 2023 rev:5 rq:1056677 version:0.4.4

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-plette/python-plette.changes      
2022-10-18 12:45:24.765780136 +0200
+++ /work/SRC/openSUSE:Factory/.python-plette.new.1563/python-plette.changes    
2023-01-07 17:22:52.263285885 +0100
@@ -1,0 +2,11 @@
+Fri Jan  6 17:11:13 UTC 2023 - Yogalakshmi Arunachalam <[email protected]>
+
+- Update to 0.4.4 
+  * Add validation for pipenv section
+  * Add more tests
+
+- Update to 0.4.3 (2022-12-13)
+  Bug Fixes
+  * Validate that package extras are a list
+
+-------------------------------------------------------------------

Old:
----
  plette-0.4.2.tar.gz

New:
----
  plette-0.4.4.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-plette.spec ++++++
--- /var/tmp/diff_new_pack.dQAdFE/_old  2023-01-07 17:22:52.723288629 +0100
+++ /var/tmp/diff_new_pack.dQAdFE/_new  2023-01-07 17:22:52.731288678 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package python-plette
 #
-# Copyright (c) 2022 SUSE LLC
+# Copyright (c) 2023 SUSE LLC
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -18,7 +18,7 @@
 
 %{?!python_module:%define python_module() python-%{**} python3-%{**}}
 Name:           python-plette
-Version:        0.4.2
+Version:        0.4.4
 Release:        0
 Summary:        Structured Pipfile and Pipfile.lock models
 License:        ISC
@@ -28,7 +28,7 @@
 # See https://github.com/sarugaku/plette/issues/8
 Patch0:         ignore-hashlib-case.patch
 BuildRequires:  %{python_module pip}
-BuildRequires:  %{python_module setuptools >= 36.2.2}
+BuildRequires:  %{python_module setuptools >= 61.0.0}
 BuildRequires:  %{python_module wheel}
 BuildRequires:  fdupes
 BuildRequires:  python-rpm-macros

++++++ plette-0.4.2.tar.gz -> plette-0.4.4.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/plette-0.4.2/CHANGELOG.rst 
new/plette-0.4.4/CHANGELOG.rst
--- old/plette-0.4.2/CHANGELOG.rst      2022-10-11 22:24:30.000000000 +0200
+++ new/plette-0.4.4/CHANGELOG.rst      2022-12-15 19:57:11.000000000 +0100
@@ -1,3 +1,16 @@
+0.4.4 (2022-12-15)
+==================
+
+- Add validation for pipenv section
+- Add more tests
+
+0.4.3 (2022-12-13)
+==================
+
+Bug Fixes
+---------
+- Validate that package extras are a list
+
 0.4.2 (2022-10-11)
 ==================
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/plette-0.4.2/Pipfile.lock 
new/plette-0.4.4/Pipfile.lock
--- old/plette-0.4.2/Pipfile.lock       2022-10-11 22:24:30.000000000 +0200
+++ new/plette-0.4.4/Pipfile.lock       2022-12-15 19:57:11.000000000 +0100
@@ -1,7 +1,7 @@
 {
     "_meta": {
         "hash": {
-            "sha256": 
"d393c4f897389c4af119cfefe7aea5438c945f45451921e5eb14f449fbeb4f88"
+            "sha256": 
"d6695196cba86ad8430403f3b5bfb569ae46ba75ec9f5381c46b3f989e59d7e8"
         },
         "pipfile-spec": 6,
         "requires": {},
@@ -28,21 +28,28 @@
             ],
             "path": "."
         },
+        "sanitized-package": {
+            "editable": true,
+            "extras": [
+                "validation"
+            ],
+            "path": "."
+        },
         "setuptools": {
             "hashes": [
-                
"sha256:2e24e0bec025f035a2e72cdd1961119f557d78ad331bb00ff82efb2ab8da8e82",
-                
"sha256:7732871f4f7fa58fb6bdcaeadb0161b2bd046c85905dbaa066bdcbcc81953b57"
+                
"sha256:57f6f22bde4e042978bcd50176fdb381d7c21a9efa4041202288d3737a0c6a54",
+                
"sha256:a7620757bf984b58deaf32fc8a4577a9bbc0850cf92c20e1ce41c38c19e5fb75"
             ],
             "markers": "python_version >= '3.7'",
-            "version": "==65.3.0"
+            "version": "==65.6.3"
         },
         "tomlkit": {
             "hashes": [
-                
"sha256:25d4e2e446c453be6360c67ddfb88838cfc42026322770ba13d1fbd403a93a5c",
-                
"sha256:3235a9010fae54323e727c3ac06fb720752fe6635b3426e379daec60fbd44a83"
+                
"sha256:07de26b0d8cfc18f871aec595fda24d95b08fef89d147caa861939f37230bf4b",
+                
"sha256:71b952e5721688937fb02cf9d354dbcf0785066149d2855e44531ebdd2b65d73"
             ],
-            "markers": "python_version >= '3.6' and python_version < '4.0'",
-            "version": "==0.11.4"
+            "markers": "python_version >= '3.6'",
+            "version": "==0.11.6"
         }
     },
     "develop": {
@@ -70,11 +77,11 @@
         },
         "babel": {
             "hashes": [
-                
"sha256:7614553711ee97490f732126dc077f8d0ae084ebc6a96e23db1482afabdb2c51",
-                
"sha256:ff56f4892c1c4bf0d814575ea23471c230d544203c7748e8c68f0089478d48eb"
+                
"sha256:1ad3eca1c885218f6dce2ab67291178944f810a10a9b5f3cb8382a5a232b64fe",
+                
"sha256:5ef4b3226b0180dedded4229651c8b0e1a3a6a2837d45a073272f313e4cf97f6"
             ],
             "markers": "python_version >= '3.6'",
-            "version": "==2.10.3"
+            "version": "==2.11.0"
         },
         "bleach": {
             "hashes": [
@@ -86,11 +93,10 @@
         },
         "certifi": {
             "hashes": [
-                
"sha256:84c85a9078b11105f04f3036a9482ae10e4621616db313fe045dd24743a0820d",
-                
"sha256:fe86415d55e84719d75f8b69414f6438ac3547d2078ab91b67e779ef69378412"
+                
"sha256:35824b4c3a97115964b408844d64aa14db1cc518f6562e8d7261699d1350a9e3",
+                
"sha256:4ad3232f5e926d6718ec31cfc1fcadfde020920e278684144551c91769c7bc18"
             ],
-            "markers": "python_version >= '3.6'",
-            "version": "==2022.6.15"
+            "version": "==2022.12.7"
         },
         "cffi": {
             "hashes": [
@@ -195,87 +201,91 @@
                 "toml"
             ],
             "hashes": [
-                
"sha256:01778769097dbd705a24e221f42be885c544bb91251747a8a3efdec6eb4788f2",
-                
"sha256:08002f9251f51afdcc5e3adf5d5d66bb490ae893d9e21359b085f0e03390a820",
-                
"sha256:1238b08f3576201ebf41f7c20bf59baa0d05da941b123c6656e42cdb668e9827",
-                
"sha256:14a32ec68d721c3d714d9b105c7acf8e0f8a4f4734c811eda75ff3718570b5e3",
-                
"sha256:15e38d853ee224e92ccc9a851457fb1e1f12d7a5df5ae44544ce7863691c7a0d",
-                
"sha256:354df19fefd03b9a13132fa6643527ef7905712109d9c1c1903f2133d3a4e145",
-                
"sha256:35ef1f8d8a7a275aa7410d2f2c60fa6443f4a64fae9be671ec0696a68525b875",
-                
"sha256:4179502f210ebed3ccfe2f78bf8e2d59e50b297b598b100d6c6e3341053066a2",
-                
"sha256:42c499c14efd858b98c4e03595bf914089b98400d30789511577aa44607a1b74",
-                
"sha256:4b7101938584d67e6f45f0015b60e24a95bf8dea19836b1709a80342e01b472f",
-                
"sha256:564cd0f5b5470094df06fab676c6d77547abfdcb09b6c29c8a97c41ad03b103c",
-                
"sha256:5f444627b3664b80d078c05fe6a850dd711beeb90d26731f11d492dcbadb6973",
-                
"sha256:6113e4df2fa73b80f77663445be6d567913fb3b82a86ceb64e44ae0e4b695de1",
-                
"sha256:61b993f3998ee384935ee423c3d40894e93277f12482f6e777642a0141f55782",
-                
"sha256:66e6df3ac4659a435677d8cd40e8eb1ac7219345d27c41145991ee9bf4b806a0",
-                
"sha256:67f9346aeebea54e845d29b487eb38ec95f2ecf3558a3cffb26ee3f0dcc3e760",
-                
"sha256:6913dddee2deff8ab2512639c5168c3e80b3ebb0f818fed22048ee46f735351a",
-                
"sha256:6a864733b22d3081749450466ac80698fe39c91cb6849b2ef8752fd7482011f3",
-                
"sha256:7026f5afe0d1a933685d8f2169d7c2d2e624f6255fb584ca99ccca8c0e966fd7",
-                
"sha256:783bc7c4ee524039ca13b6d9b4186a67f8e63d91342c713e88c1865a38d0892a",
-                
"sha256:7a98d6bf6d4ca5c07a600c7b4e0c5350cd483c85c736c522b786be90ea5bac4f",
-                
"sha256:8d032bfc562a52318ae05047a6eb801ff31ccee172dc0d2504614e911d8fa83e",
-                
"sha256:98c0b9e9b572893cdb0a00e66cf961a238f8d870d4e1dc8e679eb8bdc2eb1b86",
-                
"sha256:9c7b9b498eb0c0d48b4c2abc0e10c2d78912203f972e0e63e3c9dc21f15abdaa",
-                
"sha256:9cc4f107009bca5a81caef2fca843dbec4215c05e917a59dec0c8db5cff1d2aa",
-                
"sha256:9d6e1f3185cbfd3d91ac77ea065d85d5215d3dfa45b191d14ddfcd952fa53796",
-                
"sha256:a095aa0a996ea08b10580908e88fbaf81ecf798e923bbe64fb98d1807db3d68a",
-                
"sha256:a3b2752de32c455f2521a51bd3ffb53c5b3ae92736afde67ce83477f5c1dd928",
-                
"sha256:ab066f5ab67059d1f1000b5e1aa8bbd75b6ed1fc0014559aea41a9eb66fc2ce0",
-                
"sha256:c1328d0c2f194ffda30a45f11058c02410e679456276bfa0bbe0b0ee87225fac",
-                
"sha256:c35cca192ba700979d20ac43024a82b9b32a60da2f983bec6c0f5b84aead635c",
-                
"sha256:cbbb0e4cd8ddcd5ef47641cfac97d8473ab6b132dd9a46bacb18872828031685",
-                
"sha256:cdbb0d89923c80dbd435b9cf8bba0ff55585a3cdb28cbec65f376c041472c60d",
-                
"sha256:cf2afe83a53f77aec067033199797832617890e15bed42f4a1a93ea24794ae3e",
-                
"sha256:d5dd4b8e9cd0deb60e6fcc7b0647cbc1da6c33b9e786f9c79721fd303994832f",
-                
"sha256:dfa0b97eb904255e2ab24166071b27408f1f69c8fbda58e9c0972804851e0558",
-                
"sha256:e16c45b726acb780e1e6f88b286d3c10b3914ab03438f32117c4aa52d7f30d58",
-                
"sha256:e1fabd473566fce2cf18ea41171d92814e4ef1495e04471786cbc943b89a3781",
-                
"sha256:e3d3c4cc38b2882f9a15bafd30aec079582b819bec1b8afdbde8f7797008108a",
-                
"sha256:e431e305a1f3126477abe9a184624a85308da8edf8486a863601d58419d26ffa",
-                
"sha256:e7b4da9bafad21ea45a714d3ea6f3e1679099e420c8741c74905b92ee9bfa7cc",
-                
"sha256:ee2b2fb6eb4ace35805f434e0f6409444e1466a47f620d1d5763a22600f0f892",
-                
"sha256:ee6ae6bbcac0786807295e9687169fba80cb0617852b2fa118a99667e8e6815d",
-                
"sha256:ef6f44409ab02e202b31a05dd6666797f9de2aa2b4b3534e9d450e42dea5e817",
-                
"sha256:f67cf9f406cf0d2f08a3515ce2db5b82625a7257f88aad87904674def6ddaec1",
-                
"sha256:f855b39e4f75abd0dfbcf74a82e84ae3fc260d523fcb3532786bcbbcb158322c",
-                
"sha256:fc600f6ec19b273da1d85817eda339fb46ce9eef3e89f220055d8696e0a06908",
-                
"sha256:fcbe3d9a53e013f8ab88734d7e517eb2cd06b7e689bedf22c0eb68db5e4a0a19",
-                
"sha256:fde17bc42e0716c94bf19d92e4c9f5a00c5feb401f5bc01101fdf2a8b7cacf60",
-                
"sha256:ff934ced84054b9018665ca3967fc48e1ac99e811f6cc99ea65978e1d384454b"
+                
"sha256:027018943386e7b942fa832372ebc120155fd970837489896099f5cfa2890f79",
+                
"sha256:11b990d520ea75e7ee8dcab5bc908072aaada194a794db9f6d7d5cfd19661e5a",
+                
"sha256:12adf310e4aafddc58afdb04d686795f33f4d7a6fa67a7a9d4ce7d6ae24d949f",
+                
"sha256:1431986dac3923c5945271f169f59c45b8802a114c8f548d611f2015133df77a",
+                
"sha256:1ef221513e6f68b69ee9e159506d583d31aa3567e0ae84eaad9d6ec1107dddaa",
+                
"sha256:20c8ac5386253717e5ccc827caad43ed66fea0efe255727b1053a8154d952398",
+                
"sha256:2198ea6fc548de52adc826f62cb18554caedfb1d26548c1b7c88d8f7faa8f6ba",
+                
"sha256:255758a1e3b61db372ec2736c8e2a1fdfaf563977eedbdf131de003ca5779b7d",
+                
"sha256:265de0fa6778d07de30bcf4d9dc471c3dc4314a23a3c6603d356a3c9abc2dfcf",
+                
"sha256:33a7da4376d5977fbf0a8ed91c4dffaaa8dbf0ddbf4c8eea500a2486d8bc4d7b",
+                
"sha256:42eafe6778551cf006a7c43153af1211c3aaab658d4d66fa5fcc021613d02518",
+                
"sha256:4433b90fae13f86fafff0b326453dd42fc9a639a0d9e4eec4d366436d1a41b6d",
+                
"sha256:4a5375e28c5191ac38cca59b38edd33ef4cc914732c916f2929029b4bfb50795",
+                
"sha256:4a8dbc1f0fbb2ae3de73eb0bdbb914180c7abfbf258e90b311dcd4f585d44bd2",
+                
"sha256:59f53f1dc5b656cafb1badd0feb428c1e7bc19b867479ff72f7a9dd9b479f10e",
+                
"sha256:5dbec3b9095749390c09ab7c89d314727f18800060d8d24e87f01fb9cfb40b32",
+                
"sha256:633713d70ad6bfc49b34ead4060531658dc6dfc9b3eb7d8a716d5873377ab745",
+                
"sha256:6b07130585d54fe8dff3d97b93b0e20290de974dc8177c320aeaf23459219c0b",
+                
"sha256:6c4459b3de97b75e3bd6b7d4b7f0db13f17f504f3d13e2a7c623786289dd670e",
+                
"sha256:6d4817234349a80dbf03640cec6109cd90cba068330703fa65ddf56b60223a6d",
+                
"sha256:723e8130d4ecc8f56e9a611e73b31219595baa3bb252d539206f7bbbab6ffc1f",
+                
"sha256:784f53ebc9f3fd0e2a3f6a78b2be1bd1f5575d7863e10c6e12504f240fd06660",
+                
"sha256:7b6be138d61e458e18d8e6ddcddd36dd96215edfe5f1168de0b1b32635839b62",
+                
"sha256:7ccf362abd726b0410bf8911c31fbf97f09f8f1061f8c1cf03dfc4b6372848f6",
+                
"sha256:83516205e254a0cb77d2d7bb3632ee019d93d9f4005de31dca0a8c3667d5bc04",
+                
"sha256:851cf4ff24062c6aec510a454b2584f6e998cada52d4cb58c5e233d07172e50c",
+                
"sha256:8f830ed581b45b82451a40faabb89c84e1a998124ee4212d440e9c6cf70083e5",
+                
"sha256:94e2565443291bd778421856bc975d351738963071e9b8839ca1fc08b42d4bef",
+                
"sha256:95203854f974e07af96358c0b261f1048d8e1083f2de9b1c565e1be4a3a48cfc",
+                
"sha256:97117225cdd992a9c2a5515db1f66b59db634f59d0679ca1fa3fe8da32749cae",
+                
"sha256:98e8a10b7a314f454d9eff4216a9a94d143a7ee65018dd12442e898ee2310578",
+                
"sha256:a1170fa54185845505fbfa672f1c1ab175446c887cce8212c44149581cf2d466",
+                
"sha256:a6b7d95969b8845250586f269e81e5dfdd8ff828ddeb8567a4a2eaa7313460c4",
+                
"sha256:a8fb6cf131ac4070c9c5a3e21de0f7dc5a0fbe8bc77c9456ced896c12fcdad91",
+                
"sha256:af4fffaffc4067232253715065e30c5a7ec6faac36f8fc8d6f64263b15f74db0",
+                
"sha256:b4a5be1748d538a710f87542f22c2cad22f80545a847ad91ce45e77417293eb4",
+                
"sha256:b5604380f3415ba69de87a289a2b56687faa4fe04dbee0754bfcae433489316b",
+                
"sha256:b9023e237f4c02ff739581ef35969c3739445fb059b060ca51771e69101efffe",
+                
"sha256:bc8ef5e043a2af066fa8cbfc6e708d58017024dc4345a1f9757b329a249f041b",
+                
"sha256:c4ed2820d919351f4167e52425e096af41bfabacb1857186c1ea32ff9983ed75",
+                
"sha256:cca4435eebea7962a52bdb216dec27215d0df64cf27fc1dd538415f5d2b9da6b",
+                
"sha256:d900bb429fdfd7f511f868cedd03a6bbb142f3f9118c09b99ef8dc9bf9643c3c",
+                
"sha256:d9ecf0829c6a62b9b573c7bb6d4dcd6ba8b6f80be9ba4fc7ed50bf4ac9aecd72",
+                
"sha256:dbdb91cd8c048c2b09eb17713b0c12a54fbd587d79adcebad543bc0cd9a3410b",
+                
"sha256:de3001a203182842a4630e7b8d1a2c7c07ec1b45d3084a83d5d227a3806f530f",
+                
"sha256:e07f4a4a9b41583d6eabec04f8b68076ab3cd44c20bd29332c6572dda36f372e",
+                
"sha256:ef8674b0ee8cc11e2d574e3e2998aea5df5ab242e012286824ea3c6970580e53",
+                
"sha256:f4f05d88d9a80ad3cac6244d36dd89a3c00abc16371769f1340101d3cb899fc3",
+                
"sha256:f642e90754ee3e06b0e7e51bce3379590e76b7f76b708e1a71ff043f87025c84",
+                
"sha256:fc2af30ed0d5ae0b1abdb4ebdce598eafd5b35397d4d75deb341a614d333d987"
             ],
             "markers": "python_version >= '3.7'",
-            "version": "==6.4.4"
+            "version": "==6.5.0"
         },
         "cryptography": {
             "hashes": [
-                
"sha256:190f82f3e87033821828f60787cfa42bff98404483577b591429ed99bed39d59",
-                
"sha256:2be53f9f5505673eeda5f2736bea736c40f051a739bfae2f92d18aed1eb54596",
-                
"sha256:30788e070800fec9bbcf9faa71ea6d8068f5136f60029759fd8c3efec3c9dcb3",
-                
"sha256:3d41b965b3380f10e4611dbae366f6dc3cefc7c9ac4e8842a806b9672ae9add5",
-                
"sha256:4c590ec31550a724ef893c50f9a97a0c14e9c851c85621c5650d699a7b88f7ab",
-                
"sha256:549153378611c0cca1042f20fd9c5030d37a72f634c9326e225c9f666d472884",
-                
"sha256:63f9c17c0e2474ccbebc9302ce2f07b55b3b3fcb211ded18a42d5764f5c10a82",
-                
"sha256:6bc95ed67b6741b2607298f9ea4932ff157e570ef456ef7ff0ef4884a134cc4b",
-                
"sha256:7099a8d55cd49b737ffc99c17de504f2257e3787e02abe6d1a6d136574873441",
-                
"sha256:75976c217f10d48a8b5a8de3d70c454c249e4b91851f6838a4e48b8f41eb71aa",
-                
"sha256:7bc997818309f56c0038a33b8da5c0bfbb3f1f067f315f9abd6fc07ad359398d",
-                
"sha256:80f49023dd13ba35f7c34072fa17f604d2f19bf0989f292cedf7ab5770b87a0b",
-                
"sha256:91ce48d35f4e3d3f1d83e29ef4a9267246e6a3be51864a5b7d2247d5086fa99a",
-                
"sha256:a958c52505c8adf0d3822703078580d2c0456dd1d27fabfb6f76fe63d2971cd6",
-                
"sha256:b62439d7cd1222f3da897e9a9fe53bbf5c104fff4d60893ad1355d4c14a24157",
-                
"sha256:b7f8dd0d4c1f21759695c05a5ec8536c12f31611541f8904083f3dc582604280",
-                
"sha256:d204833f3c8a33bbe11eda63a54b1aad7aa7456ed769a982f21ec599ba5fa282",
-                
"sha256:e007f052ed10cc316df59bc90fbb7ff7950d7e2919c9757fd42a2b8ecf8a5f67",
-                
"sha256:f2dcb0b3b63afb6df7fd94ec6fbddac81b5492513f7b0436210d390c14d46ee8",
-                
"sha256:f721d1885ecae9078c3f6bbe8a88bc0786b6e749bf32ccec1ef2b18929a05046",
-                
"sha256:f7a6de3e98771e183645181b3627e2563dcde3ce94a9e42a3f427d2255190327",
-                
"sha256:f8c0a6e9e1dd3eb0414ba320f85da6b0dcbd543126e30fcc546e7372a7fbf3b9"
+                
"sha256:0e70da4bdff7601b0ef48e6348339e490ebfb0cbe638e083c9c41fb49f00c8bd",
+                
"sha256:10652dd7282de17990b88679cb82f832752c4e8237f0c714be518044269415db",
+                
"sha256:175c1a818b87c9ac80bb7377f5520b7f31b3ef2a0004e2420319beadedb67290",
+                
"sha256:1d7e632804a248103b60b16fb145e8df0bc60eed790ece0d12efe8cd3f3e7744",
+                
"sha256:1f13ddda26a04c06eb57119caf27a524ccae20533729f4b1e4a69b54e07035eb",
+                
"sha256:2ec2a8714dd005949d4019195d72abed84198d877112abb5a27740e217e0ea8d",
+                
"sha256:2fa36a7b2cc0998a3a4d5af26ccb6273f3df133d61da2ba13b3286261e7efb70",
+                
"sha256:2fb481682873035600b5502f0015b664abc26466153fab5c6bc92c1ea69d478b",
+                
"sha256:3178d46f363d4549b9a76264f41c6948752183b3f587666aff0555ac50fd7876",
+                
"sha256:4367da5705922cf7070462e964f66e4ac24162e22ab0a2e9d31f1b270dd78083",
+                
"sha256:4eb85075437f0b1fd8cd66c688469a0c4119e0ba855e3fef86691971b887caf6",
+                
"sha256:50a1494ed0c3f5b4d07650a68cd6ca62efe8b596ce743a5c94403e6f11bf06c1",
+                
"sha256:53049f3379ef05182864d13bb9686657659407148f901f3f1eee57a733fb4b00",
+                
"sha256:6391e59ebe7c62d9902c24a4d8bcbc79a68e7c4ab65863536127c8a9cd94043b",
+                
"sha256:67461b5ebca2e4c2ab991733f8ab637a7265bb582f07c7c88914b5afb88cb95b",
+                
"sha256:78e47e28ddc4ace41dd38c42e6feecfdadf9c3be2af389abbfeef1ff06822285",
+                
"sha256:80ca53981ceeb3241998443c4964a387771588c4e4a5d92735a493af868294f9",
+                
"sha256:8a4b2bdb68a447fadebfd7d24855758fe2d6fecc7fed0b78d190b1af39a8e3b0",
+                
"sha256:8e45653fb97eb2f20b8c96f9cd2b3a0654d742b47d638cf2897afbd97f80fa6d",
+                
"sha256:998cd19189d8a747b226d24c0207fdaa1e6658a1d3f2494541cb9dfbf7dcb6d2",
+                
"sha256:a10498349d4c8eab7357a8f9aa3463791292845b79597ad1b98a543686fb1ec8",
+                
"sha256:b4cad0cea995af760f82820ab4ca54e5471fc782f70a007f31531957f43e9dee",
+                
"sha256:bfe6472507986613dc6cc00b3d492b2f7564b02b3b3682d25ca7f40fa3fd321b",
+                
"sha256:c9e0d79ee4c56d841bd4ac6e7697c8ff3c8d6da67379057f29e66acffcd1e9a7",
+                
"sha256:ca57eb3ddaccd1112c18fc80abe41db443cc2e9dcb1917078e02dfa010a4f353",
+                
"sha256:ce127dd0a6a0811c251a6cddd014d292728484e530d80e872ad9806cfb1c5b3c"
             ],
             "markers": "python_version >= '3.6'",
-            "version": "==37.0.4"
+            "version": "==38.0.4"
         },
         "docutils": {
             "hashes": [
@@ -295,11 +305,11 @@
         },
         "idna": {
             "hashes": [
-                
"sha256:84d9dd047ffa80596e0f246e2eab0b391788b0503584e8945f2368256d2735ff",
-                
"sha256:9d643ff0a55b762d5cdb124b8eaa99c66322e2157b69160bc32796e824360e6d"
+                
"sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4",
+                
"sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2"
             ],
             "markers": "python_version >= '3.5'",
-            "version": "==3.3"
+            "version": "==3.4"
         },
         "imagesize": {
             "hashes": [
@@ -311,18 +321,18 @@
         },
         "importlib-metadata": {
             "hashes": [
-                
"sha256:637245b8bab2b6502fcbc752cc4b7a6f6243bb02b31c5c26156ad103d3d45670",
-                
"sha256:7401a975809ea1fdc658c3aa4f78cc2195a0e019c5cbc4c06122884e9ae80c23"
+                
"sha256:d5059f9f1e8e41f80e9c56c2ee58811450c31984dfa625329ffd7c0dad88a73b",
+                
"sha256:d84d17e21670ec07990e1044a99efe8d615d860fd176fc29ef5c306068fda313"
             ],
             "markers": "python_version >= '3.7'",
-            "version": "==4.12.0"
+            "version": "==5.1.0"
         },
         "incremental": {
             "hashes": [
-                
"sha256:02f5de5aff48f6b9f665d99d48bfc7ec03b6e3943210de7cfc88856d755d6f57",
-                
"sha256:92014aebc6a20b78a8084cdd5645eeaa7f74b8933f70fa3ada2cfbd1e3b54321"
+                
"sha256:912feeb5e0f7e0188e6f42241d2f450002e11bbc0937c65865045854c24c0bd0",
+                
"sha256:b864a1f30885ee72c5ac2835a761b8fe8aa9c28b9395cacf27286602688d3e51"
             ],
-            "version": "==21.3.0"
+            "version": "==22.10.0"
         },
         "iniconfig": {
             "hashes": [
@@ -336,16 +346,15 @@
                 
"sha256:2dc975b4f92be0c0a174ad2d063010c8a1fdb5e9389d69871001118b4fcac4fb",
                 
"sha256:7b6deaf585eee0a848205d0b8c0014b9bf6f287a8eb798818a642dff1df14b19"
             ],
-            "index": "pypi",
             "version": "==1.7.1"
         },
         "jaraco.classes": {
             "hashes": [
-                
"sha256:6745f113b0b588239ceb49532aa09c3ebb947433ce311ef2f8e3ad64ebb74594",
-                
"sha256:e6ef6fd3fcf4579a7a019d87d1e56a883f4e4c35cfe925f86731abc58804e647"
+                
"sha256:2353de3288bc6b82120752201c6b1c1a14b058267fa424ed5ce5984e3b922158",
+                
"sha256:89559fa5c1d3c34eff6f631ad80bb21f378dbcbb35dd161fd2c6b93f5be2f98a"
             ],
             "markers": "python_version >= '3.7'",
-            "version": "==3.2.2"
+            "version": "==3.2.3"
         },
         "jeepney": {
             "hashes": [
@@ -365,11 +374,11 @@
         },
         "keyring": {
             "hashes": [
-                
"sha256:3565b9e4ea004c96e158d2d332a49f466733d565bb24157a60fd2e49f41a0fd1",
-                
"sha256:39e4f6572238d2615a82fcaa485e608b84b503cf080dc924c43bbbacb11c1c18"
+                
"sha256:3dd30011d555f1345dec2c262f0153f2f0ca6bca041fb1dc4588349bb4c0ac1e",
+                
"sha256:ad192263e2cdd5f12875dedc2da13534359a7e760e77f8d04b50968a821c2361"
             ],
             "markers": "python_version >= '3.7'",
-            "version": "==23.9.1"
+            "version": "==23.11.0"
         },
         "markupsafe": {
             "hashes": [
@@ -419,35 +428,34 @@
         },
         "more-itertools": {
             "hashes": [
-                
"sha256:1bc4f91ee5b1b31ac7ceacc17c09befe6a40a503907baf9c839c229b5095cfd2",
-                
"sha256:c09443cd3d5438b8dafccd867a6bc1cb0894389e90cb53d227456b0b0bccb750"
+                
"sha256:250e83d7e81d0c87ca6bd942e6aeab8cc9daa6096d12c5308f3f92fa5e5c1f41",
+                
"sha256:5a6257e40878ef0520b1803990e3e22303a41b5714006c32a3fd8304b26ea1ab"
             ],
-            "markers": "python_version >= '3.5'",
-            "version": "==8.14.0"
+            "markers": "python_version >= '3.7'",
+            "version": "==9.0.0"
         },
         "packaging": {
             "hashes": [
-                
"sha256:dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb",
-                
"sha256:ef103e05f519cdc783ae24ea4e2e0f508a9c99b2d4969652eed6a2e1ea5bd522"
+                
"sha256:2198ec20bd4c017b8f9717e00f0c8714076fc2fd93816750ab48e2c41de2cfd3",
+                
"sha256:957e2148ba0e1a3b282772e791ef1d8083648bc131c8ab0c1feba110ce1146c3"
             ],
-            "markers": "python_version >= '3.6'",
-            "version": "==21.3"
+            "markers": "python_version >= '3.7'",
+            "version": "==22.0"
         },
         "parver": {
             "hashes": [
                 
"sha256:41a548c51b006a2f2522b54293cbfd2514bffa10774ece8430c9964a20cbd8b4",
                 
"sha256:c902e0653bcce927cc156a7fd9b3a51924cbce3bf3d0bfd49fc282bfd0c5dfd3"
             ],
-            "index": "pypi",
             "version": "==0.3.1"
         },
         "pkginfo": {
             "hashes": [
-                
"sha256:848865108ec99d4901b2f7e84058b6e7660aae8ae10164e015a6dcf5b242a594",
-                
"sha256:a84da4318dd86f870a9447a8c98340aa06216bfc6f2b7bdc4b8766984ae1867c"
+                
"sha256:ac03e37e4d601aaee40f8087f63fc4a2a6c9814dda2c8fa6aab1b1829653bdfa",
+                
"sha256:d580059503f2f4549ad6e4c106d7437356dbd430e2c7df99ee1efe03d75f691e"
             ],
-            "markers": "python_version >= '2.7' and python_version not in 
'3.0, 3.1, 3.2, 3.3, 3.4, 3.5'",
-            "version": "==1.8.3"
+            "markers": "python_version >= '3.6'",
+            "version": "==1.9.2"
         },
         "pluggy": {
             "hashes": [
@@ -480,20 +488,11 @@
             "markers": "python_version >= '3.6'",
             "version": "==2.13.0"
         },
-        "pyparsing": {
-            "hashes": [
-                
"sha256:2b020ecf7d21b687f219b71ecad3631f644a47f01403fa1d1036b0c6416d70fb",
-                
"sha256:5026bae9a10eeaefb61dab2f09052b9f4307d44aee4eda64b309723d8d206bbc"
-            ],
-            "markers": "python_full_version >= '3.6.8'",
-            "version": "==3.0.9"
-        },
         "pytest": {
             "hashes": [
                 
"sha256:1377bda3466d70b55e3f5cecfa55bb7cfcf219c7964629b967c37cf0bda818b7",
                 
"sha256:4f365fec2dff9c1162f834d9f18af1ba13062db0c708bf7b946f8a5c76180c39"
             ],
-            "index": "pypi",
             "version": "==7.1.3"
         },
         "pytest-cov": {
@@ -501,7 +500,6 @@
                 
"sha256:578d5d15ac4a25e5f961c938b85a05b09fdaae9deef3bb6de9a6e766622ca7a6",
                 
"sha256:e7f0f5b1617d2210a2cabc266dfe2f4c75a8d32fb89eafb7ad9d06f6d076d470"
             ],
-            "index": "pypi",
             "version": "==3.0.0"
         },
         "pytest-forked": {
@@ -517,23 +515,22 @@
                 
"sha256:4580deca3ff04ddb2ac53eba39d76cb5dd5edeac050cb6fbc768b0dd712b4edf",
                 
"sha256:6fe5c74fec98906deb8f2d2b616b5c782022744978e7bd4695d39c8f42d0ce65"
             ],
-            "index": "pypi",
             "version": "==2.5.0"
         },
         "pytz": {
             "hashes": [
-                
"sha256:220f481bdafa09c3955dfbdddb7b57780e9a94f5127e35456a48589b9e0c0197",
-                
"sha256:cea221417204f2d1a2aa03ddae3e867921971d0d76f14d87abb4414415bbdcf5"
+                
"sha256:222439474e9c98fced559f1709d89e6c9cbf8d79c794ff3eb9f8800064291427",
+                
"sha256:e89512406b793ca39f5971bc999cc538ce125c0e51c27941bef4568b460095e2"
             ],
-            "version": "==2022.2.1"
+            "version": "==2022.6"
         },
         "readme-renderer": {
             "hashes": [
-                
"sha256:16c914ca7731fd062a316a2a8e5434a175ee34661a608af771a60c881f528a34",
-                
"sha256:96768c069729f69176f514477e57f2f8cd543fbb2cd7bad372976249fa509a0c"
+                
"sha256:cd653186dfc73055656f090f227f5cb22a046d7f71a841dfa305f55c9a513273",
+                
"sha256:f67a16caedfa71eef48a31b39708637a6f4664c4394801a7b0d6432d13907343"
             ],
             "markers": "python_version >= '3.7'",
-            "version": "==37.1"
+            "version": "==37.3"
         },
         "requests": {
             "hashes": [
@@ -545,10 +542,11 @@
         },
         "requests-toolbelt": {
             "hashes": [
-                
"sha256:380606e1d10dc85c3bd47bf5a6095f815ec007be7a8b69c878507068df059e6f",
-                
"sha256:968089d4584ad4ad7c171454f0a5c6dac23971e9472521ea3b6d49d610aa6fc0"
+                
"sha256:18565aa58116d9951ac39baa288d3adb5b3ff975c4f25eee78555d89e8f247f7",
+                
"sha256:62e09f7ff5ccbda92772a29f394a49c3ad6cb181d568b1337626b2abb628a63d"
             ],
-            "version": "==0.9.1"
+            "markers": "python_version >= '2.7' and python_version not in 
'3.0, 3.1, 3.2, 3.3'",
+            "version": "==0.10.1"
         },
         "rfc3986": {
             "hashes": [
@@ -560,11 +558,11 @@
         },
         "rich": {
             "hashes": [
-                
"sha256:2eb4e6894cde1e017976d2975ac210ef515d7548bc595ba20e195fb9628acdeb",
-                
"sha256:63a5c5ce3673d3d5fbbf23cd87e11ab84b6b451436f1b7f19ec54b6bc36ed7ca"
+                
"sha256:a4eb26484f2c82589bd9a17c73d32a010b1e29d89f1604cd9bf3a2097b81bb5e",
+                
"sha256:ba3a3775974105c221d31141f2c116f4fd65c5ceb0698657a11e9f295ec93fd0"
             ],
             "markers": "python_version < '4' and python_full_version >= 
'3.6.3'",
-            "version": "==12.5.1"
+            "version": "==12.6.0"
         },
         "secretstorage": {
             "hashes": [
@@ -576,11 +574,11 @@
         },
         "setuptools": {
             "hashes": [
-                
"sha256:2e24e0bec025f035a2e72cdd1961119f557d78ad331bb00ff82efb2ab8da8e82",
-                
"sha256:7732871f4f7fa58fb6bdcaeadb0161b2bd046c85905dbaa066bdcbcc81953b57"
+                
"sha256:57f6f22bde4e042978bcd50176fdb381d7c21a9efa4041202288d3737a0c6a54",
+                
"sha256:a7620757bf984b58deaf32fc8a4577a9bbc0850cf92c20e1ce41c38c19e5fb75"
             ],
             "markers": "python_version >= '3.7'",
-            "version": "==65.3.0"
+            "version": "==65.6.3"
         },
         "six": {
             "hashes": [
@@ -602,7 +600,6 @@
                 
"sha256:309a8da80cb6da9f4713438e5b55861877d5d7976b69d87e336733637ea12693",
                 
"sha256:ba3224a4e206e1fbdecf98a4fae4992ef9b24b85ebf7b584bb340156eaf08d89"
             ],
-            "index": "pypi",
             "version": "==5.1.1"
         },
         "sphinx-rtd-theme": {
@@ -610,7 +607,6 @@
                 
"sha256:4d35a56f4508cfee4c4fb604373ede6feae2a306731d533f409ef5c3496fdbd8",
                 
"sha256:eec6d497e4c2195fa0e8b2016b337532b8a699a68bcb22a512870e16925c6a5c"
             ],
-            "index": "pypi",
             "version": "==1.0.0"
         },
         "sphinxcontrib-applehelp": {
@@ -674,7 +670,6 @@
                 
"sha256:3b780c3d966e1b26414830aec3d15000654b31e64e024f3e5fd128b4c6eb8f47",
                 
"sha256:7d3839b033859b45fb55df82b74cfd702431933c0cc9f287a5a7ea3e05d042cb"
             ],
-            "index": "pypi",
             "version": "==22.8.0"
         },
         "twine": {
@@ -682,16 +677,15 @@
                 
"sha256:42026c18e394eac3e06693ee52010baa5313e4811d5a11050e7d48436cf41b9e",
                 
"sha256:96b1cf12f7ae611a4a40b6ae8e9570215daff0611828f5fe1f37a16255ab24a0"
             ],
-            "index": "pypi",
             "version": "==4.0.1"
         },
         "urllib3": {
             "hashes": [
-                
"sha256:3fa96cf423e6987997fc326ae8df396db2a8b7c667747d47ddd8ecba91f4a74e",
-                
"sha256:b930dd878d5a8afb066a637fbb35144fe7901e3b209d1cd4f524bd0e9deee997"
+                
"sha256:47cc05d99aaa09c9e72ed5809b60e7ba354e64b59c9c173ac3018642d8bb41fc",
+                
"sha256:c083dd0dce68dbfbe1129d5271cb90f9447dea7d52097c6e0126120c521ddea8"
             ],
-            "markers": "python_version >= '2.7' and python_version not in 
'3.0, 3.1, 3.2, 3.3, 3.4, 3.5' and python_version < '4'",
-            "version": "==1.26.12"
+            "markers": "python_version >= '2.7' and python_version not in 
'3.0, 3.1, 3.2, 3.3, 3.4, 3.5'",
+            "version": "==1.26.13"
         },
         "webencodings": {
             "hashes": [
@@ -705,16 +699,15 @@
                 
"sha256:4bdcd7d840138086126cd09254dc6195fb4fc6f01c050a1d7236f2630db1d22a",
                 
"sha256:e9a504e793efbca1b8e0e9cb979a249cf4a0a7b5b8c9e8b65a5e39d49529c1c4"
             ],
-            "index": "pypi",
             "version": "==0.37.1"
         },
         "zipp": {
             "hashes": [
-                
"sha256:05b45f1ee8f807d0cc928485ca40a07cb491cf092ff587c0df9cb1fd154848d2",
-                
"sha256:47c40d7fe183a6f21403a199b3e4192cca5774656965b0a4988ad2f8feb5f009"
+                
"sha256:83a28fcb75844b5c0cdaf5aa4003c2d728c77e05f5aeabe8e95e56727005fbaa",
+                
"sha256:a7a22e05929290a67401440b39690ae6563279bced5f314609d9d03798f56766"
             ],
             "markers": "python_version >= '3.7'",
-            "version": "==3.8.1"
+            "version": "==3.11.0"
         }
     }
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/plette-0.4.2/examples/Pipfile.invalid.extras-list 
new/plette-0.4.4/examples/Pipfile.invalid.extras-list
--- old/plette-0.4.2/examples/Pipfile.invalid.extras-list       1970-01-01 
01:00:00.000000000 +0100
+++ new/plette-0.4.4/examples/Pipfile.invalid.extras-list       2022-12-15 
19:57:11.000000000 +0100
@@ -0,0 +1,4 @@
+# package specifiers should be a dict
+[packages]
+msal = {version= "==1.20.0", extras = "broker"}
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/plette-0.4.2/examples/Pipfile.invalid.list 
new/plette-0.4.4/examples/Pipfile.invalid.list
--- old/plette-0.4.2/examples/Pipfile.invalid.list      1970-01-01 
01:00:00.000000000 +0100
+++ new/plette-0.4.4/examples/Pipfile.invalid.list      2022-12-15 
19:57:11.000000000 +0100
@@ -0,0 +1,4 @@
+# package specifiers should be a dict
+[packages]
+msal = ["1.20.0", "broker"]
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/plette-0.4.2/examples/Pipfile.invalid.pre-releases 
new/plette-0.4.4/examples/Pipfile.invalid.pre-releases
--- old/plette-0.4.2/examples/Pipfile.invalid.pre-releases      1970-01-01 
01:00:00.000000000 +0100
+++ new/plette-0.4.4/examples/Pipfile.invalid.pre-releases      2022-12-15 
19:57:11.000000000 +0100
@@ -0,0 +1,5 @@
+[packages]
+sqlalchemy = "==1.2.0b3"
+
+[pipenv]
+allow_prereleases = "False"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/plette-0.4.2/examples/Pipfile.invalid.with-categories 
new/plette-0.4.4/examples/Pipfile.invalid.with-categories
--- old/plette-0.4.2/examples/Pipfile.invalid.with-categories   1970-01-01 
01:00:00.000000000 +0100
+++ new/plette-0.4.4/examples/Pipfile.invalid.with-categories   2022-12-15 
19:57:11.000000000 +0100
@@ -0,0 +1,5 @@
+[packages]
+plette = { path = '.', extras = ['validation'], editable = true }
+
+[documentation]
+msal = {version= "==1.20.0", extras = "broker"}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/plette-0.4.2/examples/Pipfile.ok.editable 
new/plette-0.4.4/examples/Pipfile.ok.editable
--- old/plette-0.4.2/examples/Pipfile.ok.editable       1970-01-01 
01:00:00.000000000 +0100
+++ new/plette-0.4.4/examples/Pipfile.ok.editable       2022-12-15 
19:57:11.000000000 +0100
@@ -0,0 +1,3 @@
+[packages]
+parver = '*'
+foo = {path = ".", editable = true, extras = ["tests", "dev"]}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/plette-0.4.2/examples/Pipfile.ok.extras-list 
new/plette-0.4.4/examples/Pipfile.ok.extras-list
--- old/plette-0.4.2/examples/Pipfile.ok.extras-list    1970-01-01 
01:00:00.000000000 +0100
+++ new/plette-0.4.4/examples/Pipfile.ok.extras-list    2022-12-15 
19:57:11.000000000 +0100
@@ -0,0 +1,4 @@
+# package extras are a list
+[packages]
+msal = {version= "==1.20.0", extras = ["broker"]}
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/plette-0.4.2/examples/Pipfile.ok.list 
new/plette-0.4.4/examples/Pipfile.ok.list
--- old/plette-0.4.2/examples/Pipfile.ok.list   1970-01-01 01:00:00.000000000 
+0100
+++ new/plette-0.4.4/examples/Pipfile.ok.list   2022-12-15 19:57:11.000000000 
+0100
@@ -0,0 +1,6 @@
+
+# extras should be a list
+[packages]
+msal = {version="==1.20.0", extras=["broker"]}
+parver = '*'
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/plette-0.4.2/examples/Pipfile.ok.pipfile-section 
new/plette-0.4.4/examples/Pipfile.ok.pipfile-section
--- old/plette-0.4.2/examples/Pipfile.ok.pipfile-section        1970-01-01 
01:00:00.000000000 +0100
+++ new/plette-0.4.4/examples/Pipfile.ok.pipfile-section        2022-12-15 
19:57:11.000000000 +0100
@@ -0,0 +1,8 @@
+[pipenv]
+install_search_all_sources = true
+
+# extras should be a list
+[packages]
+msal = {version="==1.20.0", extras=["broker"]}
+parver = '*'
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/plette-0.4.2/examples/Pipfile.ok.pre-releases 
new/plette-0.4.4/examples/Pipfile.ok.pre-releases
--- old/plette-0.4.2/examples/Pipfile.ok.pre-releases   1970-01-01 
01:00:00.000000000 +0100
+++ new/plette-0.4.4/examples/Pipfile.ok.pre-releases   2022-12-15 
19:57:11.000000000 +0100
@@ -0,0 +1,5 @@
+[packages]
+sqlalchemy = "==1.2.0b3"
+
+[pipenv]
+allow_prereleases = true
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/plette-0.4.2/examples/Pipfile.ok.with-categories 
new/plette-0.4.4/examples/Pipfile.ok.with-categories
--- old/plette-0.4.2/examples/Pipfile.ok.with-categories        1970-01-01 
01:00:00.000000000 +0100
+++ new/plette-0.4.4/examples/Pipfile.ok.with-categories        2022-12-15 
19:57:11.000000000 +0100
@@ -0,0 +1,5 @@
+[packages]
+plette = { path = '.', extras = ['validation'], editable = true }
+
+[documentation]
+sphinx = "*"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/plette-0.4.2/pyproject.toml 
new/plette-0.4.4/pyproject.toml
--- old/plette-0.4.2/pyproject.toml     2022-10-11 22:24:30.000000000 +0200
+++ new/plette-0.4.4/pyproject.toml     2022-12-15 19:57:11.000000000 +0100
@@ -1,5 +1,5 @@
 [build-system]
-requires = ["setuptools>=36.6.2", "wheel>=0.28.0"]
+requires = ["setuptools>=61.0.0", "wheel>=0.28.0"]
 build-backend = "setuptools.build_meta"
 
 [project]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/plette-0.4.2/setup.py new/plette-0.4.4/setup.py
--- old/plette-0.4.2/setup.py   2022-10-11 22:24:30.000000000 +0200
+++ new/plette-0.4.4/setup.py   2022-12-15 19:57:11.000000000 +0100
@@ -19,13 +19,11 @@
     raise EnvironmentError('failed to read version')
 
 
-# Put everything in setup.cfg, except those that don't actually work?
 setup(
     # These really don't work.
     package_dir={'': 'src'},
     packages=find_packages('src'),
 
-    # I don't know how to specify an empty key in setup.cfg.
     package_data={
         '': ['LICENSE*', 'README*'],
     },
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/plette-0.4.2/src/plette/__init__.py 
new/plette-0.4.4/src/plette/__init__.py
--- old/plette-0.4.2/src/plette/__init__.py     2022-10-11 22:24:30.000000000 
+0200
+++ new/plette-0.4.4/src/plette/__init__.py     2022-12-15 19:57:11.000000000 
+0100
@@ -3,7 +3,7 @@
     "Lockfile", "Pipfile",
 ]
 
-__version__ = '0.4.2'
+__version__ = '0.4.4'
 
 from .lockfiles import Lockfile
 from .pipfiles import Pipfile
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/plette-0.4.2/src/plette/__main__.py 
new/plette-0.4.4/src/plette/__main__.py
--- old/plette-0.4.2/src/plette/__main__.py     1970-01-01 01:00:00.000000000 
+0100
+++ new/plette-0.4.4/src/plette/__main__.py     2022-12-15 19:57:11.000000000 
+0100
@@ -0,0 +1,24 @@
+"""
+A simple entry point which can be use to test Pipfiles
+
+e.g.
+
+python -m plette -f examples/Pipfile.valid.list 
+python -m plette -f examples/Pipfile.valid.editable
+# throws exception
+python -m plette -f examples/Pipfile.invalid.list  
+
+"""
+from plette import Pipfile
+
+import argparse
+
+parser = argparse.ArgumentParser()
+parser.add_argument("-f", "--file", help="Input file")
+
+args = parser.parse_args()
+
+dest = args.file
+
+with open(dest) as f:
+    pipfile = Pipfile.load(f)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/plette-0.4.2/src/plette/models/__init__.py 
new/plette-0.4.4/src/plette/models/__init__.py
--- old/plette-0.4.2/src/plette/models/__init__.py      2022-10-11 
22:24:30.000000000 +0200
+++ new/plette-0.4.4/src/plette/models/__init__.py      2022-12-15 
19:57:11.000000000 +0100
@@ -16,5 +16,11 @@
 from .sources import Source
 
 from .sections import (
-    Meta, Requires, PackageCollection, ScriptCollection, SourceCollection,
+    Meta,
+    Requires,
+    PackageCollection,
+    Pipenv,
+    PipfileSection,
+    ScriptCollection,
+    SourceCollection,
 )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/plette-0.4.2/src/plette/models/packages.py 
new/plette-0.4.4/src/plette/models/packages.py
--- old/plette-0.4.2/src/plette/models/packages.py      2022-10-11 
22:24:30.000000000 +0200
+++ new/plette-0.4.4/src/plette/models/packages.py      2022-12-15 
19:57:11.000000000 +0100
@@ -21,7 +21,9 @@
     def validate(cls, data):
         # HACK: Make this validatable for Cerberus. See comments in validation
         # side for more information.
-        return super(Package, cls).validate({"__package__": data})
+        super(Package, cls).validate({"__package__": data})
+        if isinstance(data, dict):
+            PackageSpecfiers.validate({"__specifiers__": data})
 
     def __getattr__(self, key):
         if isinstance(self._data, str):
@@ -41,3 +43,16 @@
             self._data = value
         else:
             self._data[key] = value
+
+class PackageSpecfiers(DataView):
+    # TODO: one could add here more validation for path editable
+    # and more stuff which is currently allowed and undocumented
+    __SCHEMA__ = {
+        "__specifiers__": {
+            "type": "dict",
+            "schema":{
+                "version": {"type": "string"},
+                "extras": {"type": "list"},
+                }
+            }
+        }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/plette-0.4.2/src/plette/models/sections.py 
new/plette-0.4.4/src/plette/models/sections.py
--- old/plette-0.4.2/src/plette/models/sections.py      2022-10-11 
22:24:30.000000000 +0200
+++ new/plette-0.4.4/src/plette/models/sections.py      2022-12-15 
19:57:11.000000000 +0100
@@ -50,6 +50,16 @@
     "sources": SourceCollection,
 }
 
+class PipfileSection(DataView):
+
+    """
+    Dummy pipfile validator that needs to be completed in a future PR
+    Hint: many pipfile features are undocumented in  pipenv/project.py
+    """
+
+    @classmethod
+    def validate(cls, data):
+        pass
 
 class Meta(DataView):
     """Representation of the `_meta` section in a Pipfile.lock."""
@@ -119,3 +129,11 @@
     @sources.setter
     def sources(self, value):
         self["sources"] = value
+
+
+class Pipenv(DataView):
+    """Represent the [pipenv] section in Pipfile"""
+
+    __SCHEMA__ = {
+        "allow_prereleases": {"type": "boolean", "required": False},
+    }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/plette-0.4.2/src/plette/pipfiles.py 
new/plette-0.4.4/src/plette/pipfiles.py
--- old/plette-0.4.2/src/plette/pipfiles.py     2022-10-11 22:24:30.000000000 
+0200
+++ new/plette-0.4.4/src/plette/pipfiles.py     2022-12-15 19:57:11.000000000 
+0100
@@ -4,7 +4,7 @@
 import tomlkit
 
 from .models import (
-    DataView, Hash, Requires,
+    DataView, Hash, Requires, PipfileSection, Pipenv,
     PackageCollection, ScriptCollection, SourceCollection,
 )
 
@@ -15,6 +15,8 @@
     "dev-packages": PackageCollection,
     "requires": Requires,
     "scripts": ScriptCollection,
+    "pipfile":  PipfileSection,
+    "pipenv": Pipenv
 }
 
 DEFAULT_SOURCE_TOML = """\
@@ -24,7 +26,6 @@
 verify_ssl = true
 """
 
-
 class Pipfile(DataView):
     """Representation of a Pipfile.
     """
@@ -42,6 +43,11 @@
                 continue
             klass.validate(data[key])
 
+        package_categories = set(data.keys()) - set(PIPFILE_SECTIONS.keys())   
     
+
+        for category in package_categories:
+            PackageCollection.validate(data[category])
+
     @classmethod
     def load(cls, f, encoding=None):
         content = f.read()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/plette-0.4.2/tests/integration/test_examples.py 
new/plette-0.4.4/tests/integration/test_examples.py
--- old/plette-0.4.2/tests/integration/test_examples.py 1970-01-01 
01:00:00.000000000 +0100
+++ new/plette-0.4.4/tests/integration/test_examples.py 2022-12-15 
19:57:11.000000000 +0100
@@ -0,0 +1,23 @@
+import glob
+
+import pytest
+
+import plette
+from plette import Pipfile
+
+invalid_files = glob.glob("examples/*invalid*")
+valid_files = glob.glob("examples/*ok*")
+
[email protected]("fname", invalid_files)
+def test_invalid_files(fname):
+    
+    with pytest.raises(plette.models.base.ValidationError):
+        with open(fname) as f:
+            pipfile = Pipfile.load(f)
+
+
[email protected]("fname", valid_files)
+def test_valid_files(fname):
+
+    with open(fname) as f:
+        pipfile = Pipfile.load(f)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/plette-0.4.2/tests/test_models.py 
new/plette-0.4.4/tests/test_models.py
--- old/plette-0.4.2/tests/test_models.py       2022-10-11 22:24:30.000000000 
+0200
+++ new/plette-0.4.4/tests/test_models.py       2022-12-15 19:57:11.000000000 
+0100
@@ -114,6 +114,18 @@
     assert str(ctx.value) == "version"
 
 
[email protected](cerberus is None, reason="Skip validation without Ceberus")
+def test_package_with_wrong_extras():
+    with pytest.raises(models.base.ValidationError):
+        p = models.Package({"version": "==1.20.0", "extras": "broker"})
+
+
[email protected](cerberus is None, reason="Skip validation without Ceberus")
+def test_package_with_extras():
+    p = models.Package({"version": "==1.20.0", "extras": ["broker", "tests"]})
+    assert p.extras == ['broker', 'tests']
+
+
 HASH = "9aaf3dbaf8c4df3accd4606eb2275d3b91c9db41be4fd5a97ecc95d79a12cfe6"
 
 

Reply via email to