Usefulness of E55_Type

In lots of places in the target model, we are using an instance of E55_Type. Cf Issue #29 with the three levels of type :
JPRiopelle - P2 -> Painter - P2 -> Profession - P2 -> Occupation.
I feel that it would be semantically more correct to say that JPRiopelle - profession -> Painter, with Painter an instance of the class Profession. We could even put Profession as a subclass of E55 Type, this way we could still say that:
JPRiopelle - P2 -> Painter - rdf:type -> Profession - rdfs:subClassOf -> E55_Type.
Regardless of the need of a third level (which I feel we don't, but it is a question for Issue 29), this seems more... RDF-esque ? than using two or three levels of E55.
In general, I feel that creating an instance of E55_Type should be done when the line between class and instance is blurred (typically, Painter : we can say that it is an instance of Profession, but that JP Riopelle is an instance of Painter). In this understanding, Profession has no place being an instance of E55. And in many places in the target model, the instances of E55 could probably be classes. The model would be far easier to understand. Am I wrong in my understanding ?

So... the overall issue is that E55 is used in many places because CRM is a general ontology and needs to be specialized. This means that you might put different kinds of category (e55) typically using p2 has type.
In order to solve this problem, LinkedArt proposes the pattern:
E1 -> p2 -> E55 -> p2 -> E55
Where the second E55 qualifies the first. This would help with dealing with reaching the classes programmatically. You would look for only the E55 types classifying this entity that were themselves classified as X.
E.g.:
E21  p2 E55 Painter p2 E55 Profession
E21 p2 E55 Mâle p2 E55 Gender
If you want to query the E55 for gender, you don’t want to return the E55 for profession and this will allow you to clearly distinguish.
I think what you argue instead is to specialize the property p2
E21 has profession E55 Painter
has profession isA p2 has type
This is also a valid solution. It is one that means generating a number of new properties. Because of the isA hierarchy they would all be reached by p2. That being said, you have to manage all these new properties. The argument in LinkedArt was that the first solution is a more repeatable pattern.
I too am not sure when and how a third level of E55 would help.
Generally what is in E55 should be skosified vocals, so the rest of the hierarchy should be handled within the vocab.

To put it another way
CIDOC CRM keeps the ontology small by not covering classification work.  A flexible way of extending CIDOC CRM without creating endless new classes but so that it has the semantic richness users need is to type classes. The business of classification is well handled in RDF by adopting SKOS. So wherever one sees a reference to E55 Type it is functionally equivalent to SKOS:concept. CIDOC CRM defers to SKOS as the well known and accepted system for encoding thesauri/vocabularies in RDF.
So let's take the example of occupation/profession (there's an argument there too) from the start. If we want to indicate that a person has an occupation/profession, then we are going to be classifying that person. So the basic CIDOC CRM statement will apply:
E21 Person -> p2 has type -> E55 Type
because of the above we can also write
E21 Person -> p2 has type -> SKOS:Concept
Following this pattern, we could instantiate :
http://viaf.org/viaf/15873 a crm:E21_Person;
rdfs:label "Pablo Picasso";
crm:p2_has_type http://vocab.getty.edu/aat/300411314 .
http://vocab.getty.edu/aat/300411314 a crm:E55_Type, skos:Concept;
rdfs:label "artist painter" .
or in 'colloquial' language:
Pablo Picasso has type Painter
Now the problem with the above is that we can have multiple reasons for classifying an instance of person. If we want to add to this and say Picasso has the state assigned sex of male, then we would want to say also:
http://viaf.org/viaf/15873 a crm:E21_Person;
rdfs:label "Pablo Picasso";
crm:p2_has_type http://homosaurus.org/v2/assignedMale .
http://homosaurus.org/v2/assignedMale a crm:E55_Type, skos:Concept;
rdfs:label "assignedMale" .
Now this is fine and good. But... now we want to support a query that helps understand who this Picasso fellows is. We want to query all the classifications that have been put on the individual and then display them somewhere, but in an ordered way: like the profession information in a profession display area and the gender information in a gender area. But there is nothing in these concepts themselves that says what we are functionally using them for. They are in a SKOS hierarchy, but this does not tell us what we are functionally using them for here. We are missing a meta type to tell us this.
This is the argument for putting a type on these types, generating meta types in the modelling in a standard way, so that developers can easily retrieve just the information they want. So we add:
http://viaf.org/viaf/15873 a crm:E21_Person;
rdfs:label "Pablo Picasso";
crm:p2_has_type http://homosaurus.org/v2/assignedMale .
http://homosaurus.org/v2/assignedMale a crm:E55_Type, skos:Concept;
rdfs:label "assignedMale";
crm:p2_has_type http://vocab.getty.edu/aat/300411835;
rdfs:label "gender (sociological concept)" .
This means we can put it all together and have:
http://viaf.org/viaf/15873 a crm:E21_Person;
rdfs:label "Pablo Picasso";
crm:p2_has_type http://homosaurus.org/v2/assignedMale;
crm:p2_has_type http://vocab.getty.edu/aat/300411314 .
http://homosaurus.org/v2/assignedMale a crm:E55_Type, skos:Concept;
rdfs:label "assignedMale";
crm:p2_has_type http://vocab.getty.edu/aat/300411835 .
http://vocab.getty.edu/aat/300411314 a crm:E55_Type, skos:Concept;
rdfs:label "artist painter"
crm:p2_has_type http://vocab.getty.edu/aat/300393201 .
http://vocab.getty.edu/aat/300411835 a crm:E55_Type, skos:Concept;
rdfs:label "gender (sociological concept)" .
http://vocab.getty.edu/aat/300393201  a crm:E55_Type, skos:Concept;
rdfs:label "professions" .
Which colloquially reads:
Picasso has type Painter.
Picasso has type Assigned Male.
Assigned Male has type Gender (sociological concept)
Painter has type Professions
and it should functionally allow to write a SparQL so that you can retrieve all types on an entity but sort them OR just retrieve one of the kinds of type on an entity and not all the type information. Ie retrieve the gender types on this entity only.
The declaration of the type on a type is not an attempt to go around or do something different than SKOS. If one knows the particular vocabulary that has been adopted, then there are probably much more interesting searches you can do exploiting the power of the broader/narrower of the particular vocabulary adopted. So the researcher could do fascinating gender analysis of artists through time (if they had the data) by a thorough understanding of homosaurus and its distinctions. At the basic level, however, within the CHIN data, the developer/researcher is able to pick out that some type/concept has been used for a particular function within the model (gender/profession and so on), thus facilitating their search and retrieval.

Flutifioc: If for example we write down all the tags needed for the knowledge base we have our vocab and there will be others as well. How are we to link these together?
Habennin: The specification of the Target Model would be similar to linked art: for meta types (anywhere the model points to a type where a discussion would be interesting). A statement of the materials, for example, might be interesting to standardize or normalize without strict enforcement. Having to go out and choose would be meta types. For the meta-type it would be better to use a single vocabulary to have a constant reference point for the model so we can search for that. On a more theoretical basis, the discussion happens a lot in Parthenos who tried to integrate a number of datasets and ideally the fields would have been normalized despite messy or bad data or competing standards. FORTH is developing a tool called VisTA. There is also the development of OpenTheso. That could be a long term strategy. If the data is well-curated. Original fields and Enriched fields were done in Ariadne so that everything is reversible.
Linked Conservation Data Project are also thinking of using CIDOC CRM but are thinking primarily of organizing vocabularies.
Illip: Should we develop our own vocabularies or translate others?
Habennin: Aligning with the most likely and reliable in terms of science, scholarship and durability is important.
Habennin:  we might need in some cases to rely on our own vocabularies. How to manage those extensions wasn’t clear.
Flutifioc: should there be a mapping of metatypes?
Habennin: The data can be translated to a type and the data value can be dumped as the value of E57 node in the mapping and eventual RDF and the tag would be a rule of CHIN. That E57 has type -- static URI to organize types. It could be CHIN’s, the AAT's, etc. Whatever we can have as a specification for programmers.
Semantically E55 = SKOS concept.
Flutifioc: Is there a formal relation such as same:as? Or subclass of?
Habennin: Official advice is to treat E55 as SKOS concept and some aspects of CRM do not even have to be there because they were there before. It is a rare area where SKOS does not cover the domain correctly.
Stephen: the important thing is to link the metatype to a vocabulary, but the type does not have to be… is that right?
Habennin: No. Regardless of whether the data is good or poor the value that comes across from the source material is the ground truth. It can be enriched but the metatype if making it available in the graph to find all instances that are about the metatype regardless of what skos they are in.
Flutifioc: Like this? (Drawing below)
Habennin: Yes. Even the occupation one can be contentious as not anyone can execute a profession. Occupation is a weaker term. Some of this is also discussed in linked.art.
Illip: We need to define precisely the metatype (e55) but we can be less restrictive for the types. It depends on the level of interoperability vs simplicity.
Strephen: Like illip says, it seems that the most important is to link the metatype to a structured vocabulary. For example, a museum could have a lot of terms for the gender, another museum just “m” of “f”, but the metatype “gender” must be linked to a structured vocabulary.

Quite agree with @Habennin : adding endless classes to  CRM is not an option. Two considerations though:

another option for Persons is to say "member of group". It has been debated for ages ... it most cases I'd use P2, except culture/nationality because these groups themselves can be used as Creators (eg in ULAN you have "unknown Canadian" etc)
that second P2 (gender vs profession) is probably already present in the SKOS vocabulary as inScheme or broader. When it is not, you may be adding usage-dependent info to the concept. Eg is "lightbulb" an object type or  a material?

