The can package provides controller area network support for Python developers

Overview

python-can

Latest Version on PyPi Supported Python implementations Downloads on PePy Monthly downloads on PePy This project uses the black formatter.

Documentation Travis CI Server for develop branch Test coverage reports on Codecov.io Mergify Status

The Controller Area Network is a bus standard designed to allow microcontrollers and devices to communicate with each other. It has priority based bus arbitration and reliable deterministic communication. It is used in cars, trucks, boats, wheelchairs and more.

The can package provides controller area network support for Python developers; providing common abstractions to different hardware devices, and a suite of utilities for sending and receiving messages on a can bus.

The library currently supports Python 3.6+ as well as PyPy 3 and runs on Mac, Linux and Windows.

Library Version Python
2.x 2.6+, 3.4+
3.x 2.7+, 3.5+
4.x (currently on develop) 3.6+

Features

  • common abstractions for CAN communication
  • support for many different backends (see the docs)
  • receiving, sending, and periodically sending messages
  • normal and extended arbitration IDs
  • CAN FD support
  • many different loggers and readers supporting playback: ASC (CANalyzer format), BLF (Binary Logging Format by Vector), CSV, SQLite and Canutils log
  • efficient in-kernel or in-hardware filtering of messages on supported interfaces
  • bus configuration reading from a file or from environment variables
  • command line tools for working with CAN buses (see the docs)
  • more

Example usage

# import the library
import can

# create a bus instance
# many other interfaces are supported as well (see below)
bus = can.Bus(interface='socketcan',
              channel='vcan0',
              receive_own_messages=True)

# send a message
message = can.Message(arbitration_id=123, is_extended_id=True,
                      data=[0x11, 0x22, 0x33])
bus.send(message, timeout=0.2)

# iterate over received messages
for msg in bus:
    print("{:X}: {}".format(msg.arbitration_id, msg.data))

# or use an asynchronous notifier
notifier = can.Notifier(bus, [can.Logger("recorded.log"), can.Printer()])

You can find more information in the documentation, online at python-can.readthedocs.org.

Discussion

If you run into bugs, you can file them in our issue tracker on GitHub.

There is also a python-can mailing list for development discussion.

Stackoverflow has several questions and answers tagged with python+can.

Wherever we interact, we strive to follow the Python Community Code of Conduct.

Contributing

See doc/development.rst for getting started.

