Pywbem - A WBEM client and related utilities, written in pure Python.

Overview

Pywbem - A WBEM client and related utilities, written in pure Python

PyPI Version Actions status ReadTheDocs status Coveralls result Supported Python

Overview

Pywbem is a WBEM client and WBEM indication listener and provides related WBEM client-side functionality. It is written in pure Python and runs on Python 2 and Python 3.

WBEM is a standardized approach for systems management defined by the DMTF that is used in the industry for a wide variety of systems management tasks. See WBEM Standards for more information. An important use of this approach is the SMI-S standard defined by SNIA for managing storage.

Functionality

The major components of pywbem are shown in this diagram:

pywbem components

The green components all have Python APIs for use by user applications. The yellow components are command line utilities. The blue components are not part of the pywbem or pywbemtools packages.

The pywbem components all run on the client side and communicate with a remote WBEM server using the standard CIM operations over HTTP (CIM-XML) protocol defined by the DMTF.

Pywbem provides the following Python APIs:

  • WBEM Client Library - An API that supports issuing WBEM operations to a WBEM server, using the CIM operations over HTTP (CIM-XML) protocol defined by the DMTF.
  • WBEM Server Library - An API that encapsulates selected functionality of a WBEM server for use by a WBEM client application, such as determining the Interop namespace and other basic information about the server, or the management profiles advertised by the server.
  • WBEM Indication Listener - An API for creating and managing a thread-based WBEM listener that waits for indications (i.e. event notifications) emitted by a WBEM server using the CIM-XML protocol. The API supports registering callback functions that get called when indications are received by the listener.
  • WBEM Subscription Manager - An API for viewing and managing subscriptions for indications on a WBEM server.
  • MOF Compiler - An API for compiling MOF files or strings into a CIM repository (e.g. on a WBEM server), or for test-compiling MOF.
  • Mock WBEM server - An API for setting up a mocked WBEM server that is used instead of a real WBEM server. This allows setting up well-defined WBEM servers locally that can be used for example for prototyping or testing user applications.

Pywbem provides this command line utility:

  • mof_compiler - A MOF compiler that takes MOF files as input and compiles them into a CIM repository (e.g. on a WBEM server).

The related pywbemtools project provides the following command line utilities:

  • pywbemcli - A client-side command line interface for a WBEM server, supporting a command line mode and an interactive (repl) mode.
  • pywbemlistener - A command that runs and manages WBEM indication listeners that can receive indications from a WBEM server.

Installation

To install the latest released version of pywbem into your active Python environment:

$ pip install pywbem

This will also install any prerequisite Python packages.

Starting with version 1.0.0, pywbem has no OS-level prerequisite packages.

For more details and alternative ways to install, see the Installation section in the pywbem documentation.

Documentation

  • Documentation - Concepts, tutorials, Python API, command line tools, and developer documentation.
  • Tutorial - The tutorials in the documentation are provided as Jupyter notebooks and provide working examples of pywbem API usage.
  • Change log - Detailed change history in the documentation.
  • Presentations - status, concepts, and implementation of pywbem.

Quick Start

The following simple example script lists the namespaces and the Interop namespace in a particular WBEM server:

#!/usr/bin/env python

import pywbem

server_url = 'http://localhost'
user = 'fred'
password = 'blah'

conn = pywbem.WBEMConnection(server_url, (user, password))

server = pywbem.WBEMServer(conn)

print("Interop namespace:\n  %s" % server.interop_ns)

print("All namespaces:")
for ns in server.namespaces:
    print("  %s" % ns)

Project Planning

For each upcoming release, the bugs and feature requests that are planned to be addressed in that release are listed in the issue tracker with an according milestone set that identifies the target release. The due date on the milestone definition is the planned release date. There is usually also an issue that sets out the major goals for an upcoming release.

Planned Next Release

Fix versions of pywbem are released as needed.