@VladimirAlexiev 1) Yes for culture and nationality we are reusing the groups patterns. 2) What do you mean by usage-dependent info? Do you see an issue if we use e55 -> p2 -> e55 statements to accomplish that?
@Flutifioc Are you still concerned with this issue of E55? or you understand the benefits of avoiding the endless classes even if it might be a little bit less semantic?

@VladimirAlexiev Why is it not an option ? What is the issue with complementing CRM with some classes that are relevant to our use-case ?
@illip Both. I understand the benefits of avoiding adding classes, even though we are not talking "endless", but some select few that seem very relevant to me, such as Profession or Work of art. But I'm still concerned, as, in my humble opinion, there are also benefits to adding such classes, and I'm definitely not as convinced as you concerning which option is best.

@Flutifioc Adding a few classes is ok, provided they conform to CRM compatibility principles (which means make subClasses, subProps, or long-paths to complement existing CRM props used as short-cuts).

 Because then you hit a birthday cake that's inkjet-painted to resemble a 3d sculpture (of Boots) and you are stumped. (Actual object from the YCBA).
how's a Work of Art different from a MMO?
Profession as subclass of Group is ok, but you could just use a P2="Profession" to distinguish it from other kinds of Groups.

(BTW George Bruseker over at SARI argues that professions like "Ontologist" are not groups while nationalities like "Bulgarian" are, citing some silly aspect of the scope note of Group. I felt offended ;-)

@illip

usage-dependent info to the concept. Eg is "lightbulb" an object type or a material?

Lightbulb is in the AAT Objects>Components hierarchy but in one Artwork I saw it used as "Material". So if you map that to CRM "made of material", by RDFS inference it would get CRM class "Material". Getty AAT don't have subclasses of Concept, but they have the hierarchical structure, and they would take exception if you "reclassify" their Lightbulb into Material.
Most of AAT's Styles and Periods Facet includes cultures/nationalities, eg Bulgarian (culture or style). But sometimes other concepts are used as the Style of an artwork, eg Russian Orthodox. According to the Getty, that's not a Style/Period but Associated concept>Religion.
For me and you, "transgender male" is a gender. But for someone else, that might be a religion or a political statement, who knows.

So there is a bit of danger of adding P2 to a concept because of the way it's used in other data. I don't mean the originator of that concept (eg Getty) is going to sue you: I'm just saying be careful that the added P2 makes sense universally

@VladimirAlexiev Thanks for the advice concerning the conflicts that might arise from this P2_has_type categorization. IMO, this categorization is specific to the context of our model, we are not saying that the external vocabulary hierarchy should be rethink, but that we need a specific association between our types and metatypes in order to build relevant SPARQL queries. That said, we need to be aligned with the concept meaning and to keep open world assumption in mind, you're right. I would also say that the role of P2_has_type is not to build a hierarchy like skos:broader. We use P2_has_type in order to specify another entity.
I would also like to keep track of some Linked.Art discussions regarding this topic:
Types of Types definition on their website
When to use Types of Types pattern
"How to make decision" proposal

The current CHIN's proposal on this issue is:

We will not create extra classes/properties when a P2_has-type -> E55_Type -> P2_has_type -> E55_Type pattern is sufficient. Like @VladimirAlexiev mentioned, it might be even more complex to map some data if we create new subclasses/subproperties. In addition, CHIN prefers not to expand the model by reusing a more repeatable pattern as @Habennin said.
The metatypes will be used only when it is relevant in order to distinguish a E55_Type from another one attached to the same entity.
CHIN will be careful in the metatype identification in order to accommodate different opinions about the targeted concept. We will also document our choices.

We will validate this proposal with our Semantic Committee on January 7th.
Our proposal regarding the three levels of E55_Type will be discussed in Issue #29

All the aforementioned items have been approved by the Semantic Committee on 2021-01-07.

All the aforementioned items have been approved by the Semantic Committee on 2021-01-07.

A new section called Prioritization of E55_Type and P2_has_type over new classes and properties has been added to the Target Model.

A new section called Prioritization of E55_Type and P2_has_type over new classes and properties has been added to the Target Model.


module-ballerina-grpc: can't dynamically attach a gRPC service to an gRPC listener

Description:
Can't dynamically assign a gRPC service to an gRPC listener.
Steps to reproduce:
# clone demo repository
$ git clone https://bitbucket.org/gubaer/ballerina-issue-dynamic-grpc.git
$ cd ballerina-issue-dynamic-grpc

# building and/or compiling works
$ bal build
# OK

$ bal build -c
# OK

# running fails with an error message
$ bal run
grpc_sample_generate: starting grpc service on 'localhost:10001'
failed to attach listener - error InternalError ("Error while registering the service. Couldn't find the service descriptor.")
error: Error while registering the service. Couldn't find the service descriptor.
	at ballerina.grpc.0_8_0-beta_2:externRegister(service_endpoint.bal:137)
	   ballerina.grpc.0_8_0-beta_2.Listener:attach(service_endpoint.bal:66)
	   gubaer.grpc_sample_dynamic.0_0_1:runServer(main.bal:24)
	   gubaer.grpc_sample_dynamic.0_0_1:main(main.bal:41)

Affected Versions:
Ballerina Swan Lake Beta 2
Language specification 2021R1
Update Tool 1.3.5
OS, DB, other environment details and versions:
Linux integrationbox 5.11.0-27-generic #29~20.04.1-Ubuntu SMP Wed Aug 11 15:58:17 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
openjdk 11.0.11 2021-04-20
OpenJDK Runtime Environment (build 11.0.11+9-Ubuntu-0ubuntu2.20.04)
OpenJDK 64-Bit Server VM (build 11.0.11+9-Ubuntu-0ubuntu2.20.04, mixed mode, sharing)

@Gubaer, it seems the way you set the gRPC descriptors was incorrect. Please check the following sample on how to dynamically attach a gRPC service object to a listener.

Service implementation
Service attachment

Thanks. My bad. Works for me now.


Feature/v4.0.0

PR Checklist
This PR fulfills the following requirements:

[ ] Tests for the changes have been added (for bug fixes / features)
[x] Docs have been added / updated (for bug fixes / features)
[x] A changelog entry has been added to CHANGELOG.md if necessary

PR Type
What kind of change does this PR introduce?

[x] Bugfix
[x] Feature
[x] Code style update (formatting, local variables)
[x] Refactoring (no functional changes, no api changes)
[ ] Build related changes
[ ] CI related changes
[x] Documentation content changes
[ ] react application / infrastructure changes
[x] Other... Please describe: WCAG 2.1 AA Compliance

What is the current behavior?
Little WCAG 2.1 AA compliance
Issue Number: N/A
What is the new behavior?
More WCAG 2.1. AA Compliance
Does this PR introduce a breaking change?

[x] Yes
[ ] No

Check Changelog
Other information
Resolved issues

One discussion I would like to trigger: I would much rather see one input in the components, for example arias or translations that would then allow for passing through a js object literal with different properties. This would prevent adding and adding properties as inputs to components, cause where does this end really? :p
For example:
arias? : {
    next?: string:
    previous?: string:
}

instead of
ariaNext?: string;
ariaPrevious?: string;
// and other aria props in one loooong list...

Good point, but we decided this is more relevant in apps, not in our standard component library.


Active catalog/schema in toolbar

Can you explain me usage of selectbox in toolbar Active catalog/schema? It is only for SQL Editor?
Problem
Running SQL in DBeaver is too complicated compared with HeidiSQL, Navicat or SQLyog. I must open new SQL Editor, select database in Active catalog/schema, paste query, click to another tab for activating Execute script button in toolbar and finally click to this button for query execution.
Comparison
Another database tool use current selected database in navigation tree while opening SQL editor so you can only paste query and click to Execute script button. You dont need to select Datasource and Catalog/Schema.
Proposal

Move selectbox Active datasource and Active catalog/schema from toolbar to toolbar directly in SQL Editor tab
Populate these selectboxes with values from current selected item in navigation tree - Datasource and Catalog/Schema while opening new SQL Editor
Move related buttons from toolbar to toolbar directly in SQL Editor

Benefits

You dont need to select Catalog/Schema for new opened SQL Editor for quick query execution
Related selectboxes and buttons are directly in SQL Editor tab in one place, not globally in every tab in DBeaver, sometimes disabled (selectboxes, buttons) or hidden (buttons)
Easier recognizing what belongs to SQL Editor (where I can select DB, how I can run Query, how I can reformat code, ...)
Every SQL Editor has own Datasource or Catalog/Schema, you can have one SQL Editor tab for one DB and another SQL Editor for another DB => You dont need to change database in Catalog/Schema if you need run different queries in different databases
Current usage retained - You can run one query in many databases just with changing Datasource and Catalog/Schema in SQL Editor tab
There will be place for adding new buttons to toolbar (Format SQL, ...)

DBeaver uses current database (in database navigator) as a context.
To execute SQL you:

Click on database in the tree (or any node below database)
Press Ctrl+Enter (this will open recent SQL editor associated with this database). Or F3 (will let you to choose existing/create new script).
Press Ctrl+V (paste SQL)
Press Ctrl+Enter (execute current query)

Usually you should use "Active database" toolbar just for information. You need to switch it only if you use the same SQL script for different databases.

Thanks for your reply. So it works as I thought.
I really have a problem with this select, because I work in many databases and select is not populated while I open table in different database like any other tools. I must manually change Active Catalog/Schema in toolbar or change it by clicking in context menu in navigator tree.
It is great when I need run one Query in many database at once. But it is too complicated in following example:

Do something in one DB
Open SQL editor
Select database in toolbar
Paste SQL and run query (current bug dont activate buttons in toolbar, I must reactivate current tab)
Close SQL editor tab
Go by navigation tree to another database
Do same changes in this DB
Run another SQL query

Finally when you need to run another query in current edited database you must after opening new SQL editor manually change current DB in toolbar. But when will be database automatically populated in step 6, in step 8 I just open SQL editor and run query - easy. I appreciate your really great work, but for executing query I prefer opening Navicat where is query execution so easy - just 2 click.
What about refactoring proposal? It will keep current use case (run one query in many database), but moving SQL editor parts from main toolbar to SQL editor toolbar will simplify query execution and it brings new comfort.

I still don't understand how can I improve this.
How moving controls from main toolbar into editor toolbar will help? I don't see any difference (besides this bug in combobox which I can't reproduce for now).
If you need to run query in multiple databases you may open just one SQL editor, paste query in it and then run it multiple times by switch active database in the main toolbar. The same two clicks as I see it:

Change active database
Run active query

Read Benefits from me first post, there is list of improvements.
I have problem with Active Catalog/Schema in toolbar. This selectbox is not automatically changed to last database, where I do some changes or just activate some object in another DB.
I described everything in the first and second post

I thing that every user uses the application in a different way.
Yes, main request is to automatically change Active Catalog/Schema to current selection in database navigation.
Thank for your patience with this request.

Perhaps this is a good place to remind about potential to allow establishing a connection from the SQL file comment on the first line (or first few lines). Several other db tools work this way:
-- dbaaver: connection: mysql - localhost

sql goes here
...

This probably wont work just like that as comment symbol may be different for some databases but that is detail (even if only SQL is supported that would solve majority of cases).
Some people usually put this already at the top of SQL scripts to inform teammates which database is in question. This could be achievable via menu item, context menu or even global setting (I would set for to include this info in all sql files I use) etc. in the active editor that will by default take a active connection.

This could even allow complete connection description such as:
-- dbeaver: Server=myServerAddress;Database=myDataBase;Trusted_Connection=True;

sql here...

DBeaver uses internal (Eclipse-specific) files meta information storage so it don't need comments in files.
Potentially it could be a good feature (when migrating SQL from other UI tools) but this is definitely not related to active schema toolbar.
You could create another feature request for SQL comments recognition.

OK, created it at https://github.com/serge-rider/dbeaver/issues/639. Thx.

