text:
Add DSProxy factory address and interface

Part 2 of TVL project https://github.com/open-dollar/od-app/issues/234
Depends on ODProxy work

Closing as we are no longer using DSProxy as part of this flow. We will only rely on ODProxy

repo: open-dollar/od-sdk


text:
chore: fabriziodemaria org approver

This PR:

adds fabriziodemaria as an org approver
alphabetized org approvers

@fabriziodemaria has contributed to the spec (especially around client) and helped implement a few SDKs.
@fabriziodemaria please let us know if you're interested!

Converting to draft until I hear from @fabriziodemaria

ping @fabriziodemaria , just in case you missed this!

I did miss this, sorry about that! Glad to join

source: gharchive/pull-request

authors: fabriziodemaria toddbaert

repo: open-feature/community

license_type: permissive

license_source: github-api


text:
Update readme

Include additional information on the readme

[ ] Intro
[ ] Contributing
[ ] License

Fixed by: https://github.com/open-feature/openfeature.dev/pull/60

source: gharchive/issue


text:
3 problems (bugs?) in smarty objective function

Label: Real Issue probably needing John Chodera's attention
Following on from Slack/OpenForcefield/general post from this morning, which is cut and pasted here:
------------- begin paste
One of the key issues is the objective function used in the smarty sampler: how does the Bayesian sampler elucidate if something is better (does "better"="more probable"?). For example, in the AlkEthOH world, there are exactly two oxygen atom types: OH (for alcohols) and OS (for ethers). Yet in the smarty output, a completely general oxygen type [#8] is only associated with one atom type, maybe OS or maybe OH. I think the behavior needs to be: a) all atom types matching the smarts need to be collected. b) each atom type needs to be identified as a separate population for scoring purposes. c) scoring needs to include a notion that, while the existing "good" of having a higher count of matches is retained, having more than one population is "bad". That way, when a new child smarts correctly identifies an atom-type, it results in a pure-population parent and a pure-population child, which is identified as clearly better. Thinking up such a scoring function I can do, but how it fits into the Bayesian procedure in general and smarty in particular is not clear to me.
------------- end paste
Attached is a log file from a 200-iteration run on the AlkEthOH set:
smartytest_filt1.200.txt
Consider Iterations 110 and 111. By iteration 110 (line 1605), all the unused atom types are gone and smarty is back down to the simple 3 general atom types for C, O, and H, being [#1], [#6], and [#8].
Hydrogen [#1] should match HC and HO, and it appears in line 1610 it has found 464 matches (field 2) which I think should correspond to HC and HO. But when it comes to scoring Hydrogen in fields 6 and 7 of the same line, it only uses HC with a count of 244. Likewise Oxygen (line 1612) should match OH and OS, finds 107 matches (field 2) but appears to score only with OH with 68 matches. I think this is bug 1: scoring should use all the matches, both HC and HO for Hydrogen, and both OH and OS for Oxygen. I think bug 2 is that the objective function needs, at the same time, to recognize that capturing two reference populations (HC and HO for Hydrogen) is bad compared to recognizing a single population. This is exemplified in the next iteration (iteration 111): a child H-smarts is created resulting in the parent now capturing only a single population (HC) and the child capturing only a single population (HO); IMHO this is really good and should be rewarded somehow apart from the count. What I think is bug 3 is that somehow the acceptance/scoring/MCMC process seems to ultimately throw all these good discoveries away; over and over again I see a run discovering good child parameters that essentially solve the problem, but then it throws them all away and finishes with C, O, and H. I know the properly functioning MCMC can destroy good things but here "Not converging" is an understatement; is this properly functioning MCMC?

@jchodera - this could use your attention when you have time, as it's shortly going to stall @cbayly13 (though I may be able to provide some help myself as well).
I did look at the code (had to deal with a deadline so I'm just digging in) and the acceptance criterion looks correct to me, so it seems like to verify "bug 3" (above) is a bug we'd need to actually look at whether the different possible scenarios are being occupied with the correct probabilities. But superficially, from looking at the output on AlkEthOH, it certainly does look like we're finding things we think are "good" and losing them too easily.

Thanks for the detailed issue report, and to @davidlmobley for reviewing the relevant code already!
I will read through the code manually and add some unit tests to see if I can identify a bug, but I wonder if the issue isn't simply my having misunderstood @cbayly13's original description of his desired scoring function.
The original scoring function proposal---as I understood it---was this:

Identify the one-to-one correspondence between SMARTY and parm@frosst atomtypes that maximizes the number of atoms that are typed the same way by both atomtype sets
Return the number of atoms typed the same way

This has the desirable property that only when all atoms are typed into different classes by SMARTY in a manner that matches parm@frosst is the scoring function maximized. If a SMARTY atomtype matches atoms that are subdivided into multiple parm@frosst types, the score will be low, but splitting off a child that matches one of the parm@frosst types would increase the score.
@cbayly13 notes that his desired scoring function is actually different:

I think this is bug 1: scoring should use all the matches, both HC and HO for Hydrogen, and both OH and OS for Oxygen. I think bug 2 is that the objective function needs, at the same time, to recognize that capturing two reference populations (HC and HO for Hydrogen) is bad compared to recognizing a single population.

This suggests (1) we should allow one-to-many relationships between SMARTY and parm@frosst, and (2) we should have a penalty for one-to-many relationships. While I understand how we could do (1), this sounds undesirable without (2), since a single SMARTY type that matches any atom would then match every atom and would rely entirely on the penalty in (2). I'm not sure how we would implement (2), though---how would we penalize multiple populations? Some sort of entropy metric? What would the penalty factor scaling the entropy metric be in order to balance (1) and (2)?
I'm happy to implement alternative scoring functions, but I think we'd need to come up with something more concrete.
In the meantime, this also highlights the need for better tools to examine

the atomtype-to-atomtype correspondences
molecules that are poorly typed by SMARTY

If you have any ideas on those, please suggest in separate threads how I could implement them or expose things to make it easier for you to implement them!

@jchodera - We need to think through the scoring function more, though it may not be the main issue at present, as until right now I don't think we understood how the scoring function was working. @cbayly13 is going to be offline for the weekend so I'll have to discuss this with him Monday morning.
But, your point here:

This has the desirable property that only when all atoms are typed into different classes by SMARTY in a manner that matches parm@frosst is the scoring function maximized. If a SMARTY atomtype matches atoms that are subdivided into multiple parm@frosst types, the score will be low, but splitting off a child that matches one of the parm@frosst types would increase the score.

is basically what we want in a scoring function. @cbayly13 says it should be the scoring analog of "The truth, the whole truth, and nothing but the truth" - SMARTS matching the atom types, all the atom types, and nothing but those atom types. It sounds like what you have in place will do that already (with an important exception I'll discuss below!).
EXCEPTION: In @cbayly13 's view, one should be rewarded for matching all of the atom types even via generics - i.e. you should get a decent score by just having a single elemental type for each relevant element, even though it covers multiple parm@frosst types. There should be a penalty for matching multiple types - but it clearly should be better to have a generic carbon which covers all carbons, even though it matches multiple parm@frosst types, than to only have a specialized carbon which matches one specific parm@frosst type. Am I understanding right that the current scoring function would treat these two as identical? Let's think of AlkEthOH - I should ultimately end up with two oxygen types, OH and OS. But it should be better to have a single generic oxygen that covers everything than to have only OH, otherwise we'll never be able to learn parsimony when needed (i.e. if we need to be able to propose moves which destroy specialized atom types in favor of generics). Obviously it ought to be best to have OH and OS, but having "generic oxygen" should be better than OH or OS alone. If I understand right, the current scoring function doesn't recognize that. Is that the case?
@cbayly13 's answer to this is to reward things for covering all atom types, even if the correspondence is not one SMARTS to one atom type, but to have a lesser penalty for SMARTS which cover multiple atom types.
The larger issue that led to this discussion was what we see now on the AlkEthOH test, where we're seeing "good" new atom types/SMARTS being found, but they seem to be getting destroyed too often rather than retained (though we haven't computed the relevant statistics yet). Since we didn't totally understand the scoring function yet we thought that might be the issue. This discussion leads me to believe that the current scoring function ought to be working better than we're seeing (though we need to compute those statistics to confirm -- we need to get at something like the probability of having OH- and OS-equivalent types, versus the probability of having only a single oxygen type) which may suggest a problem aside from the scoring function.
Let me post this to get it out there and then think for a bit about whether I can generate a concrete proposal for what the penalty ought to be if we do modify the scoring function.

but it clearly should be better to have a generic carbon which covers all carbons, even though it matches multiple parm@frosst types, than to only have a specialized carbon which matches one specific parm@frosst type.

Can you elaborate on the rationale here? I don't quite understand the reasoning.
By construction, the sampling algorithm will ensure that the typing scheme is ALWAYS complete. Any typing scheme that would result in untyped atoms is rejected. The typing is also hierarchical, so we have general parent atomtypes and some more specific child atomtypes. So the scenario you suggest---only having a specific carbon atomtype that would leave  some carbon atoms untyped---is simplest impossible.

Let's think of AlkEthOH - I should ultimately end up with two oxygen types, OH and OS. But it should be better to have a single generic oxygen that covers everything than to have only OH, otherwise we'll never be able to learn parsimony when needed (i.e. if we need to be able to propose moves which destroy specialized atom types in favor of generics). Obviously it ought to be best to have OH and OS, but having "generic oxygen" should be better than OH or OS alone. If I understand right, the current scoring function doesn't recognize that. Is that the case?

Remember that we are exclusively working with HIERARCHICAL typing schemes here. If parm@frosst is a COMPLETE typing scheme instead, where the union of OH and OS is meant to be complete, this is incompatible with the hierarchical atom typing. Instead, we would have something like a parent atom type and a child that splits off either OH or OS.
Parsimony is partly driven by the entropic penality not currently in the sampling scheme because we don't have priors over parameters, so that won't quite be something we can assess at this stage. We are just looking for whether the typing scheme is able to mostly match the atom typing of the database by a greedy-ish optimization scheme.

The larger issue that led to this discussion was what we see now on the AlkEthOH test, where we're seeing "good" new atom types/SMARTS being found, but they seem to be getting destroyed too often rather than retained

This may be an issue with the temperature being too high. The statistic of interest is how big the increase in fraction of atoms matched is compared to the input fractional temperature. If the number of typed atoms increases, the proposed atomtypes will be accepted. But the temperature will allow backtracking---loss of typed atoms---fraction on the scale of the fractional temperature. If the fractional temperature is 0.05, you an easily accept a proposal that will LOSE 5% of the typed atoms. This might be what is going on. Play with he temperature first!

By construction, the sampling algorithm will ensure that the typing scheme is ALWAYS complete. Any typing scheme that would result in untyped atoms is rejected. The typing is also hierarchical, so we have general parent atomtypes and some more specific child atomtypes. So the scenario you suggest---only having a specific carbon atomtype that would leave some carbon atoms untyped---is simplest impossible.

Ah, OK, sorry - I was forgetting that this insists that everything be able to be typed (probably because it's not obvious from the README.md) which does mean that we're going to start off with and retain generics.
It sounds like this does have the features we're looking for though, so we may be OK as is.

This may be an issue with the temperature being too high. The statistic of interest is how big the increase in fraction of atoms matched is compared to the input fractional temperature. If the number of typed atoms increases, the proposed atomtypes will be accepted. But the temperature will allow backtracking---loss of typed atoms---fraction on the scale of the fractional temperature. If the fractional temperature is 0.05, you an easily accept a proposal that will LOSE 5% of the typed atoms. This might be what is going on. Play with he temperature first!

Yes, I suggested that to @bannanc and @cbayly13 last night after reading the relevant code. I was going to try cranking it down to something very low to see if it acts the way I would expect in that limit.

If you sent the temperature to zero, it will just behave like a greedy algorithm, with the real temperature allowing backtracking of only one or two atoms. Something close to zero may be what you want.
If we end up getting stuck in minima, we can add something like simulated tempering or replica exchange, but let's see how far you get with this.
Starting with manually-construxted SMARTS strings for AlkEthOH would be a good way to ensure that what you consider optimal typing actually achieves a high or near perfect score. This might be the most important control experiment to try first.

Starting with manually-construxted SMARTS strings for AlkEthOH would be a good way to ensure that what you consider optimal typing actually achieves a high or near perfect score. This might be the most important control experiment to try first.

That's a good idea, yes. @bannanc - this would be something for you or @cbayly13 to try Monday or thereabouts. I'll see if I can try the temperature thing today between chores/kid duties. :)

Great! And again, I'm happy to implement any concrete alternative scoring schemes or diagnostics you guys come up with, or help make changes that make it easier for you to plug in new scoring functions yourself.

OK, @jchodera - I'm starting to get it, especially now that I'm looking at the output/code again. Now I see that the SMARTS match multiple atom types, but the scoring function only rewards matches to one atom type, which seems reasonable. This is not totally clear from the output (we can work on that) but now it makes sense.
One thing I'm still not clear on (but presumably I can figure out once I finish looking at the code): How does it decide which parm@frosst type to score? Is it the one yielding the largest number of matches?

One thing I'm still not clear on (but presumably I can figure out once I finish looking at the code): How does it decide which parm@frosst type to score? Is it the one yielding the largest number of matches?

Correct! The current algorithm tries to find the one-to-one matching of SMARTY types to parm@frosst types that maximize the number of atoms in the molecule set typed in common.
Is there some visualization that could better help you visualize this? We could draw the matrix of SMARTY and parm@frosst to show how many atoms match each pairing, and then highlight the cells for the maximum bipartite marching correspondences, for example.

I've verified that after the fix I just submitted ( #5 ) this behaves appropriately when T=0 or T=small (i.e. T=0.001), in that destruction of "good" atom types gets a lot less common. It appears that T=0.1 is too high for the AlkEthOH example, at least. Here's the final output from the AlkEthOH test at T=0.001 (T=0 is virtually identical):
INDEX        ATOMS  MOLECULES                                                          TYPE NAME                           SMARTS REF TYPE        FRACTION OF REF TYPED MOLECULES MATCHED
    1 :        396         42 |                                                         hydrogen                             [#1]       HC              244 /              244 (100.000%)
    2 :         68         42 |                                         hydrogen oxygen-adjacent                   [#1&$(*~[#8])]       HO               68 /               68 (100.000%)
    3 :        232         42 |                                                           carbon                             [#6]       CT              232 /              232 (100.000%)
    4 :         39         30 |                                                           oxygen                             [#8]       OS               39 /               39 (100.000%)
    5 :         68         42 |                                         oxygen hydrogen-adjacent                   [#8&$(*~[#1])]       OH               68 /               68 (100.000%)
TOTAL :        803         42 |                                                                                651 /      803 match (81.071 %)

Is there some visualization that could better help you visualize this? We could draw the matrix of SMARTY and parm@frosst to show how many atoms match each pairing, and then highlight the cells for the maximum bipartite marching correspondences, for example.

Yes, something like this sounds useful. Definitely this is something to think about though. One possibility is just to wait til Monday when I can discuss with the group, then get back to you. I am not TOTALLY sure I know what you mean though - maybe you want to draw this on a sheet of paper and attach? ;)
Now that I just fixed the "T=0.1 no matter what" bug, everything seems to be behaving properly as far as I can tell. So I think we're in business again.

Great! Suggest you try a hand coded em set of SMARTY types for reference on Monday.
I will mock up the matrix I am suggesting.

Chris is going to try the hand coded set of types.
We've done a bunch more testing and identified a series of problems and/or changes we believe are needed that I'll be trying to describe shortly in a set of individual issues. I'll leave this one open as it contains a lot of useful discussion/info.

Chris is going to try the hand coded set of types.

Sounds like a good positive control!

We've done a bunch more testing and identified a series of problems and/or changes we believe are needed that I'll be trying to describe shortly in a set of individual issues.

Sounds great!

This issue is resolved in that starting with hand-coded atom types does result in a 100% score (and as of #32 is now a test), though the discussion here may still be interesting down the line. Marking as closed for now.

authors: cbayly13 davidlmobley jchodera

repo: open-forcefield-group/smarty

license: mit

license_source: bigquery


text:
Implement automatic ticks with yaml files.

From @gilesdring :
I think the simplest / quickest way to achieve this is to modify the visualisations.yaml file, based on the following code:
import yaml

# Read config from file
with open(path_to_file) as f:
  viz = yaml.safe_load(f.read())

# Update the viz definition
print(viz[1]['config']['axis']['x']['max']) # prints current value
viz[1]['config']['axis']['x']['max'] = 40
print(viz[1]['config']['axis']['x']['max']) # prints 40

# Write config to file
with open(path_to_file, 'w') as f:
  f.write(yaml.dump(
    viz,
    default_flow_style=False
  ))

I'd like to check if this works as intended when the data is updated, and if completed successfully I can make tickets to implement this on the other pages of the dashboard.

Is this complete @luke-strange? Been closing a few items which appear to have been left open and wasn't sure about this..

authors: ODILMichelle luke-strange

repo: open-innovations/yff-data

license: MIT


text:
Add a legal disclaimer to footer

YFF to provide a disclaimer about data shown on the microsite. Add this to the footer once we receive it.

Asked for this text/to be introduced to the appropriate people.
Couldn't be moved on before as YFF contacts were on leave.

@ODILMichelle  I have added the disclaimer to the footer as below, let me know any comments

Looking at this, I wonder if we might want to make a small language tweak, instead saying:
"The Youth Employment Data Dashboard includes data that have been collected, developed and analysed by third parties and Youth Futures Foundation is not responsible for, and cannot guarantee the accuracy of, those third-party materials or any related material. Read more'
What do you think?
And I also wonder if the text ought to sit slightly lower in the page - maybe so it's below an imaginary horizontal line after the logo?
Whaddya think?

authors: ODILMichelle taz-chiles


text:
Create visualisation of economic inactivity

QLFS - page 3 of https://odileeds.sharepoint.com/sites/OpenInnovationsPrivate/Shared Documents/Projects/2023/YFF - Phase 2/Examples of analysis/April Labour Market Release.pptx?web=1

Assume this is Not in Full Time Education rate - and we present all dates in the source files (last 3 years).
This relates to adding visualisations and associated data to https://github.com/open-innovations/yff-data/tree/main/src/dashboard/qlfs

We have the data for the 16-24 range, rather than broken down into the two groups. We will present a single graph
We don't currently have the values for people in full time education - we will only present the lower (orange) line for MVP

[ ] Prepare data file for presentation (prepare stage in pipeline defined in https://github.com/open-innovations/yff-data/tree/main/scripts/qlfs - targetting _data/ in above directory) (or copy over - data in https://github.com/open-innovations/yff-data/blob/main/data/qlfs/not_in_education.csv)
[ ] Add line chart with 16-24 unemployment rate to QLFS page - age_16_to_24_not_in_education_economic_inactivity_rate_sa
[ ] Add brief textual description of chart


text:
Add community page with avatars of all people

It is available under /community (not linked from anywhere), to help creating "Acknowledgement" slide

works on my machine and is gooooorgeous! I've added a tiny tweak to the language.

authors: bebatut yochannah


text:
MSSQL Stored Procedure Metadata Ingestion causes Arithmetic Overflow

Affected module
ingestion/src/metadata/ingestion/source/database/mssql/queries.py
Describe the bug
The MSSQL_GET_STORED_PROCEDURE_QUERIES  sql code is using the wrong system table to compute stored procedure duration and the wrong unit conversion to seconds (millisec s/b microsec).
The query is using sys.dm_exec_procedure_stats "total_elapsed_time" column to reflect stored proc duration and using it in a DATEADD function to compute end-time.
In addition, it is dividing by 1000 to convert to seconds, but should divide by 1000000.
This column ("total_elapsed_time") is the cumulative time the stored procedure has a accrued over ALL of it's executions, not just the last one.  For a MSSQL server with a long running and frequently executed Stored Procedure, the "total_elapsed_time" value is large enough to cause an Arithmetic Overflow error in the DATEADD function.
Suggest the column that should be used for this is the "last_worker_time" column.
To Reproduce
Using an extracted subset of the MSSQL_GET_STORED_PROCEDURE_QUERIES sql:
        select
          s.last_execution_time  start_time,
          s.total_elapsed_time  elapsed_time,
          DATEADD(s, s.total_elapsed_time/1000, s.last_execution_time) end_time,
          OBJECT_NAME(s.object_id, s.database_id) as procedure_name
          from
            sys.dm_exec_procedure_stats s
          where OBJECT_NAME(s.object_id, s.database_id) IS NOT NULL
          and s.database_id = db_id()
          order by elapsed_time desc
        ;

        -- RESULT
        -- SQL Error [8115] [S0002]: An error occurred during the current command (Done status 0).
        -- Arithmetic overflow error converting expression to data type int.

Finding the offending Stored Procedure:
        select
          s.last_execution_time  start_time,
          s.total_elapsed_time  elapsed_time,
          -- DATEADD(s, s.total_elapsed_time/1000, s.last_execution_time) end_time,
          OBJECT_NAME(s.object_id, s.database_id) as procedure_name
          from
            sys.dm_exec_procedure_stats s
          where OBJECT_NAME(s.object_id, s.database_id) not like 'sp_%'
          order by elapsed_time desc
        ;

        2024-12-08 20:00:01.047	**_3431915680349_**	replication_cis
        2024-12-08 20:30:00.497	1063036715221	CIS_TASKS_LOAD
        2024-12-09 02:43:41.597	230498365752	replication_abs
        2024-12-08 21:59:01.030	186063585227	CIS_TASKS_PreProcesses
        2024-12-07 06:02:20.223	149528623548	DatabaseMaintenancePlan
        2024-12-07 05:05:01.013	59591778456	GetSnrStatsForSPU

Expected behavior
MSSQL Stored Procedure Metadata would be ingested into OpenMetadata instead of failing on an Arithmetic Overflow error.
Version:

OS: Ubuntu 20.04.6 LTS (GNU/Linux 5.4.0-198-generic x86_64)
Python version: 3.10.14
OpenMetadata version: 1.5.12
OpenMetadata Ingestion package version: docker.getcollate.io/openmetadata/ingestion:1.5.12

select @@servername, @@version;
-- SQLSERVER
-- Microsoft SQL Server 2008 R2 (SP3-GDR) (KB4057113) - 10.50.6560.0 (X64)
--	Dec 28 2017 15:03:48
--	Copyright (c) Microsoft Corporation
--	Standard Edition (64-bit) on Windows NT 6.1  (Build 7601: Service Pack 1) (Hypervisor)
Additional context
Suggested SQL correction:
MSSQL_GET_STORED_PROCEDURE_QUERIES = textwrap.dedent(
"""
WITH SP_HISTORY (start_time, end_time, procedure_name, query_text) AS (
select
s.last_execution_time start_time,
-- DATEADD(s, s.total_elapsed_time/1000, s.last_execution_time) end_time,
DATEADD(s, s.last_worker_time/1000000, s.last_execution_time) end_time,
OBJECT_NAME(object_id, database_id) as procedure_name,
text as query_text
from sys.dm_exec_procedure_stats s
CROSS APPLY sys.dm_exec_sql_text(s.plan_handle)
WHERE OBJECT_NAME(object_id, database_id) IS NOT NULL
AND s.last_execution_time > '{start_date}'
),
Q_HISTORY (database_name, query_text, start_time, end_time, duration,query_type, schema_name, user_name) AS (
select
db.NAME database_name,
t.text query_text,
s.last_execution_time start_time,
-- DATEADD(s, s.total_elapsed_time/1000, s.last_execution_time) end_time,
-- s.total_elapsed_time/1000 duration,
DATEADD(s, s.last_worker_time/1000000, s.last_execution_time) end_time,
s.last_worker_time/1000000 duration,
case
when t.text LIKE '%%MERGE%%' then 'MERGE'
when t.text LIKE '%%UPDATE%%' then 'UPDATE'
when t.text LIKE '%%SELECT%%INTO%%' then 'CREATE_TABLE_AS_SELECT'
when t.text LIKE '%%INSERT%%' then 'INSERT'
else 'UNKNOWN' end query_type,
NULL schema_name,
NULL user_name
FROM sys.dm_exec_cached_plans AS p
INNER JOIN sys.dm_exec_query_stats AS s
ON p.plan_handle = s.plan_handle
CROSS APPLY sys.dm_exec_sql_text(p.plan_handle) AS t
INNER JOIN sys.databases db
ON db.database_id = t.dbid
WHERE t.text NOT LIKE '/* {{"app": "OpenMetadata", %%}} /%%'
AND t.text NOT LIKE '/ {{"app": "dbt", %%}} */%%'
AND p.objtype NOT IN ('Prepared', 'Proc')
AND s.last_execution_time > '{start_date}'
)
select
Q.query_type AS QUERY_TYPE,
Q.database_name  AS QUERY_DATABASE_NAME,
Q.schema_name AS QUERY_SCHEMA_NAME,
Q.query_text AS QUERY_TEXT,
Q.user_name AS QUERY_USER_NAME,
Q.start_time AS QUERY_START_TIME,
Q.duration AS QUERY_DURATION,
SP.procedure_name AS PROCEDURE_NAME,
SP.query_text AS PROCEDURE_TEXT,
SP.start_time AS PROCEDURE_START_TIME,
SP.end_time AS PROCEDURE_END_TIME
from SP_HISTORY SP
JOIN Q_HISTORY Q
ON (
Q.start_time BETWEEN SP.start_time and SP.end_time
OR Q.end_time BETWEEN SP.start_time and SP.end_time
)
order by PROCEDURE_START_TIME desc
;
"""
)

p.s.   It appears that the MSSQL_SQL_STATEMENT query (in the same file) should also be corrected, as it is doing the same thing (using total_elapsed_time column and /1000).

repo: open-metadata/OpenMetadata


text:
Question: Do we need to rebuild OpenPCDet after each commit you push to the repository in order to take effect?

This is maybe a stupid question,
but I wonder if updates MMLab members push to this repository
only take effect after a rebuild of OpenPCDet via the following commands in the root folder.
rm -r build
python setup.py clean
python setup.py develop

Does anyone know the answer (including the logic behind this)?

No, you just need to re-build the codes only if we modified the cuda/cpp codes under pcdet/ops/.
For other python/pytorch modifications at most time, you doesn't need to re-build your project.

repo: open-mmlab/OpenPCDet


text:
Installation issue

Checklist

I have searched related issues but cannot get the expected help. yes
I have read related documents and don't know what to do. yes

Describe the question you meet
Installation of mmcls using mim run into error. I have previously been able to install mmcls and mmdet using mim successfully. While trying to setup a new enviroment with seaborn, with the following conda environment setup procedure:
conda create -n percep -c conda-forge scikit-learn python=3.7
conda activate percep
conda install jupyter notebook matplotlib tqdm seaborn
conda install pytorch torchvision -c pytorch
conda install pytorch cudatoolkit=10.1 torchvision -c pytorch
pip install openmim
mim install mmcls
mim install mmdet

I ran into the error below:
(perception) [root@SUTD-hpc-gn3 ~]# mim install mmcls
/root/anaconda3/envs/perception/site-packages/_distutils_hack/__init__.py:36: UserWarning: Setuptools is replacing distutils.
  warnings.warn("Setuptools is replacing distutils.")
installing mmcls from https://github.com/open-mmlab/mmclassification.git.
Cloning into '/tmp/tmpoiu90u1p/mmclassification'...
remote: Enumerating objects: 5321, done.
remote: Counting objects: 100% (249/249), done.
remote: Compressing objects: 100% (200/200), done.
remote: Total 5321 (delta 92), reused 125 (delta 49), pack-reused 5072
Receiving objects: 100% (5321/5321), 8.98 MiB | 3.61 MiB/s, done.
Resolving deltas: 100% (3443/3443), done.
Note: checking out '7dfc9e4a8508c260d2cf2f2e011e3c486a593b62'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:

  git checkout -b new_branch_name

installing dependency: mmcv-full
Traceback (most recent call last):
  File "/root/anaconda3/envs/perception/bin/mim", line 8, in <module>
    sys.exit(cli())
  File "/root/anaconda3/envs/perception/site-packages/click/core.py", line 829, in __call__
    return self.main(*args, **kwargs)
  File "/root/anaconda3/envs/perception/site-packages/click/core.py", line 782, in main
    rv = self.invoke(ctx)
  File "/root/anaconda3/envs/perception/site-packages/click/core.py", line 1259, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/root/anaconda3/envs/perception/site-packages/click/core.py", line 1066, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/root/anaconda3/envs/perception/site-packages/click/core.py", line 610, in invoke
    return callback(*args, **kwargs)
  File "/root/anaconda3/envs/perception/site-packages/mim/commands/install.py", line 107, in cli
    is_editable=is_editable)
  File "/root/anaconda3/envs/perception/site-packages/mim/commands/install.py", line 206, in install
    is_yes, is_user_dir, is_install_master)
  File "/root/anaconda3/envs/perception/site-packages/mim/commands/install.py", line 541, in install_from_github
    is_user_dir=is_user_dir)
  File "/root/anaconda3/envs/perception/site-packages/mim/commands/install.py", line 460, in install_from_repo
    install_dependencies(dependencies, timeout, is_yes, is_user_dir)
  File "/root/anaconda3/envs/perception/site-packages/mim/commands/install.py", line 381, in install_dependencies
    is_user_dir=is_user_dir)
  File "/root/anaconda3/envs/perception/site-packages/mim/commands/install.py", line 181, in install
    find_url = infer_find_url(target_pkg)
  File "/root/anaconda3/envs/perception/site-packages/mim/commands/install.py", line 279, in infer_find_url
    torch_v, cuda_v = get_torch_cuda_version()
  File "/root/anaconda3/envs/perception/site-packages/mim/utils/utils.py", line 331, in get_torch_cuda_version
    raise err
  File "/root/anaconda3/envs/perception/site-packages/mim/utils/utils.py", line 329, in get_torch_cuda_version
    import torch
  File "/root/anaconda3/envs/perception/site-packages/torch/__init__.py", line 218, in <module>
    ''').strip()) from None
ImportError: Failed to load PyTorch C extensions:
    It appears that PyTorch has loaded the `torch/_C` folder
    of the PyTorch repository rather than the C extensions which
    are expected in the `torch._C` namespace. This can occur when
    using the `install` workflow. e.g.
        $ python setup.py install && python -c "import torch"

    This error can generally be solved using the `develop` workflow
        $ python setup.py develop && python -c "import torch"  # This should succeed
    or by running Python from a different directory.

Post related information

The output of pip list | grep "mmcv\|mmcls\|^torch"
NA
Your config file if you modified it or created a new one.
NA
Your train log file if you meet the problem during training.
NA
Other code you modified in the mmcls folder.
NA

It seems that you don't install torch in your environment successfully.
please run pip list | grep "mmcv\|mmcls\|^torch"

The output of the command is
torch                         1.7.0
torchvision                   0.8.1

Is the problem solved?

authors: Ezra-Yu mzr1996 zunction

repo: open-mmlab/mmclassification


text:
Model architecture summary - torchinfo/torchsummary

I'd like to know if there is a way to get a model summary (preferably via torchinfo/troch-summary)? What I tried so far to get a summary for Mask-RCNN:
from torchinfo import summary
summary(model, input_data=torch.tensor(test_img_in, dtype=torch.float))
This throws me an error in the DenseHead as displayed below. Any help is appreciated!
The issue was already brought up here but doesn't seem to be solved yet.
I'm aware of the tools/analysis_tools/get_flops.py script to get a brief summary on the total number of parameters, etc. However, I'm searching for a way to get more in-depth insights on a model's structure.

TypeError                                 Traceback (most recent call last)
File c:\Users\felix.virtualenvs\field_boundaries\lib\site-packages\torchinfo\torchinfo.py:288, in forward_pass(model, x, batch_dim, cache_forward_pass, device, mode, **kwargs)
287 if isinstance(x, (list, tuple)):
--> 288     _ = model.to(device)(*x, **kwargs)
289 elif isinstance(x, dict):
File c:\Users\felix.virtualenvs\field_boundaries\lib\site-packages\torch\nn\modules\module.py:1538, in Module._call_impl(self, *args, **kwargs)
1536     args = bw_hook.setup_input_hook(args)
-> 1538 result = forward_call(*args, **kwargs)
1539 if _global_forward_hooks or self._forward_hooks:
File c:\users\felix\repositories\mmdetection\mmdet\models\detectors\base.py:96, in BaseDetector.forward(self, inputs, data_samples, mode)
95 elif mode == 'tensor':
---> 96     return self._forward(inputs, data_samples)
97 else:
File c:\users\felix\repositories\mmdetection\mmdet\models\detectors\two_stage.py:134, in TwoStageDetector._forward(self, batch_inputs, batch_data_samples)
133 if self.with_rpn:
--> 134     rpn_results_list = self.rpn_head.predict(
135         x, batch_data_samples, rescale=False)
136 else:
File c:\users\felix\repositories\mmdetection\mmdet\models\dense_heads\base_dense_head.py:191, in BaseDenseHead.predict(self, x, batch_data_samples, rescale)
175 """Perform forward propagation of the detection head and predict
176 detection results on the features of the upstream network.
177
(...)
189     after the post process.
190 """
--> 191 batch_img_metas = [
192     data_samples.metainfo for data_samples in batch_data_samples
193 ]
195 outs = self(x)
TypeError: 'NoneType' object is not iterable
The above exception was the direct cause of the following exception:
RuntimeError                              Traceback (most recent call last)
Cell In[31], line 2
1 from torchinfo import summary
----> 2 summary(model, input_data=torch.tensor(test_img_in, dtype=torch.float))
File c:\Users\felix.virtualenvs\field_boundaries\lib\site-packages\torchinfo\torchinfo.py:218, in summary(model, input_size, input_data, batch_dim, cache_forward_pass, col_names, col_width, depth, device, dtypes, mode, row_settings, verbose, **kwargs)
211 validate_user_params(
212     input_data, input_size, columns, col_width, device, dtypes, verbose
213 )
215 x, correct_input_size = process_input(
216     input_data, input_size, batch_dim, device, dtypes
217 )
--> 218 summary_list = forward_pass(
219     model, x, batch_dim, cache_forward_pass, device, model_mode, **kwargs
220 )
221 formatting = FormattingOptions(depth, verbose, columns, col_width, rows)
222 results = ModelStatistics(
223     summary_list, correct_input_size, get_total_memory_used(x), formatting
224 )
File c:\Users\felix.virtualenvs\field_boundaries\lib\site-packages\torchinfo\torchinfo.py:297, in forward_pass(model, x, batch_dim, cache_forward_pass, device, mode, **kwargs)
295 except Exception as e:
296     executed_layers = [layer for layer in summary_list if layer.executed]
--> 297     raise RuntimeError(
298         "Failed to run torchinfo. See above stack traces for more details. "
299         f"Executed layers up to: {executed_layers}"
300     ) from e
301 finally:
302     if hooks:
RuntimeError: Failed to run torchinfo. See above stack traces for more details. Executed layers up to: [ResNet: 1, Conv2d: 2, BatchNorm2d: 2, ReLU: 2, MaxPool2d: 2, ResLayer: 2, Bottleneck: 3, Conv2d: 4, BatchNorm2d: 4, ReLU: 4, Conv2d: 4, BatchNorm2d: 4, ReLU: 4, Conv2d: 4, BatchNorm2d: 4, Sequential: 4, Conv2d: 5, BatchNorm2d: 5, ReLU: 4, Bottleneck: 3, Conv2d: 4, BatchNorm2d: 4, ReLU: 4, Conv2d: 4, BatchNorm2d: 4, ReLU: 4, Conv2d: 4, BatchNorm2d: 4, ReLU: 4, Bottleneck: 3, Conv2d: 4, BatchNorm2d: 4, ReLU: 4, Conv2d: 4, BatchNorm2d: 4, ReLU: 4, Conv2d: 4, BatchNorm2d: 4, ReLU: 4, ResLayer: 2, Bottleneck: 3, Conv2d: 4, BatchNorm2d: 4, ReLU: 4, Conv2d: 4, BatchNorm2d: 4, ReLU: 4, Conv2d: 4, BatchNorm2d: 4, Sequential: 4, Conv2d: 5, BatchNorm2d: 5, ReLU: 4, Bottleneck: 3, Conv2d: 4, BatchNorm2d: 4, ReLU: 4, Conv2d: 4, BatchNorm2d: 4, ReLU: 4, Conv2d: 4, BatchNorm2d: 4, ReLU: 4, Bottleneck: 3, Conv2d: 4, BatchNorm2d: 4, ReLU: 4, Conv2d: 4, BatchNorm2d: 4, ReLU: 4, Conv2d: 4, BatchNorm2d: 4, ReLU: 4, Bottleneck: 3, Conv2d: 4, BatchNorm2d: 4, ReLU: 4, Conv2d: 4, BatchNorm2d: 4, ReLU: 4, Conv2d: 4, BatchNorm2d: 4, ReLU: 4, ResLayer: 2, Bottleneck: 3, Conv2d: 4, BatchNorm2d: 4, ReLU: 4, Conv2d: 4, BatchNorm2d: 4, ReLU: 4, Conv2d: 4, BatchNorm2d: 4, Sequential: 4, Conv2d: 5, BatchNorm2d: 5, ReLU: 4, Bottleneck: 3, Conv2d: 4, BatchNorm2d: 4, ReLU: 4, Conv2d: 4, BatchNorm2d: 4, ReLU: 4, Conv2d: 4, BatchNorm2d: 4, ReLU: 4, Bottleneck: 3, Conv2d: 4, BatchNorm2d: 4, ReLU: 4, Conv2d: 4, BatchNorm2d: 4, ReLU: 4, Conv2d: 4, BatchNorm2d: 4, ReLU: 4, Bottleneck: 3, Conv2d: 4, BatchNorm2d: 4, ReLU: 4, Conv2d: 4, BatchNorm2d: 4, ReLU: 4, Conv2d: 4, BatchNorm2d: 4, ReLU: 4, Bottleneck: 3, Conv2d: 4, BatchNorm2d: 4, ReLU: 4, Conv2d: 4, BatchNorm2d: 4, ReLU: 4, Conv2d: 4, BatchNorm2d: 4, ReLU: 4, Bottleneck: 3, Conv2d: 4, BatchNorm2d: 4, ReLU: 4, Conv2d: 4, BatchNorm2d: 4, ReLU: 4, Conv2d: 4, BatchNorm2d: 4, ReLU: 4, ResLayer: 2, Bottleneck: 3, Conv2d: 4, BatchNorm2d: 4, ReLU: 4, Conv2d: 4, BatchNorm2d: 4, ReLU: 4, Conv2d: 4, BatchNorm2d: 4, Sequential: 4, Conv2d: 5, BatchNorm2d: 5, ReLU: 4, Bottleneck: 3, Conv2d: 4, BatchNorm2d: 4, ReLU: 4, Conv2d: 4, BatchNorm2d: 4, ReLU: 4, Conv2d: 4, BatchNorm2d: 4, ReLU: 4, Bottleneck: 3, Conv2d: 4, BatchNorm2d: 4, ReLU: 4, Conv2d: 4, BatchNorm2d: 4, ReLU: 4, Conv2d: 4, BatchNorm2d: 4, ReLU: 4, FPN: 1, ConvModule: 3, Conv2d: 4, ConvModule: 3, Conv2d: 4, ConvModule: 3, Conv2d: 4, ConvModule: 3, Conv2d: 4, ConvModule: 3, Conv2d: 4, ConvModule: 3, Conv2d: 4, ConvModule: 3, Conv2d: 4, ConvModule: 3, Conv2d: 4]

I have the same questions. Is any solution available?

authors: fkroeber kvnptl

repo: open-mmlab/mmdetection


text:
question on RandomCrop

Hi, there,
I have a question about RandomCrop. I saw on the implementation that by default the cropped area should contain at least one GT box (as shown below where allow_negative_crop=False).
def __init__(self,
                 crop_size,
                 crop_type='absolute',
                 allow_negative_crop=False,
                 bbox_clip_border=True):

Now if my training set has certain numbers of negative images (with zero GT boxes), and I have set filter_empty_gt=False in the training pipeline, as shown below.
img_prefix='XXXXXX',
        filter_empty_gt=False,

My question is: how does RandomCrop perform in such a case? Does it simply ignore negative images or crop an area without GT? I trained in such settings and did not see any errors. However, I'm curious how the code works in such case?
I use randomcrop like this:
dict(
                type='Resize',
                img_scale=(1280, 720),
                ratio_range=(1.8, 2.2),
                keep_ratio=True),
            dict(type='RandomCrop', crop_size=(1000, 1000)),
            dict(type='RandomFlip', flip_ratio=0.5),

Thanks!

The RandomCrop  would skip this image, return None, and process the next image.

authors: jshilong shanggdlk


text:
When will gfocal loss+use_sigmoid=False be implemented?

Describe the feature
In gfocal loss, the use_sigmoind parameter must be set to True in latest versions. Or it will raise not implemented error.
Motivation
In CVPR2021, GFocal loss v2 is published and it uses a new GFocalHead but an old GFocal loss with use_sigmoid=False.
Related resources
You can look at this repo of GFocalV2 based on mmdetection 2.6.0, which is not supported in 2.16.0&2.17.0.
https://github.com/implus/GFocalV2
Additional context
It really worths to be implemented. After that you can simply add the config file in repo I mentioned above to support GFocalV2.

We will pay attention to this feature, but this is not our plan for the time being.
If you want to support this feature in MMDetection, PRs are definitely welcomed! We will also organize the PR review as soon as the PRs are created.


text:
Any plans to implement WBF in MMDet?

I've already checked posts on WBF(Weighted Box Fusion) related topics in Problems, but couldn't find the answer I was looking for.
Do you currently have any plans to add a WBF solution within MMDet?
Our team are currently considering applying WBF with an ensemble model. However, I know that MMDet does not have features that consider ensemble models.
However, MMDet understands that TTA is possible, so it is considering applying WBF after TTA as an alternative method.
If I want to implement WBF myself, can I add it by referring to the bbox_nms code? Also are there any guidelines for doing this?
Related resources
https://github.com/open-mmlab/mmdetection/blob/master/mmdet/core/post_processing/bbox_nms.py
thanks.

It is not in our plan.
The original implementation of WBF is very easy to use. You can just convert the prediction box format in mmdet to a list of boxes, scores, and labels and pass them into the weighted_boxes_fusion function.

I understand that there are no plans to include that functionality in the framework.
We plan to apply what you described. Please refer to those who will use WBF in the future.
thanks~
WBF
from ensemble_boxes import *

# TODO: inference from model using MMDet

# TODO: convert format bbox, score, and labels ...

# applying WBF
boxes, scores, labels = weighted_boxes_fusion([boxes_list], [scores_list], [labels_list], weights=None, method=method, iou_thr=iou_thr, thresh=thresh)

I understand that there are no plans to include that functionality in the framework. We plan to apply what you described. Please refer to those who will use WBF in the future. thanks~
WBF
from ensemble_boxes import *

# TODO: inference from model using MMDet

# TODO: convert format bbox, score, and labels ...

# applying WBF
boxes, scores, labels = weighted_boxes_fusion([boxes_list], [scores_list], [labels_list], weights=None, method=method, iou_thr=iou_thr, thresh=thresh)

hi, can you show an example code to show how to get the boxes, scores, labels by your mmdetection model
now I am using swin-transformer as mmdetection model, and I hope to use WBF module, but I can't find the api to get boxes, scores, labels

@diadestiny
please check the following documentation.
https://mmdetection.readthedocs.io/en/latest/1_exist_data_model.html
we can use the tools or code

tools
./tools/test.py
or
./tools/dist_test.sh

code
using mmdet api
https://mmdetection.readthedocs.io/en/latest/1_exist_data_model.html#high-level-apis-for-inference

authors: RangiLyu boom109 diadestiny


text:
[Feature] Support Pathlib for Config.fromfile

Motivation
Closes #7649
Modification
Fix to allow Path

@ZwwWayne Should I add a test code for this?

It would be great if you can add unit tests for this!

@ZwwWayne Currently, it does not seem to test init_detector solely.
Where can I put a test code?
https://github.com/open-mmlab/mmdetection/blob/bde7b4b7eea9dd6ee91a486c6996b2d68662366d/tests/test_runtime/test_async.py#L42
https://github.com/open-mmlab/mmdetection/blob/bde7b4b7eea9dd6ee91a486c6996b2d68662366d/tests/test_runtime/async_benchmark.py#L52
I am thinking a very simple test code like
str_path = "config_to_path"
model = init_detector(str_path)

path_object = Path("config_to_path")
model = init_detector(path_object)

authors: ZwwWayne nijkah


text:
En tant qu'ApiClient, je peux avoir des rôles lors de l'authentification

Afin d'avoir des droits d'accès sans nécessiter un utilisateur.

Fixed in 0.3.3


text:
Create array with size determined at runtime

Being able to allocate arrays dynamically without relying on a script extender wrapper functions,
int i = 4
int[] a = new int[i]

The op-code for array creation requires a constant size. This is a limitation imposed by the PEX format and can only be solved by very hacky solutions. I will leave this issue open for now, but this is not something that can easily be added by a compiler.

repo: open-papyrus/papyrus-compiler


text:
Fix CI (Add Ubuntu 24 support)

Provides fix for Ubuntu 24 LTS CI cmake regression (see also https://github.com/open-quantum-safe/liboqs/issues/1748)
Corrects consequent logic build script flaw for case where OpenSSL has not been locally built

Thanks for figuring out the CMake fix, @baentsch!

It's really just a work-around that'll get us to pass CI in an Ubuntu 24 CI setup. Not sure how to communicate that to users building liboqs on such platform themselves...

repo: open-quantum-safe/oqs-provider


text:
Address some Static Analysis Issues

Addresses some static analysis errors reported by Coverity tool.

Thanks very much for these better guards that I saw at first glance @ashman-p . To review more effectively could you please rebase to main, though to get rid of those changes also shown in this PR?

Thanks very much for these better guards that I saw at first glance @ashman-p . To review more effectively could you please rebase to main, though to get rid of those changes also shown in this PR?

My rebase did not seem to clear this up. Will cherry pick changes to a new branch and resubmit.

authors: ashman-p baentsch


text:
KangByungWook

Name: Kang Byung Wook
GitHub: @kangbyungwook
Twitter: @your_username
Linkedin: link
Website: yourblog.com

Completed Courses
Name of the Section

Course
Files

Course Name
link

Comment in this issue (please, do not open a new one)

@KangByungWook please, move your comment to #145 and close this issue. :+1: :smiley:

@Semigradsky @maicoqb ty!

authors: KangByungWook Semigradsky ericdouglas maicoqb

repo: open-source-society/computer-science


text:
Restyle and update product catalog, frontend, etc.

Objective
Bring out a bit of the project's personality by rebranding from 'Online Boutique' to something else. Maybe 'Astronomy Shop'? :)

Update frontend logo
Update product key art/product names
Rebrand colors/fonts to align with opentelemetry.io styles

See also #31 -- ensure that product images work well in dark mode/dark bg.

The physical page quality looks okay to me in dark mode. Is it just the picture quality itself or the product pictures in the web store?

Personal thoughts, can we refer to https://store.cncf.io/ for our demo store's ui/merchandise (not sure if there will be copyright issues)
by the way, I'm interested in helping the demo store optimize the ui

I came looking for an existing issue to suggest an astronomy shop too since that is already the theme of the site https://opentelemetry.io/

Not sure if we can piggyback off the cncf domain. We might be better off using opentelemetry itself.
It would be cool to have it do something like store.opentelemetry.io. @austinlparker any issues with the copyright you can think of? Don't want to step on any toes.

I don't think there'd be copyright issues.
As a stretch goal, it might be nice to see if we could keep an instance of this running somewhere and have the dashboards and stuff going as well.

Hello Team, I'm Oscar Reyes from the Tracetest team and I'm going to be working on a proposal to move the front-end section of the app to a SPA. I'm really excited to start contributing 😄

/cc'ing @maciej-szlosarczyk -- assuming you still want to update the featureflag service UI you might want to keep tabs on this issue and @xoscar's work :)

@olha23 has done a preliminary mock of the online store trying to match the style of the opentelemetry.io site with the 'Astronomy Shop' theme.  Take a look and give her feedback: https://www.figma.com/file/6YjjnLhE7QExI2RY0LyCpU/OTEL-demo?node-id=2%3A26

FYI @maciej-szlosarczyk on the figma design.
@kdhamric @olha23, looks fantastic. Only nit feedback from the sig meeting is we’d like more product diversity but overall excellent work & easy fix
@xoscar I think we’re good to move forward with this design

Hello everyone, I just opened the PR with the updated changes for the frontend https://github.com/open-telemetry/opentelemetry-demo/pull/236

authors: austinlparker cartersocha kdhamric mic-max tsloughter wph95 xoscar

repo: open-telemetry/opentelemetry-demo


text:
Do not mark span as error for 404 (preferably 4xx) HTTP status code

Is your feature request related to a problem? Please describe.
Kind of yes - we see spans as broken when server responds with 404 - which, according to RESTful guidelines is standard response when server has no data.
Having no data is ok for the business.
Example problem:

As we can see, the server responded with 404, which is valid case in our implementation, and span is marked as error.
That makes it hard to filter out real broken requests.
Describe the solution you'd like
I would like to be able to configure for which status codes (regexp maybe?) the span should not be marked as error.
Example:
errorStatusCodes: ^5.+
or
okStatusCodes: ^[2|3|4].+
Describe alternatives you've considered
No alternative, just bad search.
Additional context
I use autoinstrumentation: https://www.npmjs.com/package/@opentelemetry/auto-instrumentations-node
Would be really cool if the feature can be configured from there, preferably enabled by default.

The current behavior is what is specified https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/trace/semantic_conventions/http.md#status

Status
Span Status MUST be left unset if HTTP status code was in the
1xx, 2xx or 3xx ranges, unless there was another error (e.g., network error receiving
the response body; or 3xx codes with max redirects exceeded), in which case status
MUST be set to Error.
For HTTP status codes in the 4xx range span status MUST be left unset in case of SpanKind.SERVER
and MUST be set to Error in case of SpanKind.CLIENT.
For HTTP status codes in the 5xx range, as well as any other code the client
failed to interpret, span status MUST be set to Error.
Don't set the span status description if the reason can be inferred from http.status_code.

mhm... i see.
It makes sense from the http point of view, but completely does not make sense if you apply RESTful rules on HTTP... 🤔
Just wondering, can we make it configurable, so we can mark the spans as "ok" or your recommendation is to apply filtering in kibana, grafana and jaeger, smth like: AND NOT (http.status_code="4.." AND span.kind="client") ?
The advantage would be that we can steer what error is for us. Of course, jaeger UI will not show us errors, if we filter by error=true

I think there may already be request/response hooks which are used for adding attributes but could also be used to set the status. I don't know exactly the order they're called in and if setting the status would be overridden.

authors: dyladan sta-szek

repo: open-telemetry/opentelemetry-js


text:
chore(plugin-pg-pool): fix codecov path

Which problem is this PR solving?
Currently, pg-pool plugin codecov report floating outside packages/ folder, see below image. Ideally, it should stay inside a packages/ folder similar to other modules.

/cc @xiao-lix

Codecov Report

Merging #657 into master will increase coverage by 1.76%.
The diff coverage is n/a.

@@            Coverage Diff            @@
##           master    #657      +/-   ##
=========================================
+ Coverage   89.74%   91.5%   +1.76%
=========================================
  Files         212     216       +4
  Lines       10063   10094      +31
  Branches      927     907      -20
=========================================
+ Hits         9031    9237     +206
+ Misses       1032     857     -175

Impacted Files
Coverage Δ

...kages/opentelemetry-metrics/test/mocks/Exporter.ts
66.66% <0%> (-33.34%)
:arrow_down:

...kages/opentelemetry-plugin-dns/test/utils/utils.ts
33.33% <0%> (-26.67%)
:arrow_down:

...es/opentelemetry-node/src/instrumentation/utils.ts
90.47% <0%> (-9.53%)
:arrow_down:

...opentelemetry-core/src/trace/globaltracer-utils.ts
100% <0%> (ø)
:arrow_up:

...entelemetry-exporter-jaeger/test/transform.test.ts
100% <0%> (ø)
:arrow_up:

...opentelemetry-base/test/resources/resource.test.ts
100% <0%> (ø)
:arrow_up:

packages/opentelemetry-tracing/src/config.ts
100% <0%> (ø)
:arrow_up:

packages/opentelemetry-tracing/src/utility.ts
100% <0%> (ø)
:arrow_up:

...core/src/context/propagation/NoopHttpTextFormat.ts
100% <0%> (ø)
:arrow_up:

packages/opentelemetry-core/src/version.ts
100% <0%> (ø)
:arrow_up:

... and 51 more


text:
chore: enable declaration map to allow jumping through packages

Which problem is this PR solving?
Without a declaration map, jumping through packages in the repo by definition will target generated .d.ts files.
Like in opentelemetry-exporter-prometheus, MetricExporter is imported from @opentelemetry/metrics. If there is no declaration map, in vscode 'Go to definition' on MetricExporter will navigate to file packages/opentelemetry-exporter-prometheus/node_modules/@opentelemetry/metrics/build/src/export/types.d.ts.
Short description of the changes
With this patch, we can jump by definition across packages boundaries in the repo to its original source files.
Take the example above, 'Go to definition' of MetricExporter in  opentelemetry-exporter-prometheus can navigate to packages/opentelemetry-metrics/src/export/types.ts.

Codecov Report

Merging #986 into master will decrease coverage by 17.23%.
The diff coverage is n/a.

@@             Coverage Diff             @@
##           master     #986       +/-   ##
===========================================
- Coverage   94.95%   77.72%   -17.24%
===========================================
  Files         210       77      -133
  Lines        8571     1850     -6721
  Branches      772      271      -501
===========================================
- Hits         8139     1438     -6701
+ Misses        432      412       -20

Impacted Files
Coverage Δ

packages/opentelemetry-core/test/utils/url.test.ts
0.00% <0.00%> (-100.00%)
:arrow_down:

...ckages/opentelemetry-core/test/platform/id.test.ts
0.00% <0.00%> (-100.00%)
:arrow_down:

...pentelemetry-core/src/platform/node/performance.ts
0.00% <0.00%> (-100.00%)
:arrow_down:

...pentelemetry-core/test/internal/validators.test.ts
0.00% <0.00%> (-100.00%)
:arrow_down:

...ntelemetry-core/test/trace/NoRecordingSpan.test.ts
0.00% <0.00%> (-100.00%)
:arrow_down:

...telemetry-core/test/platform/hex-to-base64.test.ts
0.00% <0.00%> (-100.00%)
:arrow_down:

...elemetry-core/test/trace/spancontext-utils.test.ts
0.00% <0.00%> (-100.00%)
:arrow_down:

...lemetry-core/test/trace/ProbabilitySampler.test.ts
0.00% <0.00%> (-100.00%)
:arrow_down:

...try-core/test/trace/fixtures/test-package/index.js
0.00% <0.00%> (-100.00%)
:arrow_down:

...ry-api/test/noop-implementations/noop-span.test.ts
0.00% <0.00%> (-100.00%)
:arrow_down:

... and 136 more

I signed it - CLA

Thanks for the PR @legendecas and welcome to OpenTelemetry!

@legendecas do you mind also making this change in https://github.com/open-telemetry/opentelemetry-js-contrib?

@dyladan  do you mind also making this change in https://github.com/open-telemetry/opentelemetry-js-contrib?

I'll open a follow-up PR there :)

authors: codecov-io dyladan legendecas mayurkale22


text:
Added CODEOWNERS to match otel-go

This change adds a code owners file to match the other opentelemetry-go projects.
I know this probably isn't the correct list to start out with, and I didn't reach out to anyone yet.  This is intended to start the conversation of who should own this code.

The file looks empty. Can we add the following?
* @open-telemetry/proto-go-approvers

CODEOWNERS @open-telemetry/proto-go-maintainers

I completely missed that we already have a CODEOWNERS file here.
Can we unify the two files?

I see why that file was not working.  There is no team with a trailing /, so @open-telemetry/proto-go-approvers/ doesn't exist.
I don't mind putting them in the .github/ dir, but that does differ from the rest of the go repositories.

authors: MadVikingGod MrAlias

repo: open-telemetry/opentelemetry-proto-go


text:
Fixing build errors in contrib repo

Changes
Please provide a brief description of the changes here.
Merge requirement checklist

[x] CONTRIBUTING guidelines followed
[ ] Unit tests added/updated (if applicable)
[ ] Appropriate CHANGELOG.md files updated for non-trivial, user-facing changes
[ ] Changes in public API reviewed (if applicable)

Closing it. There are too many errors to fix, beyond my domain expertise on these exporters.


text:
Sprinkle some more demo on the docs

fixes https://github.com/open-telemetry/opentelemetry.io/issues/2137
There's several ways to skin this cat I guess, but I went with a shortcode shared across a few pages.
Preview: https://deploy-preview-2139--opentelemetry.netlify.app/docs/

Lgtm in general. One nit is to bold the demo title in the TOC like the other items. Ex. K8s operator. Thanks for doing this!

Fixed!

I like it!
Eventually I think we should remove one of the Demo links in the docs (either we have it beyond "Getting Started" or as top level item), but maybe we can track which one is used more and then later drop the other one?

Yep, we can track via GA I believe.

I would hesitate to contribute the full increase to the docs change as the new year really starts but there seems to be a noticeable increase in demo repo traffic from the website which is great to see.

authors: cartermp cartersocha svrnm


text:
Girazoki dual token transferrable

This is a draft proposal (still many things to polish) for being able to send distinct asset and fee assets, as long as they have the same reserve chain. This is intended for chains that only accept a small subset of assets as for xcm fee payment. For instance. imagine Parachain A has pallet_assets with an asset AssetA and pallet_balances with its native token is NativeA.
A reciving parachain B would only need to support xcm payments in NativeA, and thus if one wants to send AssetA it would need to send also NativeA for fee payment. This is intended to potentially limit the assets a parachain supports for fee payment.
Additionally, a refactor is included in preparation for the possibility to, in the future, send more than just 2 tokens to a chain

Codecov Report

Merging #683 (07ab0ff) into master (c283793) will increase coverage by 0.15%.
The diff coverage is 87.71%.

@@            Coverage Diff             @@
##           master     #683      +/-   ##
==========================================
+ Coverage   74.80%   74.96%   +0.15%
==========================================
  Files          82       82
  Lines        7073     7105      +32
==========================================
+ Hits         5291     5326      +35
+ Misses       1782     1779       -3

Impacted Files
Coverage Δ

xtokens/src/lib.rs
68.64% <74.07%> (-2.19%)
:arrow_down:

xtokens/src/mock/mod.rs
93.47% <100.00%> (+0.97%)
:arrow_up:

xtokens/src/tests.rs
99.00% <100.00%> (+0.15%)
: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 6392ab8...07ab0ff. Read the comment docs.

Several tests to be added yet (specially for errors) but major changes have been:

A unique function where we calculate the transfer_kind, and also unique instruction functions to which we pass multiassets now.
Addition of two new extrinsics that allow to transfer up to two distinct assets as long as they share the same reserve
Removal of the ArithmeticOverflow error and use the MultiAssets push function instead, which already uses saturated addition

authors: codecov-commenter girazoki


text:
Resolve update additionalProperties:false in openapi.yaml

Fixes #269

Reviewer is @vanithavalluripalli9

repo: openBackhaul/ApplicationLayerTopology


text:
Modify the mandatory property of the attribute occupying-fru to true

As per the discussion in the issue https://github.com/openBackhaul/equipment/issues/10 , the attribute occupying-fru to be made as mandatory.
grouping holder {
leaf occupying-fru {
mandatory "true"
type leafref {
path "/core-model:control-construct/core-model:equipment/core-model:uuid";
}
description
"The FRU that is occupying the holder.
A holder may be unoccupied in reality, but always an abstract equipment object exists.
An FRU may occupy more hat one holder (using or blocking are intentionally not distinguished here).";
}

To include mandatory statement , the UML2YANG tool considers the UML artifact multiplicity for scalar variables.
If  multiplicity is 1 , then the translated leaf shall include the mandatory substatement.
This functionality is available only for rpc parameters now. So, in the preprocessing this can be handled.

Proposal to the 5G-xhaul call on 19th of October 2022:
The UML2YANG tool should

include mandatory statement for parameter "occupyingFru" by post-processing
the multiplicity should be "1".

Implemented as decided.

authors: PrathibaJee demx8as6 openBackhaul

repo: openBackhaul/core


text:
UI inconsistencies in the logout dialog box

Summary
There are UI inconsistencies in the dialog box when logging out.
Steps to reproduce
Login -> Drawer -> Logout
Expected behaviour
The app should show a dialog box with proper margins and it should follow the Material guidelines.
Observed behaviour
A dialog box appears which has an inconsistent UI and does not follow the Material guidelines.
Device and Android Version
Android 9, Mi A3
Screenshots

@laxyapahuja this issue cannot be reproduced by others simply because you have changed the AppTheme in the styles.xml from Theme.AppCompat.Light.NoActionBar to Theme.MaterialComponents.Light.NoActionBar in your local branch. Unless #110 gets merged, this issue does not make sense.

@laxyapahuja this issue cannot be reproduced by others simply because you have changed the AppTheme in the styles.xml from Theme.AppCompat.Light.NoActionBar to Theme.MaterialComponents.Light.NoActionBar in your local branch. Unless #110 gets merged, this issue does not make sense.

Thank you for pointing that out. However, I won't take this issue down because the redesign requires us to add Material AppTheme in the project. So, it's going to occur in the future. It's better if we make the app compatible to the Material theme :)

I think it will be a good idea if this PR is tagged 'later'

I think it will be a good idea if this PR is labelled 'later'

authors: ashwinkey04 laxyapahuja rachittt

repo: openMF/mifos-mobile-cn


text:
Seguin, Texas

data here: http://www.seguintexas.gov/departments/planning_codes/maps_and_gis.php
but no addresses...
emailed to see if they have that attribute data (in their zoning polys, you can see it is cadastral/ parcels)

Justin,
We have received your email request in regards to the GIS data available online.
How can I help?
Helena
Helena Schaefer
Senior Planner
City of Seguin
(830) 386-2527

just called her and left a voicemail

Justin,
Attached is a shapefile and related files for the most recent 911 addressing for the County.
Please let me know if you have any issues with the data.
Helena
Helena Schaefer
Senior Planner
City of Seguin
(830) 386-2527

uploading to dropbox now

https://www.dropbox.com/s/pslyrkbos14fmo5/current911addressingforguadalupecounty.zip?dl=0

repo: openaddresses/openaddresses


text:
Pinecone setup shows Unsupported database

I'm not sure if this is the proper place or method to post this. But, if anyone is able to help it would be greatly appreciated!

Looks like you have a space at the end of your database variable? "pinecone ".

repo: openai/chatgpt-retrieval-plugin


text:
chat competion stream how to use interrupt

chat competion stream how to use interrupt

did you test chat completion ? does it work ? @wuzhike666

did you test chat completion ? does it work ? @wuzhike666

yes ,I use chat completion stream, it can work,but I want to use interrupt,I do not know how to use it

Sorry for the delay, you can use the stream's .Close() method. Here's an example with a timed interrupt.
stream := client.Chat.Completions.NewStreaming(ctx, openai.ChatCompletionNewParams{
	Messages: openai.F([]openai.ChatCompletionMessageParamUnion{
		openai.UserMessage(question),
	}),
	Seed:  openai.Int(1),
	Model: openai.F(openai.ChatModelGPT4o),
})

go func() {
	time.Sleep(time.Second * 3)
	stream.Close() // INTERRUPT
}()

for stream.Next() {
	evt := stream.Current()
	if len(evt.Choices) > 0 {
		print(evt.Choices[0].Delta.Content)
	}
}

repo: openai/openai-go


text:
Support for real time audio streaming using chunk transfer encoding for Whisper

Confirm this is a feature request for the Python library and not the underlying OpenAI API.

[X] This is a feature request for the Python library

Describe the feature or improvement you're requesting
It would be nice to start data transfer as soon as it becomes available for the real-time voice recognition.
We already have a similar feature for tts: https://platform.openai.com/docs/guides/text-to-speech/streaming-real-time-audio
Please note, I am not saying that a transcript should be available before the speech ended. But I would like to start the data transfer earlier.
Additional context
The HTTP supports sending files in chunks without knowing the length in advance.
A WAV header does require the length, however 0xFFFFFFFF (i.e. max length) works fine with Whisper (I checked).

Just to clarify, your request pertains to uploading audio files with in openai.audio.transcriptions.create() endpoint, correct?
We do want to support streaming requests in this way, but unfortunately I'm not sure that we'll be able to get to it soon.

Yes, correct. Thank you!

It's not exactly what you're describing, but it is kind of related and I figured those on this thread may find it useful. It links together a whole chain such that you can stream the audio response to a prompt. It works using threading by using one thread to stream the text reply into phrases which are enqueued for TTS. Then a second thread which TTS's each phrase as it completes. And finally a third thread which starts playing out loud each phrase as it's been TTS'd. The final effect is much like working with the ChatGPT app where you get "streaming audio response" to your question and don't have to wait to have the full text come back before you can start listening to audio. What's here I'm sure could be improved and it's primarily designed to show, in a terminal, it all put together.
https://gist.github.com/Ga68/3862688ab55b9d9b41256572b1fedc67

authors: Ga68 Shulyaka rattrayalex

repo: openai/openai-python


text:
docs: fix code comment typo

[x] I understand that this repository is auto-generated and my pull request may not be merged

Changes being requested
specifc -> specific
Additional context & links

Thanks!

authors: RobertCraigie eltociear


text:
[Triton-MLIR][pybind11] Update pybind11 to 2.10.0

This PR applies #691 to the Triton-MLIR branch.

Should we use a git submodule? I feel like it may be better than copy pasting the source

Yeah, that will be nice. If so, the document has to be updated a bit:
https://triton-lang.org/master/getting-started/installation.html#python-package

Or actually an alternative to submodules would be to have the python setup.py download and extract the headers, similar to what we do for LLVM

Thanks @Jokeren and @ptillet for your feedback. I will update the PR today.

I updated the PR.

git submodule is used because

Using submodule should be a more standard way for the git project.
Unlike LLVM, we don't need a binary.
Unlike LLVM, pybind11's repository is not too big (so cloning it wouldn't hurt the build experience)

You don't need explicit git submodule. It is automatically executed in setup.py if the user did not run it.

PyTorch's setup.py also has this feature.

pybind11 is placed in the triton/third-party directory so that dependent packages are not scattered.

I would appreciate your feedback (e.g., is it better to download a tarball under tmp like LLVM?)

Cool! Will the setup.py also automatically update the submodule when the reference has changed?

The current logic is simple (and almost the same as that of PyTorch): if there's no third-party/pybind11/include/pybind11 directory, it runs git submodule update --init. So, it should work even if we upgrade pybind11-2.10.0 to something newer.

Oops, perhaps deps better than third-party?

Thanks. I will merge this. Can you also open this PR against master ?

authors: Jokeren ptillet shintaro-iwasaki

repo: openai/triton


text:
I can't edit navbar.html file when shinyproxy is in container

Hello!
I can't edit navbar.html when ShinyProxy is running as docker container. I tried to put the edited navbar.html in the templates/fragments directory and then copy to /opt/shinyproxy/templates, but still the changes don't show up when I restart the server.
For example, I would like to change "Sign Out" for "Sair".

Dockerfile:
FROM openjdk:8-jre
RUN mkdir -p /opt/shinyproxy/
RUN wget https://www.shinyproxy.io/downloads/shinyproxy-2.3.0.jar -O /opt/shinyproxy/shinyproxy.jar
COPY application.yml /opt/shinyproxy/application.yml
RUN mkdir templates
COPY templates/* /opt/shinyproxy/templates/
RUN mkdir templates/fragments
COPY templates/fragments/* /opt/shinyproxy/templates/fragments/
WORKDIR /opt/shinyproxy/
CMD ["java", "-jar", "/opt/shinyproxy/shinyproxy.jar"]

application.yml:
proxy:
title: LicitaR
landing-page: /
template-path: ./templates
port: 8080
authentication: simple
admin-groups: admins
users:

name: jack
password: password
groups: admins
name: jeff
password: password
docker:
internal-networking: true
container-network: dnv-net
specs:
id: 01_hello
display-name: Hello Application
description: Application which demonstrates the basics of a Shiny app
container-cmd: ["R", "-e", "shinyproxy::run_01_hello()"]
container-image: openanalytics/shinyproxy-demo
container-network: "${proxy.docker.container-network}"
id: euler
display-name: Euler's number
container-cmd: ["R", "-e", "shiny::runApp('/root/euler')"]
container-image: euler-docker
container-network: "${proxy.docker.container-network}"

logging:
file:
/log/shinyproxy.log

I don't know if i'm doing something wrong. Could you help me, please? Thank you.
Paulo

You should recreate your image.
BTW, you should not copy the files. Instead, you should make the folder as a volume. In this way, after changing the file, you only need to refresh the browser.

@shrektan thank you for your reply.

After the changes I recreated the image using sudo docker-compose build, but nothing changed. Is it right?

About the folder as a volume, could you show me an example? I'm new user of ShinyProxy, so I'm a little bit lost.

Thank you.

Sorry, I don't have time to do this right now but I screenshot a production setup for you. It should be easy to understand.
The docker file

Docker compose YAML

Folder structure

@shrektan Thank you so much for your help.

I created the 'volumes' in the docker-compose.yml and changed the Dockerfile as you said. The files (admin, app, index, login) are used when the page is refreshed (thanks to you). But, the shinyproxy/application.yml are not used, even though I put sudo docker-compose build and the command sudo docker-compose up -d shinyproxy says "dnv_shinyproxy is up-to-date". So I left one CP in the Dockerfile regarding the application.yml. :(

docker-compose.yml
version: "3.6"
services:
shinyproxy:
image: datanovia/shinyproxy
container_name: dnv_shinyproxy
restart: on-failure
build: ./shinyproxy
networks:
- dnv-net
ports:
- 8080:8080
volumes:
- "/var/run/docker.sock:/var/run/docker.sock"
- "./shinyproxy-logs/server:/log"
- "./shinyproxy-logs/container:/container-logs"
- "./shinyproxy/application.yml:/opt/shinyproxy/application.yml"
- "./shinyproxy/templates/:/opt/shinyproxy/templates"
- "./shinyproxy/templates/fragments/navbar.html:/opt/shinyproxy/templates/fragments/navbar.html"
euler:
image: euler-docker
container_name: dnv_euler
build: ./shinyapps/euler-docker
networks:
- dnv-net
networks:
dnv-net:
name: dnv-net

Dockerfile
FROM openjdk:8-jre
RUN mkdir -p /opt/shinyproxy/
RUN wget https://www.shinyproxy.io/downloads/shinyproxy-2.3.0.jar -O /opt/shinyproxy/shinyproxy.jar
COPY application.yml /opt/shinyproxy/application.yml
WORKDIR /opt/shinyproxy/
CMD ["java", "-jar", "/opt/shinyproxy/shinyproxy.jar"]

application.yml
proxy:
title: LicitaR
landing-page: /
hide-navbar: false
template-path: ./templates/
port: 8080
authentication: simple
admin-groups: admins
users:

name: jack
password: pass
groups: admins
name: jeff
password: pass
docker:
internal-networking: true
container-network: dnv-net
work-directory: /home/paulo/shinyproxy-config/
specs:
id: 01_hello
display-name: Hello Simple APP <3
description: Application Shiny app
container-cmd: ["R", "-e", "shinyproxy::run_01_hello()"]
container-image: openanalytics/shinyproxy-demo
container-network: "${proxy.docker.container-network}"
id: euler
display-name: Euler's number
container-cmd: ["R", "-e", "shiny::runApp('/root/euler')"]
container-image: euler-docker
container-network: "${proxy.docker.container-network}"

logging:
file:
/log/shinyproxy.log

I still can't change the navbar.html file. When I put template-path: ./templates/fragments It was possible, but this way the others files that I changed were not used (admin, app, index, login).

@PauloJhonny
You can put the fragments inside of templates but you need to claim that in index.html or somewhere first (sorry, I don't remember the clear place).
If you don't know what you are doing, you need to place the fragments under shinyproxy/. The reason is you need to keep the same folder structure as shinyproxy it does unless you know how it works. See the default folder structure here: https://github.com/openanalytics/shinyproxy/tree/master/src/main/resources
Well, I actually build a docker-compose example for you. See https://github.com/shrektan/shinyproxy-docker-compose-example. Hope this clarifies your confusion.

@shrektan thank you so much. It really helped me.
It worked. I was putting the fragments folder in the wrong place (see the correct tree). All the files are hot-loaded now, except the application.yml. Thank youuu.

Good to hear that.
BTW, closing the issue will be good if you don't have further questions.
Thanks.

Thank you. :)

authors: PauloJhonny shrektan

repo: openanalytics/shinyproxy


text:
Table focus is not shown #617

remove outline: none for a11y reasons
fixes #617

I had overlooked the outline:0. There are removed now!

repo: opencast/opencast-admin-interface


text:
get site group if it exists

Detailed Description
Currrently when making a new user, if it doesnt exsits, a new user and site group is made.
Sometimes the site group already exists, so we should laod that, not cause an error by overwriting it
Context

good to reduce errors

Possible Implementation
in the code here, try to get a site group with this email first, and if it doesnt exsits, then make it.
it would also be nice to use create_site_group function to reduce code

Hello. Would you please assign this to me? I am trying to build my open source contributions!

Of course, thanks @ProfessionalCaddie

Hello @peterdudfield ,
I have learned a lot so far and I think I have a good test and solid logic but I am having trouble running tests.
I am assuming the issue is with poetry as I have had trouble installing certain packages inside the virtual environment(greenlet,numpy). So I started from the forked version(no changes)and changed Poetry's dependencies to be all the latest versions.
Now I can run the pytest command but it fails the tests/test_alembic.py.  Do you have any way to move forward?

whats the error you get?

FAILED tests/test_alembic.py::test_migrations - docker.errors.DockerException: Error while fetching server API version: (2, 'CreateFile', 'The system cannot find the file specified.')
Is this because I haven't started a local database in docker?

you have to start up the docker engine locally. I do this by starting the docker desktop app

what structure do you propose?
I dont quite understand the circular import, but perhaps havent look at the code enough?

Ah I see. Try to do what make sense and then we can review. I do like the separation of read and write at the moment.
And note, api is one component that uses this, but there are a few other components that use this too. So I'd probably be against a pure api file.

Hi Peter.
I added a pull request but I wasn't sure how to have it show in this issue. Here is the link: https://github.com/openclimatefix/pv-site-datamodel/pull/154

The next step would be to use this new version in https://github.com/openclimatefix/india-api and https://github.com/openclimatefix/pv-site-api

@peterdudfield, does this mean to follow steps in readme for one or both of those projects and run tests? Does this entail anything else?

For India-api, it should be just increase the version here https://github.com/openclimatefix/india-api/blob/main/pyproject.toml#L22
For pv-site-api, increase the version here and also update the poetry lock file

hi @peterdudfield. I think I did what's required, I changed the files and then created new pull requests. Please let me know if anything else has to be done. Thanks

Thanks @ProfessionalCaddie ill close this now

@all-contributors please add @ProfessionalCaddie  for code

@peterdudfield Thanks!

authors: ProfessionalCaddie peterdudfield

repo: openclimatefix/pv-site-datamodel


text:
update diagram

Pull Request
Description
Update mermaid diagram from

To

Fixes #
How Has This Been Tested?
CI tests, and run markdown code locally

[x] Yes

Checklist:

[x] My code follows OCF's coding style guidelines
[x] I have performed a self-review of my own code
[x] I have made corresponding changes to the documentation
[ ] I have added tests that prove my fix is effective or that my feature works
[x] I have checked my code and corrected any misspellings

Hey @peterdudfield, This looks a lot cleaner.
Out of curiosity I do have a question about the naming of the SQL tables. Some end in SQL and some don't. Ex. GSPYieldSQL vs. ManyForecasts. Is there a reason for this difference in naming?
Otherwise, it looks clear enough to me.

ah i Should remove SQL, let me do that

repo: openclimatefix/uk-pv-national-gsp-api


text:
error message "The slug agent is already taken. Please use another slug for your collective" but the collective has been created

Describe the bug
Creating a first collective called "Agent" i've got an error in the UI saying saying "the slug 'Agent' already exist"
frontend "version": "2.2.0",
confirmed by opencollective-api
error: GraphQL error: The slug agent is already taken. Please use another slug for your collective.
error: {"locations":[{"line":2,"column":3}],"path":["createCollective"]}
error: Error: The slug agent is already taken. Please use another slug for your collective.,    at /home/smag/dev/opencollective/api/server/graphql/v2/mutation/CreateCollectiveMutation.js:82:15,    at Generator.next (<anonymous>),    at Generator.tryCatcher (/home/smag/dev/opencollective/api/node_modules/bluebird/js/release/util.js:16:23),    at PromiseSpawn._promiseFulfilled (/home/smag/dev/opencollective/api/node_modules/bluebird/js/release/generators.js:97:49),    at Promise._settlePromise (/home/smag/dev/opencollective/api/node_modules/bluebird/js/release/promise.js:609:26),    at Promise._settlePromise0 (/home/smag/dev/opencollective/api/node_modules/bluebird/js/release/promise.js:649:10),    at Promise._settlePromises (/home/smag/dev/opencollective/api/node_modules/bluebird/js/release/promise.js:729:18),    at _drainQueueStep (/home/smag/dev/opencollective/api/node_modules/bluebird/js/release/async.js:93:12),    at _drainQueue (/home/smag/dev/opencollective/api/node_modules/bluebird/js/release/async.js:86:9),    at Async._drainQueues (/home/smag/dev/opencollective/api/node_modules/bluebird/js/release/async.js:102:5),    at Immediate.Async.drainQueues [as _onImmediate] (/home/smag/dev/opencollective/api/node_modules/bluebird/js/release/async.js:15:14),    at processImmediate (node:internal/timers:466:21),    at process.topLevelDomainCallback (node:domain:152:15),    at process.callbackTrampoline (node:internal/async_hooks:128:24)
error: GraphQL error: The slug agent is already taken. Please use another slug for your collective.
error: {"locations":[{"line":2,"column":3}],"path":["createCollective"]}
error: Error: The slug agent is already taken. Please use another slug for your collective.,    at /home/smag/dev/opencollective/api/server/graphql/v2/mutation/CreateCollectiveMutation.js:82:15,    at Generator.next (<anonymous>),    at Generator.tryCatcher (/home/smag/dev/opencollective/api/node_modules/bluebird/js/release/util.js:16:23),    at PromiseSpawn._promiseFulfilled (/home/smag/dev/opencollective/api/node_modules/bluebird/js/release/generators.js:97:49),    at Promise._settlePromise (/home/smag/dev/opencollective/api/node_modules/bluebird/js/release/promise.js:609:26),    at Promise._settlePromise0 (/home/smag/dev/opencollective/api/node_modules/bluebird/js/release/promise.js:649:10),    at Promise._settlePromises (/home/smag/dev/opencollective/api/node_modules/bluebird/js/release/promise.js:729:18),    at _drainQueueStep (/home/smag/dev/opencollective/api/node_modules/bluebird/js/release/async.js:93:12),    at _drainQueue (/home/smag/dev/opencollective/api/node_modules/bluebird/js/release/async.js:86:9),    at Async._drainQueues (/home/smag/dev/opencollective/api/node_modules/bluebird/js/release/async.js:102:5),    at Immediate.Async.drainQueues [as _onImmediate] (/home/smag/dev/opencollective/api/node_modules/bluebird/js/release/async.js:15:14),    at processImmediate (node:internal/timers:466:21),    at process.topLevelDomainCallback (node:domain:152:15),    at process.callbackTrampoline (node:internal/async_hooks:128:24)

But the collective "Agent" has been created

Could you add some steps to reproduce? Did you create the collective directly from the API, from the UI?

I can not reproduce it was only for the first created.

authors: Betree scenaristeur

repo: opencollective/opencollective


text:
Support Spam

Who is your user?
I am getting a lot of spam messages coming through support
What are they trying to achieve?
Is there a way to investigate this? Put a captcha on our form? Block the email somewhere?
When triaging support, I want to reduce the amount of spam messages, so I can ‘it’s annoying’
How are they currently doing this?
Marking them as spam on freshdesk
How well understood is this problem?

[ ] Surfacing: if you feel this is a seed of an idea that needs to be researched.
[ ] Understanding: if you've done some research and feel it is already well understood and ready for shaping.
[ ] Shaping:  if you feel a solution is clearly defined and can be made into a pitch (read more about shaping)
[ ] Pitching: if you feel that it is ready to be presented for prioritisation (read more about pitching)

Since most of our support are created from the form; opencollective.com/contact, we could potentially add a Captcha there.
@Betree : what do you think?

I agree; it's very frequent for contact forms to have a captcha, and there's an open security issue about this endpoint not being rate limited (which Captcha would also solve).

It would also be great if there was a way of not letting the form be submitted unless it has text in the subject and description, I get a lot of empty emails as well

@shannondwray @SudharakaP A Captcha field has been added to the Contact Support form

@shannondwray @SudharakaP A Captcha field has been added to the Contact Support form

Great. Thanks a lot for doing this. 👍🏽

authors: Betree SudharakaP gustavlrsn shannondwray


text:
Add an option to make UUIDs of the transaction private

Who is your user?
Our users are players of a Heroes of Newerth video game.
What are they trying to achieve?
They want to be able to fund in-game tournaments. Every 2 months or so we organize tournaments between the players, and winners get the money collected by the fund. We want to encourage contributions by awarding in-game currency and other in-game content for those who contribute.
When user contributes to the fund, I want to OpenCollective to generate a PRIVATE code that they can use to claim in-game reward. The key should be PRIVATE and that only the owners of the fund can validate using API key
How are they currently doing this?
Right now we rely on UUIDs which works perfectly well except that there is no guarantee that someone won't claim another player's code before the real owner does. We either need UUIDs to be private (e.g. as an opt-in for the collective so that it's backwards compatible) OR another unique code that ONLY donor and the collective can see.

Triage Template (core team only)
This template is for members of the team to triage for prioritisation. For more guidance see https://www.loom.com/share/369ab467fbc64dec848085d38ff57ca0:
P1 high frequency, high impact
P2 low frequency, high impact
P3 high frequency, low impact
P4 low frequency, low impact
Examples of high impact - a problem affects users during an essential process (expenses and payments > onboarding and registration > contributing) with no workaround.
High frequency - >10% of users affected (measured as a proportion of total potential users for this case).

To provide an analogy, imagine that you back something on Kickstarter, and another person claims your reward. That's the risk that we are dealing with. Here is the link to the community fund: https://opencollective.com/heroes-of-newerth-community/ We have about $4000 in donations at the moment, and we allow players to claim in-game rewards by using transaction ID that they can see on the receipt.. But because UUIDs are poorly protected, it's possible for another player to claim the reward before the real player does.
We want to system to be secure. Only the donor and the collective should see their transaction ID. Make it an explicit opt-in to keep it backwards compatible.

But because UUIDs are poorly protected

Only the donor and the collective should see their transaction ID

On our side UUIDs are public and we're making absolutely no attempt at protecting it like a secret. We're unfortunately not gonna change that behavior.
I'm afraid, you'll need to figure another mechanism for your use case.

I understand that UUIDs are public by design. This isn't a bug report, this is a feature request. I offered two option (either an opt-in to make them private or an alternative PRIVATE id) but there can be other ways this can be implemented. Let's discuss. What kind of "another mechanism" would there be for us to reliably verify authenticity of the donation?  I'm not sure we can do that without your help.

Bump! This is super important to us!

authors: korDen znarf


text:
Expense submitters and collective admins are notified when expense categories they selected are changed.

Part of https://github.com/opencollective/opencollective/issues/7197
When an expense category is modified by either a collective admin or fiscal host admin it is a learning moment. The expense submitter and/or collective admin need to be notified about this so that they can make better selections in future expenses.

Duplicate of https://github.com/opencollective/opencollective/issues/7053

authors: Betree hdiniz


text:
[TE-16.3] Test specification for encap FRR with REPAIR

Adds the test specification for FRR traffic flows using the indirection of the REPAIR VRF instead of specifying the backup action directly in the next hop.

Pull Request Functional Test Report for #2919 / 983ccf683c7ee06989ba04a58f906da9d9d4dbc7
Virtual Devices

Device
Test
Test Documentation
Job
Raw Log

Arista cEOS

TE-16.2: encapsulation FRR scenarios
41e13689
Log

Cisco 8000E

TE-16.2: encapsulation FRR scenarios
cacc2f52
Log

Cisco XRd

TE-16.2: encapsulation FRR scenarios
56a0996d
Log

Juniper ncPTX

TE-16.2: encapsulation FRR scenarios
8e2c51b0
Log

Nokia SR Linux

TE-16.2: encapsulation FRR scenarios
d4a77e42
Log

Openconfig Lemming

TE-16.2: encapsulation FRR scenarios
6f5c2ad9
Log

Hardware Devices

Device
Test
Test Documentation
Raw Log

Arista 7808

TE-16.2: encapsulation FRR scenarios

Cisco 8808

TE-16.2: encapsulation FRR scenarios

Juniper PTX10008

TE-16.2: encapsulation FRR scenarios

Nokia 7250 IXR-10e

TE-16.2: encapsulation FRR scenarios

Help

Pull Request Test Coverage Report for Build 8811620209
Details

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 55.448%

Totals

Change from base Build 8809294032:
0.0%

Covered Lines:
1949

Relevant Lines:
3515

💛  - Coveralls

LGTM

authors: OpenConfigBot coveralls nachikethas nflath

repo: openconfig/featureprofiles


text:
Credentialz-4

"This code is a Contribution to the OpenConfig Feature Profiles project ("Work") made under the Google Software Grant and Corporate Contributor License Agreement ("CLA") and governed by the Apache License 2.0. No other rights or licenses in or to any of Nokia's intellectual property are granted for any other purpose. This code is provided on an "as is" basis without any warranties of any kind."

Pull Request Functional Test Report for #3358 / 166585a6c407f6e3677b9ea66c91ad74451e196c
Virtual Devices

Device
Test
Test Documentation
Job
Raw Log

Arista cEOS

Credentialz-4: SSH Public Key Authentication

Cisco 8000E

Credentialz-4: SSH Public Key Authentication

Cisco XRd

Credentialz-4: SSH Public Key Authentication

Juniper ncPTX

Credentialz-4: SSH Public Key Authentication

Nokia SR Linux

Credentialz-4: SSH Public Key Authentication

Openconfig Lemming

Credentialz-4: SSH Public Key Authentication

Hardware Devices

Device
Test
Test Documentation
Raw Log

Arista 7808

Credentialz-4: SSH Public Key Authentication

Cisco 8808

Credentialz-4: SSH Public Key Authentication

Juniper PTX10008

Credentialz-4: SSH Public Key Authentication

Nokia 7250 IXR-10e

Credentialz-4: SSH Public Key Authentication

Help

Pull Request Test Coverage Report for Build 10219375012
Details

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 55.5%

Totals

Change from base Build 10212739555:
0.0%

Covered Lines:
1983

Relevant Lines:
3573

💛  - Coveralls

authors: OpenConfigBot coveralls dipchauh


text:
TargetType is not used in message target

Please explain why target_type is a string instead of the enum TargetType
Thanks
David
enum TargetType {
UNKNOWN = 0;
// https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml?search=22
SSH = 22;
// https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml?search=9339
GNMI_GNOI = 9339;
}
message Target {
enum TargetOp {
UNKNOWN = 0;
ADD = 1;
REMOVE = 2;
}
TargetOp op = 1;
// Used to ack the registration of target_id and target_type.
bool accept = 2;
// Target id identifies which handler to use for a tunnel stream.
string target_id = 3;
// String value of the corresponding TargetType for a standard protocol.
// A non-enumerated protocol is supported so long as both tunnel client and
// server are in agreement on a particular value.
string target_type = 4;
string error = 5;
}

The enum allows for retrieving a string constant for a set of defined
types.  e.g.
https://github.com/openconfig/gnmi/blob/master/testing/fake/gnmi/agent.go#L89
However, by allowing the target type to be a string, an operator could also
tunnel other protocols not in the enum so long as the client and server
agreed on common type strings.
On Mon, Feb 15, 2021 at 3:15 PM dliu2223 notifications@github.com wrote:

Please explain why target_type is a string instead of the enum TargetType
Thanks
David
enum TargetType {
UNKNOWN = 0;
//
https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml?search=22
SSH = 22;
//
https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml?search=9339
GNMI_GNOI = 9339;
}
message Target {
enum TargetOp {
UNKNOWN = 0;
ADD = 1;
REMOVE = 2;
}
TargetOp op = 1;
// Used to ack the registration of target_id and target_type.
bool accept = 2;
// Target id identifies which handler to use for a tunnel stream.
string target_id = 3;
// String value of the corresponding TargetType for a standard protocol.
// A non-enumerated protocol is supported so long as both tunnel client and
// server are in agreement on a particular value.
string target_type = 4;
string error = 5;
}
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/openconfig/grpctunnel/issues/16, or unsubscribe
https://github.com/notifications/unsubscribe-auth/AEL4QL7I2L5ICJMDPLHDA6LS7F6GRANCNFSM4XVIDCIQ
.

Thank you for the explanation. I was planning to extend the enum to support OpenFlow and P4 for data plane programming through gRPC tunnel, will switch to string for now, maybe submit changes in the future when implementation is done.
David

The intention is to allow for expansion of the enum and both P4 and
Openflow would be potential candidates.
On Tue, Feb 16, 2021 at 2:44 PM dliu2223 notifications@github.com wrote:

Thank you for the explanation. I was planning to extend the enum to
support OpenFlow and P4 for data plane programming through gRPC tunnel,
will switch to string for now, maybe submit changes in the future when
implementation is done.
David
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/openconfig/grpctunnel/issues/16#issuecomment-780074861,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AEL4QL54EYCKWES52CES63DS7LDLFANCNFSM4XVIDCIQ
.

repo: openconfig/grpctunnel


text:
Python: use numpy to wrap C++ arrays

This should be self obvious. However for some reason Zinc's Python wrappers expose numerical arrays as Python lists, which IMHO is not the best way to do things, so raising this issue...

Yes, we definitely want to make our Python bindings feel "natural" and in this case I agree that this would indeed mean using numpy rather than a Python list.

authors: agarny dbrnz

repo: opencor/libopencor