diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
index 08a352610..353d1142c 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/main.yml
@@ -172,7 +172,7 @@ jobs:
- name: Publish Release (Release)
id: publish_release
if: (github.base_ref == env.ReleaseBranch)
- uses: softprops/action-gh-release@v1
+ uses: softprops/action-gh-release@v2
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
diff --git a/.github/workflows/stale-issues.yml b/.github/workflows/stale-issues.yml
index d9b0e33a8..422155efe 100644
--- a/.github/workflows/stale-issues.yml
+++ b/.github/workflows/stale-issues.yml
@@ -10,7 +10,7 @@ jobs:
issues: write
pull-requests: write
steps:
- - uses: actions/stale@v8
+ - uses: actions/stale@v9
with:
days-before-issue-stale: 60
days-before-issue-close: 14
diff --git a/.gitignore b/.gitignore
index 4e42e63e1..914ce4d7b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -11,6 +11,7 @@ extensions/*
!extensions/extensions.json
!extensions/README.md
!extensions/pyRevitBundlesCreatorExtension.extension/
+
# bin/*
# !bin/engines
# !bin/pyrevit.svg
diff --git a/Pipfile b/Pipfile
index 656ab3385..3ab1ea365 100644
--- a/Pipfile
+++ b/Pipfile
@@ -14,7 +14,7 @@ requests = "*"
pygount = "*"
pyyaml = ">=5.4"
black = "*"
-setuptools = "==69.2.0"
+setuptools = "==69.5.1"
mkdocs = "*"
mkdocstrings = "*"
mkdocstrings-python = "*"
diff --git a/Pipfile.lock b/Pipfile.lock
index 39577bd64..87966a151 100644
--- a/Pipfile.lock
+++ b/Pipfile.lock
@@ -1,7 +1,7 @@
{
"_meta": {
"hash": {
- "sha256": "9c8fd16ea139122575399fb358b82626c450ef0d086eb331a7f9357383e79e81"
+ "sha256": "ba6897081039eda5c9d98823b2b14a3d8371f8a7cba9a8b99514a0eb61605fb2"
},
"pipfile-spec": 6,
"requires": {
@@ -26,32 +26,32 @@
},
"black": {
"hashes": [
- "sha256:2818cf72dfd5d289e48f37ccfa08b460bf469e67fb7c4abb07edc2e9f16fb63f",
- "sha256:41622020d7120e01d377f74249e677039d20e6344ff5851de8a10f11f513bf93",
- "sha256:4acf672def7eb1725f41f38bf6bf425c8237248bb0804faa3965c036f7672d11",
- "sha256:4be5bb28e090456adfc1255e03967fb67ca846a03be7aadf6249096100ee32d0",
- "sha256:4f1373a7808a8f135b774039f61d59e4be7eb56b2513d3d2f02a8b9365b8a8a9",
- "sha256:56f52cfbd3dabe2798d76dbdd299faa046a901041faf2cf33288bc4e6dae57b5",
- "sha256:65b76c275e4c1c5ce6e9870911384bff5ca31ab63d19c76811cb1fb162678213",
- "sha256:65c02e4ea2ae09d16314d30912a58ada9a5c4fdfedf9512d23326128ac08ac3d",
- "sha256:6905238a754ceb7788a73f02b45637d820b2f5478b20fec82ea865e4f5d4d9f7",
- "sha256:79dcf34b33e38ed1b17434693763301d7ccbd1c5860674a8f871bd15139e7837",
- "sha256:7bb041dca0d784697af4646d3b62ba4a6b028276ae878e53f6b4f74ddd6db99f",
- "sha256:7d5e026f8da0322b5662fa7a8e752b3fa2dac1c1cbc213c3d7ff9bdd0ab12395",
- "sha256:9f50ea1132e2189d8dff0115ab75b65590a3e97de1e143795adb4ce317934995",
- "sha256:a0c9c4a0771afc6919578cec71ce82a3e31e054904e7197deacbc9382671c41f",
- "sha256:aadf7a02d947936ee418777e0247ea114f78aff0d0959461057cae8a04f20597",
- "sha256:b5991d523eee14756f3c8d5df5231550ae8993e2286b8014e2fdea7156ed0959",
- "sha256:bf21b7b230718a5f08bd32d5e4f1db7fc8788345c8aea1d155fc17852b3410f5",
- "sha256:c45f8dff244b3c431b36e3224b6be4a127c6aca780853574c00faf99258041eb",
- "sha256:c7ed6668cbbfcd231fa0dc1b137d3e40c04c7f786e626b405c62bcd5db5857e4",
- "sha256:d7de8d330763c66663661a1ffd432274a2f92f07feeddd89ffd085b5744f85e7",
- "sha256:e19cb1c6365fd6dc38a6eae2dcb691d7d83935c10215aef8e6c38edee3f77abd",
- "sha256:e2af80566f43c85f5797365077fb64a393861a3730bd110971ab7a0c94e873e7"
+ "sha256:257d724c2c9b1660f353b36c802ccece186a30accc7742c176d29c146df6e474",
+ "sha256:37aae07b029fa0174d39daf02748b379399b909652a806e5708199bd93899da1",
+ "sha256:415e686e87dbbe6f4cd5ef0fbf764af7b89f9057b97c908742b6008cc554b9c0",
+ "sha256:48a85f2cb5e6799a9ef05347b476cce6c182d6c71ee36925a6c194d074336ef8",
+ "sha256:7768a0dbf16a39aa5e9a3ded568bb545c8c2727396d063bbaf847df05b08cd96",
+ "sha256:7e122b1c4fb252fd85df3ca93578732b4749d9be076593076ef4d07a0233c3e1",
+ "sha256:88c57dc656038f1ab9f92b3eb5335ee9b021412feaa46330d5eba4e51fe49b04",
+ "sha256:8e537d281831ad0e71007dcdcbe50a71470b978c453fa41ce77186bbe0ed6021",
+ "sha256:98e123f1d5cfd42f886624d84464f7756f60ff6eab89ae845210631714f6db94",
+ "sha256:accf49e151c8ed2c0cdc528691838afd217c50412534e876a19270fea1e28e2d",
+ "sha256:b1530ae42e9d6d5b670a34db49a94115a64596bc77710b1d05e9801e62ca0a7c",
+ "sha256:b9176b9832e84308818a99a561e90aa479e73c523b3f77afd07913380ae2eab7",
+ "sha256:bdde6f877a18f24844e381d45e9947a49e97933573ac9d4345399be37621e26c",
+ "sha256:be8bef99eb46d5021bf053114442914baeb3649a89dc5f3a555c88737e5e98fc",
+ "sha256:bf10f7310db693bb62692609b397e8d67257c55f949abde4c67f9cc574492cc7",
+ "sha256:c872b53057f000085da66a19c55d68f6f8ddcac2642392ad3a355878406fbd4d",
+ "sha256:d36ed1124bb81b32f8614555b34cc4259c3fbc7eec17870e8ff8ded335b58d8c",
+ "sha256:da33a1a5e49c4122ccdfd56cd021ff1ebc4a1ec4e2d01594fef9b6f267a9e741",
+ "sha256:dd1b5a14e417189db4c7b64a6540f31730713d173f0b63e55fabd52d61d8fdce",
+ "sha256:e151054aa00bad1f4e1f04919542885f89f5f7d086b8a59e5000e6c616896ffb",
+ "sha256:eaea3008c281f1038edb473c1aa8ed8143a5535ff18f978a318f10302b254063",
+ "sha256:ef703f83fc32e131e9bcc0a5094cfe85599e7109f896fe8bc96cc402f3eb4b6e"
],
"index": "pypi",
"markers": "python_version >= '3.8'",
- "version": "==24.3.0"
+ "version": "==24.4.2"
},
"certifi": {
"hashes": [
@@ -214,18 +214,17 @@
},
"griffe": {
"hashes": [
- "sha256:384df6b802a60f70e65fdb7e83f5b27e2da869a12eac85b25b55250012dbc263",
- "sha256:fb83ee602701ffdf99c9a6bf5f0a5a3bd877364b3bffb2c451dc8fbd9645b0cf"
+ "sha256:34aee1571042f9bf00529bc715de4516fb6f482b164e90d030300601009e0223",
+ "sha256:8a4471c469ba980b87c843f1168850ce39d0c1d0c7be140dca2480f76c8e5446"
],
"markers": "python_version >= '3.8'",
- "version": "==0.42.0"
+ "version": "==0.44.0"
},
"idna": {
"hashes": [
"sha256:028ff3aadf0609c1fd278d8ea3089299412a7a8b9bd005dd08b9f8285bcb5cfc",
"sha256:82fee1fc78add43492d3a1898bfa6d8a904cc97d8427f683ed8e798d07761aa0"
],
- "index": "pypi",
"markers": "python_version >= '3.5'",
"version": "==3.7"
},
@@ -239,11 +238,11 @@
},
"markdown": {
"hashes": [
- "sha256:d43323865d89fc0cb9b20c75fc8ad313af307cc087e84b657d9eec768eddeadd",
- "sha256:e1ac7b3dc550ee80e602e71c1d168002f062e49f1b11e26a36264dafd4df2ef8"
+ "sha256:48f276f4d8cfb8ce6527c8f79e2ee29708508bf4d40aa410fbc3b4ee832c850f",
+ "sha256:ed4f41f6daecbeeb96e576ce414c41d2d876daa9a16cb35fa8ed8c2ddfad0224"
],
"markers": "python_version >= '3.8'",
- "version": "==3.5.2"
+ "version": "==3.6"
},
"markdown-it-py": {
"hashes": [
@@ -337,12 +336,12 @@
},
"mkdocs": {
"hashes": [
- "sha256:3b3a78e736b31158d64dbb2f8ba29bd46a379d0c6e324c2246c3bc3d2189cfc1",
- "sha256:eb7c99214dcb945313ba30426c2451b735992c73c2e10838f76d09e39ff4d0e2"
+ "sha256:1eb5cb7676b7d89323e62b56235010216319217d4af5ddc543a91beb8d125ea7",
+ "sha256:a73f735824ef83a4f3bcb7a231dcab23f5a838f88b7efc54a0eef5fbdbc3c512"
],
"index": "pypi",
- "markers": "python_version >= '3.7'",
- "version": "==1.5.3"
+ "markers": "python_version >= '3.8'",
+ "version": "==1.6.0"
},
"mkdocs-autorefs": {
"hashes": [
@@ -368,6 +367,14 @@
"markers": "python_version >= '3.7'",
"version": "==0.5.0"
},
+ "mkdocs-get-deps": {
+ "hashes": [
+ "sha256:162b3d129c7fad9b19abfdcb9c1458a651628e4b1dea628ac68790fb3061c60c",
+ "sha256:2bf11d0b133e77a0dd036abeeb06dec8775e46efa526dc70667d8863eefc6134"
+ ],
+ "markers": "python_version >= '3.8'",
+ "version": "==0.2.0"
+ },
"mkdocs-literate-nav": {
"hashes": [
"sha256:78a7ab6d878371728acb0cdc6235c9b0ffc6e83c997b037f4a5c6ff7cef7d759",
@@ -379,12 +386,12 @@
},
"mkdocs-material": {
"hashes": [
- "sha256:39f03cca45e82bf54eb7456b5a18bd252eabfdd67f237a229471484a0a4d4635",
- "sha256:e5c96dec3d19491de49ca643fc1dbb92b278e43cdb816c775bc47db77d9b62fb"
+ "sha256:7473e06e17e23af608a30ef583fdde8f36389dd3ef56b1d503eed54c89c9618c",
+ "sha256:ea96e150b6c95f5e4ffe47d78bb712c7bacdd91d2a0bec47f46b6fa0705a86ec"
],
"index": "pypi",
"markers": "python_version >= '3.8'",
- "version": "==9.5.15"
+ "version": "==9.5.19"
},
"mkdocs-material-extensions": {
"hashes": [
@@ -396,30 +403,30 @@
},
"mkdocs-section-index": {
"hashes": [
- "sha256:823d298d78bc1e73e23678ff60889f3c369c2167b03dba73fea88bd0e268a60d",
- "sha256:bbd209f0da79441baf136ef3a9c40665bb9681d1fb62c73ca2f116fd1388a404"
+ "sha256:5e5eb288e8d7984d36c11ead5533f376fdf23498f44e903929d72845b24dfe34",
+ "sha256:b66128d19108beceb08b226ee1ba0981840d14baf8a652b6c59e650f3f92e4f8"
],
"index": "pypi",
- "markers": "python_version >= '3.7'",
- "version": "==0.3.8"
+ "markers": "python_version >= '3.8'",
+ "version": "==0.3.9"
},
"mkdocstrings": {
"hashes": [
- "sha256:b4206f9a2ca8a648e222d5a0ca1d36ba7dee53c88732818de183b536f9042b5d",
- "sha256:cc83f9a1c8724fc1be3c2fa071dd73d91ce902ef6a79710249ec8d0ee1064401"
+ "sha256:066986b3fb5b9ef2d37c4417255a808f7e63b40ff8f67f6cab8054d903fbc91d",
+ "sha256:df1b63f26675fcde8c1b77e7ea996cd2f93220b148e06455428f676f5dc838f1"
],
"index": "pypi",
"markers": "python_version >= '3.8'",
- "version": "==0.24.1"
+ "version": "==0.25.0"
},
"mkdocstrings-python": {
"hashes": [
- "sha256:6e1a442367cf75d30cf69774cbb1ad02aebec58bfff26087439df4955efecfde",
- "sha256:fad27d7314b4ec9c0359a187b477fb94c65ef561fdae941dca1b717c59aae96f"
+ "sha256:71678fac657d4d2bb301eed4e4d2d91499c095fd1f8a90fa76422a87a5693828",
+ "sha256:ba833fbd9d178a4b9d5cb2553a4df06e51dc1f51e41559a4d2398c16a6f69ecc"
],
"index": "pypi",
"markers": "python_version >= '3.8'",
- "version": "==1.9.0"
+ "version": "==1.10.0"
},
"mypy-extensions": {
"hashes": [
@@ -453,11 +460,11 @@
},
"platformdirs": {
"hashes": [
- "sha256:0614df2a2f37e1a662acbd8e2b25b92ccf8632929bc6d43467e17fe89c75e068",
- "sha256:ef0cc731df711022c174543cb70a9b5bd22e5a9337c8624ef2c2ceb8ddad8768"
+ "sha256:031cd18d4ec63ec53e82dceaac0417d218a6863f7745dfcc9efe7793b7039bdf",
+ "sha256:17d5a1161b3fd67b390023cb2d3b026bbd40abde6fdb052dfbd3a29c3ba22ee1"
],
"markers": "python_version >= '3.8'",
- "version": "==4.2.0"
+ "version": "==4.2.1"
},
"pygments": {
"hashes": [
@@ -478,11 +485,11 @@
},
"pymdown-extensions": {
"hashes": [
- "sha256:c70e146bdd83c744ffc766b4671999796aba18842b268510a329f7f64700d584",
- "sha256:f5cc7000d7ff0d1ce9395d216017fa4df3dde800afb1fb72d1c7d3fd35e710f4"
+ "sha256:3ab1db5c9e21728dabf75192d71471f8e50f216627e9a1fa9535ecb0231b9940",
+ "sha256:f938326115884f48c6059c67377c46cf631c733ef3629b6eed1349989d1b30cb"
],
"markers": "python_version >= '3.8'",
- "version": "==10.7.1"
+ "version": "==10.8.1"
},
"python-dateutil": {
"hashes": [
@@ -560,102 +567,102 @@
},
"regex": {
"hashes": [
- "sha256:0694219a1d54336fd0445ea382d49d36882415c0134ee1e8332afd1529f0baa5",
- "sha256:086dd15e9435b393ae06f96ab69ab2d333f5d65cbe65ca5a3ef0ec9564dfe770",
- "sha256:094ba386bb5c01e54e14434d4caabf6583334090865b23ef58e0424a6286d3dc",
- "sha256:09da66917262d9481c719599116c7dc0c321ffcec4b1f510c4f8a066f8768105",
- "sha256:0ecf44ddf9171cd7566ef1768047f6e66975788258b1c6c6ca78098b95cf9a3d",
- "sha256:0fda75704357805eb953a3ee15a2b240694a9a514548cd49b3c5124b4e2ad01b",
- "sha256:11a963f8e25ab5c61348d090bf1b07f1953929c13bd2309a0662e9ff680763c9",
- "sha256:150c39f5b964e4d7dba46a7962a088fbc91f06e606f023ce57bb347a3b2d4630",
- "sha256:1b9d811f72210fa9306aeb88385b8f8bcef0dfbf3873410413c00aa94c56c2b6",
- "sha256:1e0eabac536b4cc7f57a5f3d095bfa557860ab912f25965e08fe1545e2ed8b4c",
- "sha256:22a86d9fff2009302c440b9d799ef2fe322416d2d58fc124b926aa89365ec482",
- "sha256:22f3470f7524b6da61e2020672df2f3063676aff444db1daa283c2ea4ed259d6",
- "sha256:263ef5cc10979837f243950637fffb06e8daed7f1ac1e39d5910fd29929e489a",
- "sha256:283fc8eed679758de38fe493b7d7d84a198b558942b03f017b1f94dda8efae80",
- "sha256:29171aa128da69afdf4bde412d5bedc335f2ca8fcfe4489038577d05f16181e5",
- "sha256:298dc6354d414bc921581be85695d18912bea163a8b23cac9a2562bbcd5088b1",
- "sha256:2aae8101919e8aa05ecfe6322b278f41ce2994c4a430303c4cd163fef746e04f",
- "sha256:2f4e475a80ecbd15896a976aa0b386c5525d0ed34d5c600b6d3ebac0a67c7ddf",
- "sha256:34e4af5b27232f68042aa40a91c3b9bb4da0eeb31b7632e0091afc4310afe6cb",
- "sha256:37f8e93a81fc5e5bd8db7e10e62dc64261bcd88f8d7e6640aaebe9bc180d9ce2",
- "sha256:3a17d3ede18f9cedcbe23d2daa8a2cd6f59fe2bf082c567e43083bba3fb00347",
- "sha256:3b1de218d5375cd6ac4b5493e0b9f3df2be331e86520f23382f216c137913d20",
- "sha256:43f7cd5754d02a56ae4ebb91b33461dc67be8e3e0153f593c509e21d219c5060",
- "sha256:4558410b7a5607a645e9804a3e9dd509af12fb72b9825b13791a37cd417d73a5",
- "sha256:4719bb05094d7d8563a450cf8738d2e1061420f79cfcc1fa7f0a44744c4d8f73",
- "sha256:4bfc2b16e3ba8850e0e262467275dd4d62f0d045e0e9eda2bc65078c0110a11f",
- "sha256:518440c991f514331f4850a63560321f833979d145d7d81186dbe2f19e27ae3d",
- "sha256:51f4b32f793812714fd5307222a7f77e739b9bc566dc94a18126aba3b92b98a3",
- "sha256:531ac6cf22b53e0696f8e1d56ce2396311254eb806111ddd3922c9d937151dae",
- "sha256:5cd05d0f57846d8ba4b71d9c00f6f37d6b97d5e5ef8b3c3840426a475c8f70f4",
- "sha256:5dd58946bce44b53b06d94aa95560d0b243eb2fe64227cba50017a8d8b3cd3e2",
- "sha256:60080bb3d8617d96f0fb7e19796384cc2467447ef1c491694850ebd3670bc457",
- "sha256:636ba0a77de609d6510235b7f0e77ec494d2657108f777e8765efc060094c98c",
- "sha256:67d3ccfc590e5e7197750fcb3a2915b416a53e2de847a728cfa60141054123d4",
- "sha256:68191f80a9bad283432385961d9efe09d783bcd36ed35a60fb1ff3f1ec2efe87",
- "sha256:7502534e55c7c36c0978c91ba6f61703faf7ce733715ca48f499d3dbbd7657e0",
- "sha256:7aa47c2e9ea33a4a2a05f40fcd3ea36d73853a2aae7b4feab6fc85f8bf2c9704",
- "sha256:7d2af3f6b8419661a0c421584cfe8aaec1c0e435ce7e47ee2a97e344b98f794f",
- "sha256:7e316026cc1095f2a3e8cc012822c99f413b702eaa2ca5408a513609488cb62f",
- "sha256:88ad44e220e22b63b0f8f81f007e8abbb92874d8ced66f32571ef8beb0643b2b",
- "sha256:88d1f7bef20c721359d8675f7d9f8e414ec5003d8f642fdfd8087777ff7f94b5",
- "sha256:89723d2112697feaa320c9d351e5f5e7b841e83f8b143dba8e2d2b5f04e10923",
- "sha256:8a0ccf52bb37d1a700375a6b395bff5dd15c50acb745f7db30415bae3c2b0715",
- "sha256:8c2c19dae8a3eb0ea45a8448356ed561be843b13cbc34b840922ddf565498c1c",
- "sha256:905466ad1702ed4acfd67a902af50b8db1feeb9781436372261808df7a2a7bca",
- "sha256:9852b76ab558e45b20bf1893b59af64a28bd3820b0c2efc80e0a70a4a3ea51c1",
- "sha256:98a2636994f943b871786c9e82bfe7883ecdaba2ef5df54e1450fa9869d1f756",
- "sha256:9aa1a67bbf0f957bbe096375887b2505f5d8ae16bf04488e8b0f334c36e31360",
- "sha256:9eda5f7a50141291beda3edd00abc2d4a5b16c29c92daf8d5bd76934150f3edc",
- "sha256:a6d1047952c0b8104a1d371f88f4ab62e6275567d4458c1e26e9627ad489b445",
- "sha256:a9b6d73353f777630626f403b0652055ebfe8ff142a44ec2cf18ae470395766e",
- "sha256:a9cc99d6946d750eb75827cb53c4371b8b0fe89c733a94b1573c9dd16ea6c9e4",
- "sha256:ad83e7545b4ab69216cef4cc47e344d19622e28aabec61574b20257c65466d6a",
- "sha256:b014333bd0217ad3d54c143de9d4b9a3ca1c5a29a6d0d554952ea071cff0f1f8",
- "sha256:b43523d7bc2abd757119dbfb38af91b5735eea45537ec6ec3a5ec3f9562a1c53",
- "sha256:b521dcecebc5b978b447f0f69b5b7f3840eac454862270406a39837ffae4e697",
- "sha256:b77e27b79448e34c2c51c09836033056a0547aa360c45eeeb67803da7b0eedaf",
- "sha256:b7a635871143661feccce3979e1727c4e094f2bdfd3ec4b90dfd4f16f571a87a",
- "sha256:b7fca9205b59c1a3d5031f7e64ed627a1074730a51c2a80e97653e3e9fa0d415",
- "sha256:ba1b30765a55acf15dce3f364e4928b80858fa8f979ad41f862358939bdd1f2f",
- "sha256:ba99d8077424501b9616b43a2d208095746fb1284fc5ba490139651f971d39d9",
- "sha256:c25a8ad70e716f96e13a637802813f65d8a6760ef48672aa3502f4c24ea8b400",
- "sha256:c3c4a78615b7762740531c27cf46e2f388d8d727d0c0c739e72048beb26c8a9d",
- "sha256:c40281f7d70baf6e0db0c2f7472b31609f5bc2748fe7275ea65a0b4601d9b392",
- "sha256:c7ad32824b7f02bb3c9f80306d405a1d9b7bb89362d68b3c5a9be53836caebdb",
- "sha256:cb3fe77aec8f1995611f966d0c656fdce398317f850d0e6e7aebdfe61f40e1cd",
- "sha256:cc038b2d8b1470364b1888a98fd22d616fba2b6309c5b5f181ad4483e0017861",
- "sha256:cc37b9aeebab425f11f27e5e9e6cf580be7206c6582a64467a14dda211abc232",
- "sha256:cc6bb9aa69aacf0f6032c307da718f61a40cf970849e471254e0e91c56ffca95",
- "sha256:d126361607b33c4eb7b36debc173bf25d7805847346dd4d99b5499e1fef52bc7",
- "sha256:d15b274f9e15b1a0b7a45d2ac86d1f634d983ca40d6b886721626c47a400bf39",
- "sha256:d166eafc19f4718df38887b2bbe1467a4f74a9830e8605089ea7a30dd4da8887",
- "sha256:d498eea3f581fbe1b34b59c697512a8baef88212f92e4c7830fcc1499f5b45a5",
- "sha256:d6f7e255e5fa94642a0724e35406e6cb7001c09d476ab5fce002f652b36d0c39",
- "sha256:d78bd484930c1da2b9679290a41cdb25cc127d783768a0369d6b449e72f88beb",
- "sha256:d865984b3f71f6d0af64d0d88f5733521698f6c16f445bb09ce746c92c97c586",
- "sha256:d902a43085a308cef32c0d3aea962524b725403fd9373dea18110904003bac97",
- "sha256:d94a1db462d5690ebf6ae86d11c5e420042b9898af5dcf278bd97d6bda065423",
- "sha256:da695d75ac97cb1cd725adac136d25ca687da4536154cdc2815f576e4da11c69",
- "sha256:db2a0b1857f18b11e3b0e54ddfefc96af46b0896fb678c85f63fb8c37518b3e7",
- "sha256:df26481f0c7a3f8739fecb3e81bc9da3fcfae34d6c094563b9d4670b047312e1",
- "sha256:e14b73607d6231f3cc4622809c196b540a6a44e903bcfad940779c80dffa7be7",
- "sha256:e2610e9406d3b0073636a3a2e80db05a02f0c3169b5632022b4e81c0364bcda5",
- "sha256:e692296c4cc2873967771345a876bcfc1c547e8dd695c6b89342488b0ea55cd8",
- "sha256:e693e233ac92ba83a87024e1d32b5f9ab15ca55ddd916d878146f4e3406b5c91",
- "sha256:e81469f7d01efed9b53740aedd26085f20d49da65f9c1f41e822a33992cb1590",
- "sha256:e8c7e08bb566de4faaf11984af13f6bcf6a08f327b13631d41d62592681d24fe",
- "sha256:ed19b3a05ae0c97dd8f75a5d8f21f7723a8c33bbc555da6bbe1f96c470139d3c",
- "sha256:efb2d82f33b2212898f1659fb1c2e9ac30493ac41e4d53123da374c3b5541e64",
- "sha256:f44dd4d68697559d007462b0a3a1d9acd61d97072b71f6d1968daef26bc744bd",
- "sha256:f72cbae7f6b01591f90814250e636065850c5926751af02bb48da94dfced7baa",
- "sha256:f7bc09bc9c29ebead055bcba136a67378f03d66bf359e87d0f7c759d6d4ffa31",
- "sha256:ff100b203092af77d1a5a7abe085b3506b7eaaf9abf65b73b7d6905b6cb76988"
+ "sha256:00169caa125f35d1bca6045d65a662af0202704489fada95346cfa092ec23f39",
+ "sha256:03576e3a423d19dda13e55598f0fd507b5d660d42c51b02df4e0d97824fdcae3",
+ "sha256:03e68f44340528111067cecf12721c3df4811c67268b897fbe695c95f860ac42",
+ "sha256:0534b034fba6101611968fae8e856c1698da97ce2efb5c2b895fc8b9e23a5834",
+ "sha256:08dea89f859c3df48a440dbdcd7b7155bc675f2fa2ec8c521d02dc69e877db70",
+ "sha256:0a38d151e2cdd66d16dab550c22f9521ba79761423b87c01dae0a6e9add79c0d",
+ "sha256:0c8290b44d8b0af4e77048646c10c6e3aa583c1ca67f3b5ffb6e06cf0c6f0f89",
+ "sha256:10188fe732dec829c7acca7422cdd1bf57d853c7199d5a9e96bb4d40db239c73",
+ "sha256:1210365faba7c2150451eb78ec5687871c796b0f1fa701bfd2a4a25420482d26",
+ "sha256:12f6a3f2f58bb7344751919a1876ee1b976fe08b9ffccb4bbea66f26af6017b9",
+ "sha256:159dc4e59a159cb8e4e8f8961eb1fa5d58f93cb1acd1701d8aff38d45e1a84a6",
+ "sha256:20b7a68444f536365af42a75ccecb7ab41a896a04acf58432db9e206f4e525d6",
+ "sha256:23cff1b267038501b179ccbbd74a821ac4a7192a1852d1d558e562b507d46013",
+ "sha256:2c72608e70f053643437bd2be0608f7f1c46d4022e4104d76826f0839199347a",
+ "sha256:3399dd8a7495bbb2bacd59b84840eef9057826c664472e86c91d675d007137f5",
+ "sha256:34422d5a69a60b7e9a07a690094e824b66f5ddc662a5fc600d65b7c174a05f04",
+ "sha256:370c68dc5570b394cbaadff50e64d705f64debed30573e5c313c360689b6aadc",
+ "sha256:3a1018e97aeb24e4f939afcd88211ace472ba566efc5bdf53fd8fd7f41fa7170",
+ "sha256:3d5ac5234fb5053850d79dd8eb1015cb0d7d9ed951fa37aa9e6249a19aa4f336",
+ "sha256:4313ab9bf6a81206c8ac28fdfcddc0435299dc88cad12cc6305fd0e78b81f9e4",
+ "sha256:445ca8d3c5a01309633a0c9db57150312a181146315693273e35d936472df912",
+ "sha256:479595a4fbe9ed8f8f72c59717e8cf222da2e4c07b6ae5b65411e6302af9708e",
+ "sha256:4918fd5f8b43aa7ec031e0fef1ee02deb80b6afd49c85f0790be1dc4ce34cb50",
+ "sha256:4aba818dcc7263852aabb172ec27b71d2abca02a593b95fa79351b2774eb1d2b",
+ "sha256:4e819a806420bc010489f4e741b3036071aba209f2e0989d4750b08b12a9343f",
+ "sha256:4facc913e10bdba42ec0aee76d029aedda628161a7ce4116b16680a0413f658a",
+ "sha256:549c3584993772e25f02d0656ac48abdda73169fe347263948cf2b1cead622f3",
+ "sha256:5c02fcd2bf45162280613d2e4a1ca3ac558ff921ae4e308ecb307650d3a6ee51",
+ "sha256:5f580c651a72b75c39e311343fe6875d6f58cf51c471a97f15a938d9fe4e0d37",
+ "sha256:62120ed0de69b3649cc68e2965376048793f466c5a6c4370fb27c16c1beac22d",
+ "sha256:6295004b2dd37b0835ea5c14a33e00e8cfa3c4add4d587b77287825f3418d310",
+ "sha256:65436dce9fdc0aeeb0a0effe0839cb3d6a05f45aa45a4d9f9c60989beca78b9c",
+ "sha256:684008ec44ad275832a5a152f6e764bbe1914bea10968017b6feaecdad5736e0",
+ "sha256:684e52023aec43bdf0250e843e1fdd6febbe831bd9d52da72333fa201aaa2335",
+ "sha256:6cc38067209354e16c5609b66285af17a2863a47585bcf75285cab33d4c3b8df",
+ "sha256:6f2f017c5be19984fbbf55f8af6caba25e62c71293213f044da3ada7091a4455",
+ "sha256:743deffdf3b3481da32e8a96887e2aa945ec6685af1cfe2bcc292638c9ba2f48",
+ "sha256:7571f19f4a3fd00af9341c7801d1ad1967fc9c3f5e62402683047e7166b9f2b4",
+ "sha256:7731728b6568fc286d86745f27f07266de49603a6fdc4d19c87e8c247be452af",
+ "sha256:785c071c982dce54d44ea0b79cd6dfafddeccdd98cfa5f7b86ef69b381b457d9",
+ "sha256:78fddb22b9ef810b63ef341c9fcf6455232d97cfe03938cbc29e2672c436670e",
+ "sha256:7bb966fdd9217e53abf824f437a5a2d643a38d4fd5fd0ca711b9da683d452969",
+ "sha256:7cbc5d9e8a1781e7be17da67b92580d6ce4dcef5819c1b1b89f49d9678cc278c",
+ "sha256:803b8905b52de78b173d3c1e83df0efb929621e7b7c5766c0843704d5332682f",
+ "sha256:80b696e8972b81edf0af2a259e1b2a4a661f818fae22e5fa4fa1a995fb4a40fd",
+ "sha256:81500ed5af2090b4a9157a59dbc89873a25c33db1bb9a8cf123837dcc9765047",
+ "sha256:89ec7f2c08937421bbbb8b48c54096fa4f88347946d4747021ad85f1b3021b3c",
+ "sha256:8ba6745440b9a27336443b0c285d705ce73adb9ec90e2f2004c64d95ab5a7598",
+ "sha256:8c91e1763696c0eb66340c4df98623c2d4e77d0746b8f8f2bee2c6883fd1fe18",
+ "sha256:8d015604ee6204e76569d2f44e5a210728fa917115bef0d102f4107e622b08d5",
+ "sha256:8d1f86f3f4e2388aa3310b50694ac44daefbd1681def26b4519bd050a398dc5a",
+ "sha256:8f83b6fd3dc3ba94d2b22717f9c8b8512354fd95221ac661784df2769ea9bba9",
+ "sha256:8fc6976a3395fe4d1fbeb984adaa8ec652a1e12f36b56ec8c236e5117b585427",
+ "sha256:904c883cf10a975b02ab3478bce652f0f5346a2c28d0a8521d97bb23c323cc8b",
+ "sha256:911742856ce98d879acbea33fcc03c1d8dc1106234c5e7d068932c945db209c0",
+ "sha256:91797b98f5e34b6a49f54be33f72e2fb658018ae532be2f79f7c63b4ae225145",
+ "sha256:95399831a206211d6bc40224af1c635cb8790ddd5c7493e0bd03b85711076a53",
+ "sha256:956b58d692f235cfbf5b4f3abd6d99bf102f161ccfe20d2fd0904f51c72c4c66",
+ "sha256:98c1165f3809ce7774f05cb74e5408cd3aa93ee8573ae959a97a53db3ca3180d",
+ "sha256:9ab40412f8cd6f615bfedea40c8bf0407d41bf83b96f6fc9ff34976d6b7037fd",
+ "sha256:9df1bfef97db938469ef0a7354b2d591a2d438bc497b2c489471bec0e6baf7c4",
+ "sha256:a01fe2305e6232ef3e8f40bfc0f0f3a04def9aab514910fa4203bafbc0bb4682",
+ "sha256:a70b51f55fd954d1f194271695821dd62054d949efd6368d8be64edd37f55c86",
+ "sha256:a7ccdd1c4a3472a7533b0a7aa9ee34c9a2bef859ba86deec07aff2ad7e0c3b94",
+ "sha256:b340cccad138ecb363324aa26893963dcabb02bb25e440ebdf42e30963f1a4e0",
+ "sha256:b74586dd0b039c62416034f811d7ee62810174bb70dffcca6439f5236249eb09",
+ "sha256:b9d320b3bf82a39f248769fc7f188e00f93526cc0fe739cfa197868633d44701",
+ "sha256:ba2336d6548dee3117520545cfe44dc28a250aa091f8281d28804aa8d707d93d",
+ "sha256:ba8122e3bb94ecda29a8de4cf889f600171424ea586847aa92c334772d200331",
+ "sha256:bd727ad276bb91928879f3aa6396c9a1d34e5e180dce40578421a691eeb77f47",
+ "sha256:c21fc21a4c7480479d12fd8e679b699f744f76bb05f53a1d14182b31f55aac76",
+ "sha256:c2d0e7cbb6341e830adcbfa2479fdeebbfbb328f11edd6b5675674e7a1e37730",
+ "sha256:c2ef6f7990b6e8758fe48ad08f7e2f66c8f11dc66e24093304b87cae9037bb4a",
+ "sha256:c4ed75ea6892a56896d78f11006161eea52c45a14994794bcfa1654430984b22",
+ "sha256:cccc79a9be9b64c881f18305a7c715ba199e471a3973faeb7ba84172abb3f317",
+ "sha256:d0800631e565c47520aaa04ae38b96abc5196fe8b4aa9bd864445bd2b5848a7a",
+ "sha256:d2da13568eff02b30fd54fccd1e042a70fe920d816616fda4bf54ec705668d81",
+ "sha256:d61ae114d2a2311f61d90c2ef1358518e8f05eafda76eaf9c772a077e0b465ec",
+ "sha256:d83c2bc678453646f1a18f8db1e927a2d3f4935031b9ad8a76e56760461105dd",
+ "sha256:dd5acc0a7d38fdc7a3a6fd3ad14c880819008ecb3379626e56b163165162cc46",
+ "sha256:df79012ebf6f4efb8d307b1328226aef24ca446b3ff8d0e30202d7ebcb977a8c",
+ "sha256:e0a2df336d1135a0b3a67f3bbf78a75f69562c1199ed9935372b82215cddd6e2",
+ "sha256:e2f142b45c6fed48166faeb4303b4b58c9fcd827da63f4cf0a123c3480ae11fb",
+ "sha256:e697e1c0238133589e00c244a8b676bc2cfc3ab4961318d902040d099fec7483",
+ "sha256:e757d475953269fbf4b441207bb7dbdd1c43180711b6208e129b637792ac0b93",
+ "sha256:e87ab229332ceb127a165612d839ab87795972102cb9830e5f12b8c9a5c1b508",
+ "sha256:ea355eb43b11764cf799dda62c658c4d2fdb16af41f59bb1ccfec517b60bcb07",
+ "sha256:ec7e0043b91115f427998febaa2beb82c82df708168b35ece3accb610b91fac1",
+ "sha256:eeaa0b5328b785abc344acc6241cffde50dc394a0644a968add75fcefe15b9d4",
+ "sha256:f2d80a6749724b37853ece57988b39c4e79d2b5fe2869a86e8aeae3bbeef9eb0",
+ "sha256:fa454d26f2e87ad661c4f0c5a5fe4cf6aab1e307d1b94f16ffdfcb089ba685c0",
+ "sha256:fb83cc090eac63c006871fd24db5e30a1f282faa46328572661c0a24a2323a08",
+ "sha256:fd80d1280d473500d8086d104962a82d77bfbf2b118053824b7be28cd5a79ea5"
],
"markers": "python_version >= '3.7'",
- "version": "==2023.12.25"
+ "version": "==2024.4.16"
},
"requests": {
"hashes": [
@@ -676,36 +683,36 @@
},
"ruff": {
"hashes": [
- "sha256:3f3860057590e810c7ffea75669bdc6927bfd91e29b4baa9258fd48b540a4365",
- "sha256:519cf6a0ebed244dce1dc8aecd3dc99add7a2ee15bb68cf19588bb5bf58e0488",
- "sha256:60c870a7d46efcbc8385d27ec07fe534ac32f3b251e4fc44b3cbfd9e09609ef4",
- "sha256:64abeed785dad51801b423fa51840b1764b35d6c461ea8caef9cf9e5e5ab34d9",
- "sha256:6810563cc08ad0096b57c717bd78aeac888a1bfd38654d9113cb3dc4d3f74232",
- "sha256:6fc14fa742e1d8f24910e1fff0bd5e26d395b0e0e04cc1b15c7c5e5fe5b4af91",
- "sha256:986f2377f7cf12efac1f515fc1a5b753c000ed1e0a6de96747cdf2da20a1b369",
- "sha256:98e98300056445ba2cc27d0b325fd044dc17fcc38e4e4d2c7711585bd0a958ed",
- "sha256:af27ac187c0a331e8ef91d84bf1c3c6a5dea97e912a7560ac0cef25c526a4102",
- "sha256:bb0acfb921030d00070539c038cd24bb1df73a2981e9f55942514af8b17be94e",
- "sha256:c4fd98e85869603e65f554fdc5cddf0712e352fe6e61d29d5a6fe087ec82b76c",
- "sha256:cf133dd744f2470b347f602452a88e70dadfbe0fcfb5fd46e093d55da65f82f7",
- "sha256:cf187a7e7098233d0d0c71175375c5162f880126c4c716fa28a8ac418dcf3378",
- "sha256:d3ee7880f653cc03749a3bfea720cf2a192e4f884925b0cf7eecce82f0ce5854",
- "sha256:de0d5069b165e5a32b3c6ffbb81c350b1e3d3483347196ffdf86dc0ef9e37dd6",
- "sha256:df52972138318bc7546d92348a1ee58449bc3f9eaf0db278906eb511889c4b50",
- "sha256:f0f4484c6541a99862b693e13a151435a279b271cff20e37101116a21e2a1ad1"
+ "sha256:0926cefb57fc5fced629603fbd1a23d458b25418681d96823992ba975f050c2b",
+ "sha256:1c859f294f8633889e7d77de228b203eb0e9a03071b72b5989d89a0cf98ee262",
+ "sha256:2c6e37f2e3cd74496a74af9a4fa67b547ab3ca137688c484749189bf3a686ceb",
+ "sha256:2d9ef6231e3fbdc0b8c72404a1a0c46fd0dcea84efca83beb4681c318ea6a953",
+ "sha256:6e68d248ed688b9d69fd4d18737edcbb79c98b251bba5a2b031ce2470224bdf9",
+ "sha256:9485f54a7189e6f7433e0058cf8581bee45c31a25cd69009d2a040d1bd4bfaef",
+ "sha256:a1eaf03d87e6a7cd5e661d36d8c6e874693cb9bc3049d110bc9a97b350680c43",
+ "sha256:b34510141e393519a47f2d7b8216fec747ea1f2c81e85f076e9f2910588d4b64",
+ "sha256:b90506f3d6d1f41f43f9b7b5ff845aeefabed6d2494307bc7b178360a8805252",
+ "sha256:b92f03b4aa9fa23e1799b40f15f8b95cdc418782a567d6c43def65e1bbb7f1cf",
+ "sha256:baa27d9d72a94574d250f42b7640b3bd2edc4c58ac8ac2778a8c82374bb27984",
+ "sha256:c7d391e5936af5c9e252743d767c564670dc3889aff460d35c518ee76e4b26d7",
+ "sha256:d2921ac03ce1383e360e8a95442ffb0d757a6a7ddd9a5be68561a671e0e5807e",
+ "sha256:d592116cdbb65f8b1b7e2a2b48297eb865f6bdc20641879aa9d7b9c11d86db79",
+ "sha256:eec8d185fe193ad053eda3a6be23069e0c8ba8c5d20bc5ace6e3b9e37d246d3f",
+ "sha256:efd703a5975ac1998c2cc5e9494e13b28f31e66c616b0a76e206de2562e0843c",
+ "sha256:f1ee41580bff1a651339eb3337c20c12f4037f6110a36ae4a2d864c52e5ef954"
],
"index": "pypi",
"markers": "python_version >= '3.7'",
- "version": "==0.3.4"
+ "version": "==0.4.1"
},
"setuptools": {
"hashes": [
- "sha256:0ff4183f8f42cd8fa3acea16c45205521a4ef28f73c6391d8a25e92893134f2e",
- "sha256:c21c49fb1042386df081cb5d86759792ab89efca84cf114889191cd09aacc80c"
+ "sha256:6c1fccdac05a97e598fb0ae3bbed5904ccb317337a51139dcd51453611bbb987",
+ "sha256:c636ac361bc47580504644275c9ad802c50415c7522212252c033bd15f301f32"
],
"index": "pypi",
"markers": "python_version >= '3.8'",
- "version": "==69.2.0"
+ "version": "==69.5.1"
},
"six": {
"hashes": [
@@ -733,11 +740,11 @@
},
"typing-extensions": {
"hashes": [
- "sha256:6f1117ac0cbe64536f34520c4688cd144794f9b1d79690bfe0389aa12a347976",
- "sha256:7427ef26efa5e4e465e3765af0e52d3897e3684c908efe20e3331e1ce51884b3"
+ "sha256:83f085bd5ca59c80295fc2a82ab5dac679cbe02b9f33f7d83af68e241bea51b0",
+ "sha256:c1f94d72897edaf4ce775bb7558d5b79d8126906a14ea5ed1635921406c0387a"
],
"markers": "python_version < '3.11'",
- "version": "==4.11.0rc1"
+ "version": "==4.11.0"
},
"urllib3": {
"hashes": [
@@ -901,37 +908,37 @@
},
"mypy": {
"hashes": [
- "sha256:0235391f1c6f6ce487b23b9dbd1327b4ec33bb93934aa986efe8a9563d9349e6",
- "sha256:190da1ee69b427d7efa8aa0d5e5ccd67a4fb04038c380237a0d96829cb157913",
- "sha256:2418488264eb41f69cc64a69a745fad4a8f86649af4b1041a4c64ee61fc61129",
- "sha256:3a3c007ff3ee90f69cf0a15cbcdf0995749569b86b6d2f327af01fd1b8aee9dc",
- "sha256:3cc5da0127e6a478cddd906068496a97a7618a21ce9b54bde5bf7e539c7af974",
- "sha256:48533cdd345c3c2e5ef48ba3b0d3880b257b423e7995dada04248725c6f77374",
- "sha256:49c87c15aed320de9b438ae7b00c1ac91cd393c1b854c2ce538e2a72d55df150",
- "sha256:4d3dbd346cfec7cb98e6cbb6e0f3c23618af826316188d587d1c1bc34f0ede03",
- "sha256:571741dc4194b4f82d344b15e8837e8c5fcc462d66d076748142327626a1b6e9",
- "sha256:587ce887f75dd9700252a3abbc9c97bbe165a4a630597845c61279cf32dfbf02",
- "sha256:5d741d3fc7c4da608764073089e5f58ef6352bedc223ff58f2f038c2c4698a89",
- "sha256:5e6061f44f2313b94f920e91b204ec600982961e07a17e0f6cd83371cb23f5c2",
- "sha256:61758fabd58ce4b0720ae1e2fea5cfd4431591d6d590b197775329264f86311d",
- "sha256:653265f9a2784db65bfca694d1edd23093ce49740b2244cde583aeb134c008f3",
- "sha256:68edad3dc7d70f2f17ae4c6c1b9471a56138ca22722487eebacfd1eb5321d612",
- "sha256:81a10926e5473c5fc3da8abb04119a1f5811a236dc3a38d92015cb1e6ba4cb9e",
- "sha256:85ca5fcc24f0b4aeedc1d02f93707bccc04733f21d41c88334c5482219b1ccb3",
- "sha256:a260627a570559181a9ea5de61ac6297aa5af202f06fd7ab093ce74e7181e43e",
- "sha256:aceb1db093b04db5cd390821464504111b8ec3e351eb85afd1433490163d60cd",
- "sha256:b685154e22e4e9199fc95f298661deea28aaede5ae16ccc8cbb1045e716b3e04",
- "sha256:d357423fa57a489e8c47b7c85dfb96698caba13d66e086b412298a1a0ea3b0ed",
- "sha256:d4d5ddc13421ba3e2e082a6c2d74c2ddb3979c39b582dacd53dd5d9431237185",
- "sha256:e49499be624dead83927e70c756970a0bc8240e9f769389cdf5714b0784ca6bf",
- "sha256:e54396d70be04b34f31d2edf3362c1edd023246c82f1730bbf8768c28db5361b",
- "sha256:f88566144752999351725ac623471661c9d1cd8caa0134ff98cceeea181789f4",
- "sha256:f8a67616990062232ee4c3952f41c779afac41405806042a8126fe96e098419f",
- "sha256:fe28657de3bfec596bbeef01cb219833ad9d38dd5393fc649f4b366840baefe6"
+ "sha256:075cbf81f3e134eadaf247de187bd604748171d6b79736fa9b6c9685b4083061",
+ "sha256:12b6bfc1b1a66095ab413160a6e520e1dc076a28f3e22f7fb25ba3b000b4ef99",
+ "sha256:1ec404a7cbe9fc0e92cb0e67f55ce0c025014e26d33e54d9e506a0f2d07fe5de",
+ "sha256:28d0e038361b45f099cc086d9dd99c15ff14d0188f44ac883010e172ce86c38a",
+ "sha256:2b0695d605ddcd3eb2f736cd8b4e388288c21e7de85001e9f85df9187f2b50f9",
+ "sha256:3236a4c8f535a0631f85f5fcdffba71c7feeef76a6002fcba7c1a8e57c8be1ec",
+ "sha256:3be66771aa5c97602f382230165b856c231d1277c511c9a8dd058be4784472e1",
+ "sha256:3d087fcbec056c4ee34974da493a826ce316947485cef3901f511848e687c131",
+ "sha256:3f298531bca95ff615b6e9f2fc0333aae27fa48052903a0ac90215021cdcfa4f",
+ "sha256:4a2b5cdbb5dd35aa08ea9114436e0d79aceb2f38e32c21684dcf8e24e1e92821",
+ "sha256:4cf18f9d0efa1b16478c4c129eabec36148032575391095f73cae2e722fcf9d5",
+ "sha256:8b2cbaca148d0754a54d44121b5825ae71868c7592a53b7292eeb0f3fdae95ee",
+ "sha256:8f55583b12156c399dce2df7d16f8a5095291354f1e839c252ec6c0611e86e2e",
+ "sha256:92f93b21c0fe73dc00abf91022234c79d793318b8a96faac147cd579c1671746",
+ "sha256:9e36fb078cce9904c7989b9693e41cb9711e0600139ce3970c6ef814b6ebc2b2",
+ "sha256:9fd50226364cd2737351c79807775136b0abe084433b55b2e29181a4c3c878c0",
+ "sha256:a781f6ad4bab20eef8b65174a57e5203f4be627b46291f4589879bf4e257b97b",
+ "sha256:a87dbfa85971e8d59c9cc1fcf534efe664d8949e4c0b6b44e8ca548e746a8d53",
+ "sha256:b808e12113505b97d9023b0b5e0c0705a90571c6feefc6f215c1df9381256e30",
+ "sha256:bc6ac273b23c6b82da3bb25f4136c4fd42665f17f2cd850771cb600bdd2ebeda",
+ "sha256:cd777b780312ddb135bceb9bc8722a73ec95e042f911cc279e2ec3c667076051",
+ "sha256:da1cbf08fb3b851ab3b9523a884c232774008267b1f83371ace57f412fe308c2",
+ "sha256:e22e1527dc3d4aa94311d246b59e47f6455b8729f4968765ac1eacf9a4760bc7",
+ "sha256:f8c083976eb530019175aabadb60921e73b4f45736760826aa1689dda8208aee",
+ "sha256:f90cff89eea89273727d8783fef5d4a934be2fdca11b47def50cf5d311aff727",
+ "sha256:fa7ef5244615a2523b56c034becde4e9e3f9b034854c93639adb667ec9ec2976",
+ "sha256:fcfc70599efde5c67862a07a1aaf50e55bce629ace26bb19dc17cece5dd31ca4"
],
"index": "pypi",
"markers": "python_version >= '3.8'",
- "version": "==1.9.0"
+ "version": "==1.10.0"
},
"mypy-extensions": {
"hashes": [
@@ -992,11 +999,11 @@
},
"typing-extensions": {
"hashes": [
- "sha256:69b1a937c3a517342112fb4c6df7e72fc39a38e7891a5730ed4985b5214b5475",
- "sha256:b0abd7c89e8fb96f98db18d86106ff1d90ab692004eb746cf6eda2682f91b3cb"
+ "sha256:83f085bd5ca59c80295fc2a82ab5dac679cbe02b9f33f7d83af68e241bea51b0",
+ "sha256:c1f94d72897edaf4ce775bb7558d5b79d8126906a14ea5ed1635921406c0387a"
],
"markers": "python_version >= '3.8'",
- "version": "==4.10.0"
+ "version": "==4.11.0"
},
"wrapt": {
"hashes": [
diff --git a/README.md b/README.md
index 733ac86ce..a683d5966 100644
--- a/README.md
+++ b/README.md
@@ -2,9 +2,9 @@
-[![GitHub issues](https://img.shields.io/github/issues/eirannejad/pyRevit.svg?style=for-the-badge)](https://github.com/eirannejad/pyRevit/issues)
-[![GitHub forks](https://img.shields.io/github/forks/eirannejad/pyRevit.svg?style=for-the-badge)](https://github.com/eirannejad/pyRevit/network)
-[![GitHub stars](https://img.shields.io/github/stars/eirannejad/pyRevit.svg?style=for-the-badge&colorB=red)](https://github.com/eirannejad/pyRevit/stargazers)
+[![GitHub issues](https://img.shields.io/github/issues/pyrevitlabs/pyRevit.svg?style=for-the-badge)](https://github.com/pyrevitlabs/pyRevit/issues)
+[![GitHub forks](https://img.shields.io/github/forks/pyrevitlabs/pyRevit.svg?style=for-the-badge)](https://github.com/pyrevitlabs/pyRevit/network)
+[![GitHub stars](https://img.shields.io/github/stars/pyrevitlabs/pyRevit.svg?style=for-the-badge&colorB=red)](https://github.com/pyrevitlabs/pyRevit/stargazers)
[![License: GPL v3](https://img.shields.io/badge/License-GPL%20v3-blue.svg?style=for-the-badge)](http://www.gnu.org/licenses/gpl-3.0)
[![made with love in portland](https://img.shields.io/badge/%3C%2F%3E%20with%20%3C3-Portland%2C%20OR-green.svg?style=for-the-badge)](https://en.wikipedia.org/wiki/Portland,_Oregon)
@@ -48,7 +48,7 @@ pyRevit helps you quickly sketch out your automation and addon ideas, in whichev
**↓** Read the pyRevit API reference to know everything about pyRevit available modules, functions, ...
-[pyRevit API Reference](https://ein.sh/pyRevit/reference/pyrevit/)
+[pyRevit API Reference](https://pyrevitlabs.github.io/pyRevit/reference/pyrevit/)
**↓** Read the docs to know everything about pyRevit scripts, extensions, ...
@@ -67,7 +67,7 @@ pyRevit helps you quickly sketch out your automation and addon ideas, in whichev
# Staying Updated
-Follow [pyRevit on Twitter](https://twitter.com/pyrevit) to stay notified about the upcoming changes and follow [pyRevit Release Notes](https://github.com/eirannejad/pyRevit/releases) for the breaking changes
+Follow [pyRevit on Twitter](https://twitter.com/pyrevit) to stay notified about the upcoming changes and follow [pyRevit Release Notes](https://github.com/pyrevitlabs/pyRevit/releases) for the breaking changes
**↓** Check out the blog for news
@@ -81,7 +81,7 @@ Follow [pyRevit on Twitter](https://twitter.com/pyrevit) to stay notified about
# Dealing with Issues
-Check the list of [Currently Open](https://github.com/eirannejad/pyRevit/issues) and [Previously Reported Issues](https://github.com/eirannejad/pyRevit/issues?q=is%3Aissue+is%3Aclosed) for anything similar to yours.
+Check the list of [Currently Open](https://github.com/pyrevitlabs/pyRevit/issues) and [Previously Reported Issues](https://github.com/pyrevitlabs/pyRevit/issues?q=is%3Aissue+is%3Aclosed) for anything similar to yours.
**↓** See the FAQ page for questions
@@ -135,8 +135,8 @@ Check the list of [Currently Open](https://github.com/eirannejad/pyRevit/issues)
Made with [contrib.rocks](https://contrib.rocks)
-
-
+
+
---
diff --git a/bin/pyrevit-hosts.json b/bin/pyrevit-hosts.json
index 763d2a4f8..b74d7139a 100644
--- a/bin/pyrevit-hosts.json
+++ b/bin/pyrevit-hosts.json
@@ -218,7 +218,7 @@
{
"meta": {
"schema": "1.0",
- "source": "https://github.com/eirannejad/pyRevit/issues/622"
+ "source": "https://github.com/pyrevitlabs/pyRevit/issues/622"
},
"product": "Autodesk Revit",
"release": "2013 Update Release 3",
@@ -290,7 +290,7 @@
{
"meta": {
"schema": "1.0",
- "source": "//https://github.com/eirannejad/pyRevit/issues/543"
+ "source": "//https://github.com/pyrevitlabs/pyRevit/issues/543"
},
"product": "Autodesk Revit",
"release": "2014 Update Release 3",
@@ -902,7 +902,7 @@
{
"meta": {
"schema": "1.0",
- "source": "https://github.com/eirannejad/pyRevit/issues/456"
+ "source": "https://github.com/pyrevitlabs/pyRevit/issues/456"
},
"product": "Autodesk Revit",
"release": "2017.0.4",
@@ -1034,7 +1034,7 @@
{
"meta": {
"schema": "1.0",
- "source": "https://github.com/eirannejad/pyRevit/issues/456"
+ "source": "https://github.com/pyrevitlabs/pyRevit/issues/456"
},
"product": "Autodesk Revit",
"release": "2018.3",
@@ -1751,30 +1751,29 @@
"target": "x64",
"notes": "https://help.autodesk.com/view/RVT/2023/ENU/?guid=RevitReleaseNotes_2023updates_2023_1_2_html"
},
- {
+ {
"meta": {
"schema": "1.0",
- "source": "https://help.autodesk.com/view/RVT/2023/ENU/?guid=RevitReleaseNotes_2023updates_2023_1_2_html"
+ "source": "https://help.autodesk.com/view/RVT/2023/ENU/?guid=RevitReleaseNotes_2023updates_2023_1_3_html"
},
"product": "Autodesk Revit",
- "release": "23.1.2",
- "version": "23.1.20.70",
- "build": "20230510_1100",
+ "release": "23.1.3",
+ "version": "23.1.30.97",
+ "build": "20230828_1515",
"target": "x64",
- "notes": "https://help.autodesk.com/view/RVT/2023/ENU/?guid=RevitReleaseNotes_2023updates_2023_1_2_html"
+ "notes": "https://help.autodesk.com/view/RVT/2023/ENU/?guid=RevitReleaseNotes_2023updates_2023_1_3_html"
},
-
{
"meta": {
"schema": "1.0",
- "source": "https://help.autodesk.com/view/RVT/2023/ENU/?guid=RevitReleaseNotes_2023updates_2023_1_3_html"
+ "source": "https://help.autodesk.com/view/RVT/2023/ENU/?guid=RevitReleaseNotes_2023updates_2023_1_4_html"
},
"product": "Autodesk Revit",
- "release": "23.1.3",
- "version": "23.1.30.97",
- "build": "20230828_1515",
+ "release": "23.1.4",
+ "version": "23.1.40.56",
+ "build": "20240411_0945",
"target": "x64",
- "notes": "https://help.autodesk.com/view/RVT/2023/ENU/?guid=RevitReleaseNotes_2023updates_2023_1_3_html"
+ "notes": "https://help.autodesk.com/view/RVT/2023/ENU/?guid=RevitReleaseNotes_2023updates_2023_1_4_html"
},
{
"meta": {
@@ -1847,6 +1846,18 @@
"build": "20231029_1515",
"target": "x64",
"notes": "https://help.autodesk.com/view/RVT/2024/ENU/?guid=RevitReleaseNotes_2024updates_2024_2_html"
+ },
+ {
+ "meta": {
+ "schema": "1.0",
+ "source": "https://help.autodesk.com/view/RVT/2024/ENU/?guid=RevitReleaseNotes_2024updates_2024_2_1_html"
+ },
+ "product": "Autodesk Revit",
+ "release": "24.2.1",
+ "version": "24.2.10.64",
+ "build": "20240408_1515",
+ "target": "x64",
+ "notes": "https://help.autodesk.com/view/RVT/2024/ENU/?guid=RevitReleaseNotes_2024updates_2024_2_1_html"
},
{
"meta": {
diff --git a/dev/_changelog.py b/dev/_changelog.py
index 8aa1cd276..5a04e1264 100644
--- a/dev/_changelog.py
+++ b/dev/_changelog.py
@@ -291,7 +291,7 @@ def generate_release_notes(args: Dict[str, str]):
install_version_urlsafe = props.get_version(install=True, url_safe=True)
base_url = (
- "https://github.com/eirannejad/pyRevit/"
+ "https://github.com/pyrevitlabs/pyRevit/"
f"releases/download/v{install_version_urlsafe}/"
)
diff --git a/dev/_props.py b/dev/_props.py
index 7b0dbeae8..e11f8c8c4 100644
--- a/dev/_props.py
+++ b/dev/_props.py
@@ -30,7 +30,7 @@ def _get_urlsafe_version(version: str):
def _get_release_url(version: str):
build_version_urlsafe = _get_urlsafe_version(version)
return (
- "https://github.com/eirannejad/pyRevit/"
+ "https://github.com/pyrevitlabs/pyRevit/"
f"releases/tag/v{build_version_urlsafe}/"
)
diff --git a/dev/_release.py b/dev/_release.py
index 4ec14531e..09530925e 100644
--- a/dev/_release.py
+++ b/dev/_release.py
@@ -281,7 +281,7 @@ def _build_msi_installers():
def _build_choco_packages():
build_version_urlsafe = props.get_version(install=False, url_safe=True)
base_url = (
- "https://github.com/eirannejad/pyRevit/"
+ "https://github.com/pyrevitlabs/pyRevit/"
f"releases/download/v{build_version_urlsafe}/"
)
install_version = props.get_version(install=True)
diff --git a/dev/pyRevitLabs/pyRevitCLI/PyRevitCLIReleaseCmds.cs b/dev/pyRevitLabs/pyRevitCLI/PyRevitCLIReleaseCmds.cs
index 62cce25c9..962dc14e7 100644
--- a/dev/pyRevitLabs/pyRevitCLI/PyRevitCLIReleaseCmds.cs
+++ b/dev/pyRevitLabs/pyRevitCLI/PyRevitCLIReleaseCmds.cs
@@ -66,7 +66,7 @@ internal static void
}
// or find first release matching given pattern
else if (searchPattern != null) {
- matchedRelease = PyRevitReleases.FindReleases(searchPattern, includePreRelease: listPreReleases).First();
+ matchedRelease = PyRevitReleases.FindReleases(searchPattern, includePreRelease: listPreReleases).FirstOrDefault();
if (matchedRelease is null)
throw new PyRevitException(
string.Format("No release matching \"{0}\" were found.", searchPattern)
@@ -106,7 +106,15 @@ internal static void
string downloadUrl = null;
switch (assetType) {
case GithubReleaseAssetType.Archive: downloadUrl = matchedRelease.ArchiveURL; break;
- case GithubReleaseAssetType.Installer: downloadUrl = matchedRelease.InstallerURL; break;
+ case GithubReleaseAssetType.Installer:
+ {
+ var rawInstallerUrl = matchedRelease.InstallerURL;
+
+ downloadUrl = rawInstallerUrl.Replace(".nupkg", "_signed.exe").Replace("_CLI_", "_").Replace("-cli.", "_").Replace("_admin_signed.exe", "_signed.exe");
+
+ }
+ break;
+
case GithubReleaseAssetType.Unknown: downloadUrl = null; break;
}
@@ -119,7 +127,7 @@ internal static void
logger.Debug("Saving package to \"{0}\"", destPath);
// download file and report
- CommonUtils.DownloadFile(downloadUrl, destPath, progressToken: Path.GetFileName(downloadUrl));
+ CommonUtils.DownloadFile(downloadUrl, destPath);
Console.WriteLine(
string.Format("Downloaded package to \"{0}\"", destPath)
);
diff --git a/dev/pyRevitLabs/pyRevitLabs.Common/CommonUtils.cs b/dev/pyRevitLabs/pyRevitLabs.Common/CommonUtils.cs
index fa100d943..71dc93d27 100644
--- a/dev/pyRevitLabs/pyRevitLabs.Common/CommonUtils.cs
+++ b/dev/pyRevitLabs/pyRevitLabs.Common/CommonUtils.cs
@@ -138,7 +138,7 @@ public static HttpWebRequest GetHttpWebRequest(string url) {
throw new pyRevitNoInternetConnectionException();
}
- public static string DownloadFile(string url, string destPath, string progressToken = null) {
+ public static string DownloadFile(string url, string destPath) {
try {
using (var client = GetWebClient()) {
client.Headers.Add("User-Agent", "pyrevit-cli");
diff --git a/dev/pyRevitLabs/pyRevitLabs.Common/Consts.cs b/dev/pyRevitLabs/pyRevitLabs.Common/Consts.cs
index be0549f43..6a98001b6 100644
--- a/dev/pyRevitLabs/pyRevitLabs.Common/Consts.cs
+++ b/dev/pyRevitLabs/pyRevitLabs.Common/Consts.cs
@@ -36,7 +36,7 @@ public class PyRevitLabsConsts {
// consts for the official pyRevit repo
public const string OriginalRepoName = ProductName;
- public static string OriginalRepoId = string.Format(@"eirannejad/{0}", ProductName);
+ public static string OriginalRepoId = string.Format(@"pyrevitlabs/{0}", ProductName);
public static string OriginalRepoBasePath = string.Format(@"https://github.com/{0}", OriginalRepoId);
public static string OriginalRepoGitPath = OriginalRepoBasePath + DefaultGitDirName;
diff --git a/dev/pyRevitLabs/pyRevitLabs.Common/GitInstaller.cs b/dev/pyRevitLabs/pyRevitLabs.Common/GitInstaller.cs
index f41ec25c0..b58ebc4f0 100644
--- a/dev/pyRevitLabs/pyRevitLabs.Common/GitInstaller.cs
+++ b/dev/pyRevitLabs/pyRevitLabs.Common/GitInstaller.cs
@@ -148,7 +148,7 @@ public static UpdateStatus ForcedUpdate(string repoPath, GitInstallerCredentials
// before updating, let's first
// forced checkout to overwrite possible local changes
- // Re: https://github.com/eirannejad/pyRevit/issues/229
+ // Re: https://github.com/pyrevitlabs/pyRevit/issues/229
var checkoutOptions = new CheckoutOptions();
checkoutOptions.CheckoutModifiers = CheckoutModifiers.Force;
Commands.Checkout(repo, repo.Head, checkoutOptions);
diff --git a/dev/pyRevitLabs/pyRevitLabs.Common/Github.cs b/dev/pyRevitLabs/pyRevitLabs.Common/Github.cs
index ffbe8a82e..c55576953 100644
--- a/dev/pyRevitLabs/pyRevitLabs.Common/Github.cs
+++ b/dev/pyRevitLabs/pyRevitLabs.Common/Github.cs
@@ -76,7 +76,7 @@ public class GithubAPI {
private static readonly Logger logger = LogManager.GetCurrentClassLogger();
public const string APIReleasesURL = @"https://api.github.com/repos/{0}/releases";
-
+
public const string ArchiveFileExtension = ".zip";
public const string ArchiveInternalBranchPath = @"{0}-{1}";
public const string APIArchiveURL = @"https://github.com/{0}/archive/{1}" + ArchiveFileExtension;
@@ -87,10 +87,10 @@ public static IEnumerable GetReleasesFromAPI(string endpoint, out string n
// make github api call and get a list of releases
// https://developer.github.com/v3/repos/releases/
HttpWebRequest request = CommonUtils.GetHttpWebRequest(endpoint);
- if (AuthToken is null)
- throw new Exception("Missing authorization token. Set on GITHUBTOKEN env var");
+ // if (AuthToken is null)
+ // throw new Exception("Missing authorization token. Set on GITHUBTOKEN env var");
- request.Headers.Add(HttpRequestHeader.Authorization, $"token {AuthToken}");
+ // request.Headers.Add(HttpRequestHeader.Authorization, $"token {AuthToken}");
var response = request.GetResponse();
// extract list of PyRevitRelease from json
diff --git a/dev/pyRevitLabs/pyRevitLabs.Common/JSONDataSource.cs b/dev/pyRevitLabs/pyRevitLabs.Common/JSONDataSource.cs
index 09ec24693..670a1f8eb 100644
--- a/dev/pyRevitLabs/pyRevitLabs.Common/JSONDataSource.cs
+++ b/dev/pyRevitLabs/pyRevitLabs.Common/JSONDataSource.cs
@@ -114,7 +114,7 @@ public void UpdateData(bool forceUpdate = false) {
}
logger.Debug("Downloading to \"{0}\"", dataSourceCacheFile);
- CommonUtils.DownloadFile(DataSourceURL, dataSourceCacheFile, progressToken: DataFileName);
+ CommonUtils.DownloadFile(DataSourceURL, dataSourceCacheFile);
}
catch (Exception dlEx) {
logger.Debug("Error downloading host database file. | {0}", dlEx.Message);
diff --git a/dev/pyRevitLabs/pyRevitLabs.PyRevit/PyRevitClones.cs b/dev/pyRevitLabs/pyRevitLabs.PyRevit/PyRevitClones.cs
index 83633bcd4..eba792259 100644
--- a/dev/pyRevitLabs/pyRevitLabs.PyRevit/PyRevitClones.cs
+++ b/dev/pyRevitLabs/pyRevitLabs.PyRevit/PyRevitClones.cs
@@ -286,7 +286,7 @@ public static void DeployFromImage(string cloneName,
logger.Info("Downloading package \"{0}\"", imageSource);
logger.Debug("Downloading package \"{0}\" to \"{1}\"", imageSource, pkgDest);
imageFilePath =
- CommonUtils.DownloadFile(imageSource, pkgDest, progressToken: Path.GetFileName(imageSource));
+ CommonUtils.DownloadFile(imageSource, pkgDest);
logger.Debug("Downloaded to \"{0}\"", imageFilePath);
}
catch (Exception ex) {
diff --git a/dev/pyRevitLabs/pyRevitLabs.PyRevit/PyRevitConsts.cs b/dev/pyRevitLabs/pyRevitLabs.PyRevit/PyRevitConsts.cs
index 1585aeed4..5aff9d783 100644
--- a/dev/pyRevitLabs/pyRevitLabs.PyRevit/PyRevitConsts.cs
+++ b/dev/pyRevitLabs/pyRevitLabs.PyRevit/PyRevitConsts.cs
@@ -15,11 +15,11 @@ public static class PyRevitConsts {
public const string DefaultCloneRemoteName = PyRevitLabsConsts.DefaultRemoteName;
public static string DefaultCopyInstallName = string.Format("{0}Copy", PyRevitLabsConsts.ProductName);
- public static string ExtensionsDefinitionFileUri = string.Format(@"https://github.com/eirannejad/pyRevit/raw/{0}/extensions/{1}", PyRevitLabsConsts.TragetBranch, ExtensionsDefFileName);
+ public static string ExtensionsDefinitionFileUri = string.Format(@"https://github.com/pyrevitlabs/pyRevit/raw/{0}/extensions/{1}", PyRevitLabsConsts.TragetBranch, ExtensionsDefFileName);
// cli
- public const string CLIHelpUrl = @"https://github.com/eirannejad/pyRevit/blob/cli-v{0}/docs/cli.md";
- public const string CLIHelpUrlDev = @"https://github.com/eirannejad/pyRevit/blob/develop/docs/cli.md";
+ public const string CLIHelpUrl = @"https://github.com/pyrevitlabs/pyRevit/blob/cli-v{0}/docs/cli.md";
+ public const string CLIHelpUrlDev = @"https://github.com/pyrevitlabs/pyRevit/blob/develop/docs/cli.md";
// api
public const string ReleasePrefix = "v";
diff --git a/dev/pyRevitLabs/pyRevitLabs.PyRevit/PyRevitReleases.cs b/dev/pyRevitLabs/pyRevitLabs.PyRevit/PyRevitReleases.cs
index 5f51ccaf8..63f6b104f 100644
--- a/dev/pyRevitLabs/pyRevitLabs.PyRevit/PyRevitReleases.cs
+++ b/dev/pyRevitLabs/pyRevitLabs.PyRevit/PyRevitReleases.cs
@@ -18,10 +18,10 @@ public static class PyRevitReleases {
public static PyRevitRelease GetLatestRelease(bool includePreRelease = false) {
if (includePreRelease)
return GetReleases().Where(r => r.IsPyRevitRelease)
- .OrderByDescending(r => r.Version).ToList().First();
+ .OrderByDescending(r => r.Version).ToList().FirstOrDefault();
else
return GetReleases().Where(r => r.IsPyRevitRelease && !r.PreRelease)
- .OrderByDescending(r => r.Version).ToList().First();
+ .OrderByDescending(r => r.Version).ToList().FirstOrDefault();
}
// Find releases
diff --git a/dev/pyRevitLabs/pyRevitLabs.TargetApps.Revit/RevitModelFile.cs b/dev/pyRevitLabs/pyRevitLabs.TargetApps.Revit/RevitModelFile.cs
index 0897e7560..c28ad7625 100644
--- a/dev/pyRevitLabs/pyRevitLabs.TargetApps.Revit/RevitModelFile.cs
+++ b/dev/pyRevitLabs/pyRevitLabs.TargetApps.Revit/RevitModelFile.cs
@@ -168,7 +168,7 @@ private void ProcessBasicFileInfo(IEnumerable basicInfoDataLines) {
RevitProduct = revitProduct;
}
- // Last Save Path: C:\Users\eirannejad\Desktop\Project1.rvt
+ // Last Save Path: C:\Users\pyrevitlabs\Desktop\Project1.rvt
match = buildFieldRegex("Last Save Path: ", "lastpath").Match(line);
if (match.Success) {
var path = match.Groups["lastpath"].Value;
diff --git a/dev/scripts/github.py b/dev/scripts/github.py
index c8d62a3bb..3225869ef 100644
--- a/dev/scripts/github.py
+++ b/dev/scripts/github.py
@@ -10,7 +10,7 @@
AUTH_TOKEN = os.environ.get("GITHUB_TOKEN", "")
-API_ROOT = "https://api.github.com/repos/eirannejad/pyRevit/"
+API_ROOT = "https://api.github.com/repos/pyrevitlabs/pyRevit/"
API_ISSUES = API_ROOT + "issues/{ticket}"
API_ISSUE_COMMENTS = API_ROOT + "issues/{ticket}/comments"
diff --git a/extensions/pyRevitBundlesCreatorExtension.extension/extension.json b/extensions/pyRevitBundlesCreatorExtension.extension/extension.json
index ac5c7474b..bbd1214e4 100644
--- a/extensions/pyRevitBundlesCreatorExtension.extension/extension.json
+++ b/extensions/pyRevitBundlesCreatorExtension.extension/extension.json
@@ -7,8 +7,8 @@
"description": "Button to create buttons and panels for pyRevit",
"author": "Jean-Marc Couffin",
"author_profile": "https://www.linkedin.com/in/jmcouffin/",
- "url": "https://github.com/eirannejad/pyRevit.git",
- "website": "http://eirannejad.github.io/pyRevit/",
+ "url": "https://github.com/pyrevitlabs/pyRevit.git",
+ "website": "http://pyrevitlabs.github.io/pyRevit/",
"image": "",
"dependencies": []
}
\ No newline at end of file
diff --git a/extensions/pyRevitCore.extension/extension.json b/extensions/pyRevitCore.extension/extension.json
index 20820521e..558f1959d 100644
--- a/extensions/pyRevitCore.extension/extension.json
+++ b/extensions/pyRevitCore.extension/extension.json
@@ -7,8 +7,8 @@
"description": "Core Scripts for Autodesk Revit",
"author": "Ehsan Iran-Nejad",
"author_profile": "https://keybase.io/ein",
- "url": "https://github.com/eirannejad/pyRevit.git",
- "website": "http://eirannejad.github.io/pyRevit/",
+ "url": "https://github.com/pyrevitlabs/pyRevit.git",
+ "website": "http://pyrevitlabs.github.io/pyRevit/",
"image": "",
"templates": {
"author": "Ehsan Iran-Nejad",
diff --git a/extensions/pyRevitDevHooks.extension/extension.json b/extensions/pyRevitDevHooks.extension/extension.json
index 41efd11b5..0f4361d7a 100644
--- a/extensions/pyRevitDevHooks.extension/extension.json
+++ b/extensions/pyRevitDevHooks.extension/extension.json
@@ -7,8 +7,8 @@
"description": "Development Hooks for pyRevit",
"author": "Ehsan Iran-Nejad",
"author_profile": "https://keybase.io/ein",
- "url": "https://github.com/eirannejad/pyRevit.git",
- "website": "http://eirannejad.github.io/pyRevit/",
+ "url": "https://github.com/pyrevitlabs/pyRevit.git",
+ "website": "http://pyrevitlabs.github.io/pyRevit/",
"image": "",
"templates": {
"author": "Ehsan Iran-Nejad",
diff --git a/extensions/pyRevitDevTools.extension/extension.json b/extensions/pyRevitDevTools.extension/extension.json
index 5d1b269c8..b72328cf9 100644
--- a/extensions/pyRevitDevTools.extension/extension.json
+++ b/extensions/pyRevitDevTools.extension/extension.json
@@ -7,8 +7,8 @@
"description": "Development Tools for pyRevit",
"author": "Ehsan Iran-Nejad",
"author_profile": "https://keybase.io/ein",
- "url": "https://github.com/eirannejad/pyRevit.git",
- "website": "http://eirannejad.github.io/pyRevit/",
+ "url": "https://github.com/pyrevitlabs/pyRevit.git",
+ "website": "http://pyrevitlabs.github.io/pyRevit/",
"image": "",
"templates": {
"author": "Ehsan Iran-Nejad",
diff --git a/extensions/pyRevitDevTools.extension/pyRevitDev.tab/Debug.panel/Unit Tests.pulldown/Test Toast.pushbutton/script.py b/extensions/pyRevitDevTools.extension/pyRevitDev.tab/Debug.panel/Unit Tests.pulldown/Test Toast.pushbutton/script.py
index 044146682..514fb2d0d 100644
--- a/extensions/pyRevitDevTools.extension/pyRevitDev.tab/Debug.panel/Unit Tests.pulldown/Test Toast.pushbutton/script.py
+++ b/extensions/pyRevitDevTools.extension/pyRevitDev.tab/Debug.panel/Unit Tests.pulldown/Test Toast.pushbutton/script.py
@@ -5,7 +5,7 @@
"Hello World!",
title="My Script",
appid="MyAPP",
- click="https://eirannejad.github.io/pyRevit/",
+ click="https://pyrevitlabs.github.io/pyRevit/",
actions={
"Open Google":"https://google.com",
"Open Toast64":"https://github.com/go-toast/toast"
diff --git a/extensions/pyRevitTags.extension/extension.json b/extensions/pyRevitTags.extension/extension.json
index 318944ddd..5fb637597 100644
--- a/extensions/pyRevitTags.extension/extension.json
+++ b/extensions/pyRevitTags.extension/extension.json
@@ -7,8 +7,8 @@
"description": "Tag & Package Management for Projects",
"author": "Ehsan Iran-Nejad",
"author_profile": "https://keybase.io/ein",
- "url": "https://github.com/eirannejad/pyRevit.git",
- "website": "http://eirannejad.github.io/pyRevit/",
+ "url": "https://github.com/pyrevitlabs/pyRevit.git",
+ "website": "http://pyrevitlabs.github.io/pyRevit/",
"image": "",
"templates": {
"author": "Ehsan Iran-Nejad",
diff --git a/extensions/pyRevitTemplates.extension/extension.json b/extensions/pyRevitTemplates.extension/extension.json
index 994547555..bfbaa46d1 100644
--- a/extensions/pyRevitTemplates.extension/extension.json
+++ b/extensions/pyRevitTemplates.extension/extension.json
@@ -7,8 +7,8 @@
"description": "Tools for maintaining Revit Templates",
"author": "Ehsan Iran-Nejad",
"author_profile": "https://keybase.io/ein",
- "url": "https://github.com/eirannejad/pyRevit.git",
- "website": "http://eirannejad.github.io/pyRevit/",
+ "url": "https://github.com/pyrevitlabs/pyRevit.git",
+ "website": "http://pyrevitlabs.github.io/pyRevit/",
"image": "",
"dependencies": []
}
\ No newline at end of file
diff --git a/extensions/pyRevitTools.extension/extension.json b/extensions/pyRevitTools.extension/extension.json
index 7e81c3255..985989526 100644
--- a/extensions/pyRevitTools.extension/extension.json
+++ b/extensions/pyRevitTools.extension/extension.json
@@ -7,8 +7,8 @@
"description": "IronPython Scripts for Autodesk Revit",
"author": "Ehsan Iran-Nejad",
"author_profile": "https://keybase.io/ein",
- "url": "https://github.com/eirannejad/pyRevit.git",
- "website": "http://eirannejad.github.io/pyRevit/",
+ "url": "https://github.com/pyrevitlabs/pyRevit.git",
+ "website": "http://pyrevitlabs.github.io/pyRevit/",
"image": "",
"templates": {
"author": "Ehsan Iran-Nejad",
diff --git a/extensions/pyRevitTools.extension/pyRevit.tab/Analysis.panel/Tools.stack/Inspect.pulldown/LinesPerViewCounter.pushbutton/LinesPerViewCounter_script.py b/extensions/pyRevitTools.extension/pyRevit.tab/Analysis.panel/Tools.stack/Inspect.pulldown/LinesPerViewCounter.pushbutton/LinesPerViewCounter_script.py
index da0f00f19..5c154b0b6 100644
--- a/extensions/pyRevitTools.extension/pyRevit.tab/Analysis.panel/Tools.stack/Inspect.pulldown/LinesPerViewCounter.pushbutton/LinesPerViewCounter_script.py
+++ b/extensions/pyRevitTools.extension/pyRevit.tab/Analysis.panel/Tools.stack/Inspect.pulldown/LinesPerViewCounter.pushbutton/LinesPerViewCounter_script.py
@@ -5,46 +5,65 @@
from pyrevit import revit, DB
+__title__ = 'Lines Per View Counter'
+__author__ = 'Frederic Beaupere'
+__contact__ = 'https://github.com/frederic-beaupere'
+__author2__ = 'Jean-Marc Couffin'
+__contact2__ = 'https://github.com/jmcouffin'
+__credits__ = 'http://eirannejad.github.io/pyRevit/credits/'
+
+doc = revit.doc
output = script.get_output()
+output.close_others()
+output.set_width(800)
-detail_lines = defaultdict(int)
-all_lines = DB.FilteredElementCollector(revit.doc)\
- .OfCategory(DB.BuiltInCategory.OST_Lines)\
- .WhereElementIsNotElementType()\
- .ToElements()
+def line_count(document=doc):
+ """
+ Counts the number of detail lines in each view of a Revit document.
-for line in all_lines:
- if line.CurveElementType.ToString() == "DetailCurve":
- view_id_int = line.OwnerViewId.IntegerValue
- detail_lines[view_id_int] += 1
+ Args:
+ document (Document): The Revit document to count the lines in. Defaults to the active document.
-output.print_md("####LINE COUNT IN CURRENT VIEW:")
-output.print_md('By: [{}]({})'.format('Frederic Beaupere',
- 'https://github.com/frederic-beaupere'))
+ Returns:
+ None
+ """
+ if document == doc:
+ output.print_md("\n\n## LINE COUNT IN CURRENT DOCUMENT: "+ doc.Title+"\n")
+ else:
+ document = document.GetLinkDocument()
+ l_title = document.Title.split(":")[0]
+ output.print_md("\n\n## LINE COUNT IN REVIT LINK: "+ l_title+"\n")
+ try:
+ detail_lines = defaultdict(int)
+ table_data = []
+ lines = DB.FilteredElementCollector(document).OfCategory(DB.BuiltInCategory.OST_Lines).WhereElementIsNotElementType().ToElements()
+ for line in lines:
+ if line.CurveElementType.ToString() == "DetailCurve":
+ view_id_int = line.OwnerViewId.IntegerValue
+ detail_lines[view_id_int] += 1
+ for line_count, view_id_int \
+ in sorted(zip(detail_lines.values(), detail_lines.keys()),
+ reverse=True):
+ view_id = DB.ElementId(view_id_int)
+ view_creator = DB.WorksharingUtils.GetWorksharingTooltipInfo(document,view_id).Creator
+ try:
+ view_name = revit.query.get_name(document.GetElement(view_id))
+ except Exception:
+ view_name = ""
+ table_data.append([line_count, view_name, output.linkify(view_id), view_creator])
+ table_data.append([str(sum(detail_lines.values()))+" Lines in Total","In "+str(len(detail_lines))+" Views", "", ""])
+ output.print_table(table_data,columns=["Number", 'Name', 'Id', 'Creator'], last_line_style='font-weight:bold;font-size:1.2em;')
+ except Exception as e:
+ output.print_md("**Error: {}**".format(e))
-for line_count, view_id_int \
- in sorted(zip(detail_lines.values(), detail_lines.keys()),
- reverse=True):
- view_id = DB.ElementId(view_id_int)
- view_creator = \
- DB.WorksharingUtils.GetWorksharingTooltipInfo(revit.doc,
- view_id).Creator
+if __name__ == '__main__':
+ output.print_md("\n\n# LINES PER VIEW IN CURRENT DOCUMENT\n___\n\n")
+ line_count()
+ if __shiftclick__:
+ output.print_md("\n\n# LINES PER VIEW IN LINKS\n___\n\n")
+ revit_links = DB.FilteredElementCollector(doc).OfClass(DB.RevitLinkInstance).ToElements()
+ for link in revit_links:
+ line_count(link)
- try:
- view_name = revit.query.get_name(revit.doc.GetElement(view_id))
- except Exception:
- view_name = ""
-
- output.print_md("\n**{0} Lines in view:** {3}\n"
- "View id:{1}\n"
- "View creator: {2}\n".format(line_count,
- output.linkify(view_id),
- view_creator,
- view_name))
-
-print("\n"
- + str(sum(detail_lines.values()))
- + " Lines in "
- + str(len(detail_lines))
- + " Views.")
+output.print_md('By: [{}]({}) and some improvements from [{}]({})\n\n'.format(__author__, __contact__, __author2__, __contact2__))
diff --git a/extensions/pyRevitTools.extension/pyRevit.tab/Analysis.panel/Tools.stack/Inspect.pulldown/LinesPerViewCounter.pushbutton/bundle.yaml b/extensions/pyRevitTools.extension/pyRevit.tab/Analysis.panel/Tools.stack/Inspect.pulldown/LinesPerViewCounter.pushbutton/bundle.yaml
index 5c6ea82e6..61a2b3737 100644
--- a/extensions/pyRevitTools.extension/pyRevit.tab/Analysis.panel/Tools.stack/Inspect.pulldown/LinesPerViewCounter.pushbutton/bundle.yaml
+++ b/extensions/pyRevitTools.extension/pyRevit.tab/Analysis.panel/Tools.stack/Inspect.pulldown/LinesPerViewCounter.pushbutton/bundle.yaml
@@ -3,8 +3,7 @@ title:
fr_fr: Compteur de lignes par vue
en_us: Lines Per View Counter
tooltip:
- ru: Отображает отсортированный список количетсва линий детализации для всех линий детализации.
- fr_fr: Lister classée du nombre de lignes de détail par vue contenant des lignes de détail
- en_us: List sorted Detail Line Counts for all views with Detail Lines
-author: 'Frederic Beaupere'
-contact: 'https://github.com/frederic-beaupere'
\ No newline at end of file
+ ru: Перечислите отсортированное количество строк детализации для всех видов со строками детализации. Нажмите SHIFT + щелчок, чтобы получить счетчик ссылок Revit.
+ fr_fr: Lister classée du nombre de lignes de détail par vue contenant des lignes de détail. Utilisez SHIFT+Click pour obtenir le décompte pour les fichiers liés.
+ en_us: List sorted Detail Line Counts for all views with Detail Lines. Press SHIFT+Click to get the count for Revit Links
+author: 'Original by Frederic Beaupere; Improvements by Jean-Marc Couffin'
diff --git a/extensions/pyRevitTools.extension/pyRevit.tab/Analysis.panel/Tools.stack/Inspect.pulldown/ListFamilySizeCreator.pushbutton/ListFamilySizeCreator_script.py b/extensions/pyRevitTools.extension/pyRevit.tab/Analysis.panel/Tools.stack/Inspect.pulldown/ListFamilySizeCreator.pushbutton/ListFamilySizeCreator_script.py
index ec68483b3..53c801415 100644
--- a/extensions/pyRevitTools.extension/pyRevit.tab/Analysis.panel/Tools.stack/Inspect.pulldown/ListFamilySizeCreator.pushbutton/ListFamilySizeCreator_script.py
+++ b/extensions/pyRevitTools.extension/pyRevit.tab/Analysis.panel/Tools.stack/Inspect.pulldown/ListFamilySizeCreator.pushbutton/ListFamilySizeCreator_script.py
@@ -8,7 +8,7 @@
__title__ = 'Lists Family Sizes'
__authors__ = ['Frederic Beaupere', 'Alex Melnikov']
__contact__ = 'https://github.com/frederic-beaupere'
-__credits__ = 'http://eirannejad.github.io/pyRevit/credits/'
+__credits__ = 'http://pyrevitlabs.github.io/pyRevit/credits/'
FIELDS = ["Size", "Name", "Category", "Creator"]
# temporary path for saving families
diff --git a/extensions/pyRevitTools.extension/pyRevit.tab/Modify.panel/edit1.stack/Patterns.splitpushbutton/Make Pattern.pushbutton/patmaker.py b/extensions/pyRevitTools.extension/pyRevit.tab/Modify.panel/edit1.stack/Patterns.splitpushbutton/Make Pattern.pushbutton/patmaker.py
index 4bd55ae2f..5bdcbc90a 100644
--- a/extensions/pyRevitTools.extension/pyRevit.tab/Modify.panel/edit1.stack/Patterns.splitpushbutton/Make Pattern.pushbutton/patmaker.py
+++ b/extensions/pyRevitTools.extension/pyRevit.tab/Modify.panel/edit1.stack/Patterns.splitpushbutton/Make Pattern.pushbutton/patmaker.py
@@ -36,7 +36,7 @@
PAT_SEPARATOR = ', '
PAT_FILE_TEMPLATE = \
"; Written by \"Make Pattern\" tool for pyRevit\n" \
- "; http://eirannejad.github.io/pyRevit/\n" \
+ "; http://pyrevitlabs.github.io/pyRevit/\n" \
";-Date : {date}\n" \
";-Time : {time}\n" \
";-pyRevit Version : {version}\n" \
diff --git a/extensions/pyRevitTools.extension/pyRevit.tab/Project.panel/ptools.stack/Family.pulldown/Family QuickCheck.pushbutton/FamilyQuickcheck_script.py b/extensions/pyRevitTools.extension/pyRevit.tab/Project.panel/ptools.stack/Family.pulldown/Family QuickCheck.pushbutton/FamilyQuickcheck_script.py
index 0c150446a..7667aaaf4 100644
--- a/extensions/pyRevitTools.extension/pyRevit.tab/Project.panel/ptools.stack/Family.pulldown/Family QuickCheck.pushbutton/FamilyQuickcheck_script.py
+++ b/extensions/pyRevitTools.extension/pyRevit.tab/Project.panel/ptools.stack/Family.pulldown/Family QuickCheck.pushbutton/FamilyQuickcheck_script.py
@@ -4,7 +4,7 @@
Copyright (c) 2017 Frederic Beaupere
github.com/frederic-beaupere
-PR731 https://github.com/eirannejad/pyRevit/pull/731
+PR731 https://github.com/pyrevitlabs/pyRevit/pull/731
"""
#pylint: disable=invalid-name,import-error,superfluous-parens,broad-except
from pyrevit import revit
diff --git a/extensions/pyRevitTools.extension/pyRevit.tab/Project.panel/ptools.stack/Family.pulldown/Family QuickCheck.pushbutton/bundle.yaml b/extensions/pyRevitTools.extension/pyRevit.tab/Project.panel/ptools.stack/Family.pulldown/Family QuickCheck.pushbutton/bundle.yaml
index dd91ce11c..6ae13438b 100644
--- a/extensions/pyRevitTools.extension/pyRevit.tab/Project.panel/ptools.stack/Family.pulldown/Family QuickCheck.pushbutton/bundle.yaml
+++ b/extensions/pyRevitTools.extension/pyRevit.tab/Project.panel/ptools.stack/Family.pulldown/Family QuickCheck.pushbutton/bundle.yaml
@@ -10,7 +10,7 @@ tooltip:
github.com/frederic-beaupere
- PR731 https://github.com/eirannejad/pyRevit/pull/731
+ PR731 https://github.com/pyrevitlabs/pyRevit/pull/731
fr_fr: >-
Vérification non exhaustive pour détecter les familles Revit corrompues.
@@ -18,7 +18,7 @@ tooltip:
github.com/frederic-beaupere
- PR731 https://github.com/eirannejad/pyRevit/pull/731
+ PR731 https://github.com/pyrevitlabs/pyRevit/pull/731
en_us: >-
Non-exhaustive check to detect corrupt Revit families.
@@ -26,7 +26,7 @@ tooltip:
github.com/frederic-beaupere
- PR731 https://github.com/eirannejad/pyRevit/pull/731
+ PR731 https://github.com/pyrevitlabs/pyRevit/pull/731
author:
- Frederic Beaupere
- '{{author}}'
diff --git a/extensions/pyRevitTools.extension/pyRevit.tab/Toggles.panel/bundle.yaml b/extensions/pyRevitTools.extension/pyRevit.tab/Toggles.panel/bundle.yaml
index cd51c2423..620d4f087 100644
--- a/extensions/pyRevitTools.extension/pyRevit.tab/Toggles.panel/bundle.yaml
+++ b/extensions/pyRevitTools.extension/pyRevit.tab/Toggles.panel/bundle.yaml
@@ -1,4 +1,4 @@
layout:
- toggles1
- toggles2
- - sync
\ No newline at end of file
+ - toggles3
\ No newline at end of file
diff --git a/extensions/pyRevitTools.extension/pyRevit.tab/Toggles.panel/toggles3.stack/ViewRange.pushbutton/MainWindow.xaml b/extensions/pyRevitTools.extension/pyRevit.tab/Toggles.panel/toggles3.stack/ViewRange.pushbutton/MainWindow.xaml
new file mode 100644
index 000000000..8d80cef29
--- /dev/null
+++ b/extensions/pyRevitTools.extension/pyRevit.tab/Toggles.panel/toggles3.stack/ViewRange.pushbutton/MainWindow.xaml
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/extensions/pyRevitTools.extension/pyRevit.tab/Toggles.panel/toggles3.stack/ViewRange.pushbutton/bundle.yaml b/extensions/pyRevitTools.extension/pyRevit.tab/Toggles.panel/toggles3.stack/ViewRange.pushbutton/bundle.yaml
new file mode 100644
index 000000000..a91bc00b0
--- /dev/null
+++ b/extensions/pyRevitTools.extension/pyRevit.tab/Toggles.panel/toggles3.stack/ViewRange.pushbutton/bundle.yaml
@@ -0,0 +1,11 @@
+title:
+ fr_fr: Illustrer Profondeur de Vue
+ en_us: Show View Range
+tooltip:
+ fr_fr: Outil pour illustrer la profondeur de vue des vues en plan dans une vue 3D à l'aide de plans colorés. Ouvrir une vue 3D et sélectionner les vues en plan à illustrer dans le navigateur de projet.
+ en_us: Tool to illustrate the view range of plan views in a 3D view using colored planes. Open a 3D view and select the plan views to illustrate in the project browser.
+author: Tamás Déri
+engine:
+ clean: true
+ full_frame: false
+ persistent: true
\ No newline at end of file
diff --git a/extensions/pyRevitTools.extension/pyRevit.tab/Toggles.panel/toggles3.stack/ViewRange.pushbutton/icon.dark.png b/extensions/pyRevitTools.extension/pyRevit.tab/Toggles.panel/toggles3.stack/ViewRange.pushbutton/icon.dark.png
new file mode 100644
index 000000000..59b4d1431
Binary files /dev/null and b/extensions/pyRevitTools.extension/pyRevit.tab/Toggles.panel/toggles3.stack/ViewRange.pushbutton/icon.dark.png differ
diff --git a/extensions/pyRevitTools.extension/pyRevit.tab/Toggles.panel/toggles3.stack/ViewRange.pushbutton/icon.png b/extensions/pyRevitTools.extension/pyRevit.tab/Toggles.panel/toggles3.stack/ViewRange.pushbutton/icon.png
new file mode 100644
index 000000000..0e1925fcb
Binary files /dev/null and b/extensions/pyRevitTools.extension/pyRevit.tab/Toggles.panel/toggles3.stack/ViewRange.pushbutton/icon.png differ
diff --git a/extensions/pyRevitTools.extension/pyRevit.tab/Toggles.panel/toggles3.stack/ViewRange.pushbutton/script.py b/extensions/pyRevitTools.extension/pyRevit.tab/Toggles.panel/toggles3.stack/ViewRange.pushbutton/script.py
new file mode 100644
index 000000000..b5926ab60
--- /dev/null
+++ b/extensions/pyRevitTools.extension/pyRevit.tab/Toggles.panel/toggles3.stack/ViewRange.pushbutton/script.py
@@ -0,0 +1,364 @@
+# -*- coding: UTF-8 -*-
+
+from __future__ import print_function
+from pyrevit import script, forms, revit, HOST_APP
+from pyrevit.revit import dc3dserver as d3d
+import traceback
+
+from Autodesk.Revit import DB, UI
+from Autodesk.Revit.Exceptions import InvalidOperationException
+from Autodesk.Revit.UI.Events import ViewActivatedEventArgs, SelectionChangedEventArgs
+from Autodesk.Revit.DB.Events import DocumentChangedEventArgs
+
+from System import EventHandler, Convert
+from System.Windows.Media import Color, SolidColorBrush
+
+from System.Collections.Generic import List
+
+doc = revit.doc
+uidoc = revit.uidoc
+
+logger = script.get_logger()
+output = script.get_output()
+
+PLANES = {
+ DB.PlanViewPlane.TopClipPlane: [0, 255, 0],
+ DB.PlanViewPlane.CutPlane: [255, 0, 0],
+ DB.PlanViewPlane.BottomClipPlane: [0, 0, 255],
+ DB.PlanViewPlane.ViewDepthPlane: [255, 127, 0]
+}
+
+class SimpleEventHandler(UI.IExternalEventHandler):
+ """
+ Simple IExternalEventHandler sample
+ """
+
+ def __init__(self, do_this):
+ self.do_this = do_this
+
+ def Execute(self, uiapp):
+ try:
+ self.do_this(uiapp)
+ except InvalidOperationException:
+ print('InvalidOperationException catched')
+
+ def GetName(self):
+ return "SimpleEventHandler"
+
+
+class Context(object):
+ def __new__(cls, *args, **kwargs):
+ if not hasattr(cls, "instance"):
+ cls.instance = super(Context, cls).__new__(cls, *args, **kwargs)
+ return cls.instance
+
+ def __init__(self, view_model):
+ self._active_view = None
+ self._source_plan_view = None
+ self.length_unit = (doc.GetUnits()
+ .GetFormatOptions(DB.SpecTypeId.Length)
+ .GetUnitTypeId())
+
+ self.height_data = {}
+ self.view_model = view_model
+ view_model.unit_label = DB.LabelUtils.GetLabelForUnit(self.length_unit)
+
+ @property
+ def active_view(self):
+ return self._active_view
+ @active_view.setter
+ def active_view(self, value):
+ self._active_view = value
+ self.context_changed()
+
+ @property
+ def source_plan_view(self):
+ return self._source_plan_view
+ @source_plan_view.setter
+ def source_plan_view(self, value):
+ self._source_plan_view = value
+ self.context_changed()
+
+ def context_changed(self):
+ server.uidoc = UI.UIDocument(self.active_view.Document)
+ if not self.is_valid():
+ server.meshes = None
+ refresh_event.Raise()
+
+ self.view_model.topplane_elevation = "-"
+ self.view_model.cutplane_elevation = "-"
+ self.view_model.bottomplane_elevation = "-"
+ self.view_model.viewdepth_elevation = "-"
+ return
+ try:
+ def corners_from_bb(bbox):
+ transform = bbox.Transform
+
+ corners = [
+ bbox.Min,
+ bbox.Min + DB.XYZ.BasisX * (bbox.Max - bbox.Min).X,
+ bbox.Max,
+ bbox.Min + DB.XYZ.BasisY * (bbox.Max - bbox.Min).Y
+ ]
+ return [transform.OfPoint(c) for c in corners]
+
+ if self.active_view.get_Parameter(
+ DB.BuiltInParameter.VIEWER_MODEL_CLIP_BOX_ACTIVE
+ ).AsInteger() == 1:
+ bbox = self.active_view.GetSectionBox()
+
+ bb_corners = corners_from_bb(bbox)
+ else:
+ bb_corners = None
+
+ view_range = self.source_plan_view.GetViewRange()
+
+ edges = []
+ triangles = []
+ for plane in PLANES:
+
+ plane_level = self.source_plan_view.Document.GetElement(
+ view_range.GetLevelId(plane)
+ )
+
+ if bb_corners:
+ corners = bb_corners
+ else:
+ level_bbox = plane_level.get_BoundingBox(self.active_view)
+ corners = corners_from_bb(level_bbox)
+
+ plane_elevation = (
+ plane_level.Elevation
+ + view_range.GetOffset(plane)
+ )
+
+ self.height_data[plane] = round(
+ DB.UnitUtils.ConvertFromInternalUnits(
+ plane_elevation,
+ self.length_unit
+ ),
+ 2
+ )
+
+ cut_plane_vertices = [
+ DB.XYZ(c.X, c.Y, plane_elevation) for c in corners
+ ]
+
+ color = DB.ColorWithTransparency(
+ PLANES[plane][0],
+ PLANES[plane][1],
+ PLANES[plane][2],
+ 180
+ )
+
+ edges.extend([
+ revit.dc3dserver.Edge(
+ cut_plane_vertices[i-1],
+ cut_plane_vertices[i],
+ color
+ ) for i in range(len(cut_plane_vertices))
+ ])
+ triangles.extend([
+ revit.dc3dserver.Triangle(
+ cut_plane_vertices[0],
+ cut_plane_vertices[1],
+ cut_plane_vertices[2],
+ revit.dc3dserver.Mesh.calculate_triangle_normal(
+ cut_plane_vertices[0],
+ cut_plane_vertices[1],
+ cut_plane_vertices[2],
+ ),
+ color
+ ),
+ revit.dc3dserver.Triangle(
+ cut_plane_vertices[2],
+ cut_plane_vertices[3],
+ cut_plane_vertices[0],
+ revit.dc3dserver.Mesh.calculate_triangle_normal(
+ cut_plane_vertices[2],
+ cut_plane_vertices[3],
+ cut_plane_vertices[0],
+ ),
+ color
+ )
+ ])
+
+ mesh = revit.dc3dserver.Mesh(
+ edges,
+ triangles
+ )
+
+ server.meshes = [mesh]
+ refresh_event.Raise()
+
+ self.view_model.topplane_elevation = str(self.height_data[
+ DB.PlanViewPlane.TopClipPlane])
+ self.view_model.cutplane_elevation = str(self.height_data[
+ DB.PlanViewPlane.CutPlane])
+ self.view_model.bottomplane_elevation = str(self.height_data[
+ DB.PlanViewPlane.BottomClipPlane])
+ self.view_model.viewdepth_elevation = str(self.height_data[
+ DB.PlanViewPlane.ViewDepthPlane])
+ except:
+ print(traceback.format_exc())
+
+
+
+ def is_valid(self):
+ if not isinstance(context.source_plan_view, DB.ViewPlan):
+ self.view_model.message = \
+ "Please select a Plan View in the Project Browser!"
+ return False
+ elif not isinstance(context.active_view, DB.View3D):
+ self.view_model.message = "Please activate a 3D View!"
+ return False
+ else:
+ self.view_model.message = "Showing View Range of\n[{}]".format(
+ self.source_plan_view.Name)
+ return True
+
+
+class MainViewModel(forms.Reactive):
+
+ def __init__(self):
+ self._message = None
+ self.topplane_brush = SolidColorBrush(Color.FromRgb(
+ *[Convert.ToByte(i) for i in PLANES[DB.PlanViewPlane.TopClipPlane]]
+ ))
+ self.cutplane_brush = SolidColorBrush(Color.FromRgb(
+ *[Convert.ToByte(i) for i in PLANES[DB.PlanViewPlane.CutPlane]]
+ ))
+ self.bottomplane_brush = SolidColorBrush(Color.FromRgb(
+ *[Convert.ToByte(i) for i in PLANES[DB.PlanViewPlane.BottomClipPlane]]
+ ))
+ self.viewdepth_brush = SolidColorBrush(Color.FromRgb(
+ *[Convert.ToByte(i) for i in PLANES[DB.PlanViewPlane.ViewDepthPlane]]
+ ))
+ self._topplane_elevation = "-"
+ self._cutplane_elevation = "-"
+ self._bottomplane_elevation = "-"
+ self._viewdepth_elevation = "-"
+
+ self.unit_label = ""
+
+ @forms.reactive
+ def message(self):
+ return self._message
+
+ @message.setter
+ def message(self, value):
+ self._message = value
+
+ @forms.reactive
+ def topplane_elevation(self):
+ return self._topplane_elevation
+
+ @topplane_elevation.setter
+ def topplane_elevation(self, value):
+ self._topplane_elevation = value
+
+ @forms.reactive
+ def cutplane_elevation(self):
+ return self._cutplane_elevation
+
+ @cutplane_elevation.setter
+ def cutplane_elevation(self, value):
+ self._cutplane_elevation = value
+
+ @forms.reactive
+ def bottomplane_elevation(self):
+ return self._bottomplane_elevation
+
+ @bottomplane_elevation.setter
+ def bottomplane_elevation(self, value):
+ self._bottomplane_elevation = value
+
+ @forms.reactive
+ def viewdepth_elevation(self):
+ return self._viewdepth_elevation
+
+ @viewdepth_elevation.setter
+ def viewdepth_elevation(self, value):
+ self._viewdepth_elevation = value
+
+
+class MainWindow(forms.WPFWindow):
+ def __init__(self):
+ forms.WPFWindow.__init__(self, "MainWindow.xaml")
+ self.Closed += self.window_closed
+ subscribe()
+ server.add_server()
+
+
+ def window_closed(self, sender, args):
+ server.remove_server()
+ refresh_event.Raise()
+ unsubscribe_event.Raise()
+
+def subscribe():
+ try:
+ ui_app = UI.UIApplication(HOST_APP.app)
+ ui_app.ViewActivated += EventHandler[ViewActivatedEventArgs](view_activated)
+ ui_app.SelectionChanged += EventHandler[SelectionChangedEventArgs](selection_changed)
+ ui_app.Application.DocumentChanged += EventHandler[DocumentChangedEventArgs](doc_changed)
+ except:
+ print(traceback.format_exc())
+
+
+def unsubscribe(uiapp):
+ try:
+ uiapp.ViewActivated -= EventHandler[ViewActivatedEventArgs](view_activated)
+ uiapp.SelectionChanged -= EventHandler[SelectionChangedEventArgs](selection_changed)
+ uiapp.Application.DocumentChanged -= EventHandler[DocumentChangedEventArgs](doc_changed)
+ except:
+ print(traceback.format_exc())
+
+
+def refresh_active_view(uiapp):
+ uidoc = uiapp.ActiveUIDocument
+ uidoc.ActiveView = context.active_view
+ uidoc.RefreshActiveView()
+ if context.source_plan_view:
+ uidoc.Selection.SetElementIds(List[DB.ElementId]([context.source_plan_view.Id]))
+
+
+def view_activated(sender, args):
+ try:
+ context.active_view = args.CurrentActiveView
+ except:
+ print(traceback.format_exc())
+
+
+def selection_changed(sender, args):
+ try:
+ doc = args.GetDocument()
+ sel_ids = list(args.GetSelectedElements())
+ if len(sel_ids) == 1:
+ sel = doc.GetElement(sel_ids[0])
+ if isinstance(sel, DB.ViewPlan):
+ context.source_plan_view = sel
+ return
+ context.source_plan_view = None
+ except:
+ print(traceback.format_exc())
+
+def doc_changed(sender, args):
+ try:
+ context.context_changed()
+ except:
+ print(traceback.format_exc())
+
+
+
+server = revit.dc3dserver.Server(register=False)
+
+unsubscribe_event = UI.ExternalEvent.Create(SimpleEventHandler(unsubscribe))
+refresh_event = UI.ExternalEvent.Create(SimpleEventHandler(refresh_active_view))
+
+vm = MainViewModel()
+context = Context(vm)
+context.active_view = uidoc.ActiveGraphicalView
+
+main_window = MainWindow()
+main_window.DataContext = vm
+main_window.show()
diff --git a/extensions/pyRevitTools.extension/pyRevit.tab/Toggles.panel/toggles3.stack/bundle.yaml b/extensions/pyRevitTools.extension/pyRevit.tab/Toggles.panel/toggles3.stack/bundle.yaml
new file mode 100644
index 000000000..3ae619831
--- /dev/null
+++ b/extensions/pyRevitTools.extension/pyRevit.tab/Toggles.panel/toggles3.stack/bundle.yaml
@@ -0,0 +1,3 @@
+layout:
+ - sync
+ - ViewRange
\ No newline at end of file
diff --git a/extensions/pyRevitTools.extension/pyRevit.tab/Toggles.panel/sync.pushbutton/bundle.yaml b/extensions/pyRevitTools.extension/pyRevit.tab/Toggles.panel/toggles3.stack/sync.pushbutton/bundle.yaml
similarity index 100%
rename from extensions/pyRevitTools.extension/pyRevit.tab/Toggles.panel/sync.pushbutton/bundle.yaml
rename to extensions/pyRevitTools.extension/pyRevit.tab/Toggles.panel/toggles3.stack/sync.pushbutton/bundle.yaml
diff --git a/extensions/pyRevitTools.extension/pyRevit.tab/Toggles.panel/sync.pushbutton/config.py b/extensions/pyRevitTools.extension/pyRevit.tab/Toggles.panel/toggles3.stack/sync.pushbutton/config.py
similarity index 100%
rename from extensions/pyRevitTools.extension/pyRevit.tab/Toggles.panel/sync.pushbutton/config.py
rename to extensions/pyRevitTools.extension/pyRevit.tab/Toggles.panel/toggles3.stack/sync.pushbutton/config.py
diff --git a/extensions/pyRevitTools.extension/pyRevit.tab/Toggles.panel/sync.pushbutton/icon.dark.png b/extensions/pyRevitTools.extension/pyRevit.tab/Toggles.panel/toggles3.stack/sync.pushbutton/icon.dark.png
similarity index 100%
rename from extensions/pyRevitTools.extension/pyRevit.tab/Toggles.panel/sync.pushbutton/icon.dark.png
rename to extensions/pyRevitTools.extension/pyRevit.tab/Toggles.panel/toggles3.stack/sync.pushbutton/icon.dark.png
diff --git a/extensions/pyRevitTools.extension/pyRevit.tab/Toggles.panel/sync.pushbutton/icon.png b/extensions/pyRevitTools.extension/pyRevit.tab/Toggles.panel/toggles3.stack/sync.pushbutton/icon.png
similarity index 100%
rename from extensions/pyRevitTools.extension/pyRevit.tab/Toggles.panel/sync.pushbutton/icon.png
rename to extensions/pyRevitTools.extension/pyRevit.tab/Toggles.panel/toggles3.stack/sync.pushbutton/icon.png
diff --git a/extensions/pyRevitTools.extension/pyRevit.tab/Toggles.panel/sync.pushbutton/script.py b/extensions/pyRevitTools.extension/pyRevit.tab/Toggles.panel/toggles3.stack/sync.pushbutton/script.py
similarity index 100%
rename from extensions/pyRevitTools.extension/pyRevit.tab/Toggles.panel/sync.pushbutton/script.py
rename to extensions/pyRevitTools.extension/pyRevit.tab/Toggles.panel/toggles3.stack/sync.pushbutton/script.py
diff --git a/extensions/pyRevitTutor.extension/extension.json b/extensions/pyRevitTutor.extension/extension.json
index dfea0c0e0..fcbe7223c 100644
--- a/extensions/pyRevitTutor.extension/extension.json
+++ b/extensions/pyRevitTutor.extension/extension.json
@@ -7,8 +7,8 @@
"description": "Python for Revit Tutorials form pyRevit Youtube Channel",
"author": "Ehsan Iran-Nejad",
"author_profile": "https://keybase.io/ein",
- "url": "https://github.com/eirannejad/pyRevit.git",
- "website": "http://eirannejad.github.io/pyRevit/",
+ "url": "https://github.com/pyrevitlabs/pyRevit.git",
+ "website": "http://pyrevitlabs.github.io/pyRevit/",
"image": "",
"dependencies": []
}
\ No newline at end of file
diff --git a/pyrevitlib/pyrevit/coreutils/__init__.py b/pyrevitlib/pyrevit/coreutils/__init__.py
index d4634c0d9..c4014419a 100644
--- a/pyrevitlib/pyrevit/coreutils/__init__.py
+++ b/pyrevitlib/pyrevit/coreutils/__init__.py
@@ -31,7 +31,7 @@
from pyrevit import framework
from pyrevit import api
-# RE: https://github.com/eirannejad/pyRevit/issues/413
+# RE: https://github.com/pyrevitlabs/pyRevit/issues/413
# import uuid
from System import Guid
@@ -1282,7 +1282,7 @@ def format_hex_rgb(rgb_value):
def new_uuid():
"""Create a new UUID (using dotnet Guid.NewGuid)."""
- # RE: https://github.com/eirannejad/pyRevit/issues/413
+ # RE: https://github.com/pyrevitlabs/pyRevit/issues/413
# return uuid.uuid1()
return str(Guid.NewGuid())
diff --git a/pyrevitlib/pyrevit/coreutils/appdata.py b/pyrevitlib/pyrevit/coreutils/appdata.py
index 3491e85e4..7f647125a 100644
--- a/pyrevitlib/pyrevit/coreutils/appdata.py
+++ b/pyrevitlib/pyrevit/coreutils/appdata.py
@@ -95,7 +95,7 @@ def _match_file(file_name):
if match:
return match.groupdict()
- # e.g. pyRevit_2018_eirannejad_
+ # e.g. pyRevit_2018_pyrevitlabs_
match = re.match(pattern=pyrevit.PYREVIT_FILE_PREFIX_USER_REGEX,
string=file_name)
if match:
@@ -107,7 +107,7 @@ def _match_file(file_name):
if match:
return match.groupdict()
- # e.g. pyRevit_eirannejad_
+ # e.g. pyRevit_pyrevitlabs_
match = re.match(pattern=pyrevit.PYREVIT_FILE_PREFIX_UNIVERSAL_USER_REGEX,
string=file_name)
if match:
@@ -126,7 +126,7 @@ def get_universal_data_file(file_id, file_ext, name_only=False):
"""Get path to file that is shared between all host versions.
These data files are not cleaned up at Revit restart.
- e.g pyrevit_eirannejad_file_id.file_ext
+ e.g pyrevit_pyrevitlabs_file_id.file_ext
Args:
file_id (str): Unique identifier for the file
@@ -143,7 +143,7 @@ def get_universal_data_file(file_id, file_ext, name_only=False):
def get_data_file(file_id, file_ext, name_only=False):
"""Get path to file that will not be cleaned up at Revit load.
- e.g pyrevit_2016_eirannejad_file_id.file_ext
+ e.g pyrevit_2016_pyrevitlabs_file_id.file_ext
Args:
file_id (str): Unique identifier for the file
@@ -160,7 +160,7 @@ def get_instance_data_file(file_id, file_ext=TEMP_FILE_EXT, name_only=False):
"""Get path to file that should be used by current instance only.
These data files will be cleaned up at Revit restart.
- e.g pyrevit_2016_eirannejad_2353_file_id.file_ext
+ e.g pyrevit_2016_pyrevitlabs_2353_file_id.file_ext
Args:
file_id (str): Unique identifier for the file
diff --git a/pyrevitlib/pyrevit/forms/__init__.py b/pyrevitlib/pyrevit/forms/__init__.py
index 6d99c52c0..82166f216 100644
--- a/pyrevitlib/pyrevit/forms/__init__.py
+++ b/pyrevitlib/pyrevit/forms/__init__.py
@@ -3347,7 +3347,7 @@ def toast(message, title='pyRevit', appid='pyRevit',
script.toast("Hello World!",
title="My Script",
appid="MyAPP",
- click="https://eirannejad.github.io/pyRevit/",
+ click="https://pyrevitlabs.github.io/pyRevit/",
actions={
"Open Google":"https://google.com",
"Open Toast64":"https://github.com/go-toast/toast"
diff --git a/pyrevitlib/pyrevit/interop/adc.py b/pyrevitlib/pyrevit/interop/adc.py
index 83b24beb6..78d4c5ae4 100644
--- a/pyrevitlib/pyrevit/interop/adc.py
+++ b/pyrevitlib/pyrevit/interop/adc.py
@@ -175,9 +175,9 @@ def is_synced(path):
drive = _get_item_drive(adc, item)
# ADC uses translated property names so
# check status property by its type "LocalState"
- # see https://github.com/eirannejad/pyRevit/issues/1152
+ # see https://github.com/pyrevitlabs/pyRevit/issues/1152
# ADC version 15 changed property_id_value
- # see https://github.com/eirannejad/pyRevit/issues/1371
+ # see https://github.com/pyrevitlabs/pyRevit/issues/1371
prop_val = _get_item_property_id_value(adc, drive, item, 'DesktopConnector.Core.LocalState')
if prop_val is None:
# version older than ADC 15
diff --git a/pyrevitlib/pyrevit/runtime/DynamoBIMEngine.cs b/pyrevitlib/pyrevit/runtime/DynamoBIMEngine.cs
index 2154463cc..d2aa45aaa 100644
--- a/pyrevitlib/pyrevit/runtime/DynamoBIMEngine.cs
+++ b/pyrevitlib/pyrevit/runtime/DynamoBIMEngine.cs
@@ -53,7 +53,7 @@ public override int Execute(ref ScriptRuntime runtime) {
// The journal file can specify if the existing UIless RevitDynamoModel
// needs to be shutdown before performing any action.
- // per comments on https://github.com/eirannejad/pyRevit/issues/570
+ // per comments on https://github.com/pyrevitlabs/pyRevit/issues/570
// Setting this to True slows down Dynamo by a factor of 3
{ "dynModelShutDown", ExecEngineConfigs.clean ? "True" : "False" },
};
diff --git a/pyrevitlib/pyrevit/version b/pyrevitlib/pyrevit/version
index 11ba75ee4..18333039e 100644
--- a/pyrevitlib/pyrevit/version
+++ b/pyrevitlib/pyrevit/version
@@ -1 +1 @@
-4.8.15.24089+0912
\ No newline at end of file
+4.8.16
\ No newline at end of file
diff --git a/pyrevitlib/rpw/ui/forms/os_dialog.py b/pyrevitlib/rpw/ui/forms/os_dialog.py
index 41b39af55..28c931b14 100644
--- a/pyrevitlib/rpw/ui/forms/os_dialog.py
+++ b/pyrevitlib/rpw/ui/forms/os_dialog.py
@@ -1,6 +1,6 @@
""" Standard IO Dialogs
-Original code by github.com/eirannejad/pyRevit
+Original code by github.com/pyrevitlabs/pyRevit
""" #
diff --git a/pyrevitlib/rpw/ui/forms/resources.py b/pyrevitlib/rpw/ui/forms/resources.py
index badbda01f..9c574b97a 100644
--- a/pyrevitlib/rpw/ui/forms/resources.py
+++ b/pyrevitlib/rpw/ui/forms/resources.py
@@ -7,9 +7,11 @@
from abc import ABCMeta
-from rpw import revit
-from rpw.utils.dotnet import clr
-from rpw.utils.logger import logger
+import clr
+
+import os.path as op
+from pyrevit.compat import PY3, PY2
+import pyrevit.engine as eng
# WPF/Form Imports
clr.AddReference("PresentationFramework") # System.Windows: Controls, ?
@@ -33,16 +35,29 @@
# OS Dialogs
from System.Windows import Forms
-if revit.host == 'Dynamo':
- # IronPython 2.7.3 - Dynamo + RPS w/out pyRevit
- # Conflicts with PyRevit. Must Ensure exact path is specified
- # https://github.com/architecture-building-systems/revitpythonshell/issues/46
- clr.AddReferenceToFileAndPath(r'C:\Program Files (x86)\IronPython 2.7\Platforms\Net40\IronPython.Wpf.dll')
- import wpf
- # on 2.7.7 this raises wpf import error
+
+ASSEMBLY_FILE_TYPE = 'dll'
+ASSEMBLY_FILE_EXT = '.dll'
+
+ipy_assmname = '{prefix}IronPython'.format(prefix=eng.EnginePrefix)
+ipy_dllpath = op.join(eng.EnginePath, ipy_assmname + ASSEMBLY_FILE_EXT)
+if PY3:
+ clr.AddReference(ipy_dllpath)
else:
- # IronPython 2.7.7 - pyRevit
- # clr.AddReference('IronPython') # Works W/Out
- clr.AddReference('IronPython.Wpf') # 2.7.
- from IronPython.Modules import Wpf as wpf
- # on 2.7.7 this works. On 2.7.3 you get a LoadComponent 3 args error
+ clr.AddReferenceToFileAndPath(ipy_dllpath)
+
+import IronPython
+
+# WPF
+wpf = None
+wpf_assmname = '{prefix}IronPython.Wpf'.format(prefix=eng.EnginePrefix)
+wpf_dllpath = op.join(eng.EnginePath, wpf_assmname + ASSEMBLY_FILE_EXT)
+try:
+ clr.AddReference(wpf_assmname)
+ if PY3:
+ wpf = IronPython.Modules.Wpf
+ else:
+ import wpf
+except Exception:
+ clr.AddReferenceToFileAndPath(wpf_dllpath)
+ import wpf
\ No newline at end of file
diff --git a/release/choco/pyrevit-cli.nuspec b/release/choco/pyrevit-cli.nuspec
index 101b1f3cd..be03b008f 100644
--- a/release/choco/pyrevit-cli.nuspec
+++ b/release/choco/pyrevit-cli.nuspec
@@ -3,24 +3,24 @@
pyrevit-cli
4.8.15.24089
- https://github.com/eirannejad/pyRevit/tree/master/release/choco/
+ https://github.com/pyrevitlabs/pyRevit/tree/master/release/choco/
Ehsan Iran-Nejad
pyRevit CLI
Ehsan Iran-Nejad
- https://github.com/eirannejad/pyRevit
- https://cdn.jsdelivr.net/gh/eirannejad/pyRevit@master/release/choco/chocoicon.png
+ https://github.com/pyrevitlabs/pyRevit
+ https://cdn.jsdelivr.net/gh/pyrevitlabs/pyRevit@master/release/choco/chocoicon.png
Copyright © 2014-2024
- https://github.com/eirannejad/pyRevit/blob/master/LICENSE.txt
- https://github.com/eirannejad/pyRevit/tree/master/dev/pyRevitLabs
- https://github.com/eirannejad/pyRevit/blob/master/README.md
- https://github.com/eirannejad/pyRevit/issues
+ https://github.com/pyrevitlabs/pyRevit/blob/master/LICENSE.txt
+ https://github.com/pyrevitlabs/pyRevit/tree/master/dev/pyRevitLabs
+ https://github.com/pyrevitlabs/pyRevit/blob/master/README.md
+ https://github.com/pyrevitlabs/pyRevit/issues
pyrevit-cli revit pyrevit
pyRevit Command Line Tool
pyrevit cli is the command line tool, developed specifically to install
and configure pyRevit in your production/development environment.
Each section below showcases a specific set of functionality of the command line tool.
- https://github.com/eirannejad/pyRevit/releases/tag/v4.8.15.24089%2B0912/
+ https://github.com/pyrevitlabs/pyRevit/releases/tag/v4.8.15.24089%2B0912/
diff --git a/release/choco/tools/chocolateyinstall.ps1 b/release/choco/tools/chocolateyinstall.ps1
index 0afa5e4b9..bf027b4a7 100644
--- a/release/choco/tools/chocolateyinstall.ps1
+++ b/release/choco/tools/chocolateyinstall.ps1
@@ -2,7 +2,7 @@
$ErrorActionPreference = 'Stop';
$toolsDir = "$(Split-Path -parent $MyInvocation.MyCommand.Definition)"
-$url64 = 'https://github.com/eirannejad/pyRevit/releases/download/v4.8.15.24089%2B0912/pyRevit_CLI_4.8.15.24089_admin_signed.exe'
+$url64 = 'https://github.com/pyrevitlabs/pyRevit/releases/download/v4.8.15.24089%2B0912/pyRevit_CLI_4.8.15.24089_admin_signed.exe'
$packageArgs = @{
packageName = $env:ChocolateyPackageName
diff --git a/release/version b/release/version
index 268c2e608..18333039e 100644
--- a/release/version
+++ b/release/version
@@ -1 +1 @@
-4.8.15.24089
\ No newline at end of file
+4.8.16
\ No newline at end of file