Feeds

Bits from Debian: New Debian Developers and Maintainers (July and August 2024)

Planet Debian - Mon, 2024-09-30 10:30

The following contributors got their Debian Developer accounts in the last two months:

  • Carlos Henrique Lima Melara (charles)
  • Joenio Marques da Costa (joenio)
  • Blair Noctis (ncts)

The following contributors were added as Debian Maintainers in the last two months:

  • Taihsiang Ho

Congratulations!

Categories: FLOSS Project Planets

FSF Events: Free Software Directory meeting on IRC: Friday, October 4, starting at 12:00 EDT (16:00 UTC)

GNU Planet! - Mon, 2024-09-30 10:30
Join the FSF and friends on Friday, October 4 from 12:00 to 15:00 EDT (16:00 to 19:00 UTC) to help improve the Free Software Directory.
Categories: FLOSS Project Planets

Real Python: Python 3.13: Cool New Features for You to Try

Planet Python - Mon, 2024-09-30 10:00

Python 3.13 will be published on October 1, 2024. This new version is a major step forward for the language, although several of the biggest changes are happening under the hood and won’t be immediately visible to you.

In a sense, Python 3.13 is laying the groundwork for some future improvements, especially to the language’s performance. As you read on, you’ll learn more about the background for this and dive into some new features that are fully available now.

In this tutorial, you’ll learn about some of the improvements in the new version, including:

  • Improvements made to the interactive interpreter (REPL)
  • Clearer error messages that can help you fix common mistakes
  • Advancements done in removing the global interpreter lock (GIL) and making Python free-threaded
  • The implementation of an experimental Just-In-Time (JIT) compiler
  • A host of minor upgrades to Python’s static type system

If you want to try any of the examples in this tutorial, then you’ll need to use Python 3.13. The tutorials Python 3 Installation & Setup Guide and How Can You Install a Pre-Release Version of Python? walk you through several options for adding a new version of Python to your system.

In addition to learning more about the new features coming to the language, you’ll also get some advice about what to consider before upgrading to the new version. Click the link below to download code examples demonstrating the new capabilities of Python 3.13:

Get Your Code: Click here to download the free sample code that shows you how to use the new features in Python 3.13.

Take the Quiz: Test your knowledge with our interactive “Python 3.13: Cool New Features for You to Try” quiz. You’ll receive a score upon completion to help you track your learning progress:

Interactive Quiz

Python 3.13: Cool New Features for You to Try

In this quiz, you'll test your understanding of the new features introduced in Python 3.13. By working through this quiz, you'll review the key updates and improvements in this version of Python.

An Improved Interactive Interpreter (REPL)

If you run Python without specifying any script or code, you’ll find yourself inside Python’s interactive interpreter. This interpreter is informally called the REPL because it’s based on a read-evaluate-print loop. The REPL reads your input, evaluates it, and prints the result before looping back and doing the same thing again.

The Python REPL has been around for decades, and it supports an explorative workflow that makes Python a beginner-friendly language. Unfortunately, the interpreter has been missing several features you may have come to expect, including multiline editing and efficient pasting of code.

Note: Experienced Python developers often install a third-party interactive interpreter instead of relying on the built-in REPL. You can learn more about the alternatives in these tutorials:

You can also read more about alternative REPLs in the guide to the standard REPL.

Begin by starting the REPL. You can do this by typing python in your terminal. Depending on your setup, you may have to write py, python3, or even python3.13 instead. One way to recognize that you’re using the new interpreter shipping with Python 3.13 is that the prompt consisting of three chevrons (>>>) is subtly colored:

One improvement is that you can now use REPL-specific commands without calling them with parentheses as if they are Python functions. Here are some of the commands and keyboard shortcuts you can use:

  • exit or quit: Exit the interpreter
  • clear: Clear the screen
  • help or F1: Access the help system
  • F2: Open the history browser
  • F3: Enter paste mode

You can learn more about these options in Python 3.13 Preview: A Modern REPL.

Recalling code you’ve written earlier has been cumbersome in the REPL before Python 3.13, especially if you’re working with a block of code spanning several lines. Traditionally, you’ve had to bring back each line one by one by repeatedly pressing Up. Now in 3.13, you can bring back the whole block of code with a single Up keystroke.

To try this for yourself, enter the following code in your REPL:

Python >>> numbers = range(3, 13) >>> [ ... (number - 3)**3 for number in numbers ... if number % 2 == 1 ... ] [0, 8, 64, 216, 512] Copied!

You’re creating a somewhat complex list comprehension that calculates an offset cube of a range of numbers, but only if the numbers are odd. The important part is that for readability, you split the list comprehension over several lines. Now try hitting that Up key! The interpreter recalls all four lines at once, and you can continue to use your arrow keys to move around inside of the expression.

You can make changes to your code and run it again. To execute the updated code, you need to move your cursor to the end of the last line in the code block. If you press Enter inside the expression, you’ll create a new empty line instead:

The ability to recall and edit multiline statements is a huge time-saver and will make you more efficient when working with the REPL.

Another convenience coming in Python 3.13 is proper support for pasting code. In Python 3.12 and earlier, you’d need to make sure that your code doesn’t contain any blank lines before you could copy and paste it. In the new version, pasted code is treated as a unit and executes just as it would inside a script.

Read the full article at https://realpython.com/python313-new-features/ »

[ 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 ]

Categories: FLOSS Project Planets

PyCharm: What’s the Big Deal About Endpoints for Python Web Development?

Planet Python - Mon, 2024-09-30 09:38

Python has almost 30 years of history doing Python web development. Can you believe it? But 3-tier web projects have gotten really complicated and stressful. You’re busy, everything is all over the place – it’s hard!

But PyCharm is here to help: bring your work together with the Endpoints tool window. I just made a video explainer:

Try the Endpoints tool window!

