Language Selection

English French German Italian Portuguese Spanish

Development

Programming Leftovers

Filed under
Development
  • What’s the point: OpenAPI-to-GraphQL, TensorRT, Jenkins, GNU Rush

    In time for its first major release, IBM decided to rename OASGraph to OpenAPI-to-GraphQL. The project is meant to automatically generate GraphQL wrappers for RESTlike APIs and was open sourced last year.

    The new name should be a clearer indicator of the project’s function and align with other libraries that follow the “x-to-y naming convention”. Other than that the tool has moved from the StrongLoop organisation to GitHub, making it more accessible and dispelling the notion it would only work with LoopBack.

  • Parse arguments with Python

    If you're using Python for any amount of development, you have probably issued a command in a terminal, even if only to launch a Python script or install a Python module with pip.

  • Python 3.6.9 security-fix release is now available

    Python 3.6.9 is now available. 3.6.9 is the first security-only-fix release of Python 3.6. Python 3.6 has now entered the security fix phase of its life cycle. Only security-related issues are accepted and addressed during this phase. We plan to provide security fixes for Python 3.6 as needed through 2021, five years following its initial release. Security fix releases are produced periodically as needed and only provided in source code form; binary installers are not provided. We urge you to consider upgrading to the latest release of Python 3.7, the current fully-supported version.

  • Python 3.7.4rc2 is now available for testing

    Python 3.7.4rc2 is now available. 3.7.4rc2 is the second release preview of the next maintenance release of Python 3.7, the latest feature release of Python. Assuming no further critical problems are found prior to 2019-07-08, no code changes are planned between this release candidate and the final release.

  • DjangoCon Australia 2019: Tickets on sale

    For the 7th year running, DjangoCon Australia is coming up on August 2nd. Just like last year, the sibling conference to DjangoCons EU and US, is on in Sydney at the International Convention Centre.

    DjangoCon Australia is a one-day event, organized as a specialist track as part of PyCon AU. Packed with talks about best practices, communities, contributions, and the present and future of Django, DjangoCon Australia 2019 will be bigger than ever.

  • LibreOffice Appliances project (GSoC 2019): Report 5

    I managed to sort out the blog not building. The problem was a case of incorrect syntax in the _config.yml on this site.

    I passed the evaluation and I’ll be here for another two months by the looks of it. We’ve now got a working program which starts and control LibreOffice just like planned, however it is quite rough and the next two months will be spent making it smoother and better-looking mainly, I reckon. Apart from any other work my mentors might throw at me. Smile

Python and GNOME/GTK Programming

