From Fedora Project Wiki

CUPS changes to be aware of

This is a list of the changes to be aware of when using pycups to communicate with a CUPS server that may be 1.1.x, or may be 1.2.x.

  • cups.Connection.getDevices ()
  • In CUPS 1.2, devices like 'usb:/dev/usb/lp0' will not be present if there is no printer detected on that port
  • 'device-id' device attribute will not be present in CUPS 1.1.x
  • cups.Connection.getPrinters ()
  • 'printer-is-shared' attribute is new to CUPS 1.2.x, describing whether this printer is published in IPP browse packets, and whether jobs may be submitted remotely
  • cups.Connection.setPrinterShared () will have no effect on CUPS 1.1.x servers but will not fail! The only way to detect that it did not succeed is to check for the 'printer-is-shared' attribute in the getPrinters() result.
  • cups.Connection.getPrinterAttributes ()
  • 'printer-error-policy-supported' will not be present in CUPS 1.1.x
  • 'printer-op-policy-supported' will not be present in CUPS 1.1.x
  • 'request-user-name-allowed' will not be present in CUPS 1.1.x, and will only be present in CUPS 1.2 if there are users in the restriction list (and it is marked 'allow')
  • 'request-user-name-denied' will not be present in CUPS 1.1.x, and will only be present in CUPS 1.2 if there are users in the restriction list (and it is marked 'deny')
  • cups.Connection.setPrinterErrorPolicy () will have no effect on CUPS 1.1.x servers, and anyway there is no 'printer-error-policy-supported' attribute to pick a value from
  • cups.Connection.setPrinterOpPolicy () will have no effect on CUPS 1.1.x servers, and anyway there is no 'printer-op-policy-supported' attribute to pick a value from
  • cups.Connection.setPrinterUsersAllowed/Denied() will have no effect on CUPS 1.1.x servers, and the only way to detect that it has failed is to check the 'request-user-name-allowed' or 'request-user-name-denied' printer attributes.
  • cups.Connection.getPPDs()
  • 'ppd-device-id' will only be present in CUPS 1.2