Giter VIP home page Giter VIP logo

Comments (6)

GoogleCodeExporter avatar GoogleCodeExporter commented on July 18, 2024
I have the same exact problem. The method set_field_names is not present in 
version 6:

print(dir(pt))

['__class__', '__delattr__', '__dict__', '__doc__', '__format__', 
'__getattr__', '__getattribute__', '__getitem__', '__hash__', '__init__', 
'__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', 
'__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__unicode__', 
'__weakref__', '_align', '_attributes', '_border', '_compute_widths', '_end', 
'_field_names', '_fields', '_float_format', '_format', '_format_value', 
'_get_align', '_get_attributes', '_get_border', '_get_end', '_get_field_names', 
'_get_float_format', '_get_format', '_get_formatted_html_string', 
'_get_header', '_get_horizontal_char', '_get_hrules', '_get_int_format', 
'_get_junction_char', '_get_left_padding_width', '_get_max_width', 
'_get_options', '_get_padding_width', '_get_padding_widths', 
'_get_reversesort', '_get_right_padding_width', '_get_rows', 
'_get_simple_html_string', '_get_sort_key', '_get_sortby', '_get_start', 
'_get_vertical_char', '_header', '_horizontal_char', '_hrules', '_int_format', 
'_junction_char', '_left_padding_width', '_max_width', '_options', 
'_padding_width', '_reversesort', '_right_padding_width', '_rows', 
'_set_align', '_set_attributes', '_set_border', '_set_columns_style', 
'_set_default_style', '_set_end', '_set_field_names', '_set_float_format', 
'_set_format', '_set_header', '_set_horizontal_char', '_set_hrules', 
'_set_int_format', '_set_junction_char', '_set_left_padding_width', 
'_set_max_width', '_set_msword_style', '_set_padding_width', 
'_set_random_style', '_set_reversesort', '_set_right_padding_width', 
'_set_sort_key', '_set_sortby', '_set_start', '_set_vertical_char', 
'_sort_key', '_sortby', '_start', '_stringify_header', '_stringify_hrule', 
'_stringify_row', '_validate_align', '_validate_all_field_names', 
'_validate_attributes', '_validate_field_name', '_validate_float_format', 
'_validate_function', '_validate_hrules', '_validate_int_format', 
'_validate_nonnegative_int', '_validate_option', '_validate_single_char', 
'_validate_true_or_false', '_vertical_char', '_widths', 'add_column', 
'add_row', 'align', 'attributes', 'border', 'clear', 'clear_rows', 'copy', 
'del_row', 'encoding', 'end', 'field_names', 'float_format', 'format', 
'get_html_string', 'get_string', 'header', 'horizontal_char', 'hrules', 
'int_format', 'junction_char', 'left_padding_width', 'max_width', 
'padding_width', 'reversesort', 'right_padding_width', 'set_style', 'sort_key', 
'sortby', 'start', 'vertical_char']

_set_field_names is present, though.

Original comment by [email protected] on 20 Jan 2013 at 11:11

from prettytable.

GoogleCodeExporter avatar GoogleCodeExporter commented on July 18, 2024
As of PrettyTable 0.6, the set_field_names() method no longer exists.  0.6 was 
a deliberately compatibility-breaking release to improve the API.  However, I 
kind of dropped the ball on thoroughly documenting the changes and the Wiki 
sometimes includes example code using the old style.  So this is really a 
documentation bug, not a code bug.

To set field names in 0.6 and beyond, use the following syntax:

pt.field_names = ["Foo", "Bar", "Baz"]

If this doesn't work, then *that* is a code bug - please let me know.

Original comment by [email protected] on 21 Jan 2013 at 9:06

  • Changed state: Invalid

from prettytable.

GoogleCodeExporter avatar GoogleCodeExporter commented on July 18, 2024
I understand your decision. However, this makes prettytable particularly 
difficult to use in our environment, as we cannot be sure which version of 
prettytable is installed. In particular, prettytable is in 0.5 in Debian 
squeeze and is likely to stay that forever [1]. On the other hand, it is rather 
current in the most recent Ubuntu LTS [2].