Here are 3 things from the video that I really like about endpoints. Plus a bonus point at the end.

First…where is everything?

Python web projects can get really big, really fast. If you’re like me, it can be overwhelming – and exhausting. I really need a “helper brain” – one that deeply understands each web framework – to stitch everything together.

PyCharm has long provided icons to navigate from a view to a template, and vice versa. Endpoints adds icons to jump from a view to the route definition, to the parent context, and generate a request to this API.

I like to use my keyboard instead of the mouse. Good news – endpoints is wired into searchable actions.

Want a birds-eye view of all your endpoints? The Endpoints tool window shows all your APIs, with filtering by subapp, type, and framework.

It’s more than a list. Each entry lets you jump to the endpoint and perform operations.

These operations have framework-specific smarts, such as knowing the “parent context” for Django vs. Flask vs. FastAPI.

I like having this tool window when I’m thinking about the whole application. But I like even more how endpoints brings these operations into the editor, to my cursor, helping me focus.

Bring IDE smarts, into APIs

Our IDE has deep insight to connect the dots in Python development. What if we applied that to Python web frameworks?

I can’t remember all my API names. Endpoints gives me autocomplete in the HTTP client and even in JavaScript fetch.

Thanks to endpoints, these routes become symbols. I’m a symbol-first coder, using autocomplete, warnings, and navigation to the max. Now I can apply that with the web framework syntax for APIs.

Discover more powerful web development features Stay in one tool

I’ve always liked the “I” in IDE: integrating my important workflows into a single, consistent experience. Web development can mean bouncing around between lots of windows. What if we could bring that workflow into PyCharm?

We already brought best-in-class frontend development from WebStorm and database development from DataGrip.

Using our HTTP Client, you have a productive, mature workflow for issuing HTTP requests. No need to go to the browser or purchase another tool. With endpoints, HTTP Client gets easier and smarter. For example, issue an HTTP request, directly from the API listing.

As shown above, writing these HTTP requests is easier thanks to autocomplete, as endpoints knows your web framework and its route definitions.

You can also browse the OpenAPI documentation of your endpoint without going to a browser.

The “I” in IDE means it is one team that is bringing these features across web frameworks. When I learn a way of working once, I can use it when I shift to a project with another supported web framework. Same features, same UI.

Innovation in Python web development

Python web development needs fresh new ideas and with it, new thinking in tooling. Endpoints says: “You are going to use multiple frameworks on lots of big projects. Let’s step back, focus on the problem, re-imagine the workflow, and throw a bunch of powerful IDE machinery at it.”

Just this one tool window has so much value in it: a listing of your API, with info about HTTP method, and right-click available for each. Then, tabs for the common operations, keeping you in the IDE and in the flow.

So that’s endpoints, a vision from PyCharm to make API development joyful and productive. Give it a try and let us know what you think.

Try the Endpoints tool window!
Categories: FLOSS Project Planets

Russell Coker: Links September 2024

Planet Debian - Mon, 2024-09-30 09:07

CNA Insider has an insightful documentary series about Chinese illegal immigrants to the US [1]. They should migrate to Australia, easier to get in and a better place to live.

Linus tech tips has an informative video about using Windows on Snapdragon ARM64 laptops. [2]. Maybe I should get one for running Linux. They are quite expensive on ebay now which is presumably a good sign about their quality.

A web site for comparing monospace fonts so you can find the one that best suits yuor coding [3]. Roboto works well for me.

Noema has an interesting article about nationhood comparing the attitudes towards European colonisation in Africa and Russian colonisation in Ukraine [4].

Insightful lecture by Grace Hopper (then Captain) about the future of computers [5]. The second part is linked from the first part. Published by the NSA.

Tony Hoare gave an insightful lecture titled “The Billion Dollar Mistake” about his work on designing the Algol language in 1965 [6]. The lecture was recorded in about 2005. But it still has a lot of relevance to computer science.

Jascha Sohl-Dickstein wrote an interesting blog post about Goodhart’s law, Machine Learning models, and how to try and mitigate problems in society [7].

Cory Doctorow wrote an insightful article on the Marshmallow test and long term thinking [8]. The rich fail this test badly.

Insightful interview with Justice Breyer about interpreting the US constitution and the problems with “textualism” and “originalism” [9].

Cory Doctorow wrote an informative article about Google’s practices of deleting Gmail accounts for no apparent reason and denying people access to their data [10]. We need more laws like the Digital Markets Act in the EU and we need them to apply to eBay/PayPal and AWS/Amazon.

Related posts:

  1. Links September 2020 MD5 cracker, find plain text that matches MD5 hash [1]....
  2. Links August 2024 Bruce Schneier and Kim Córdova wrote an insightful article about...
  3. Links March 2024 Bruce Schneier wrote an interesting blog post about his workshop...
Categories: FLOSS Project Planets

CodeLift: From budget-friendly to full redesign: 6 migration paths for Drupal 7 end-of-life

Planet Drupal - Mon, 2024-09-30 06:30
Discover 6 options to handle Drupal 7's end-of-life in 2025. From staying on Drupal 7 short-term to upgrading to Drupal 11 or migrating to other platforms. Find the solution that fits your business, budget, and security needs.
Categories: FLOSS Project Planets

Droptica: Curious about Drupal 7 to 11 migration costs? Collect all the info for estimation in 5 minutes

Planet Drupal - Mon, 2024-09-30 05:48

Migrating from Drupal 7 to the latest version, like Drupal 11, might seem like a big challenge, but it doesn’t have to be. One of the most common obstacles is figuring out how much it will cost. You want to know the price, but you don’t want to give full access to your site just to get an estimate. The good news? You can collect all the necessary information for an accurate project estimate in just 5 minutes.

Categories: FLOSS Project Planets

The Drop Times: Non-Code Contributions Shine at DrupalCon Barcelona 2024

