2011-08-31 31 views
7

Tôi đang sử dụng Nhân sư để tạo tài liệu từ mã. Có ai biết nếu có một cách để kiểm soát các định dạng của số điểm nổi được tạo ra từ các đối số mặc định.Định dạng điểm nổi Sphinx

Ví dụ nếu tôi có các chức năng sau:

def f(x = 0.97): 
    return x+1 

Các tài liệu được tạo ra kết thúc lên trông như:

foo(x = 0.96999999999997) 

Rõ ràng đây là một điểm vấn đề chính xác nổi, nhưng là có một cách để làm cho tài liệu trông không xấu xí?

Trả lời

1

Bạn có thể ghi đè lên một chữ ký chức năng với các chỉ thị .. autofunction::. Vì vậy, để giải quyết ví dụ của bạn, một chức năng được xác định như foo(x=0.97) trong mô-đun bar:

.. automodule:: bar 

    .. autofunction:: foo(x=0.97) 

Và doc kết quả sẽ sử dụng chữ ký cung cấp thay vì phiên bản giải thích với số lượng rất dài.

Bạn có thể làm điều này tương đương với .. autoclass::.. automethod:: và các tùy chọn tương tự. Đây là cách sử dụng được ghi lại trong "Tùy chọn và mức sử dụng nâng cao" trong tài liệu this part of the sphinx.ext.autodoc.

0

Tôi đã không sử dụng Nhân sư nên tôi không chắc chắn điều này sẽ làm việc, nhưng giả định của tôi là repr() được sử dụng để xác định định dạng của tài liệu. Bạn có thể thử subclassing float với một tuỳ chỉnh __repr__ phương pháp mà sẽ trả về một số tìm kiếm đẹp hơn để xem có giúp:

class my_float(float): 
    def __repr__(self): 
     return str(self) 

>>> float(0.97) 
0.96999999999999997 
>>> my_float(0.97) 
0.97 

>>> def foo(x = my_float(0.97)): 
...  return x+1 
... 
>>> foo() 
1.97 
+0

Cảm ơn bạn đã trả lời. Tôi đã thực sự hy vọng cho một giải pháp bên tài liệu không bao gồm sửa đổi nguồn dự án thực tế. – ctrlc

Các vấn đề liên quan