Comments
  • Dropped CAN frames using Socketcan on Raspberry Pi

    Dropped CAN frames using Socketcan on Raspberry Pi

    I'm using this library for logging data sent on a CAN-Bus running at 500 kbit/s. The data is sent roughly at 1 kHz.

    I have set up a CAN Notifier to receive the data in a thread and the data is then written to a queue in a listener:

    class LoggerBufferedListener(can.Listener):
        def __init__(self, log_opened_event: Event):
            self._log_opened_event = log_opened_event
            self._buffer = Queue()
            self._lock = Lock()
            self._closed = False
    
        def set_closed(self, closed):
            with self._lock:
                self._closed = closed
    
        def is_closed(self):
            with self._lock:
                return self._closed
    
        def on_message_received(self, msg: can.Message):
            # Only put the CAN-Bus message into the buffer if it is a close/open command or we are currently logging data
            # and the arbitration ID matches any of the logger IDs
            if msg.arbitration_id == CANLogger.ID_CLOSE_OPEN or \
                    (self._log_opened_event.is_set() and
                     msg.arbitration_id in [logger['id'] for logger in CANLogger.Loggers]):
                self.put_nowait(msg)
    
        def get(self):
            return self._buffer.get()
    
        def get_nowait(self):
            try:
                return self._buffer.get_nowait()
            except queue.Empty:
                return None
    
        def put(self, item, force=False):
            if not force:
                if self.is_closed():
                    return  # Return if the reader is closed
    
            self._buffer.put(item)
    
        def put_nowait(self, item):
            if self.is_closed():
                return  # Return if the reader is closed
    
            try:
                self._buffer.put_nowait(item)
            except queue.Full:
                Logger.exception('LoggerBufferedListener: Buffer is full')
    

    Another thread is doing nothing else than calling the get() method, the messages are then unpacked and converted to SI-units similar to how I did it in the viewer program:

    https://github.com/hardbyte/python-can/blob/9f6f9188ff4ad78b0162925781d24625ca65ac50/can/viewer.py#L135-L159

    The data is then written to RAM. After the logged is closed the data is then stored in an Influx database.

    However it seems that messages are dropped somewhere, as the data often has gaps in it.

    I'm using a MCP2515 and have enabled it using the following overlays in /boot/config.txt:

    dtoverlay=mcp2515-can0,oscillator=16000000,interrupt=12
    dtoverlay=spi0-hw-cs
    

    My question is basically if anyone has any experience using Socketcan on a Raspberry Pi. Do you guys believe it's a hardware or software issue? I've considered using a different CAN tranceiver than the MCP2515 just to check if that is the culprit. If that does not work I might try to implement the logging in C instead, but would prefer to use Python, as that makes all the parsing of data and writing to the database much easier.

    opened by Lauszus 40
  • socketcan Exchanging data between 2 bus - Time limited

    socketcan Exchanging data between 2 bus - Time limited

    I am trying to exchange data between 2 bus - sending data from bus 1 to bus 2 - quit simple would you say? It all starts fine sending all message from bus 1 to bus 2 and the other way around, but then after about 500ms and 150 frames sent. The exchange stops....is there any reason why the code below would do so?

    from multiprocessing import Process
    import can
    
    bus1 = can.interface.Bus(bustype='socketcan', channel='can0', bitrate=500000)
    bus2 = can.interface.Bus(bustype='socketcan', channel='can2', bitrate=500000)
    #
    
        
    def loop_a():
        for msg in bus2:
                bus1.send(msg,timeout=None)
    
    
    def loop_b():
        for msg in bus1:
                bus2.send(msg,timeout=None)
    
    if __name__ == '__main__':
            Process(target=loop_a).start()
            Process(target=loop_b).start()
    
    question minor 
    opened by Bobet21 37
  • Trc file support

    Trc file support

    With this i added basic support for the TRC file format as logging for can messages. There is only a very basic support at the moment but comments are welcome on what file versions might be relevant and if the basic code looks good

    opened by pkess 32
  • Version bump CI tools

    Version bump CI tools

    The automated static analysis tools are updated to their most recent version.

    EDIT: I basically updated the tools in requirements-lint.txt and some images in Travis CI. Then I and re-ran the formatter, which causes much of the diff. I also removed the formatting job from Travis as it was already done by Github actions. I removed the normal testing from Travis, as it is much easier to specify in Github actions (and we now also test more platforms, like properly test on macOS!). We now also test on newer versions of Python as well (currently up to 3.10.0-alpha.4) and on Pypy on all platforms (also new).

    enhancement QA 
    opened by felixdivo 26
  • Do you use python-can? Tell us!

    Do you use python-can? Tell us!

    This is not an issue so much as a lightweight way of gathering information on who is using python-can. This is mostly to satisfy our curiosity, but might also help us decide how to evolve the project.

    So, if you use python-can, please post here and tell us more!

    question 
    opened by hardbyte 26
  • Broken Install - PyPI Release 3.2.0

    Broken Install - PyPI Release 3.2.0

    Related to #520

    Looks like a similar issue has come up in the latest release?

    $ sudo chroot /tmp/make_image.26839.root /usr/local/bin/pip2 install python-can evdev
    Requirement already satisfied: python-can in /usr/local/lib/python2.7/dist-packages
    Collecting evdev
      Using cached https://files.pythonhosted.org/packages/fe/6e/3fa84a43571dec4d00dc26befccc9867b6b3263651531cbc1345f718860f/evdev-1.2.0.tar.gz
    Requirement already satisfied: typing in /usr/local/lib/python2.7/dist-packages (from python-can)
    Collecting windows-curses (from python-can)
      Could not find a version that satisfies the requirement windows-curses (from python-can) (from versions: )
    No matching distribution found for windows-curses (from python-can)
    You are using pip version 9.0.1, however version 19.1.1 is available.
    You should consider upgrading via the 'pip install --upgrade pip' command.
    
    bug critical os:windows 
    opened by phil-marble 25
  • What to do in 2020 - Python 2 EOL

    What to do in 2020 - Python 2 EOL

    Being the last of the 2.x series, 2.7 will have an extended period of maintenance. Specifically, 2.7 will receive bugfix support until January 1, 2020. After the last release, 2.7 will receive no support.

    It's no secret that Python 2 is reaching its end of life.

    What do we do from then on? Should we just document which version was the last to support Python 2 + 3 and then do a (possibly incremental) cleanup of the code and only support Python 3 from then on? We could do that in a major version bump (like maybe 4.0).

    I would vote for exactly that. Do we all agree on that?

    question major 
    opened by felixdivo 25
  • Assertion error when trying to parse a legit CANoe generated BLF file

    Assertion error when trying to parse a legit CANoe generated BLF file

    I'm trying to parse a BLF using this approach:

    import can
    from pprint import pprint as pp
    
    filename = "logfile.blf"
    logging = can.BLFReader(filename)
    logging = list(logging)
    pp(logging)
    

    and get

    Traceback (most recent call last):
      File "D:\eclipse-workspace\blf2csv\pythoncan_blf2csv.py", line 7, in <module>
        logging = list(logging)
      File "C:\Users\my_user_name\AppData\Local\Python\Python36\lib\site-packages\can\io\blf.py", line 129, in __iter__
        assert header[0] == b"LOBJ", "Parse error"
    AssertionError: Parse error
    

    The file is legit (I can convert it to CSV using Vector CANoe Tool >> Log File Conversion dialog (so I can convert a single file but looked at python-can as a means to do a batch conversion of multiple log files)).

    bug 
    opened by z33kz33k 24
  • implemented FD for Pcan

    implemented FD for Pcan

    I have implemented FD support for PCAN (solving #507). This code has been tested manually on PCAN-FD hardware.

    Points to be discussed:

    1. Parameters for the bit rate are passed as keyword args. Should this be switched to be a single string? (this is what the Pcan API accepts). The benefit to switching would be a simpler interface.
    2. Messages with a non standard message size are padded right now with zeros. Should we allow for an option to configure the padding? What should the default padding be?
    enhancement backend:pcan 
    opened by bmeisels 22
  • New location for scripts

    New location for scripts

    This PR moved the scripts to a new location. For that, I had to change how pytest is configured to still include the scripts in the coverage data.

    Preparation for Lauszus/python_can_viewer#2.

    minor api docs testing 
    opened by felixdivo 22
  • Add interprocess virtual bus

    Add interprocess virtual bus

    This PR adds a virtual interface, that allows multiple processes to exchange can data. This is done by wrapping the CAN frames in IPv6/4 packets and sending them to a multicast group. The wrapping is done using MessagePack as proposed by @windelbouwman. That theoretically allows processes running other software than this one to interoperate with python-can, though I doubt it will used as that much. The TTL of the IP packets is set to one by default, disallowing the packet to escape the localhost. It is configurable however, and would allow the communicating processes to run on different machines as well. However this has not been tested.

    Things to discuss before this can be merged:

    • [x] How shall it be called? virtual_interprocess, can_over_ip? Other suggestions? -> I would opt for can_over_ip.
    • [x] How does this relate to the current virtual interface? Is it a replacement, or an addition? In principle, it is at feature-rich as the current virtual interface, but might be a bit slower and requires an external library. I would suggest that it is a addition. Shall msgpack be added as a general required package? -> added to the required ones as it is tiny and does not have any transitive dependencies
    • [x] Do we want to provide the MessagePack wrapping of the CAN frames to other interfaces or the user as well? It might be useful beyond this interface at some point and is fairly general. -> Can still be done

    Things for me to do

    • [x] implement receive_own_messages -> raise warning if used for now
    • [x] add tests
    • [x] add docs/examples
    • [x] register as an interface

    Closes #530.

    enhancement api backend:virtual os:linux os:macOS 
    opened by felixdivo 20
  • Functionalities of send_periodic()

    Functionalities of send_periodic()

    Hello! Sorry if this has already been discussed somewhere else but: I need to send multiple periodic messages that also need to be modified in the long run, the trigger event is a user input in order to try and make test bench power up. In the docs I read:

    The task will be active until one of the following conditions are met: - the (optional) duration expires - the Bus instance goes out of scope - the Bus instance is shutdown - :meth:stop_all_periodic_tasks is called - the task's :meth:~can.broadcastmanager.CyclicTask.stop method is called.

    Also when i perform a send_periodic() a new task is returned, just a clarification: does the task need to stay on scope or is it the can.interface.Bus instance? Should I keep a dictionary { 'can0': { arb_id: taks } 'can1': { arb_id: taks } }

    And simply update the task data at occurance?

    opened by questberna 0
  • Update PCAN Basic to 4.6.2.753

    Update PCAN Basic to 4.6.2.753

    @lumagi Since you have a PEAK device, could you check whether "channel": channel.device_name + str(channel.controller_number) is correct?

    It is used in can.detect_available_configs("pcan")

    backend:pcan 
    opened by zariiii9003 1
  • CI skips some of the SocketCAN unit tests

    CI skips some of the SocketCAN unit tests

    Describe the bug

    The SocketCAN tests are only executed when the environment variable TEST_SOCKETCAN is present. The variable was likely introduced in the Travis CI environment and passed into test execution via tox. I noticed that it is no longer present in the current GitHub Workflow CI environment. This causes several of the SocketCAN tests to be skipped.

    Updating the pipeline would include two things:

    • Executing test/open_vcan.sh on Linux machines
    • Adding the environment variable TEST_SOCKETCAN or removing it and simply executing these tests for all Linux systems

    I know that workflow scripts have root permission on the GitHub runners. But I wasn't able to check if they also have capability NET_ADMIN to open vcan interfaces. Additionally, I wasn't sure if I could and didn't want to open a PR and mess with the workflow pipeline before opening an issue first. @zariiii9003 was the variable removed on purpose? If not, I can volunteer a patch, but I wanted to ask for some feedback first.

    bug 
    opened by lumagi 9
  • Unify bit timings with separate class for CAN FD

    Unify bit timings with separate class for CAN FD

    This is a continuation of #614 and #615. I would like to hear your opinions before i waste my time on writing tests and docs.

    I made the following changes:

    • Create a separate class for CANFD. In my opinion the bit timing requirements for CAN2.0 and CANFD are just too different to use the same class for both.
    • Validate bit timings in __init__ method
    • Add multiple constructors to avoid too many optional parameters. It is now possible to create an instance though BitTiming(**kwargs), BitTiming.from_registers(**kwargs) and BitTiming.from_sample_point(**kwargs)
    • The bit timing classes inherit from typing.Mapping. Now the user can call dict(timing) to get a dictionary of the bit timing parameters. This should make it easier to save the parameters to a config file.
    • Solve the configuration loading problems of #1460

    Interface implementations should add a single parameter like timing: Union[BitTiming, BitTimingFd]. It would take precedence over other parameters and provide a simple API for the user. The docstring of the parameter should tell the users which values for f_clock are accepted.

    enhancement api 
    opened by zariiii9003 4
Releases(v4.1.0)
  • v4.1.0(Nov 24, 2022)

    Installation

    Available on PyPi https://pypi.org/project/python-can/4.1.0/

    pip install python-can==4.1.0
    

    Changes

    Breaking Changes

    • windows-curses was moved to optional dependencies (#1395). Use pip install python-can[viewer] if you are using the can.viewer script on Windows.
    • The attributes of can.interfaces.vector.VectorChannelConfig were renamed from camelCase to snake_case (#1422).

    Features

    IO

    • The canutils logger preserves message direction (#1244) and uses common interface names (e.g. can0) instead of just channel numbers (#1271).
    • The can.logger script accepts the -a, --append option to add new data to an existing log file (#1326, #1327, #1361). Currently only the blf-, canutils- and csv-formats are supported.
    • All CLI extra_args are passed to the bus, logger and player initialisation (#1366).
    • Initial support for TRC files (#1217)

    Type Annotations

    • python-can now includes the py.typed marker to support type checking according to PEP 561 (#1344).

    Interface Improvements

    • The gs_usb interface can be selected by device index instead of USB bus/address. Loopback frames are now correctly marked with the is_rx flag (#1270).
    • The PCAN interface can be selected by its device ID instead of just the channel name (#1346).
    • The PCAN Bus implementation supports auto bus-off reset (#1345).
    • SocketCAN: Make find_available_interfaces() find slcanX interfaces (#1369).
    • Vector: Add xlGetReceiveQueueLevel, xlGenerateSyncPulse and xlFlushReceiveQueue to xldriver (#1387).
    • Vector: Raise a CanInitializationError, if the CAN settings can not be applied according to the arguments of VectorBus.__init__ (#1426).
    • Ixxat bus now implements BusState api and detects errors (#1141)

    Bug Fixes

    • Improve robustness of USB2CAN serial number detection (#1129).
    • Fix channel2int conversion (#1268, #1269).
    • Fix BLF timestamp conversion (#1266, #1273).
    • Fix timestamp handling in udp_multicast on macOS (#1275, #1278).
    • Fix failure to initiate the Neousys DLL (#1281).
    • Fix AttributeError in IscanError (#1292, #1293).
    • Add missing vector devices (#1296).
    • Fix error for DLC > 8 in ASCReader (#1299, #1301).
    • Set default mode for FileIOMessageWriter to wt instead of rt (#1303).
    • Fix conversion for port number from config file (#1309).
    • Fix fileno error on Windows (#1312, #1313, #1333).
    • Remove redundant writer.stop() call that throws error (#1316, #1317).
    • Detect and cast types of CLI extra_args (#1280, #1328).
    • Fix ASC/CANoe incompatibility due to timestamp format (#1315, #1362).
    • Fix MessageSync timings (#1372, #1374).
    • Fix file name for compressed files in SizedRotatingLogger (#1382, #1683).
    • Fix memory leak in neoVI bus where message_receipts grows with no limit (#1427).
    • Raise ValueError if gzip is used with incompatible log formats (#1429).
    • Allow restarting of transmission tasks for socketcan (#1440)

    Miscellaneous

    • Allow ICSApiError to be pickled and un-pickled (#1341)
    • Sort interface names in CLI API to make documentation reproducible (#1342)
    • Exclude repository-configuration from git-archive (#1343)
    • Improve documentation (#1397, #1401, #1405, #1420, #1421, #1434)
    • Officially support Python 3.11 (#1423)
    • Migrate code coverage reporting from Codecov to Coveralls (#1430)
    • Migrate building docs and publishing releases to PyPi from Travis-CI to GitHub Actions (#1433)
    Source code(tar.gz)
    Source code(zip)
  • v4.1.0a2(Nov 18, 2022)

  • 4.1.0-alpha1(Nov 16, 2022)

  • 4.1.0-alpha0(Nov 15, 2022)

    What's Changed

    • Fix guaranteed crash when using usb2can by @felixdivo in https://github.com/hardbyte/python-can/pull/1249
    • Update history & contributors by @hardbyte in https://github.com/hardbyte/python-can/pull/1251
    • If parsed data has shortened, overwrite end of line with spaces by @simonkerscher in https://github.com/hardbyte/python-can/pull/1201
    • Pass flags instead of flags_t type for USB2CAN by @jacobian91 in https://github.com/hardbyte/python-can/pull/1252
    • [IO][ASC]: fix data length by @jazi007 in https://github.com/hardbyte/python-can/pull/1246
    • ASCReader bugfix by @zariiii9003 in https://github.com/hardbyte/python-can/pull/1257
    • [IO][canutils]: add direction support by @jazi007 in https://github.com/hardbyte/python-can/pull/1244
    • Fix BLF timestamp conversion by @zariiii9003 in https://github.com/hardbyte/python-can/pull/1273
    • Fix channel2int conversion by @zariiii9003 in https://github.com/hardbyte/python-can/pull/1269
    • Update the black formatter to stable release by @felixdivo in https://github.com/hardbyte/python-can/pull/1279
    • [IO][canutils]: use common CAN interface names in generated logfile by @hartkopp in https://github.com/hardbyte/python-can/pull/1271
    • %d format is for a number, not str by @pierreluctg in https://github.com/hardbyte/python-can/pull/1281
    • Fix AttributeError in IscanError by @zariiii9003 in https://github.com/hardbyte/python-can/pull/1293
    • add missing vector devices by @chrisoro in https://github.com/hardbyte/python-can/pull/1296
    • Fix timestamp handling in udp_multicast on macOS by @felixdivo in https://github.com/hardbyte/python-can/pull/1278
    • Test python 3.11 in CI by @zariiii9003 in https://github.com/hardbyte/python-can/pull/1302
    • Default mode for FileIOMessageWriter should be wt by @pierreluctg in https://github.com/hardbyte/python-can/pull/1303
    • Fix fileno error on Windows (robotell bus) by @gribera in https://github.com/hardbyte/python-can/pull/1313
    • Improve gs_usb usability and fix loopback frames by @chemicstry in https://github.com/hardbyte/python-can/pull/1270
    • Remove redundant writer.stop call that throws error by @j-c-cook in https://github.com/hardbyte/python-can/pull/1317
    • Clean up comment after !1302 by @felixdivo in https://github.com/hardbyte/python-can/pull/1322
    • ASCReader: Fix error for DLC > 8 by @zariiii9003 in https://github.com/hardbyte/python-can/pull/1301
    • Enhance can.logger to consider the append option by @j-c-cook in https://github.com/hardbyte/python-can/pull/1327
    • Fix fileno error on Windows (Serial bus) by @MattWoodhead in https://github.com/hardbyte/python-can/pull/1333
    • fix typing in add_listener and remove_listener by @tamenol in https://github.com/hardbyte/python-can/pull/1335
    • Allow ICSApiError to be pickled and un-pickled by @pierreluctg in https://github.com/hardbyte/python-can/pull/1341
    • Sort interface names, to make documentation reproducible by @umlaeute in https://github.com/hardbyte/python-can/pull/1342
    • Exclude repository-configuration from git-archive by @umlaeute in https://github.com/hardbyte/python-can/pull/1343
    • Add py.typed file and distribute it upon installation by @felixdivo in https://github.com/hardbyte/python-can/pull/1344
    • Add device_id parameter to PcanBus constructor by @lumagi in https://github.com/hardbyte/python-can/pull/1346
    • Detect types in _parse_additonal_config by @zariiii9003 in https://github.com/hardbyte/python-can/pull/1328
    • Finds USB2CAN Serial Number by USB Name by @melloa in https://github.com/hardbyte/python-can/pull/1129
    • Raise appropriate error message when append is not possible by @j-c-cook in https://github.com/hardbyte/python-can/pull/1361
    • Add file_size() function to FileIOMessageWriter by @zariiii9003 in https://github.com/hardbyte/python-can/pull/1367
    • Fix race condition in back2back_test for UDP multicast bus by @lumagi in https://github.com/hardbyte/python-can/pull/1349
    • Refactor for mypy friendly version checks by @zariiii9003 in https://github.com/hardbyte/python-can/pull/1371
    • Write 3 ms digits to ascii to resolve CANoe bug by @j-c-cook in https://github.com/hardbyte/python-can/pull/1362
    • Pass CLI extra_args to Logger initialisation by @zariiii9003 in https://github.com/hardbyte/python-can/pull/1366
    • Add Parameter for Enabling PCAN Auto Bus-Off Reset by @1atabey1 in https://github.com/hardbyte/python-can/pull/1345
    • fix: conversion for port number by @Thepowa753 in https://github.com/hardbyte/python-can/pull/1309
    • Replace socket.error with OSError by @zariiii9003 in https://github.com/hardbyte/python-can/pull/1373
    • Improve MessageSync timings by @zariiii9003 in https://github.com/hardbyte/python-can/pull/1374
    • Fix _default_name for compressed files by @j-c-cook in https://github.com/hardbyte/python-can/pull/1383
    • socketcan: Make find_available_interfaces() find slcanX interfaces by @msalau in https://github.com/hardbyte/python-can/pull/1369
    • Extend XL api wrapper by @zariiii9003 in https://github.com/hardbyte/python-can/pull/1387
    • Vector init refactor by @zariiii9003 in https://github.com/hardbyte/python-can/pull/1389
    • Test on vector virtual bus if XL API is available by @zariiii9003 in https://github.com/hardbyte/python-can/pull/1390
    • Provide meaningful error message for xlGetApplConfig error by @zariiii9003 in https://github.com/hardbyte/python-can/pull/1392
    • Pass file mode to compress function by @j-c-cook in https://github.com/hardbyte/python-can/pull/1384
    • Update BufferedReader.get_message docstring by @barbacbd in https://github.com/hardbyte/python-can/pull/1397
    • Move windows-curses dependency to an optional extra by @Hnasar in https://github.com/hardbyte/python-can/pull/1395
    • Test load_config() by @nertpinx in https://github.com/hardbyte/python-can/pull/1396
    • Modify file_size help doc string by @j-c-cook in https://github.com/hardbyte/python-can/pull/1401
    • Fix Sphinx warnings by @zariiii9003 in https://github.com/hardbyte/python-can/pull/1405
    • Explicitly set supported file formats by @zariiii9003 in https://github.com/hardbyte/python-can/pull/1406
    • setup.cfg: Use license_files instead of license_file by @nertpinx in https://github.com/hardbyte/python-can/pull/1408
    • Update github actions by @zariiii9003 in https://github.com/hardbyte/python-can/pull/1409
    • Improve vector documentation by @zariiii9003 in https://github.com/hardbyte/python-can/pull/1420
    • Update docs and examples by @zariiii9003 in https://github.com/hardbyte/python-can/pull/1421
    • Add bus_params and use snake case for VectorChannelConfig by @zariiii9003 in https://github.com/hardbyte/python-can/pull/1422
    • Add python 3.11 to supported versions by @zariiii9003 in https://github.com/hardbyte/python-can/pull/1423
    • Fix #1376 by @zariiii9003 in https://github.com/hardbyte/python-can/pull/1412
    • Fix 1424 by @zariiii9003 in https://github.com/hardbyte/python-can/pull/1425
    • VectorBus: check whether CAN settings were correctly applied by @zariiii9003 in https://github.com/hardbyte/python-can/pull/1426
    • Fixing memory leak in neoVI bus where message_receipts grows with no limit by @pierreluctg in https://github.com/hardbyte/python-can/pull/1427
    • Add gzip check to compress method by @j-c-cook in https://github.com/hardbyte/python-can/pull/1429
    • Update CHANGELOG for v4.1.0 release by @zariiii9003 in https://github.com/hardbyte/python-can/pull/1363
    • Ixxat bus state and hardware errors detection by @cowo78 in https://github.com/hardbyte/python-can/pull/1141
    • Switch from codecov to coveralls by @hardbyte in https://github.com/hardbyte/python-can/pull/1430
    • Trc file support by @pkess in https://github.com/hardbyte/python-can/pull/1217
    Source code(tar.gz)
    Source code(zip)
  • 4.0.0(Feb 19, 2022)

    TL;DR: This release includes a ton of improvements from 2.5 years of development! 🎉 Test thoroughly after switching.

    For more than two years, there was no major release of python-can. However, development was very much active over most of this time, and many parts were switched out and improved. Over this time, over 530 issues and PRs have been resolved or merged, and discussions took place in even more. Statistics of the final diff: About 200 files changed due to ~22k additions and ~7k deletions from more than thirty contributors.

    This changelog diligently lists the major changes but does not promise to be the complete list of changes. Therefore, users are strongly advised to thoroughly test their programs against this new version. Re-reading the documentation for your interfaces might be helpful too as limitations and capabilities might have changed or are more explicit. While we did try to avoid breaking changes, in some cases it was not feasible and in particular, many implementation details have changed.

    A massive thank you to Felix Divo for preparing this release, and to the many many contributors.

    Major features

    • Type hints for the core library and some interfaces (#652 and many others)
    • Support for Python 3.7-3.10+ only (dropped support for Python 2.* and 3.5-3.6) (#528 and many others)
    • Granular and unified exceptions (#356, #562, #1025; overview in #1046)
    • Support for automatic configuration detection in most interfaces (#303, #640, #641, #811, #1077, #1085)
    • Better alignment of interfaces and IO to common conventions and semantics

    New interfaces

    • udp_multicast (#644)
    • robotell (#731)
    • cantact (#853)
    • gs_usb (#905)
    • nixnet (#968, #1154)
    • neousys (#980, #1076)
    • socketcand (#1140)
    • etas (#1144)

    Improved interfaces

    • socketcan
      • Support for multiple Cyclic Messages in Tasks (#610)
      • Socketcan crash when attempting to stop CyclicSendTask with same arbitration ID (#605, #638, #720)
      • Relax restriction of arbitration ID uniqueness for CyclicSendTask (#721, #785, #930)
      • Add nanosecond resolution time stamping to socketcan (#938, #1015)
      • Add support for changing the loopback flag (#960)
      • Socketcan timestamps are missing sub-second precision (#1021, #1029)
      • Add parameter to ignore CAN error frames (#1128)
    • socketcan_ctypes
      • Removed and replaced by socketcan after deprecation period
    • socketcan_native
      • Removed and replaced by socketcan after deprecation period
    • vector
      • Add chip state API (#635)
      • Add methods to handle non message events (#708)
      • Implement XLbusParams (#718)
      • Add support for VN8900 xlGetChannelTime function (#732, #733)
      • Add vector hardware config popup (#774)
      • Fix Vector CANlib treatment of empty app name (#796, #814)
      • Make VectorError pickleable (#848)
      • Add methods get_application_config(), set_application_config() and set_timer_rate() to VectorBus (#849)
      • Interface arguments are now lowercase (#858)
      • Fix errors using multiple Vector devices (#898, #971, #977)
      • Add more interface information to channel config (#917)
      • Improve timestamp accuracy on Windows (#934, #936)
      • Fix error with VN8900 (#1184)
      • Add static typing (#1229)
    • PCAN
      • Do not incorrectly reset CANMsg.MSGTYPE on remote frame (#659, #681)
      • Add support for error frames (#711)
      • Added keycheck for windows platform for better error message (#724)
      • Added status_string method to return simple status strings (#725)
      • Fix timestamp timezone offset (#777, #778)
      • Add Cygwin support (#840)
      • Update PCAN basic Python file to February 7, 2020 (#929)
      • Fix compatibility with the latest macOS SDK (#947, #948, #957, #976)
      • Allow numerical channel specifier (#981, #982)
      • macOS: Try to find libPCBUSB.dylib before loading it (#983, #984)
      • Disable command PCAN_ALLOW_ERROR_FRAMES on macOS (#985)
      • Force english error messages (#986, #993, #994)
      • Add set/get device number (#987)
      • Timestamps are silently incorrect on Windows without uptime installed (#1053, #1093)
      • Implement check for minimum version of pcan library (#1065, #1188)
      • Handle case where uptime is imported successfully but returns None (#1102, #1103)
    • slcan
      • Fix bitrate setting (#691)
      • Fix fileno crash on Windows (#924)
    • ics_neovi
      • Filter out Tx error messages (#854)
      • Adding support for send timeout (#855)
      • Raising more precise API error when set bitrate fails (#865)
      • Avoid flooding the logger with many errors when they are the same (#1125)
      • Omit the transmit exception cause for brevity (#1086)
      • Raise ValueError if message data is over max frame length (#1177, #1181)
      • Setting is_error_frame message property (#1189)
    • ixxat
      • Raise exception on busoff in recv() (#856)
      • Add support for 666 kbit/s bitrate (#911)
      • Add function to list hwids of available devices (#926)
      • Add CAN FD support (#1119)
    • seeed
      • Fix fileno crash on Windows (#902)
    • kvaser
      • Improve timestamp accuracy on Windows (#934, #936)
    • usb2can
      • Fix "Error 8" on Windows and provide better error messages (#989)
    • serial
      • Fix "TypeError: cannot unpack non-iterable NoneType" and more robust error handling (#1000, #1010)
    • canalystii
      • Fix is_extended_id (#1006)
      • Fix transmitting onto a busy bus (#1114)
      • Replace binary library with python driver (#726, #1127)

    Other API changes and improvements

    • CAN FD frame support is pretty complete (#963)
      • ASCWriter (#604) and ASCReader (#741)
      • Canutils reader and writer (#1042)
      • Logger, viewer and player tools can handle CAN FD (#632)
      • Many bugfixes and more testing coverage
    • IO
      • Log rotation (#648, #874, #881, #1147)
      • Transparent (de)compression of gzip files for all formats (#1221)
      • Add plugin support to can.io Reader/Writer (#783)
      • ASCReader/Writer enhancements like increased robustness (#820, #1223)
      • Adding absolute timestamps to ASC reader (#761)
      • Support other base number (radix) at ASCReader (#764)
      • Add logconvert script (#1072, #1194)
      • Adding support for gzipped ASC logging file (.asc.gz) (#1138)
      • Improve IO class hierarchy (#1147)
    • An overview over various "virtual" interfaces (#644)
    • Make ThreadBasedCyclicSendTask event based & improve timing accuracy (#656)
    • Ignore error frames in can.player by default, add --error-frames option (#690)
    • Add an error callback to ThreadBasedCyclicSendTask (#743, #781)
    • Add direction to CAN messages (#773, #779, #780, #852, #966)
    • Notifier no longer raises handled exceptions in rx_thread (#775, #789) but does so if no listener handles them (#1039, #1040)
    • Changes to serial device number decoding (#869)
    • Add a default fileno function to the BusABC (#877)
    • Disallow Messages to simultaneously be "FD" and "remote" (#1049)
    • Speed up interface plugin imports by avoiding pkg_resources (#1110)
    • Allowing for extra config arguments in can.logger (#1142, #1170)
    • Add changed byte highlighting to viewer.py (#1159)
    • Change DLC to DL in Message.__str__() (#1212)

    Other Bugfixes

    • BLF PDU padding (#459)
    • stop_all_periodic_tasks skipping every other task (#634, #637, #645)
    • Preserve capitalization when reading config files (#702, #1062)
    • ASCReader: Skip J1939Tp messages (#701)
    • Fix crash in Canutils Log Reader when parsing RTR frames (#713)
    • Various problems with the installation of the library
    • ASCWriter: Fix date format to show correct day of month (#754)
    • Fixes that some BLF files can't be read ( #763, #765)
    • Seek for start of object instead of calculating it (#786, #803, #806)
    • Only import winreg when on Windows (#800, #802)
    • Find the correct Reader/Writer independently of the file extension case (#895)
    • RecursionError when unpickling message object (#804, #885, #904)
    • Move "filelock" to neovi dependencies (#943)
    • Bus() with "fd" parameter as type bool always resolved to fd-enabled configuration (#954, #956)
    • Asyncio code hits error due to deprecated loop parameter (#1005, #1013)
    • Catch time before 1970 in ASCReader (#1034)
    • Fix a bug where error handlers were not called correctly (#1116)
    • Improved user interface of viewer script (#1118)
    • Correct app_name argument in logger (#1151)
    • Calling stop_all_periodic_tasks() in BusABC.shutdown() and all interfaces call it on shutdown (#1174)
    • Timing configurations do not allow int (#1175)
    • Some smaller bugfixes are not listed here since the problems were never part of a proper release

    Behind the scenes & Quality assurance

    • We publish both source distributions (sdist) and binary wheels (bdist_wheel) (#1059, #1071)
    • Many interfaces were partly rewritten to modernize the code or to better handle errors
    • Performance improvements
    • Dependencies have changed
    • Derive type information in Sphinx docs directly from type hints (#654)
    • Better documentation in many, many places; This includes the examples, README and python-can developer resources
    • Add issue templates (#1008, #1017, #1018, #1178)
    • Many continuous integration (CI) discussions & improvements (for example: #951, #940, #1032)
    • Testing: Many of the new features directly added tests, and coverage of existing code was improved too (for example: #1031, #581, #585, #586, #942, #1196, #1198)
    Source code(tar.gz)
    Source code(zip)
    python_can-4.0.0-py3-none-any.whl(230.31 KB)
    python_can-4.0.0-py3-none-any.whl.asc(833 bytes)
    python_can-4.0.0-py3.7.egg(510.93 KB)
    python_can-4.0.0-py3.8.egg(513.77 KB)
    python_can-4.0.0-py3.9.egg(513.54 KB)
  • 4.0.0rc0(Feb 4, 2022)

    This is the first release candidate for version 4.0.0. It includes a ton of improvements from 2.5 years of development! :tada:

    Test thoroughly after switching and please report any issues that you experience while testing this pre-release.

    Also, have a look at the complete CHANGELOG.

    The documentation of the develop branch can be viewed here.

    Source code(tar.gz)
    Source code(zip)
  • 4.0.0-dev.2(Apr 23, 2021)

  • 4.0.0-dev.1(Apr 20, 2021)

  • 3.3.5-dev.0(Oct 11, 2020)

  • 3.3.4(Oct 4, 2020)

    Last planned release with Python2 support! :fireworks:

    • #916 Vector: Skip channels without CAN support
    • #846 Use inter-process mutex to prevent concurrent neoVI device open.
    • #901 Fix iteration in Bus.stop_all_periodic_tasks
    • #850 Fix socket.error is a deprecated alias of OSError used on Python versions lower than 3.3.
    • #879 Updating incorrect api documentation.
    • #885 Fix recursion message in Message.getattr
    • #845 Fix socketcan issue
    Source code(tar.gz)
    Source code(zip)
  • 3.3.4-beta.0(Aug 6, 2020)

    Last call for Python2 support.

    • #850 Fix socket.error is a deprecated alias of OSError used on Python versions lower than 3.3.
    • #846 Use inter-process mutex to prevent concurrent neoVI device open.
    • #879 Updating incorrect api documentation.
    • #885 Fix recursion message in Message.getattr
    • #845 Fix socketcan issue
    Source code(tar.gz)
    Source code(zip)
  • 4.0.0-dev.0(Jul 16, 2020)

  • 3.3.3(May 22, 2020)

    Backported fixes from 4.x development branch which targets Python 3.

    • #798 Backport caching msg.data value in neovi interface.
    • #796 Fix Vector CANlib treatment of empty app name.
    • #771 Handle empty CSV file.
    • #741 ASCII reader can now handle FD frames.
    • #740 Exclude test packages from distribution.
    • #713 RTR crash fix in canutils log reader parsing RTR frames.
    • #701 Skip J1939 messages in ASC Reader.
    • #690 Exposes a configuration option to allow the CAN message player to send error frames (and sets the default to not send error frames).
    • #638 Fixes the semantics provided by periodic tasks in SocketCAN interface.
    • #628 Avoid padding CAN_FD_MESSAGE_64 objects to 4 bytes.
    • #617 Fixes the broken CANalyst-II interface.
    • #605 Socketcan BCM status fix.

    Note you will need setuptools version 36.2.2 or later.

    Source code(tar.gz)
    Source code(zip)
  • 3.3.3-alpha.3(May 6, 2020)

  • 3.3.3-alpha.2(Apr 21, 2020)

  • 3.3.3-alpha.1(Apr 19, 2020)

  • 3.3.3-alpha.0(Apr 19, 2020)

    Backported fixes from Python 3 only 4.x development.

    • Exclude test packages from distribution. #740
    • RTR crash fix in canutils log reader parsing RTR frames. #713
    • Skip J1939 messages in ASC Reader. #701
    • Exposes a configuration option to allow the CAN message player to send error frames (and sets the default to not send error frames). #690
    • Fixes the semantics provided by periodic tasks in SocketCAN interface. #638
    • Avoid padding CAN_FD_MESSAGE_64 objects to 4 bytes. #628
    • Fixes the broken CANalyst-II interface. #617
    • Socketcan BCM status fix. #605
    Source code(tar.gz)
    Source code(zip)
  • 3.3.2.final(Sep 10, 2019)

  • 3.3.2(Aug 17, 2019)

  • 3.3.1(Jul 24, 2019)

  • 3.3.0(Jun 27, 2019)

    • Adding CAN FD 64 frame support to blf reader
    • Updates to installation instructions
    • Clean up bits generator in PCAN interface #588
    • Minor fix to use latest tools when building wheels on travis.
    Source code(tar.gz)
    Source code(zip)
  • 3.2.1(May 17, 2019)

  • 3.2.0(May 16, 2019)

    Major features

    • FD support added for Pcan by @bmeisels with input from @markuspi, @christiansandberg & @felixdivo in PR #537

    Other notable changes

    • #532 Support has been removed for Python 3.4
    • #533 BusState is now an enum.
    • #535 This release should automatically be published to PyPi by travis.
    • #577 Travis-ci now uses stages instead of matrix build.
    • #548 A guide has been added for new io formats.
    • #550 Finish moving from nose to pytest.
    • #558 Fix installation on Windows.
    • #561 Tests for MessageSync added.

    General fixes, cleanup and docs changes can be found here.

    Pulls: #522, #526, #527, #536, #540, #546, #547, #548, #533, #559, #569, #571, #572, #575

    Backend Specific Changes

    pcan

    • FD support in PR #537

    slcan

    • ability to set custom can speed instead of using predefined speed values. #553

    socketcan

    • Bug fix to properly support 32bit systems. #573

    usb2can

    • slightly better error handling
    • multiple serial devices can be found
    • support for the _detect_available_configs() API

    Pulls #511, #535

    vector

    • handle app_name. #525
    Source code(tar.gz)
    Source code(zip)
  • 3.2.0-beta.0(May 12, 2019)

    Major features

    • FD support added for Pcan by @bmeisels with input from @markupspi, @christiansandberg & @felixdivo in PR #537

    Other notable changes

    • #532 Support has been removed for Python 3.4
    • #533 BusState is now an enum.
    • #535 This release should automatically be published to PyPi by travis.
    • #577 Travis-ci now uses stages instead of matrix build.
    • #548 A guide has been added for new io formats.
    • #550 Finish moving from nose to pytest.
    • #558 Fix installation on Windows.
    • #561 Tests for MessageSync added.

    General fixes, cleanup and docs changes can be found here.

    Pulls: #522, #526, #527, #536, #540, #546, #547, #548, #533, #559, #569, #571, #572, #575

    Backend Specific Changes

    pcan

    • FD support in PR #537

    slcan

    • ability to set custom can speed instead of using predefined speed values. #553

    socketcan

    • Bug fix to properly support 32bit systems. #573

    usb2can

    • slightly better error handling
    • multiple serial devices can be found
    • support for the _detect_available_configs() API

    Pulls #511, #535

    vector

    • handle app_name. #525
    Source code(tar.gz)
    Source code(zip)
  • 3.1.1(Feb 25, 2019)

  • v3.1.0(Feb 24, 2019)

    Major features

    Two new interfaces this release:

    • SYSTEC contributed by @idaniel86 in PR #466
    • CANalyst-II contributed by @smeng9 in PR #476

    Other notable changes

    • #477 The kvaser interface now supports bus statistics via a custom bus method.
    • #434 neovi now supports receiving own messages
    • #490 Adding option to override the neovi library name
    • #488 Allow simultaneous access to IXXAT cards
    • #447 Improvements to serial interface:
      • to allow receiving partial messages
      • to fix issue with DLC of remote frames
      • addition of unit tests
    • #497 Small API changes to Message and added unit tests
    • #471 Fix CAN FD issue in kvaser interface
    • #462 Fix Notifier issue with asyncio
    • #481 Fix PCAN support on OSX
    • #455 Fix to Message initializer
    • Small bugfixes and improvements
    Source code(tar.gz)
    Source code(zip)
    python-can-3.1.0.tar.gz(154.51 KB)
    python-can-3.1.0.tar.gz.asc(833 bytes)
    python_can-3.1.0-py2.py3-none-any.whl(149.05 KB)
    python_can-3.1.0-py2.py3-none-any.whl.asc(833 bytes)
  • 3.1.0-rc1(Jan 7, 2019)

    New Interfaces

    • SYSTEC contributed by @idaniel86 in PR #466
    • CANalyst-II contributed by @smeng9 in PR #476

    New Features

    • #477 kvaser interface now supports bus statistics via a custom bus method.
    • #471 fix CAN FD issue in kvaser interface
    • #434 neovi supports receiving own messages
    • #447 improvements to serial interface:
      • to allow receiving partial messages
      • to fix issue with DLC of remote frames
      • addition of unit tests
    • #462 Notifier issue with asyncio.
    • #481 - Fix PCAN support on OSX.
    • #455 minor fix to Message initializer.

    See all the merged pull requests here.

    Source code(tar.gz)
    Source code(zip)
  • 3.0.0(Oct 4, 2018)

    Major features

    • Adds support for developing asyncio applications with python-can more easily. This can be useful when implementing protocols that handles simultaneous connections to many nodes since you can write synchronous looking code without handling multiple threads and locking mechanisms. #388
    • New can viewer terminal application. #390
    • More formally adds task management responsibility to the Bus. By default tasks created with bus.send_periodic will have a reference held by the bus - this means in many cases the user doesn't need to keep the task in scope for their periodic messages to continue being sent. If this behavior isn't desired pass store_task=False to the send_periodic method. Stop all tasks by calling the bus's new stop_all_periodic_tasks method. #412

    Breaking changes

    • Interfaces should no longer override send_periodic and instead implement _send_periodic_internal #426
    • writing to closed writers is not supported any more (it was supported only for some)
    • the method Listener.on_message_received() is now abstract (using @abc.abstractmethod)
    • the file in the reader/writer is now always stored in the attribute uniformly called file, and not in something like fp, log_file or output_file. Changed the name of the first parameter of the read/writer constructors from filename to file.

    Backend Specific Changes

    3rd party interfaces

    • Deprecated python_can.interface entry point instead use can.interface. #389

    neovi

    • Added support for CAN-FD #408
    • Fix issues checking if bus is open. #381
    • Adding multiple channels support. #415

    nican

    • implements reset instead of custom flush_tx_buffer. #364

    pcan

    • now supported on OSX. #365

    serial

    • Removed TextIOWrapper from serial. #383
    • switch to serial_for_url enabling using remote ports via loop://, ``socket://andrfc2217://` URLs. #393
    • hardware handshake using rtscts kwarg #402

    socketcan

    • socketcan tasks now reuse a bcm socket
    • socketcan bugfix to receive error frames #384

    vector

    • Vector interface now implements _detect_available_configs. #362
    • Added support to select device by serial number. #387

    Other notable changes

    • can.Message class updated #413
      • Addition of a Message.equals method.
      • Deprecate id_type in favor of is_extended_id
      • documentation, testing and example updates
      • Addition of support for various builtins: repr, slots, copy
    • IO module updates to bring consistency to the different CAN message writers and readers. #348
      • context manager support for all readers and writers
      • they share a common super class called BaseIOHandler
      • all file handles can now be closed with the stop() method
      • the table name in SqliteReader/SqliteWriter can be adjusted
      • append mode added in CSVWriter and CanutilsLogWriter
      • file-like and path-like objects can now be passed to the readers and writers (except to the Sqlite handlers)
      • add a __ne__() method to the Message class (this was required by the tests)
      • added a stop() method for BufferedReader
      • SqliteWriter: this now guarantees that all messages are being written, exposes some previously internal metrics and only buffers messages up to a certain limit before writing/committing to the database.
      • the unused header_line attribute from CSVReader has been removed
      • privatized some attributes that are only to be used internally in the classes
    • Start testing against Python 3.7 #380
    • All scripts have been moved into can/scripts. #370, #406
    • Added support for additional sections to the config #338
    • Code coverage reports added. #346, #374
    • Bug fix to thread safe bus. #397

    General fixes, cleanup and docs changes: (#347, #348, #367, #368, #370, #371, #373, #420, #417, #419)

    Documentation: https://python-can.readthedocs.io/en/3.0.0/

    Installation

    pip install python-can==3.0.0
    
    Source code(tar.gz)
    Source code(zip)
    python-can-3.0.0.tar.gz(126.61 KB)
    python_can-3.0.0-py2.py3-none-any.whl(120.74 KB)
  • 2.2.1(Jul 12, 2018)

  • 2.2.0(Jul 3, 2018)

    Major Features

    • Fallback message filtering implemented in Python for interfaces that don't offer better accelerated mechanism. #157, #277, #104
    • SocketCAN interfaces have been merged (socketcan_native and socketcan_ctypes), this is now completely transparent for the library user. #326
    • automatic detection of available configs/channels in supported interfaces (see #303)
    • Added synchronized (thread-safe) Bus variant. #315
    • context manager support for the Bus class. #283
    • added CSVReader. Improved testing of CSVReader/CSVWriter #270
    • Notifier supports multiple buses #332

    Removals

    • Dropped support for Python 3.3 (officially reached end-of-life in Sept. 2017)
    • Deprecated the old CAN module, please use the newer can entry point (will be removed in version 2.4). #267

    Interface Specific Changes

    There were many changes and a lot of cleanup effort in the individual interfaces. Some of the highlights:

    SocketCAN

    Use socketcan in the future instead of socketcan_native or socketcan_ctypes

    • Cyclic improvements #323
    • Fix version selection. #293
    • Low level fixes. #296

    VectorCAN

    • CAN FD support #311
    • Fix bug where messages were sent to only one virtual channel #302
    • Various fixes in #258:
      • Avoid polling by using Win32 events when possible
      • Support for receive_own_messages argument

    PCAN

    Use configured bitrate. #254

    USB2CAN

    Show stopping bug #219 has been fixed.

    Minor Changes

    • Minor api change to the can.Notifier adding add_listener and remove_listener methods #266
    • SqlReader and SqlWriter have been renamed to SqliteReader and SqliteWriter. #263
    • readers/writers now support error frames correctly. #217, #247, #256
    • bug fixes
    • a lot of (CI) testing effort. #342
    • improved documentation
    • code cleanup. #309

    Installation

    Get it from PyPi:

    pip install -U python-can==2.2.0
    
    Source code(tar.gz)
    Source code(zip)
    python-can-2.2.0.tar.gz(101.70 KB)
    python_can-2.2.0-py2.py3-none-any.whl(101.57 KB)
Owner
Brian Thorne
Contractor available for hire via hardbyte.nz, formally team lead at CSIRO's Data61.
Brian Thorne
Py script to aid in setting up the boot chime in OpenCore.

BootChime Py script to aid in setting up the boot chime in OpenCore. It does so by helping you locate your IOHDACodecDevices, IOHDACodecAddress values

CorpNewt 7 Sep 19, 2022
Serves some data over HTTP, once. Based on the built-in Python module http.server

serve-me-once Serves some data over HTTP, once. Based on the built-in Python module http.server.

Peder Bergebakken Sundt 2 Jan 06, 2022
9SPY: a Windows RAT built in Python using sockets

9SPY 👁‍🗨 9SPY is a Windows RAT built in Python using sockets Features Features will be listed here soon, there are currenly 14 Information This is a

doop 12 Dec 01, 2022
Connection package to a raspberry or any other machine using ssh, it simplifies the deployment scripts and monitoring.

Connection package to a raspberry or any other machine using ssh, it simplifies the deployment scripts and monitoring.

Dashstrom 7 Mar 29, 2022
A simple Tor switcher script switches tor nodes in interval of time

Tor_Switcher A simple Tor switcher script switches tor nodes in interval of time This script will switch tor nodes in every interval of time that you

d4rk sh4d0w 2 Nov 15, 2021
A light-weight open-source project CLI utility for showing services running on ports in a host

Portable Port Scanner (ppscanner) Portable Port Scanner (ppscanner) is a light-weight open-source CLI utility that leverages on nmap to make quick and

1 Oct 30, 2021
Domain To Api [ PYTHON ]

Domain To IP Usage You Open Terminal For Run The Program python ip.py Input & Output Input Your List e.g domain.txt Output ( For Save Output File )

It's Me Jafar 0 Dec 12, 2021
BlueHawk is an HTTP/1.1 compliant web server developed in python

This project is done as a part of Computer Networks course. It aims at the implementation of the HTTP/1.1 Protocol based on RFC 2616 and includes the basic HTTP methods of GET, POST, PUT, DELETE and

2 Nov 11, 2022
snappi-trex is a snappi plugin that allows executing scripts written using snappi with Cisco's TRex Traffic Generator

snappi-trex snappi-trex is a snappi plugin that allows executing scripts written using snappi with Cisco's TRex Traffic Generator Design snappi-trex c

Open Traffic Generator 14 Sep 07, 2022
A simple framwork to streamline the Domain Adaptation training process.

FastDA Introduction This is a simple framework for domain adaptation training. You can use it to build your own training process. It heavily relies on

Vincent Zhang 7 Nov 22, 2022
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

1 Nov 11, 2021
A great python/java dynamic DNS service for NameSilo, with log, email reminder...

English NameSilo DDNS is a DDNS service for NameSilo domain names for home broadband , it can automatically detect IP changes in home broadband

云牧青 77 Dec 28, 2022
Utility for converting IP Fabric webhooks into a Teams format.

IP Fabric Webhook Integration for Microsoft Teams and/or Slack Setup IP Fabric Setup Go to Settings Webhooks Add webhook Provide a name URL will b

Community Fabric 1 Jan 26, 2022
Free,Cross-platform,Single-file mass network protocol server simulator

FaPro Free,Cross-platform,Single-file mass network protocol server simulator 中文Readme Description FaPro is a Fake Protocol Server tool, Can easily sta

FOFA Pro 1.4k Jan 06, 2023
Official ProtonVPN Linux app

ProtonVPN Linux App Copyright (c) 2021 Proton Technologies AG This repository holds the ProtonVPN Linux App. For licensing information see COPYING. Fo

ProtonVPN 288 Jan 01, 2023
JF⚡can - Super fast port scanning & service discovery using Masscan and Nmap. Scan large networks with Masscan and use Nmap's scripting abilities to discover information about services. Generate report.

Description Killing features Perform a large-scale scans using Nmap! Allows you to use Masscan to scan targets and execute Nmap on detected ports with

377 Jan 03, 2023
Automatically block traffic on Cloudflare's side based on Nginx Log parsing.

AutoRL This is a PoC of automatically block traffic on Cloudflare's side based on Nginx Log parsing. It will evaluate Nginx access.log and find potent

Nova Kwok 62 Dec 28, 2022
Tool for ROS 2 IP Discovery + System Monitoring

Monitor the status of computers on a network using the DDS function of ROS2.

Ar-Ray 33 Apr 03, 2022
Discord RPC Generator With Python

Discord-RPC-Generator Thank you for using this Discord Custom RP Generator. This is 100% safe and open source. Download Discord for your computer here

1 Nov 09, 2021
Typhon is a macOS specific payload aimed at targetting Jamf managed devices.

Typhon is a macOS specific payload aimed at targetting Jamf managed devices. This payload can be used to manipulate macOS devices into communicating with a Mythic instance, which acts as a Jamf serve

Mythic Agents 29 Dec 23, 2022