Do you have any hint about the "design of an API in a code-completion
friendly way"? I guess a "code-completion friendly way" deals with
code-completion compliancy with most famous python IDE (Eclipse/pydev -
IPython etc.). I'm not aware of such issues and I would appreciate any
further information.

BTW, is pythonOCC code-completion friendly in your opinion?

Thomas

2010/12/29 Patrick Janssen <patr...@janssen.name>

> I am OK with Python - it has many other plus points (I don't really want to
> start a python versus x discussion). I just think that, wherever possible,
> the python HLA needs to be designs in a code-completion friendly way.
> ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
>
>
> On 28 December 2010 21:01, Cowdens <dave.cow...@gmail.com> wrote:
>
>>  i agree that code completion is a big deal. I use python and java in my
>> day job, and though java is very verbose and has many issues, the code
>> completion and strong typing of java makes writing code much faster.  python
>> definitely lacks ides as good as java has.
>>
>>
>>  ------------------------------
>> *From:* pythonocc-users-boun...@gna.org [mailto:
>> pythonocc-users-boun...@gna.org] *On Behalf Of *Patrick Janssen
>> *Sent:* Monday, December 27, 2010 10:52 PM
>>
>> *To:* pythonOCC users mailing list.
>> *Subject:* Re: [Pythonocc-users] Re : Anyone seen this? (Dave Cowden)
>>
>> Hi all,
>>
>> This discussion is very interesting - I also made a start with PythonOCC,
>> and somewhere along the way I got distracted by other things - partly
>> because I found it hard to get started with PythonOCC. An HLA would be
>> great!
>>
>> I have one thought I would like to add to the pot at this point... In
>> order to make the HLA learning curve as smooth as possible, code completion
>> is really important. But I have found that this is quite hard in python. I
>> previously worked on a python api for Rhino (
>> http://code.google.com/p/design-automation/). The rhino COM api is a
>> functional api - so you cannot script with objects. I found this very
>> unsatisfactory, so instead I created an OO wrapper in python. As I got
>> deeper into it, I kept hitting problems to do with code completion - I
>> avoided as much as possible any dynamic typing, and managed to get code
>> completion working in most places. But I found that it is important to think
>> about code completion from the start.
>>
>> The problem of couse is that this is to some extent dependent on the IDE
>> you are using - I was using pydev. So pydev will try to analyze the return
>> type of functions and methods, so if in the HLA you create a function that
>> returns a particular object, then the user should be able to get code
>> completion to work on that object. However... there are still many cases
>> where problems will crop up.
>>
>> For example, Dave wrote
>>
>> > i can perform the union of a two objects, creating a third one, and
>> > convieniently return the resulting object for further manipulation
>>
>> A union may return one entity or (if the inputs do not intersect) more
>> than one entity. This means that the HLA (i.e. the function or method being
>> used) will have to return a list, which means that the user will not get
>> code completion working on the entities in that list. If the user wants code
>> completion, they will then have to use 'assert isinstance()' on the entities
>> in the list.
>>
>> (As far as I know, there is no better way round this... any suggestions)
>>
>> Patrick
>> ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
>>
>>
>> On 27 December 2010 23:12, Dave Cowden <dave.cow...@gmail.com> wrote:
>>
>>> Hi, Thomas:
>>>
>>> I have one other suggestion also, coming from the 'agile' point of view.
>>>  the HLA is a huge and daunting task-- and thus the reason any discussions
>>> quickly become large.  I would recommend that a scope of work be decided
>>> that is managable and allows producing something that we can get experience
>>> with, rather than attempting to drive any particular approach ( top-down or
>>> bottom up ) for the entire scope of the HLA.
>>>
>>> For example, perhaps we could agree that although the HLA contains much
>>> scope, the scope that is most needed and straightforward is the creation of
>>> primitives and basic CSG operations.  The rationale would be that these are
>>> the first operations new users are likely to perform, and are thus a good
>>> starting point.  Explicitly _out_ of scope would then be considerations of
>>> parametrics, assemblies, fancy curves, multi-process coordination of
>>> entities, etc.
>>>
>>> The best way I see to define this scope would be for you to approve the
>>> user stories that the first release supports. For example:
>>>
>>>   * "as a user of the HLA, i can programmatically create a sphere by
>>> specifying its diameter and center point in space"
>>>
>>>  * "as a user of the HLA, i can translate an object that has been created
>>> without creating another variable reference. Preferably, the creation and
>>> translation are accomplished in a single line"
>>>
>>> * ".... i can perform the union of a two objects, creating a third one,
>>> and convieniently return the resulting object for further manipulation"
>>>
>>> Presumably these user stories would become test cases or suites for the
>>> HLA.
>>>
>>> Something we could reach consensus on and release, however small in
>>> scope, would be better than spending too long on discussions attempting to
>>> consider the entire scope.  I think having something conceptually simple
>>> that we can iterate from would be very beneficial to coming up with an API
>>> that works well. We are certain to find that we must re-work some of these
>>> initial implementations to provide later functionality, but as long as the
>>> test cases and user stories match well, this effort will be managable.
>>>
>>>
>>> On Mon, Dec 27, 2010 at 8:07 AM, Thomas Paviot <tpav...@gmail.com>wrote:
>>>
>>>> Hi,
>>>>
>>>> Regarding the second point (basic primitives such as point, line, circle
>>>> etc. or other entities like coord_sys, group etc.), this is exactly what
>>>> we're thinking about for the 'High Level API' (HLA) for pythonOCC. In my
>>>> opinion, it is the most important part of the pythonOCC project, since we
>>>> all agree that the OCC library is too granular in order to be easily,
>>>> quickly and efficiently deployed.
>>>>
>>>> On the other hand, this could solve one of the major issue of the
>>>> pythonOCC project : the lack of documentation and/or
>>>> tutorials/howtos/getting started. As it is currently designed (a python
>>>> wrapper for the OCC library), writing doc for pythonOCC is the same thing 
>>>> as
>>>> writing docs for the OCC project. It is clearly not our intent, and out of
>>>> our skills/free time/etc. We are convinced that the use of both python and 
>>>> a
>>>> HLA can really add value the OCC modeling kernel. Our documentation efforts
>>>> would then focus on the HLA.
>>>>
>>>> However, the scope of this HLA has to be explicit and clearly delimited,
>>>> and the semantics of the basic constructs must be shared among the 
>>>> pythonocc
>>>> users or related projects. For instance, in the pycado project, you defined
>>>> a 'group' entity. According to what I read in your code, the 'group'
>>>> contains a set of basic operations/instance creation. In my opinion, this
>>>> entity is not really a 'group' but rather an 'ordered set' since you cannot
>>>> inverse the order of the elements of the group. It's however a good idea,
>>>> but it has to be made explicit in order to avoid ambiguities in the use of
>>>> this entity. I would like to work about that (a Platform Independent
>>>> Model-PIM) before thinking about the implementation issues and the
>>>> underlying technologies (python packages/modules, pycado or something else
>>>> scripts, SOA and webservices, MOM etc.), that is to say before designing a
>>>> set of Platform Specific Models (PSM) that would share a 
>>>> consistent,complete
>>>>  and extensible semantics (a top-down approach).
>>>>
>>>> I will post a new entry in the coming days, to sum up the exchanges
>>>> related to the "have you seen this" thread and suggest a way/plan to let
>>>> everybody interested in this work contribute the development of the HLA 
>>>> (the
>>>> dual bottom-up approach).
>>>>
>>>> Cheers,
>>>>
>>>> Thomas
>>>>
>>>>  2010/12/23 julien blanchard <julien...@yahoo.fr>
>>>>
>>>> Hi,
>>>>>
>>>>> The layer above python was matching the best with our goals, in fact, I
>>>>> see two
>>>>> main parts in our project:
>>>>> - the "IDE part" providing an optimized syntax for CAD and an efficient
>>>>> graphical visualization (by updating only components being modified in
>>>>> the
>>>>> script since last refresh)
>>>>> - the high level API written in pure python. This API should be used
>>>>> both in
>>>>> python project and pycado projects.
>>>>> For now, the API contains the following primitives (can have several
>>>>> "constructors"):
>>>>> coord_sys (coordinate system), point, line, circle, vector, surface,
>>>>> solid,
>>>>> group (a group can join any primitive)
>>>>>
>>>>> Julien.
>>>>>
>>>>> ----- Message d'origine ----
>>>>> De : Dave Cowden <dave.cow...@gmail.com>
>>>>> À : pythonOCC users mailing list. <pythonocc-users@gna.org>
>>>>> Envoyé le : Mer 22 décembre 2010, 19h 35min 20s
>>>>> Objet : Re: [Pythonocc-users] Re : Anyone seen this? (Dave Cowden)
>>>>>
>>>>> Hi,
>>>>>
>>>>> I am not a fan of pre-processors and scripts that are not pure python.
>>>>> I think that such an architecture is unnecessary in a dynamic
>>>>> language like python or javascript.  Is it not possible to accomplish
>>>>> the abstractions without pre-proccessing or another layer of syntax
>>>>> above python?
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>  _______________________________________________
>>>>> Pythonocc-users mailing list
>>>>> Pythonocc-users@gna.org
>>>>> https://mail.gna.org/listinfo/pythonocc-users
>>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> Pythonocc-users mailing list
>>>> Pythonocc-users@gna.org
>>>> https://mail.gna.org/listinfo/pythonocc-users
>>>>
>>>>
>>>
>>> _______________________________________________
>>> Pythonocc-users mailing list
>>> Pythonocc-users@gna.org
>>> https://mail.gna.org/listinfo/pythonocc-users
>>>
>>>
>>
>
> _______________________________________________
> Pythonocc-users mailing list
> Pythonocc-users@gna.org
> https://mail.gna.org/listinfo/pythonocc-users
>
>
_______________________________________________
Pythonocc-users mailing list
Pythonocc-users@gna.org
https://mail.gna.org/listinfo/pythonocc-users

Reply via email to