Feeds
Django Weblog: Django 6.x Steering Council Election Results
The Steering Council for the Django 6.x release cycle will be:
- Carlton Gibson
- Emma Delescolle
- Frank Wiles
- Lily Foote
- Tim Schilling
Voting breakdown:
- 400 eligible voters
- 215 votes received (54%)
We had 400 eligible voters, and received 215 votes (54%). See the full voting breakdown on RankedVote.
Congratulations to the new council members! And thank you to all 12 candidates who stood for election, and everyone who took part in the voting.
—
For anyone looking for further opportunities to have their say on the future of Django, consider submitting our 2024 Django Developers survey, closing in 3 days.
Simon Josefsson: Guix Container Images for GitLab CI/CD
I am using GitLab CI/CD pipelines for several upstream projects (libidn, libidn2, gsasl, inetutils, libtasn1, libntlm, …) and a long-time concern for these have been that there is too little testing on GNU Guix. Several attempts have been made, and earlier this year Ludo’ came really close to finish this. My earlier effort to idempotently rebuild Debian recently led me to think about re-bootstrapping Debian. Since Debian is a binary distribution, it re-use earlier binary packages when building new packages. The prospect of re-bootstrapping Debian in a reproducible way by rebuilding all of those packages going back to the beginning of time does not appeal to me. Instead, wouldn’t it be easier to build Debian trixie (or some future release of Debian) from Guix, by creating a small bootstrap sandbox that can start to build Debian packages, and then make sure that the particular Debian release can idempotently rebuild itself in a reproducible way? Then you will eventually end up with a reproducible and re-bootstrapped Debian, which pave the way for a trustworthy release of Trisquel. Fortunately, such an endeavour appears to offer many rabbit holes. Preparing Guix container images for use in GitLab pipelines is one that I jumped into in the last few days, and just came out of.
Let’s go directly to the point of this article: here is a GitLab pipeline job that runs in a native Guix container image that builds libksba after installing the libgpg-error dependency from Guix using the pre-built substitutes.
test-amd64-latest-wget-configure-make-libksba: image: registry.gitlab.com/debdistutils/guix/container:latest before_script: - lndir /gnu/store/*profile/etc/ /etc - rm -f /etc/group - groupadd --system guixbuild - for i in $(seq -w 1 10); do useradd -g guixbuild -G guixbuild -d /var/empty -s $(command -v nologin) -c "Guix build user $i" --system guixbuilder$i; done - export HOME=/ - export LANG=C.UTF-8 - guix-daemon --disable-chroot --build-users-group=guixbuild & - guix archive --authorize < /share/guix/ci.guix.gnu.org.pub - guix archive --authorize < /share/guix/bordeaux.guix.gnu.org.pub - guix describe - guix package -i libgpg-error - GUIX_PROFILE="//.guix-profile" - . "$GUIX_PROFILE/etc/profile" script: - wget https://www.gnupg.org/ftp/gcrypt/libksba/libksba-1.6.7.tar.bz2 - tar xfa libksba-1.6.7.tar.bz2 - cd libksba-1.6.7 - ./configure - make V=1 - make check VERBOSE=t V=1You can put that in a .gitlab-ci.yml and push it to GitLab and you will end up with a nice pipeline job output.
As you may imagine, there are several things that are sub-optimal in the before_script above that ought to be taken care of by the Guix container image, and I hope to be able to remove as much of the ugliness as possible. However that doesn’t change that these images are useful now, and I wanted to announce this work to allow others to start testing them and possibly offer help. I have started to make use of these images in some projects, see for example the libntlm commit for that.
You are welcome to join me in the Guix container images for GitLab CI/CD project! Issues and merge requests are welcome – happy hacking folks!
Simon Josefsson: Guix Container Images for GitLab CI/CD
I am using GitLab CI/CD pipelines for several upstream projects (libidn, libidn2, gsasl, inetutils, libtasn1, libntlm, …) and a long-time concern for these have been that there is too little testing on GNU Guix. Several attempts have been made, and earlier this year Ludo’ came really close to finish this. My earlier effort to idempotently rebuild Debian recently led me to think about re-bootstrapping Debian. Since Debian is a binary distribution, it re-use earlier binary packages when building new packages. The prospect of re-bootstrapping Debian in a reproducible way by rebuilding all of those packages going back to the beginning of time does not appeal to me. Instead, wouldn’t it be easier to build Debian trixie (or some future release of Debian) from Guix, by creating a small bootstrap sandbox that can start to build Debian packages, and then make sure that the particular Debian release can idempotently rebuild itself in a reproducible way? Then you will eventually end up with a reproducible and re-bootstrapped Debian, which pave the way for a trustworthy release of Trisquel. Fortunately, such an endeavour appears to offer many rabbit holes. Preparing Guix container images for use in GitLab pipelines is one that I jumped into in the last few days, and just came out of.
Let’s go directly to the point of this article: here is a GitLab pipeline job that runs in a native Guix container image that builds libksba after installing the libgpg-error dependency from Guix using the pre-built substitutes.
test-amd64-latest-wget-configure-make-libksba: image: registry.gitlab.com/debdistutils/guix/container:latest before_script: - lndir /gnu/store/*profile/etc/ /etc - rm -f /etc/group - groupadd --system guixbuild - for i in $(seq -w 1 10); do useradd -g guixbuild -G guixbuild -d /var/empty -s $(command -v nologin) -c "Guix build user $i" --system guixbuilder$i; done - export HOME=/ - export LANG=C.UTF-8 - guix-daemon --disable-chroot --build-users-group=guixbuild & - guix archive --authorize < /share/guix/ci.guix.gnu.org.pub - guix archive --authorize < /share/guix/bordeaux.guix.gnu.org.pub - guix describe - guix package -i libgpg-error - GUIX_PROFILE="//.guix-profile" - . "$GUIX_PROFILE/etc/profile" script: - wget https://www.gnupg.org/ftp/gcrypt/libksba/libksba-1.6.7.tar.bz2 - tar xfa libksba-1.6.7.tar.bz2 - cd libksba-1.6.7 - ./configure - make V=1 - make check VERBOSE=t V=1You can put that in a .gitlab-ci.yml and push it to GitLab and you will end up with a nice pipeline job output.
As you may imagine, there are several things that are sub-optimal in the before_script above that ought to be taken care of by the Guix container image, and I hope to be able to remove as much of the ugliness as possible. However that doesn’t change that these images are useful now, and I wanted to announce this work to allow others to start testing them and possibly offer help. I have started to make use of these images in some projects, see for example the libntlm commit for that.
You are welcome to join me in the Guix container images for GitLab CI/CD project! Issues and merge requests are welcome – happy hacking folks!
MidCamp - Midwest Drupal Camp: Just 25 days to go until the call for speakers closed for MidCamp 2025
As the holiday season approaches, we’re excited to include you—our future speakers! You may have heard we have a guest speaker this year, so submit your session and be on the lineup with Drupal founder, Dries Buytaert 🤩
Call for SpeakersSince 2014, MidCamp has hosted over 300 amazing sessions, and we’re ready to add your talk to that legacy. We’re seeking presentations for all skill levels—from Drupal beginners to advanced users, as well as end users and business professionals. Check out our session tracks for full details on the types of talks we’re looking for.
Missed the last Session Proposal Workshop? Don't worry, we have another one in January right before the submission deadline!
- January 7, 2025: Last Change Session Proposal Workshop - Crafting an Outstanding Proposal
- Session Proposals Open: November 25, 2024
- Proposal Deadline: January 12, 2025
- Speakers Notified: Week of February 17, 2025
- MidCamp Sessions: May 20-21, 2025
Looking to connect with the Drupal community? Sponsoring MidCamp is the way to do it! With packages starting at $600, there are opportunities to suit any budget. Whether you’re recruiting talent, growing your brand, or simply supporting the Drupal ecosystem, MidCamp sponsorship offers great value.
Act early to maximize your exposure!
Learn more about sponsorship opportunities
Stay in the LoopDon’t miss a beat!
- Join us on MidCamp Slack to chat and get updates.
- Follow us on socials, including Bluesky and Mastodon, for announcements and news.
Keep an eye on our news page and subscribe to our newsletter for updates on the venue, travel options, social events, and speaker announcements.
Ready to submit your session? Let’s make MidCamp 2025 unforgettable!
Maui Release Briefing #7
Today, we bring you a report on the brand-new release of the Maui Project.
CommunityTo follow the Maui Project’s development or to just say hi, you can join us on our Telegram group @mauiproject
We are present on X and Mastodon:
Thanks to the KDE contributors who have helped to translate the Maui Apps and Frameworks!
Downloads & SourcesYou can get the stable release packages [APKs, AppImage, TARs] directly from the KDE downloads server at https://download.kde.org/stable/maui/
All of the Maui repositories have the newly released branches and tags. You can get the sources right from the Maui group: https://invent.kde.org/maui
MauiKit 4 Frameworks & AppsWith the previous version released, MauiKit Frameworks and Maui Apps were ported over to Qt6, however, some regressions were introduced and those bugs have now been fixed with this new revision version.
Currently, there are over 10 frameworks, with two new ones recently introduced. They all, for the most part, have been fully documented, and although, the KDE doxygen agent has some minor issues when publishing some parts, you can find the documentation online at https://api.kde.org/mauikit/ (and if you find missing parts, confusing bits, or overall sections to improve – you can open a ticket at any of the framework repos and it shall be fixed shortly after)
A brief list of changes and fixes introduced to the frameworks are the following:
For MauiKit Controls
- MauiKit is now no longer dependent on MauiKit-Style, so any other QQC2 style can be used with Maui Apps (other styles are not supported).
- MauiKit documentation has been updated with notes on the new attached controls properties – https://api.kde.org/mauikit/mauikit/html/classControls.html
- MauiKit fixes the toast area notifications. The toast notifications can now take multiple contextual actions.
- MauiKit Demo app has been updated to showcase all the new control properties
- New controls: TextField, Popup, DropDownIndicator,
- MauiKit fixes the template delegates and the IconItem control
- MauiKit fixes to the Page autohide toolbars
- Update style and custom controls to use MauiKit Controls’ attached properties for level, status, title, etc.
- Display keyboard shortcut info in the MenuItems
- Update MauiKit Handy properties for isMobile, isTouch, and hasTransientTouchInput and fixes to the lasso selection on touch displays
- Added more resize areas to the BaseWindow type
- Check for system color scheme style changes and update accordingly. This works on other systems besides Plasma or Maui, such as Gnome or Android
- The type AppsView has been renamed to SwipeView, and AppViewLoader to SwipeViewLoader
- Update MauiKit-Style to support MauiKit Controls attached properties and respect the flat properties in buttons
- Fixes to the MauiKit bug in the GridBrowser scrollbars policy
- Fixes to the action buttons layout in Dialog and PopupPage controls
- Refresh the icon when a system icon-theme change is detected – a workaround for Plasma is used and for other systems the default Qt API
For the MauiKit Frameworks
- FileBrowsing fixes bugs with the Tagging components
- Fixes to the models using dates. Due to a bug in Qt getting a file date time is too slow unless the UTC timezone is specified
- Update FileBrowsing controls to use the latest Mauikit changes
- Added a new control: FavButton, to mark files as favorites using the Tagging component quickly
- Update and fixes to the regressions in the other frameworks
- ImageTools fixes the OCR page
- TextEditor fixes the line numbers implementation.
All of the frameworks are now at version 4.0.1
All of the apps have been reviewed for the regressions previously introduced in the porting to Qt6; those issues have been solved and a few new features have been added, such as:
- Station, now allows opening selected links externally
- Index fixes to the file previewer and support for quickly tagging files from the previewer
- Vvave fixes to the minimode window closing
- Update the apps to remove usage of the Qt5Compat effects module
- Fix issues in Fiery, Strike, and Agenda
- Fix the issue of selecting multiple items in the apps not working
- Clip fixes to the video thumbnail previews and the opening file dialog
- Implement the floating viewer for Pix, Vvave, Shelf, and Clip for consistency
- Correctly open the Station terminal at the current working directory when invoked externally
- Among many few other details
** Index, Vvave, Pix, Nota, Buho, Station, Shelf, Clip, and Communicator versions have been bumped to 4.0.1
*** Strike and Fiery browser versions have been bumped to 2.0.1
**** Agenda and Arca versions have been bumped to 1.0.1
And as for Bonsai, Era, and other applications still under development, there is still not a ported version to Qt6 as of now
Maui Shell
Although Maui Shell has been ported over to Qt6 and is working with the latest MauiKit4, a lot of pending issues are still present and being worked on. The next release will be dedicated fully on Maui Shell and all of its subprojects, such as Maui Settings, Maui Core, CaskServer, etc.
That’s it for now. Until the next blog post, that will be a bit closer to the 4.0.1 stable release.
Release scheduleThe post Maui Release Briefing #7 appeared first on MauiKit — #UIFramework.
Freelock Blog: Make integrations with other services more resilient using a Queue
One downside of automating things is dealing with outages. Sometimes services go down, and are not available for some period of time. When this happens, how does it impact your automation?
If you don't design your automation carefully, you might lose the data entirely. Or get spammed by hundreds of submissions when it comes back up. Handling this correctly does end up needing some understanding of how the automation works, as well as any quirks of the remote system.
Real Python: Get Started With Django User Management
Django user management allows you to integrate user authentication and management into your web applications. By using Django, you can leverage the framework’s built-in authentication system to manage user registration, login, and logout. With just a few additional templates, you can enable users to reset and change their passwords independently.
This tutorial guides you through setting up a basic user management system with Django that you can extend later. You’ll learn how to create a dashboard, implement user registration, and connect authentication URLs, as well as customize templates for login, logout, and password management.
By the end of this tutorial, you’ll understand that:
- Django’s user authentication is a built-in authentication system that comes with pre-configured URLs and views.
- Authentication verifies user identity, while authorization determines user permissions within Django.
- Registering as a user in Django requires setting up views, templates, and URLs.
- Creating a login system in Django involves built-in authentication views and creating custom templates.
- Resetting passwords in Django involves configuring email backends for sending reset links.
This tutorial focuses on user authentication and user management. If you want to learn more about permissions and groups, then you can check out the tutorial about managing users in Django’s admin site.
Get Your Code: Click here to download the free sample code you’ll use to set up a basic user management system with Django .
Start With the BasicsFor bigger projects, you may consider creating a custom user model. In this tutorial, you’ll be using Django’s built-in user model. This is a great place to start to familiarize yourself with user authentication in general.
In this section of the tutorial, you’ll first create a small Django project with a users app. Then, you’ll make some adjustments to Django’s password validator to make your development more convenient. Finally, you’ll create an admin user to verify your setup.
Set Up the Django ProjectIt’s a good idea to use a virtual environment when working with Python projects. That way, you can always be sure that the python command points to the right version of Python and that the modules required by your project have the correct versions. To read more about creating virtual environments, check out Python Virtual Environments: A Primer.
Select your operating system below and use your platform-specific command to set up a virtual environment:
Windows PowerShell PS> python -m venv venv\ PS> .\venv\Scripts\activate (venv) PS> Copied! Shell $ python -m venv venv/ $ source venv/bin/activate (venv) $ Copied!With the above commands, you create and activate a virtual environment named venv by using Python’s built-in venv module. The parenthesized (venv) in front of the prompt indicate that you’ve successfully activated the virtual environment.
Now that the environment is ready, you can install Django, start a new project, and create an application to store all your user management code:
Shell (venv) $ python -m pip install Django (venv) $ django-admin startproject user_auth_intro (venv) $ cd user_auth_intro (venv) $ python manage.py startapp users Copied!In this example, you name your project user_auth_intro and your application users. To include the users app in your Django project, you need to add a reference to the app’s configuration class at the beginning of the INSTALLED_APPS list in settings.py:
Python user_auth_intro/settings.py 1# ... 2 3INSTALLED_APPS = [ 4 "users.apps.UsersConfig", 5 "django.contrib.admin", 6 "django.contrib.auth", 7 "django.contrib.contenttypes", 8 "django.contrib.sessions", 9 "django.contrib.messages", 10 "django.contrib.staticfiles", 11] 12 13# ... Copied!By adding users.apps.UsersConfig, you let Django know that the users app you just created exists. If you have a look at the INSTALLED_APPS list, then you’ll spot Django’s default authentication system on line 6. In django.contrib.auth, Django stores the core of its authentication framework and the default models that you’ll build on later.
Next, apply the migrations and run the Django development server:
Shell (venv) $ python manage.py migrate (venv) $ python manage.py runserver Copied!These commands create all default models in the database and start the Django development server.
Deactivate the Password ValidatorBy default, Django enforces strong passwords to make user accounts less prone to attacks. Since you’ll need to change passwords often throughout this tutorial, figuring out a strong password each time would be inconvenient.
Read the full article at https://realpython.com/django-user-management/ »[ Improve Your Python With 🐍 Python Tricks 💌 – Get a short & sweet Python Trick delivered to your inbox every couple of days. >> Click here to learn more and see examples ]
Web Wash: Build Layouts with Bootstrap and Layout Builder in Drupal
The above video will explore how to effectively utilize Bootstrap and Layout Builder to create powerful, responsive layouts in Drupal. Whether you’re a novice or looking to enhance your skills, this guide will walk you through the necessary steps to set up your Bootstrap theme and leverage the full potential of Layout Builder.
Layout Builder in Drupal lets users create custom layouts visually. Combined with Bootstrap’s grid system and components, it makes building responsive, attractive designs easy.
Bootstrap Layout Builder module lets you quickly access Bootstrap classes via Layout Builder to customize containers, spacing, and animations.
Real Python: Quiz: How to Remove Items From Lists in Python
In this quiz, you’ll test your understanding of How to Remove Items From Lists in Python.
By working through this quiz, you’ll revisit the different approaches to removing items from a list in Python, including .pop(), .remove(), the del statement, and more.
[ Improve Your Python With 🐍 Python Tricks 💌 – Get a short & sweet Python Trick delivered to your inbox every couple of days. >> Click here to learn more and see examples ]
LostCarPark Drupal Blog: Drupal Advent Calendar day 18 - Content Publishing Workflows
Welcome back for day 18, as we enter the last week to the big day - I mean the arrival of Father Christmas, not the launch of Drupal CMS!
Today we are looking at publishing workflows in Drupal CMS.
Something that many content management systems have offered out-of-the-box is the ability to specify a date and time when a piece of content will be published. This has also been available in Drupal for a very long time, but has always required installation of extra modules - until now.
With Drupal CMS, every content type created by the base install, and any recipes within Drupal CMS, automatically…
TagsEuroPython: EuroPython 2025 is Staying in Prague 🎉 - Join as a Contributor!
After an amazing year in Prague, we’re thrilled to announce that EuroPython 2025 is heading back to this beautiful city! 🎉 Mark your calendars for another epic week of learning, collaboration, and community vibes.
- 🗓️ Monday & Tuesday (14th-15th): Tutorials & Workshops
- 🎤 Wednesday to Friday (16th-18th): Main Conference Talks
- 👨💻 Saturday & Sunday (19th-20th): Community Sprints
We’d love to hear your thoughts! We’ve put together a short form with just three quick questions—it’ll take less than a few minutes to complete. Your input will help us make EuroPython 2025 an amazing experience for everyone!
👉 Form: https://forms.gle/Ne2FFd26MVqHKNa16
🤝 Join Us as a Contributor!EuroPython thrives on the energy of passionate volunteers. 💪 Whether you’re experienced or joining for the first time, we’d love to have you on board!
🗓️ Deadline to Apply: Sunday, 22nd
📝 Fill out the form: https://forms.gle/kY7jqSJTjEhFccWJ6
EuroPython is one of Europe’s largest Python community conferences, and we couldn’t do it without our amazing sponsors! 🤝 Interested? Reach out to us at sponsoring@europython.eu.
📣 Stay Updated!🔗 Visit our website: https://ep2025.europython.eu/
📬 Subscribe to our newsletter for the latest updates
We can’t wait to see you in Prague next year! 🇨🇿✨
Mia, on behalf of the EuroPython Organizing Team
Tag1 Consulting: Tag1 D7ES Adds Full Support for CKEditor 5 in Drupal 7
CKEditor 4.x reached end-of-life (EOL) in June 2023, creating a significant challenge for Drupal 7 users: their trusted WYSIWYG editor now has known vulnerabilities that are no longer patched in the open-source community version. Upgrading to v5 is essential for maintaining security, but the only option has been paid support from CKSource. All Tag1's Drupal 7 Extended Support Service plans now include free CKEditor v5 support, providing significantly more value at a much lower cost! Planning to run D7 beyond its January 2025 end-of-life? Sign up for Tag1 D7ES to keep your site secure with ongoing core and module updates, including critical compatibility updates for CKEditor and jQuery. Learn more at D7ES.Tag1.com. Do your sites run on Pantheon.io? Tag1 is the exclusive provider of D7ES for Pantheon.io. All Pantheon users get the self-service version of Tag1 D7ES at no additional cost. Pantheon users looking to upgrade to the premium or enterprise Tag1 D7ES service can do so online at https://d7es.tag1.com/plans. ## Enter CKEditor 5 for Drupal 7 Through the Tag1 D7ES Service, which enables Drupal 7 sites to continue operating securely after D7 goes end-of-life in January 2025, Tag1 developed a new module that brings CKEditor 5 support to Drupal...
michaelemeyers Wed, 12/18/2024 - 10:26The Drop Times: Breaking Barriers, Busting Bubbles, and Building the Future of Drupal in Singapore
Wingware: Wing Python IDE Version 10.0.8 - December 18, 2024
This release fixes AI Chat to continue to work after OpenAI drops v1 API support this month, uses the configured AI model also for AI Chat, fixes the debugger to work when two or more versions of Python are loaded into a process, improves OpenAI Assistant, File, and Vector Store resource management, reduces debugger stack space usage, fixes using ${WING:PROJECT_DIR} and other environment variable references in a Python File OS Commands, and fixes several other minor usage issues.
See the change log for details.
Important Note: Users of the AI Chat beta in Wing version 10.0.7.1 and earlier may find many untitled Vector Stores in their OpenAI account, which were left as a side effect of Wing's earlier use of the beta Assistants API. OpenAI may start charging for these or other resources in your OpenAI account at the end of 2024. These resources can be removed by invoking internal-ai-delete-resources(untitled_vector_stores=True) from the Edit > Command by Name menu. This runs in the background, may take several minutes to finish, and will be terminated if Wing is quit before it completes. Use caution if you have other applications that call OpenAI's Assistants API, as this cannot distinguish the Vector Stores created by Wing and other applications. Once resources have been deleted, you will need to restart all instances of Wing before AI Chat will work again. Afterward, you should not see any further accumulation of Vector Stores or other resources in your OpenAI account, other than those that are actively in use. However, please note that Wing's AI Chat is based on API that is still being flagged as 'beta' by OpenAI.Download Wing 10 Now: Wing Pro | Wing Personal | Wing 101 | Compare Products
What's New in Wing 10
AI Assisted Development
Wing Pro 10 takes advantage of recent advances in the capabilities of generative AI to provide powerful AI assisted development, including AI code suggestion, AI driven code refactoring, description-driven development, and AI chat. You can ask Wing to use AI to (1) implement missing code at the current input position, (2) refactor, enhance, or extend existing code by describing the changes that you want to make, (3) write new code from a description of its functionality and design, or (4) chat in order to work through understanding and making changes to code.
Examples of requests you can make include:
"Add a docstring to this method" "Create unit tests for class SearchEngine" "Add a phone number field to the Person class" "Clean up this code" "Convert this into a Python generator" "Create an RPC server that exposes all the public methods in class BuildingManager" "Change this method to wait asynchronously for data and return the result with a callback" "Rewrite this threaded code to instead run asynchronously"Yes, really!
Your role changes to one of directing an intelligent assistant capable of completing a wide range of programming tasks in relatively short periods of time. Instead of typing out code by hand every step of the way, you are essentially directing someone else to work through the details of manageable steps in the software development process.
Support for Python 3.12, 3.13, and ARM64 LinuxWing 10 adds support for Python 3.12 and 3.13, including (1) faster debugging with PEP 669 low impact monitoring API, (2) PEP 695 parameterized classes, functions and methods, (3) PEP 695 type statements, and (4) PEP 701 style f-strings.
Wing 10 also adds support for running Wing on ARM64 Linux systems.
Poetry Package ManagementWing Pro 10 adds support for Poetry package management in the New Project dialog and the Packages tool in the Tools menu. Poetry is an easy-to-use cross-platform dependency and package manager for Python, similar to pipenv.
Ruff Code Warnings & ReformattingWing Pro 10 adds support for Ruff as an external code checker in the Code Warnings tool, accessed from the Tools menu. Ruff can also be used as a code reformatter in the Source > Reformatting menu group. Ruff is an incredibly fast Python code checker that can replace or supplement flake8, pylint, pep8, and mypy.
Try Wing 10 Now!
Wing 10 is a ground-breaking new release in Wingware's Python IDE product line. Find out how Wing 10 can turbocharge your Python development by trying it today.
Downloads: Wing Pro | Wing Personal | Wing 101 | Compare Products
See Upgrading for details on upgrading from Wing 9 and earlier, and Migrating from Older Versions for a list of compatibility notes.
Ruqola 2.4.0
Ruqola 2.4.0 is a feature and bugfix release of the Rocket.chat messenger app.
Some of the new features in this release of Ruqola include:
- Allow to clean up room history when room was not opened for a long time.
- Add restore button in administrator server settings dialog.
- Improve changing password (show validation info).
- Improve register new account (Add reason support).
- Implement mute/unmute user.
- Add color to the text in the account tab.
- Allow to show private installed applications.
Some bug fixing:
- Fix editing message.
- Show permissions in Rocket.Chat Marketplace.
- Fix reconnect server.
- Fix single application on Windows/MacOs
- Fix select created room/discussion/teams
- Fix filter discussion in administrator mode
- Fix message video support
- Fix highlight text in quoted message
- Fix open discussion channel
- Allow to show application market settings
URL: https://download.kde.org/stable/ruqola/
Source: ruqola-2.4.0.tar.xz
SHA256: f532e421ae731dfc2e88b78ab61de01e0e367a31a4fe34497664a66fc737225c
Signed by: E0A3EB202F8E57528E13E72FD7574483BB57B18D Jonathan Riddell jr@jriddell.org
https://jriddell.org/jriddell.pgp
Michael Foord: New Course: Object Oriented Programming Theory with Python
A practical two day course on the object oriented features of Python. Perfect for programmers with some experience of Python looking to use objects and classes and to understand them. An excellent course for data scientists, devops engineers and those self taught with Python looking to move beyond scripting into programming.
Course ContentsFundamentals: Classes and methods
- Computer architecture and programming languages
- Python as a high-level, object-oriented language
- Objects as abstractions, for thinking
- The class statement
- The explicit self
- The initialiser method __init__
- Bound methods
- Attributes and the built-in attribute access functions
- References and assignment (how Python works)
- Mutable objects (and call by object)
- Object copying
Object Oriented Features
- Class attributes
- Class methods
- Properties
- Private attributes
- Single inheritance
- Inheritance to extend and modify the parent
- The use of super
- Cooperative multiple inheritance
- Mixin Classes
- Attribute lookup and the method resolution order
- The type system: isinstance and issubclass
Inside Python Objects
- The instance dictionary
- Slots
- Class dictionaries
- The descriptor protocol
Python Protocols
- Magic methods and Python protocols
- Operator overloading
- The string representation protocol
- The container protocols
- Implementing custom containers
- Inheriting from collections.abc.MutableSequence
Alternative Approaches
- namedtuples
- dataclasses
- type as a class factory
Object oriented theory:
- History of Object Oriented Programming
- The pillars of OOP
- Abstraction
- Inheritance
- Encapsulation
- Polymorphism
- Object oriented design principles
- Design patterns
- The Liskov Substitution Principle
- Composition versus inheritance
Optional advanced section (third day):
-
Advanced OOP Concepts
- Interfaces and API design
- Abstract base classes and protocols
- Type hints and static typing with mypy
- Class decorators
- Decoration via inheritance with __init_sublass__
- Metaclasses
- Context managers and the with statement
- Weak references and destructors
- The descriptor protocol
-
OOP Design Principles
- SOLID principles
- Law of Demeter
- Liskov Substitution Principle
- Composition vs inheritance
- Domain Driven Design
- Test Driven Development
- Stop writing classes
- The hexagon pattern (microservices)
- The C4 Model for system architecture
Michael Foord: New Course: Secure Python Web Application Development
This two day course covers Full Stack Security with the Defence in Depth approach. It covers important security principles, and mitigating specific vulnerabilities including The OWASP Top Ten, but is focused on secure Python web application development.
Course ContentsThis is a practical and hands on, two day, course. Learn how to use the security tools that come in the Python standard library. Modules covered include:
- hashlib
- hmac
- secrets
- random
- socket
- ssl
Web application frameworks:
- Security features in web application frameworks for API servers and web applications
- How to secure data in Django, Flask and other popular web application frameworks
- Secure deployment practises with containers and application servers (WSGI or ASGI)
Third party libraries for cryptography and secure network access:
- authlib
- cryptography
- httpx and requests
- websocket
- jwt
- OpenZiti for application level zero trust architecture
- certifi for TLS certification verification
Tooling for secure Python development and as part of your CI pipelines:
- uv/pipenv
- pip-audit
- bandit
- ruff
- mypy
- dependabot/renovate
- Security testing
Network security with TLS:
- How, why and when to use TLS
- How TLS works
- mTLS for enhanced security
- Generating self-signed certificates for local development, with the cryptography library
Michael Foord has been a Python application developer for over twenty years, is a Python core developer and the creator of unittest.mock in the Python standard library, and is the author of The Absolute Minimum Every Python Web Application Developer Must Know About Security.
Topics Covered: Core Python Security Fundamentals- Security principles and defence in depth strategies with Python frameworks
- Implementing OWASP Top 10 protections in Django, Flask and FastAPI applications
- Security principles and defence in depth strategies
- Principles from The OWASP Web Security Testing Guide
- Threat modelling and the security requirements document
- The principles of least privilege and deny by default
- Zero trust architecture fundamentals
- Building zero trust architecture with OpenZiti’s Python SDK
- Hashing, encryption, and digital signatures
- Symmetric encryption and public key encryption
- Secure password storage and management
- Using Python’s hashlib and hmac modules for secure hashing
- Using Python’s cryptography libraries correctly
- Data encryption at rest and in transit
- Data encryption at rest using Django’s encrypted model fields and SQLAlchemy StringEncryptedType
- Secure session management
- OAuth 2.0 and JWT for authentication
- Oauth2 with the Python library authlib
- JWT handling with PyJWT and managing token lifecycles
- Role-based access control (RBAC), plus alternatives
- Multi-factor authentication
- Managing access tokens and permissions
- Proven security with modern cryptography algorithms
- Protection against SQL injection
- Input validation and sanitisation
- Using secrets vs random for cryptographic operations
- Sanitizing logs in Python applications
- Django template escaping and Flask/Jinja2 for XSS prevention
- Preventing timing attacks and token prediction attacks
- Cryptographically secure randomness
- Cross-site scripting (XSS) prevention
- Cross-site request forgery (CSRF) protection
- Secure file handling and upload validation
- Preventing TLS downgrade attacks
- Networking fundamentals
- TLS/SSL implementation and certificate management
- Secure API design and implementation
- WebSocket security
- Network architecture and segmentation
- Firewalls, routers, network interfaces
- Protocols, HTTP & TLS, with the Python standard library
- Application deployment
- Software Defined Networking
- Container security best practices
- Secure deployment patterns
- Network interfaces and routing
- Building DMZ architectures for Python web applications
- Virtual private networks (VPN)
- Static analysis with bandit and ruff
- Dependency scanning using pip-audit
- Automated security testing integration
- Container scanning and runtime protection
- Code review practices for security
- Live security alerts
- Statutory duties around security
- Monitoring Python applications for security issues
- Security patch management for Python applications
- Updating and patching strategies
The course includes practical exercises throughout, with participants implementing secure coding patterns, identifying vulnerabilities in sample code, and building secure components.
FSF Blogs: Fresh off the digital Gutenberg: The fall 2024 Bulletin is now online
Fresh off the digital Gutenberg: The fall 2024 Bulletin is now online
Dirk Eddelbuettel: BH 1.87.0-1 on CRAN: New Upstream
Boost is a very large and comprehensive set of (peer-reviewed) libraries for the C++ programming language, containing well over one hundred individual libraries. The BH package provides a sizeable subset of header-only libraries for (easier, no linking required) use by R. It is fairly widely used: the (partial) CRAN mirror logs (aggregated from the cloud mirrors) show over 38.5 million package downloads.
Version 1.87.0 of Boost was released last week following the regular Boost release schedule of April, August and December releases. As before, we packaged it almost immediately and started testing following our annual update cycle which strives to balance being close enough to upstream and not stressing CRAN and the user base too much. The reverse depends check revealed six packages requiring changes or adjustments. We opened issue #103 to coordinate the issue (just as we did in previous years). Our sincere thanks to Matt Fidler who fixed two packages pretty much immediately.
As I had not heard back from the other maintainers since filing the issue, I uploaded the package to CRAN suggesting that the coming winter break may be a good opportunity for the four other packages to catch up. CRAN concurred, and 1.87.0-1 is now available there.
There are no other changes apart from cosmetics in the DESCRIPTION file. For once, we did not add any new Boost libraries. The short NEWS entry follows.
Changes in version 1.87.0-1 (2024-12-17)Upgrade to Boost 1.87.0, patched as usual to comment-out diagnostic suppression messages per the request of CRAN
Switched to Authors@R
Via my CRANberries, there is a diffstat report relative to the previous release. Comments and suggestions about BH are welcome via the issue tracker at the GitHub repo.
This post by Dirk Eddelbuettel originated on his Thinking inside the box blog. If you like this or other open-source work I do, you can now sponsor me at GitHub.