Planet Drupal - Mon, 2024-09-30 04:26
Reporting from DrupalCon Barcelona, Esmeralda Tijhoff highlights the growing focus on non-code contributions. From event organizing to marketing, the sessions underscored the crucial role non-coders play in shaping Drupal's future. Find out how you can contribute to the community without writing a single line of code!
Categories: FLOSS Project Planets

Python Bytes: #403 A machine learning algorithm walks into a bar…

Planet Python - Mon, 2024-09-30 04:00
<strong>Topics covered in this episode:</strong><br> <ul> <li><strong><a href="https://simonwillison.net/2024/Sep/8/uv-under-discussion-on-mastodon/?featured_on=pythonbytes">uv under discussion on Mastodon</a></strong></li> <li><strong><a href="https://github.com/drivendataorg/erdantic?featured_on=pythonbytes">erdantic: Entity Relationship Diagrams</a></strong></li> <li><strong>Extra, Extra, Extra</strong></li> <li><strong>Django Extra, Extra, Extra</strong></li> <li><strong>Extras</strong></li> <li><strong>Joke</strong></li> </ul><a href='https://www.youtube.com/watch?v=nqVZVvXcOps' style='font-weight: bold;'data-umami-event="Livestream-Past" data-umami-event-episode="403">Watch on YouTube</a><br> <p><strong>About the show</strong></p> <p>Sponsored by us! Support our work through:</p> <ul> <li>Our <a href="https://training.talkpython.fm/?featured_on=pythonbytes"><strong>courses at Talk Python Training</strong></a></li> <li><a href="https://courses.pythontest.com/p/the-complete-pytest-course?featured_on=pythonbytes"><strong>The Complete pytest Course</strong></a></li> <li><a href="https://www.patreon.com/pythonbytes"><strong>Patreon Supporters</strong></a></li> </ul> <p><strong>Connect with the hosts</strong></p> <ul> <li>Michael: <a href="https://fosstodon.org/@mkennedy"><strong>@mkennedy@fosstodon.org</strong></a></li> <li>Brian: <a href="https://fosstodon.org/@brianokken"><strong>@brianokken@fosstodon.org</strong></a></li> <li>Show: <a href="https://fosstodon.org/@pythonbytes"><strong>@pythonbytes@fosstodon.org</strong></a></li> </ul> <p>Join us on YouTube at <a href="https://pythonbytes.fm/stream/live"><strong>pythonbytes.fm/live</strong></a> to be part of the audience. Usually <strong>Monday</strong> at 10am PT. Older video versions available there too.</p> <p>Finally, if you want an artisanal, hand-crafted digest of every week of the show notes in email form? Add your name and email to <a href="https://pythonbytes.fm/friends-of-the-show">our friends of the show list</a>, we'll never share it.</p> <p><strong>Michael #1:</strong> <a href="https://simonwillison.net/2024/Sep/8/uv-under-discussion-on-mastodon/?featured_on=pythonbytes">uv under discussion on Mastodon</a></p> <ul> <li>It’s interesting that uv is slightly controversial</li> <li><p><a href="https://cloudisland.nz/@freakboy3742/113093889194737339?featured_on=pythonbytes">Russell</a>:</p></li> <li><p>As enthusiastic as I am about the direction uv is going, I <em>haven't</em> adopted them anywhere - because I want very much to understand Astral’s intended business model before I hook my wagon to their tools.</p></li> <li><p><a href="https://mastodon.social/@hynek/113094437303343866?featured_on=pythonbytes">Hynek</a>:</p></li> <li><p>As much as I hate VC, [...] FOSS projects flame out all the time too. … To me uv looks like a genius sting to trick VCs into paying to fix packaging. We’ll be better off either way.</p></li> <li><p><a href="https://mastodon.social/@glyph/113094489295782200?featured_on=pythonbytes">Glyph</a>:</p></li> <li><p>Rust is more expensive and difficult to maintain, not to mention "non-native" to the average customer here. … it can burn out <em>all</em> the other projects in the ecosystem simultaneously, creating a risk of monoculture</p></li> <li><p><a href="https://mastodon.social/@hynek/113094547139925962?featured_on=pythonbytes">Hynek on Rust</a>:</p></li> <li><p>I don’t think y’all quite grok what uv makes so special due to your seniority. The speed is really cool, but the reason Rust is elemental is that it’s one compiled blob that can be used to bootstrap and maintain a Python development.</p></li> <li><p><a href="https://social.coop/@chrisjrn/113094511860843571?featured_on=pythonbytes">Christopher Neugebauer</a>:</p></li> <li><p>Just dropping in here to say that corporate capture of the Python ecosystem is the #1 keeps-me-up-at-night subject in my community work, so I watch Astral with interest, even if I'm not yet too worried.</p></li> <li><p><a href="https://lucumr.pocoo.org/2024/8/21/harvest-season/?featured_on=pythonbytes">Armin Ronacher</a></p></li> <li><p>What uv is doing, even in the worst possible future this is a very forkable and maintainable thing.</p></li> <li><p>Finally, see the comment at the end by Charlie Marsh</p></li> </ul> <p><strong>Brian #2:</strong> <a href="https://github.com/drivendataorg/erdantic?featured_on=pythonbytes">erdantic: Entity Relationship Diagrams</a></p> <ul> <li>“erdantic is a simple tool for drawing entity relationship diagrams (ERDs) for Python data model classes. Diagrams are rendered using the venerable Graphviz library.”</li> <li>Supported data modeling frameworks are: <ul> <li>Pydantic V2</li> <li>Pydantic V1 legacy</li> <li>attrs</li> <li>dataclasses </li> </ul></li> </ul> <p><strong>Michael #3:</strong> <strong>Extra, Extra, Extra</strong></p> <ul> <li>Added <a href="https://search.pythonbytes.fm/api/browser">Python Bytes Search as a custom search engine</a>.</li> <li><a href="https://mkennedy.codes/posts/passkey-great-but-careful-of-the-lock-in/?featured_on=pythonbytes">Along came passkeys. A cool idea that quickly turned evil.</a></li> <li>Follow up from post and my conversation last week: <a href="https://github.com/dani-garcia/vaultwarden?featured_on=pythonbytes">vaultwarden</a> (via <a href="https://x.com/mkennedy/status/1838974519463334163?featured_on=pythonbytes">Pablo</a>)</li> <li><a href="https://github.com/astral-sh/uv/releases/tag/0.4.16?featured_on=pythonbytes">uv publish</a></li> <li>Trying the <a href="https://help.vivaldi.com/desktop/tabs/tab-display/?featured_on=pythonbytes">tabs on bottom lifestyle</a> inspired by Arc</li> <li>Adding <a href="https://search.pythonbytes.fm/api/browser">Python Bytes</a> (and Talk Python) <a href="https://mkennedy.codes/posts/you-should-use-custom-search-engines-way-more/?featured_on=pythonbytes">as custom search engines</a>.</li> <li><a href="https://www.python.org/events/python-events/1507/?featured_on=pythonbytes">PyCon 2025 dates</a>: From 14 May through 22 May, 2025</li> </ul> <p><strong>Brian #4:</strong> Django Extra, Extra, Extra</p> <ul> <li><a href="https://blog.jetbrains.com/pycharm/2024/09/django-project-ideas/?featured_on=pythonbytes">Django Project Ideas</a> <ul> <li>Evgenia Verbina</li> <li>Project ideas with list of tech stack stuff you’ll learn and/or work on with the project</li> <li>Ex: Recipe organizer <ul> <li>tech stack: Django templates, Django ORM, Optional JavaScript</li> <li>“Familiarize yourself with Django’s ORM (object-relational mapper) and database support by building an app to keep track of your favorite recipes. Add a web-based frontend with options to filter recipes by category, ingredients, and user ratings so you can easily browse for inspiration.”</li> </ul></li> </ul></li> <li><a href="https://djangotv.com?featured_on=pythonbytes">DjangoTV</a> <ul> <li>Jeff Triplett</li> <li>Django conference videos and tutorials.</li> </ul></li> <li><a href="https://github.com/django-commons?featured_on=pythonbytes">Django Commons</a> <ul> <li>Heard about from Lacey Henschel</li> <li>“Django Commons is an organization dedicated to supporting the community's efforts to maintain packages. It seeks to improve the maintenance experience for all contributors; reducing the barrier to entry for new contributors and reducing overhead for existing maintainers.”</li> </ul></li> <li><a href="https://docs.djangoproject.com/en/5.1/releases/5.0/#simplified-templates-for-form-field-rendering">Django 5 has simplified templates for better form field rendering</a></li> <li>But if you want a completely different take on forms, maybe try <a href="https://docs.iommi.rocks/en/latest/forms.html?featured_on=pythonbytes">iommi forms</a> <ul> <li>They wrote about it on <a href="https://kodare.net/2024/09/11/why-we-wrote-a-new-form-library-for-django.html?featured_on=pythonbytes">Why we wrote a new form library for Django</a></li> </ul></li> <li><a href="https://adamj.eu/tech/2024/09/26/django-introducing-djade/?featured_on=pythonbytes">Djade: a Django template formatter</a> <ul> <li>Adam Johnson</li> <li>Like black or ruff, but for Django templates.</li> </ul></li> </ul> <p><strong>Extras</strong> </p> <p>Brian:</p> <ul> <li><a href="https://liamwhite.dev/posts/0035-hostile-source-environment?featured_on=pythonbytes"><strong>The Open Source Project Maintainer's Guide</strong></a> <ul> <li>Suggested by Rafael Weingartner</li> </ul></li> </ul> <p><strong>Joke:</strong> <a href="https://devhumor.com/media/a-machine-learning-algorithm-walks-into-a-bar?featured_on=pythonbytes">A Machine Learning algorithm walks into a bar…</a></p>
Categories: FLOSS Project Planets

