summary | Tremendous toolsAbraham Maslow said, "To the man who only has a hammer, everything he encounters begins to look like a nail". Obviously, hammers and IT don't mix, so we have come up with a list of tremendous tools you can use to resist the urge to smash things up. Let's Talk ToolsTools as defined here are any packages, frameworks, websites or pieces of software we think are useful. By using the same tools, we can offer a better level of support and collaboration within the team. The tools we use come in three flavours, tools we have developed in house for ourselves, tools that are provided by a third party and tools that are open sourced where we contribute. We are pretty open to using any tool, framework, gizmo or gadget if it brings a tangible benefit, so this list is not exhaustive or set in stone, especially when it comes to third party tools.We strongly encourage using an approach that results in reusable code. If you are starting a new project or updating old code, it is well worth flicking through this section to see if you can find something that does what you need. On the flip side, if you think the thing you are creating could be useful in other projects, make sure it's written so we can all take advantage. Any tool below marked with ⭐ should be considered our standard practise. If you aren't using the approach as described, you should have a good reason. We will have given time and consideration to these tools, but we are happy to have a conversation if you have a better idea. Our Tools Connection Manager ⭐This tool uses credentials stored in KeePass to connect to our database using python and handles the creation of the SSH connection if required. Before you can use this tool though, you will need to use the rr-key-manager tools to create your KeePass database and add the appropriate credentials. Whoa dude, a tool within a tool, cool.‼️Some repos are still using the first iteration of this idea, which was called ukrdc_database. Read The Docs <br> Data Base Models ⭐We have various databases and for the most part we have models that reflect them. The RR Models<br> The UKRDC Models<br> The Radar Models<br> Some Other ToolSome other tools will no doubt go here but I haven't got time to go find them. Don't click the button, you have been warned. 💥 Do not Click me<br> Their Tools Text EditorsBy and large, as a team, we use VSCode. There are some great modules for python devs, including x, y and z.Some of us use PyCharm, and it is rumoured that NotePad++ is a very capable tool in the right hands. Who's hands, I hear you ask. Extra points if you can find out. 😆 Python FrameworksWe use a host of frameworks, some of our favourites are 💎 SQLAlchemy 🏃♂️ FastAPI👽 Django🐼 Pandas or Polars Python Dev ToolsTo make sure our code is up to scratch, we use a selection of tools for all the regular sanity checking stuff 📝 Formatting - Black or Ruff🧹 Linting - Pylint or Ruff🧪 Testing - Pytest🛠️ Type checking - mypy🛡️ Vulnerability testing - Bandit🏃♀️ Test runner - Tox DockerIf building computers inside computers is magic, then docker is your wand. We use this for building development and production environments. Take a Look<br> GitHub ActionsRobots would beat everyone in a fight (even sharks) except wizards, and if you agree, you are going to love GitHub actions. You can find out all about this amazing tool by clicking the button. You can also visit our section dedicated to how we use GitHub action right here. Take a Look<br> Community Tools NHS-NumberThis is a package for validating NHS numbers. It deals with all flavours (NHS, CHI, HSC) and is also capable of generating NHS numbers for testing purposes. Take a Look<br> PyXB-XPyXB is a pure Python package that generates Python code for classes that correspond to data structures defined by XMLSchema. PyXB-X is a fork where we do very limited updating. Check out the README for a better explination. Take a Look<br> |
---|
page | {"name":"page","children":[{"id":"aZRmFOXpD3EomGMVVvfqc","params":{"background":{"light":"#ffffff","dark":"#1d2125"},"padding":20,"gap":10},"children":[{"id":"FKvhWz0r9Hn7JZFMsQ16U","name":"row","children":[{"id":"9f-aFTBWNOcMMeJGDS7oq","name":"column","children":[{"name":"image","params":{"templateId":"full-width","alignment":"center","position":"center center","borderRadius":{"all":0,"bbl":0,"bbr":0,"btl":0,"btr":0,"isIndividualCorners":false},"image":{"value":"att2615771137","target":"_blank","type":"attachment"},"width":370,"height":185},"children":[],"id":"5_Rim65enwZ1eqYmGLtne"}],"params":{"borderRadius":{"all":0,"btl":0,"bbl":0,"btr":0,"bbr":0,"isIndividualCorners":false},"padding":0,"gap":20,"verticalAlignment":"top"}},{"id":"O1juLYOxV5I_EEOFcEVuG","name":"column","children":[],"params":{"borderRadius":{"all":0,"btl":0,"bbl":0,"btr":0,"bbr":0,"isIndividualCorners":false},"padding":0,"gap":20,"verticalAlignment":"top"}},{"id":"hmAabHUrdxFd08opVToQS","name":"column","children":[],"params":{"borderRadius":{"all":0,"btl":0,"bbl":0,"btr":0,"bbr":0,"isIndividualCorners":false},"padding":0,"gap":20,"verticalAlignment":"top"}},{"id":"QX1KboA0oU5GkfkHK_i9Q","name":"column","children":[],"params":{"borderRadius":{"all":0,"btl":0,"bbl":0,"btr":0,"bbr":0,"isIndividualCorners":false},"padding":0,"gap":20,"verticalAlignment":"top"}},{"id":"8AgmqvDifaQ9hs3s3b_zV","name":"column","children":[],"params":{"borderRadius":{"all":0,"btl":0,"bbl":0,"btr":0,"bbr":0,"isIndividualCorners":false},"padding":0,"gap":20,"verticalAlignment":"top"}},{"id":"MfBG3kNo1Ys8XMqZKWB2L","name":"column","children":[],"params":{"borderRadius":{"all":0,"btl":0,"bbl":0,"btr":0,"bbr":0,"isIndividualCorners":false},"padding":0,"gap":20,"verticalAlignment":"top"}}],"params":{"layout":[1],"gap":10,"minHeight":100,"padding":10,"borderRadius":0}},{"id":"MWC4BH0FWQDxjmd1irbMK","name":"row","children":[{"id":"3dC8m0ZwcI9V6esgXI9i9","name":"column","children":[{"name":"text","params":{"templateId":"headline and paragraph","value":[{"type":"paragraph","children":[{"type":"paragraph","children":[{"type":"paragraph","children":[{"text":"Tremendous tools","fontWeight":700,"letterSpacing":-1,"lineHeight":"unset","fontSize":32,"fontFamily":"Poppins, sans-serif"}],"align":"center"}]},{"type":"paragraph","children":[{"text":"","fontSize":16,"lineHeight":"24px","color":"#555","letterSpacing":0,"fontFamily":"Open Sans, sans-serif"}]},{"type":"paragraph","children":[{"type":"paragraph","children":[{"fontSize":16,"lineHeight":"24px","color":"#555","letterSpacing":0,"text":"Abraham Maslow said, \"To the man who only has a hammer, everything he encounters begins to look like a nail\". Obviously, hammers and IT don't mix, so we have come up with a list of tremendous tools you can use to resist the urge to smash things up.","fontFamily":"Poppins, sans-serif"}],"align":"center"},{"type":"paragraph","align":"center","children":[{"fontSize":16,"lineHeight":"24px","color":"#555","letterSpacing":0,"fontFamily":"Poppins, sans-serif","text":""}]},{"type":"paragraph","children":[{"type":"paragraph","align":"center","children":[{"fontSize":16,"lineHeight":"24px","color":"#555","letterSpacing":0,"fontFamily":"Poppins, sans-serif","text":""}]}]}]}]}]},"children":[],"id":"oYn2fn0g2IxgVoOo1Dd-i"}],"params":{"borderRadius":{"all":0,"btl":0,"bbl":0,"btr":0,"bbr":0,"isIndividualCorners":false},"padding":0,"gap":20,"verticalAlignment":"top"}},{"id":"o4Uv4bmc6V5DoFDD9ktNE","name":"column","children":[],"params":{"borderRadius":{"all":0,"btl":0,"bbl":0,"btr":0,"bbr":0,"isIndividualCorners":false},"padding":0,"gap":20,"verticalAlignment":"top"}},{"id":"EjqR0d1qGxlRPuVC9A5Sb","name":"column","children":[],"params":{"borderRadius":{"all":0,"btl":0,"bbl":0,"btr":0,"bbr":0,"isIndividualCorners":false},"padding":0,"gap":20,"verticalAlignment":"top"}},{"id":"C-FfFSuNOFuHRGMw7tMrW","name":"column","children":[],"params":{"borderRadius":{"all":0,"btl":0,"bbl":0,"btr":0,"bbr":0,"isIndividualCorners":false},"padding":0,"gap":20,"verticalAlignment":"top"}},{"id":"HdgOfTISxCKK93NA7Yr9y","name":"column","children":[],"params":{"borderRadius":{"all":0,"btl":0,"bbl":0,"btr":0,"bbr":0,"isIndividualCorners":false},"padding":0,"gap":20,"verticalAlignment":"top"}},{"id":"gzneaTFOjaTp9HJFzB0VK","name":"column","children":[],"params":{"borderRadius":{"all":0,"btl":0,"bbl":0,"btr":0,"bbr":0,"isIndividualCorners":false},"padding":0,"gap":20,"verticalAlignment":"top"}}],"params":{"layout":[1],"gap":10,"minHeight":200,"padding":10,"borderRadius":0}},{"id":"Ba47T0TRdbf6q0LUo8yF3","name":"row","children":[{"id":"tdood_-RZ5ArpYwcmXNaj","name":"column","children":[{"name":"text","params":{"templateId":"simple paragraph","value":[{"type":"paragraph","children":[{"type":"paragraph","children":[{"type":"paragraph","children":[{"text":"Let's Talk Tools","fontWeight":700,"letterSpacing":-1,"lineHeight":"unset","fontSize":32,"fontFamily":"Poppins, sans-serif"}]}]},{"type":"paragraph","children":[{"fontSize":16,"lineHeight":"24px","color":"#555","letterSpacing":0,"fontFamily":"Poppins, sans-serif","text":""}]},{"type":"paragraph","children":[{"fontSize":16,"lineHeight":"24px","color":"#555","letterSpacing":0,"fontFamily":"Poppins, sans-serif","text":"Tools as defined here are any packages, frameworks, websites or pieces of software we think are useful. By using the same tools, we can offer a better level of support and collaboration within the team. The tools we use come in three flavours, tools we have developed in house for ourselves, tools that are provided by a third party and tools that are open sourced where we contribute. We are pretty open to using any tool, framework, gizmo or gadget if it brings a tangible benefit, so this list is not exhaustive or set in stone, especially when it comes to third party tools."}]},{"type":"paragraph","children":[{"type":"paragraph","children":[{"type":"paragraph","children":[{"type":"paragraph","align":"center","children":[{"fontSize":16,"lineHeight":"24px","color":"#555","letterSpacing":0,"fontFamily":"Poppins, sans-serif","text":""}]},{"type":"paragraph","align":"left","children":[{"fontSize":16,"lineHeight":"24px","color":"#555","letterSpacing":0,"fontFamily":"Poppins, sans-serif","text":"We strongly encourage using an approach that results in reusable code. If you are starting a new project or updating old code, it is well worth flicking through this section to see if you can find something that does what you need. On the flip side, if you think the thing you are creating could be useful in other projects, make sure it's written so we can all take advantage. Any tool below marked with ⭐ should be considered our standard practise. If you aren't using the approach as described, you should have a good reason. We will have given time and consideration to these tools, but we are happy to have a conversation if you have a better idea."}]}]}]}]}]}]},"children":[],"id":"d16zhVOt6TkvskOSJ15nG"}],"params":{"borderRadius":{"all":0,"btl":0,"bbl":0,"btr":0,"bbr":0,"isIndividualCorners":false},"padding":0,"gap":20,"verticalAlignment":"top"}},{"id":"pH-Xwl4Z-LRbfV1149KAs","name":"column","children":[],"params":{"borderRadius":{"all":0,"btl":0,"bbl":0,"btr":0,"bbr":0,"isIndividualCorners":false},"padding":0,"gap":20,"verticalAlignment":"top"}},{"id":"lJbR-fGAp2tZxknCNMrdJ","name":"column","children":[],"params":{"borderRadius":{"all":0,"btl":0,"bbl":0,"btr":0,"bbr":0,"isIndividualCorners":false},"padding":0,"gap":20,"verticalAlignment":"top"}},{"id":"BKmXYeE70OIkKgR8esWsE","name":"column","children":[],"params":{"borderRadius":{"all":0,"btl":0,"bbl":0,"btr":0,"bbr":0,"isIndividualCorners":false},"padding":0,"gap":20,"verticalAlignment":"top"}},{"id":"yqw8Y8jEDP6YZBbWfGpCe","name":"column","children":[],"params":{"borderRadius":{"all":0,"btl":0,"bbl":0,"btr":0,"bbr":0,"isIndividualCorners":false},"padding":0,"gap":20,"verticalAlignment":"top"}},{"id":"J2k34chDp06N1CJNhQG6j","name":"column","children":[],"params":{"borderRadius":{"all":0,"btl":0,"bbl":0,"btr":0,"bbr":0,"isIndividualCorners":false},"padding":0,"gap":20,"verticalAlignment":"top"}}],"params":{"layout":[1],"gap":100,"minHeight":200,"padding":10,"borderRadius":0,"size":"full"}},{"id":"jkQMugMWLNdIwjGr-Bnv5","name":"row","children":[{"id":"RA1ErDF2qfZ7OyL4bi354","name":"column","children":[{"name":"divider","params":{"templateId":"solid long","color":{"light":"#000000","dark":"#ffffff"},"alignment":"start","fontSize":24,"fontColor":{"light":"#000000","dark":"#ffffff"},"height":1,"borderStyle":"solid"},"children":[],"id":"H1g3DR0q42--7w3vhQiFa"}],"params":{"borderRadius":{"all":0,"btl":0,"bbl":0,"btr":0,"bbr":0,"isIndividualCorners":false},"padding":0,"gap":20,"verticalAlignment":"top"}},{"id":"Nbi0ZKyX1YsFNW_B9pBxe","name":"column","children":[],"params":{"borderRadius":{"all":0,"btl":0,"bbl":0,"btr":0,"bbr":0,"isIndividualCorners":false},"padding":0,"gap":20,"verticalAlignment":"top"}},{"id":"UlGi0Ju4AaYn66AaaDF1T","name":"column","children":[],"params":{"borderRadius":{"all":0,"btl":0,"bbl":0,"btr":0,"bbr":0,"isIndividualCorners":false},"padding":0,"gap":20,"verticalAlignment":"top"}},{"id":"WzJUPgGzrsdJooEyrS-gW","name":"column","children":[],"params":{"borderRadius":{"all":0,"btl":0,"bbl":0,"btr":0,"bbr":0,"isIndividualCorners":false},"padding":0,"gap":20,"verticalAlignment":"top"}},{"id":"OZY-jkkcV4qE32g6dxxSe","name":"column","children":[],"params":{"borderRadius":{"all":0,"btl":0,"bbl":0,"btr":0,"bbr":0,"isIndividualCorners":false},"padding":0,"gap":20,"verticalAlignment":"top"}},{"id":"1LnGGhQRT6zCdC5GP0gTF","name":"column","children":[],"params":{"borderRadius":{"all":0,"btl":0,"bbl":0,"btr":0,"bbr":0,"isIndividualCorners":false},"padding":0,"gap":20,"verticalAlignment":"top"}}],"params":{"layout":[1],"gap":100,"minHeight":1,"padding":10,"borderRadius":0,"size":"full"}},{"id":"t-gTipArDQVJ24lsiWKJq","name":"row","children":[{"id":"nQmq5k774D7TU5zLiv57D","name":"column","children":[{"name":"text","params":{"templateId":"simple paragraph","value":[{"type":"paragraph","children":[{"type":"paragraph","children":[{"type":"paragraph","children":[{"text":"Our Tools","fontWeight":700,"letterSpacing":-1,"lineHeight":"unset","fontFamily":"Poppins, sans-serif","fontSize":45}]}]}]}]},"children":[],"id":"geg_iDJx3zOuJHC7Q_BJk"}],"params":{"borderRadius":{"all":0,"btl":0,"bbl":0,"btr":0,"bbr":0,"isIndividualCorners":false},"padding":0,"gap":20,"verticalAlignment":"top"}},{"id":"udGAuH0TSUxg5d1aMOD7Q","name":"column","children":[],"params":{"borderRadius":{"all":0,"btl":0,"bbl":0,"btr":0,"bbr":0,"isIndividualCorners":false},"padding":0,"gap":20,"verticalAlignment":"top"}},{"id":"jXkR_WBhJha68OJ-IV2vc","name":"column","children":[],"params":{"borderRadius":{"all":0,"btl":0,"bbl":0,"btr":0,"bbr":0,"isIndividualCorners":false},"padding":0,"gap":20,"verticalAlignment":"top"}},{"id":"AnjIpeuz7YPiKZgwsV9FE","name":"column","children":[],"params":{"borderRadius":{"all":0,"btl":0,"bbl":0,"btr":0,"bbr":0,"isIndividualCorners":false},"padding":0,"gap":20,"verticalAlignment":"top"}},{"id":"dKqUgWk6tMuHoC4pZBO42","name":"column","children":[],"params":{"borderRadius":{"all":0,"btl":0,"bbl":0,"btr":0,"bbr":0,"isIndividualCorners":false},"padding":0,"gap":20,"verticalAlignment":"top"}},{"id":"GtpM2lMBgRKOdBhrR0mMz","name":"column","children":[],"params":{"borderRadius":{"all":0,"btl":0,"bbl":0,"btr":0,"bbr":0,"isIndividualCorners":false},"padding":0,"gap":20,"verticalAlignment":"top"}}],"params":{"layout":[1],"gap":0,"minHeight":1,"padding":0,"borderRadius":0,"size":"full"}},{"id":"5bMkZmLr97RCy2cfhmmrr","name":"row","children":[{"id":"Nt2hxh0syf4IYxMNsGQg5","name":"column","children":[{"name":"text","params":{"templateId":"headline and paragraph","value":[{"type":"paragraph","children":[{"type":"paragraph","children":[{"text":"Connection Manager ⭐","fontWeight":700,"letterSpacing":-1,"lineHeight":"unset","fontSize":32,"fontFamily":"Poppins, sans-serif"}]},{"type":"paragraph","children":[{"text":"","fontSize":16,"lineHeight":"24px","color":"#555","letterSpacing":0,"fontFamily":"Poppins, sans-serif"}]},{"type":"paragraph","children":[{"fontSize":16,"lineHeight":"24px","color":"#555","letterSpacing":0,"text":"This tool uses credentials stored in KeePass to connect to our database using python and handles the creation of the SSH connection if required. Before you can use this tool though, you will need to use the rr-key-manager tools to create your KeePass database and add the appropriate credentials. Whoa dude, a tool within a tool, cool.","fontFamily":"Poppins, sans-serif"}]},{"type":"paragraph","children":[{"fontSize":16,"lineHeight":"24px","color":"#555","letterSpacing":0,"fontFamily":"Poppins, sans-serif","text":""}]},{"type":"paragraph","children":[{"fontSize":16,"lineHeight":"24px","color":"#555","letterSpacing":0,"fontFamily":"Poppins, sans-serif","text":"‼️Some repos are still using the first iteration of this idea, which was called "},{"type":"link","link":{"value":"https://github.com/renalreg/ukrdc_database","target":"_blank","type":"link"},"children":[{"fontSize":16,"lineHeight":"24px","letterSpacing":0,"fontFamily":"Poppins, sans-serif","text":"ukrdc_database","color":"#0091FF","underline":true}]},{"fontSize":16,"lineHeight":"24px","color":"#555","letterSpacing":0,"fontFamily":"Poppins, sans-serif","text":"."}]}]}]},"children":[],"id":"bBuo6m5BBPAr54612p23R"},{"name":"button","params":{"templateId":"small button","label":"Read The Docs <br>","size":"medium","shape":"circular","alignment":"start","states":{"idle":{"colors":{"background":"#1181F8"}},"hover":{"colors":{}}},"link":{"value":"https://github.com/renalreg/rr-connection-managerrenalregistry.atlassian.net/wiki/spaces/ST/pages/2631368710/Connection+Manager","target":"_blank","type":"link"}},"children":[],"id":"-3bXy2_xzqDXI8_XsGPqT"}],"params":{"borderRadius":{"all":0,"btl":0,"bbl":0,"btr":0,"bbr":0,"isIndividualCorners":false},"padding":0,"gap":20,"verticalAlignment":"top"}},{"id":"dJb9rgh4SbA65yfjcUrU7","name":"column","children":[{"name":"text","params":{"templateId":"headline and paragraph","value":[{"type":"paragraph","children":[{"type":"paragraph","children":[{"text":"Data Base Models ⭐","fontWeight":700,"letterSpacing":-1,"lineHeight":"unset","fontSize":32,"fontFamily":"Poppins, sans-serif"}]},{"type":"paragraph","children":[{"text":"","fontSize":16,"lineHeight":"24px","color":"#555","letterSpacing":0,"fontFamily":"Poppins, sans-serif"}]},{"type":"paragraph","children":[{"fontSize":16,"lineHeight":"24px","color":"#555","letterSpacing":0,"text":"We have various databases and for the most part we have models that reflect them. ","fontFamily":"Poppins, sans-serif"}]}]}]},"children":[],"id":"eL4S3tdOAbpTNS0Xm_9DG"},{"name":"button","params":{"templateId":"small button","label":"The RR Models<br>","size":"medium","shape":"circular","alignment":"start","states":{"idle":{"colors":{"background":"#1181F8"}},"hover":{"colors":{}}},"link":{"value":"https://github.com/renalreg/ukrr_models","target":"_blank","type":"link"},"width":150},"children":[],"id":"Yp8SZz_tAB3zoDd7t4cIl"},{"name":"button","params":{"templateId":"small button","label":"The UKRDC Models<br>","size":"medium","shape":"circular","alignment":"start","states":{"idle":{"colors":{"background":"#1181F8"}},"hover":{"colors":{}}},"width":150,"link":{"value":"https://github.com/renalreg/ukrdc-sqla","target":"_blank","type":"link"}},"children":[],"id":"7NaeuUZC9Ogo2xn0aBW59"},{"name":"button","params":{"templateId":"small button","label":"The Radar Models<br>","size":"medium","shape":"circular","alignment":"start","states":{"idle":{"colors":{"background":"#1181F8"}},"hover":{"colors":{}}},"width":150,"link":{"value":"https://github.com/renalreg/radar-models","target":"_blank","type":"link"}},"children":[],"id":"eUIkqS_3aGkpTtwxhflPH"}],"params":{"borderRadius":{"all":0,"btl":0,"bbl":0,"btr":0,"bbr":0,"isIndividualCorners":false},"padding":0,"gap":20,"verticalAlignment":"top"}},{"id":"sozjmFwqeTykrHAXUgViK","name":"column","children":[{"name":"text","params":{"templateId":"headline and paragraph","value":[{"type":"paragraph","children":[{"type":"paragraph","children":[{"text":"Some Other Tool","fontWeight":700,"letterSpacing":-1,"lineHeight":"unset","fontSize":32,"fontFamily":"Poppins, sans-serif"}]},{"type":"paragraph","children":[{"text":"","fontSize":16,"lineHeight":"24px","color":"#555","letterSpacing":0,"fontFamily":"Poppins, sans-serif"}]},{"type":"paragraph","children":[{"fontSize":16,"lineHeight":"24px","color":"#555","letterSpacing":0,"text":"Some other tools will no doubt go here but I haven't got time to go find them. Don't click the button, you have been warned. 💥","fontFamily":"Poppins, sans-serif"}]}]}]},"children":[],"id":"TD3LX2RxGjK8Jdw52RbVo"},{"name":"button","params":{"templateId":"small button","label":"Do not Click me<br>","size":"medium","shape":"circular","alignment":"start","states":{"idle":{"colors":{"background":"#1181F8"}},"hover":{"colors":{}}},"link":{"value":"https://renalregistry.atlassian.net/wiki/spaces/~876730531/pages/2617442322/Boom","target":"_blank","type":"link"}},"children":[],"id":"aGFaYliiIsEwAEFy7naF2"}],"params":{"borderRadius":{"all":0,"btl":0,"bbl":0,"btr":0,"bbr":0,"isIndividualCorners":false},"padding":0,"gap":20,"verticalAlignment":"top"}},{"id":"nfxp-09RliOqmnUXGsz5_","name":"column","children":[],"params":{"borderRadius":{"all":0,"btl":0,"bbl":0,"btr":0,"bbr":0,"isIndividualCorners":false},"padding":0,"gap":20,"verticalAlignment":"top"}},{"id":"x-u6uMmGoV_Y84xwTQLnJ","name":"column","children":[],"params":{"borderRadius":{"all":0,"btl":0,"bbl":0,"btr":0,"bbr":0,"isIndividualCorners":false},"padding":0,"gap":20,"verticalAlignment":"top"}},{"id":"0Pl-5EUmq_NAOd5uEomgp","name":"column","children":[],"params":{"borderRadius":{"all":0,"btl":0,"bbl":0,"btr":0,"bbr":0,"isIndividualCorners":false},"padding":0,"gap":20,"verticalAlignment":"top"}}],"params":{"layout":[1,1,1],"gap":100,"minHeight":200,"padding":10,"borderRadius":0,"size":"full"}},{"id":"vGv2qEBbjCo00GrWwHSdM","name":"row","children":[{"id":"O9-UhUXrmCh06dOhNZqg2","name":"column","children":[{"name":"divider","params":{"templateId":"solid long","color":{"light":"#000000","dark":"#ffffff"},"alignment":"start","fontSize":24,"fontColor":{"light":"#000000","dark":"#ffffff"},"height":1,"borderStyle":"solid"},"children":[],"id":"sEn49ulxOd6l4S58DkJZD"}],"params":{"borderRadius":{"all":0,"btl":0,"bbl":0,"btr":0,"bbr":0,"isIndividualCorners":false},"padding":0,"gap":20,"verticalAlignment":"top"}},{"id":"5d9zCwjor5hQHsDZpfakC","name":"column","children":[],"params":{"borderRadius":{"all":0,"btl":0,"bbl":0,"btr":0,"bbr":0,"isIndividualCorners":false},"padding":0,"gap":20,"verticalAlignment":"top"}},{"id":"CnW4J1U_k0X34tacY42UK","name":"column","children":[],"params":{"borderRadius":{"all":0,"btl":0,"bbl":0,"btr":0,"bbr":0,"isIndividualCorners":false},"padding":0,"gap":20,"verticalAlignment":"top"}},{"id":"s3wb_D31-BGnWuaoLk0db","name":"column","children":[],"params":{"borderRadius":{"all":0,"btl":0,"bbl":0,"btr":0,"bbr":0,"isIndividualCorners":false},"padding":0,"gap":20,"verticalAlignment":"top"}},{"id":"BeD80uGmeMqYtYE0MWcC3","name":"column","children":[],"params":{"borderRadius":{"all":0,"btl":0,"bbl":0,"btr":0,"bbr":0,"isIndividualCorners":false},"padding":0,"gap":20,"verticalAlignment":"top"}},{"id":"uOswOJFHkYHM5V7ZedMq_","name":"column","children":[],"params":{"borderRadius":{"all":0,"btl":0,"bbl":0,"btr":0,"bbr":0,"isIndividualCorners":false},"padding":0,"gap":20,"verticalAlignment":"top"}}],"params":{"layout":[1],"gap":100,"minHeight":1,"padding":10,"borderRadius":0,"size":"full"}},{"id":"swcFYz0l7tXVxePMBZzcy","name":"row","children":[{"id":"TqVSDuiPy4Me5vNvFEO7k","name":"column","children":[{"name":"text","params":{"templateId":"simple paragraph","value":[{"type":"paragraph","children":[{"type":"paragraph","children":[{"type":"paragraph","children":[{"text":"Their Tools","fontWeight":700,"letterSpacing":-1,"lineHeight":"unset","fontFamily":"Poppins, sans-serif","fontSize":45}]}]}]}]},"children":[],"id":"_4eRWoGNjTbvGpuNOLrg1"}],"params":{"borderRadius":{"all":0,"btl":0,"bbl":0,"btr":0,"bbr":0,"isIndividualCorners":false},"padding":0,"gap":20,"verticalAlignment":"top"}},{"id":"cq1AnyOmgfjugsVtvfddE","name":"column","children":[],"params":{"borderRadius":{"all":0,"btl":0,"bbl":0,"btr":0,"bbr":0,"isIndividualCorners":false},"padding":0,"gap":20,"verticalAlignment":"top"}},{"id":"lkn7L6TLHGObR0K6ltRCd","name":"column","children":[],"params":{"borderRadius":{"all":0,"btl":0,"bbl":0,"btr":0,"bbr":0,"isIndividualCorners":false},"padding":0,"gap":20,"verticalAlignment":"top"}},{"id":"DK17g5vpPdIHYKERTU_nE","name":"column","children":[],"params":{"borderRadius":{"all":0,"btl":0,"bbl":0,"btr":0,"bbr":0,"isIndividualCorners":false},"padding":0,"gap":20,"verticalAlignment":"top"}},{"id":"soQwyNFVh4DtKORG0659T","name":"column","children":[],"params":{"borderRadius":{"all":0,"btl":0,"bbl":0,"btr":0,"bbr":0,"isIndividualCorners":false},"padding":0,"gap":20,"verticalAlignment":"top"}},{"id":"wzTn4sVqMJWjEujaeM95v","name":"column","children":[],"params":{"borderRadius":{"all":0,"btl":0,"bbl":0,"btr":0,"bbr":0,"isIndividualCorners":false},"padding":0,"gap":20,"verticalAlignment":"top"}}],"params":{"layout":[1],"gap":100,"minHeight":1,"padding":10,"borderRadius":0,"size":"full"}},{"id":"I3v4JQseORUVapBMEqssu","name":"row","children":[{"id":"0EiwOHfKgQbDeo5vYltsB","name":"column","children":[{"name":"text","params":{"templateId":"headline and paragraph","value":[{"type":"paragraph","children":[{"type":"paragraph","children":[{"text":"Text Editors","fontWeight":700,"letterSpacing":-1,"lineHeight":"unset","fontSize":32,"fontFamily":"Poppins, sans-serif"}]},{"type":"paragraph","children":[{"text":"","fontSize":16,"lineHeight":"24px","color":"#555","letterSpacing":0,"fontFamily":"Poppins, sans-serif"}]},{"type":"paragraph","children":[{"fontFamily":"Poppins, sans-serif","fontSize":16,"color":{"light":"#555"},"text":"By and large, as a team, we use "},{"type":"link","link":{"value":"https://code.visualstudio.com/","target":"_blank","type":"link"},"children":[{"fontFamily":"Poppins, sans-serif","fontSize":16,"text":"VSCode","color":"#0091FF","underline":true}]},{"fontFamily":"Poppins, sans-serif","fontSize":16,"color":{"light":"#555"},"text":". There are some great modules for python devs, including x, y and z."}]},{"type":"paragraph","children":[{"fontFamily":"Poppins, sans-serif","fontSize":16,"color":{"light":"#555"},"text":""}]},{"type":"paragraph","children":[{"fontFamily":"Poppins, sans-serif","fontSize":16,"color":{"light":"#555"},"text":"Some of us use "},{"type":"link","link":{"value":"https://www.jetbrains.com/pycharm/","target":"_blank","type":"link"},"children":[{"fontFamily":"Poppins, sans-serif","fontSize":16,"text":"PyCharm","color":"#0091FF","underline":true}]},{"fontFamily":"Poppins, sans-serif","fontSize":16,"color":{"light":"#555"},"text":", and it is rumoured that "},{"type":"link","link":{"value":"https://notepad-plus-plus.org/","target":"_blank","type":"link"},"children":[{"fontFamily":"Poppins, sans-serif","fontSize":16,"text":"NotePad++","color":"#0091FF","underline":true}]},{"fontFamily":"Poppins, sans-serif","fontSize":16,"color":{"light":"#555"},"text":" is a very capable tool in the right hands. Who's hands, I hear you ask. Extra points if you can find out. 😆"}]}]}]},"children":[],"id":"OE8jPMjomxDq4rb94qzbA"}],"params":{"borderRadius":{"all":0,"btl":0,"bbl":0,"btr":0,"bbr":0,"isIndividualCorners":false},"padding":0,"gap":20,"verticalAlignment":"top"}},{"id":"KHVuAyOzFfNWsMYmT-M2a","name":"column","children":[{"name":"text","params":{"templateId":"headline and paragraph","value":[{"type":"paragraph","children":[{"type":"paragraph","children":[{"text":"Python Frameworks","fontWeight":700,"letterSpacing":-1,"lineHeight":"unset","fontSize":32,"fontFamily":"Poppins, sans-serif"}]},{"type":"paragraph","children":[{"fontSize":16,"lineHeight":"24px","color":"#555","letterSpacing":0,"fontFamily":"Poppins, sans-serif","text":""}]},{"type":"paragraph","children":[{"fontSize":16,"lineHeight":"24px","color":"#555","letterSpacing":0,"fontFamily":"Poppins, sans-serif","text":"We use a host of frameworks, some of our favourites are "}]},{"type":"paragraph","children":[{"fontSize":16,"color":"#555","letterSpacing":0,"fontFamily":"Poppins, sans-serif","text":"💎 ","lineHeight":"40px"},{"type":"link","link":{"value":"https://www.sqlalchemy.org/","target":"_blank","type":"link"},"children":[{"fontSize":16,"letterSpacing":0,"fontFamily":"Poppins, sans-serif","text":"SQLAlchemy","color":"#0091FF","underline":true,"lineHeight":"40px"}]},{"fontSize":16,"color":"#555","letterSpacing":0,"fontFamily":"Poppins, sans-serif","text":" ","lineHeight":"40px"}]},{"type":"paragraph","children":[{"fontSize":16,"color":"#555","letterSpacing":0,"fontFamily":"Poppins, sans-serif","text":"🏃♂️ ","lineHeight":"40px"},{"type":"link","link":{"value":"https://fastapi.tiangolo.com/","target":"_blank","type":"link"},"children":[{"fontSize":16,"letterSpacing":0,"fontFamily":"Poppins, sans-serif","text":"FastAPI","color":"#0091FF","underline":true,"lineHeight":"40px"}]},{"text":"","lineHeight":"40px"}]},{"type":"paragraph","children":[{"fontSize":16,"color":"#555","letterSpacing":0,"fontFamily":"Poppins, sans-serif","text":"👽 ","lineHeight":"40px"},{"type":"link","link":{"value":"https://www.djangoproject.com/","target":"_blank","type":"link"},"children":[{"fontSize":16,"letterSpacing":0,"fontFamily":"Poppins, sans-serif","text":"Django","color":"#0091FF","underline":true,"lineHeight":"40px"}]},{"text":"","lineHeight":"40px"}]},{"type":"paragraph","children":[{"fontSize":16,"color":"#555","letterSpacing":0,"fontFamily":"Poppins, sans-serif","text":"🐼 ","lineHeight":"40px"},{"type":"link","link":{"value":"https://pandas.pydata.org/","target":"_blank","type":"link"},"children":[{"fontSize":16,"letterSpacing":0,"fontFamily":"Poppins, sans-serif","text":"Pandas","color":"#0091FF","underline":true,"lineHeight":"40px"}]},{"fontSize":16,"color":"#555","letterSpacing":0,"fontFamily":"Poppins, sans-serif","text":" or ","lineHeight":"40px"},{"type":"link","link":{"value":"https://pola.rs/","target":"_blank","type":"link"},"children":[{"fontSize":16,"letterSpacing":0,"fontFamily":"Poppins, sans-serif","text":"Polars","color":"#0091FF","underline":true,"lineHeight":"40px"}]},{"text":"","lineHeight":"40px"}]}]}]},"children":[],"id":"Tau9nkPa5hmMEynXcgfUx"}],"params":{"borderRadius":{"all":0,"btl":0,"bbl":0,"btr":0,"bbr":0,"isIndividualCorners":false},"padding":0,"gap":20,"verticalAlignment":"top"}},{"id":"ew96CDUoS4uyrbjofmnaa","name":"column","children":[{"name":"text","params":{"templateId":"headline and paragraph","value":[{"type":"paragraph","children":[{"type":"paragraph","children":[{"text":"Python Dev Tools","fontWeight":700,"letterSpacing":-1,"lineHeight":"unset","fontSize":32,"fontFamily":"Poppins, sans-serif"}]},{"type":"paragraph","children":[{"fontSize":16,"lineHeight":"24px","color":"#555","letterSpacing":0,"fontFamily":"Poppins, sans-serif","text":""}]},{"type":"paragraph","children":[{"fontSize":16,"lineHeight":"24px","color":"#555","letterSpacing":0,"fontFamily":"Poppins, sans-serif","text":"To make sure our code is up to scratch, we use a selection of tools for all the regular sanity checking stuff "}]},{"type":"paragraph","children":[{"fontSize":16,"color":"#555","letterSpacing":0,"fontFamily":"Poppins, sans-serif","text":"","lineHeight":"30px"}]},{"type":"paragraph","children":[{"fontSize":16,"color":"#555","letterSpacing":0,"fontFamily":"Poppins, sans-serif","text":"📝 Formatting - ","lineHeight":"35px"},{"type":"link","link":{"value":"https://black.readthedocs.io/en/stable/","target":"_blank","type":"link"},"children":[{"fontSize":16,"letterSpacing":0,"fontFamily":"Poppins, sans-serif","text":"Black","color":"#0091FF","underline":true,"lineHeight":"35px"}]},{"fontSize":16,"color":"#555","letterSpacing":0,"fontFamily":"Poppins, sans-serif","text":" or ","lineHeight":"35px"},{"type":"link","link":{"value":"https://docs.astral.sh/ruff/","target":"_blank","type":"link"},"children":[{"fontSize":16,"letterSpacing":0,"fontFamily":"Poppins, sans-serif","text":"Ruff","color":"#0091FF","underline":true,"lineHeight":"35px"}]},{"text":"","lineHeight":"35px"}]},{"type":"paragraph","children":[{"fontSize":16,"color":"#555","letterSpacing":0,"fontFamily":"Poppins, sans-serif","text":"🧹 Linting - ","lineHeight":"35px"},{"type":"link","link":{"value":"https://pylint.pycqa.org/en/latest/user_guide/usage/run.html","target":"_blank","type":"link"},"children":[{"fontSize":16,"letterSpacing":0,"fontFamily":"Poppins, sans-serif","text":"Pylint","color":"#0091FF","underline":true,"lineHeight":"35px"}]},{"fontSize":16,"color":"#555","letterSpacing":0,"fontFamily":"Poppins, sans-serif","text":" or ","lineHeight":"35px"},{"type":"link","link":{"value":"https://docs.astral.sh/ruff/","target":"_blank","type":"link"},"children":[{"fontSize":16,"letterSpacing":0,"fontFamily":"Poppins, sans-serif","text":"Ruff","color":"#0091FF","underline":true,"lineHeight":"35px"}]},{"text":"","lineHeight":"35px"}]},{"type":"paragraph","children":[{"fontSize":16,"color":"#555","letterSpacing":0,"fontFamily":"Poppins, sans-serif","text":"🧪 Testing - ","lineHeight":"35px"},{"type":"link","link":{"value":"https://docs.pytest.org/en/8.0.x/","target":"_blank","type":"link"},"children":[{"fontSize":16,"letterSpacing":0,"fontFamily":"Poppins, sans-serif","text":"Pytest","color":"#0091FF","underline":true,"lineHeight":"35px"}]},{"text":"","lineHeight":"35px"}]},{"type":"paragraph","children":[{"fontSize":16,"color":"#555","letterSpacing":0,"fontFamily":"Poppins, sans-serif","text":"🛠️ Type checking - ","lineHeight":"35px"},{"type":"link","link":{"value":"https://mypy.readthedocs.io/en/stable/","target":"_blank","type":"link"},"children":[{"fontSize":16,"letterSpacing":0,"fontFamily":"Poppins, sans-serif","text":"mypy","color":"#0091FF","underline":true,"lineHeight":"35px"}]},{"text":"","lineHeight":"35px"}]},{"type":"paragraph","children":[{"fontSize":16,"color":"#555","letterSpacing":0,"fontFamily":"Poppins, sans-serif","text":"🛡️ Vulnerability testing - ","lineHeight":"35px"},{"type":"link","link":{"value":"https://bandit.readthedocs.io/en/latest/","target":"_blank","type":"link"},"children":[{"fontSize":16,"letterSpacing":0,"fontFamily":"Poppins, sans-serif","text":"Bandit","color":"#0091FF","underline":true,"lineHeight":"35px"}]},{"text":"","lineHeight":"35px"}]},{"type":"paragraph","children":[{"fontSize":16,"color":"#555","letterSpacing":0,"fontFamily":"Poppins, sans-serif","text":"🏃♀️ Test runner - ","lineHeight":"35px"},{"type":"link","link":{"value":"https://tox.wiki/en/4.14.2/","target":"_blank","type":"link"},"children":[{"fontSize":16,"letterSpacing":0,"fontFamily":"Poppins, sans-serif","text":"Tox","color":"#0091FF","underline":true,"lineHeight":"35px"}]},{"text":"","lineHeight":"30px"}]},{"type":"paragraph","children":[{"fontSize":16,"lineHeight":"24px","color":"#555","letterSpacing":0,"fontFamily":"Poppins, sans-serif","text":""}]}]}]},"children":[],"id":"oBxZsPlwpOLNN9JjrUq-5"}],"params":{"borderRadius":{"all":0,"btl":0,"bbl":0,"btr":0,"bbr":0,"isIndividualCorners":false},"padding":0,"gap":20,"verticalAlignment":"top"}},{"id":"TQIWb8iG23eXdy1KiRYwX","name":"column","children":[],"params":{"borderRadius":{"all":0,"btl":0,"bbl":0,"btr":0,"bbr":0,"isIndividualCorners":false},"padding":0,"gap":20,"verticalAlignment":"top"}},{"id":"nHt7csltQsOQI99YA3a4q","name":"column","children":[],"params":{"borderRadius":{"all":0,"btl":0,"bbl":0,"btr":0,"bbr":0,"isIndividualCorners":false},"padding":0,"gap":20,"verticalAlignment":"top"}},{"id":"5B8-5SSL1H3ShcZdlq5aG","name":"column","children":[],"params":{"borderRadius":{"all":0,"btl":0,"bbl":0,"btr":0,"bbr":0,"isIndividualCorners":false},"padding":0,"gap":20,"verticalAlignment":"top"}}],"params":{"layout":[1,1,1],"gap":100,"minHeight":200,"padding":10,"borderRadius":0,"size":"full"}},{"id":"aGY55ECq7DcvQYlwKFDBe","name":"row","children":[{"id":"p42i33PhxADuqRCj8vaRm","name":"column","children":[{"name":"text","params":{"templateId":"headline and paragraph","value":[{"type":"paragraph","children":[{"type":"paragraph","children":[{"text":"Docker","fontWeight":700,"letterSpacing":-1,"lineHeight":"unset","fontSize":32,"fontFamily":"Poppins, sans-serif"}]},{"type":"paragraph","children":[{"text":"","fontSize":16,"lineHeight":"24px","color":"#555","letterSpacing":0,"fontFamily":"Poppins, sans-serif"}]},{"type":"paragraph","children":[{"fontSize":16,"lineHeight":"24px","color":"#555","letterSpacing":0,"text":"If building computers inside computers is magic, then docker is your wand. We use this for building development and production environments.","fontFamily":"Poppins, sans-serif"}]}]}]},"children":[],"id":"MHCNB19xyksWaLh_2fb5R"},{"name":"button","params":{"templateId":"small button","label":"Take a Look<br>","size":"medium","shape":"circular","alignment":"start","states":{"idle":{"colors":{"background":"#1181F8"}},"hover":{"colors":{}}},"link":{"value":"https://www.docker.com/","target":"_blank","type":"link"}},"children":[],"id":"WJR3OXq1fZ9CZGapieQYS"}],"params":{"borderRadius":{"all":0,"btl":0,"bbl":0,"btr":0,"bbr":0,"isIndividualCorners":false},"padding":0,"gap":20,"verticalAlignment":"top"}},{"id":"i3jaOKRLM_fybUNg5YCmA","name":"column","children":[{"name":"text","params":{"templateId":"headline and paragraph","value":[{"type":"paragraph","children":[{"type":"paragraph","children":[{"text":"GitHub Actions","fontWeight":700,"letterSpacing":-1,"lineHeight":"unset","fontSize":32,"fontFamily":"Poppins, sans-serif"}]},{"type":"paragraph","children":[{"text":"","fontSize":16,"lineHeight":"24px","color":"#555","letterSpacing":0,"fontFamily":"Poppins, sans-serif"}]},{"type":"paragraph","children":[{"fontSize":16,"lineHeight":"24px","color":"#555","letterSpacing":0,"text":"Robots would beat everyone in a fight (even sharks) except wizards, and if you agree, you are going to love GitHub actions. You can find out all about this amazing tool by clicking the button. You can also visit our section dedicated to how we use GitHub action right ","fontFamily":"Poppins, sans-serif"},{"type":"link","link":{"value":"2616000514","target":"_blank","type":"page"},"children":[{"fontSize":16,"lineHeight":"24px","letterSpacing":0,"fontFamily":"Poppins, sans-serif","text":"here","color":"#0091FF","underline":true}]},{"fontSize":16,"lineHeight":"24px","color":"#555","letterSpacing":0,"fontFamily":"Poppins, sans-serif","text":". "}]}]}]},"children":[],"id":"GsP1AZfe6RA7oTynDRpvX"},{"name":"button","params":{"templateId":"small button","label":"Take a Look<br>","size":"medium","shape":"circular","alignment":"start","states":{"idle":{"colors":{"background":"#1181F8"}},"hover":{"colors":{}}},"link":{"value":"https://github.com/features/actions","target":"_blank","type":"link"}},"children":[],"id":"_7Y8V5fdySzrgNeoXbv9A"}],"params":{"borderRadius":{"all":0,"btl":0,"bbl":0,"btr":0,"bbr":0,"isIndividualCorners":false},"padding":0,"gap":20,"verticalAlignment":"top"}},{"id":"-JNqjv8l1jVaFz3BH_SRO","name":"column","children":[],"params":{"borderRadius":{"all":0,"btl":0,"bbl":0,"btr":0,"bbr":0,"isIndividualCorners":false},"padding":0,"gap":20,"verticalAlignment":"top"}},{"id":"74lRGzyIqCJ1GBDGqoJkc","name":"column","children":[],"params":{"borderRadius":{"all":0,"btl":0,"bbl":0,"btr":0,"bbr":0,"isIndividualCorners":false},"padding":0,"gap":20,"verticalAlignment":"top"}},{"id":"jubGnc2RId-lp3f7ovsFv","name":"column","children":[],"params":{"borderRadius":{"all":0,"btl":0,"bbl":0,"btr":0,"bbr":0,"isIndividualCorners":false},"padding":0,"gap":20,"verticalAlignment":"top"}},{"id":"CPSRKo-RbX4yA4-is36wZ","name":"column","children":[],"params":{"borderRadius":{"all":0,"btl":0,"bbl":0,"btr":0,"bbr":0,"isIndividualCorners":false},"padding":0,"gap":20,"verticalAlignment":"top"}}],"params":{"layout":[1,1,1],"gap":100,"minHeight":200,"padding":10,"borderRadius":0,"size":"full"}},{"id":"Hs3OZ-wTnt0AbApXlrYpS","name":"row","children":[{"id":"mLLalm5Wj74rSC_nV3Uiv","name":"column","children":[{"name":"divider","params":{"templateId":"solid long","color":{"light":"#000000","dark":"#ffffff"},"alignment":"start","fontSize":24,"fontColor":{"light":"#000000","dark":"#ffffff"},"height":1,"borderStyle":"solid"},"children":[],"id":"oqOdU3JREH49pZc9C-amH"}],"params":{"borderRadius":{"all":0,"btl":0,"bbl":0,"btr":0,"bbr":0,"isIndividualCorners":false},"padding":0,"gap":20,"verticalAlignment":"top"}},{"id":"19v3wtQAzNSwesKsgUx4i","name":"column","children":[],"params":{"borderRadius":{"all":0,"btl":0,"bbl":0,"btr":0,"bbr":0,"isIndividualCorners":false},"padding":0,"gap":20,"verticalAlignment":"top"}},{"id":"0h6jGVY16mCkjWO-hHyuz","name":"column","children":[],"params":{"borderRadius":{"all":0,"btl":0,"bbl":0,"btr":0,"bbr":0,"isIndividualCorners":false},"padding":0,"gap":20,"verticalAlignment":"top"}},{"id":"0HFaFtAyvGmH9FojWPHWN","name":"column","children":[],"params":{"borderRadius":{"all":0,"btl":0,"bbl":0,"btr":0,"bbr":0,"isIndividualCorners":false},"padding":0,"gap":20,"verticalAlignment":"top"}},{"id":"ycJRnFfKkwLFtELVGsZ6T","name":"column","children":[],"params":{"borderRadius":{"all":0,"btl":0,"bbl":0,"btr":0,"bbr":0,"isIndividualCorners":false},"padding":0,"gap":20,"verticalAlignment":"top"}},{"id":"LPi6YX3rAnGI14qIRTFVo","name":"column","children":[],"params":{"borderRadius":{"all":0,"btl":0,"bbl":0,"btr":0,"bbr":0,"isIndividualCorners":false},"padding":0,"gap":20,"verticalAlignment":"top"}}],"params":{"layout":[1],"gap":100,"minHeight":1,"padding":10,"borderRadius":0,"size":"full"}},{"id":"FH_M_cmZ56T28xy-M_Bi3","name":"row","children":[{"id":"alnoEuaXjldRvHxdvEJ7_","name":"column","children":[{"name":"text","params":{"templateId":"simple paragraph","value":[{"type":"paragraph","children":[{"type":"paragraph","children":[{"type":"paragraph","children":[{"text":"Community Tools","fontWeight":700,"letterSpacing":-1,"lineHeight":"unset","fontFamily":"Poppins, sans-serif","fontSize":45}]}]}]}]},"children":[],"id":"ArpLM3WY9UkSPXNQJu1Ud"}],"params":{"borderRadius":{"all":0,"btl":0,"bbl":0,"btr":0,"bbr":0,"isIndividualCorners":false},"padding":0,"gap":20,"verticalAlignment":"top"}},{"id":"5cy2ILfz8LfJHe3m2gc3l","name":"column","children":[],"params":{"borderRadius":{"all":0,"btl":0,"bbl":0,"btr":0,"bbr":0,"isIndividualCorners":false},"padding":0,"gap":20,"verticalAlignment":"top"}},{"id":"Eh4DvVk-LjQhFllmi8HLY","name":"column","children":[],"params":{"borderRadius":{"all":0,"btl":0,"bbl":0,"btr":0,"bbr":0,"isIndividualCorners":false},"padding":0,"gap":20,"verticalAlignment":"top"}},{"id":"MnGcQY75HOWMxKEcZ7Tvq","name":"column","children":[],"params":{"borderRadius":{"all":0,"btl":0,"bbl":0,"btr":0,"bbr":0,"isIndividualCorners":false},"padding":0,"gap":20,"verticalAlignment":"top"}},{"id":"Q-gphSWlNEs89QrLYW636","name":"column","children":[],"params":{"borderRadius":{"all":0,"btl":0,"bbl":0,"btr":0,"bbr":0,"isIndividualCorners":false},"padding":0,"gap":20,"verticalAlignment":"top"}},{"id":"WlN8AUG3oh_DdJcjMGX4c","name":"column","children":[],"params":{"borderRadius":{"all":0,"btl":0,"bbl":0,"btr":0,"bbr":0,"isIndividualCorners":false},"padding":0,"gap":20,"verticalAlignment":"top"}}],"params":{"layout":[1],"gap":100,"minHeight":1,"padding":10,"borderRadius":0,"size":"full"}},{"id":"D_TWy5gnBn898EKv6p9-4","name":"row","children":[{"id":"V60mHHErSSy5uHTxg9xip","name":"column","children":[{"name":"text","params":{"templateId":"headline and paragraph","value":[{"type":"paragraph","children":[{"type":"paragraph","children":[{"text":"NHS-Number","fontWeight":700,"letterSpacing":-1,"lineHeight":"unset","fontSize":32,"fontFamily":"Poppins, sans-serif"}]},{"type":"paragraph","children":[{"text":"","fontSize":16,"lineHeight":"24px","color":"#555","letterSpacing":0,"fontFamily":"Poppins, sans-serif"}]},{"type":"paragraph","children":[{"fontFamily":"Poppins, sans-serif","fontSize":16,"color":{"light":"#555"},"text":"This is a package for validating NHS numbers. It deals with all flavours (NHS, CHI, HSC) and is also capable of generating NHS numbers for testing purposes."}]}]}]},"children":[],"id":"luRrPMz97sViXh2cAdTd7"},{"name":"button","params":{"templateId":"small button","label":"Take a Look<br>","size":"medium","shape":"circular","alignment":"start","states":{"idle":{"colors":{"background":"#1181F8"}},"hover":{"colors":{}}},"link":{"value":"https://nhs-number.uk-fci.tech/","target":"_blank","type":"link"}},"children":[],"id":"TPcKSvT5zW4H3TfpVVjEO"}],"params":{"borderRadius":{"all":0,"btl":0,"bbl":0,"btr":0,"bbr":0,"isIndividualCorners":false},"padding":0,"gap":20,"verticalAlignment":"top"}},{"id":"xXASHX5Hdgo-7eqYJqJ1U","name":"column","children":[{"name":"text","params":{"templateId":"headline and paragraph","value":[{"type":"paragraph","children":[{"type":"paragraph","children":[{"text":"PyXB-X","fontWeight":700,"letterSpacing":-1,"lineHeight":"unset","fontSize":32,"fontFamily":"Poppins, sans-serif"}]},{"type":"paragraph","children":[{"fontSize":16,"lineHeight":"24px","color":"#555","letterSpacing":0,"fontFamily":"Poppins, sans-serif","text":""}]},{"type":"paragraph","children":[{"fontSize":16,"lineHeight":"24px","color":"#555","letterSpacing":0,"fontFamily":"Poppins, sans-serif","text":"PyXB is a pure Python package that generates Python code for classes that correspond to data structures defined by XMLSchema. PyXB-X is a fork where we do very limited updating. Check out the README for a better explination."}]}]}]},"children":[],"id":"SNhtBbob2NiXYPwGaetNP"},{"name":"button","params":{"templateId":"small button","label":"Take a Look<br>","size":"medium","shape":"circular","alignment":"start","states":{"idle":{"colors":{"background":"#1181F8"}},"hover":{"colors":{}}},"link":{"value":"https://github.com/renalreg/PyXB-X?tab=readme-ov-file#pyxb-extended----python-w3c-xml-schema-bindings","target":"_blank","type":"link"}},"children":[],"id":"rgkL1dNhNtmU9JSgjHhKN"}],"params":{"borderRadius":{"all":0,"btl":0,"bbl":0,"btr":0,"bbr":0,"isIndividualCorners":false},"padding":0,"gap":20,"verticalAlignment":"top"}},{"id":"VrJK6vnyPKwRaIPEP4KgQ","name":"column","children":[],"params":{"borderRadius":{"all":0,"btl":0,"bbl":0,"btr":0,"bbr":0,"isIndividualCorners":false},"padding":0,"gap":20,"verticalAlignment":"top"}},{"id":"i62iSabKkLhzZuikxbuuu","name":"column","children":[],"params":{"borderRadius":{"all":0,"btl":0,"bbl":0,"btr":0,"bbr":0,"isIndividualCorners":false},"padding":0,"gap":20,"verticalAlignment":"top"}},{"id":"bFZzKNnztwRCA1FahVgOZ","name":"column","children":[],"params":{"borderRadius":{"all":0,"btl":0,"bbl":0,"btr":0,"bbr":0,"isIndividualCorners":false},"padding":0,"gap":20,"verticalAlignment":"top"}},{"id":"Jfej0cFH72BTW8v42ThU6","name":"column","children":[],"params":{"borderRadius":{"all":0,"btl":0,"bbl":0,"btr":0,"bbr":0,"isIndividualCorners":false},"padding":0,"gap":20,"verticalAlignment":"top"}}],"params":{"layout":[1,1,1],"gap":100,"minHeight":200,"padding":10,"borderRadius":0,"size":"full"}}],"name":"section"}],"id":"30pBDEr2IwtTYTas1VSQo"} |
---|
|