Filed under
Development
GNOME
  • Functional Programming in Python

    In this course, you’ll learn how to approach functional programming in Python. You’ll start with the absolute basics of Functional Programming (FP). After that, you’ll see hands-on examples for common FP patterns available, like using immutable data structures and the filter(), map(), and reduce() functions. You’ll end the course with actionable tips for parallelizing your code to make it run faster.

  • Episode #137: Advanced Python testing and big-time diffs
  • PyCoder’s Weekly: Issue #375 (July 2, 2019)
  • PyCharm: What We Did At PyCon 2019: A Wrap-up

    PyCon 2019, Cleveland…heck of an event and kudos to Ernest Durbin for a most memorable edition in his delightful city.

    We at PyCharm did some memorable things at PyCon, with some weird ideas that turned out nicely. Some time has passed: let’s do a retrospective.

  • DjangoCon US 2019 Schedule Is Live

    We are a little over two months away from DjangoCon US in San Diego, CA, and we are pleased to announce that our schedule is live! We received many excellent proposals, and the reviewers and program team had a difficult job choosing the final talks and tutorials. Thank you to everyone who submitted a proposal or helped to review.

  • Constraint layouts

    Systems of linear equations can have one solution, multiple solutions, or even no solution at all. Additionally, for performance reasons, you don’t really want to recompute all the solutions every time.

    Back in 1998, the Cassowary algorithm for solving linear arithmetic constraints was published by Greg J. Badros and Alan Borning, alongside its implementation in C++, Smalltalk, and Java. The Cassowary algorithm tries to solve a system of linear equations by finding its optimal solution; additionally, it does so incrementally, which makes it very useful for user interfaces.

    Over the past decade various platforms and toolkits started providing layout managers based on constraints, and most of them used the Cassowary algorithm. The first one was Apple’s AutoLayout, in 2011; in 2016, Google added a ConstraintLayout to the Android SDK.

    In 2016, Endless implemented a constraint layout for GTK 3 in a library called Emeus. Starting from that work, GTK 4 now has a GtkConstraintLayout layout manager available for application and widget developers.

    The machinery that implements the constraint solver is private to GTK, but the public API provides a layout manager that you can assign to your GtkWidget class, and an immutable GtkConstraint object that describes each constraint you wish to add to the layout, binding two widgets together.

  • Pitivi – Making a Nest

    Pitivi is an open source video editing software for Linux. It provides creatives with a simple and elegant interface to edit and bring their videos to realisation. As with every other great software, Pitivi’s development community is always striving to add newer and better features. This year I participated in the Google Summer of Code to add the ‘Nesting’ Feature to the platform. I am currently working on this with my mentor Thiblahute Saunier. In this blog I chart out our current progress and the future tasks at hand.

    [...]

    In the past few weeks I’ve learnt and improved a lot. In the beginning I was a bit reserved and shy to tell my problems but after talking and getting to know my mentor, I think I’ve overcome that fear. The guidance of my mentor has been crucial in this journey. Until now he has done all of the heavy-lifting for the back-end all the while helping me to get up to speed. Hopefully now I will be able to take the reins and at the same time be able to learn more from him. I look forward to an amazing summer and the work we have in front of us.

  • Removing rsvg-view

    I am preparing the 2.46.0 librsvg release. This will no longer have the rsvg-view-3 program.

    [....]

    Rsvg-view requires GTK. But GTK requires librsvg, indirectly, through gdk-pixbuf! There is not a hard circular dependency because GTK goes, "gdk-pixbuf, load me this SVG file" without knowing how it will be loaded. In turn, gdk-pixbuf initializes the SVG loader provided by librsvg, and that loader reads/renders the SVG file.

    Ideally librsvg would only depend on gdk-pixbuf, so it would be able to provide the SVG loader.

    The rsvg-view source code still has a few calls to GTK functions which are now deprecated. The program emits GTK warnings during normal use.

Programming Leftovers

Filed under
Development
  • Jupyter Notebook 101

    Last year, I released a book entitled Jupyter Notebook 101. In celebration of a successful launch, I have decided to do a little contest.

  • Jupyter and data science in Fedora

    Most modern data scientists use Python. And an important part of their work is EDA (exploratory data analysis). EDA is a manual and interactive process that retrieves data, explores its features, searches for correlations, and uses plotted graphics to visualize and understand how data is shaped and prototypes predictive models.

    Jupyter is a web application perfect for this task. Jupyter works with Notebooks, documents that mix rich text including beautifully rendered math formulas (thanks to mathjax), blocks of code and code output, including graphics.

  • One CI/CD pipeline per product to rule them all

    When I joined the cloud ops team, responsible for cloud operations and engineering process streamlining, at WorkSafeBC, I shared my dream for one instrumented pipeline, with one continuous integration build and continuous deliveries for every product.

    According to Lukas Klose, flow (within the context of software engineering) is "the state of when a system produces value at a steady and predictable rate." I think it is one of the greatest challenges and opportunities, especially in the complex domain of emergent solutions. Strive towards a continuous and incremental delivery model with consistent, efficient, and quality solutions, building the right things and delighting our users. Find ways to break down our systems into smaller pieces that are valuable on their own, enabling teams to deliver value incrementally. This requires a change of mindset for both business and engineering.

  • What makes a good code review in DevOps?

    Improving the software development lifecycle, the speed we deliver software to customers, and the quality of that software are all great premises of DevOps. They are goals that the tools and techniques prescribed by the DevOps movement attempt to achieve. As a developer, I feel freer to make changes rapidly, not just to source code, but also to infrastructure and configuration code. As a DevOps practitioner, my goal is to balance that freedom with quality and security. How? One tool we can use is code reviews.

  • The DataFrame Object in Pandas

    DataFrame Object in Pandas is used to plot the data table as well as to keep the data for the later usage. Let us look at a few examples below.

    Hello and welcome back, in this article we will take a look at the DataFrame object and its usages. We will continue to look at the usage of other Objects before we will actually start to create this new web analytics project.

    Before anything, let us create the DataFrame object.

Programming Leftovers