eGenix.com: Python Meeting Düsseldorf - 2024-10-02

Planet Python - Mon, 2024-09-30 04:00

The following text is in German, since we're announcing a regional user group meeting in Düsseldorf, Germany.

Ankündigung

Das nächste Python Meeting Düsseldorf findet an folgendem Termin statt:

02.10.2024, 18:00 Uhr
Raum 1, 2.OG im Bürgerhaus Stadtteilzentrum Bilk
Düsseldorfer Arcaden, Bachstr. 145, 40217 Düsseldorf


Programm Bereits angemeldete Vorträge
  • Detlef Lannert:
    pyinfra als Alternative zu Ansible
  • Marc-André Lemburg:
    Rapid web app development with Panel
  • Detlef Lannert:
    Low-cost-Objekte als Alternativen zu Dictionaries?
  • Charlie Clark:
    Editieren von ZIP Dateien mit Python
Weitere Vorträge können gerne noch angemeldet werden. Bei Interesse, bitte unter info@pyddf.de melden. Startzeit und Ort

Wir treffen uns um 18:00 Uhr im Bürgerhaus in den Düsseldorfer Arcaden.

Das Bürgerhaus teilt sich den Eingang mit dem Schwimmbad und befindet sich an der Seite der Tiefgarageneinfahrt der Düsseldorfer Arcaden.

Über dem Eingang steht ein großes "Schwimm’ in Bilk" Logo. Hinter der Tür direkt links zu den zwei Aufzügen, dann in den 2. Stock hochfahren. Der Eingang zum Raum 1 liegt direkt links, wenn man aus dem Aufzug kommt.

>>> Eingang in Google Street View

