GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — [fix bug]-cannot use a str to initialize an array with typecode 'B' by jinxiangwzh · Pull Request #187 · python-xlib/python-xlib

Conversation

@jinxiangwzh

@jinxiangwzh jinxiangwzh commented Dec 21, 2020

Copy link
Copy Markdown

No description provided.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
jamo.wu
[fix bug]-cannot use a str to initialize an array with typecode 'B'
bcb7c1d
@petli

petli commented Dec 21, 2020 •
edited
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown
Contributor

Thank you for the PR, but this change breaks a lot of unit tests (see the CI build failure), so can you look at that and see what you need change in the code to ensure they still work, please?

I'm also not sure what the bug is here. Could you explain to which methods or requests you want to pass in a string to this structure, rather than controlling the encoding of it to an array yourself? I'm thinking that such encoding could make more sense in the wrapping methods in the X objects (Display, Window etc), rather than this low down in the protocol implementation.

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@vasily-v-ryabov vasily-v-ryabov added the in progress label Dec 22, 2020
@Avasam

Avasam commented Nov 1, 2026 •
edited
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown
Contributor

I'm going through open PRs while preparing my fork for initial release, and I think this one can be closed rather than merged.

Your changes run val.encode() for every value that is not bytes. The usual input for PropertyData is a list or tuple of ints, for example change_property(atom, Xatom.CARDINAL, 32, [1, 2, 3]). With this change, every call like that fails with AttributeError: 'list' object has no attribute 'encode'. For format 16 and 32 the change is wrong even for str input. The bytes from str.encode() get reinterpreted as 16 or 32 bit items, and frombytes raises ValueError when the length is not a multiple of the item size.

The library already handles the case this was meant for. For text, use Window.change_text_property(property, property_type, data). It accepts str and encodes it based on the property type: latin-1 for STRING, UTF-8 for UTF8_STRING. For any other property type, encode the string yourself and pass bytes to change_property, which PropertyData already accepts.

Since change_text_property covers this, I'd suggest just closing the PR.

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Reviewers

No reviews

Uh oh!

There was an error while loading. Please reload this page.

Assignees

No one assigned

Labels

in progress

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

Uh oh!

There was an error while loading. Please reload this page.

4 participants

@jinxiangwzh @petli @Avasam @vasily-v-ryabov
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.