diff --git a/deploy/playbooks/ansible.cfg b/deploy/playbooks/ansible.cfg index b7b1f70..31646ae 100644 --- a/deploy/playbooks/ansible.cfg +++ b/deploy/playbooks/ansible.cfg @@ -1,5 +1,6 @@ [defaults] retry_files_enabled = False +stdout_callback=debug [ssh_connection] pipelining=True diff --git a/deploy/playbooks/roles/common/handlers/main.yml b/deploy/playbooks/roles/common/handlers/main.yml index 30a5f0b..7cf0d92 100644 --- a/deploy/playbooks/roles/common/handlers/main.yml +++ b/deploy/playbooks/roles/common/handlers/main.yml @@ -1,7 +1,6 @@ --- - name: reload systemd - become: true become: true command: systemctl daemon-reload diff --git a/deploy/playbooks/roles/common/tasks/main.yml b/deploy/playbooks/roles/common/tasks/main.yml index ce0b226..050cafa 100644 --- a/deploy/playbooks/roles/common/tasks/main.yml +++ b/deploy/playbooks/roles/common/tasks/main.yml @@ -80,14 +80,14 @@ notify: - restart app -- include: postgresql.yml +- import_tasks: postgresql.yml tags: - postgres -- include: systemd.yml +- import_tasks: systemd.yml tags: - systemd -- include: nginx.yml +- import_tasks: nginx.yml tags: - nginx diff --git a/deploy/playbooks/roles/common/tasks/nginx.yml b/deploy/playbooks/roles/common/tasks/nginx.yml index 6014631..547b162 100644 --- a/deploy/playbooks/roles/common/tasks/nginx.yml +++ b/deploy/playbooks/roles/common/tasks/nginx.yml @@ -37,7 +37,7 @@ notify: - restart nginx -- include: ssl.yml +- import_tasks: ssl.yml when: development_server == true - name: check to see if ssl cert needs created @@ -46,7 +46,7 @@ become: true register: ssl_cert -- include: letsencrypt.yml +- import_tasks: letsencrypt.yml when: development_server == false and not ssl_cert.stat.exists - name: link nginx config diff --git a/deploy/playbooks/roles/common/tasks/postgresql.yml b/deploy/playbooks/roles/common/tasks/postgresql.yml index ab2ab3c..b9a9cf9 100644 --- a/deploy/playbooks/roles/common/tasks/postgresql.yml +++ b/deploy/playbooks/roles/common/tasks/postgresql.yml @@ -6,7 +6,7 @@ become: true - name: generate pseudo-random password for the postgres {{ app_name }} user - local_action: shell python -c "exec 'import os; print os.urandom(30).encode(\'base64\')[:${length}]'" | tee {{ playbook_dir }}/tmp/app_user_password + local_action: shell python3 -c "exec('import os,base64; print(base64.b64encode(os.urandom(30))[:${length}].decode())')" | tee {{ playbook_dir }}/tmp/app_user_password register: generated_app_user_password changed_when: false when: "'postgresql_master' in group_names" diff --git a/deploy/playbooks/roles/common/templates/prod_db.py.j2 b/deploy/playbooks/roles/common/templates/prod_db.py.j2 index 755fa5d..d8bd7ba 100644 --- a/deploy/playbooks/roles/common/templates/prod_db.py.j2 +++ b/deploy/playbooks/roles/common/templates/prod_db.py.j2 @@ -9,7 +9,7 @@ sqlalchemy_w = { } sqlalchemy_ro = { - 'url': 'postgresql+psycopg2://{{ app_name }}:{{ postgresql_app_user_password }}@{{ standby_ip }}/{{ app_name }}', + 'url': 'postgresql+psycopg2://{{ app_name }}:{{ postgresql_app_user_password }}@{{ master_ip }}/{{ app_name }}', 'echo': False, 'echo_pool': False, 'pool_recycle': 3600, diff --git a/deploy/playbooks/roles/common/vars/main.yml b/deploy/playbooks/roles/common/vars/main.yml index 30ef92f..9df0223 100644 --- a/deploy/playbooks/roles/common/vars/main.yml +++ b/deploy/playbooks/roles/common/vars/main.yml @@ -1,22 +1,22 @@ --- system_packages: - - python-dev + - python3-dev - git - - python-virtualenv - g++ - gcc - libpq-dev - postgresql - postgresql-common - postgresql-contrib - - python-psycopg2 + - python3-psycopg2 - nginx - vim # needed for the ansible apt_repository module - - python-apt + - python3-apt # - libsemanage-python - - python + - python3 + - python3-virtualenv ssl_requirements: - openssl diff --git a/deploy/playbooks/roles/postgresql/defaults/main.yml b/deploy/playbooks/roles/postgresql/defaults/main.yml index dc3724f..adce281 100644 --- a/deploy/playbooks/roles/postgresql/defaults/main.yml +++ b/deploy/playbooks/roles/postgresql/defaults/main.yml @@ -1,6 +1,6 @@ --- -postgresql_version: 9.5 +postgresql_version: 16 postgresql_superuser: postgres postgresql_cluster_name: main @@ -175,7 +175,6 @@ postgresql_cfg_ssl_key_file: '/etc/ssl/private/ssl-cert-snakeoil.key' #postgresql_cfg_ssl_renegotiation_limit: #postgresql_cfg_standard_conforming_strings: #postgresql_cfg_statement_timeout: -postgresql_cfg_stats_temp_directory: '/var/run/postgresql/{{ postgresql_version }}-{{ postgresql_cluster_name }}.pg_stat_tmp' #postgresql_cfg_superuser_reserved_connections: 3 #postgresql_cfg_synchronize_seqscans: #postgresql_cfg_synchronous_commit: diff --git a/deploy/playbooks/roles/postgresql/tasks/install.yml b/deploy/playbooks/roles/postgresql/tasks/install.yml index a56c664..e8359e1 100644 --- a/deploy/playbooks/roles/postgresql/tasks/install.yml +++ b/deploy/playbooks/roles/postgresql/tasks/install.yml @@ -4,7 +4,7 @@ become: true apt: pkg: "postgresql-{{ postgresql_version }}" - state: installed + state: present update_cache: yes cache_valid_time: 3600 @@ -14,5 +14,5 @@ state: present update_cache: yes cache_valid_time: 3600 - with_items: common_packages + with_items: "{{ common_packages }}" become: true diff --git a/deploy/playbooks/roles/postgresql/tasks/main.yml b/deploy/playbooks/roles/postgresql/tasks/main.yml index a581be3..62b1773 100644 --- a/deploy/playbooks/roles/postgresql/tasks/main.yml +++ b/deploy/playbooks/roles/postgresql/tasks/main.yml @@ -1,6 +1,6 @@ --- -- include: install.yml +- import_tasks: install.yml - name: ensure database service is up service: @@ -8,10 +8,10 @@ state: started become: true -- include: users.yml +- import_tasks: users.yml when: "'postgresql_master' in group_names" -- include: configure.yml +- import_tasks: configure.yml when: "'postgresql_master' in group_names" - name: make {{ app_name }} database @@ -22,6 +22,3 @@ when: "'postgresql_master' in group_names" become_user: postgres become: true - -- include: standby.yml - when: "'postgresql_standby' in group_names" diff --git a/deploy/playbooks/roles/postgresql/tasks/standby.yml b/deploy/playbooks/roles/postgresql/tasks/standby.yml deleted file mode 100644 index 0c60cf0..0000000 --- a/deploy/playbooks/roles/postgresql/tasks/standby.yml +++ /dev/null @@ -1,50 +0,0 @@ -- name: "standby | stop postgresql" - become: true - service: - name: postgresql - state: stopped - -- set_fact: timestamp="{{lookup('pipe','date +%Y-%m-%d-%H-%M-%S')}}" - -- name: "standby | move current data directory out" - become: true - command: "mv {{ postgresql_cfg_data_directory }} {{ postgresql_cfg_data_directory }}_{{ timestamp }}" - ignore_errors: true - when: postgresql_init_replication - -- name: read pseudo-random password for the postgres replication user if it exists - local_action: command cat {{ playbook_dir }}/tmp/replication_user_password - register: generated_replication_user_password - changed_when: false - -- include: configure.yml - -- name: "standby | write .pgpass for postgres user" - become: true - template: - dest: "~{{ postgresql_superuser}}/.pgpass" - src: pgpass.j2 - mode: 0600 - owner: "{{ postgresql_superuser }}" - group: "{{ postgresql_superuser }}" - -- name: "standby | initialize standby postgresql basebackup" - command: "pg_basebackup --xlog-method=stream -h {{ master_ip }} -U {{ postgresql_replication_user }} -D {{ postgresql_cfg_data_directory }} -Pw" - become_user: postgres - become: true - when: postgresql_init_replication - -- name: "standby | configure recovery.conf" - become: true - template: - src: recovery.conf.j2 - dest: "{{ postgresql_cfg_data_directory }}/recovery.conf" - owner: "{{ postgresql_superuser }}" - group: "{{ postgresql_superuser }}" - mode: 0640 - -- name: "standby | start postgresql" - become: true - service: - name: postgresql - state: started diff --git a/deploy/playbooks/roles/postgresql/tasks/users.yml b/deploy/playbooks/roles/postgresql/tasks/users.yml index c6f6804..0ffa852 100644 --- a/deploy/playbooks/roles/postgresql/tasks/users.yml +++ b/deploy/playbooks/roles/postgresql/tasks/users.yml @@ -1,7 +1,7 @@ --- - name: generate pseudo-random password for the postgres replication user - local_action: shell python -c "exec 'import os; print os.urandom(30).encode(\'base64\')[:${length}]'" | tee {{ playbook_dir }}/tmp/replication_user_password + local_action: shell python -c "exec('import os,base64; print(base64.b64encode(os.urandom(30))[:${length}].decode())')" | tee {{ playbook_dir }}/tmp/replication_user_password register: generated_replication_user_password changed_when: false diff --git a/deploy/playbooks/roles/postgresql/templates/postgresql.conf.j2 b/deploy/playbooks/roles/postgresql/templates/postgresql.conf.j2 index 302442b..d7b6fa3 100644 --- a/deploy/playbooks/roles/postgresql/templates/postgresql.conf.j2 +++ b/deploy/playbooks/roles/postgresql/templates/postgresql.conf.j2 @@ -679,6 +679,7 @@ xmlbinary = '{{ postgresql_cfg_xmlbinary }}' xmloption = '{{ postgresql_cfg_xmloption }}' {% endif %} + #------------------------------------------------------------------------------ # CUSTOMIZED OPTIONS #------------------------------------------------------------------------------ diff --git a/deploy/playbooks/roles/postgresql/templates/recovery.conf.j2 b/deploy/playbooks/roles/postgresql/templates/recovery.conf.j2 deleted file mode 100644 index 908009b..0000000 --- a/deploy/playbooks/roles/postgresql/templates/recovery.conf.j2 +++ /dev/null @@ -1,4 +0,0 @@ -# {{ ansible_managed }} -standby_mode = 'on' -primary_conninfo = 'host={{ postgresql_replication_master_ip }} port=5432 user={{ postgresql_replication_user }} password={{ postgresql_replication_user_password }}' -trigger_file = '/tmp/postgresql.trigger.5432' diff --git a/deploy/playbooks/roles/postgresql/vars/main.yml b/deploy/playbooks/roles/postgresql/vars/main.yml index b235ac3..4d82cb0 100644 --- a/deploy/playbooks/roles/postgresql/vars/main.yml +++ b/deploy/playbooks/roles/postgresql/vars/main.yml @@ -4,4 +4,4 @@ common_packages: - libpq-dev - postgresql-common - postgresql-contrib - - python-psycopg2 + - python3-psycopg2 diff --git a/requirements.txt b/requirements.txt index 6e5eae0..4b8818a 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,260 +1,13 @@ -# This file was autogenerated by uv via the following command: -# uv export --format requirements-txt -o ./requirements.txt --e . -certifi==2025.1.31 \ - --hash=sha256:3d5da6925056f6f18f119200434a4780a94263f10d1c21d032a6f6b2baa20651 \ - --hash=sha256:ca78db4565a652026a4db2bcdf68f2fb589ea80d0be70e03929ed730746b84fe -charset-normalizer==3.4.1 \ - --hash=sha256:0924e81d3d5e70f8126529951dac65c1010cdf117bb75eb02dd12339b57749dd \ - --hash=sha256:09b26ae6b1abf0d27570633b2b078a2a20419c99d66fb2823173d73f188ce601 \ - --hash=sha256:09b5e6733cbd160dcc09589227187e242a30a49ca5cefa5a7edd3f9d19ed53fd \ - --hash=sha256:0f55e69f030f7163dffe9fd0752b32f070566451afe180f99dbeeb81f511ad8d \ - --hash=sha256:22e14b5d70560b8dd51ec22863f370d1e595ac3d024cb8ad7d308b4cd95f8313 \ - --hash=sha256:234ac59ea147c59ee4da87a0c0f098e9c8d169f4dc2a159ef720f1a61bbe27cd \ - --hash=sha256:2369eea1ee4a7610a860d88f268eb39b95cb588acd7235e02fd5a5601773d4fa \ - --hash=sha256:237bdbe6159cff53b4f24f397d43c6336c6b0b42affbe857970cefbb620911c8 \ - --hash=sha256:28bf57629c75e810b6ae989f03c0828d64d6b26a5e205535585f96093e405ed1 \ - --hash=sha256:2967f74ad52c3b98de4c3b32e1a44e32975e008a9cd2a8cc8966d6a5218c5cb2 \ - --hash=sha256:2bdfe3ac2e1bbe5b59a1a63721eb3b95fc9b6817ae4a46debbb4e11f6232428d \ - --hash=sha256:2d074908e1aecee37a7635990b2c6d504cd4766c7bc9fc86d63f9c09af3fa11b \ - --hash=sha256:3a3bd0dcd373514dcec91c411ddb9632c0d7d92aed7093b8c3bbb6d69ca74408 \ - --hash=sha256:44251f18cd68a75b56585dd00dae26183e102cd5e0f9f1466e6df5da2ed64ea3 \ - --hash=sha256:44ecbf16649486d4aebafeaa7ec4c9fed8b88101f4dd612dcaf65d5e815f837f \ - --hash=sha256:4532bff1b8421fd0a320463030c7520f56a79c9024a4e88f01c537316019005a \ - --hash=sha256:4d86f7aff21ee58f26dcf5ae81a9addbd914115cdebcbb2217e4f0ed8982e146 \ - --hash=sha256:5777ee0881f9499ed0f71cc82cf873d9a0ca8af166dfa0af8ec4e675b7df48e6 \ - --hash=sha256:5df196eb874dae23dcfb968c83d4f8fdccb333330fe1fc278ac5ceeb101003a9 \ - --hash=sha256:6ff8a4a60c227ad87030d76e99cd1698345d4491638dfa6673027c48b3cd395f \ - --hash=sha256:73d94b58ec7fecbc7366247d3b0b10a21681004153238750bb67bd9012414545 \ - --hash=sha256:7461baadb4dc00fd9e0acbe254e3d7d2112e7f92ced2adc96e54ef6501c5f176 \ - --hash=sha256:804a4d582ba6e5b747c625bf1255e6b1507465494a40a2130978bda7b932c90b \ - --hash=sha256:80ed5e856eb7f30115aaf94e4a08114ccc8813e6ed1b5efa74f9f82e8509858f \ - --hash=sha256:8417cb1f36cc0bc7eaba8ccb0e04d55f0ee52df06df3ad55259b9a323555fc8b \ - --hash=sha256:8436c508b408b82d87dc5f62496973a1805cd46727c34440b0d29d8a2f50a6c9 \ - --hash=sha256:8bfa33f4f2672964266e940dd22a195989ba31669bd84629f05fab3ef4e2d125 \ - --hash=sha256:91b36a978b5ae0ee86c394f5a54d6ef44db1de0815eb43de826d41d21e4af3de \ - --hash=sha256:955f8851919303c92343d2f66165294848d57e9bba6cf6e3625485a70a038d11 \ - --hash=sha256:9b23ca7ef998bc739bf6ffc077c2116917eabcc901f88da1b9856b210ef63f35 \ - --hash=sha256:9f0b8b1c6d84c8034a44893aba5e767bf9c7a211e313a9605d9c617d7083829f \ - --hash=sha256:aabfa34badd18f1da5ec1bc2715cadc8dca465868a4e73a0173466b688f29dda \ - --hash=sha256:b010a7a4fd316c3c484d482922d13044979e78d1861f0e0650423144c616a46a \ - --hash=sha256:b1ac5992a838106edb89654e0aebfc24f5848ae2547d22c2c3f66454daa11971 \ - --hash=sha256:bc2722592d8998c870fa4e290c2eec2c1569b87fe58618e67d38b4665dfa680d \ - --hash=sha256:c0429126cf75e16c4f0ad00ee0eae4242dc652290f940152ca8c75c3a4b6ee8f \ - --hash=sha256:c30197aa96e8eed02200a83fba2657b4c3acd0f0aa4bdc9f6c1af8e8962e0757 \ - --hash=sha256:c4c3e6da02df6fa1410a7680bd3f63d4f710232d3139089536310d027950696a \ - --hash=sha256:c75cb2a3e389853835e84a2d8fb2b81a10645b503eca9bcb98df6b5a43eb8886 \ - --hash=sha256:c96836c97b1238e9c9e3fe90844c947d5afbf4f4c92762679acfe19927d81d77 \ - --hash=sha256:d7f50a1f8c450f3925cb367d011448c39239bb3eb4117c36a6d354794de4ce76 \ - --hash=sha256:d973f03c0cb71c5ed99037b870f2be986c3c05e63622c017ea9816881d2dd247 \ - --hash=sha256:d98b1668f06378c6dbefec3b92299716b931cd4e6061f3c875a71ced1780ab85 \ - --hash=sha256:d9c3cdf5390dcd29aa8056d13e8e99526cda0305acc038b96b30352aff5ff2bb \ - --hash=sha256:dad3e487649f498dd991eeb901125411559b22e8d7ab25d3aeb1af367df5efd7 \ - --hash=sha256:e218488cd232553829be0664c2292d3af2eeeb94b32bea483cf79ac6a694e037 \ - --hash=sha256:e358e64305fe12299a08e08978f51fc21fac060dcfcddd95453eabe5b93ed0e1 \ - --hash=sha256:eab677309cdb30d047996b36d34caeda1dc91149e4fdca0b1a039b3f79d9a807 \ - --hash=sha256:eb8178fe3dba6450a3e024e95ac49ed3400e506fd4e9e5c32d30adda88cbd407 \ - --hash=sha256:eea6ee1db730b3483adf394ea72f808b6e18cf3cb6454b4d86e04fa8c4327a12 \ - --hash=sha256:f08ff5e948271dc7e18a35641d2f11a4cd8dfd5634f55228b691e62b37125eb3 \ - --hash=sha256:fa88b843d6e211393a37219e6a1c1df99d35e8fd90446f1118f4216e307e48cd \ - --hash=sha256:fd4ec41f914fa74ad1b8304bbc634b3de73d2a0889bd32076342a573e0779e00 \ - --hash=sha256:ffc9202a29ab3920fa812879e95a9e78b2465fd10be7fcbd042899695d75e616 -greenlet==3.1.1 ; platform_machine == 'AMD64' or platform_machine == 'WIN32' or platform_machine == 'aarch64' or platform_machine == 'amd64' or platform_machine == 'ppc64le' or platform_machine == 'win32' or platform_machine == 'x86_64' \ - --hash=sha256:0153404a4bb921f0ff1abeb5ce8a5131da56b953eda6e14b88dc6bbc04d2049e \ - --hash=sha256:04b013dc07c96f83134b1e99888e7a79979f1a247e2a9f59697fa14b5862ed01 \ - --hash=sha256:05175c27cb459dcfc05d026c4232f9de8913ed006d42713cb8a5137bd49375f1 \ - --hash=sha256:09fc016b73c94e98e29af67ab7b9a879c307c6731a2c9da0db5a7d9b7edd1159 \ - --hash=sha256:0bbae94a29c9e5c7e4a2b7f0aae5c17e8e90acbfd3bf6270eeba60c39fce3563 \ - --hash=sha256:0fde093fb93f35ca72a556cf72c92ea3ebfda3d79fc35bb19fbe685853869a83 \ - --hash=sha256:1443279c19fca463fc33e65ef2a935a5b09bb90f978beab37729e1c3c6c25fe9 \ - --hash=sha256:1776fd7f989fc6b8d8c8cb8da1f6b82c5814957264d1f6cf818d475ec2bf6395 \ - --hash=sha256:23f20bb60ae298d7d8656c6ec6db134bca379ecefadb0b19ce6f19d1f232a942 \ - --hash=sha256:275f72decf9932639c1c6dd1013a1bc266438eb32710016a1c742df5da6e60a1 \ - --hash=sha256:2846930c65b47d70b9d178e89c7e1a69c95c1f68ea5aa0a58646b7a96df12441 \ - --hash=sha256:36b89d13c49216cadb828db8dfa6ce86bbbc476a82d3a6c397f0efae0525bdd0 \ - --hash=sha256:3b2813dc3de8c1ee3f924e4d4227999285fd335d1bcc0d2be6dc3f1f6a318ec1 \ - --hash=sha256:411f015496fec93c1c8cd4e5238da364e1da7a124bcb293f085bf2860c32c6f6 \ - --hash=sha256:48ca08c771c268a768087b408658e216133aecd835c0ded47ce955381105ba39 \ - --hash=sha256:4afe7ea89de619adc868e087b4d2359282058479d7cfb94970adf4b55284574d \ - --hash=sha256:4ce3ac6cdb6adf7946475d7ef31777c26d94bccc377e070a7986bd2d5c515467 \ - --hash=sha256:4ead44c85f8ab905852d3de8d86f6f8baf77109f9da589cb4fa142bd3b57b475 \ - --hash=sha256:62ee94988d6b4722ce0028644418d93a52429e977d742ca2ccbe1c4f4a792511 \ - --hash=sha256:6510bf84a6b643dabba74d3049ead221257603a253d0a9873f55f6a59a65f822 \ - --hash=sha256:667a9706c970cb552ede35aee17339a18e8f2a87a51fba2ed39ceeeb1004798a \ - --hash=sha256:7124e16b4c55d417577c2077be379514321916d5790fa287c9ed6f23bd2ffd01 \ - --hash=sha256:77c386de38a60d1dfb8e55b8c1101d68c79dfdd25c7095d51fec2dd800892b80 \ - --hash=sha256:7876452af029456b3f3549b696bb36a06db7c90747740c5302f74a9e9fa14b13 \ - --hash=sha256:8320f64b777d00dd7ccdade271eaf0cad6636343293a25074cc5566160e4de7b \ - --hash=sha256:93147c513fac16385d1036b7e5b102c7fbbdb163d556b791f0f11eada7ba65dc \ - --hash=sha256:935e943ec47c4afab8965954bf49bfa639c05d4ccf9ef6e924188f762145c0ff \ - --hash=sha256:94b6150a85e1b33b40b1464a3f9988dcc5251d6ed06842abff82e42632fac120 \ - --hash=sha256:99cfaa2110534e2cf3ba31a7abcac9d328d1d9f1b95beede58294a60348fba36 \ - --hash=sha256:9e8f8c9cb53cdac7ba9793c276acd90168f416b9ce36799b9b885790f8ad6c0a \ - --hash=sha256:b2795058c23988728eec1f36a4e5e4ebad22f8320c85f3587b539b9ac84128d7 \ - --hash=sha256:b42703b1cf69f2aa1df7d1030b9d77d3e584a70755674d60e710f0af570f3761 \ - --hash=sha256:b7cede291382a78f7bb5f04a529cb18e068dd29e0fb27376074b6d0317bf4dd0 \ - --hash=sha256:b8a678974d1f3aa55f6cc34dc480169d58f2e6d8958895d68845fa4ab566509e \ - --hash=sha256:c3a701fe5a9695b238503ce5bbe8218e03c3bcccf7e204e455e7462d770268aa \ - --hash=sha256:c4aab7f6381f38a4b42f269057aee279ab0fc7bf2e929e3d4abfae97b682a12c \ - --hash=sha256:d5e975ca70269d66d17dd995dafc06f1b06e8cb1ec1e9ed54c1d1e4a7c4cf26e \ - --hash=sha256:da7a9bff22ce038e19bf62c4dd1ec8391062878710ded0a845bcf47cc0200617 \ - --hash=sha256:e347b3bfcf985a05e8c0b7d462ba6f15b1ee1c909e2dcad795e49e91b152c383 \ - --hash=sha256:e4d333e558953648ca09d64f13e6d8f0523fa705f51cae3f03b5983489958c70 \ - --hash=sha256:ed10eac5830befbdd0c32f83e8aa6288361597550ba669b04c48f0f9a2c843c6 \ - --hash=sha256:efc0f674aa41b92da8c49e0346318c6075d734994c3c4e4430b1c3f853e498e4 \ - --hash=sha256:f1695e76146579f8c06c1509c7ce4dfe0706f49c6831a817ac04eebb2fd02011 \ - --hash=sha256:f406b22b7c9a9b4f8aa9d2ab13d6ae0ac3e85c9a809bd590ad53fed2bf70dc79 -idna==3.10 \ - --hash=sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9 \ - --hash=sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3 -jinja2==3.1.6 \ - --hash=sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d \ - --hash=sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67 -legacy-cgi==2.6.2 ; python_full_version >= '3.13' \ - --hash=sha256:9952471ceb304043b104c22d00b4f333cac27a6abe446d8a528fc437cf13c85f \ - --hash=sha256:a7b83afb1baf6ebeb56522537c5943ef9813cf933f6715e88a803f7edbce0bff -mako==1.3.9 \ - --hash=sha256:95920acccb578427a9aa38e37a186b1e43156c87260d7ba18ca63aa4c7cbd3a1 \ - --hash=sha256:b5d65ff3462870feec922dbccf38f6efb44e5714d7b593a656be86663d8600ac -markupsafe==3.0.2 \ - --hash=sha256:0bff5e0ae4ef2e1ae4fdf2dfd5b76c75e5c2fa4132d05fc1b0dabcd20c7e28c4 \ - --hash=sha256:0f4ca02bea9a23221c0182836703cbf8930c5e9454bacce27e767509fa286a30 \ - --hash=sha256:131a3c7689c85f5ad20f9f6fb1b866f402c445b220c19fe4308c0b147ccd2ad9 \ - --hash=sha256:15ab75ef81add55874e7ab7055e9c397312385bd9ced94920f2802310c930396 \ - --hash=sha256:1c99d261bd2d5f6b59325c92c73df481e05e57f19837bdca8413b9eac4bd8028 \ - --hash=sha256:1e084f686b92e5b83186b07e8a17fc09e38fff551f3602b249881fec658d3eca \ - --hash=sha256:2181e67807fc2fa785d0592dc2d6206c019b9502410671cc905d132a92866557 \ - --hash=sha256:2cb8438c3cbb25e220c2ab33bb226559e7afb3baec11c4f218ffa7308603c832 \ - --hash=sha256:3809ede931876f5b2ec92eef964286840ed3540dadf803dd570c3b7e13141a3b \ - --hash=sha256:38a9ef736c01fccdd6600705b09dc574584b89bea478200c5fbf112a6b0d5579 \ - --hash=sha256:3d79d162e7be8f996986c064d1c7c817f6df3a77fe3d6859f6f9e7be4b8c213a \ - --hash=sha256:444dcda765c8a838eaae23112db52f1efaf750daddb2d9ca300bcae1039adc5c \ - --hash=sha256:4aa4e5faecf353ed117801a068ebab7b7e09ffb6e1d5e412dc852e0da018126c \ - --hash=sha256:52305740fe773d09cffb16f8ed0427942901f00adedac82ec8b67752f58a1b22 \ - --hash=sha256:569511d3b58c8791ab4c2e1285575265991e6d8f8700c7be0e88f86cb0672094 \ - --hash=sha256:57cb5a3cf367aeb1d316576250f65edec5bb3be939e9247ae594b4bcbc317dfb \ - --hash=sha256:5b02fb34468b6aaa40dfc198d813a641e3a63b98c2b05a16b9f80b7ec314185e \ - --hash=sha256:6381026f158fdb7c72a168278597a5e3a5222e83ea18f543112b2662a9b699c5 \ - --hash=sha256:6af100e168aa82a50e186c82875a5893c5597a0c1ccdb0d8b40240b1f28b969a \ - --hash=sha256:6c89876f41da747c8d3677a2b540fb32ef5715f97b66eeb0c6b66f5e3ef6f59d \ - --hash=sha256:70a87b411535ccad5ef2f1df5136506a10775d267e197e4cf531ced10537bd6b \ - --hash=sha256:7e94c425039cde14257288fd61dcfb01963e658efbc0ff54f5306b06054700f8 \ - --hash=sha256:846ade7b71e3536c4e56b386c2a47adf5741d2d8b94ec9dc3e92e5e1ee1e2225 \ - --hash=sha256:88416bd1e65dcea10bc7569faacb2c20ce071dd1f87539ca2ab364bf6231393c \ - --hash=sha256:8e06879fc22a25ca47312fbe7c8264eb0b662f6db27cb2d3bbbc74b1df4b9b87 \ - --hash=sha256:9025b4018f3a1314059769c7bf15441064b2207cb3f065e6ea1e7359cb46db9d \ - --hash=sha256:93335ca3812df2f366e80509ae119189886b0f3c2b81325d39efdb84a1e2ae93 \ - --hash=sha256:9778bd8ab0a994ebf6f84c2b949e65736d5575320a17ae8984a77fab08db94cf \ - --hash=sha256:9e2d922824181480953426608b81967de705c3cef4d1af983af849d7bd619158 \ - --hash=sha256:a123e330ef0853c6e822384873bef7507557d8e4a082961e1defa947aa59ba84 \ - --hash=sha256:a904af0a6162c73e3edcb969eeeb53a63ceeb5d8cf642fade7d39e7963a22ddb \ - --hash=sha256:ad10d3ded218f1039f11a75f8091880239651b52e9bb592ca27de44eed242a48 \ - --hash=sha256:b424c77b206d63d500bcb69fa55ed8d0e6a3774056bdc4839fc9298a7edca171 \ - --hash=sha256:b5a6b3ada725cea8a5e634536b1b01c30bcdcd7f9c6fff4151548d5bf6b3a36c \ - --hash=sha256:ba8062ed2cf21c07a9e295d5b8a2a5ce678b913b45fdf68c32d95d6c1291e0b6 \ - --hash=sha256:ba9527cdd4c926ed0760bc301f6728ef34d841f405abf9d4f959c478421e4efd \ - --hash=sha256:bbcb445fa71794da8f178f0f6d66789a28d7319071af7a496d4d507ed566270d \ - --hash=sha256:bcf3e58998965654fdaff38e58584d8937aa3096ab5354d493c77d1fdd66d7a1 \ - --hash=sha256:c0ef13eaeee5b615fb07c9a7dadb38eac06a0608b41570d8ade51c56539e509d \ - --hash=sha256:cabc348d87e913db6ab4aa100f01b08f481097838bdddf7c7a84b7575b7309ca \ - --hash=sha256:cdb82a876c47801bb54a690c5ae105a46b392ac6099881cdfb9f6e95e4014c6a \ - --hash=sha256:d16a81a06776313e817c951135cf7340a3e91e8c1ff2fac444cfd75fffa04afe \ - --hash=sha256:d8213e09c917a951de9d09ecee036d5c7d36cb6cb7dbaece4c71a60d79fb9798 \ - --hash=sha256:e07c3764494e3776c602c1e78e298937c3315ccc9043ead7e685b7f2b8d47b3c \ - --hash=sha256:e17c96c14e19278594aa4841ec148115f9c7615a47382ecb6b82bd8fea3ab0c8 \ - --hash=sha256:e444a31f8db13eb18ada366ab3cf45fd4b31e4db1236a4448f68778c1d1a5a2f \ - --hash=sha256:e6a2a455bd412959b57a172ce6328d2dd1f01cb2135efda2e4576e8a23fa3b0f \ - --hash=sha256:ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0 \ - --hash=sha256:f3818cb119498c0678015754eba762e0d61e5b52d34c8b13d770f0719f7b1d79 \ - --hash=sha256:f8b3d067f2e40fe93e1ccdd6b2e1d16c43140e76f02fb1319a05cf2b79d99430 \ - --hash=sha256:fcabf5ff6eea076f859677f5f0b6b5c1a51e70a376b0579e0eadef8db48c6b50 -notario==0.0.16 \ - --hash=sha256:71c7d1254857c0832b928979ae47be15118724b83b5e7bb2e5fe0acbdc652f78 -pecan==1.6.0 \ - --hash=sha256:5fd4469583eed2ded37b4d10a470e11a5de3f3c963dc87984e772e25c56fed3e \ - --hash=sha256:f23e79b0a3bfc6bacef494b9aaeacc7f1896a55de00b2aae62372e6dcd371aeb -pecan-notario==0.0.3 \ - --hash=sha256:92114160ee39832d9dd523f1859ea9ba7d8260a0972eb5140fda9cfc39fd8536 -pika==1.3.2 \ - --hash=sha256:0779a7c1fafd805672796085560d290213a465e4f6f76a6fb19e378d8041a14f \ - --hash=sha256:b2a327ddddf8570b4965b3576ac77091b850262d34ce8c1d8cb4e4146aa4145f -psycopg2-binary==2.9.10 \ - --hash=sha256:04392983d0bb89a8717772a193cfaac58871321e3ec69514e1c4e0d4957b5aff \ - --hash=sha256:0ea8e3d0ae83564f2fc554955d327fa081d065c8ca5cc6d2abb643e2c9c1200f \ - --hash=sha256:155e69561d54d02b3c3209545fb08938e27889ff5a10c19de8d23eb5a41be8a5 \ - --hash=sha256:18c5ee682b9c6dd3696dad6e54cc7ff3a1a9020df6a5c0f861ef8bfd338c3ca0 \ - --hash=sha256:1a6784f0ce3fec4edc64e985865c17778514325074adf5ad8f80636cd029ef7c \ - --hash=sha256:2286791ececda3a723d1910441c793be44625d86d1a4e79942751197f4d30341 \ - --hash=sha256:230eeae2d71594103cd5b93fd29d1ace6420d0b86f4778739cb1a5a32f607d1f \ - --hash=sha256:245159e7ab20a71d989da00f280ca57da7641fa2cdcf71749c193cea540a74f7 \ - --hash=sha256:26540d4a9a4e2b096f1ff9cce51253d0504dca5a85872c7f7be23be5a53eb18d \ - --hash=sha256:270934a475a0e4b6925b5f804e3809dd5f90f8613621d062848dd82f9cd62007 \ - --hash=sha256:27422aa5f11fbcd9b18da48373eb67081243662f9b46e6fd07c3eb46e4535142 \ - --hash=sha256:2ad26b467a405c798aaa1458ba09d7e2b6e5f96b1ce0ac15d82fd9f95dc38a92 \ - --hash=sha256:2b3d2491d4d78b6b14f76881905c7a8a8abcf974aad4a8a0b065273a0ed7a2cb \ - --hash=sha256:2ce3e21dc3437b1d960521eca599d57408a695a0d3c26797ea0f72e834c7ffe5 \ - --hash=sha256:32581b3020c72d7a421009ee1c6bf4a131ef5f0a968fab2e2de0c9d2bb4577f1 \ - --hash=sha256:35958ec9e46432d9076286dda67942ed6d968b9c3a6a2fd62b48939d1d78bf68 \ - --hash=sha256:3abb691ff9e57d4a93355f60d4f4c1dd2d68326c968e7db17ea96df3c023ef73 \ - --hash=sha256:3c18f74eb4386bf35e92ab2354a12c17e5eb4d9798e4c0ad3a00783eae7cd9f1 \ - --hash=sha256:3c4745a90b78e51d9ba06e2088a2fe0c693ae19cc8cb051ccda44e8df8a6eb53 \ - --hash=sha256:3c4ded1a24b20021ebe677b7b08ad10bf09aac197d6943bfe6fec70ac4e4690d \ - --hash=sha256:3e9c76f0ac6f92ecfc79516a8034a544926430f7b080ec5a0537bca389ee0906 \ - --hash=sha256:48b338f08d93e7be4ab2b5f1dbe69dc5e9ef07170fe1f86514422076d9c010d0 \ - --hash=sha256:4b3df0e6990aa98acda57d983942eff13d824135fe2250e6522edaa782a06de2 \ - --hash=sha256:512d29bb12608891e349af6a0cccedce51677725a921c07dba6342beaf576f9a \ - --hash=sha256:5a507320c58903967ef7384355a4da7ff3f28132d679aeb23572753cbf2ec10b \ - --hash=sha256:6d4fa1079cab9018f4d0bd2db307beaa612b0d13ba73b5c6304b9fe2fb441ff7 \ - --hash=sha256:6dc08420625b5a20b53551c50deae6e231e6371194fa0651dbe0fb206452ae1f \ - --hash=sha256:7b2c956c028ea5de47ff3a8d6b3cc3330ab45cf0b7c3da35a2d6ff8420896526 \ - --hash=sha256:7f4152f8f76d2023aac16285576a9ecd2b11a9895373a1f10fd9db54b3ff06b4 \ - --hash=sha256:851485a42dbb0bdc1edcdabdb8557c09c9655dfa2ca0460ff210522e073e319e \ - --hash=sha256:8608c078134f0b3cbd9f89b34bd60a943b23fd33cc5f065e8d5f840061bd0673 \ - --hash=sha256:880845dfe1f85d9d5f7c412efea7a08946a46894537e4e5d091732eb1d34d9a0 \ - --hash=sha256:8cd9b4f2cfab88ed4a9106192de509464b75a906462fb846b936eabe45c2063e \ - --hash=sha256:9440fa522a79356aaa482aa4ba500b65f28e5d0e63b801abf6aa152a29bd842a \ - --hash=sha256:b5f86c56eeb91dc3135b3fd8a95dc7ae14c538a2f3ad77a19645cf55bab1799c \ - --hash=sha256:bb89f0a835bcfc1d42ccd5f41f04870c1b936d8507c6df12b7737febc40f0909 \ - --hash=sha256:c3cc28a6fd5a4a26224007712e79b81dbaee2ffb90ff406256158ec4d7b52b47 \ - --hash=sha256:d7cd730dfa7c36dbe8724426bf5612798734bff2d3c3857f36f2733f5bfc7c00 \ - --hash=sha256:e217ce4d37667df0bc1c397fdcd8de5e81018ef305aed9415c3b093faaeb10fb \ - --hash=sha256:e3923c1d9870c49a2d44f795df0c889a22380d36ef92440ff618ec315757e539 \ - --hash=sha256:e5720a5d25e3b99cd0dc5c8a440570469ff82659bb09431c1439b92caf184d3b \ - --hash=sha256:e984839e75e0b60cfe75e351db53d6db750b00de45644c5d1f7ee5d1f34a1ce5 \ - --hash=sha256:ec8a77f521a17506a24a5f626cb2aee7850f9b69a0afe704586f63a464f3cd64 \ - --hash=sha256:ecced182e935529727401b24d76634a357c71c9275b356efafd8a2a91ec07392 \ - --hash=sha256:ee0e8c683a7ff25d23b55b11161c2663d4b099770f6085ff0a20d4505778d6b4 \ - --hash=sha256:f0c2d907a1e102526dd2986df638343388b94c33860ff3bbe1384130828714b1 \ - --hash=sha256:f758ed67cab30b9a8d2833609513ce4d3bd027641673d4ebc9c067e4d208eec1 \ - --hash=sha256:f8157bed2f51db683f31306aa497311b560f2265998122abe1dce6428bd86567 -requests==2.32.3 \ - --hash=sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760 \ - --hash=sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6 -setuptools==78.1.0 \ - --hash=sha256:18fd474d4a82a5f83dac888df697af65afa82dec7323d09c3e37d1f14288da54 \ - --hash=sha256:3e386e96793c8702ae83d17b853fb93d3e09ef82ec62722e61da5cd22376dcd8 -sqlalchemy==1.4.53 \ - --hash=sha256:122d7b5722df1a24402c6748bbb04687ef981493bb559d0cc0beffe722e0e6ed \ - --hash=sha256:197065b91456574d70b6459bfa62bc0b52a4960a29ef923c375ec427274a3e05 \ - --hash=sha256:1a96aa8d425047551676b0e178ddb0683421e78eda879ab55775128b2e612cae \ - --hash=sha256:2774c24c405136c3ef472e2352bdca7330659d481fbf2283f996c0ef9eb90f22 \ - --hash=sha256:421306c4b936b0271a3ce2dc074928d5ece4a36f9c482daa5770f44ecfc3a883 \ - --hash=sha256:437592b341a3229dd0443c9c803b0bf0a466f8f539014fef6cdb9c06b7edb7f9 \ - --hash=sha256:4604d42b2abccba266d3f5bbe883684b5df93e74054024c70d3fbb5eea45e530 \ - --hash=sha256:4e10ac36f0b994235c13388b39598bf27219ec8bdea5be99bdac612b01cbe525 \ - --hash=sha256:5e6ab710c4c064755fd92d1a417bef360228a19bdf0eee32b03aa0f5f8e9fe0d \ - --hash=sha256:68a614765197b3d13a730d631a78c3bb9b3b72ba58ed7ab295d58d517464e315 \ - --hash=sha256:6dd06572872ca13ef5a90306a3e5af787498ddaa17fb00109b1243642646cd69 \ - --hash=sha256:784272ceb5eb71421fea9568749bcbe8bd019261a0e2e710a7efa76057af2499 \ - --hash=sha256:86b11640251f9a9789fd96cd6e5d176b1c230230c70ad40299bcbcc568451b4c \ - --hash=sha256:b61ac5457d91b5629a3dea2b258deb4cdd35ac8f6fa2031d2b9b2fff5b3396da \ - --hash=sha256:bc8be4df55e8fde3006d9cb1f6b3df2ba26db613855dc4df2c0fcd5ec15cb3b7 \ - --hash=sha256:cd534c716f86bdf95b7b984a34ee278c91d1b1d7d183e7e5ff878600b1696046 \ - --hash=sha256:d13d4dfbc6e52363886b47cf02cf68c5d2a37c468626694dc210d7e97d4ad330 \ - --hash=sha256:fb8e15dfa47f5de11ab073e12aadd6b502cfb7ac4bafd18bd18cfd1c7d13dbbc -urllib3==2.3.0 \ - --hash=sha256:1cee9ad369867bfdbbb48b7dd50374c0967a0bb7710050facf0dd6911440e3df \ - --hash=sha256:f8c5449b3cf0861679ce7e0503c7b44b5ec981bec0d1d3795a07f1ba96f0204d -webob==1.8.9 \ - --hash=sha256:45e34c58ed0c7e2ecd238ffd34432487ff13d9ad459ddfd77895e67abba7c1f9 \ - --hash=sha256:ad6078e2edb6766d1334ec3dee072ac6a7f95b1e32ce10def8ff7f0f02d56589 +psycopg2-binary==2.9.10 +# >20 to get rid of broken py2 compat +# < 20.0.10 because of https://github.com/benoitc/gunicorn/issues/2741 +gunicorn >= 20.0.0, < 20.0.10 +pecan==1.6.0 +sqlalchemy==1.4.53 +pecan-notario==0.0.3 +alembic==1.13.2 +ipython==5.0.0 +requests==2.25.1 +jinja2==3.1.4 +pika==1.2.0 +enum34==1.1.10