⚠️ Wichtig: Bitte nur dann anmelden, wenn ihr absolut sicher seid, dass ihr auch kommt. Angesichts der begrenzten Anzahl Plätze, haben wir kein Verständnis für kurzfristige Absagen oder No-Shows. Einleitung

Das Python Meeting Düsseldorf ist eine regelmäßige Veranstaltung in Düsseldorf, die sich an Python Begeisterte aus der Region wendet.

Einen guten Überblick über die Vorträge bietet unser PyDDF YouTube-Kanal, auf dem wir Videos der Vorträge nach den Meetings veröffentlichen.

Veranstaltet wird das Meeting von der eGenix.com GmbH, Langenfeld, in Zusammenarbeit mit Clark Consulting & Research, Düsseldorf:

Format

Das Python Meeting Düsseldorf nutzt eine Mischung aus (Lightning) Talks und offener Diskussion.

Vorträge können vorher angemeldet werden, oder auch spontan während des Treffens eingebracht werden. Ein Beamer mit HDMI und FullHD Auflösung steht zur Verfügung.

(Lightning) Talk Anmeldung bitte formlos per EMail an info@pyddf.de

Kostenbeteiligung

Das Python Meeting Düsseldorf wird von Python Nutzern für Python Nutzer veranstaltet.

Da Tagungsraum, Beamer, Internet und Getränke Kosten produzieren, bitten wir die Teilnehmer um einen Beitrag in Höhe von EUR 10,00 inkl. 19% Mwst. Schüler und Studenten zahlen EUR 5,00 inkl. 19% Mwst.

Wir möchten alle Teilnehmer bitten, den Betrag in bar mitzubringen.

Anmeldung

Da wir nur 25 Personen in dem angemieteten Raum empfangen können, möchten wir bitten, sich vorher anzumelden.

Meeting Anmeldung bitte per Meetup

Weitere Informationen

Weitere Informationen finden Sie auf der Webseite des Meetings:

              https://pyddf.de/

Viel Spaß !

Marc-Andre Lemburg, eGenix.com

Categories: FLOSS Project Planets

Zato Blog: Enterprise Python: Integrating with Salesforce

Planet Python - Mon, 2024-09-30 03:43
Enterprise Python: Integrating with Salesforce 2024-09-30, by Dariusz Suchojad Overview

Salesforce connections are one of the newest additions to Zato 3.2, allowing you to look up and manage Salesforce records and other business data. To showcase it, the article will create a sample Salesforce marketing campaign in a way that does not require the usage of anything else except for basic REST APIs combined with plain Python objects, such as dicts.

If you have not done it already, you can download Zato here.

Basic workflow

The scope of our works will be:

  • Creating Salesforce credentials for our integration project
  • Defining a Salesforce connection in Zato
  • Authoring a service that will map input data to the format that Salesforce expects
  • Creating a Zato REST channel that will be invoked through curl during tests
  • Testing the integration
Creating Salesforce credentials

To be able to create as connection to Salesforce in the next step, we need a few credentials. There is a full article about how to prepare them and this section is the gist of it.

In runtime, based on this information, Zato will obtain the necessary authentication and authorization tokens itself, which means that you will only focus on the business side of the integrations, not on the low-level aspects of it.

The process of obtaining the credentials needs to be coordinated with an administrator of your organization. To assist in that, the screenshots below explain where to find them.

The credentials are:

  • Username and password
  • Consumer key
  • Consumer secret

The username and password are simply the same credentials that can be used to log in to Salesforce:

Consumer key and secret are properties of a connected app - this is a term that Salesforce uses for API clients that invoke its services. If you are already an experienced Salesforce REST API user, you may know the key and secret under their aliases of "client_id" and "client_secret" - these are the same objects.

Note that when a connected app already exists and you would like to retrieve the key and secret, they will be available under the "View" menu option for the app, not under "Edit" or "Manage".

Defining a Salesforce connection in Zato

With all the credentials in place, we can create a new Salesforce connection in Zato Dashboard, as below.

Authoring an integration service in Python

Above, we created a connection definition that lets Zato obtain session tokens and establish connections to Salesforce. Now, we can create an API service that will make use of such connections.

In the example below, we are using the POST REST method to invoke an endpoint that creates new Salesforce campaigns. In your own integrations, you can invoke any other Salesforce endpoint, using any REST method as needed, by following the same pattern, which is, create a model with input fields, build a Python dict for the request to Salesforce, invoke it and map all the required from the response from Salesforce to that which your own service returns to its own callers.

Note that we use a datamodel-based SimpleIO definition for the service. Among other things, although we are not going to do it here, this would let us offer definitions for this and other services.

# -*- coding: utf-8 -*- # stdlib from dataclasses import dataclass # Zato from zato.server.service import Model, Service # ########################################################################### if 0: from zato.server.connection.salesforce import SalesforceClient # ########################################################################### @dataclass(init=False) class CreateCampaignRequest(Model): name: str segment: str # ########################################################################### @dataclass(init=False) class CreateCampaignResponse(Model): campaign_id: str # ########################################################################### class CreateCampaign(Service): class SimpleIO: input = CreateCampaignRequest output = CreateCampaignResponse def handle(self): # This is our input data input = self.request.input # type: CreateCampaignRequest # Salesforce REST API endpoint to invoke - note that Zato # will add a prefix to it containing the API version. path = '/sobjects/Campaign/' # Build the request to Salesforce based on what we received request = { 'Name': input.name, 'Segment__c': input.segment, } # .. create a reference to our connection definition .. salesforce = self.cloud.salesforce['My Salesforce Connection'] # .. obtain a client to Salesforce .. with salesforce.conn.client() as client: # type: SalesforceClient # .. create the campaign now .. sf_response = client.post(path, request) # .. build our response object .. response = CreateCampaignResponse() response.campaign_id = sf_response['id'] # .. and return its ID to our caller. self.response.payload = response # ########################################################################### Creating a REST channel