What do you suggest? It might be after all that compatibility methods that 
first issue a warning (0.6), then an error unless it is explicitly enabled 
(0.7) and only after that are removed (0.8 or 1.0) would have been a safer bet.

[1] http://packages.debian.org/squeeze/python-prettytable
[2] https://launchpad.net/ubuntu/+source/prettytable

Original comment by [email protected] on 21 Jan 2013 at 9:34

from prettytable.

GoogleCodeExporter avatar GoogleCodeExporter commented on July 18, 2024
Ah.  I understand the difficult situation you are in, writing code that you 
would like to work out of the box on Debian and Ubuntu.  I apologise that the 
abrupt change in API has put you in this situation.  I think that at the time 
(and probably still even now) I drastically underestimated how widely 
PrettyTable was deployed.

The gradual transition probably would have been best, although I do not know 
what I can do now to fix it, since Squeeze will never see it's PrettyTable 
package updated.  It looks like Wheezy has 0.6 in it, so hopefully things will 
become easier when Wheezy becomes stable (which hopefully is not too far off), 
although I am sure that is of little consolation to you now.

One option of course would be to subclass PrettyTable and in your custom class 
write a set_field_names method which uses the value of prettytable.__version__ 
to test if you are at 0.5 or 0.6 (effectively, Debian or Ubuntu) and then do 
the appropriate thing.  This is a little ugly, but at least it should let you 
use the same code on both platforms.

Alternatively, if this would work well in your environment, I could maybe set 
up an apt repository which hosted the latest version of PrettyTable packaged up 
for Debian stable.  You could add that to your apt sources list and that way 
get 0.6 on Debian.  But I understand that you may be in an environment where 
that kind of change is not easy/acceptable.  Let me know if you are interested 
and I will look into this option - I've never hosted an apt repo before, or 
even packaged up a .deb, so I can't guarantee quick turn around time, but I 
will give it my best to make up for this situation.

In future, I will be more careful about compatibility breaks!

Original comment by [email protected] on 21 Jan 2013 at 10:01

from prettytable.

GoogleCodeExporter avatar GoogleCodeExporter commented on July 18, 2024
Thank you for your fast reply. Perhaps the easiest thing for our project would 
be to include a static copy of prettytable, so please don't bother setting up 
an apt repo. Still, you could add compatibility methods to the current version 
of prettytable *if* this is an easy thing to test, perhaps with a "deprecated" 
decorator [1]? I'm not sure if that would reach current LTS, though.

[1] http://code.activestate.com/recipes/577819-deprecated-decorator/

Original comment by [email protected] on 22 Jan 2013 at 12:00

from prettytable.

GoogleCodeExporter avatar GoogleCodeExporter commented on July 18, 2024
Alright, I won't worry about the apt repo.  I hope the static copy solution 
works well for you.

Regarding the deprecated decorator...well, first off, I will definitely use 
that kind of stuff for future syntax changes (although hopefully they will be 
rare, the idea was for 0.6 to be "one big compatibility breaking release" to 
get things looking their best and then for syntax to never change).

As for addressing this particular problem...well, I have just spoken to the guy 
who packages pt for the official Debian repositories, and it is basically too 
late for anything I release now to make it into Wheezy without a lot of 
trouble, and I don't want to trouble the volunteer packager by insisting he 
push anything through.  So even if I added a deprecation notice and released 
0.7 right this minute, nobody who uses Debian would see it for about two years. 
 Presumably by that time they will have changed their code anyway.  Also, by 
the time the Debian release after Wheezy comes out we'll hopefully be a few 
more versions of PrettyTable along.

I don't know what the policy is for Ubuntu's LTS, but like you said it may not 
reach that either, in which case it probably wouldn't end up doing anybody much 
good.

Original comment by [email protected] on 22 Jan 2013 at 1:01

from prettytable.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.