NTR: Digestible carbohydrate

We are going to create some nutritional framework terms in CDNO the first term is "Digestible carbohydrate" which does not exist in any other OBO ontology as far as I am aware
Preferred term label
Digestible carbohydrate
Textual definition
Based on Razlin's definition from Nutrition schema_framework_002:

Also known as available carbohydrate corresponds to fractions of total carbohydrate that is digestible to provide energy.

Suggested parent term
CHEBI:16646 - carbohydrate

Great thanks @LilyAndres. As I understand we're going to need to add several of these terms.
I notice that the definition you provided based on the Nutrition schema_framework_002: might not be complete? It is always good when formulating ontology term definitions to use an Aristotelian definition structure i.e. A is B, which C's e.g. Seawater is liquid water that derives from a saline water body.
Based on the nutrition framework this class will be subclass to CHEBI:carbohydrate, the definition of which is:

Any member of the class of organooxygen compounds that is a polyhydroxy-aldehyde or -ketone or a lactol resulting from their intramolecular condensation (monosaccharides); substances derived from these by reduction of the carbonyl group (alditols), by oxidation of one or more hydroxy groups to afford the corresponding aldehydes, ketones, or carboxylic acids, or by replacement of one or more hydroxy group(s) by a hydrogen atom; and polymeric products arising by intermolecular acetal formation between two or more such molecules (disaccharides, polysaccharides and oligosaccharides). Carbohydrates contain only carbon, hydrogen and oxygen atoms; prior to any oxidation or reduction, most have the empirical formula Cm(H2O)n. Compounds obtained from carbohydrates by substitution, etc., are known as carbohydrate derivatives and may contain other elements. Cyclitols are generally not regarded as carbohydrates.

We don't need to redefine carbohydrate, but we do need to differentiate what make a carbohydrate "digestible to provide energy".
Perhaps we can try to conceive of a more specific definition of digestible carb for CDNO.
@ramonawalls or Graham, do you have any suggestions here? Digestible to humans/other organisms, or does this mean digestible based on some specific assay? What exactly do we mean here?

@CropStoreDb

Graham and his colleagues will need to chime in here.

Agreed, and thanks - we are conferring with some domain experts to clarify these. (Graham aka @CropStoreDB)