Note that we assign HTTP Basic Auth credentials to the channel. In this manner, it is possible for clients of this REST channel to authenticate using a method that they are already familiar which simplifies everyone's work - it is Zato that deals with how to authenticate against Salesforce whereas your API clients use the ubiquitous HTTP Basic Auth method.

Testing

The last step is to invoke the newly created channel:

$ curl http://api:password@localhost:17010/api/campaign/create -d '{"name":"Hello", "segment":"123"}' {"campaign_id":"8901Z3VHXDTebEJWs"} $

That is everything - you have just integrated with Salesforce and exposed a REST channel for external applications to integrate with!

More resources

➤ Python API integration tutorial
What is an integration platform?
Python Integration platform as a Service (iPaaS)
What is an Enterprise Service Bus (ESB)? What is SOA?

More blog posts
Categories: FLOSS Project Planets

Quansight Labs Blog: Numpy QuadDType: Quadruple Precision for Everyone

Planet Python - Sun, 2024-09-29 20:00
Introducing the new data-type for Numpy providing cross-platform support of quadruple precision.
Categories: FLOSS Project Planets

Quansight Labs Blog: Polars Plugins: let's make them easier to use

Planet Python - Sun, 2024-09-29 20:00
Increasing ease-of-use of Polars plugins by improving an existing tutorial.
Categories: FLOSS Project Planets

Python⇒Speed: Beyond multi-core parallelism: faster Mandelbrot with SIMD

Planet Python - Sun, 2024-09-29 20:00

What do you do when computation is too expensive?

Recently I’ve had a brilliant business idea: Mandelbrot-as-a-Service! Instead of companies calculating their own fractals, I will do it for them, freshly calculated in the cloud, with no work on their part. And by using cloud computing, I will be able to scale to the no-doubt vast number of customers who will be paying for my ingenious new service.

I have two goals:

  1. Speeding up results: The faster I can return fractals, the happier my customers will be.
  2. Reducing costs: If I can pay my cloud provider less for computing, my profits will go up!

Unfortunately, since I will only be selling freshly calculated and warm-from-the-CPU Mandelbrots, I can’t rely on caching.

What would you do in this situation?

One obvious approach is parallelism: threading or multiprocessing. This will speed up results, so it’s definitely worth doing, but it won’t reduce my costs. If we use 10 cores instead of 1 core, the service will return results ten times faster, but we’ll have to pay approximately 10× as much, since we’ll be using 10× larger instances.

However, if we can figure out how to speed up calculations on a single core, this will contribute to both our goals. We’ll both get faster results, compounded by any multi-core processing, and reduce compute costs.

In this article we will:

  • Quickly go over a standard Mandelbrot implementation, written in Rust.
  • Discuss why it can be tricky to optimize the Mandelbrot algorithm on a single CPU core.
  • Demonstrate how you can in fact do so, by using masked SIMD operations.
  • Trivially add on multi-core parallelism, using Rust’s Rayon library.
  • PROFIT!
Read more...
Categories: FLOSS Project Planets

Liip: DrupalCon Barcelona Recap

Planet Drupal - Sun, 2024-09-29 18:00

DrupalCon Barcelona Group picture by Bram Driesen (source)

Hola de nou barcelona

Barcelona for me has a long history of Drupal. For Drupal Dev Days 2012 I organized a mapping sprint, we cycled to DrupalCon Barcelona 2015 as part of the #tourdedrupal report , pictures and it was nice to visit a more local event - Drupal Summer - in 2016 (report, pictures).

Coding beyond functionality. Altering technologies through artistic research by Mónica Rikić Drupal CMS: una nova experiència immediata per a Drupal

This year, the focus was on Drupal CMS (previously known by its internal development name Starshot) which is all about bringing Drupal to the next level by creating an out-of-the-box experience including a new way to create layouts (Experience Builder), integrating AI features and many more features. If you like to dive deeper into Drupal CMS, check out the meta issue listing all work tracks as well as the landing page on Drupal.org.

Driesnote by Dries Buytaert

A similar, prepackaged version of Drupal already exists, handcrafted by many individuals and agencies. Recipes have recently been introduced to Drupal core. They allow to package configuration and content to pre-configure Drupal for common use cases like Search, SEO-optimization or an Event calendar feature.

Check out our blökkli starterkit that provides you will a fully-preconfigured setup that we use at Liip.

DrupalCon Crowd Drupal al govern

We saw Drupal's wide adoption for Government at DrupalCon Barcelona.

Implementing AI solutions for the French government - in this session it was demonstrated how public services were improved. AI technology would support the public servants by pregenerating responses that would be validated and modified by the public servant. The use of AI technology cut down response times from an average of 19 days to 3 days and a plus of 11% found the received answers helpful. 

Running a fleet of web sites with ease via LocalGov Drupal Microsites Platform showed a feature that we are also planning to roll out to one of our customers soon. You can easily manage multiple microsites in Drupal and configure on a per-site-basis the needed styling options in order to customize it to each site needs. By leveraging one CMS basis, the time-to-market and total cost of ownership for each microsite can be heavily reduced.

Jonathan Noack & Thom Nagy presenting about bs.ch

Large-scale content creation with Drupal — Delights, Pitfalls and support structures to help editors - in this session our customer Thom Nagy & our product owner Jonathan Noack presented their case study on relaunching bs.ch. I liked to see how a trustful collaboration with strong communication and stakeholder management combined with agile delivery and innovation led to an outcome all participants are proud about.

The website is our flagship showcase for blökkli, the interactive pagebuilder that has delighted many of our customers already and is available for the community under the open-source license.

Even though the canton is embedded in a typically restrictive government environment, they even launched the first AI-based assistant "Alva" that answers any questions the public might have about the canton in their own language using GPT-based technology.