The next planned feature version(s) of pywbem can be found by listing the release definition issues.

Contributing

For information on how to contribute to pywbem, see the Contributing section in the pywbem documentation.

License

Pywbem is provided under the GNU Lesser General Public License (LGPL) version 2.1, or (at your option) any later version.

Comments
  • WITHDRAWN Fixes #691 and #569: log of cim operations api and http messages with wbemcli extended to use log

    WITHDRAWN Fixes #691 and #569: log of cim operations api and http messages with wbemcli extended to use log

    Based on Andy's comment, I am withdrawing this PR and submitting pieces of work as separate prs. I will document that list of new PRs as it is submitted.

    Logger function added to recorder. This is no longer a prototype. However, it functionally complete now but has some issues (see Not Done).

    I am keeping this WIP for another day or so while I work out the not done list below.

    Includes:

    1. New LogOperationRecorder class in recorder logs operations request/responses and http request/responses. Note that logging for each can be defined separately so that each can have a destination (file, stderr), log_level(debug, etc) and detail level (how much information is output)
    2. Addition of PywbemLoggers class in _logging that manages loggers creating new named loggers and keeping the information that logging cannot handle (detail level). Includes parsing of the command line parameter for logging so wbemcli and pywbemtools do not have to do this separately.
    3. Add new script test for wbemcli (test_wbemcli.py). Only includes a few tests today but new tests can be easily added.
    4. Extend wbemconnection to add new constructor (enable_logging) that is a boolean. When this is created, the LogOperationRecorder gets the detail level info from PywbemLoggers by logger name.

    Not done:

    1. The tests in test_logging and test_wbemcli are incomplete. COMMENT: Move any new tests forward to new issue
    2. Some of the new code in _logging.py is a hack and just needs refactoring. In fact, I have only lightly tested the final result. Cleaned up. Done
    3. There is no documentation on the logging (or for that matter the statistics) in the documentation. COMMENT: Create new issue
    4. I left the input parameters in their original order for the moment (destination:detail:log_level rather than Andy's proposal for different order. We should discuss the levels of detail (min, all) right now and exactly what they mean. The structure is in place so we can manage this detail level as we want to. Right now detail output 1000 char and all outputs everything. Maybe a hdrs_only or something but not sure exactly what that means. COMMENT: Create new issue
    5. Not displaying enough in wbemcli when logger enabled. Just says logging=true no info about components, etc. Minor. COMMENT: Create new issue
    6. Only outputs logger or test recorder, not both. I know how to extend to do both but wanted to get this much running first. COMMENT: Create new issue
    7. I need to review logging of the wbemconnection itself since it is NOT linked to the other log outputs. The logical way to do this might to be to set a counter that increments for each new connection and this counter also is set into the ops and http logs. COMMENT: Create new issue

    DISCUSSION:

    1. Do we really need to be able to do both log and test recorder at the same time.
    2. Do we need to link the ops/http logs to the connection.
    opened by KSchopmeyer 37
  • Fixes #66: WBEM Listener / Server API

    Fixes #66: WBEM Listener / Server API

    This is an initial stab at addressing issue #66.

    Please review and post comments here.

    The docs for this listener branch are built automatically on RTD, so that the WBEM Listener API can better be reviewed:

    https://pywbem.readthedocs.org/en/listener

    Note there are now two new sections:

    • WBEM server API
    • WBEM listener API

    In addition to the documentation, there is now a tool that demonstrates how to use the WBEM server API: tools/explore.py. Invoke without arguments for help.

    opened by andy-maier 35
  • Packaging burden by breaking out pywbem code as separate libraries

    Packaging burden by breaking out pywbem code as separate libraries

    I understand the desire to make internal code functionality into a separate library, but it comes at a cost. For distributions like fedora that package each python library as a separate package, it requires a maintainer to create a new package, get the package through the approval process, and then maintain/test it over time.

    At the moment those that are involved in pywbem packaging on fedora are considering dropping/orphaning pywbem in fedora as the packaging burden has increased (unless we can find someone to take it and all the new dependencies over). If this occurs a few other packages in fedora which utilize pywbem will get dropped/orphaned too.

    Is anyone here willing to help get these new packages specific to pywbem packaged for fedora and other distributions?

    Maybe pywbem could come up with some other alternative, like git submodule? Keep this needed functionality together and separate for reuse? I'm not familiar with submodules and how difficult that would be do integrated releases in github for example.

    Suggestions/help welcomed

    Thanks

    Ref. https://bugzilla.redhat.com/show_bug.cgi?id=1868128

    type: enhancement resolution: wont fix area: setup 
    opened by tasleson 28
  • Issue #838 (part1): Implement mock of WBEMConnection

    Issue #838 (part1): Implement mock of WBEMConnection

    Initial implementation of pywbem_mock.

    This implements mocks of all of the WBEMConnection methods that contact the wbem server with a local repository that responds to the requests with data from the repository.

    This is not a complete implementation of a WBEMserver and therefore creates a number of simplifications that are documented in the documentation page

    Status Sat 6 jan 2018:

    Note that this fixes the test failure from Friday. That was bad code compounded by fact that each python version has different ordering for dictionaries. V 3.4 ordering caught my instance properties error that depended on property ordering by accident.

    1. Implementation complete and coverage is up to about 90%. There are a number of tests to add but we know that the paths generally work. The only components that I really need to work on to assure quality are . a. EnumerateInstance IncludeQualifiers, property lists, and DeepInheritance (tested but not all of the possible combinations), b. ModifyInstance (complex and may not have tested all options), c. c. c.Associations (am I picking up all of the possible options/variations), d. Do the open/pulls do exactly the same thing as the original operations.

    2. ModifyClass not implemented.

    3. About 600 tests now and 89% coverage of code. Still may be some error conditions not tested.

    Removed WIP status and as far as I am concerned, lets commit this first version and do fixes with issues.

    opened by KSchopmeyer 28
  • Fixes #642: Move from README.md to README.rst and extend the README

    Fixes #642: Move from README.md to README.rst and extend the README

    This also adds a diagram. I am not married to this diagram and suggestions welcome

    It extends the description, etc.

    NOTE: I thought I had set up th pr before but the branch was there but no pr. Not sure why

    Removed the README.md

    opened by KSchopmeyer 26
  • Fixes #414, fixes #454: Separate subscriptions/listeners  into separate modules

    Fixes #414, fixes #454: Separate subscriptions/listeners into separate modules

    Please Review COMMENT 18 aug: KS WIP now because run_cimoperations.py needs update to match last changes. Only changes for subscription and listener code is a) commments, b) run_cimoperaitons test fail.

    Breaks listener and subscription manager apart. Adds at least some support for static filters, subscriptions.

    Discussion: Known issues:

    1. I used two different patterns for the add functions and remove functions. In the add_filters i added an optional attribute to define if the filter is dynamic or static. In the remove indications and filters I modified so we have two different functions remove_static_filter, and remove_dynamic_filter. That creates inconsistency. DISCUSION: What is the most logical pattern for creates and removals now that we really will support static and dynamic filters. Thus, for example
         sub_mgr.add_filter(...dynamic_filter=false)
         sub_mgr.remove_static_filter(...)
    
    1. When creating a static filter, it always creates a new destination. That is probably OK for the moment but not efficient if we are going to do may filters.
    2. Right now I have the indication_id attribute in both the listener and subscription manager. I need to sort out where it really should be. Is this an id for the listener or for the subscription manager. DISCUSSION: Still thinking that one out and not sure if this is really a listener thing or subscription_manager. Note that we really only have one listener for subscription manager at this point.
    3. The use of static is different here than in dsp docs. Our definition is a filter, subscripiton that is not controlled iwhtin the life cycle of a subscription manager instance. The subscripition manager may create and delete static subscriptions but there may also be real static subscriptions in an implementation which cannot ever be deleted. DISCUSSION: Should we be using a different name
    4. the code does not exercise any control over static subscriptions mixed with dynamic filters so far. Should really add a test so that a subsubscription must be static if the filter is not in the dynamic_filter list, etc.
    5. We are not marking static vs dynamic in the name component, etc. for filters and subscriptions. The difference is that dynamics are in the lists maintained in the subscription_manager. But there is no function such is is_dynamic_filter. That is just a comment now.

    Passes tests with the examples code and have not yet run the run_cimoperation.py test. I have not created tests for manual filters, subscriptions.

    This is still a work in progress for today but functionally complete. I need to run tests and we may want to refactor a bit. Note that I am inconsistent between create/remove, etc. on whether the static vs dynamic is a attribute of the call or separate function.

    opened by KSchopmeyer 26
  • Got Error in Windows while executing PyWBEM

    Got Error in Windows while executing PyWBEM

    I'm new to PyWBEM and got this issue while executing this script

    (tools) D:\Soft\PyWBEM\pywbemtools\pywbemtools>workon tools (tools) D:\Soft\PyWBEM\pywbemtools\pywbemtools>make develop File "", line 1 import sys; sys.stdout.write('s.sys.version_info[0:3]) ^ SyntaxError: EOL while scanning string literal File "", line 1 import sys; sys.stdout.write('sys.version_info[0]) ^ SyntaxError: EOL while scanning string literal Traceback (most recent call last): File "", line 1, in TypeError: 'str' object is not callable File "", line 1 $(printf 'try:\n from pbr.version import VersionInfo\nexcept ImportError:\n pass\nelse:\n print(VersionInfo(\042pywbemtools\042).release_string())\n') ^ SyntaxError: invalid syntax File "", line 1 $(printf 'try:\n from pbr.version import VersionInfo\nexcept ImportError:\n pass\nelse:\n print(VersionInfo(\042pywbemtools\042).release_string())\n') ^ SyntaxError: invalid syntax File "", line 1 $(printf 'try:\n from pbr.version import VersionInfo\nexcept ImportError:\n pass\nelse:\n print(VersionInfo(\042pywbemtools\042).release_string())\n') ^ SyntaxError: invalid syntax File "", line 1 $(printf 'try:\n from pbr.version import VersionInfo\nexcept ImportError:\n pass\nelse:\n print(VersionInfo(\042pywbemtools\042).release_string())\n') ^ SyntaxError: invalid syntax File "", line 1 $(printf 'try:\n from pbr.version import VersionInfo\nexcept ImportError:\n pass\nelse:\n print(VersionInfo(\042pywbemtools\042).release_string())\n') ^ SyntaxError: invalid syntax File "", line 1 $(printf 'try:\n from pbr.version import VersionInfo\nexcept ImportError:\n pass\nelse:\n print(VersionInfo(\042pywbemtools\042).release_string())\n') ^ SyntaxError: invalid syntax File "", line 1 $(printf 'try:\n from pbr.version import VersionInfo\nexcept ImportError:\n pass\nelse:\n print(VersionInfo(\042pywbemtools\042).release_string())\n') ^ SyntaxError: invalid syntax File "", line 1 $(printf 'try:\n from pbr.version import VersionInfo\nexcept ImportError:\n pass\nelse:\n print(VersionInfo(\042pywbemtools\042).release_string())\n') ^ SyntaxError: invalid syntax File "", line 1 $(printf 'try:\n from pbr.version import VersionInfo\nexcept ImportError:\n pass\nelse:\n print(VersionInfo(\042pywbemtools\042).release_string())\n') ^ SyntaxError: invalid syntax File "", line 1 $(printf 'try:\n from pbr.version import VersionInfo\nexcept ImportError:\n pass\nelse:\n print(VersionInfo(\042pywbemtools\042).release_string())\n') ^ SyntaxError: invalid syntax wget -q http://pywbem.readthedocs.io/en/latest/_downloads/pywbem_os_setup.sh process_begin: CreateProcess((null), wget -q http://pywbem.readthedocs.io/en/latest/_downloads/pywbem_os_setup.sh, ...) failed. make (e=2): The system cannot find the file specified. make: *** [pywbem_os_setup.sh] Error 2

    (tools) D:\Soft\PyWBEM\pywbemtools\pywbemtools>https://github.com/pywbem/pywbemtools.githttps://github.com/pywbem/pywbemtools.git

    area: devenv resolution: fixed type: cleanup 
    opened by raameshkeerthi 25
  • Fixes #671: Create classes for keeping statistics and add statistics

    Fixes #671: Create classes for keeping statistics and add statistics

    Keeps time statistics on cim_operations. This keeps statistics on time to execute and request/response sizes for the cim operations.

    Implements a Statistics class and connects cim_operations to that class to record execution time, request size, and reply size in that class for each operation type. It saves count, avg time, request size, response size in and exception count in that class for each WBEM operation type by name.

    The Statistics class provides for snapshotting and resetting the statistics in addition to the functions to record each new statistics with start_time() and stop_time()

    NOTE: At this point the statistics are not really general. The class OperationStatistics specializes the statistics for the operations and their is no provision for another class with its specialization at this point.

    Finally, includes ability to disable statistics but I am not really using that capability. You enable statistics for each WBEMConnection.

    In addition, the change adds three attributes to WBEMConnection.

    last_req_len - Always last_reply_len - Always last_operation_time - Only when the enable-stats is set

    ANDY: I goofed and force updated over your changes before I realized you had made them.

    NOTE: This does NOT capture info from the server statistics.

    priority update needed 
    opened by KSchopmeyer 24
  • `python setup.py` failed when ran from taged release tarball

    `python setup.py` failed when ran from taged release tarball

    • Errors: Got error when run python setup.py from release tarball from (https://github.com/pywbem/pywbem/releases/tag/0.12.2)
    ERROR:root:Error parsing
    Traceback (most recent call last):
      File "/home/fge/Downloads/pywbem-0.12.2/.eggs/pbr-4.0.2-py3.6.egg/pbr/core.py", line 96, in pbr
        attrs = util.cfg_to_args(path, dist.script_args)
      File "/home/fge/Downloads/pywbem-0.12.2/.eggs/pbr-4.0.2-py3.6.egg/pbr/util.py", line 258, in cfg_to_args
        pbr.hooks.setup_hook(config)
      File "/home/fge/Downloads/pywbem-0.12.2/.eggs/pbr-4.0.2-py3.6.egg/pbr/hooks/__init__.py", line 25, in setup_hook
        metadata_config.run()
      File "/home/fge/Downloads/pywbem-0.12.2/.eggs/pbr-4.0.2-py3.6.egg/pbr/hooks/base.py", line 27, in run
        self.hook()
      File "/home/fge/Downloads/pywbem-0.12.2/.eggs/pbr-4.0.2-py3.6.egg/pbr/hooks/metadata.py", line 26, in hook
        self.config['name'], self.config.get('version', None))
      File "/home/fge/Downloads/pywbem-0.12.2/.eggs/pbr-4.0.2-py3.6.egg/pbr/packaging.py", line 816, in get_version
        name=package_name))
    Exception: Versioning for this project requires either an sdist tarball, or
    access to an upstream git repository. It's also possible that there is a
    mismatch between the package name in setup.cfg and the argument given to
    pbr.version.VersionInfo. Project name pywbem was given, but was not able to be
    found.
    error in setup command: Error parsing
    /home/fge/Downloads/pywbem-0.12.2/setup.cfg: Exception: Versioning for this
    project requires either an sdist tarball, or access to an upstream git
    repository. It's also possible that there is a mismatch between the package
    name in setup.cfg and the argument given to pbr.version.VersionInfo. Project
    name pywbem was given, but was not able to be found.
    
    • Root casue pbr.version.VersionInfo failed to find out the version of current project. The pbr get version from any of below. (https://git.openstack.org/cgit/openstack-dev/pbr/tree/pbr/packaging.py)

      • Get version from git repo: _get_version_from_git().
      • Get from _get_version_from_pkg_metadata which are ['PKG-INFO', 'METADATA'].
      • Environment variable PBR_VERSION or OSLO_PACKAGE_VERSION.
    • How to fix: Add PKG-INFO or METADATA file.

    • Workaround: env PBR_VERSION=0.12.2 python setup.py

    type: enhancement area: setup resolution: fixed release: user generated 
    opened by cathay4t 23
  • Fixes #9, Fixes #329: implement DMTF Pull Operations with tests

    Fixes #9, Fixes #329: implement DMTF Pull Operations with tests

    This commit includes OpenEnumerateInstancesWithPath, PullInstancesWithPath, CloseEnumeration, OpenEnumerateInstancePaths, and PullInstancePaths. The documentation is defined for all but OpenEnumerateInstancePaths and PullInstancePaths.

    The mock test is broken but there is a first set of tests in run_cimoperations.py that executes a number of variations of OpenEnumerateInstancePaths with pull and close against OpenPegasus.

    NOT READY FOR MERGE.

    Here is first cut of part ready for review and comment. In particular, this currently fails mock and only about hallf of operaitons there. Since the documentaiton for each operation is enormous would like to get the first one clean (OpenEnumerateInstances) before doing the other opens.

    Also some code is hacky and we should discuss the enum_context thing class.

    Anyway, it actually works now.

    opened by KSchopmeyer 23
  • SLP support

    SLP support

    slp is the defined discovery mechanism for SNIA smi and DMTF WBEM. However, any slp requests would have to be processed outside pywbem today and further, the only apparent python slp implementation is very old meaning that there is no easy way to introduce slp info within a python/pywbem environment. There are a couple of possibilities here:

    1. a new, improved, slp interface as a github project etc.
    2. let users try to use the existing repositories (see http://openslp.svn.sourceforge.net/)
    3. introduce an slp interface within pwbem

    Looking for ideas about what we should do

    area: code type: enhancement resolution: wont fix 
    opened by KSchopmeyer 23
  • Remaining Python 2.7 / 3.5 deprecation warnings

    Remaining Python 2.7 / 3.5 deprecation warnings

    The setup-python action used in the test workflow invokes pip. On Python 2.7 and 3.5, the pip invocation displays a Python deprecation message:

    DEPRECATION: Python 2.7 will reach the end of its life on January 1st, 2020. Please upgrade your Python as
    Python 2.7 won't be maintained after that date. A future version of pip will drop support for Python 2.7. 
    More details about Python 2support in pip, can be found at
    https://pip.pypa.io/en/latest/development/release-process/#python-2-support
    

    That warning shows up in the actions summary and clutters up the summary. The same happens on Python 3.5.

    When running pip locally, it is possible to disable that warning by setting the environment variable:

    PIP_NO_PYTHON_VERSION_WARNING=1
    

    PR #2962 sets that environment variable in the workflow step that invokes the setup-python action. However, while the environment variable is listed in the log, it seems to be ignored because the warning is still shown.

    The env var PIP_DISABLE_PIP_VERSION_CHECK=1 works as expected with the setup-python action.

    Opened issue https://github.com/actions/setup-python/issues/575 to follow up.

    area: test type: cleanup 
    opened by andy-maier 0
  • Do not retry HTTP POST upon read timeouts

    Do not retry HTTP POST upon read timeouts

    The current implementation retries POST operations, because most POST operations in WBEM are actually read-only. Some of them are not however, and for those this can lead to duplicate execution.

    See https://github.com/pywbem/pywbem/blob/master/pywbem/_cim_operations.py#L208 which sets POST as the only method to retry.

    area: code type: bug roll back needed 
    opened by andy-maier 2
  • Migrate cythonized archive build off of setuptools as a frontend

    Migrate cythonized archive build off of setuptools as a frontend

    PR #2902 transitioned the pywbem distribution archive build away from using setup.py to using the "build" package. That worked for the normal wheel archive, but not for the cythonized archive. PRs #2905 and #2906 were needed to get that back to work and right now, the cythonized archive is again built using setup.py.

    This issue is to transition the build of the cythonized archive build off of setuptools as a frontend.

    type: enhancement area: test 
    opened by andy-maier 0
  • XML QUALIFIER NAME element order

    XML QUALIFIER NAME element order

    The order of XML element names output by Open Pegasus response to class associators request CLASS NAME element differs between pywbem > 3.5 and older versions of pywbem at least in a pywbemtools test that does a class associators request against pywbem mock. The ordering of the components of the QUALIFIER NAME elements is different as shown below. In one case they appear to be lexically ordered. In the other, not so much. This appeared when a test was created to test the class associators response with --outputformat xml and using the new script simple_three-ns-model-script.py but the same class definition exists in the test file simple_mock_model

    
    Python <= 3.5
    <CLASS NAME="CIM_FooRef2" SUPERCLASS="CIM_BaseRef">
          <QUALIFIER NAME="Description" OVERRIDABLE="true" PROPAGATED="false" TOSUBCLASS="true" TRANSLATABLE="true" TYPE="string">
               <VALUE>Class 2 that is referenced</VALUE>
          </QUALIFIER>
     </CLASS>
    
    

    Order output when running with python version ge 3.5

    <CLASS NAME="CIM_FooRef2" SUPERCLASS="CIM_BaseRef">
        <QUALIFIER NAME="Description" OVERRIDABLE="true" PROPAGATED="false" TOSUBCLASS="true" TRANSLATABLE="true" TYPE="string">
               <VALUE>Class 2 that is referenced</VALUE>
         </QUALIFIER>
     </CLASS>
    
    

    This was found when running a test

    area: code type: bug 
    opened by KSchopmeyer 1
  • Coverity corrections

    Coverity corrections

    Running coverity on version 0.15.0 which is the latest packaged version for fedora is reporting some errors. I believe this PR addresses some potential issues that should be considered for inclusion.

    update needed 
    opened by tasleson 5
  • Drop support for Python 3.5

    Drop support for Python 3.5

    With the upgrade of windows-latest on GitHub Actions from Windows Server 2019 to Windows Server 2022 (see here), a number of compile errors appeared in our Window environments on Python 3.5 with minimum package levels (for: cffi, psutil, pyrsistent).

    By changing minimum versions of sometimes setuptools, and sometimes the package itself, the errors for cffi and psutil could be avoided. However, it is not clear what to do for pyrsistent.

    While it would be possible to change the Windows level from windows-latest back to windows-2019, we wanted to do that only on the environments where it fails, and that creates additional complexity in the test workflow file.

    In addition, support for Python 3.5 has created significant work in the past and should be expected to create more work in the future.

    Therefore, the proposal is to drop support for Python 3.5 with pywbem 1.5.0 and pywbemtools 1.1.0.

    area: setup waiting type: cleanup 
    opened by andy-maier 3
Releases(1.5.0)
Owner
PyWBEM Projects
Organization for the PyWBEM projects (e.g. PyWBEM Client)
PyWBEM Projects
This is a Client-Server-System which can share the screen from the server to client and in the other direction.

Screenshare-Streaming-Python This is a Client-Server-System which can share the screen from the server to client and in the other direction. You have

VFX / Videoeffects Creator 1 Nov 19, 2021
This is a Client-Server-System which can send audio from a microphone from the server to client and in the other direction.

Audio-Streaming-Python This is a Client-Server-System which can send audio from a microphone from the server to client and in the other direction. You

VFX / Videoeffects Creator 0 Jan 5, 2023
Client library for relay - a service for relaying server side messages to the client side browsers via websockets.

Client library for relay - a service for relaying server side messages to the client side browsers via websockets.

getme 1 Nov 10, 2021
Qobuz-rpc - A simple discord rich presence client for qobuz written in Python

qobuz-rpc A simple discord rich presence client for qobuz written in Python It's

Raphael O. 13 Dec 15, 2022
Dark Utilities - Cloudflare Uam Bypass

Dark Utilities - Cloudflare Uam Bypass

Inplex-sys 26 Dec 14, 2022
Lightweight asyncio compatible utilities for consuming broker messages.

A simple asyncio compatible consumer for handling amqp messages.

Mehdi Kamani 3 Apr 10, 2022
A pure python implementation of multicast DNS service discovery

python-zeroconf Documentation. This is fork of pyzeroconf, Multicast DNS Service Discovery for Python, originally by Paul Scott-Murphy (https://github

Jakub Stasiak 483 Dec 29, 2022
A pure-Python KSUID implementation

Svix - Webhooks as a service Svix-KSUID This library is inspired by Segment's KSUID implementation: https://github.com/segmentio/ksuid What is a ksuid

Svix 83 Dec 16, 2022
Python Scrcpy Client - allows you to view and control android device in realtime

Python Scrcpy Client This package allows you to view and control android device in realtime. Note: This gif is compressed and experience lower quality

LengYue 126 Jan 2, 2023
A simple DHCP server and client simulation with python

About The Project This is a simple DHCP server and client simulation. I implemented it for computer network course spring 2021 The client can request

shakiba 3 Feb 8, 2022
A simple multi-threaded time server and client in python.

time-server-client A simple multi-threaded time server and client in Python. This uses the latest match/case command found in Python 3.10 so requires

Zeeshan Mulk 1 Jan 29, 2022
A python socket.io client for Roboteur

Roboteur Client Example TODO Basic setup Install the requirements: $ pip install -r requirements.txt Run the application: $ python -m roboteur_client

Barry Buck 1 Oct 13, 2021
Very simple FTP client, sync folder to FTP server, use python, opensource

ftp-sync-python Opensource, A way to safe your data, avoid lost data by Virus, Randsomware Some functions: Upload a folder automatically to FTP server

null 4 Sep 13, 2022
Easy to use gRPC-web client in python

pyease-grpc Easy to use gRPC-web client in python Tutorial This package provides a requests like interface to make calls to gRPC-Web servers.

Sudipto Chandra 4 Dec 3, 2022
A Simplest TCP client and echo server

Простейшие TCP-клиент и эхо-сервер Цель работы Познакомиться с приемами работы с сетевыми сокетами в языке программирования Python. Задания для самост

Юля Нагубнева 1 Oct 25, 2021
API to establish connection between server and client

Socket-programming API to establish connection between server and client, socket.socket() creates a socket object that supports the context manager ty

Muziwandile Nkomo 1 Oct 30, 2021
NanoChat - nano chat server and client

NanoChat This is a work in progress! NanoChat is an application for connecting with your friends using Python that uses ONLY default Python libraries.

Miss Bliss 1 Nov 13, 2021
Secure connection between tenhou Window client and server.

tenhou-secure The tenhou Windows client looks awesome. However, the traffic between the client and tenhou server is NOT encrypted, including your uniq

null 1 Nov 11, 2021
A server and client for passing data between computercraft computers/turtles across dimensions or even servers.

ccserver A server and client for passing data between computercraft computers/turtles across dimensions or even servers. pastebin get zUnE5N0v client

null 1 Jan 22, 2022