Filed under
Development
  • Starting a web analytics project with Pandas

    Hey dude, how is it going? As I had promised you all in my previous post that I will start a new project, well, here we go! This project will take a few weeks to complete and the main reason I have created this project is to demonstrate to you all what can a developer achieve with the Pandas module.

    Before we start to write python code please make sure you have installed the latest version of PyCharm because we are going to use PyCharm IDE to develop this project.

    Once you have the PyCharm installed on your computer, go to File->New Project and create a new Python project from there onward. I assume you are already familiar with PyCharm IDE so I will not go into detail on how to create a new Python project. After you have created a new project, you need to create a Python file under the project folder, again, I assume you have already known that!

    Then just go ahead and install the Pandas module with PyCharm through the below steps : File->Settings->Project:yournewproject/Project Interpretor, under the right part of the box, click on the plus sign, then enter “Pandas” in the pop-up search box and then install the pandas package.

  • Shenandoah GC in JDK 13, Part 3: Architectures and operating systems

    In this series, I’ve been covering new developments of Shenandoah GC coming up in JDK 13. In part 1, I looked at the switch to load reference barriers, and, in part 2, I looked at plans for eliminating an extra word per object. In this article, I’ll look at a new architecture and a new operating system that Shenandoah GC will be working with.

  • Git now faster than Mercurial to clone Mozilla Mercurial repos

    With the now released git-cinnabar 0.5.2, the cinnabarclone feature is enabled by default, which means it doesn’t need to be enabled manually anymore.

    Cinnabarclone is to git-cinnabar what clonebundles is to Mercurial (to some extent). Clonebundles allow Mercurial to download a pre-generated bundle of a repository, which reduces work on the server side. Similarly, Cinnabarclone allows git-cinnabar to download a pre-generated bundle of the git form of a Mercurial repository.

  • Open Source Automated Machine Learning With MindsDB

    Machine learning is growing in popularity and capability, but for a majority of people it is still a black box that we don’t fully understand. The team at MindsDB is working to change this state of affairs by creating an open source tool that is easy to use without a background in data science. By simplifying the training and use of neural networks, and making their logic explainable, they hope to bring AI capabilities to more people and organizations. In this interview George Hosu and Jorge Torres explain how MindsDB is built, how to use it for your own purposes, and how they view the current landscape of AI technologies. This is a great episode for anyone who is interested in experimenting with machine learning and artificial intelligence. Give it a listen and then try MindsDB for yourself.

  • How to Use Redis With Python
  • Building Restful API with Flask, Postman & PyTest - Part 3

    Today in our final part of the 3 part series I will be covering the creation of actual REST APIs with PyTest.

    For those new the series, you can look at part 1 to understand the various tools that I will be using to create REST API endpoints of a expenses manager.

    Besides that look at part 2 in mocking the API endpoints for prototyping your API designs.

  • As a system programming language, C still deserves learning today

    Regardless if you are a systems language programmer, DevOps, performance engineer or wear other hats, the more you know about the Operating System, the more you can do your job better. Take all prevailing Unix-like Operating Systems as an example, from kernel to command line tools, they are almost implemented in C. To study related source code can make you delve into Operating System internal deeper. E.g., I knew there is a taskset command which can bind specified process of a dedicated CPU, but I wanted to know the magic behind it, so I went through its code. Then I learned 2 things: [...]

today's howtos and programming bits