Sostenibilitat

Conferences that bring together folks from all over the world have a hard time being sustainable. I appreciate the efforts to promote sustainable transport for example when amongst the attendees traveling by train, a winner was selected.

The organizing team also worked with the sponsors to make sure they were taking sustainability into account for how they set up their booths and limit the swag they would give out to participants.

DrupalCon Barcelona Mascot watching the crowd

The next DrupalCon Europe has been announced to happen in Vienna October 14-17 2025. I am particularly excited for this location as I grew up in Vienna and have been part of the Drupal Austria community as an organizing member before moving to Switzerland.

As Vienna is at the heart of Europe, I encourage you to think about sustainable ways to get to the conference.

If you travel via Hamburg, Bregenz/Feldkirch, Roma/Blorence/Bologna or Amsterdam, you should even be able to sleep on one of the new generation nightrains that offers better comfort, single-cabins and wheelchair-accessible sleepers. You typically can book your train 6 months ahead. As they introduced dynamic pricing recently, it is recommended to book your tickets early.

The beach alongside DrupalCon Barcelona

I leave you with some pictures from this year in Barcelona

Would you like to learn more about Drupal? Find an event near you. See you 2025 at one of my favorites Drupal Mountain Camp in Davos or at DrupalCon Vienna.

Categories: FLOSS Project Planets

Web Wash: How to Organize Content Entity Forms in Drupal

Planet Drupal - Sun, 2024-09-29 16:27

Drupal provides a robust framework for creating and managing content. However, managing form fields in complex content entities can be challenging. The Field Group, Inline Entity Form, and Conditional Fields modules offer practical tools for improving the user experience and streamlining the content creation process.

In the above live stream, we’ll use all three modules to organize and clean up fields on an “Event” content type.

Below are the show notes for the live stream.

Categories: FLOSS Project Planets

#! code: Drupal 11: Using The Batch API To Process CSV Files

Planet Drupal - Sun, 2024-09-29 15:01

This is the fourth article in a series of articles about the Batch API in Drupal. The Batch API is a system in Drupal that allows data to be processed in small chunks in order to prevent timeout errors or memory problems.

So far in this series we have looked at creating a batch process using a form, followed by creating a batch class so that batches can be run through Drush and then using the finished state to control batch processing. All of these articles go together to form a basis of batch processing in Drupal.

In this article we will look at bringing these concepts together to perform a task that is quite common on websites, processing Comma Separated Value or CSV files, which we will do using the Drupal Batch API.

Processing CSV data is very common on the web. Whilst it is quite common to integrate with an API it is sometimes simpler to just generate a CSV file of the data you need from one system and upload it into a form on a website. Most systems will allow you to export data as a CSV file of some kind, but it's also very easy to export a CSV from commonly used programs like Excel and Google Sheets.

Processing a CSV file in PHP is quite simple, but once you reach one hundred records you will find that PHP will start to throw errors due to timeouts or memory issues. The solution is to employ the Batch API to spread the load of that processing over a number of different requests.

Read more

Categories: FLOSS Project Planets

Open Source Conferences in September

Planet KDE - Sun, 2024-09-29 14:00

After having participated to both Qt Contributor Summit and Akademy, I ended up going to a few more conferences in September.

Nextcloud Conference

I went to Nextcloud Conference just after going back from Akademy. Unfortunately I was quite tired from Akademy and Qt Contributor Summit and I only stayed Saturday morning. Still it was great to meet some old colleagues there.

Group photo of the Nextcloud conference

Matrix Conference

The Matrix Conference happened the weekend after the Nextcloud conference. This was the first Matrix Conference and a gathering of all types of actors involved in Matrix. From the grassroots community to companies deploying Matrix based solutions to their customers. The NeoChat team was there and we were super productive into bringing back the Android version, thanks to the help of Volker Krause. This resulted in many patches in NeoChat itself but also one patch in Kirigami.

Special mention to the food and coffee offered at the conference, which was always excellent and either vegan or vegetarian. Outside of the venue, food was also execellent with a lot of middle eastern food choice.

Here some photos of the event and the food:

Donuts Hacking at the conference venue Hacking at C-Base Food outside of the venue Linux Days Dornbirn

It was my second time going to the Linux Days in Dornbirn and while the weather wasn’t as welcoming as last time, the local Linux community was again super welcoming!

During the event, I did a talk in German about Plasma 6. This was my first time doing a talk in German and I hope I did okay. I also hosted a KDE stand with Simon Österle, who offered his help with the stand. His help has been invaluable to me, so huge thanks to him.

Like last year, after the conference, all helpers, presenters and stand holders went to a local restaurent to enjoy Käsespätzle. It was again delicious.

Here some photos of the event and the food:

Banner at the entrance of the Linux Days Steam Deck and Plasma Mobile The new KDE Banner Linux Days dinner menu Käsespätzle Apfelstrudel Bodensee on the way to Austria Bodensee from the train on the way back A script element has been removed to ensure Planet works properly. Please find it in the original post. A script element has been removed to ensure Planet works properly. Please find it in the original post.
Categories: FLOSS Project Planets

Conferences in September

Planet KDE - Sun, 2024-09-29 14:00

After having participated to both Qt Contributor Summit and Akademy, I ended up going to a few more conferences in September.

Nextcloud Conference

I went to Nextcloud Conference just after going back from Akademy. Unfortunately I was quite tired from Akademy and Qt Contributor Summit and I only stayed Saturday morning. Still it was great to meet some old colleagues there.

Group photo of the Nextcloud conference

Matrix Conference

The Matrix Conference happened the weekend after the Nextcloud conference. This was the first Matrix Conference and a gathering of all types of actors involved in Matrix. From the grassroots community to companies deploying Matrix based solutions to their customers. The NeoChat team was there and we were super productive into bringing back the Android version, thanks to the help of Volker Krause. This resulted in many patches in NeoChat itself but also one patch in Kirigami.