It doesn`t work. I have to checked Auto-sync connection with navigator, but Active catalog/schema is still empty. Click on Link with editor does nothing. Navigating in tree does nothing too.

Active connection changes but current schema doesn't..

Will be fixed in the next version.
I can make EA if you need.

if you publish EA I will be glad.

http://dbeaver.jkiss.org/files/ea/

Value Active catalog/schema in Toolbar is still the same. Clicking in navigation tree does nothing.
Sync is enabled.

This is how it works on my machine:

I know what is the difference. I expected that selectbox Active catalog/schema in Toolbar will be updated all the time. Right now is updated only if SQL editor is open.
Can you change it?

Active schema/catalog combos doesn't make sense without SQL editor.
It doesn't affect anything else. If you need just to change active schema (for whatever reason) you just right click on schema and choose "Set Active".

I have a cuestion with this functionality, if i undestood well @MatyCZ wants active catalog/schema do what active data source actually do:
When you open 2 connections and open one query on each one, those querys belongs to the conection, then if you change between this queys the datasource doesn't change.
i think this change wouldn't afect how people works now, this only improve how it works to be better
PS.
if i didn't explain i'll be glad to be more especific.


Envoy doesn't send http2 GOAWAY when drain connection for grpc upstream cluster

When LDS is updated, according to [public doc]https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/operations/draining), envoy should drain the existing connections, and for http2 connection, send GOAWAY signal, so client can handle it properly.
This behavior is confirmed when upstream is a http server.
In our case, the upstream cluster is a GRPC server, and grpc client use bidirectional stream to send/rev data with grpc server, when LDS is updated, envoy start to drain the connection, client doesn't receive GOAWAY signal and after the drain duration, client failed with RST_STREAM.
Just want to confirm is this expected for is there anything need to confirm for grpc?
This is the client side trace log

Confirmed the same with tcpdump, there is no GOSWAY until server reset the connection.

Sample client side code:

I believe this is a duplicate of https://github.com/envoyproxy/envoy/issues/14350. Work to fix this has been started, but I don't think it was ever finished. See https://github.com/envoyproxy/envoy/pull/16201 which I think would fix this. cc @murray-stripe.


Version of gl3w that generates complete stand-alone .h file

For those of us who have to write code on MS Windows, it's often more convenient to have the GL command loader be all you need without relying on a system <GL/glcorearb.h>.
Attached is a modified version of gl3w_gen that adds the necessary typedefs and #defines to gl3w.h. (Plus some unnecessary commenting and replacement of tabs by spaces.) Hope it is useful, either to merge bits of code into gl3w_gen or distribute as a separate program.
gl3w_gencomplete.py.txt

Hi Hugh,
Thank you for the code and for catching the missing PFNGLGETBOOLEANV function.
gl3w is meant to use the glcorearb.h file that gets downloaded besides the gl3w.h header and is working fine on Windows as is if you have gl3w/include in your include path.
I'm not convinced that inlining all needed #defines and typedefs is worth it since it might be a source of more flakiness (such as the PFNGLGETBOOLEANV case you caught). Also, imo it's better to limit gl3w just to extension loading and let glcorearb.h define the OpenGL API as it's designed.
The tabs are there because the generated gl3w's C code follows the Linux kernel coding style. I might reconsider this since it's not the first time that this is being brought up and most Python developers (and IDEs) frown upon tabs in Python source.
Lastly, would you consider sending pull requests in the future instead of uploading complete files since it's easier to track what exactly got changed.

On second look, the current version of gl3w does correctly expose glGetBooleanv.

I'm not convinced that inlining all the #defines and typedefs is always worth it either, just sometimes. For my project I wanted a single header, so modified gl3w_gen. Once I'd done so, offering the code back seemed the right thing to do. You could either merge the extra code into gl3w_gen and add a CLI option to select between the two, or leave it as a separate program, or whatever else you decide.
Yes glGetBooleanenv works. I think my approach of selecting the PF--PROC typedefs out with a regex causes the problem. I'd have done better to generate them from the GL command names instead.


Tensorboard path generalisation

Before submitting

[ y] Was this discussed/approved via a Github issue? (no need for typos, doc improvements)
[y ] Did you read the contributor guideline?
[ y] Did you make sure to update the docs?
[ y] Did you write any new necessary tests?

What does this PR do?
Fixes issue 793
You can (say) specify the version on the command line or generate it from the current datetime, which I find more meaningful than "version_73".
Likewise if the tensorboard data is not going to be preserved, it's much more readable in the tensorboard gui to skip the experiment name.
PR review
Anyone in the community is free to review the PR once the tests have passed.
If we didn't discuss your PR in Github issues there's a high chance it will not be merged.
Did you have fun?
Make sure you had fun coding 🙃
I learnt some things

FYI, I slightly simplified my test.  It still tests as much as the existing ones but doesn't check for the tensorboard output directory being created.  Perhaps tensorboard doesn't create it immediately when saving in earlier versions.  I couldn't get it to fail locally and it works for non-minimal versions.


Crash in callDidConnect() on receiving side

Hello,
Twilio voice version: 5.0
Devices: iPhone XS Max, iPhone XR
iOS version: 13.1.2, 13.1.2
My live app crashes on receiving side. It's app to app voice call. Following is the log from crashlytics and code snippet.
Please do not ask me to reproduce it in sample app. If anyone knows what is the issue and how to fix then let me know. It's random crash so I can't reproduce it during testing.

Crashed: com.apple.main-thread
0  myapp                0x100af5eb8 AppDelegate.callDidConnect(:) + 951 (AppDelegate.swift:951)
1  myapp                0x100af5eec @objc AppDelegate.callDidConnect(:) ()
2  TwilioVoice                    0x101ac8698 twilio::voice::CallObserverAdapter::onConnected(twilio::voice::Call*) + 42 (_hidden#680:42)
3  TwilioVoice                    0x101ea6a8c std::__1::__function::__func<twilio::voice::CallImpl::handleIceConnectionConnected()::$_30, std::__1::allocatortwilio::voice::CallImpl::handleIceConnectionConnected()::$_30, void ()>::operator()() + 2529620
4  libdispatch.dylib              0x1b343bbb0 _dispatch_call_block_and_release + 32
5  libdispatch.dylib              0x1b343d00c _dispatch_client_callout + 20
6  libdispatch.dylib              0x1b3448cd8 _dispatch_main_queue_callback_4CF + 968
7  CoreFoundation                 0x1b3710e20 CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE + 16
8  CoreFoundation                 0x1b370bb7c __CFRunLoopRun + 1980
9  CoreFoundation                 0x1b370b098 CFRunLoopRunSpecific + 480
10 GraphicsServices               0x1bd875534 GSEventRunModal + 108
11 UIKitCore                      0x1b782b7ac UIApplicationMain + 1940
12 myapp                          0x10085c05c main + 20 (ABCViewController.swift:20)
13 libdyld.dylib                  0x1b358af30 start + 4

And this is my code in AppDelegate.swift
func callDidConnect(_ call: TVOCall) {
    NSLog("AppDelegate callDidConnect:")
    self.call = call
    self.callKitCompletionCallback!(true) // Crash here, line no. 951
    self.callKitCompletionCallback = nil
}

Hi @aksthelion
Is it possible that the callKitCompletionCallback instance is nil at the time when L951 was called?

Yes that is what happening, so the question is what is making it nil and how to fix this?

Hi @aksthelion your application is responsible of keeping track of the callback object. To safe guard you can use
    if let completion = self.callKitCompletionCallback {
        completion(true)
    }

Yes you are right, it will fix the crash but what about the actual problem. Why is it happening? It's very unusual as I've never seen it before. Could it be a fundamental issue?

The callback is retained when:

Making a call: https://github.com/twilio/voice-quickstart-swift/blob/master/SwiftVoiceQuickstart/ViewController.swift#L653
Accepting a call: https://github.com/twilio/voice-quickstart-swift/blob/master/SwiftVoiceQuickstart/ViewController.swift#L664

The callback is for state transition and the SDK does not keep track of it. Your application needs to ensure the flow is correct.
If the problem persists in your environment, please provide steps of how this happens. Does this happen in your environment with the quickstart?

Closing the ticket hoping that the crash has been fixed. Feel free to reopen if you run into the issue or have any questions.


Bump to 0.13.0

I plan on merging this after https://github.com/bytecodealliance/wit-bindgen/pull/699 lands and one final update to wasm-tools deps.


-Adding swagger GUI for complete End to End sample

-Fixing bug with sample - object was missing in pet and store controller

By mistake i put scala file in java example , closing pull request.


add swagger UI for project:

generate docs with go-swagger
add version handler
pass version to docker build

Coverage: 97.481% (+0.006%) from 97.475% when pulling 58a82ebbfc255247526849deacb21fe499f8280b on add-swagger into 30b217ddbe0414be7d0b3adec04c6b0657cda613 on master.


ckb: add to module list

Not the first time I've forgotten to do this.
Motivation for this change
Things done

[ ] Tested using sandboxing
(nix.useSandbox on NixOS,
or option build-use-sandbox in nix.conf
on non-NixOS)
Built on platform(s)

[ ] NixOS
[ ] macOS
[ ] Linux

[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nox --run "nox-review wip"
[ ] Tested execution of all binary files (usually in ./result/bin/)
[ ] Fits CONTRIBUTING.md.

Thanks!


Rename image-cleanup to seiso

Seiso (jap. 清楚) = clean, neat

Docker hub already migrated, images moved too

Please open a new issue or PR, this has got nothing to do with the rename itself.


INTERNAL_ASSERT failed

🐛 Bug

RuntimeError: batched == nullptrINTERNAL ASSERT FAILED at "/tmp/pip-req-build-ym9h0m9k/functorch/csrc/DynamicLayer.cpp":250, please report a bug to PyTorch.
To Reproduce
Steps to reproduce the behavior:
1.Run the following:
import torch
from functorch import vmap

b, n, m = 3, 7, 2
x = torch.rand(b, n)
partition = torch.rand(n, m) > 0.5
vmap(lambda mask: x[:, mask].sum(-1))(partition)

Environment
Collecting environment information...
PyTorch version: 1.10.0.dev20210621+cpu
Is debug build: False
CUDA used to build PyTorch: None
ROCM used to build PyTorch: N/A
OS: Ubuntu 20.04.2 LTS (x86_64)
GCC version: (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0
Clang version: Could not collect
CMake version: version 3.16.3
Libc version: glibc-2.31
Python version: 3.9 (64-bit runtime)
Python platform: Linux-5.4.0-74-generic-x86_64-with-glibc2.31
Is CUDA available: False
CUDA runtime version: No CUDA
GPU models and configuration: No CUDA
Nvidia driver version: No CUDA
cuDNN version: No CUDA
HIP runtime version: N/A
MIOpen runtime version: N/A
Versions of relevant libraries:
[pip3] functorch==0.0.1a0+9d091e6
[pip3] numpy==1.20.3
[pip3] torch==1.10.0.dev20210621+cpu
[conda] functorch                 0.0.1a0+9d091e6          pypi_0    pypi
[conda] numpy                     1.20.3           py39hdbf815f_1    conda-forge
[conda] torch                     1.10.0.dev20210621+cpu          pypi_0    pypi
Additional context

It might be a problem caused by facebookresearch/functorch but it said to report to PyTorch so we did.

Reported by @VRehnberg

@VRehnberg thank you for reporting the bug. Could you tell us a bit more about your use case? We should be able to fix this specific bug but want to make sure that vmap works for the rest of your use case as well.

When this problem appeared we were trying to estimate the how well different subsets of the neurons in a neural network can be seen as modules. In particular we have a tensor P which consists of the masks that indicates which neuron in the network belongs to a particular subset. One way to estimate this is to cluster the activation subsets into bins and from the counts of the bins it is possible to estimate joint distributions from which the mutual information between subsets can be calculated.
In this case using vmap would be more of a convenience than give any significant speed-up.
Another place where vmap would have been convenient were when we were computing jacobians per input. In this case the outputs were independent and as such we computed jacobian(lambda x: func(x).sum(0), x, create_graph=True) and permuted the axes of the output instead of vmap(partial(jacobian, func, create_graph=True), 0, 0)(y).
One thing that we would like from vmap would be the possibility to handle named tensors. But, I suppose that both being under development, it might be a bit much to wish for right now. This could look something like:
def nmap(func, over_names, over_out_dim=None):
  '''Map function over named parts of tensor.
  Parameters:
    func (Callable):
    over_names (Str/Tuple[str, ...]): What named dimensions to map over.
    over_out_dim (Int/Tuple[Int, ...]/None): Where to put the dimensions that were mapped over in the output.
      Optional, default behaviour to put them at the front.
  '''
  ...

Oh, and small thing is that I'd expect from the name vmap that the default dimension to map over would be 0 (the vertical one).
I'd also like to say that, what functorch is aiming for seem like a great idea. Keep up the good work :)

Another place where vmap would have been convenient were when we were computing jacobians per input. In this case the outputs were independent and as such we computed jacobian(lambda x: func(x).sum(0), x, create_graph=True) and permuted the axes of the output instead of vmap(partial(jacobian, func, create_graph=True), 0, 0)(y).

@VRehnberg To clarify, were you saying that you wanted to do vmap(partial(jacobian, func, create_graph=True), 0, 0)(y).? If so, there is a way to do this in functorch by composing the vmap and jacrev transforms (see here for more details). torch.autograd.functional.jacobian isn't formulated as a function transform so we wrote our own (functorch.jacrev). The usage is like the following:
>>> x = torch.randn(64, 5)
>>> jacobian = vmap(jacrev(torch.sin))(x)
>>> assert jacobian.shape == (64, 5, 5)

To clarify, were you saying that you wanted to do...
Yes.
there is a way to do this in functorch...
Nice! I just wanted to state what possible use cases we have found so far, but then you've got that one covered already.


added temperature schedules

This PR adds temperature schedules to JaxMD.
The three schedules are Constant, PiecewiseLinear and the OscillatingRamp from IPSuite.
All combinations of thermostat and schedule work.

pre-commit.ci autofix

pre-commit.ci autofix

pre-commit.ci autofix

Looks good. After including docs I think we can merge.

pre-commit.ci autofix


two-gene scatterplot

Question came up: can you look at the correlation between two target genes. We could put in a gene-gene scatterplot example.

Seurat has a function made for this very thing. I can add in a section in the scRNA-seq stuff.

I have a strong preference for using ggplot2 (or even base graphics) for this as participants that want to make this kind of plot will not necessarily have data appropriate for use with Seurat (e.g., bulk RNA-seq data). There's nothing stopping someone from loading a bulk count matrix into Seurat to make a two-gene scatterplot, but we want to teach generalizable methods wherever possible. We don't need a specialized package to make a scatterplot. I would put this in the afternoon of day 2 where we'll be covering a lot of the ggplot2 stuff.

Yeah, also I tried the GenePlot function in Seurat and it is not great. And also as you said, it teaches people nothing that is very generalizable.

I've gone in a different (line graph) direction with the ML exercise notebook, so I'm going to remove that from 2019 Chicago.


Origin/meet the team page

The page is showing up blank on my end. Any idea what's going on? Has this been tested before creating a PR for it?

This looks like a great start! Here are some comments...
Needs Fixing

Looks like we're missing John as of right now so that should be added in before first merge
When adjusting to mobile screen size, the title goes away
At an odd tablet sizing, the boxes all become different odd shaped (though this isn't a huge deal for right now)

Notes

I will soon be sending over images of both directors and jr directors (along with their titles), we haven't decided if we want to use real images or not but that should be an easy and quick replace if so

Needs to be ready for merge

adding john and fixing the missing mobile title should be ready to go before we merge in

Great work everyone!!

THIS LOOKS AWESOME! Super well done so far guys! I am a little confused as to where the mentor and volunteer buttons are supposed to be on the page lol (I see the code for them but they don't render) but besides that this is amazing.


program not response to wechat msg with log: RetCode:0  Selector:7

rapid RetCode:0  Selector:7, about 5 times per second.
and program not response to wechat msg, I must restart it manually.
2022/12/12 17:31:15 RetCode:0  Selector:7
2022/12/12 17:31:15 RetCode:0  Selector:7
2022/12/12 17:31:15 RetCode:0  Selector:7
2022/12/12 17:31:15 RetCode:0  Selector:7
2022/12/12 17:31:16 RetCode:0  Selector:7
2022/12/12 17:31:16 RetCode:0  Selector:7
2022/12/12 17:31:16 RetCode:0  Selector:7
2022/12/12 17:31:16 RetCode:0  Selector:7
2022/12/12 17:31:16 RetCode:0  Selector:7
2022/12/12 17:31:17 RetCode:0  Selector:7
2022/12/12 17:31:17 RetCode:0  Selector:7
2022/12/12 17:31:17 RetCode:0  Selector:7
2022/12/12 17:31:17 RetCode:0  Selector:7
2022/12/12 17:31:17 RetCode:0  Selector:7
2022/12/12 17:31:18 RetCode:0  Selector:7
2022/12/12 17:31:18 RetCode:0  Selector:7
2022/12/12 17:31:18 RetCode:0  Selector:7
2022/12/12 17:31:18 RetCode:0  Selector:7
2022/12/12 17:31:18 RetCode:0  Selector:7
2022/12/12 17:31:19 RetCode:0  Selector:7
2022/12/12 17:31:19 RetCode:0  Selector:7
2022/12/12 17:31:19 RetCode:0  Selector:7
2022/12/12 17:31:19 RetCode:0  Selector:7
2022/12/12 17:31:19 RetCode:0  Selector:7
2022/12/12 17:31:20 RetCode:0  Selector:7
2022/12/12 17:31:20 RetCode:0  Selector:7
2022/12/12 17:31:20 RetCode:0  Selector:7
2022/12/12 17:31:20 RetCode:0  Selector:7
2022/12/12 17:31:20 RetCode:0  Selector:7
2022/12/12 17:31:21 RetCode:0  Selector:7
2022/12/12 17:31:21 RetCode:0  Selector:7
2022/12/12 17:31:21 RetCode:0  Selector:7
2022/12/12 17:31:21 RetCode:0  Selector:7
2022/12/12 17:31:21 RetCode:0  Selector:7
2022/12/12 17:31:21 RetCode:0  Selector:7
2022/12/12 17:31:22 RetCode:0  Selector:7
2022/12/12 17:31:22 RetCode:0  Selector:7
2022/12/12 17:31:22 RetCode:0  Selector:7
2022/12/12 17:31:22 RetCode:0  Selector:7
2022/12/12 17:31:22 RetCode:0  Selector:7
2022/12/12 17:31:23 RetCode:0  Selector:7
2022/12/12 17:31:23 RetCode:0  Selector:7
2022/12/12 17:31:23 RetCode:0  Selector:7
2022/12/12 17:31:23 RetCode:0  Selector:7
2022/12/12 17:31:23 RetCode:0  Selector:7
2022/12/12 17:31:24 RetCode:0  Selector:7
2022/12/12 17:31:24 RetCode:0  Selector:7
2022/12/12 17:31:24 RetCode:0  Selector:7
2022/12/12 17:31:24 RetCode:0  Selector:7
2022/12/12 17:31:24 RetCode:0  Selector:7
2022/12/12 17:31:25 RetCode:0  Selector:7
2022/12/12 17:31:25 RetCode:0  Selector:7
2022/12/12 17:31:25 RetCode:0  Selector:7
2022/12/12 17:31:25 RetCode:0  Selector:7
2022/12/12 17:31:25 RetCode:0  Selector:7
2022/12/12 17:31:26 RetCode:0  Selector:7
2022/12/12 17:31:26 RetCode:0  Selector:7
2022/12/12 17:31:26 RetCode:0  Selector:7
2022/12/12 17:31:26 RetCode:0  Selector:7
2022/12/12 17:31:26 RetCode:0  Selector:7
2022/12/12 17:31:27 RetCode:0  Selector:7
2022/12/12 17:31:27 RetCode:0  Selector:7
2022/12/12 17:31:27 RetCode:0  Selector:7
2022/12/12 17:31:27 RetCode:0  Selector:7
2022/12/12 17:31:27 RetCode:0  Selector:7
2022/12/12 17:31:28 RetCode:0  Selector:7
2022/12/12 17:31:28 RetCode:0  Selector:7
2022/12/12 17:31:28 RetCode:0  Selector:7
2022/12/12 17:31:28 RetCode:0  Selector:7
2022/12/12 17:31:28 RetCode:0  Selector:7
2022/12/12 17:31:28 RetCode:0  Selector:7
2022/12/12 17:31:29 RetCode:0  Selector:7
2022/12/12 17:31:29 RetCode:0  Selector:7

你是不是发文件了？
发送文件之后持续一段时间这样

Do stickers and pictures belong to files? Actually, I just send texts, stickers, and photos.

图片也属于文件的，图片要上传到微信的服务器，上传之后就会持续一段时间这样，属于正常现象。


ESI API

this beauty, 18 months, all XML and CREST in 1.
https://developers.eveonline.com/blog/article/introducing-the-esi-api

CCP AquarHEAD on esi updates

migrating crest to esi


feat(spacing): Changed value of $space-xxl to 3rem

changed $space-xxl to 3rem
added variable $space-xxxl with 4rem

@tonysaad @wholesale-design-system/engineers @inanda This might be a breaking change for your applications so if you update to a new version of the scss repository keep track on that!

I think before we merge these changes:
@tonysaad and @inanda should check with their applications how these new changes might affect their application.
As it is a breaking change, I don't want to create much burden for production systems.

I'm planning a live-deploy today, thinking to postpone merging this branch until we change the names so I don't have to do double work


Need to explain the sources of llbmc-bench and GNU Coreutils

README.md should given an explanation on the sources of llbmc-bench (to give proper credit), coreutils (GNU) and how they may be different from the original.

@domainexpert It has been updated in here : https://github.com/feliciahalim/klee-examples/pull/25

#25 Merged.


Add environment variable to set "--use-proxy" behavior

For users who want to use the Kubernetes API Proxy method for the kubectl cost command, it would be nice to be able to set an environment variable to configure the behavior of the --use-proxy flag.
gz#1949(related to Zendesk ticket #1949)

@dramich did you end up doing something here previously for the core cost-model stuff?

This is related to the kubectl plugin not using envvars

cc @michaelmdresser who I believe explored different ways to proxy when we first created this project

Just to summarize the expected behavior so everyone understands what's going on (I talked with @srpomeroy about this): instead of having to do this:
kubectl cost --use-proxy ...foo
kubectl cost --use-proxy ...bar

We want to expose functionality like this:
export KUBECTL_COST_USE_PROXY=true
kubectl cost ...foo
kubectl cost ...bar

Essentially, we want to make a roughly-equivalent set of env vars that can be used in place of flags. At a minimum, this issue is a request for just the behavior shown in the above examples.

I recommend using https://github.com/spf13/viper for this because we use it elsewhere -- see existing usage in OpenCost:
https://github.com/kubecost/opencost/blob/97c57edf2f80b094c54a02ee081952eea8f16b27/pkg/cmd/commands.go#L60-L89

Hello, You could use the environment variable KUBECTL_COST_USE_PROXY to set --use-proxy behavior from release v0.2.11. Closing this issue.


what about JCQP?

What is the third-party library JCQP used for? is it  used with qpoases. I can not foud the JCQP throuth the internet. how can i get it .  if I want to use the osqp instead qpoases，how can i do ?
i found you use the osqpeigen. but you  do not install in the third party ? how can i install in the third party. i tried  install but it not work. how can i install osqpeigen.

JCQP was a QP solver, but it is not very good so we don't use it anymore.  qpOASES is the only solver needed, and it is already in the third party folder and doesn't need to be installed.  You don't need to install any qp libraries yourself.
If you are having trouble with compiling, you can share the specific error messages and we can help you.


Whole day events not correctly opened by the calendar-widget

I have seen that when you try to open an event that is defined for the whole day (no start/end times), if you open it directly by tapping on it in the calendar-widget, the event is spanned over two days (the day of the event and the day before). The problem appears if you try to edit it, as by default the event is changed to 2 days, and if you don’t realize that when you save it, the event is changed. However, if you open the same event by using Android’s calendar, the event seems to be correctly defined for only one day. I do not know if this is just a bug in the calendar-widget or if it only happens in combination with my system (Android 7.0 in a LG G5 smartphone). I am using the latest beta version 1.10.0-99d9a0f6.

Before editing, do you see this event in the widget in one day only?
Could you reproduce this problem,
make screenshot of the widget and post it here
and send to me a report with events for debugging? (It's in Feedback -> Share events for debugging).

I think I could reproduce the problem: it occurs when opening the All-day-event with a stock Android calendar (I have such on my LineAge/CM device).
But if I open the same event with Google Calendar, it shows it to me correctly.
So it looks like incompatibility/bug of some Calendar application.
In fact, all day events are quite weird (they don't have time zone... as I figured out a couple of years ago). So no wonder that different calendar applications interprete this differently... This is a consequence of badly defined API...

Thanks for investigating the issue. Yes, it seems that you have found the problem. If the calendar-widget opens the all-day event directly (using stock calendar app) it shows incorrect information spanning over two days (I do not use Google’s calendar). But if the event is opened from the stock calendar app without using the calendar-widget, the event is correctly placed in only one day. Do you think you can workaround the problem of the bad API to handle those requests correctly from the calendar-widget?

I fixed this bug, now both Calendar applications open All-day events correctly.

Thanks, that was quick! I confirm it is fixed in the latest beta released in Google Play.


issue reported if private method will be invoked by __call

This script:
<?php

class A {
    private function hidden() {
        return true;
    }

    public function __call($name, array $args) {
        if ($name == 'hidden') {
            return $this->hidden();
        }
    }
}

$a = new A();
var_dump($a->hidden());

Results in this Phan output:
src/call.php:16 PhanAccessMethodPrivate Cannot access private method \A::hidden defined at src/call.php:4

If the __call method is removed, the issue isn't reported.

Could you mention the expected behavior?
I assume it should still warn without __call
It can't analyze the semantics of the inside of __call, so it might make sense to have a different warning when @method is absent

Yes, the issue is valid if there's no __call method. I wasn't sure what the appropriate behavior would be. A slightly different warning when __call is present, but @method absent, would be helpful, and easy enough to implement. I can look into that.


KAFKA-7475 - capture remote address on connection authetication errors, and log it

Signed-off-by: radai-rosenblatt<EMAIL_ADDRESS>More detailed description of your change,
if necessary. The PR title and PR message become
the squashed commit message, so use a separate
comment to ping reviewers.
Summary of testing strategy (including rationale)
for the feature or bug fix. Unit and/or integration
tests are expected for any behaviour change and
system tests should be considered for larger changes.
Committer Checklist (excluded from commit message)

[ ] Verify design and implementation
[ ] Verify test coverage and CI build status
[ ] Verify documentation (including upgrade notes)

Cc @rajinisivaram

i was originally trying to get the whole Node to be available when logging the connection issue, but doing that looks to be more work than simple grabbing the remote socket address.


[Feature Req] Option to include scripting language interpreters, libraries etc in bundles

Apple is planning on removing scripting languages by default from future versions MacOS.
This would require the user to install them or developers to package the tools as a part of their products.
A depreciation notice was added to macOS Catalina’s developer documentation since its beta

Scripting language runtimes such as Python, Ruby, and Perl are included in macOS for compatibility with legacy software. Future versions of macOS won’t include scripting language runtimes by default, and might require you to install additional packages. If your software depends on scripting languages, it’s recommended that you bundle the runtime within the app.

https://developer.apple.com/documentation/macos-release-notes/macos-catalina-10_15-release-notes#3318257
It doesn’t appear to be enforced yet, now on Monterey,  but I believe it is going ahead.
Whether or not it will be gradual I don't know. I have seen a notice dialogue saying that"this application will no longer work on future versions of macOS” in a few applications which I believe is for the removal of Python 2 which I have now confirmed.

Use of Python 2.7 isn’t recommended as this version is included in macOS for compatibility with legacy software. Future versions of macOS won’t include Python 2.7. Instead, it’s recommended that you run python3 from within Terminal.

https://developer.apple.com/documentation/macos-release-notes/macos-catalina-10_15-release-notes#3318257
I think it will be good to have an option to build in runtimes etc
No doubt some users will want the option to have their systems share a global runtime installation as well.

+1 for this. PHP is already removed in the latest OS. My apps are not working anymore, and having every user install php from the terminal is not an option. We need a way to embed the interpreter in the app.

While that would be great, it's unlikely this is ever going to happen. In the meantime you could build your own and include it. I'm working on something like that to bring Perl up to date. The main script then wouldn't be the Perl script, but some small wrapper shell script telling Platypus where to find the interpreter and the actual script. But it makes for a rather fat app...

FWIW: with the latest Platypus I've been able to use the Perl script directly giving platypus the path to the Perl shipped with the bundle:
--interpreter ./bin/perl

where bin is a folder in the root of the bundle. This way I no longer need the wrapper script.


0.4.0 update

Can you elaborate more on what "stop DDoSing coordinator with hcks" means? All our hcks hit URLs on the underlying service

recksato says:

Guess this change makes sense then


HandConstraint don’t work with Oculus (Link) Controller in OpenXR

Describe the bug
HandConstraint don’t work with Oculus Controller in OpenXR
To reproduce

Configure your project with OpenXR plugin
Create a scene with MRTK toolkit and a gameobject with a HandConstraint Behaviour, add a cube as a child
Change at behaviour SolverHandler : Tracked Target Type -> Controller Ray
Play on Oculus with Link
The cube don’t follow the controllers

Expected behavior
The cube should follow the controller.
Screenshots
Scene setup :

Your setup (please complete the following information)

Unity Version 2020.3.19f1
MRTK Version 2.7.2

Target platform (please complete the following information)

Oculus Quest 2 with Link (connected on USB to the PC)

Additional context
With a WMR immersive headset it works well.

FYI: Today I had the same issue on Oculus 2 without OpenXR, using MRTK 2.7.2 and Unity 2020.3.18f1 (LTS). I fixed it also by setting handConstraint.UpdateWhenOppositeHandNear = true; Thanks for finding the workaround @Florimondable !

We appreciate your feedback and thank you for reporting this issue.
Microsoft Mixed Reality Toolkit version 2 (MRTK2) is currently in limited support. This means that Microsoft is only fixing high priority security issues. Unfortunately, this issue does not meet the necessary priority and will be closed. If you strongly feel that this issue deserves more attention, please open a new issue and explain why it is important.
Microsoft recommends that all new HoloLens 2 Unity applications use MRTK3 instead of MRTK2.
Please note that MRTK3 was released in August 2023. It features an all-new architecture for developing rich mixed reality experiences and has a minimum requirement of Unity 2021.3 LTS. For more information about MRTK3, please visit https://www.mixedrealitytoolkit.org.
Thank you for your continued support of the Mixed Reality Toolkit!


Enhance Exception Handling at Pubsub module

Create a PubSubException class that descends from NestedRuntimeException and make sure we are using it across the PubSubTemplate, and the Message channel Adapters

Message Channel Adapters should throw MessagingException if there is a clear context of "guilty" message. Mostly the super classes (MessageProducerSupport and AbstractMessageHandler) do that wrapping for us, but for optimization consideration (and less StackTrace) would be better to throw MessagingException from the first place.


Force integer to setLevel for dimmable lights

This should fix #40
Looks like it works with existing lights (GE and Linear Dimmer Switches) as well as fixes for other dimmables (CreeBulbs)

👍


test_rowmul_return_two_columns fails when using CUDA enabled OmnisciDB server

        for i, r in enumerate(result):
>           assert r[0] == 2 * i
E           assert 3.0 == 2
E             +3.0
E             -2

rbc/tests/test_omnisci_column_basic.py:232: AssertionError

Notice that the order of multi-output columns is reversed when using CUDA enabled server.

Rather than reversed, the output column arguments point to the same memory.
I think the fix should be similar to https://github.com/omnisci/omniscidb-internal/pull/4721


remove dtAssemble

@sashadt: I removed dtAssemble from release notes as well. But since the release notes is for all older releases, should we leave dtAssemble as is?


Fix bq output parameter.

Hello,
The bq, bq_extract, and bq_load operators are documented as accepting bq.last_job_id as an output parameter, but in the current implementation it is bq.last_jobid.
Since the td operator can use td.last_job_id, I thought last_job_id may be correct and fixed it like that.

@zaimy Thank you for your contribution!
I think I understand the issue and your fix is correct.
But we hope to keep compatibility as much as possible.
If someone is using bq.last_jobid in their workflows, the workflow will fail when they upgrade their Digdag.
So I would like to propose that keep bq.last_jobid and only add bq.last_job_id.
In addition, it is better to describe as "bq.last_jobid will be kept for compatibility and remove in near future release" in the document.

Thank you check the PR!
I agree with your comment. I will add some commits. 😃

@yoyama Changed the Pull Request policy to make both old and new parameters available. Could you check it?

Thanks too!


fix: add missing parameter option for accounts endpoint

Proposed changes
For 'all' and 'top' you can specify a limit and offset for the accounts endpoint. This PR adds a parameters option where you can specify those.
Types of changes

[x] Bugfix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Refactoring (improve a current implementation without adding a new feature or fixing a bug)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
[ ] Build (changes that affect the build system)
[ ] Docs (documentation only changes)
[ ] Test (adding missing tests or fixing existing tests)
[ ] Other... Please describe:

Checklist

[x] I have read the CONTRIBUTING documentation
[x] Lint and unit tests pass locally with my changes
[ ] I have added tests that prove my fix is effective or that my feature works
[x] I have added necessary documentation (if appropriate)

@ItsANameToo conflict


Null-terminate pam responses in the converse function

The username and password response was previously directly created from rust's str, which is not null-terminated. Depending on the allocator used, this usually led to a PAM_USER_UNKNOWN error, because the username returned contained additional characters at the end.
The fix is to properly null-terminate the strings using CString before cloning them with strdup for the response.
Note that returning PamReturnCode::CONV_ERR when CString fails (i.e. contains a null-byte) is just a quick hack. Ideally Authenticator::set_credentials should return a Result to indicate this error directly to the user. I can submit a PR if you are interested.

Note: This broke with<PHONE_NUMBER>4e3b2275688b19ca32d1b978e43202.

Hey thanks for catching that! Not sure why that particular problem never showed up in any of my usecases. As strs are not null-terminated, this should happen even on "valid" inputs without null-bytes right?
I'll merge this and change Authenticator::set_credentials afterwards.

It did work sometimes for me using dynamically allocated strings. If you are using crypto libs that null strings before deallocating, chances are high you get an all-zero allocation. 😉
However, using static strings it did never work, which is why I started looking into this.


the script shuts without displaying error

Heloo when i run the script it stops at this line :
print(f"\n{cg}DeviceInfo:{cres}\nunlocked: {unlocked}\nSoC: {SoC}\nproduct: {product}\ntoken: {token}\n")
and i actually get this code at the end :
DeviceInfo:
unlocked: no
SoC: Qualcomm
product: aurora
token: xxxx (with my actual token)

and shuts
is it the decrypted token? what should i do after that then?
thanks in advance!!

ok so by adding "europe" it get one step further to the class RetrieveEncryptData
and i get this error :
Traceback (most recent call last):
  File "C:\Users\amine\Downloads\MiUnlockTool.py", line 337, in <module>
    c = RetrieveEncryptData("/api/v2/unlock/device/clear", {"data":{"product":product}}).add_nonce().run()
  File "C:\Users\amine\Downloads\MiUnlockTool.py", line 318, in add_nonce
    r = RetrieveEncryptData("/api/v2/nonce", {"r":''.join(random.choices(list("abcdefghijklmnopqrstuvwxyz"), k=16)), "sid":"miui_unlocktool_client"}).run()
  File "C:\Users\amine\Downloads\MiUnlockTool.py", line 333, in run
    return json.loads(b64decode((lambda s: s[:-s[-1]])(AES.new(b64decode(ssecurity), AES.MODE_CBC, b"0102030405060708").decrypt(b64decode(session.post(Url(scheme="https", host=url, path=self.path).url, data=self.params, headers=headers, cookies=cookies).text)))))
  File "C:\Users\amine\Downloads\MiUnlockTool.py", line 333, in <lambda>
    return json.loads(b64decode((lambda s: s[:-s[-1]])(AES.new(b64decode(ssecurity), AES.MODE_CBC, b"0102030405060708").decrypt(b64decode(session.post(Url(scheme="https", host=url, path=self.path).url, data=self.params, headers=headers, cookies=cookies).text)))))
IndexError: index out of range

can you help please?

ok so by adding "europe" it get one step further to the class RetrieveEncryptData
and i get this error :
Traceback (most recent call last):
  File "C:\Users\x\Downloads\MiUnlockTool.py", line 337, in <module>
    c = RetrieveEncryptData("/api/v2/unlock/device/clear", {"data":{"product":product}}).add_nonce().run()
  File "C:\Users\x\Downloads\MiUnlockTool.py", line 318, in add_nonce
    r = RetrieveEncryptData("/api/v2/nonce", {"r":''.join(random.choices(list("abcdefghijklmnopqrstuvwxyz"), k=16)), "sid":"miui_unlocktool_client"}).run()
  File "C:\Users\x\Downloads\MiUnlockTool.py", line 333, in run
    return json.loads(b64decode((lambda s: s[:-s[-1]])(AES.new(b64decode(ssecurity), AES.MODE_CBC, b"0102030405060708").decrypt(b64decode(session.post(Url(scheme="https", host=url, path=self.path).url, data=self.params, headers=headers, cookies=cookies).text)))))
  File "C:\Users\x\Downloads\MiUnlockTool.py", line 333, in <lambda>
    return json.loads(b64decode((lambda s: s[:-s[-1]])(AES.new(b64decode(ssecurity), AES.MODE_CBC, b"0102030405060708").decrypt(b64decode(session.post(Url(scheme="https", host=url, path=self.path).url, data=self.params, headers=headers, cookies=cookies).text)))))
IndexError: index out of range

can you help please? i've tried multiple times

Try this to print more info to know the cause of the issue
https://github.com/offici5l/MiUnlockTool/blob/dev/MiUnlockTool.py

hello!
thank you! so i have more information i added some debug to the script :
url = https://eu-unlock.update.intl.miui.com/api/v2/nonce Error: Received non-200 status code 401 <function urlunparse at 0x0000017045003E20> Traceback (most recent call last):   File "C:\Users\amine\MiUnlock\pythonProject\MiUnlockTool.py", line 425, in <module>     c = RetrieveEncryptData("/api/v2/unlock/device/clear", {"data":{"product":product}}).add_nonce().run()   File "C:\Users\amine\MiUnlock\pythonProject\MiUnlockTool.py", line 323, in add_nonce     nonce_response = self.get_nonce()   File "C:\Users\amine\MiUnlock\pythonProject\MiUnlockTool.py", line 335, in get_nonce     nonce_response = RetrieveEncryptData("/api/v2/nonce", nonce_params).run()   File "C:\Users\amine\MiUnlock\pythonProject\MiUnlockTool.py", line 365, in run     decrypted_data = self.decrypt_response(response)   File "C:\Users\amine\MiUnlock\pythonProject\MiUnlockTool.py", line 398, in decrypt_response     raise ValueError("Received empty response or failed to decrypt.") ValueError: Received empty response or failed to decrypt.
and using your script i got this :
`Error: index out of range
Response Text:
Decoded Data: b''
Decrypted Data: b''
Process finished with exit code 0
`

hello!
thank you! so i have more information i added some debug to the script :
`
url = https://eu-unlock.update.intl.miui.com/api/v2/nonce
Error: Received non-200 status code 401
<function urlunparse at 0x0000017045003E20>
Traceback (most recent call last):
File "C:\Users\amine\MiUnlock\pythonProject\MiUnlockTool.py", line 425, in
c = RetrieveEncryptData("/api/v2/unlock/device/clear", {"data":{"product":product}}).add_nonce().run()
File "C:\Users\amine\MiUnlock\pythonProject\MiUnlockTool.py", line 323, in add_nonce
nonce_response = self.get_nonce()
File "C:\Users\amine\MiUnlock\pythonProject\MiUnlockTool.py", line 335, in get_nonce
nonce_response = RetrieveEncryptData("/api/v2/nonce", nonce_params).run()
File "C:\Users\amine\MiUnlock\pythonProject\MiUnlockTool.py", line 365, in run
decrypted_data = self.decrypt_response(response)
File "C:\Users\amine\MiUnlock\pythonProject\MiUnlockTool.py", line 398, in decrypt_response
raise ValueError("Received empty response or failed to decrypt.")
ValueError: Received empty response or failed to decrypt.
`
and using your script i got this :
`Error: index out of range
Response Text:
Decoded Data: b''
Decrypted Data: b''
Process finished with exit code 0
`

download and try again :
https://github.com/offici5l/MiUnlockTool/blob/dev/MiUnlockTool.py
Also tell me more info like :
region account
your region
device region cn eu mi in ...
Have you tried logging out of your account in the browser and logging in again?

region account : France - Europe
my region : France - Europe
Device is "eu" normally
how do I log out on the browser?

Open the link in your default browser.
https://account.xiaomi.com
And click on log out
Then when you run MiUnlockTool, type 2 and press Enter.

first i had this problem :
if 'serviceToken' not in cookies:
print(f"\n{cr}Failed to get serviceToken.{cres}")
remove("wb_id")
so i loaded the link on my computer to enter the token manually
here's the result :

URL: https://eu-unlock.update.intl.miui.com/api/v2/nonce
Error: index out of range
Response Text:
Decoded Data: b''
Decrypted Data: b''

by the way i forgot to precise i have ah Xiaomi 14 Ultra on hyperOS

the issueis related to the failure to obtain nonce, the Xiaomi server did not accept the data sent for some reason, perhaps Xiaomi updates regarding modern devices ... !
Question about the official tool what error do you get?

when i go in settings > unlock bootloader i get : go to Xiaomi Community first

I don't mean the settings app, but the official Xiaomi tool to unlock the bootloader
( I added a step to find out exactly what the issue is.
https://github.com/offici5l/MiUnlockTool/blob/dev/MiUnlockTool.py )

i was only having an error at first so i edited the script :
`        except Exception as e:
print("\nError:", e)
if isinstance(response, str):
print(f"\nResponse (as string):\n{response}")
else:
try:
print(f"\nData sent with the request: {response.request.body.decode('utf-8')}")
except AttributeError:
print("\nCould not access request data")
print("\n\nError:", e)
if 'response_text' in locals():
print(f"\n\nresponse_text:\n\n{response_text}\n\n")
if 'decoded_data' in locals():
print(f"\n\ndecoded_data:\n\n{decoded_data}\n\n")
if 'decrypted_data' in locals():
print(f"\n\ndecrypted_data:\n\n{decrypted_data}\n\n")
if 'unpadded_data' in locals():
print(f"\n\nunpadded_data:\n\n{unpadded_data}\n\n")
if 'decoded_unpadded_data' in locals():
print(f"\n\ndecoded_unpadded_data:\n\n{decoded_unpadded_data}\n\n")
if 'json_data' in locals():
print(f"\n\njson_data:\n\n{json_data}\n\n")
        exit()`

        and go this answer :

Error: 'str' object has no attribute 'text'
Response (as string): xxxxxxxxxx (i removed it as i'm not sure if its confidential data but i got a string with a length of 281)
Error: 'str' object has no attribute 'text'
Process finished with exit code 0

Okay!
so i found where the problem was :
        try:
            response = session.post(Url(scheme="https", host=url, path=self.path).url, data=self.params,
                                    headers=headers, cookies=cookies).text
            response_text = response**.text**

i removed .text
and i got this :
This device clears user data when it is unlocked

An unlocked device is an easy target for malware which may damage your device or cause financial loss.

Press Enter to Unlock
( or type q and press Enter to quit)

________________________________________________________

code 20031

Please add your account in Settings > Developer options > Mi Unlock status.

offici5l.github.io/code

but the problem is i can't add my account in the settings, it tells  "Couldn't add. Please go to Mi Community to apply for authorization"
when i use your MiBypassTool.py to bypass (i installed your downgrade settings.apk) i get this :
Check if device is connected in normal mode...

Device is connected Done

Now bind your account in Mi Unlock status ...

Current version: V8<IP_ADDRESS>.UNAEUXM

Version updated to: V<IP_ADDRESS>.UNAEUXM

code: 10000

description: 参数异常

descCN: 参数异常

descEN: Request parameter error


pass the layer name downchain to EnumerateDeviceExtensionProperties

and fix clang-format for lines I didn't touch just in case CI will kick it back

CI gfxreconstruct build queued with queue ID 6955.

CI gfxreconstruct build # 1261 running.

CI gfxreconstruct build # 1261 passed.


[dart2js] make it an error to use the dart2js snapshot outside "dart compile js"

Today, the dart2js gives a warning when invoked in an unsupported context, like outside the dart cli and internal build systems. Since #46100 developers are expected to invoke dart2js via "dart compile js".
The only way to invoke dart2js outside the standard way is to directly access its snapshot (which is not in an advertised location of the SDK). Only internal build systems and the flutter tool do this today.
We would like to make it an error to invoke the snapshot directly, except for those counted supported cases.
To do so, we need to:

[ ] https://github.com/flutter/flutter/pull/122344 - Fix the invocation from the flutter tool to use the --invoker flag (which marks flutter tools as an allowed entrypoint) or to use dart compile js instead.
[ ] Change dart2js to issue an error going forward when the --invoker flag is missing.

@mit-mit - any concerns in making this happen by Dart 3.0? Any additional communication needed? Technically this is would be a new error, but we don't consider this a breaking change because the snapshot is hidden since the breaking changes in #46100 (made in https://github.com/dart-lang/sdk/commit/69249df50bcc7a0489176efd3fd79fff018f1b91, which went out in Dart 2.8)

No concerns, and I do not think additional comms are needed.


providing Rect? srcRect to draw certain area of given image for paintImage()

The optional Rect? srcRect function needs to be provided for the paintImage() method. In some scenarios we need to draw a certain part of the image instead of drawing the whole image. When the srcRect parameter is given to the method, it should use these values.
I provided this feature for my own project by developing in the paintImage() method. can I send a pull request?

Pull requests are welcome.


refactor apply for support streaming feature

current the file of apply entity is like this:
kind: Entity
name: user
length: 8
description: 'description'
batch-features:
- group: device
  description: 'device features'
  features:
  - name: model
    value-type: string
    description: 'model name'
  - name: price
    value-type: int64
    description: 'model price'

for support streaming feature well, it will be modified to this:
kind: Entity
name: user
length: 8
description: 'description'
groups:
- name: device
  category: batch
  description: 'device features'
  features:
  - name: model
    value-type: string
    description: 'model name'
  - name: price
    value-type: int64
    description: 'model price'
- name: click
  category: stream
  description: 'user click features'
  features:
  - name: user_last_five_click_posts
    value-type: string
    description: 'user last five click posts'

done


support custom datax configuration

support custom datax configuration  #2102

Codecov Report

Merging #2224 into dev will increase coverage by 0.03%.
The diff coverage is 58.06%.

@@             Coverage Diff              @@
##                dev    #2224      +/-   ##
============================================
+ Coverage     29.71%   29.75%   +0.03%
- Complexity     1629     1630       +1
============================================
  Files           336      336
  Lines         17807    17807
  Branches       2238     2238
============================================
+ Hits           5291     5298       +7
+ Misses        11964    11959       -5
+ Partials        552      550       -2

Impacted Files
Coverage Δ
Complexity Δ

...inscheduler/common/task/datax/DataxParameters.java
0% <0%> (ø)
0 <0> (ø)
:arrow_down:

...nscheduler/server/worker/task/datax/DataxTask.java
74.64% <94.73%> (ø)
19 <0> (ø)
:arrow_down:

...scheduler/alert/template/AlertTemplateFactory.java
42.85% <0%> (ø)
2% <0%> (ø)
:arrow_down:

...nscheduler/server/worker/task/shell/ShellTask.java
72.91% <0%> (+2.08%)
5% <0%> (ø)
:arrow_down:

...er/server/worker/task/AbstractCommandExecutor.java
39.53% <0%> (+2.79%)
15% <0%> (+1%)
:arrow_up:

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 0e5fb86...28f2c84. Read the comment docs.


IE11 bug after 1.13.0 release

Error:  Object doesn't support property or method 'draw'
https://github.com/susielu/d3-annotation/commit/75114013958f1baaddbcfc468dfb4ff9c34e9f29#diff-01ef6ddcd6013061bb6b63e7cf0bbf8fL3328
When I revert the line above to the previous version (without the !d.type.name ternary expression) it works.

I just published a new version 1.17.0 that changed the logic I was using in that ternary. Did that fix the IE bug?

Yup! looks good on IE11 with 1.17.0


Remove references to aiocoap install script

To make the installation more robust (#97).

Coverage remained the same at 61.581% when pulling c9fe386caa5ae2d3057f06206f8515859082649e on removeaiocoap into 3dfd5902681372e8215e38715086dec8ccbb37ca on master.

We should be referencing tinydtls from https://github.com/flowolf/tinydtls-cython/ or https://pypi.python.org/pypi/DTLSSocket from pypi (they are one and the same).
It's easier if we just say "install the requirements file if you're using asyncio".

Coverage remained the same at 61.581% when pulling f6565f307c1aa330c5e2ba88ae02420e7a3a9a83 on removeaiocoap into 3dfd5902681372e8215e38715086dec8ccbb37ca on master.

Coverage remained the same at 61.581% when pulling e42e50161d996afbcb77244d9a1a10151b1b2eb6 on removeaiocoap into 3dfd5902681372e8215e38715086dec8ccbb37ca on master.

@lwis I'm reluctant using asyncio, unless within brackets, as it's a quite technical term. Users of pytradfri might not understand the disctinction, hence rewriting it along the lines of "more advanced features such as observe".

Coverage remained the same at 61.581% when pulling e42e50161d996afbcb77244d9a1a10151b1b2eb6 on removeaiocoap into 3dfd5902681372e8215e38715086dec8ccbb37ca on master.

But observe is available on our sync and async api.
The distinction is sync/async. Users of libraries are typically versed with what they want to do.

Coverage remained the same at 61.581% when pulling 8b7877594c14da1bb9a10a6840a2c95d09ffc75b on removeaiocoap into 3dfd5902681372e8215e38715086dec8ccbb37ca on master.

@lwis gave it another try

Looks good to me buddy.

@lwis thanks for your feedback!

Coverage remained the same at 61.581% when pulling 030b8aef79329a1de587f1e8357e4d24195e465e on removeaiocoap into 3dfd5902681372e8215e38715086dec8ccbb37ca on master.


Implement transChoice method

Summary
As a user, I would like to have a transChoice method that implement Illuminate/Translation/Translator#transChoice method.
Description
This method should be an alias to choice() method.
Tests
The test/spec/lang_transChoice_spec.js should be created and has to fully cover all cases of transChoice method.

All good @esantelises! Although is not an alias, I think it is what we want right now. Thanks a lot!


Boilerplate Project/Function code does not work out of the box

Creating a new HTTPTrigger function as per the guide here

Create a new Azure Function project
Select a C# Project type
Select a HttpTrigger function type
Give the trigger a name
Provide a namespace
Choose Anonymous authentication

This produces the following project structure:

Note that the function is created in the root of the project rather than a subdirectory, and the lack of a function.json file associated with the function.
Finally, running the code shows that there are no job functions found:

[05/05/2019 17:31:38] Generating 0 job function(s)
[05/05/2019 17:31:38] No job functions found. Try making your job classes and methods public. If you're using binding extensions (e.g. Azure Storage, ServiceBus, Timers, etc.) make sure you've called the registration method for the extension(s) in your startup code (e.g. builder.AddAzureStorage(), builder.AddServiceBus(), builder.AddTimers(), etc.).

I found the reason for this - my PowerShell profile script includes a Set-Location so that when I fire up a new terminal I always land in the root folder of my dev space. It looks like kicking off a debug session fires up at least one new PS session, which loses the current directory of the session that invoked it.
I'll leave this issue open so it can be decided if this behaviour constitutes an actual bug that can be fixed or if I'll have to just remove that Set-Location call permanently from my profile script.

Similar to https://github.com/Microsoft/vscode-azurefunctions/issues/1175, except in that case they got this error:
Unable to find project root. Expecting to find one of host.json, local.settings.json in project root. The terminal process terminated with exit code: 1

We filed an issue on the func cli to improve the error message: https://github.com/Azure/azure-functions-core-tools/issues/1214, but I'm not sure that will help in your case if you don't see the above log.
@DevOpsFu I'm not sure if there's a whole lot we can do here, but I'll think about it. I assume other tasks (like the "build" task) have the same issue where they run in the directory specified by Set-Location?


PEP8, Code Styles, and Pylint

This PR addresses various code style issues to match PEP8 as close as possible, as uncovered by pylint.
Fixes #30

This looks good, it seems to fix all the whitespace problems. All lines are under 100 chars, which is fine really.
There are a few more issues left:

Some function names don't conform to snake_case naming style. An example would be
def findMin(a):
    return min([b[-1] for b in a])

which should be
def find_min(a):
    return min([b[-1] for b in a])

Another issue is the wildcard imports. Only the necessary modules should be imported.

Some other minor things, such as one-char variables.

I could create a new pull request which would fix these things, if you'd like. I enjoy doing this kind of clean-up work!

@nnist that would be great if you want to continue on this PR!
It was still progress for me, I just wanted to push it up so work wouldn't get lost.

@nnist that would be great if you want to continue on this PR!
It was still progress for me, I just wanted to push it up so work wouldn't get lost.

Alright! I'll get started asap.

Done! I created a new pull request for this, #35.
This pull request (#33) can be closed now, I think.


Adding Robinhood to exchanges

It is the only exchange that I can find that doesn’t charge fees so the calculation would be much easier. There isn’t an official public api released (they posted on their forum saying they’re working on it) but I found that someone created their own in Python, so it’s completely possible. https://www.quantopian.com/posts/trading-with-the-unofficial-robinhood-api-w-slash-code-examples
Sent with GitHawk

great idea! I'm a bit busy at the moment, but anyone else can pick this up, here are all the required docs:
https://gekko.wizb.it/docs/extending/add_an_exchange.html

it would be a great function to Gekko. Hope it would be developed