Filed under
Development
HowTos
  • draw line separator (using knoppix5 idea)
  • Managing files with the Linux terminal
  • The Command-Line Issue
  • Linux Commands To Remove Files And Directories
  • Vim Syntax Highlighting
  • Vim Install Plugins
  • Vim and Ctags

    Ctags is a very useful tool to navigate any source code of the programming language. Identifiers, methods, classes, etc. from the source code are parsed by using ctags and saved the index in a tag file. Each tag is stored in each line. Ctags is supported by many programming languages. This tool helps the user to search any method or function block to find out how it works. It is very useful to search for any variable in the large project. How ctags can be installed and used with vim editor for navigating the source code of any programming language on Ubuntu are shown in this tutorial.

  • Vim and git

    Vim is a very useful and helpful editor for creating and editing different types of files more efficiently. Many new features are added in this editor that makes it a powerful editor. Many plugins are developed by many coders for this editor to increase and configure its core functionalities. Some of them are Pathogen, Syntastic, indent guides, Fugitive, Git Gutter, etc. Git is a distributed version control system (DVCS) that helps the developers to manage the modified source codes over time. It is totally free to use. Using git command, the track changes and the revision history of the source codes can be easily traced. Git command works in the command line interface. The vim plugin named fugitive plugin is developed by Tim pope which is used to work with the git tool without terminating the editor. So, vim and git can work together by using the fugitive plugin. How you can install and use this plugin for vim is shown in this tutorial.

  • Vim for Python

    The improved version of vi editor is Vim that can be used for creating or editing source codes of different types of programming or scripting languages. It is a configurable text editor and works faster than other command-based text editors. It can also work with various plugins and vimscript. This editor can be configured for creating a development environment for python programming. Python is a very popular programming language now and used for developing different types of applications. The coder can write python code on vim editor very easily and fast if the editor is configured properly for writing python programming. How you can add setting and install vim plugins for creating python IDE is shown in this tutorial.

  • How to use to infrastructure as code

    My previous article about setting up a homelab described many options for building a personal lab to learn new technology. Regardless of whichever solution you choose, as your servers and applications grow, it will become harder and harder to maintain and keep track of them if you don't establish control. To avoid this, it's essential to treat your infrastructure as code.

    This article is about infrastructure as code (IaC) best practices and includes a sample project automating the deployment of two virtual machines (VMs) and installing Keepalived and Nginx while implementing these practices. You can find all the code for this project on GitHub.

  • PyDev of the Week: Scott Shawcroft

    This week we welcome Scott Shawcroft (@tannewt) as our PyDev of the Week! Scott is the lead developer of CircuitPython, a variant of the Python programming language made for microcontrollers. If you’d like to see what else Scott is up to, his website is a good place to start. Let’s take a few moments to get to know Scott better!

  • Django security releases issued: 2.2.3, 2.1.10 and 1.11.22

    In accordance with our security release policy, the Django team is issuing Django 1.11.22, Django 2.1.10, and Django 2.2.3. These releases addresses the security issues detailed below. We encourage all users of Django to upgrade as soon as possible.

    Thanks Gavin Wahl for reporting this issue.

  • Handling multipart/form-data natively in Python

    RFC7578 (who obsoletes RFC2388) defines the multipart/form-data type that is usually transported over HTTP when users submit forms on your Web page. Nowadays, it tends to be replaced by JSON encoded payloads; nevertheless, it is still widely used.

    While you could decode an HTTP body request made with JSON natively with Python — thanks to the json module — there is no such way to do that with multipart/form-data. That's something barely understandable considering how old the format is.

    There is a wide variety of way available to encode and decode this format. Libraries such as requests support this natively without making you notice, and the same goes for the majority of Web server frameworks such as Django or Flask.

    However, in certain circumstances, you might be on your own to encode or decode this format, and it might not be an option to pull (significant) dependencies.

  • Get modular with Python functions

    Are you confused by fancy programming terms like functions, classes, methods, libraries, and modules? Do you struggle with the scope of variables? Whether you're a self-taught programmer or a formally trained code monkey, the modularity of code can be confusing. But classes and libraries encourage modular code, and modular code can mean building up a collection of multipurpose code blocks that you can use across many projects to reduce your coding workload. In other words, if you follow along with this article's study of Python functions, you'll find ways to work smarter, and working smarter means working less.

    This article assumes enough Python familiarity to write and run a simple script. If you haven't used Python, read my intro to Python article first.

today's howtos and programming bits

Filed under
Development
HowTos

GNU Guile 2.2.6 released

Filed under
Development
GNU

We are delighted to announce GNU Guile release 2.2.6, the sixth bug-fix
release in the 2.2 stable release series.  See the NEWS excerpt that
follows for full details.

                             *  *  *

Guile is an implementation of the Scheme programming language.

The Guile web page is located at https://gnu.org/software/guile/, and
among other things, it contains a copy of the Guile manual and pointers
to more resources.

Guile can run interactively, as a script interpreter, and as a Scheme
compiler to VM bytecode.  It is also packaged as a library so that
applications can easily incorporate a complete Scheme interpreter/VM.
An application can use Guile as an extension language, a clean and
powerful configuration language, or as multi-purpose "glue" to connect
primitives provided by the application.  It is easy to call Scheme code
from C code and vice versa.  Applications can add new functions, data
types, control structures, and even syntax to Guile, to create a
domain-specific language tailored to the task at hand.