Special mention to the food and coffee offered at the conference, which was always excellent and either vegan or vegetarian. Outside of the venue, food was also execellent with a lot of middle eastern food choice.

Here some photos of the event and the food:

Donuts Hacking at the conference venue Hacking at C-Base Food outside of the venue Linux Days Dornbirn

It was my second time going to the Linux Days in Dornbirn and while the weather wasn’t as welcoming as last time, the local Linux community was again super welcoming!

During the event, I did a talk in German about Plasma 6. This was my first time doing a talk in German and I hope I did okay. I also hosted a KDE stand with Simon Österle, who offered his help with the stand. His help has been invaluable to me, so huge thanks to him.

Like last year, after the conference, all helpers, presenters and stand holders went to a local restaurent to enjoy Käsespätzle. It was again delicious.

Here some photos of the event and the food:

Banner at the entrance of the Linux Days Steam Deck and Plasma Mobile The new KDE Banner Linux Days dinner menu Käsespätzle Apfelstrudel Bodensee on the way to Austria Bodensee from the train on the way back A script element has been removed to ensure Planet works properly. Please find it in the original post. A script element has been removed to ensure Planet works properly. Please find it in the original post.
Categories: FLOSS Project Planets

This Week in KDE Apps

Planet KDE - Sun, 2024-09-29 10:30
New KCron Settings UI, Krita 2.2.5 released, and more

Welcome to the third post in our “This Week in KDE Apps” series! If you missed it, we just announced this new series two weeks ago, and our goal is to cover as much as possible of what's happening in the KDE world and complete Nate's This Week in Plasma.

This week we had new releases of Amarok and Krita. There is also news regarding KDE Connect, the link between all your devices; Kate, the KDE advanced text editor; Itinerary, the travel assistant that lets you plan all your trips; Marble, KDE's map application; and more.

Let's get started!

Amarok

Amarok 3.1.1 was released. 3.1.1 features a number of small improvements and bug fixes, including miscellaneous fixes for toolbars and the return of tag dialog auto-completions — functionality that initially got lost during the Qt5/KF5 port. However, most of the work has again happened under the hood to improve the codebase's Qt6/KF6 compatibility.

See the full announcement for more information

Itinerary

Itinerary now supports search for places (e.g. street names) in addition to stops. (Code: Jonah Brüchert, Icon: Mathis Brüchert, 24.12.0. Link)

Itinerary now shows the date of the connection when searching for a public transport connection. (Jonah Brüchert, 24.12.0. Link 1, link 2)

Digikam

A new face detection algorithm based on YuNet is now available. (Michael Miller, Link)

Kate

The debug plugin now works on Windows! (Waqar Ahmed, 24.12.0. Link)

The debug plugin is now much more usable. (Waqar Ahmed, 24.12.0. Link 1, link 2, link 3)

Kate context menu will now show relevant external tools. (Waqar Ahmed, 24.12.0. Link)

KCron

The System Settings page was ported to QML and given a fancy new UI! (Evgeny Chesnokov, 24.12.0. Link)

KDE Connect

Fixed the Bluetooth support for KDE Connect. (Rob Emery, 24.12.0. Link 1, link 2)

Keysmith

Keysmith now has an "About" page. (Plata Hill, 24.12.0. Link)

Kleopatra

Kleopatra now supports OpenPGP v5 keys. (Ingo Klöcker, 24.12.0. Link 1, link 2)

Krita

Krita 5.2.5 was released and is bringing over 50 bugfixes since 5.2.3 (5.2.4 was a Windows-specific hotfix). Major fixes have been done to audio playback, transform mask calculation and more! Read more.

LabPlot

LabPlot implements a new type of plot: Process Behavior Chart (X-Chart), (Alexander Semke, Link)

Marble

Marble Maps, the QML version of Marble, has a new icon. (Mathis Brüchert, 24.12.0. Link)

Fixed a major source of visual glitches in the QML version of Marble when looking at the Earth globe. (Carl Schwan, 24.08.2. Link)

Marble Behaim — a special version of Marble to look at the oldest globe representation of the Earth known to exist — now also works on desktop thanks to Kirigami, and all the additional information and credits are now displayed using a standard "About" page. (Carl Schwan, 24.12.0. Link)

Marble's KRunner integration, Plasma Widget and the Wallpaper plugin are now fully ported to Plasma 6. (Carl Schwan, 24.12.0. Link)

NeoChat

On modern versions of Android, NeoChat will now request the correct permission to send system notifications. (James Graham, 24.12.0. Link)

Spectacle

Spectacle now respects your custom save file format as expected when using the "Save As" functionality. (Noah Davis, 24.08.2. Link)

Others

Valentyn Bondarenko updated several screenshots of KDE apps:

Eamonn Rea made more Kirigami applications remember their size across launches:

…And Everything Else

This blog only covers the tip of the iceberg! If you’re hungry for more, check out Nate's blog about Plasma and KDE's Planet, where you can find more news from other KDE contributors.

Get Involved

The KDE organization has become important in the world, and your time and contributions have helped achieve that status. As we grow, it’s going to be equally important that your support become sustainable.

We need you for this to happen. You can help KDE by becoming an active community member and getting involved. Each contributor makes a huge difference in KDE; you are not a number or a cog in a machine! You don’t have to be a programmer, either. There are many things you can do: you can help hunt and confirm bugs, even maybe solve them; contribute designs for wallpapers, web pages, icons and app interfaces; translate messages and menu items into your own language; promote KDE in your local community; and a ton more things.

You can also help us by donating. Any monetary contribution, however small, will help us cover operational costs, salaries, travel expenses for contributors and in general help KDE continue bringing Free Software to the world.

Categories: FLOSS Project Planets

Pages