(py-mode-map): py-mark-block moved to C-c C-m (was C-c C-b).
py-submit-bug-report placed on C-c C-b, and py-version placed on C-c
C-v.

(py-version, py-submit-bug-report): new functions

(py-version, py-help-address): new variables
diff --git a/Misc/python-mode.el b/Misc/python-mode.el
index 25c3cc4..84be62e 100644
--- a/Misc/python-mode.el
+++ b/Misc/python-mode.el
@@ -231,13 +231,17 @@
 	    ("\C-c\C-n"  . py-next-statement)
 	    ("\C-c\C-p"  . py-previous-statement)
 	    ("\C-c\C-u"  . py-goto-block-up)
-	    ("\C-c\C-b"  . py-mark-block)
+	    ("\C-c\C-m"  . py-mark-block)
 	    ("\C-c#"	 . py-comment-region)
 	    ("\C-c?"	 . py-describe-mode)
 	    ("\C-c\C-hm" . py-describe-mode)
 	    ("\e\C-a"	 . beginning-of-python-def-or-class)
 	    ("\e\C-e"	 . end-of-python-def-or-class)
-	    ( "\e\C-h"	 . mark-python-def-or-class))))
+	    ( "\e\C-h"	 . mark-python-def-or-class)))
+  ;; should do all keybindings this way
+  (define-key py-mode-map "\C-c\C-b" 'py-submit-bug-report)
+  (define-key py-mode-map "\C-c\C-v" 'py-version)
+  )
 
 (defvar py-mode-syntax-table nil
   "Syntax table used in `python-mode' buffers.")
@@ -1766,8 +1770,53 @@
 
 
 
-;; initializations
+(defconst py-version "$Revision$"
+  "`python-mode' version number.")
+(defconst py-help-address "bwarsaw@cnri.reston.va.us"
+  "Address accepting submission of bug reports.")
 
+(defun py-version ()
+  "Echo the current version of `python-mode' in the minibuffer."
+  (interactive)
+  (message "Using `python-mode' version %s" py-version)
+  (py-keep-region-active))
+
+;; only works under Emacs 19
+;(eval-when-compile
+;  (require 'reporter))
+
+(defun py-submit-bug-report (enhancement-p)
+  "Submit via mail a bug report on `python-mode'.
+With \\[universal-argument] just submit an enhancement request."
+  (interactive
+   (list (not (y-or-n-p
+	       "Is this a bug report? (hit `n' to send other comments) "))))
+  (let ((reporter-prompt-for-summary-p (not enhancement-p)))
+    (require 'reporter)
+    (reporter-submit-bug-report
+     py-help-address			;address
+     "python-mode"			;pkgname
+     ;; varlist
+     (if enhancement-p nil
+       '(py-python-command
+	 py-indent-offset
+	 py-block-comment-prefix
+	 py-scroll-process-buffer
+	 py-temp-directory
+	 py-beep-if-tab-change))
+     nil				;pre-hooks
+     nil				;post-hooks
+     "Dear Barry,")			;salutation
+    (if enhancement-p nil
+      (set-mark (point))
+      (insert 
+"Please replace this text with a sufficiently large code sample\n\
+and an exact recipe so that I can reproduce your problem.  Failure\n\
+to do so may mean a greater delay in fixing your bug.\n\n")
+      (exchange-point-and-mark)
+      (py-keep-region-active))))
+
+
 ;; arrange to kill temp files when Emacs exists
 (if (or py-this-is-emacs-19-p py-this-is-lucid-emacs-p)
     (add-hook 'kill-emacs-hook 'py-kill-emacs-hook)