Guile implements many common Scheme standards, including R5RS, R6RS, and
a number of SRFIs.  In addition, Guile includes its own module system,
full access to POSIX system calls, networking support, multiple threads,
dynamic linking, a foreign function call interface, and powerful string
processing.

Guile 2.2.6 can be installed in parallel with Guile 2.0.x; see
https://www.gnu.org/software/guile/manual/html_node/Parallel-Installations.html.

Read more

Also: GNU Guile 2.2.6 released

Programming Leftovers

Filed under
Development
  • SD Times Open-Source Project of the Week: Sorbet

    Stripe is open sourcing its Ruby type checker in the hopes to help and collaborate with the Ruby community.

  • The V programming language is now open source – is it too good to be true?

    Yesterday, a new statically-typed programming language named V was open sourced. It is described as a simple, fast, and compiled language for creating maintainable software. Its creator, Alex Medvednikov, says that it is very similar to Go and is inspired by Oberon, Rust, and Swift.

  • SD Times news digest: V language now open sourced, SmartBear acquires BDD provider Cucumber, and Kaggle integrates into BigQuery

    The language is very similar to Go and its domain is very similar to that of Rust, the team explained. It has a ui module that uses native GUI toolkits, allowing developers to build native apps with native controls without the need to embed a browser to develop cross-platform apps quickly, according to the language’s website.

  • Open Source Kotlin Continues to Climb

    Kotlin is continuing its "meteoric" rise in the software development world, with recent research providing new insights into its increasing popularity.

  • Azul Systems Announces General Availability of Zulu Mission Control v7.0

    QCON NYC – Azul Systems (Azul), the award-winning leader in Java runtime solutions, today announced the general availability of Zulu Mission Control v7.0. Based on the OpenJDK Mission Control project, Zulu Mission Control is a powerful Java performance management and application profiling tool that works with Azul’s Zing and Zulu JDKs/JVMs and supports both Java SE 8 and 11.

  • A Golden Age for Developers

    There’s probably never been a time since the dawn of programming when there has been more opportunity for developers—individuals and teams—to imagine, create and be successful. Developers are able to do a lot more (and do things a lot faster) with more tools, a better development ecosystem and a tighter connection with the rest of the enterprise than was possible even a few years ago.

    [...]

    A major factor in enabling this approach is the widespread use of open source code. Open source has democratized access to powerful tools and platforms that can greatly accelerate work for any developer. Open source projects are mature, stable and growing, which provides equal access for citizen and enterprise developers alike. The size of your IT operation no longer matters: Developers everywhere can call up on their laptops the same tools that once were available only to web-scale unicorns. It removes limits to a developer’s imagination and the ability to create something new.

    Finally, the ever-expanding realm of cloud-native computing is putting incredible resources and computing ability within reach of every developer. Tools such as Kubernetes, which let you create and orchestrate applications in containers that can then be deployed and run in the cloud; serverless technologies; and other new ways of using distributed computing power remove barriers. Where a developer once might have been reluctant to create apps that required high levels of computing power, that’s not the case now with the cloud. What once may have taken access to a Cray supercomputer is now at a developer’s fingertips.

  • RProtoBuf 0.4.14

    A new release 0.4.14 of RProtoBuf is arriving at CRAN. RProtoBuf provides R with bindings for the Google Protocol Buffers (“ProtoBuf”) data encoding and serialization library used and released by Google, and deployed very widely in numerous projects as a language and operating-system agnostic protocol.

    This release contains two very helpful pull requests by Jarod Meng that solidify behaviour in two corner cases of message translation. Jeroen also updated the Windows build settings which will help with the upcoming transition to a new Rtools version.

  • Smart Pointers in Qt Projects

    Besides the QObject ownerships there is another, more subtle problem that one should be aware of when injecting objects into the QQmlEngine. When using QtQuick in an application, often there is the need to inject objects into the engine (I will not go into detail here, but for further reading see https://doc.qt.io/qt-5/qtqml-cppintegration-topic.html). The important important fact one should be aware of is that at this point there is a heuristic that decides whether the QML engine and its garbage collector assumes ownership of the injected objects or if the ownership is assumed to be on C++ side (thus managed by you and your smart pointers).

    The general rule for the heuristic is named in the QObjectOwnership enum. Here, make sure that you note the difference between QObjects returned via a Q_PROPERTY property and via a call of a Q_INVOKABLE methods. Moreover, note that the description there misses the special case of when an Object has a QObject parent, then also the CppOwnership is assumed. For a detailed discussion of the issues there (which might show you a surprisingly hard to understand stack trace coming from the depths of the QML engine), I suggest reading this blog post.

    Summing up the QML part: When you are using a smart pointer, you will hopefully not set any QObject parent (which automatically would have told the QML engine not to take ownership…). Thus, when making the object available in the QML engine, you must be very much aware about the way you are using to put the object into the engine and if needed, you must call the QQmlEngine::setObjectOwnership() static method to mark your objects specifically that they are handled by you (otherwise, bad things will happen).

  • Using the Bash case Statement in Shell Scripting

    Learn to use the Bash case statement to conditionally execute commands based on pattern matching, it's different clause terminators and explore examples.

  • Create a Python function to compare the end string

    Hello friend, we will start a new Python project in the next chapter but before that let us solve another Python problem first in this article. This is one of the questions in codewars which I have solved today : Given a string and an end string, compare the end string part with the end part of the given string, if they match each other, then return true, otherwise return false. For example, if the given string is “Hello” and the end string is “ello” then the function will return true. If the given string is “World” and the end string is “rld!” the the function will return false.

Achieving consistency between SDDM and Plasma

Filed under
Development
KDE

With the first phase of Google Summer of Code over it’s high time some substantial progress on achieving the main goal of the project was presented. Since the last post, there’s two things that have been done.

First, Plasma is now going to be following upstream advice on config file location, which means the location has been changed from /etc/sddm.conf to etc/sddm.conf.d/kde_settings.conf. Since the former file takes preference, duplicate keys will be deleted from it when saving to the latter.

Read more

Programming Leftovers

Filed under
Development
  • Fedora 30 : The Pythonic tool.

    The tutorial for today is about Pythonic tool.
    Named Pythonic is a graphical programming tool that makes it easy for users to create Python applications using ready-made function modules.
    This tool providing the consistent features and characteristics of a trading bot with just a few clicks.
    The Pythonic tool is currently available in four languages: English, German, Spanish, and Chinese.
    The tool comes with basic functions such as a scheduler, if-branches, connectivity, and logging functions are available out of the box and can be parameterized using a corresponding GUI.
    Each graphical element is functionally processed individually.
    The base idea is: A unique graphical input mask to carry out the

  • Changelog podcast: me, double-dipping

    I had a great conversation with Jerod Santo on the Changelog podcast: The Changelog 351: Maintainer spotlight! Ned Batchelder. We talked about Open edX, and coverage.py, and maintaining open source software.

  • DocKnot 3.00

    This package started as only a documentation generator, but my goal for some time has been to gather together all of the tools and random scripts I use to maintain my web site and free software releases. This release does a bunch of internal restructuring to make it easier to add new commands, and then starts that process by adding a docknot dist command. This performs some (although not all) of the actions I currently use my release script for, and provides a platform for ensuring that the full package test suite is run as part of generating a distribution tarball.

  • Python Data Structures

    This post explains the data structures used in Python. It is essential to understand the data structures in a programming language. In python, there are many data structures available.

  • EuroPython 2019: Social event tickets available

    After the keynotes and talks on Thursday, July 11th, we’ve organized a social event at the workshop venue, the FHNW Muttenz. Starting at 19:00 CEST, you can join us for an evening party with finger food, drinks and music.

  • EuroPython 2019: SIM cards for attendees

    Switzerland is often not included in European cell provider’s roaming packages and also not covered by the EU roaming regulation, so you can potentially incur significant charges when going online with your mobile or notebook.

  • Dependencies between Python Standard Library modules

    Glyph’s post about a “kernel python” from the 13th based on Amber’s presentation at PyCon made me start thinking about how minimal standard library could really be. Christian had previously started by nibbling around the edges, considering which modules are not frequently used, and could be removed. I started thinking about a more extreme change, of leaving in only enough code to successfully download and install other packages. The ensurepip module seemed like a necessary component for that, so I looked at its dependencies, with an eye to cutting everything else.

  • Weekly Python StackOverflow Report: (clxxxiv) stackoverflow python report
Syndicate content