I'm copying what Dr. Ben Liu sent to Graham and myself.
Hi Graham,
Unfortunately, I don’t have a textbook around for this. In my opinion, digestible carbohydrate (also called available carbohydrates sometimes)  “in human nutrition” normally refers to carbohydrates which are “digestible by human digestive enzymes” and available to provide energy to human body. The values for digestible carbohydrates are normally obtained by in vitro assays by digesting complex carbohydrates to simple sugars for measurement (e.g. [https://www.megazyme.com/available-carbohydrates-dietary-fiber-assay-kit]

@LilyAndres this is a good start, we could make the term based on this info, however, if possible it would be good to find a text book definition from the discipline if it exits. I'd be surprised of there isn't one.

I would like to propose the following definition:

Digestible carbohydrates are a diverse group of substances with the primary function of serving as an energy source for all body cells.

ISBN 978–3–8055–8477–7
Koletzko B, et al. (eds): Pediatric Nutrition in Practice. World Rev Nutr Diet. Basel, Karger, 2015, vol 113, pp 46–50 DOI: 10.1159/000360316

@LilyAndres not a bad first pass, however, within an ontology we prefer to follow the Aristotelian genus- differentia style, i.e., An A is a B, that C's. See this ontotips blog post written by Chris Mungall for some more explanation. Doing this helps to figure out what the parent class should be, in this case I think the parent class should be CHEBI:carbohydrate.

substances with the primary function of serving as an energy source for all body cells.

This seem like a good pass at the differentia (that which differentiates digestible carbohydrates from more general carbohydrates), but like I said before I'm guessing there might be some operational definition for digestible in this context. Or is it really just as simple as the distinction between carbohydrates that can an cannot be metabolized? If so by what organisms (bacteria can digest lots of carbohydrates humans can't)?
@LilyAndres would you mind adding to this thread some more of the original definition(s) presented in that Pediatric Nutrition in Practice book or others? So that we can have more information by which to write our definition.
@CropStoreDb do you have any source definitions for this that you could weigh in here?

Thanks @kaiiam, I had a look in the following references.
In the Pediatric Nutrition in Practice book the definition is as follows:

Carbohydrates which provide the body with monosaccharides are defined as ‘digestible’ (available or glycaemic)

That definition cites  Englyst et al. 2007  doi:10.1038/sj.ejcn.1602937
Checking the definition from Englyst et al. 2007, I found another definition where they called them available carbohydrates:

Available carbohydrates are those that are absorbed in the small intestine and provide carbohydrate for metabolism.

Or

Although resistant to digestion in the small intestine, non-glycaemic carbohydrates are also able to provide the body with energy through fermentation in the colon and absorption of short-chain fatty acids (SCFA) Cummings & Stephen 2007 doi:10.1038/sj.ejcn.1602936 .

@CropStoreDb we might need Ben Liu to discuss this.

Discussions with the Dr. Ben Liu concluded that the following textual definition of digestible carbohydrate is the most accurate:

Available carbohydrates are those that are absorbed in the small intestine and provide carbohydrates for metabolism.

Englyst et al. 2007
@kaiiam I'm trying to develop a logical definition from here, I'm not sure if this would work. What do you think?

Definition clean up.
Definition (A genus with two differentiae?):

A carbohydrate which is absorbed in the small intestine and provides carbohydrate for metabolism

Englyst et al. 2007
Related synonyms:

Available carbohydrate

Editor note:
Comment:

Although resistant to digestion in the small intestine, non-glycaemic carbohydrates are also able to provide the body with energy through fermentation in the colon and absorption of short-chain fatty acids (SCFA)
Cummings & Stephen 2007 doi:10.1038/sj.ejcn.1602936

@LilyAndres

A carbohydrate which is absorbed in the small intestine and provides carbohydrate for metabolism

This is better, however it could still use a little cleaning up. Notice that you use carbohydrate twice in the sentence both as the genus and as the differentia, it's better to avoid this kind of thing. Also note the grammar in provides carbohydrate for.
Noting your comment above are non-glycaemic carbohydrates part of digestible carbohydrates or not? If so that sort of think might influence how we define the term.
Are these only the carbohydrates that can be broken down within certain human organs by certain metabolic processes? Does this mean carbs that can be broken down just by human metabolic processes, or more likely with the aid of our microbial flora (which I understand do a lot of the metabolic work)? Does this include all metabolic processes conducted within the human body (by us and our flora) including fermentation in the colon and absorption of short-chain fatty acids  etc (as reflected in that comment)?
Does this only apply to Humans, not livestock (e.g., cows and their microbial flora can break down way more types of carbs then we can)? I presume our scope is only humans here but maybe that could be reflected in the label?
Perhaps (depending on the small intestine vs whole GI tract question) something more along the lines of:

A carbohydrate which can be catabolized within (any part of? or just the small intestine of) the human gastrointestinal tract (via xyz reactions?) in order to provide energy and molecules for use in anabolic processes.

Maybe a simpler version?

A carbohydrate which can be catabolized within a (human small intestine or whole GI tract).

@CropStoreDb any thoughts on the small intestine vs whole GI tract question?

Hi @kaiiam
Thanks a lot for the suggestions, we are close.

Noting your comment above are non-glycaemic carbohydrates part of digestible carbohydrates or not? If so that sort of think might influence how we define the term.

I think the previous paragraph before `Although resistant to digestion in the small intestine, non-glycaemic carbohydrates are also.....  would help.

Carbohydrates which provide the body with monosaccharides are defined as ‘digestible’ (available or glycaemic) and carbohydrates that resist digestion in the small intestine or are poorly absorbed are called ‘resistant’ (unavailable or non- glycaemic) (Englyst et al. 2007). However, although resistant to digestion in the small intestine, non-glycaemic carbohydrates are also able to provide the body with energy through fermentation in the colon and absorption of short-chain fatty acids (SCFA) (Cummings & Stephen 2007).

Also according to Cherian G., 2009, it seems that the digestion of these carbohydrates occurs mainly in the small intestine by the pancreatic amylase and di/oligosaccharidases link

Great @LilyAndres I think these are the references and details we were lacking. If I'm understanding this correctly Cummings & Stephen 2007 only refer to digestible carbs as those metabolized in the small intestine? Because those carbs that can't be digested in the small intestine are called resistant?
This fits with the Englyst et al. 2007's definition you'd mentioned earlier:

Available carbohydrates are those that are absorbed in the small intestine and provide carbohydrate for metabolism.

Can we confirm (or do we know) that the Nutritional Framework Terms (NFTs) that you want to state as being subclasses of digestible carbs are in fact absorbed in the small intestine, and not fermented in the large intestine?
Ideally we'd have classes for both resistant and digestible carbs, I see the NFTs also include non digestible carbohydrate (xref https://github.com/Southern-Cross-Plant-Science/cdno/issues/6). Does this correspond to the resistant carbs described by Cummings & Stephen 2007? Are these resistant carbs only fermented in the colon/large intestine? If so we have a clear separation. Or do your NFTs non digestible carbohydrate terms mean something different like they are a source of dietary fiber, but aren't fermented in the colon.
I take it non digestible carbohydrates don't refer to things like hay that I presume wouldn't provide dietary fiber or provide energy via fermentation? If so maybe those should be called  resistant instead of non digestible? I'm not the expert here someone please correct me if I'm missing something.

@kaiiam Sorry for my long response, I hope it's clear. I think you have important points to discuss:

If I'm understanding this correctly Cummings & Stephen 2007 only refer to digestible carbs as those metabolized in the small intestine? Because those carbs that can't be digested in the small intestine are called resistant?

Yes, that's correct.
Also, I'm thinking that it could be neccesary to add the term "in monogastric animals" in the definition, as the carbohydrate digestion in ruminant animals is through microbial fermentation in the rumen Cherian G., 2009.

Can we confirm (or do we know) that the Nutritional Framework Terms (NFTs) that you want to state as being subclasses of digestible carbs are in fact absorbed in the small intestine, and not fermented in the large intestine?

Yes, It's all correct with the terms associate it to the class "digestible carbohydrate". But I have to check the non-digestible carbohydrates: glucose derives from cellulose seems incorrect... I need to check the relationships for those terms.

Ideally we'd have classes for both resistant and digestible carbs, I see the NFTs also include non digestible carbohydrate (xref #6). Does this correspond to the resistant carbs described by Cummings & Stephen 2007?

Yes, they are also called "resistant". I think we can make a synonym? Some authors refer to them as non-digestible or resistant.

Are these resistant carbs only fermented in the colon/large intestine? If so we have a clear separation. Or do your NFTs non digestible carbohydrate terms mean something different like they are a source of dietary fiber, but aren't fermented in the colon?

Yes, I think that's how we can separate them, please have a look to the info below:
Hojsak I. 2015, defines non-digestible carbohydrates as follows (although is not the type of definition we are looking for, it might help):
Non-Digestible (Resistant) Carbohydrates Dietary Fibres: Dietary fibres are non-digestible carbohydrates mostly derived from plant sources that reach the colon nearly intact. These compounds can be further classified into soluble types of fibre, like pec- tins, and insoluble components such as cellulose. Fibres that are added to the food and have beneficial physiological effects on humans are called ‘functional fibres’. It is not completely accurate to name fibres as non-digestible, because bacteria in the large intestine ferment mostly soluble fibres. Fermented products include gases (carbon dioxide and methane), oligofructoses as well as SCFA including acetic acid, butyric acid and propionic acid. These fermentation products derive energy for certain colonic bacteria and colonic epithelia cells which use butyrate as an energy source, even when competing substrates such as glucose are available.
So just to keep the evidence here, this image from Englyst et al., 2007 captures the difference between "available carbohydrates (digestible carbohydrates)" and "resistant carbohydrates (non-digestible carbohydrates)".

I take it non digestible carbohydrates don't refer to things like hay that I presume wouldn't provide dietary fiber or provide energy via fermentation? If so maybe those should be called resistant instead of non digestible? I'm not the expert here someone please correct me if I'm missing something.

I think that makes sense. I will get in contact with the team and make a decision for renaming or leaving non-digestible carbohydrates.

add the term "in monogastric animals" in the definition
👍

Regarding Non-Digestible (Resistant) Carbohydrates

These compounds can be further classified into soluble types of fibre, like pectins, and insoluble components such as cellulose.

Do we want to make classes for soluble and insoluble non digestible carbohydrates (both as subclass to non digestible carbohydrate)? This seems to be a common topic of discussion in health forums.

It is not completely accurate to name fibres as non-digestible, because bacteria in the large intestine ferment mostly soluble fibres.

Hojsak I. 2015 seem to be saying that for the most part only the soluble fibers are fermented by bacteria in the large intestine, but maybe they are also fermenting some insoluble fibers. I'm guessing it might not matter if we're unclear about the extent to which insolube fibres are fermented, as the differentia between the fiber classes is whether or not they are water soluble.
I see that the NFTs currently have cellulose, hemicellulose, fructan, pectin and raffinose family of oligosaccharide (rfo) as non digestible carbohydrate. I presume that the first 2 are insoluble fibers and the rest soluble?
I see that under the NFT 4th level terms cellulose, hemicellulose, there a variety of sugars in the 5th level glucose, mannan, xylan, etc. My understanding is that in the NFTs these 5th level sugars are derived from the 4th level molecules (via some chemical processes in the lab) in order to get an estimate of how much energy is available? Is that correct? If not how were these derived? My question is do we actually know if for example the mannan and mannose from hemicellulose is actually being used/release/fermented by us or our gut bacteria? Or are these just estimates of how much energy could be available if we were to break these compounds down. If you guys could help me understand the theory about how/why these NFTs were created it would help to define the higher level terms ontologically. Even if the NFTs are just lab estimates of calories released from various carbohydrate bi-products it would be idea to be really clear about what you mean by digestible carbohydrate and non digestible carbohydrate, as I presume we're giving some sort of calculation or estimate of these concepts.

Great @LilyAndres this sounds good! if I could suggest just a little change the structure the sentence as A B which C's.

Carbohydrates which are absorbed in the small intestine and provide carbohydrate for metabolism in monogastric animals.

@LilyAndres be sure to check out ENVO-Robot-template-and-merge-workflow, especially the section about definitions should hopefully help you as you fill out the remaining terms in the NCF.

I'm sorry I wasn't mean to close the issue. Thanks @kaiiam, I saw the workflow, it's awesome, clear and concise, definitely helpful. I will make the definitions as 'A B which C's', after I report the formal definition.

Great @LilyAndres this sounds good! if I could suggest just a little change the structure of the sentence as A B which C's.

Carbohydrates which are absorbed in the small intestine and provide carbohydrate for metabolism in monogastric animals.

Stupendous! I copied this definition in the ROBOT template.

Thanks @kaiiam, I saw the workflow,  ... I will make the definitions as 'A B which C's', after I report the formal definition.

Awesome thanks @LilyAndres hope it can guide you.

Stupendous! I copied this definition in the ROBOT template.

Great, I guess digestible carbohydrate ended up as available carbohydrate. Did you want to make the former a synonym if people also use that term interchangeably?
Once @LilyAndres  you're finished with  available carbohydrate in the robot template go ahead and close this issue.

Great, I guess digestible carbohydrate ended up as available carbohydrate. Did you want to make the former a synonym if people also use that term interchangeably?

Yes, I think that sounds good, I added "digestible carbohydrate" as a synonym in the ROBOT Template.
Thanks, I'm closing this issue now.

@LilyAndres just make sure to add the relevant citations in the definition cross reference column.


Remove Overview tab in Groups

Fixes https://github.com/hydroshare/hydroshare/issues/3636
Pull Request Checklist:

[ ] Positive Test Case Written by Dev

[ ] Automated Testing

[ ] Sufficient User and Developer Documentation

[ ] Passing Jenkins Build

[ ] Peer Code review and approval

Positive Test Case

Log in, browse to Group and observe Overview tab is gone and Resources are listed by default

What tabs are left after this?

@alvacouch - I believe that this would leave the tab with the listing of resources that have been shared with the group and the group membership tab. I would confirm this, but HydroShare is down at the moment...


Remove pandas-gbq from testing

Replace use of pandas-gbq for pure Bigquery

[x] Closes #24

It looks like when on macOS it can't find pyarrow and the tests are failing. I've never seen anything like these. @jrbourbeau DO you know what could be happening?

Forgot to mention the macOS CI failure. This looks like a totally unrelated packaging issue (we're seeing similar things over in Dask's CI). I'm not currently able to reproduce locally -- let me rerun CI to see if the issue has already been resolved

Hmm unfortunately the macOS environment issue is still around. I'm highly confident this is unrelated to the changes in this PR (see similar things being reported in distributed here https://github.com/dask/distributed/issues/5601). Let's go ahead and merge this in for now and we can address any follow ups in subsequent PRs. FWIW I've opened this issue https://github.com/conda-forge/conda-forge.github.io/issues/1574 with the conda-forge maintainers


Add ability to change display name (title) for an extension

Is your feature request related to a problem? Please describe.

Currently we don't have a way to change the display name (title), meaning whatever is defined as name in pkg/something/package.json will be the display name (title in the UI) of such extension
Describe the solution you'd like

Decouple the display name (title in the UI) from name in pkg/something/package.json
Describe alternatives you've considered

Additional context

@aalves08 I can think you can do this by using catalog.cattle.io/display-name

e.g.
{
  "name": "harvester-manager",
  "description": "Provides the Virtualization Management feature in Rancher Manager",
  "version": "0.1.0",
  "private": false,
  "rancher": {
    "annotations": {
      "catalog.cattle.io/display-name": "Virtualization Manager"
    }
  },
  "scripts": {
    "dev": "./node_modules/.bin/nuxt dev",
    "nuxt": "./node_modules/.bin/nuxt"
  },
  "engines": {
    "node": ">=12"
  },
  "devDependencies": {
    "@vue/cli-plugin-babel": "4.5.18",
    "@vue/cli-service": "4.5.18",
    "@vue/cli-plugin-typescript": "4.5.18"
  },
  "browserslist": [
    "> 1%",
    "last 2 versions",
    "not dead"
  ]
}

Closing issue as mechanism is already in place


Remove unused recorder field

This field of the metricsConfig isn't set anywhere (and isn't exported), so it's doing nothing. Might as well simplify the code a bit by removing it.

Unrelated
/retest


Introduce a class selector

need to support div.someClass selectors

Need to extend a parser to:

Locate a class attribute
If got one - parse one class selector
If none - ignore.

Looks simple, but could be confused with ChildSelectors.
4sp, couple days


Stack array

Fixes #19
Language: Python version 3

how about append for pushing in the stack and pop the last element for pop?

Done! I also fixed a bug where the program crashed if you were trying to pop when the stack is empty. Will solve it to queue too in a minute.


Execute command failed: secret-tool lookup xdg:schema org.gnome.RemoteDesktop.RdpCredentialssecret-tool

Prerequisite: I have executed bash install.sh,
system:Ubuntu 22.04.3 LTS (GNU/Linux 5.15.0-84-generic x86_64)
issues: After I execute the urch command, the console reports the following error: Execute command failed: secret-tool lookup xdg:schema org.gnome.RemoteDesktop.RdpCredentialssecret-tool: 连接已关闭

I don't know how to solve this problem, I hope you can help me. Anyway, thank you for opening this project.

printf "{'username': <'soulteary'>, 'password': <'soulteary'>}" | secret-tool store -l 'GNOME Remote Desktop RDP credentials' xdg:schema org.gnome.RemoteDesktop.RdpCredentials
please carefully review his blog, you should be able to update your password and username with the command above.

https://soulteary.com/2023/04/11/make-ubuntu-native-remote-control-reliable-with-urch.html

我已收到您的邮件，如有需要，我会和您联系。

谢谢您的答复，问题已解决，再次感谢您的开源项目：）

Hello, I've encountered the same problem on the Ubuntu Desktop 22.04 ARM64 system. Can you please tell me how to solve it? Thank you

Hello, make sure you follow the tutorial strictly; if this problem persists, try following the tutorial again. My problem is to try the tutorial again. If the problem persists, contact me again.

UBUNTU_REMOTE_USER=admin UBUNTU_REMOTE_PASS=password urch
这么执行还是错的啊


Have some steps output as a comment

Add a new field named "comment" where the bot would add the output of a defined step as a comment.
This would happen before replying with yes/no for approvals.
For example,
A worflow does some tflinting and the approver wants to see tflint output and "terraform plan" output before allowing the workflow to proceed with the "terraform apply".

That's a really great idea, I'll add this to the backlog!

+1

Is it possible to render temporary file / step output to the issue body?
My usecase is rendering Terraform plan in the issue body for review. Previously I can render it to a PR comment but not sure how to do this with this manual approval plugin

@alex-ld As a workaround I added another step to my job where I only run terraform show -no-color plan.out (plan.out is from my previous plan step)
then I use this step's stdout in the message body:
           <details><summary>Show Plan</summary>

            ```terraform

            ${{ steps.show.outputs.stdout }}

            ```

            </details>


[NetworkControl] Moved IPFrame and UDPFrame to core

Moved some IP & UDP frame logic to core.
@pwielders not sure if that is what you meat, that's why I do a PR on a branch rather than commit

Not going to master but to other dev branch. I'll create a correct pull request


Feature powerups <feature,documentation

Add powerups in the game

Good code, but there is some room to improve with extracting variables. Also, inline if statements are not a thing you want to have in your code.
This can be fixed later.

That is alright, we should make a branch to fix these things later then.


fix(t3-env): neondb validation

#99  👈
master

This stack of pull requests is managed by Graphite. Learn more about stacking.

Join @gneiru and the rest of your teammates on  Graphite


Avoid JOINs on HFJ_RESOURCE Checking RES_TYPE and RES_DELETED_AT Columns

When searching with an _tag param, make sure that we do NOT query the HFJ_RESOURCE Table using these additional (redundant) WHERE clauses:

HFJ_RESOURCE.RES_TYPE = 'Procedure'
HFJ_RESOURCE.RES_DELETED_AT IS NULL

Similar Fix to #2909.


[FIX] fix error when shipping method name is empty

I'm not realy sure why this happens, but I already had two migrations of different shops that had an empty $data['value'] for some shipping methods. This fixes this, but probably could be improved by naming it something more specific than 'unknown'.

Hello,
thank you for creating this pull request.
I have opened an issue on our Issue Tracker for you. See the issue link: https://issues.shopware.com/issues/PT-11980
Please use this issue to track the state of your pull request.

thanks for your contribution @darookee  :+1: :tada: :blue_heart:


change name

👷 Deploy Preview for anzhenhua processing.

Name
Link

🔨 Latest commit
d03ee814554f13526b141b98d1d54d2184f53685

🔍 Latest deploy log
https://app.netlify.com/sites/anzhenhua/deploys/654a0cfa544aa10008313733


Multiple files as input of EventSource

Currently, giving more than one file as input_url to EventSource (specifically I am using the MAGICEventSource from https://github.com/cta-observatory/ctapipe_io_magic) e.g. passing a string with wildcards, throws an error (a TraitError to be precise).
Is there a way, if the logic allows, to pass more files at a time? The issue I have is that in MAGIC data files (at calibrated level; one file per subrun, and each run has multiple subruns) the pointing information from the drive reports are stored in the same file as the events, and sometimes happens that a given subrun has only one drive report available (this can happen for different reasons e.g. the subrun is too short, usually they are ~1min long and have ~7-8 reports available). This prevents to interpolate the pointing position of the events starting from the drive reports.
Therefore, if I could be able to pass all the subruns belonging to the same run to the EventSource, this problem would be no longer there. Also, this would improve the interpolation, since performing the interpolation subrun by subrun will result in extrapolation at the edges of each subrun.
Have you any suggestion on how to do this without introducing changes to the EventSource class? Or do you suggest to adopt a solution similar to ctapipe_io_lst i.e. having the possibility to give as input a file containing the pointing information from the drive reports? In the latter case it would mean for us to have a pre-processing of the files before the stage1 process (MAGIC calibrated-->DL1) to get the drive reports and create this file to give as input to the MAGICEventSource.
Thanks!

@aleberti Actually, for ctapipe_io_lst we do need to read multiple files as well, the four parallel streams of LST.
Given as input_url LST-1.1.Runxxxx.yyyyy.fits.fz, the source looks for LST-1.{2,3,4}.Runxxxx.yyyyy.fits.fz at the same path to read all files (here in parallel).
You could do the same for the magic event source, give the path to the first subrun as input_url and let the event source find the other subruns automatically.

@aleberti Actually, for ctapipe_io_lst we do need to read multiple files as well, the four parallel streams of LST.
Given as input_url LST-1.1.Runxxxx.yyyyy.fits.fz, the source looks for LST-1.{2,3,4}.Runxxxx.yyyyy.fits.fz at the same path to read all files (here in parallel).
You could do the same for the magic event source, give the path to the first subrun as input_url and let the event source find the other subruns automatically.

Ok, I did not notice that! Thank, I will try that then.

But I think the general issue is valid. The base class already makes the assumption there always has to be one input_url and that input_url refers to a single existing file (or file that can be downloaded from a url or that is in the dataset path).
That is very much ingrained in the EventSource plugin system, as that looks for an EventSource subclass that is_compatible(input_url).
Changing that is not possible I think, the design of everything is quite build around the fact that you give an input_url from which the event source to be used can be determined.
Maybe we should relax the requirements the EventSource base class is already checking:
input_url = Path(
    directory_ok=False,
    exists=True,
    help="Path to the input file containing events.",
).tag(config=True)

Requiring an existing file in the base class seems very restrictive towards what event sources can do.


Slower with big arrays?

Hi, I was wondering if we could use your fast array functions for our project. I tried running the benchmark present in the __main__ function with one of our array testarray=np.random.rand(10_000_000, 300).astype('float32') and using iterations=5. These were the results:
numpy.save: 0:00:23.873892
fastnumpyio.save: 0:00:39.867552
fastnumpyio.pack: 0:00:39.946588

Is this expected?
I think the reason could be that array.tobytes() creates a copy.
Thank you

Good diagnostic, I replaced array.tobytes() by array.data and it significantly sped up fastnumpyio.save and fastnumpyio.pack, both for large and small arrays !
Before with large arrays:
numpy.save: 0:00:11.338604
fastnumpyio.save: 0:00:18.967618
fastnumpyio.pack: 0:00:23.542093
After with large arrays:
numpy.save: 0:00:11.853167
fastnumpyio.save: 0:00:10.711883
fastnumpyio.pack: 0:00:07.997765
Before with small arrays:
numpy.save: 0:00:00.704817
fastnumpyio.save: 0:00:00.357014
fastnumpyio.pack: 0:00:00.299592
After with small arrays:
numpy.save: 0:00:00.729113
fastnumpyio.save: 0:00:00.155620
fastnumpyio.pack: 0:00:00.136568
The commit is now pushed on the repo !

Nice thank you very much for the fast response!
I wanted to show you a little benchmark I run in one of our old systems. Here the graph shows that splitting an array in multiple sub-arrays (chunks) and writing/reading each one in separate files gives more performance. I think is because of the blk-mq but I can't confirm it yet.

Knowing this, do you think it could be feasible to write every arrays in chunks as separate files and somehow bundle them together in order to treat them as a single file?

@cTatu So I better understand, it looks like you don't really care about the numpy file format itself, you just want to be able to save numpy arrays on disk and load them the fastest possible way, right ?
For people who don't care about the numpy file format itself I've added this extra .pack and .unpack function (it's even more compact and faster), but if I understand your needs right, what you would need is a .filepack function which would take parameters like: filename, array, chunksize and automatically generate:
myfile.000, myfile.001, myfile.002...
and then the corresponding .fileunpack function that would read those separate files and reconstruct a numpy array from it.
Correct ?


[ Setup/examples ] Initial Installation Issues - docker compose errors

Hello clearml team,
Congrats on the release of clearml-serving V2 🎉
I really wanted to check it out, and I'm having difficulties running the basic setup and scikit-learn example commands on my side.
I want to run the Installation and the Toy model (scikit learn) deployment example
I have a self-hosted clearml Server built with the helm chart on Kubernetes.
The environment variables of clearml-serving/docker/docker-compose.yml where defined in the myexemple.env file, and starts like this :
CLEARML_WEB_HOST="<http://localhost:8080/>"
CLEARML_API_HOST="<http://localhost:8008/>"
CLEARML_FILES_HOST="<http://localhost:8081/>"

Upon running docker-compose , both clearml-serving-inference and clearml-serving-statistics return errors:
Retrying (Retry(total=236, connect=236, read=240, redirect=240, status=240)) after connection broken by 'NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7f4065110310>: Failed to establish a new connection: [Errno 111] Connection refused')': /auth.login

I think the issue comes from the communication with the Kafka service, but I do not know how to solve this.
Has anyone encountered this issue and solved it before, since it's the default installation on the doc ?
Haven't found any related issues on any of the GitHub repos
Thanks for the help 🤖

Hi @gaspard-met
I'll try to recreate your environment and help out. When you say you have a clearml server running on Kubernetes, how is that running locally? Microk8s?
Also, do you use the experiment manager with that same server too? If so, can you share your ~/.clearml.conf file, because then we can see what URLs the experiment manager uses to connect to the server. I suspect there is a discrepancy there.

Hello @thepycoder
Confronted with the same error with clearml-serving-inference here, using minikube in kubernetes.
To reproduce:

Used minikube to create a single-node cluster;

$ minikube start --driver=docker \
--container-runtime=containerd \
--nodes=1

Used helm to create both clearml and clearml-serving;

(helm repo already added)
$ helm install clearml allegroai/clearml
$ helm install clearml-serving allegroai/clearml-serving

Seems everything works fine:

$ kubectl get po
NAME                                          READY   STATUS    RESTARTS       AGE
alertmanager-84b874c6f8-nxnqm                 1/1     Running   0              18h
clearml-apiserver-7b46876f44-gpm4v            1/1     Running   3 (8d ago)     8d
clearml-elastic-master-0                      1/1     Running   0              8d
clearml-fileserver-5c968587b4-2zmqx           1/1     Running   0              8d
clearml-k8sagent-5d468b6d47-269qp             1/1     Running   0              5d19h
clearml-mongodb-6b94888687-r4x7d              1/1     Running   0              8d
clearml-redis-master-0                        1/1     Running   1 (7d1h ago)   8d
clearml-serving-inference-85bcf97f69-w5b2b    1/1     Running   2 (171m ago)   18h
clearml-serving-statistics-6ffb8459bc-vhktv   1/1     Running   2 (171m ago)   18h
clearml-serving-triton-666f97b8d6-k8lsd       1/1     Running   2 (171m ago)   18h
clearml-webserver-7d86c649dd-txczl            1/1     Running   0              8d
grafana-84b7f5c559-wnfdx                      1/1     Running   0              18h
kafka-cb849765-7kng5                          1/1     Running   0              18h
prometheus-6f5868884b-9h5h8                   1/1     Running   0              18h
zookeeper-6795454fbf-gqfjh                    1/1     Running   0              18h

Created a cred in webserver/settings/Workspace (from a browser). Used clearml-init to configure the ~/.clearml.conf file;

# ClearML SDK configuration file
api {
    # Notice: 'host' is the api server (default port 8008), not the web server.
    api_server: http://<IP_ADDRESS>:46555
    web_server: http://<IP_ADDRESS>:38063
    files_server: http://<IP_ADDRESS>:42347
    # Credentials are generated using the webapp, http://<IP_ADDRESS>:45595/settings
    # Override with os environment: CLEARML_API_ACCESS_KEY / CLEARML_API_SECRET_KEY
    credentials {"access_key":
    ......

which I am sure is correct cuz webserver works fine. And Git examples in /clearml/examples/ works.

I tried Git examples in /clearml-serving/examples/pytorch/, and created an endpoint;

$ clearml-serving model list
clearml-serving - CLI for launching ClearML serving engine
Notice! serving service ID not provided, selecting the first active service
List model serving and endpoints, control task id=1f38787f5f7a4ab6b860532369f0aa57
Info: syncing model endpoint configuration, state hash=253e8350252883f7e599572903a5cf63
Endpoints:
{
  "test_pytorch_mnist/1": {
    "engine_type": "triton",
    "serving_url": "test_pytorch_mnist",
    "model_id": "3ed0f8563b56482eb9726230f1171ef1",
    "version": "1",
    "preprocess_artifact": "py_code_test_pytorch_mnist_1",
    "input_size": [
      1,
      28,
      28
    ],
    "input_type": "float32",
    "input_name": "INPUT__0",
    "output_size": [
      -1,
      10
    ],
    "output_type": "float32",
    "output_name": "OUTPUT__0",
    "auxiliary_cfg": null
  }
}
Model Monitoring:
{}
Canary:
{}

Then I found the serving URL cannot be reached. Checked the logs of pod clearml-serving-inference;

CLEARML_SERVING_TASK_ID=ClearML Serving Task ID
CLEARML_SERVING_PORT=8080
CLEARML_USE_GUNICORN=true
CLEARML_EXTRA_PYTHON_PACKAGES=
CLEARML_SERVING_NUM_PROCESS=2
CLEARML_SERVING_POLL_FREQ=1.0
CLEARML_DEFAULT_KAFKA_SERVE_URL=clearml-serving-kafka:9092
WEB_CONCURRENCY=
SERVING_PORT=8080
GUNICORN_NUM_PROCESS=2
GUNICORN_SERVING_TIMEOUT=
GUNICORN_MAX_REQUESTS=0
GUNICORN_EXTRA_ARGS=
UVICORN_SERVE_LOOP=asyncio
UVICORN_EXTRA_ARGS=
UVICORN_LOG_LEVEL=warning
CLEARML_DEFAULT_BASE_SERVE_URL=http://<IP_ADDRESS>:8080/serve
CLEARML_DEFAULT_TRITON_GRPC_ADDR=clearml-serving-triton:8001
Starting Gunicorn server
Retrying (Retry(total=239, connect=239, read=240, redirect=240, status=240)) after connection broken by 'NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7f9b57d87610>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution')': /auth.login
Retrying (Retry(total=238, connect=238, read=240, redirect=240, status=240)) after connection broken by 'NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7f9aefd01760>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution')': /auth.login
Retrying (Retry(total=237, connect=237, read=240, redirect=240, status=240)) after connection broken by 'NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7f9aefc207f0>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution')': /auth.login
......

Checked the endpoints.sh in the clearml-serving-inference pod with kubectl exec;

......
else
  echo "Starting Gunicorn server"
  # start service
  PYTHONPATH=$(pwd) python3 -m gunicorn \
      --preload clearml_serving.serving.main:app \
      --workers $GUNICORN_NUM_PROCESS \
      --worker-class uvicorn.workers.UvicornWorker \
      --max-requests $GUNICORN_MAX_REQUESTS \
      --timeout $GUNICORN_SERVING_TIMEOUT \
      --bind <IP_ADDRESS>:$SERVING_PORT \
      $GUNICORN_EXTRA_ARGS
fi

Seems this gunicorn app failed to communicate with something
Thanks for any help! :)

Thanks for the detailed writeup @Muscle-Oliver !
So I've taken a look and it seems like a specific parameter is missing from the helm chart.
The url http://<IP_ADDRESS>:8080/serve does not look like the correct url to connect to, most of the time in a kubernetes cluster you'd use different IP addresses than localhost.
In order to set this IP address, you'll have to edit the following parameter in the serving docker-compose yaml file:
https://github.com/allegroai/clearml-serving/blob/main/docker/docker-compose-triton-gpu.yml#L92
But it seems that the particular env var CLEARML_DEFAULT_BASE_SERVE_URL isn't exposed in the helm chart at all! So I'm adding @valeriano-manassero to the discussion as he is the maintainer of the helm charts. Using this parameter should allow you to set everything up properly :)

Thanks for the quick reply @thepycoder !
May I ask what problem it suggests by /auth.login at the end of the starting log of gunicorn?
As it goes:
Retrying (Retry(total=237, connect=237, read=240, redirect=240, status=240)) after connection broken by 'NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7f9aefc207f0>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution')': /auth.login
And, I'm just wondering whether this env just indicating the final serving url after gunicorn startup successfully, rather than some destination it now trying to connect? :smile:
Thanks for any further update :) :coffee:

Hi, I just issued a PR mentioning this issue, can you pls check it and letting me know if this is what you are expecting?

Since that change is not breaking, I just merged PR and released clearml-serving-0.4.0 .
pls let me know if this chart is good for you.

Thanks for the update @valeriano-manassero !
So, I also tried minikube start driver=none with root. And helm installed clearml-serving-0.4.0 as suggested. But everything worked out the same.
The log of pod clearml-serving-inference still goes:
Retrying (Retry(total=234, connect=234, read=240, redirect=240, status=240)) after connection broken by 'NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7ff3de505880>: Failed to establish a new connection: [Errno -2] Name or service not known')': /auth.login

which means gunicorn failed to start ? (or it did, but not working as expected)
Then I kubectl exec into the pod clearml-serving-inference, and manually executed the ``
And I used Ctrl+C to terminate the process as the above error log appeared, which produced a more detailed output:
root@clearml-serving-inference-85bcf97f69-9jsdh:~/clearml# sh clearml_serving/serving/entrypoint.sh
CLEARML_SERVING_TASK_ID=ClearML Serving Task ID
CLEARML_SERVING_PORT=8080
CLEARML_USE_GUNICORN=true
EXTRA_PYTHON_PACKAGES=
CLEARML_SERVING_NUM_PROCESS=2
CLEARML_SERVING_POLL_FREQ=1.0
CLEARML_DEFAULT_KAFKA_SERVE_URL=clearml-serving-kafka:9092
CLEARML_DEFAULT_KAFKA_SERVE_URL=clearml-serving-kafka:9092
WEB_CONCURRENCY=
SERVING_PORT=8080
GUNICORN_NUM_PROCESS=2
GUNICORN_SERVING_TIMEOUT=
GUNICORN_EXTRA_ARGS=
UVICORN_SERVE_LOOP=asyncio
UVICORN_EXTRA_ARGS=
CLEARML_DEFAULT_BASE_SERVE_URL=http://<IP_ADDRESS>:8080/serve
CLEARML_DEFAULT_TRITON_GRPC_ADDR=clearml-serving-triton:8001
Starting Gunicorn server
Retrying (Retry(total=239, connect=239, read=240, redirect=240, status=240)) after connection broken by 'NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7f5bfe7e4610>: Failed to establish a new connection: [Errno -2] Name or service not known')': /auth.login
Retrying (Retry(total=238, connect=238, read=240, redirect=240, status=240)) after connection broken by 'NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7f5b984f2520>: Failed to establish a new connection: [Errno -2] Name or service not known')': /auth.login
^CTraceback (most recent call last):
  File "/usr/local/lib/python3.9/site-packages/urllib3/connection.py", line 174, in _new_conn
    conn = connection.create_connection(
  File "/usr/local/lib/python3.9/site-packages/urllib3/util/connection.py", line 72, in create_connection
    for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM):
  File "/usr/local/lib/python3.9/socket.py", line 954, in getaddrinfo
    for res in _socket.getaddrinfo(host, port, family, type, proto, flags):
socket.gaierror: [Errno -2] Name or service not known

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/lib/python3.9/site-packages/urllib3/connectionpool.py", line 703, in urlopen
    httplib_response = self._make_request(
  File "/usr/local/lib/python3.9/site-packages/urllib3/connectionpool.py", line 398, in _make_request
    conn.request(method, url, **httplib_request_kw)
  File "/usr/local/lib/python3.9/site-packages/urllib3/connection.py", line 239, in request
    super(HTTPConnection, self).request(method, url, body=body, headers=headers)
  File "/usr/local/lib/python3.9/http/client.py", line 1285, in request
    self._send_request(method, url, body, headers, encode_chunked)
  File "/usr/local/lib/python3.9/http/client.py", line 1331, in _send_request
    self.endheaders(body, encode_chunked=encode_chunked)
  File "/usr/local/lib/python3.9/http/client.py", line 1280, in endheaders
    self._send_output(message_body, encode_chunked=encode_chunked)
  File "/usr/local/lib/python3.9/http/client.py", line 1040, in _send_output
    self.send(msg)
  File "/usr/local/lib/python3.9/http/client.py", line 980, in send
    self.connect()
  File "/usr/local/lib/python3.9/site-packages/urllib3/connection.py", line 205, in connect
    conn = self._new_conn()
  File "/usr/local/lib/python3.9/site-packages/urllib3/connection.py", line 186, in _new_conn
    raise NewConnectionError(
urllib3.exceptions.NewConnectionError: <urllib3.connection.HTTPConnection object at 0x7f5b984f27f0>: Failed to establish a new connection: [Errno -2] Name or service not known

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/lib/python3.9/runpy.py", line 197, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "/usr/local/lib/python3.9/runpy.py", line 87, in _run_code
    exec(code, run_globals)
  File "/usr/local/lib/python3.9/site-packages/gunicorn/__main__.py", line 7, in <module>
    run()
  File "/usr/local/lib/python3.9/site-packages/gunicorn/app/wsgiapp.py", line 67, in run
    WSGIApplication("%(prog)s [OPTIONS] [APP_MODULE]").run()
  File "/usr/local/lib/python3.9/site-packages/gunicorn/app/base.py", line 231, in run
    super().run()
  File "/usr/local/lib/python3.9/site-packages/gunicorn/app/base.py", line 72, in run
    Arbiter(self).run()
  File "/usr/local/lib/python3.9/site-packages/gunicorn/arbiter.py", line 58, in __init__
    self.setup(app)
  File "/usr/local/lib/python3.9/site-packages/gunicorn/arbiter.py", line 118, in setup
    self.app.wsgi()
  File "/usr/local/lib/python3.9/site-packages/gunicorn/app/base.py", line 67, in wsgi
    self.callable = self.load()
  File "/usr/local/lib/python3.9/site-packages/gunicorn/app/wsgiapp.py", line 58, in load
    return self.load_wsgiapp()
  File "/usr/local/lib/python3.9/site-packages/gunicorn/app/wsgiapp.py", line 48, in load_wsgiapp
    return util.import_app(self.app_uri)
  File "/usr/local/lib/python3.9/site-packages/gunicorn/util.py", line 359, in import_app
    mod = importlib.import_module(module)
  File "/usr/local/lib/python3.9/importlib/__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1030, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
  File "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 680, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 850, in exec_module
  File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed
  File "/root/clearml/clearml_serving/serving/main.py", line 49, in <module>
    serving_task = ModelRequestProcessor._get_control_plane_task(task_id=serving_service_task_id)
  File "/root/clearml/clearml_serving/serving/model_request_processor.py", line 1094, in _get_control_plane_task
    task = Task.get_task(task_id=task_id)
  File "/usr/local/lib/python3.9/site-packages/clearml/task.py", line 796, in get_task
    return cls.__get_task(
  File "/usr/local/lib/python3.9/site-packages/clearml/task.py", line 3523, in __get_task
    return cls(private=cls.__create_protection, task_id=task_id, log_to_backend=False)
  File "/usr/local/lib/python3.9/site-packages/clearml/task.py", line 169, in __init__
    super(Task, self).__init__(**kwargs)
  File "/usr/local/lib/python3.9/site-packages/clearml/backend_interface/task/task.py", line 152, in __init__
    super(Task, self).__init__(id=task_id, session=session, log=log)
  File "/usr/local/lib/python3.9/site-packages/clearml/backend_interface/base.py", line 145, in __init__
    super(IdObjectBase, self).__init__(session, log, **kwargs)
  File "/usr/local/lib/python3.9/site-packages/clearml/backend_interface/base.py", line 39, in __init__
    self._session = session or self._get_default_session()
  File "/usr/local/lib/python3.9/site-packages/clearml/backend_interface/base.py", line 115, in _get_default_session
    InterfaceBase._default_session = Session(
  File "/usr/local/lib/python3.9/site-packages/clearml/backend_api/session/session.py", line 207, in __init__
    self.refresh_token()
  File "/usr/local/lib/python3.9/site-packages/clearml/backend_api/session/token_manager.py", line 112, in refresh_token
    self._set_token(self._do_refresh_token(self.__token, exp=self.req_token_expiration_sec))
  File "/usr/local/lib/python3.9/site-packages/clearml/backend_api/session/session.py", line 736, in _do_refresh_token
    res = self._send_request(
  File "/usr/local/lib/python3.9/site-packages/clearml/backend_api/session/session.py", line 358, in _send_request
    res = self.__http_session.request(
  File "/usr/local/lib/python3.9/site-packages/requests/sessions.py", line 542, in request
    resp = self.send(prep, **send_kwargs)
  File "/usr/local/lib/python3.9/site-packages/clearml/backend_api/utils.py", line 85, in send
    return super(SessionWithTimeout, self).send(request, **kwargs)
  File "/usr/local/lib/python3.9/site-packages/requests/sessions.py", line 655, in send
    r = adapter.send(request, **kwargs)
  File "/usr/local/lib/python3.9/site-packages/requests/adapters.py", line 439, in send
    resp = conn.urlopen(
  File "/usr/local/lib/python3.9/site-packages/urllib3/connectionpool.py", line 813, in urlopen
    return self.urlopen(
  File "/usr/local/lib/python3.9/site-packages/urllib3/connectionpool.py", line 813, in urlopen
    return self.urlopen(
  File "/usr/local/lib/python3.9/site-packages/urllib3/connectionpool.py", line 788, in urlopen
    retries.sleep()
  File "/usr/local/lib/python3.9/site-packages/urllib3/util/retry.py", line 432, in sleep
    self._sleep_backoff()
  File "/usr/local/lib/python3.9/site-packages/urllib3/util/retry.py", line 416, in _sleep_backoff
    time.sleep(backoff)
KeyboardInterrupt

Will this help to explain the connection error? Or does Task.init() have something to do with the reported ... Connection refused')': /auth.login? I'm not sure.
Thank you for any reply!

Just a question: I see clearml.defaultBaseServeUrl in chart is still the default defaultBaseServeUrl . Did you try to change that url to point to the right endpoint?

Thanks for the helm update.
But, I'm confused now :joy:
How can I get this clearml-serving-inference to start correctly, anyway?
I can infer from the logs that the startup problem may results from some sort of connection error. But I have no idea where exactly the gunicorn was connecting to.
As @thepycoder have suggested, the CLEARML_DEFAULT_BASE_SERVE_URL might not be localhost, but some cluster IP. Then I checked all the services in the cluster, and only found one service with port 8080, which is clearml-serving-inference itself!
Does this mean the localhost is actually correct :question:
I really have no idea what is the right endpoint of the clearml.defaultBaseServeUrl.
As the clearml-serving-inference gunicorn entrypoint.sh goes:
#!/bin/bash

# print configuration
echo CLEARML_SERVING_TASK_ID="$CLEARML_SERVING_TASK_ID"
echo CLEARML_SERVING_PORT="$CLEARML_SERVING_PORT"
echo CLEARML_USE_GUNICORN="$CLEARML_USE_GUNICORN"
echo EXTRA_PYTHON_PACKAGES="$EXTRA_PYTHON_PACKAGES"
echo CLEARML_SERVING_NUM_PROCESS="$CLEARML_SERVING_NUM_PROCESS"
echo CLEARML_SERVING_POLL_FREQ="$CLEARML_SERVING_POLL_FREQ"
echo CLEARML_DEFAULT_KAFKA_SERVE_URL="$CLEARML_DEFAULT_KAFKA_SERVE_URL"
echo CLEARML_DEFAULT_KAFKA_SERVE_URL="$CLEARML_DEFAULT_KAFKA_SERVE_URL"

SERVING_PORT="${CLEARML_SERVING_PORT:-8080}"
GUNICORN_NUM_PROCESS="${CLEARML_SERVING_NUM_PROCESS:-4}"
GUNICORN_SERVING_TIMEOUT="${GUNICORN_SERVING_TIMEOUT:-600}"
UVICORN_SERVE_LOOP="${UVICORN_SERVE_LOOP:-asyncio}"

# set default internal serve endpoint (for request pipelining)
CLEARML_DEFAULT_BASE_SERVE_URL="${CLEARML_DEFAULT_BASE_SERVE_URL:-http://<IP_ADDRESS>:$SERVING_PORT/serve}"
CLEARML_DEFAULT_TRITON_GRPC_ADDR="${CLEARML_DEFAULT_TRITON_GRPC_ADDR:-<IP_ADDRESS>:8001}"

# print configuration
echo WEB_CONCURRENCY="$WEB_CONCURRENCY"
echo SERVING_PORT="$SERVING_PORT"
echo GUNICORN_NUM_PROCESS="$GUNICORN_NUM_PROCESS"
echo GUNICORN_SERVING_TIMEOUT="$GUNICORN_SERVING_PORT"
echo GUNICORN_EXTRA_ARGS="$GUNICORN_EXTRA_ARGS"
echo UVICORN_SERVE_LOOP="$UVICORN_SERVE_LOOP"
echo UVICORN_EXTRA_ARGS="$UVICORN_EXTRA_ARGS"
echo CLEARML_DEFAULT_BASE_SERVE_URL="$CLEARML_DEFAULT_BASE_SERVE_URL"
echo CLEARML_DEFAULT_TRITON_GRPC_ADDR="$CLEARML_DEFAULT_TRITON_GRPC_ADDR"

# runtime add extra python packages
if [ ! -z "$EXTRA_PYTHON_PACKAGES" ]
then
      python3 -m pip install $EXTRA_PYTHON_PACKAGES
fi

if [ -z "$CLEARML_USE_GUNICORN" ]
then
  echo "Starting Uvicorn server"
  PYTHONPATH=$(pwd) python3 -m uvicorn \
      clearml_serving.serving.main:app --host <IP_ADDRESS> --port $SERVING_PORT --loop $UVICORN_SERVE_LOOP \
      $UVICORN_EXTRA_ARGS
else
  echo "Starting Gunicorn server"
  # start service
  PYTHONPATH=$(pwd) python3 -m gunicorn \
      --preload clearml_serving.serving.main:app \
      --workers $GUNICORN_NUM_PROCESS \
      --worker-class uvicorn.workers.UvicornWorker \
      --timeout $GUNICORN_SERVING_TIMEOUT \
      --bind <IP_ADDRESS>:$SERVING_PORT \
      $GUNICORN_EXTRA_ARGS
fi

Maybe we can set this clear by reproducing the startup process of the gunicorn in the clearml-serving-inference?

I probably found the issue:
there should be some misconfiguration on apiHost value in your helm chart installation.
If they are on the same cluster they should be:
  apiHost: http://clearml-enterprise-apiserver:8008
  filesHost: http://clearml-enterprise-fileserver:8081
  webHost: http://clearml-enterprise-webserver:80

Once you will not get anymore connection errors, you can connect to the inference service simply doing a port-forward with kubectl -n clearml port-forward svc/clearml-serving-inference 8080:8080.
Let me know if this helps.

@valeriano-manassero Thanks! That's it!
Thanks to your reminder, I finally noticed that the configs of clearml-serving are all incorrect. :rofl:
Previously I installed clearml-serving via helm install [RELEASE] [CHART] command line. And All the helm charts used the default configs from values.yaml, left unchecked.
I git pull the clearml-serving repo and checked the values.yaml, which goes:
clearml:
  apiAccessKey: "ClearML API Access Key"
  apiSecretKey: "ClearML API Secret Key"
  apiHost: http://clearml-server-apiserver:8008
  filesHost: http://clearml-server-fileserver:8081
  webHost: http://clearml-server-webserver:80
  servingTaskId: "ClearML Serving Task ID"

......

where all the Host addresses don't match with my current services of clearml (I installed clearml via helm, app version 1.4.0).
The correct services should be (version 1.4.0):
clearml-apiserver:8008
clearml-fileserver:8081
clearml-webserver:80

No more connection error!

Hello, i have the same issue with connection errors.
On my Ubuntu machine:

I successfully installed clearml server and it sits on my localhost:8080

On the same Ubuntu machine i tried:

to run docker-compose from this tutorial - I wasn't able to deploy serving-inference and serving-statistics parts of this compose - they can't connect and throw /auth.login
to run inference container from toy mode tutoriall - i wasn't able to deploy it, because it can't connect and throw me /auth.login

my example.env file:
CLEARML_WEB_HOST="http://localhost:80"
CLEARML_API_HOST="http://localhost:8008"
CLEARML_FILES_HOST="http://localhost:8081"
CLEARML_API_ACCESS_KEY="IEHHDEZ3HO2MNHYX5OAZ"
CLEARML_API_SECRET_KEY="IbIAqWWAjmWcNxk6uOlFqywuBIT350Dy03II77SE2wOaiAhl8T"
CLEARML_SERVING_TASK_ID="7b94d19189b84692b1450b00037dc45d"

my conf file:
# ClearML SDK configuration file
api {
    # Notice: 'host' is the api server (default port 8008), not the web server.
    api_server: http://localhost:8008
    web_server: http://localhost:8080
    files_server: http://localhost:8081
    # Credentials are generated using the webapp, http://localhost:8080/settings
    # Override with os environment: CLEARML_API_ACCESS_KEY / CLEARML_API_SECRET_KEY
    credentials {"access_key": "IEHHDEZ3HO2MNHYX5OAZ", "secret_key": "IbIAqWWAjmWcNxk6uOlFqywuBIT350Dy03II77SE2wOaiAhl8T"}
}


Crash when adding a desktop while listening events

I also encounter this problem after pressing Win+Tab and clicking the + button.

After removing OnChangeDesktop, there is still 1% probability of crashing when operating in taskview. OnChangeDesktop increases the probability to 100%.

I have to call UnregisterPostMessageHook before adding a desktop, and call RegisterPostMessageHook after it. This can avoid crash, but inconvenient.

When we add a desktop, it will be activated automatically. I guess that when we activate and jump to a new desktop, it still "does not exist" and has not yet been initialized. I guess this is the reason for carsh.

Wow, thanks, I will try to experiment with that.
I have some crazy tests in my code, like changing desktop ~1000 times as rapidly as possible, and they encounter crashes sometimes too when I have listener enabled.
I don't like that it may crash.

Now this shouldn't crash when adding desktops.


Kebab-cased translation key warning when running just p frontend i18n

Description

When I run just p frontend i18n I get the following warnings:
➜  openverse git:(fix/prevent-axios-error-sentry) just p frontend i18n
pnpm --filter frontend run i18n

><EMAIL_ADDRESS>i18n /home/sara/projects/openverse/frontend
> pnpm i18n:create-locales-list && pnpm i18n:get-translations && pnpm i18n:update-locales

><EMAIL_ADDRESS>i18n:create-locales-list /home/sara/projects/openverse/frontend
> node src/locales/scripts/create-wp-locale-list

250 locales found in GP source code.
198 locales found in WP GP instance.
Successfully wrote locales list file to /home/sara/projects/openverse/frontend/src/locales/scripts/wp-locales.json

><EMAIL_ADDRESS>i18n:get-translations /home/sara/projects/openverse/frontend
> node src/locales/scripts/get-translations

Successfully saved English translation to en.json.
Performing bulk download.
Found kebab-cased key in translation strings: feat-name
Found kebab-cased key in translation strings: feat-state
Found kebab-cased key in translation strings: marked-licensed
Found kebab-cased key in translation strings: view-legal
Found kebab-cased key in translation strings: terms-copy
Found kebab-cased key in translation strings: creator-name
Found kebab-cased key in translation strings: read-more
Found kebab-cased key in translation strings: read-more
Found kebab-cased key in translation strings: feat-name
Found kebab-cased key in translation strings: feat-state
Found kebab-cased key in translation strings: link-api
Found kebab-cased key in translation strings: single-name
Found kebab-cased key in translation strings: creative-commons
Found kebab-cased key in translation strings: making-wordpress
Found kebab-cased key in translation strings: marked-licensed
Found kebab-cased key in translation strings: view-legal
Found kebab-cased key in translation strings: terms-copy
Found kebab-cased key in translation strings: creator-name
Found kebab-cased key in translation strings: link-api
Found kebab-cased key in translation strings: single-name
Found kebab-cased key in translation strings: making-wordpress
Found kebab-cased key in translation strings: marked-licensed
Found kebab-cased key in translation strings: view-legal
Found kebab-cased key in translation strings: terms-copy
Found kebab-cased key in translation strings: creator-name
Found kebab-cased key in translation strings: read-more
Found kebab-cased key in translation strings: read-more
Found kebab-cased key in translation strings: feat-name
Found kebab-cased key in translation strings: feat-state
Found kebab-cased key in translation strings: single-name
Found kebab-cased key in translation strings: marked-licensed
Found kebab-cased key in translation strings: view-legal
Found kebab-cased key in translation strings: single-name
Found kebab-cased key in translation strings: marked-licensed
Found kebab-cased key in translation strings: view-legal
Found kebab-cased key in translation strings: terms-copy
Found kebab-cased key in translation strings: creator-name
Found kebab-cased key in translation strings: read-more
Found kebab-cased key in translation strings: read-more
Found kebab-cased key in translation strings: feat-name
Found kebab-cased key in translation strings: feat-state
Found kebab-cased key in translation strings: marked-licensed
Found kebab-cased key in translation strings: view-legal
Found kebab-cased key in translation strings: terms-copy
Found kebab-cased key in translation strings: creator-name
Found kebab-cased key in translation strings: read-more
Found kebab-cased key in translation strings: read-more
Found kebab-cased key in translation strings: feat-name
Found kebab-cased key in translation strings: feat-state
Found kebab-cased key in translation strings: feat-name
Found kebab-cased key in translation strings: feat-state
Found kebab-cased key in translation strings: marked-licensed
Found kebab-cased key in translation strings: view-legal
Found kebab-cased key in translation strings: terms-copy
Found kebab-cased key in translation strings: creator-name
Found kebab-cased key in translation strings: link-api
Found kebab-cased key in translation strings: single-name
Found kebab-cased key in translation strings: creative-commons
Found kebab-cased key in translation strings: common-crawl
Found kebab-cased key in translation strings: making-wordpress
Found kebab-cased key in translation strings: feat-name
Found kebab-cased key in translation strings: feat-state
Found kebab-cased key in translation strings: marked-licensed
Found kebab-cased key in translation strings: view-legal
Found kebab-cased key in translation strings: terms-copy
Found kebab-cased key in translation strings: link-api
Found kebab-cased key in translation strings: single-name
Found kebab-cased key in translation strings: creative-commons
Found kebab-cased key in translation strings: common-crawl
Found kebab-cased key in translation strings: making-wordpress
Found kebab-cased key in translation strings: marked-licensed
Found kebab-cased key in translation strings: view-legal
Found kebab-cased key in translation strings: terms-copy
Found kebab-cased key in translation strings: creator-name
Found kebab-cased key in translation strings: creative-commons
Found kebab-cased key in translation strings: read-more
Found kebab-cased key in translation strings: read-more
Found kebab-cased key in translation strings: feat-name
Found kebab-cased key in translation strings: feat-state
Found kebab-cased key in translation strings: link-api
Found kebab-cased key in translation strings: single-name
Found kebab-cased key in translation strings: making-wordpress
Found kebab-cased key in translation strings: read-more
Found kebab-cased key in translation strings: creator-name
Found kebab-cased key in translation strings: link-api
Found kebab-cased key in translation strings: read-more
Found kebab-cased key in translation strings: read-more
Found kebab-cased key in translation strings: creative-commons
Found kebab-cased key in translation strings: marked-licensed
Found kebab-cased key in translation strings: view-legal
Found kebab-cased key in translation strings: terms-copy
Found kebab-cased key in translation strings: creator-name
Found kebab-cased key in translation strings: read-more
Found kebab-cased key in translation strings: read-more
Found kebab-cased key in translation strings: feat-name
Found kebab-cased key in translation strings: feat-state
Found kebab-cased key in translation strings: link-api
Found kebab-cased key in translation strings: single-name
Found kebab-cased key in translation strings: making-wordpress
Found kebab-cased key in translation strings: marked-licensed
Found kebab-cased key in translation strings: view-legal
Found kebab-cased key in translation strings: terms-copy
Found kebab-cased key in translation strings: creator-name
Found kebab-cased key in translation strings: creative-commons
Found kebab-cased key in translation strings: read-more
Found kebab-cased key in translation strings: read-more
Found kebab-cased key in translation strings: feat-name
Found kebab-cased key in translation strings: feat-state
Found kebab-cased key in translation strings: link-api
Found kebab-cased key in translation strings: single-name
Found kebab-cased key in translation strings: making-wordpress
Found kebab-cased key in translation strings: read-more
Found kebab-cased key in translation strings: read-more
Found kebab-cased key in translation strings: marked-licensed
Found kebab-cased key in translation strings: view-legal
Found kebab-cased key in translation strings: terms-copy
Found kebab-cased key in translation strings: creator-name
Found kebab-cased key in translation strings: creative-commons
Found kebab-cased key in translation strings: read-more
Found kebab-cased key in translation strings: read-more
Found kebab-cased key in translation strings: feat-name
Found kebab-cased key in translation strings: feat-state
Found kebab-cased key in translation strings: link-api
Found kebab-cased key in translation strings: single-name
Found kebab-cased key in translation strings: making-wordpress
Found kebab-cased key in translation strings: marked-licensed
Found kebab-cased key in translation strings: view-legal
Found kebab-cased key in translation strings: terms-copy
Found kebab-cased key in translation strings: creator-name
Found kebab-cased key in translation strings: feat-name
Found kebab-cased key in translation strings: feat-state
Found kebab-cased key in translation strings: link-api
Found kebab-cased key in translation strings: single-name
Found kebab-cased key in translation strings: read-more
Found kebab-cased key in translation strings: read-more
Found kebab-cased key in translation strings: creative-commons
Found kebab-cased key in translation strings: common-crawl
Found kebab-cased key in translation strings: making-wordpress
Found kebab-cased key in translation strings: marked-licensed
Found kebab-cased key in translation strings: view-legal
Found kebab-cased key in translation strings: terms-copy
Found kebab-cased key in translation strings: creator-name
Found kebab-cased key in translation strings: creative-commons
Found kebab-cased key in translation strings: link-api
Found kebab-cased key in translation strings: single-name
Found kebab-cased key in translation strings: making-wordpress
Successfully saved 199 translations.

@obulat is this caused by non-English translations that haven't had their keys updated? Should we reach out to the Polyglot team and see if there is a way to bulk transform existing keys to camel case so those strings get matched in our code again?
Reproduction

 `just p frontend i18n`

 See the logged warnings

Additional context
Marked as a high priority, interface frontend bug fix because I suppose these keys are not getting matched by our frontend, which now uses the camel case keys, meaning these translations are all getting unnecessarily ignored. @obulat if you think the prioritisation should be different, please feel free to change it.

@sarayourfriend, these warnings were added for us to watch if we still need the kebab-to-camel case replacer in the locale files: https://github.com/WordPress/openverse/pull/2433#pullrequestreview-1485211355
These keys are saved correctly as camelCase, and can be used by the frontend.


Datasource and IAM plugin

Hey  I have a question about how to configure Datasource with IAM plugin. Tried using this following configuration as DataSource:
       ds.setJdbcProtocol("jdbc:postgresql:");
       ds.setDatabasePropertyName("databaseName");
       ds.setServerPropertyName("serverName");
       ds.setPortPropertyName("port");
       ds.setUser("app_user");
//        ds.setPassword("pass");

       // Specify the driver-specific data source:
       ds.setTargetDataSourceClassName("org.postgresql.ds.PGSimpleDataSource");

       // Configure the driver-specific data source:
       Properties targetDataSourceProps = new Properties();
       targetDataSourceProps.setProperty("serverName", "x");
       targetDataSourceProps.setProperty("databaseName", "database_name");
       targetDataSourceProps.setProperty("port", "5432");
       targetDataSourceProps.setProperty("currentSchema", "schema");
       targetDataSourceProps.setProperty("ssl", "true");
       targetDataSourceProps.setProperty("sslmode", "require");
       targetDataSourceProps.setProperty(PropertyDefinition.PLUGINS.name, "iam");
       ds.setTargetDataSourceProperties(targetDataSourceProps);

       return ds;

Unfortunately no joy. It generates a token that ends up in properties under password but in a later stage in  DefaultConnectionProvider it ends up being removed and while obtaining a connection it tries to use a password instead of a token.

Hi @dron1t, thank you for raising this issue, we will look into it.

Hi,
I was writing this from home pc after hours, Now being on company laptop I  can give you a bit more information:
I'm ending up inside software.amazon.jdbc.DataSourceConnectionProvider.java:102
Up until that point copy of properties has a token inside the password. With that PropertyDefinition.removeAll(copy) it gets removed - so in line 103 the dataSource doesn't get that password set.
As seen in the commented-out code, I've tried setting up the password to some dummy value in both data source and target data source properties.

Indeed, I did observe the same behaviour.
Given javax.sql.Datasource exposes Connection getConnection(String username, String password) throws SQLException; method,
it makes sense to bind DataSourceConnectionProvider against it rather than Connection getConnection() throws SQLException;.
Whether it is Iam or SecretsManager plugin, DataSourceConnectionProvider will always have to initiate the connection on the fly with the current password so there is no alternative to the above.
So I would suggest changing
    PropertyDefinition.removeAll(copy);
    PropertyUtils.applyProperties(this.dataSource, copy);
    return this.dataSource.getConnection();

into (simplified)
    PropertyDefinition.removeAll(copy);
    PropertyUtils.applyProperties(this.dataSource, copy);
    return this.dataSource.getConnection(PropertyDefinition.USER.getString(props), PropertyDefinition.PASSWORD.getString(props));

or conditionally to the above if USER and PASSWORD are present in props

Hello @dron1t
The fix has been merged. Could you test out our snapshot build (link to snapshot doc) and let us if the issue persists.
Thank you!
(and happy new years! 🎉 )

Hi @aaronchung-bitquill. Hey sorry for the delay, I just came back from the holiday break.
It was tested positively.

Thank you, @aaronchung-bitquill, great stuff.

Thank you. We'll be closing this issue. Please feel free reach out again with any other issues you encounter. :)


Update documentation

update steps to run the s-c-s-module-launcher on standalone, docker and lattice
update recent changes into readme
Fix docker compose to use the common binding name so that time | log works

rebased, squashed, polished and merged as https://github.com/spring-cloud/spring-cloud-stream/commit/0a927b67118a5ddd00bbe0f50c970fdb919bb31e


Use triple doublequotes for python docstrings

Can you use this:
"""
Docstring.
"""

Instead of:
'''
Docstring
'''

It's also not picked up in github's syntax highlighting if you use single quotes, e.g. https://github.com/kroitor/ccxt/blob/master/ccxt/init.py#L3 it seems.

Hi! Thx, once again! Will fix this asap.

@kroitor also this is not the correct way to define utf8: https://github.com/kroitor/ccxt/blob/master/ccxt/init.py#L1
I think you should use:
# -*- coding: utf-8 -*-

Thx! ) Will fix this now as well)


Add parameter to locate profiles.yml

Currently, the default behaviour is to search for a .dbt folder in the home directory.
It would be great to have it as a parameter in the sugar_config.yml so other locations can be used.

Hi @diegodewilde thanks for trying the tool out <3.
Out of curiosity which version of dbt-sugar are you currently using?
I'm going to have to think about this particular usage because it is not really in line with how dbt advises things to be  and I'd like to be as close as possible to where we can expect those files to be.
That being said, there are a few ways in which you can override the default search. Which are exactly in line with how dbt does it being:

using the runtime CLI argument --profiles-dir (supported since the very first version of dbt-sugar)
using environment variable DBT_PROFILES_DIR (supported as of v0.1.0-a.3)

Do you buy that at all or you have a strong feeling about making this part of the sugar_config.yml?

Hi @bastienboutonnet; it seems like a very nice tool to ignore.
I'm currently using the --profiles-dir CLI argument and wasn't aware that this works with dbt-sugar as well!
Looks like I've found a solution for now! cheers
Please ignore my suggestion; I don't see any advantage to make it part of sugar_config.yml for now.
Thanks for your quick response!

Hi @bastienboutonnet; it seems like a very nice tool to ignore.
to ignore?

Glad you're on board with the decision. It is available but I haven't documented it on gitbook yet. I think doing dbt-sugar doc --help should have shown that it was available but you may not have though of that as a possibility.
I'll make an issue to update the docs because I'm sure you're not the only one with that use case in mind.

Hi @bastienboutonnet; it seems like a very nice tool to ignore.

to ignore?

Semantic issue; I thought of it like "it's too nice to ignore it" 🥇
Great; thanks for the support; I'll use dbt-sugar doc --help from now on!


Changed link text

Hello @mbernier-tester,Thank you for the PR! We will be reviewing this PR soon, in the mean                                              time, if you have not, please be sure to                                                                                sign our CLA so that we can merge your changes. Thanks again!                                             Team DX


Reopen on the Desktop does not preserve branch context

I tried to test https://github.com/microsoft/vscode-remote-repositories-github/issues/232. In the gif below, in insiders.vscode.dev I go to the branch aiday/issue159064, then I click in the command palette the 'Continue working on' command. Previously I have clicked on the option 'Clone the repository locally and open on desktop' to make a new local copy of VS Code. Insiders is opened but as can be seen in the lower left corner I am on the main branch. Perhaps I am using the feature wrong?

@aiday-mar do you happen to have the pre-release of GitHub Repositories installed locally? The intent of Reopen on the Desktop is that it reopens your insiders.vscode.dev/github folder on desktop VS Code but still in a virtual repository (i.e. not a clone onto your local filesystem).
In the GIF above it looks like what opens is an existing local clone of microsoft/vscode, likely because that was the folder that you had open in your most recently closed VS Code window. You should instead have had a new desktop VS Code window open containing the repo and branch you were just looking at.
Would you mind sharing the Remote Repositories output channel on desktop? That should contain some error about handleUri or similar.

@joyceerhl Hi thanks for your comment, I enabled the GitHub repositories as you suggested and did the steps again. It opened the right branch. I'll add the label verified to this bug.


Awesome App! Are you going to publish a new release and update the brew 🍺 ?

Hello Johannes,
This App looks awesome :) Thanks for sharing. Tobi pointed it out to me.
Are you going to publish a new release and update the brew 🍺 ?

@jmgarnier glad you like it! Thanks for the reminder, release 0.2.0 is online with the changes of @jaynetics

Thanks a lot :)


Support put method in rest client

Why are the changes needed?

We have api that need PUT method.

How was this patch tested?

[ ] Add some test cases that check the changes thoroughly including negative and positive cases if possible

[ ] Add screenshots for manual tests if appropriate

[ ] Run test locally before make a pull request

should the docs you reference be delete ?

should the docs you reference be delete ?

now the supported actions are close or cancel.
But I think that maybe we can support more actions. so, put should be better.

I'm fine with this, as it's a reserved client api to be compatible with future server feature.

thanks, merged to master


Error handling problem

See:
https://github.com/mpociot/botman/blob/master/src/Mpociot/BotMan/BotMan.php#L349
And driver-specific code (for example TelegramDriver):
https://github.com/mpociot/botman/blob/master/src/Mpociot/BotMan/Drivers/TelegramDriver.php#L205
We lose:

alse api errors
all transport (http/soocket) errors
all driver specific api-responce

Posible solution:

add exceptions for each api error
remove this https://github.com/mpociot/botman/blob/master/src/Mpociot/BotMan/BotMan.php#L351
return new object (driver-specific responce + BotMan interface)

Would you be open to a pull request for this?

Will be fixed / handled differently with #338 in place


Changes to npm linked library are not reflected to running angular cli app

Bug Report or Feature Request (mark with an x)
- [x] bug report -> please search issues before submitting
- [ ] feature request

Versions.
@angular/cli: 1.4.3
node: 8.4.0
os: darwin x64
@angular/animations: 4.4.3
@angular/common: 4.4.3
@angular/compiler: 4.4.3
@angular/core: 4.4.3
@angular/forms: 4.4.3
@angular/http: 4.4.3
@angular/platform-browser: 4.4.3
@angular/platform-browser-dynamic: 4.4.3
@angular/router: 4.4.3
@angular/cli: 1.4.3
@angular/compiler-cli: 4.4.3
@angular/language-service: 4.4.3
typescript: 2.3.4
Repro steps.

Generate my-project with angular-cli.
Clone any-lib from https://github.com/synctom/any-lib
Go to the any-lib package folder and npm install & npm link
Go to my-project and run: npm link any-lib
Open my-project/src/app/app.module.ts and paste this after the last import:

import { MyService } from 'any-lib';

const service: MyService = new MyService();

console.log(service.doSomething());

Run any-libwith npm start
Run my-project with ng serve
All good
Try to add a new function to MyService and try to call it in app.module.ts
Function could not be found, unless you stop ng serve and execute it again.

My solution so far
It's a caching issue located in a Webpack plugin that compiles the angular code.
Check @ngtools/webpack/src/plugin.js in the node_modules folder of your cli application.
Just remove or uncomment:
this._compilerHost.enableCaching();
After then, it works.
see https://github.com/angular/angular-cli/issues/6195

Heya, this seems to be a duplicate of #6195 (you even linked in in your comment). I appreciate your detailed reproduction but it's much better to keep the conversation in the same thread instead of having multiple issues for the same thing.
The solution you propose is not correct. Caching is essential for rebuild performance. It would drastically slow down rebuilds.

maybe package locked by npm.   remove package-lock.json


Error when multiple files listed in KUBECONFIG env-variable

The KUBECONFIG env-variable supports multiple files (separated by :). The kubernetes library supports this, but powerline-kubernetes does it's own thing when loading the context, and doesn't handle multiple files.

I have a working patch on my fork, MR #22
to start using it right away while the MR is not merged:
pip uninstall powerline-kubernetes
pip install https://github.com/wwmoraes/powerline-kubernetes/tarball/master#egg=powerline-kubernetes


Fix: jsonErrorReplacer to use explicit Error type

Description
This PR refactors the jsonErrorReplacer function to use explicit Error casting, improving type safety and preventing potential errors.
Changes
In the src/handler.ts file, the jsonErrorReplacer function contains an argument val with a type of any. However, the function also includes a type check val instanceof Error, which allows for a safe cast to the Error type. To leverage this type information, we can introduce a type cast using the as keyword, assigning the casted value to a new variable error. This refinement enables the TypeScript compiler to accurately infer the type of error and eliminates any potential type errors.

This looks good! Am wondering why TS didnt infer this type cast due to the narrowing. 🤔

Thank you! Yes, sometimes you can't depend on a machine, lol

Maybe if val was unknown rather than any it would work?

:tada: This PR is included in version 1.22.2 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Fixed a link

Hello there! I was checking out this repository and found that you had an outdated link for MagicaVoxel in the README. This pull request fixes that. Thanks!

Thanks for the contribution! LGTM


[jvm-packages] Leverage the Spark ml API to read DataFrame from files in LibSVM format.

Currently the way SparkWithDataFrame.scala reads data in LibSBM format is still calling the old API MLUtils.loadLibSVMFile from mllib pakcage, which is causing the following errors with Spark 2.0:
User class threw exception: java.lang.IllegalArgumentException: requirement failed: Column features must be of type org.apache.spark.ml.linalg.VectorUDT@3bfc3ba7 but was actually ArrayType(FloatType,true).

A cleaner way of reading DataFrame from files in LibSVM format is to leverage the Spark ml API, as proposed in this PR, which is also more intuitive for folks who are interested to learn XGBoost with Spark 2.0.
The change proposed in this PR has been successfully tested on Spark 2.0.0 hosted on a cluster managed by Hadoop 2.6 (Yarn).

thanks to the contribution, it LGTM, will merge it once Travice CI done

@tqchen would you please help to merge this? there are some problems in travis....


Patient Management

🚀 Feature Proposal

Need a way to be able to check a patient in for their appointment,
Then be able to facilitate the appointment,
Then mark the appointment complete,
Then be able to view information about the appointment at a later date.

We would develop some sort of "patient/appointment workflow" that allows these actions to facilitated.
Currently, HospitalRun v1 has a similar feature and it is executed through the Patient's module. There is the ability to checkin, checkout, discharge

@jackcmeyer would you then also need a view of some sort to see all currently admitted patients ?


Using alias for the same field, includes only the last field in the query

Hello. I cloned the example repo and was able to replicate it.
Just went into the EmployeeList.tsx file and as a test added these rows:
const test = query$ .findEmployees(employeeConnection$.totalCount, option => option.alias("first")) .findEmployees(employeeConnection$.totalCount, option => option.alias("second")) .findEmployees(employeeConnection$.totalCount, option => option.alias("third")) console.log(test.toString())
Expected output of the console log is:

But I get

The aliases "first" and "second" didn't show up in the query.
Is this an issue on the way I construct the query or a bug?
If i try it in GraphiQl, the expected syntax is correct.

Hi RestinGreen
Please use v3.1.7 to validate it, if no problem, please close it

In the meantime 3.1.8 was out and i tested it with that version.
The bug is fixed.
Thank you! Closing it.


fix: skaffold profile three orgs

Description
Fixes FL-1705
How has this been tested?

Checklist

[x] changelog was updated with notable changes
[ ] documentation was updated

/e2e --tests docs
To test, these are the e2e tests that are using this profile

End to end tests: :hourglass_flowing_sand: STARTING

Ok, so we have the three-orgs profile that does not support the skaffold last version, while the other profiles are not compatible with the previous version. Which skaffold version should be supported?

Ok, so we have the three-orgs profile that does not support last version from skaffold, while the other profiles are not compatible with the previous version. Which skaffold version should be supported?

I guess the latest possible ? Is it possible to upgrade the three orgs profile to match the latest skaffold ?


Release Notes: 1.12.0

Should the documentation repo be included in the release components list?

Yes, please add the docs repo. Other wise this looks good to go.


Fix JSON parse on header in docs-client

Motivation:
When I try to use docs-client to simply test my API, I found that there
is a bug validation on header is not properly working.
I found that there is an error in onSubmit method. Armeria invokes
JSON.parse method to validate and parse user input header, but it does
not passed to conditional branch.
Modification:
I correct parsedHeader in checking branch onSubmit method.

I think this PR can resolve #1622 issue.

 Thank you for your submission, we really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.

While I sending this PR, I know that, had code been fixed?

Thank you for this.
But, I think I have fixed this bug in #1667 so from 0.83.0 the bug seems gone. Could you check it out with the latest version, please?

@minwoox It seems fixed, but I will.

Thanks a lot @JunoJunho and we really appreciate your enthusiasm for finding and fixing a bug.

@JunoJunho Could you fix the conflict?

As @minwoox said, this issue has been fixed already, so let me close this. Thanks a lot for trying to help us, @JunoJunho. Let us look forward to your next pull request. :wink:


How detect inProgress

Is posible detect change progress?  with values newValue, oldValue, for determinate direction

@webserveis you can call this method
public synchronized int getProgress(){
return progress;
}


Add: Faq page

Closes #23
https://github.com/ritika728/Wellness_Wave/assets/114663382/1404e0f9-ed7c-4dae-ba94-f432f6a748cd
Please add JWoC tag!

@AaadityaG please add a heading: 'Frequently Asked Questions' between the two boxes

@AaadityaG Thank you for your contribution! 🚀


[REQ] add a (GH-compliant) license file

Hi there, happy 2024 !
Since we've "doxed" it in our HyMPS project (under the VIDEO \ Tools \ Encoders subsection), can you add a license file please ?
As you probably already know, expliciting licensing terms is extremely important to let other devs - and not only - understand how to reuse/adapt/modify your code in other open projects and vice-versa.
Although it may sounds like a minor aspect, license file omission obviously causes an inconsistent generation of the relative badge too:

(badge-generator URL: https://flat.badgen.net/github/license/pigpeppa/xin26x/?label=LICENSE)
Anyway you can easily set a "compliant" one through the GH's license wizard tool.
Last but not least, let us know how - in your opinion - we could improve categorization/sorting of collected projects in order to push their evolution by favouring collaborations between developers (and not only).
Thanks in advance.

ok. I will deal with it soon.

it is fixed now.


Add 'leave' button to room settings

https://github.com/vector-im/vector-android/commit/2407680d7b37349021b06255b18020f5074109cd


Task list should show the task start time and end time

User Story:
As a user, I want to see the task start time and due time  from the task list
so that I know clearly when should I do the task

Acceptance Criteria:

Tasklist shows the task start time and end time

I think that showing the start time is sufficient, as that is more important to the user than the end time.


Qiskit dependency needs update

Current qiskit dependency is set to ^0.27.0.

latest version of qiskit is 0.34.2
Installing qiskit-optimization leads to the following version error:

ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.
qiskit 0.27.0 requires qiskit-terra==0.17.4, but you have qiskit-terra 0.19.2 which is incompatible.
qiskit-aqua 0.9.2 requires docplex<=2.20.204; sys_platform != "darwin", but you have docplex 2.22.213 which is incompatible.

We should:

Update qiskit dependency.
Possibly look to automate dependency updates with renovate

Hey @erichulburd this PR should fix this issue: https://github.com/rigetti/qiskit-rigetti/pull/26


visibleInShowHideMenu: false has no effect on "Show all columns"

mantine-react-table version
2.0.0-beta.6
react & react-dom versions
18.2.0
Describe the bug and the steps to reproduce it

Disable a column from the show/hide menu via visibleInShowHideMenu: false.
Set the column to default hidden with columnVisibility in initialState. (not necessar but easier to reproduce with this step)
Click "Show all columns"

All columns appear, including the one that is not visible in the show/hide menu.
I would expect the disabled column (in the stackblitz example below, I chose name.firstName) to remain hidden, as the user cannot turn it back off, except by clicking "hide all".
As a background to why I am using this option, I want to sort the table by creation date but not show creation date to the user. If I disable sorting for creation date, the table can't be sorted by that column, so I have the column always hidden in the background, with no ability to show it. This works perfectly, until you click "show all".
Minimal, Reproducible Example - (Optional, but Recommended)
https://stackblitz.com/edit/github-rat1cb?file=src%2FTS.tsx
Screenshots or Videos (Optional)

Do you intend to try to help solve this bug with your own PR?
No, because I do not have time to dig into it
Terms

[X] I understand that if my bug cannot be reliably reproduced in a debuggable environment, it will probably not be fixed and this issue may even be closed.

Hi, please confirm this still happens with the latest beta

Hi there, upon looking into this, I do not think it is a bug. The visibleInShowHideMenu only refers to the menu, not to the column being hidden/unhidden. If you wan to prevent the column from being unhidden but keeping it for sorting you can:

Do the sorting ouside of the table (should be pretty easy if you're doing server-side pagination and using somethin like TanStack Query)
If 1. does not suit, you can attach your own onColumnVisibilityChange callback and prevent your column from bein unhidden.


yarn: Add yarn berry

[ ] Move yarn to yarn1
[ ] Add yarn based on https://github.com/yarnpkg/berry

See #5231


Improve AcmeDemoBundle

This PR is related to #198. The general idea is:

Remove any trace of AcmeDemoBundle from the Symfony Standard Edition. When you use the Symfony Installer or the Composer's create-project command, you will get a fresh, clean and empty Symfony application.
Update and improve the existing AcmeDemoBundle for a new Symfony Demo distribution that Symfony newcomers can download to check out Symfony features.

In this PR, I propose to update/improve AcmeDemoBundle. I want to update all its code to comply with Symfony's Best Practices and, when necessary, I want to add new features and better examples.
Since I don't know if @fabpot and the rest of Symfony deciders agree with this idea, I've just committed the first change: transform AcmeDemoBundle into DemoBundle and remove the Acme vendor. If you don't agree, please close this PR. If you agree, I'll commit the rest of changes soon. Thanks.

Nice proposal, I agree with @javiereguiluz !

I have same opinion. Agree!

Genial propuesta

+1

+1

+1

+1

Do we want to get rid of AcmeDemoBundle and create a Demo Distribution? If that's the case, then we might want to rename AcmeDemoBundle into AppBundle.

Is great, by the way, laravel have a command fresh to remove demo app and clean installation.

:+1:

I'm closing this PR because instead of improving AcmeDemoBundle, we're going to remove it entirely (I'll send another PR soon). We decided to take a different approach and build a complete demo application  instead of a bundle. We'll introduce the Symfony Demo Application soon, but the code is already available at: https://github.com/symfony/symfony-demo


Symfony 3.0 support

Do you intend to add support for Symfony 3 or would you welcome a PR for that?

Yes and Yes


Could not find package duxphp/duxravel with stability stable.

what？

The official version has not been released yet, internal projects will be released after they go online, you can use the dev version


persistent history implementation

This is a successor to #309 and relates to the datastore discussion on #343.
In order to compete with Slack and Mattermost, we should have some kind of facility for persistent, searchable logs that can be viewed through a web interface, queried with CHATHISTORY, and potentially made available for full-text search. Options:

Support logging traffic directly into files, which can then be served by an ordinary web server
Support storing messages in a persistent (non-buntdb) datastore

Closed in #792


Query string support

Hi, I am interfacing with a graphql client (Statamic/Laravel) that supports "preview mode" by way of a query string
Standard request
http://myapi.com/graphql
Preview mode request
http://myapi.com/graphql?token=123456
would it be possible to add these params without needing to redefine the url?, similar to how you can with headers
was thinking something like this would be possible, but it doesnt appear to be the case. thanks!
createClient({ params: { token: "1234" } })

You can use a custom fetcher: https://genql.vercel.app/docs/usage/create-the-client#using-a-custom-fetcher

thanks @remorses , for my situation i am trying to include some additional confidence that the endpoint is the same as the one that was used for the generate command
custom fetcher would totally work, i wonder would it be possible perhaps to include the endpoint in the generated exports so something like this was possible?
import { createClient, endpoint } from './generated_dir'

const client = createClient({
    url: `${endpoint}?token=${myToken}`,
})

thanks again!

you can pass the url to the client with any query string you want but it must be an absolute url


Document use of self-signed certificates

After host name and cert validation has been turned on for Opencast's HTTPS
client, the use of self-signed certificates got slightly more involved.
References:

https://github.com/opencast/opencast/security/advisories/GHSA-44cw-p2hm-gpf6
https://github.com/opencast/opencast/commit/4225bf90af74557deaf8fb6b80b0705c9621acfc
https://groups.google.com/a/opencast.org/g/users/c/o1V9Vrt6oNQ/m/XoKUJl7wCQAJ

Your pull request should…

[X] have a concise title
[X] close an accompanying issue if one exists
[X] be against the correct branch (features can only go into develop)
[X] include migration scripts and documentation, if appropriate
[x] pass automated tests
[X] have a clean commit history
[X] have proper commit messages (title and body) for all commits

Insane how different the Markdown converters behave:

Now looks okay, I think.

Insane how different the Markdown converters behave:

Now looks okay, I think.


Issue 59 harmonize commands

Changes needed to restructure the bin/tagpack-tool main commands. Three files were modified to comply with the suggestions of flake8 (bin/tagpack-tool, tagpack/tagpack.py, tagpack/tagstore.py)

Did you use the version of the last commit? confidence command shouldn't exist anymore (now it's integrated with taxonomy)

Did you use the version of the last commit? confidence command shouldn't exist anymore (now it's integrated with taxonomy)

No, I had a version before that commit.
Just updated and checked

taxonomy show/insert confidence

Looking good :thumbsup:

Thanks for the detailed comments, maybe we can open another issue to address the consistency of the commands (i.e. the default actions).
The string concatenations were introduced to comply with the style guides recommended by flake8, and I think it's just about coding preferences. The problem with the approach in the link you suggest is that splitting strings that way will introduce undesired tabs (\t) to the resulting string (e.g. when used inside a function). I prefer the concatenation of strings either like:
s = "Very long"
s += " message"

or:
s = "Very long" \
    " message"

But again, I think it's just about preferences, feel free to change them back.

Thank you for the work you put in to harmonize the tools interface.
Sure sounds good. Lets open another issue to harmonize the default actions.
Regarding the string concatenations, sure it's a preference. I was just wondering why you have chosen this particular explicit concatenation style, its verbose in my opinion. Regarding the tabs, I should have mentioned the answer I meant (see comment of Stevoisiak). My intention was to use:
s =  ("Very long"
        " message")

Python does automatic string literal concatination ref. I think it's a pretty clean and quick way to split strings in python.