Utilizing --verbose flag from bundle

Report
Quick Note:
This less of a bug report and more of a feature request for more output if the --verbose flag is passed to bundler. Danger was working on some of our PRs, but not others, so I assume it might be something in our own configuration. I was hoping to be able to see what the out put to Github would have been so I could maybe identify the UnprocessableEntity it was complaining about.
Either way, thanks! Danger has been a very helpful tool. 👍
What did you do?
Ran bundle exec danger / bundle exec danger --verbose from Travis.
What did you expect to happen?
ℹ Please replace this with what you expected to happen.
Expected it to run danger and report back to the Github PR.
What happened instead?
ℹ Please replace this with of what happened instead.
Received an UnprocessableEntity error from Octokit:
2.56s$ bundle exec danger --verbose
/home/travis/.rvm/gems/ruby-2.3.1/gems/octokit-4.6.2/lib/octokit/response/raise_error.rb:16:in `on_complete': POST https://api.github.com/repos/localmotors/forth/pulls/340/comments: 422 - Validation Failed (Octokit::UnprocessableEntity)
Error summary:
  resource: PullRequestReviewComment
  code: invalid
  field: position // See: https://developer.github.com/v3/pulls/comments/#create-a-comment
	from /home/travis/.rvm/gems/ruby-2.3.1/gems/faraday-<IP_ADDRESS>/lib/faraday/response.rb:9:in `block in call'
	from /home/travis/.rvm/gems/ruby-2.3.1/gems/faraday-<IP_ADDRESS>/lib/faraday/response.rb:61:in `on_complete'
	from /home/travis/.rvm/gems/ruby-2.3.1/gems/faraday-<IP_ADDRESS>/lib/faraday/response.rb:8:in `call'
	from /home/travis/.rvm/gems/ruby-2.3.1/gems/octokit-4.6.2/lib/octokit/middleware/follow_redirects.rb:73:in `perform_with_redirection'
	from /home/travis/.rvm/gems/ruby-2.3.1/gems/octokit-4.6.2/lib/octokit/middleware/follow_redirects.rb:61:in `call'
	from /home/travis/.rvm/gems/ruby-2.3.1/gems/faraday-<IP_ADDRESS>/lib/faraday/rack_builder.rb:139:in `build_response'
	from /home/travis/.rvm/gems/ruby-2.3.1/gems/faraday-<IP_ADDRESS>/lib/faraday/connection.rb:386:in `run_request'
	from /home/travis/.rvm/gems/ruby-2.3.1/gems/faraday-<IP_ADDRESS>/lib/faraday/connection.rb:186:in `post'
	from /home/travis/.rvm/gems/ruby-2.3.1/gems/sawyer-0.8.1/lib/sawyer/agent.rb:94:in `call'
	from /home/travis/.rvm/gems/ruby-2.3.1/gems/octokit-4.6.2/lib/octokit/connection.rb:154:in `request'
	from /home/travis/.rvm/gems/ruby-2.3.1/gems/octokit-4.6.2/lib/octokit/connection.rb:28:in `post'
	from /home/travis/.rvm/gems/ruby-2.3.1/gems/octokit-4.6.2/lib/octokit/client/pull_requests.rb:211:in `create_pull_request_comment'
	from /home/travis/.rvm/gems/ruby-2.3.1/gems/danger-4.3.1/lib/danger/request_sources/github/github.rb:316:in `block in submit_inline_comments_for_kind!'
	from /home/travis/.rvm/gems/ruby-2.3.1/gems/danger-4.3.1/lib/danger/request_sources/github/github.rb:331:in `reject!'
	from /home/travis/.rvm/gems/ruby-2.3.1/gems/danger-4.3.1/lib/danger/request_sources/github/github.rb:331:in `submit_inline_comments_for_kind!'
	from /home/travis/.rvm/gems/ruby-2.3.1/gems/danger-4.3.1/lib/danger/request_sources/github/github.rb:243:in `submit_inline_comments!'
	from /home/travis/.rvm/gems/ruby-2.3.1/gems/danger-4.3.1/lib/danger/request_sources/github/github.rb:153:in `update_pull_request!'
	from /home/travis/.rvm/gems/ruby-2.3.1/gems/danger-4.3.1/lib/danger/danger_core/dangerfile.rb:247:in `post_results'
	from /home/travis/.rvm/gems/ruby-2.3.1/gems/danger-4.3.1/lib/danger/danger_core/dangerfile.rb:277:in `run'
	from /home/travis/.rvm/gems/ruby-2.3.1/gems/danger-4.3.1/lib/danger/danger_core/executor.rb:27:in `run'
	from /home/travis/.rvm/gems/ruby-2.3.1/gems/danger-4.3.1/lib/danger/commands/runner.rb:66:in `run'
	from /home/travis/.rvm/gems/ruby-2.3.1/gems/claide-1.0.1/lib/claide/command.rb:334:in `run'
	from /home/travis/.rvm/gems/ruby-2.3.1/gems/danger-4.3.1/bin/danger:5:in `<top (required)>'
	from /home/travis/.rvm/gems/ruby-2.3.1/bin/danger:23:in `load'
	from /home/travis/.rvm/gems/ruby-2.3.1/bin/danger:23:in `'
	from /home/travis/.rvm/gems/ruby-2.3.1/bin/ruby_executable_hooks:15:in `eval'
	from /home/travis/.rvm/gems/ruby-2.3.1/bin/ruby_executable_hooks:15:in `'
The command "bundle exec danger --verbose" exited with 1.
Done. Your build exited with 1.

Your Environment

Which CI are you running on: Travis
Are you running the latest version of Danger? Yes, 4.3.1
What is your Dangerfile?

require 'open3'

# Add lm-dev link
message "View this on LM-Dev at https://#{github.branch_for_head}.lm-dev.com"

# Check for PR status labels
has_status_label = false
github.pr_labels.each do |label|
  has_status_label = true if label.start_with?('STATUS:')
end
warn "Please use a STATUS label on this PR to reflect its status" if !has_status_label

# Does pull add migrations?
are_migrations_added = false
git.added_files.each { |fn| are_migrations_added = true if fn.include?('/migrations/') }

# Any model changes that don't have migrations?
Open3.popen3('git status --porcelain') do |stdin, stdout, stderr, wait_thr|
  exit_status = wait_thr.value
  unmade_migrations = false
  stdout.readlines.each do |line|
    unmade_migrations = true if line =~ /\?\? .*\/migrations\//
  end

  fail "There are model changes without committed migrations. Run `makemigrations`" if unmade_migrations
end

# package.json updated without yarn.lock?
if git.modified_files.include?('forth/package.json') && !git.modified_files.include?('forth/yarn.lock')
  fail "package.json modified without Yarn lockfile regenerated. Run `yarn`"
end

# Python linter
python_files = (git.added_files + git.modified_files).select{ |file| file.end_with? 'py' }.uniq
python_files.reject! { |file| file.match(/migrations\/\d+_auto_/) != nil }   # Don't lint auto migrations
if !python_files.empty?
  flake8 = "flake8 --ignore=E501,E221,E241 #{python_files.join(' ')}"
  Open3.popen3(flake8) do |stdin, stdout, stderr, wait_thr|
    exit_status = wait_thr.value

    stdout.readlines.each do |line|
      filename, lineno, pos, lint = line.split(':', 4)
      lint.strip!
      if lint =~ /^F\d\d\d /
        fail "(flake8) #{lint}", file: filename, line: lineno
      else
        warn "(flake8) #{lint}", file: filename, line: lineno
      end
    end
  end
end

This sounds like a good idea, I wonder if we can wrap the parts of commenting on an issue with our own error handler that provides more info.

It error caused me too.
I tried to find the cause, but I could not found because of no more information.
I want to be able to see the error detail, and also I want to not fail to the CI job.
I propose the solution, the code will change like below. How about this? @orta
if matching_comments.empty?
- client.create_pull_request_comment(ci_source.repo_slug, ci_source.pull_request_id,
-     body, head_ref, m.file, position)
+ begin
+   client.create_pull_request_comment(ci_source.repo_slug, ci_source.pull_request_id,
+       body, head_ref, m.file, position)
+ rescue Octokit::UnprocessableEntity => e
+   // TODO show some error detail. ex. body, file, head_ref, and position
+   // sorry I don't know how to ouput logs in Danger project...
+
+   next false // next false(=not reject) because this comment has not completed
+ end
else
  # Remove the surviving comment so we don't strike it out

That does sound good - I think in Danger we just use puts ( or maybe Cork ) - that is fine. Yeah, this seems like a good idea to me @litmon 👍

Thanks😄 I will make the Pull Request.


autobahn is being installed using the legacy 'setup.py install' method

In a minimal container I'm building I hit:
DEPRECATION: autobahn is being installed using the legacy 'setup.py install' method, because it does not have a 'pyproject.toml' and the 'wheel' package is not installed. pip 23.1 will enforce this behaviour change. A possible replacement is to enable the '--use-pep517' option. Discussion can be found at https://github.com/pypa/pip/issues/8559

Can this project be updated to contain a pyproject.toml and have wheels up at https://pypi.org/project/autobahn/#files

sure: https://pypi.org/project/autobahn/

I'll confess a bit of puzzlement at this being closed with just that link...

yeah, sorry, I'm just personally fed up with / don't care about distro packaging.
I had a quick look though, and it seems I forgot: we do have wheels and publish those
https://github.com/crossbario/autobahn-python/blob/a99ff5dd4e54595bd13ffdcf92d72e0737246e38/deploy.sh#L28
https://github.com/crossbario/autobahn-python/blob/a99ff5dd4e54595bd13ffdcf92d72e0737246e38/.github/workflows/deploy.yml#L79
just not to PyPI. for other reasons, above wheel deployment target isn't required anymore, and best would probably indeed be publishing wheels to PyPI.
since the Python wheel packaging requires building wheels per-target, this will then lead to even more work. I'll reopen the package, maybe someone fixes it ..

fwiw, as you mentioned docker, those are readily available herehttps://hub.docker.com/r/crossbario/autobahn-python/tags


[FEATURE] full examples with some known models from the HF in a Collab Notebook

Is your feature request related to a problem? Please describe.
For example I cannot get HF Bert working. I don't know when I can use your project
import bminf
import torch

encoded_input_cpu = tokenizer(text, return_tensors='pt').to('cpu')
model = BertModel.from_pretrained("bert-base-uncased").to('cpu')
# apply wrapper
with torch.cuda.device(0):
    model = bminf.wrapper(model.to('cpu'))
    with print_time_delta('generate'):
      output = model(**encoded_input_cpu)

Describe the solution you'd like
Can you provide full examples with some known models from the HF in a Collab Notebook?
Describe alternatives you've considered

Upgrade BMInf to version 2.0.1 and try the examples in example/huggingface.

Wonderful!
The quantization is not supported right, some check breaks in HF.
I cannot load GPT-J on Collab, but gpt2-large seems to load into 8GB VRAM.
Is that right?

Yes, and I can fit it into much less also, even 4gb. Nice!

How much more would the quantization help? And is it feasible?

Quantization reduces memory usage by half, and doubles the speed of inference when the model is very large.
BMInf provides a way to automate quantization (by replacing the linear layer with a quantized linear layer), although this approach can affect model performance.

Doubling is a lot!
The problem is that setting quantization to True on GPT-2 HF model will cause an exception during text generation. Is there a way to prevent that?
The attention mask and the pad token id were not set. As a consequence, you may observe unexpected behavior. Please pass your input's `attention_mask` to obtain reliable results.
Setting `pad_token_id` to `eos_token_id`:50256 for open-end generation.
---------------------------------------------------------------------------
AssertionError                            Traceback (most recent call last)
[<ipython-input-7-d73609974428>](https://localhost:8080/#) in <module>
      1 prompt = "To be or not to be, that"
      2 input_ids = tokenizer(prompt, return_tensors="pt").input_ids
----> 3 gen_tokens = model.generate(
      4     input_ids.cuda(),
      5     do_sample=True,

8 frames
[/usr/local/lib/python3.8/dist-packages/cpm_kernels/kernels/gemm.py](https://localhost:8080/#) in gemm_int8(m, k, n, batchA, batchB, aT, bT, A, B, out, stream)
    137     device.use()
    138
--> 139     assert m % 4 == 0 and n % 4 == 0 and k % 4 == 0
    140     assert batchA == batchB or batchA == 1 or batchB == 1
    141

AssertionError:

The problem you are encountering is probably because the GEMM kernel for int8 needs the input matrix size to be a multiple of 4.

Ok, so this is about the internal dimension of the model? If yes, then there isn't much to do about this right?

No, it is about the batch size. Right, it seems to work now.

oh! i meet the same problem now.  how do you soloved it ?


⚠ Bofrost.lu has degraded performance

In b88fb85, Bofrost.lu (https://www.bofrost.lu) experienced degraded performance:

HTTP code: 200
Response time: 2521 ms

Resolved: Bofrost.lu performance has improved in fd6745a after 20 minutes.


Error in metadata[, matching_columns]:

I runned this script:
library(readr)
library(ggpicrust2)
library(tibble)
library(tidyverse)
library(ggprism)
library(patchwork)
Load necessary data: abundance data and metadata
abundance_file <- "pred_metagenome_unstrat.tsv"
metadata_2 <- read_delim(
"metadata.txt",
delim = "\t",
escape_double = FALSE,
trim_ws = TRUE
)
rm(metadata_2)
Run ggpicrust2 with imported data.frame
abundance_data <- read_delim(abundance_file, delim = "\t", col_names = TRUE, trim_ws = TRUE)
Run ggpicrust2 with input data
results_data_input <- ggpicrust2(data = abundance_data,
metadata = metadata,
group = "Traitement", # For example dataset, group = "Environment"
pathway = "KO",
daa_method = "LinDA",
ko_to_kegg = TRUE,
order = "pathway_class",
p_values_bar = TRUE,
x_lab = "pathway_name")
but I got this error : Starting the ggpicrust2 analysis...
Converting KO to KEGG...
Processing provided data frame...
Loading KEGG reference data. This might take a while...
Performing KO to KEGG conversion. Please be patient, this might take a while...
|============================================================================| 100%
KO to KEGG conversion completed. Time elapsed: 10.02 seconds.
Removing KEGG pathways with zero abundance across all samples...
KEGG abundance calculation completed successfully.
Performing pathway differential abundance analysis...
Sample names extracted.
Identifying matching columns in metadata...
Matching columns identified: NA . This is important for ensuring data consistency.
Using all columns in abundance.
Converting abundance to a matrix...
Reordering metadata...
Error in metadata[, matching_columns]:
! Can't subset columns with matching_columns.
✖ Subscript matching_columns can't contain missing values.
✖ It has a missing value at location 1.
Run rlang::last_trace() to see where the error occurred.
this is how my input files looks like:
metadata_2:
abundance_data

PS: I executed this example that u shared and it has worked
data(ko_abundance)
data(metadata)
results_file_input <- ggpicrust2(data = ko_abundance,
metadata = metadata,
group = "Environment",
pathway = "KO",
daa_method = "LinDA",
ko_to_kegg = TRUE,
order = "pathway_class",
p_values_bar = TRUE,
x_lab = "pathway_name")

Hi @WillErickson1,
Thank you for providing a detailed overview of your issue. Based on the error you encountered and the provided data structure, I suggest the following:

Metadata Modification: Try removing the second and third columns from your metadata file. It appears there might be discrepancies between your dataset and the expected format for the ggpicrust2 function, and this step might help align your data more closely with what the function anticipates.

Sample Size Concern: I'd like to point out a statistical consideration. With only 3 samples in your dataset, the statistical power and interpretability of the results may be limited. Even if you obtain a visualization, deriving a statistically meaningful interpretation could be challenging. It's crucial to ensure that your results can be supported by a robust statistical analysis. If possible, consider increasing your sample size to bolster the validity of your conclusions.

Please give the above suggestion a try and let me know if it resolves the issue or if you have any other questions!
Best regards,
Chen YANG

thank you for responding so fast
I runned this script now : # Load necessary data: abundance data and metadata
abundance_file <- "pred_metagenome_unstrat.tsv"
metadata_2 <- read_delim(
"metadata.txt",
delim = "\t",
escape_double = FALSE,
trim_ws = TRUE
)
rm(metadata_2)
Run ggpicrust2 with imported data.frame
abundance_data <- read_delim(abundance_file, delim = "\t", col_names = TRUE, trim_ws = TRUE)
metadata_2 <- metadata_2[, -c(2, 3)]
Run ggpicrust2 with input data
results_data_input <- ggpicrust2(data = abundance_data,
metadata = metadata_2,
group = "Traitement", # For example dataset, group = "Environment"
pathway = "KO",
daa_method = "LinDA",
ko_to_kegg = TRUE,
order = "pathway_class",
p_values_bar = TRUE,
x_lab = "pathway_name")
with input file :

I have this error now :
Starting the ggpicrust2 analysis...
Converting KO to KEGG...
Processing provided data frame...
Loading KEGG reference data. This might take a while...
Performing KO to KEGG conversion. Please be patient, this might take a while...
|============================================================================| 100%
KO to KEGG conversion completed. Time elapsed: 14.2 seconds.
Removing KEGG pathways with zero abundance across all samples...
KEGG abundance calculation completed successfully.
Performing pathway differential abundance analysis...
Sample names extracted.
Identifying matching columns in metadata...
Matching columns identified: sample-id . This is important for ensuring data consistency.
Using all columns in abundance.
Converting abundance to a matrix...
Reordering metadata...
Converting metadata to a matrix and data frame...
Extracting group information...
Running LinDA analysis...
Performing LinDA analysis...
0  features are filtered!
The filtered data has  3  samples and  197  features will be tested!
Fit linear models ...
Completed.
Processing LinDA results...
LinDA analysis is complete.
Success: Found 1 statistically significant biomarker(s) in the dataset.
Annotating pathways...
Starting pathway annotation...
DAA results data frame is not null. Proceeding...
KO to KEGG is set to TRUE. Proceeding with KEGG pathway annotations...
We are connecting to the KEGG database to get the latest results, please wait patiently.
Processing pathways individually...
|                                                                            |   0%
Beginning annotation for pathway 1 of 1...
Annotated pathway 1 of 1. Time taken: 2.24 seconds.
|============================================================================| 100%
Pathway annotation completed.
Returning DAA results filtered annotation data frame...
Creating pathway error bar plots...
Error in $<-.data.frame(*tmp*, "group", value = c(2L, 2L, 1L)) :
le tableau de remplacement a 3 lignes, le tableau remplacé en a 1
In addition: Warning message:
In cbind(sample = colnames(sub_relative_abundance_mat), group = Group,  :
number of rows of result is not a multiple of vector length (arg 2)

Hi @WillErickson1,
Thank you for sharing the details.
I see that you've run the script to load the necessary abundance data and metadata. Following that, you have run the ggpicrust2 function with the provided input.
From the provided error:
Error in `$<-.data.frame`(`*tmp*`, "group", value = c(2L, 2L, 1L)) :
  replacement has 3 rows, data has 1
In addition: Warning message:
In cbind(sample = colnames(sub_relative_abundance_mat), group = Group,  :
  number of rows of result is not a multiple of vector length (arg 2)

It seems like there's an inconsistency with the data dimensions. This might be due to only one statistically significant result being found. Such a result can possibly affect the visualization, making it hard for the visualization to proceed.
To troubleshoot this:

You can follow the workflow provided here to obtain intermediate results. This might provide more insight into the issue.
Alternatively, if you're comfortable, you can send me the dataset. I'll be able to take a closer look and help identify the root cause.
However, I suspect the underlying issue might be due to a small sample size, which might be causing this error.

Let me know how you'd like to proceed or if there's any other way I can assist.
Best regards,
Chen YANG

thanks
what's the difference between ko_abundance  and kegg_abundance
kegg_abundance <- ko2kegg_abundance("path/to/your/pred_metagenome_unstrat.tsv")
ko_abundance <- read.delim("path/to/your/pred_metagenome_unstrat.tsv")
what does these 2 inputs refers to in picrust2 pipeline : https://github.com/picrust/picrust2/wiki/Full-pipeline-script

Hi @WillErickson1 ,
The difference between ko_abundance and kegg_abundance lies in their origins and how they represent the biological data.

KO (Kegg Orthology) Abundance: ko_abundance refers to the abundance of specific gene orthologs in your sample. In the context of your script, it's being directly loaded from a .tsv file:
ko_abundance <- read.delim("path/to/your/pred_metagenome_unstrat.tsv")

KEGG Abundance: kegg_abundance, on the other hand, is derived from the KO abundances by converting them into pathway abundances. This means that kegg_abundance represents the predicted abundance of entire metabolic pathways, which are composed of multiple KO groups. Your script uses the ko2kegg_abundance function to achieve this conversion:
kegg_abundance <- ko2kegg_abundance("path/to/your/pred_metagenome_unstrat.tsv")

In the context of the PICRUSt2 pipeline:

ko_abundance is a direct result from the prediction step. It gives you the abundance of different gene orthologs in your microbial community.

kegg_abundance is more of a downstream analysis that allows you to understand the functional potential of your microbial community at the pathway level. This is more interpretable because it groups gene orthologs (KOs) into broader functional categories or pathways.

I hope this clarifies the difference between the two. Let me know if you have any further questions or if there's anything else I can assist with.
Best regards,
Chen YANG

Sorry I'm  new in this field. Could you tell me exactly what they refers to.  this is the architecture of output folder of picrust2 pipeline

-I tested the pipeline on the dataset suggested by picrust2 in their tutorial and I used edgeR as daa_method. and it has worked my wondering why it didn't work with limma or deseq2 ?

what's the most suitable input when performing downstream analysis in other words should I use ko_abundance or kegg_abundance to generate pathway_errorbar() , pathway_heatmap() and pathway_pca().
one more if you don't mind : what's the interest of performing the same analysis but on metacyc_abundance

Hello @WillErickson1,

Regarding "exactly what they refers to":
The reference is to the pred_metagenome_unstrat.tsv.gz file within the KO_metagenome_out folder.

On why edgeR works but limma and deseq2 don't:
When testing with the tutorial dataset provided by picrust2, edgeR, when used as the differential abundance analysis method (daa_method), functions as expected. However, limma and deseq2 do not. There could be various reasons for this, including issues with the format of the input data, software dependencies, or compatibility between versions.

About the most appropriate input for downstream analysis:
When moving to downstream analysis, the decision between using ko_abundance or kegg_abundance to generate pathway_errorbar(), pathway_heatmap(), and pathway_pca() depends on the specific objectives of your analysis. The term ko_abundance refers to the abundance of KEGG Orthology (KO), which represents genes or gene clusters. On the other hand, kegg_abundance may relate to specific KEGG pathways.

If you're interested in differences of specific genes or gene functions, then ko_abundance might be more relevant.
However, if you're looking to understand variations in overall metabolic pathways, then kegg_abundance could be the better choice.

Regarding the interest in analyzing metacyc_abundance:
MetaCyc is a database of non-redundant, experimentally validated metabolic pathways, distinct from KEGG. Analyzing metacyc_abundance offers an alternative perspective on the metabolic pathway activity in the samples. By analyzing both KEGG and MetaCyc abundances simultaneously, you can achieve a more comprehensive and multi-layered biological interpretation. For further clarity on the second part of the tutorial, you might want to refer to this section on the ggpicrust2 GitHub page.

Best regards,
Chen YANG

Hello @WillErickson1,

Regarding "exactly what they refers to":
The reference is to the pred_metagenome_unstrat.tsv.gz file within the KO_metagenome_out folder.

On why edgeR works but limma and deseq2 don't:
When testing with the tutorial dataset provided by picrust2, edgeR, when used as the differential abundance analysis method (daa_method), functions as expected. However, limma and deseq2 do not. There could be various reasons for this, including issues with the format of the input data, software dependencies, or compatibility between versions.

About the most appropriate input for downstream analysis:
When moving to downstream analysis, the decision between using ko_abundance or kegg_abundance to generate pathway_errorbar(), pathway_heatmap(), and pathway_pca() depends on the specific objectives of your analysis. The term ko_abundance refers to the abundance of KEGG Orthology (KO), which represents genes or gene clusters. On the other hand, kegg_abundance may relate to specific KEGG pathways.

If you're interested in differences of specific genes or gene functions, then ko_abundance might be more relevant.
However, if you're looking to understand variations in overall metabolic pathways, then kegg_abundance could be the better choice.

Regarding the interest in analyzing metacyc_abundance:
MetaCyc is a database of non-redundant, experimentally validated metabolic pathways, distinct from KEGG. Analyzing metacyc_abundance offers an alternative perspective on the metabolic pathway activity in the samples. By analyzing both KEGG and MetaCyc abundances simultaneously, you can achieve a more comprehensive and multi-layered biological interpretation. For further clarity on the second part of the tutorial, you might want to refer to this section on the ggpicrust2 GitHub page.

Best regards, Chen YANG

thanks for giving me from your time
Where can I find MetaCyc abundance results in the PICRUSt2 output folder?
ko_abundance analysis is perfomed only on metacyc data ? that's why we set ko_to_kegg to FALSE ?

@cafferychen777  thank you for your time
Where can I find MetaCyc abundance results in the PICRUSt2 output folder ? does it in pathways_out ?
ko abundance is used only for metacyc data that's why we set ko_to_kegg to FALSE ?? because when I tried to run this script
results_file_input <- ggpicrust2(data = ko_abundance,
metadata = metadata,
group = "Environment",
pathway = "KO",
daa_method = "edgeR",
ko_to_kegg = FALSE,
order = "pathway_class",
p_values_bar = TRUE,
x_lab = "pathway_name")
it didn't work
-pathway_pca and heatmap_heatmap are only performed on metacyc data ? we can perform them on ko abundance ? if it's the case how I should modify in the code ?

Hello @WillErickson1 ,

MetaCyc Abundance Results Location:

The MetaCyc abundance results are indeed located in the pathways_out folder in the PICRUSt2 output directory.

KO Abundance and ko_to_kegg Setting:

The statement "ko abundance is used only for metacyc data that's why we set ko_to_kegg to FALSE??" might be a bit confusing. The ko_to_kegg parameter is likely a setting to determine whether to convert KO identifiers to KEGG identifiers. It's set to FALSE when you are working with MetaCyc data since MetaCyc and KEGG are different databases with different identifiers. Thus, KO (KEGG Orthology) to KEGG conversion setting doesn't pertain when working with MetaCyc data.

pathway_pca and heatmap_heatmap Execution:

It is possible to perform pathway_pca and heatmap_heatmap on KO abundance data. While these analyses may typically be performed on MetaCyc data, they can also be executed on KO abundance data. Some users in the issue section have shared their code on how to do this, and you can refer to those examples to understand how to modify your code accordingly.

Statistical Tests in daa_method:

Yes, each daa_method specifies a different statistical analysis method. You should refer to the respective papers or documentation for each method to understand the statistical tests being performed.

Best regards,
Chen YANG

Hello!
Thank you for the opportunity to get the visual results of Picrust!
I have a similar problem with the one described above. I've done a step-by-step workflow :
library(reader)
library(ggpicrust2)
library (Bible)
library (neat verse)
library(ggprism)
library(patchwork)

kegg_abundance <- ko2kegg_abundance("E:/Озера метаданные/R/Picrust/pred_metagenome_unstrat.tsv")
Loading data from file...
Rows: 7066 Columns: 61
── Column specification ────────────────────────────────────────────────────────────────────────────────────
Delimiter: "\t"
chr  (1): function
dbl (60): BEl1, BEl2, BEl3, Ber1, Ber2, Ber3, Bez1, Bez2, Bez3, BKa1, BKa2, BKa3, BKu1, BKu2, BKu3, Che1...

ℹ Use spec() to retrieve the full column specification for this data.
ℹ Specify the column types or set show_col_types = FALSE to quiet this message.
Loading KEGG reference data. This might take a while...
Performing KO to KEGG conversion. Please be patient, this might take a while...
|==================================================================================================| 100%
KO to KEGG conversion completed. Time elapsed: 1.55 seconds.
Removing KEGG pathways with zero abundance across all samples...
KEGG abundance calculation completed successfully.

metadata <- read.csv("D:/CCA/forCCAchem.csv", header=TRUE, sep = ";")
str(metadata)
'data.frame':	60 obs. of  7 variables:
$ sample.id: chr  "Kuch1" "Kuch2" "Kuch3" "Che1" ...
$ location : chr  "pelag" "litor" "zarosli" "pelag" ...
$ area     : chr  "niznetavd" "niznetavd" "niznetavd" "niznetavd" ...
$ climZone : chr  "subtaiga" "subtaiga" "subtaiga" "subtaiga" ...
$ Area     : chr  "small" "small" "small" "verysmall" ...
$ Salin    : chr  "freshwater" "freshwater" "freshwater" "freshwater" ...
$ soil     : chr  "pdggTn" "pdggTn" "pdggTn" "pdggTn" ...
daa_results_df <- pathway_daa(abundance = kegg_abundance, metadata = metadata, group = "climZone", daa_method = "ALDEx2", select = NULL, reference = NULL)
Converting metadata to tibble...
Sample names extracted.
Identifying matching columns in metadata...
Matching columns identified: sample.id . This is important for ensuring data consistency.
Using all columns in abundance.
Converting abundance to a matrix...
Reordering metadata...
Converting metadata to a matrix and data frame...
Extracting group information...
Running ALDEx2 with two groups. Performing t-test...
Error in Math.factor(c(2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,  :
‘round’ not meaningful for factors

Please, help me!
With gratitude, Maria


Help/Question generating conversation

I really liked how the messages can be displayed in one full json type.
I'm wondering if, would it be possible to generate <Conversation> then wait for the user's actual response before proceeding to the next message?
Like for example
const conversationMessage = [
  {typing...},
  {message (wait for reply before show typing)...},
  {typing...},
  {message...},
  {typing...},
  {message...}
]

Any inputs are appreciated, thanks :)

Hi @kuronaru
If you update to the latest version of chat template, I've added this functionality but add to the original messages object as needed.
const messages = [
    {
      message: 'Please enter a message',
      inbound: true,
      backColor: 'white',
      duration: 1000,
    }
  ];

const messagesAfterUserInput = [
    {
      message: 'After user message 1',
      inbound: true,
      backColor: 'white',
      duration: 1000,
    },
    {
      message: 'After user message 2',
      inbound: true,
      backColor: 'white',
      duration: 1000,
    }
  ];
let index = 0;
      <Conversation messages={messages} turnOffLoop />

After a user input:
const userMessage = getUserMessage();
this.messages.push(userMessage);
this.messages.push(this.messagesAfterUserInput[index]);
index++;

This will add the users message to the conversation and then the message you want to display after the user input.
If you look at the Chat React element and the Chat story in storybook you can hopefully see what I'm trying to say here.
Let me know if this doesn't make sense as I wrote this response quickly.
Thanks,
Paul

Hi @kuronaru
I hope that made sense.
I'm going to close out this issue. Please reopen if you have any further questions.
Thanks,
Paul


why must pre-train two tasks at same time, can we just pre-train MLM?

you can trained one task only. can check the paper ablation section


4.1.2 Species Search: Implement search by common name

See https://github.com/jdrever/ShropBotSoc/blob/develop/docs/specification.md#412-species-search

This is complete.


screen and popup animations for master

Description
Eror popup - Set 2/Error - X (1)
After success magic link recovery popup - Set 2/Success - V (1)
Popup received - Set 1/Pop-Up Recived (1)
Popup send - Set 1/Pop-Up Send
After face verification - Set 1/Face_Verification_Smiley (2)
Claim page - Set 1/Jumping_People (2)
Splash screen - Set 1/Logo (2)
Signup Welcome screen - Set 1/People_Flying (2)
About #1235 #1237
How Has This Been Tested?
Please describe the tests that you ran to verify your changes.
Checklist:

[x] PR title matches follow: (Feature|Bug|Chore) Task Name
[x] My code follows the style guidelines of this project
[x] I have followed all the instructions described in the initial task (check Definitions of Done)
[x] I have performed a self-review of my own code
[x] My changes generate no new warnings
[x] I have added tests that prove my fix is effective or that my feature works
[x] New and existing unit tests pass locally with my changes
[x] I have added reference to a related issue in the repository
[x] I have added a detailed description of the changes proposed in the pull request. I am as descriptive as possible, assisting reviewers as much as possible.
[x] I have added screenshots related to my pull request ( for frontend tasks)
[ ] I have pasted a gif showing the feature.
[x] @mentions of the person or team responsible for reviewing proposed changes

the claim animation loads as empty screen and starts not smooth why?
@StanislavShevchenko @AlexeyKosinski

because this animation consists of 140 svgs files. so on native it will work faster files are local.
solution:
1st variant: make animation without images. all pieces of animation should be in data.json
2nd variant: add images into data.json like base64 (only for web)
3d variant: try to find preload images for lottie web

@StanislavShevchenko please check possibilities:
if it needs time then either pre-cache or dont show until its loaded

@StanislavShevchenko please check possibilities:
if it needs time then either pre-cache or dont show until its loaded

@AlexeyKosinski
I checked the possibilities: There is no way in the module to wait for the loading of all animation resources.
It was also checked the possibility of preloading pictures in the browser cache, but due to the mismatch of the types of content, this cache does not work.
I also checked the ability of Image.prefetch, it also loads pictures in the cache with the wrong type

@StanislavShevchenko
What do you mean wrong time? can you give example? reference to github issue?
Verify if the onAnimationStart event is fired after all resources are loaded and animation starts
if so then possible solution:

hide animation, show it on "onAnimationStart" event
when animation is hidden we show a static image of the flying people (ie first frame of animation)

@StanislavShevchenko
What do you mean wrong time? can you give example? reference to github issue?

Verify if the onAnimationStart event is fired after all resources are loaded and animation starts
if so then possible solution:
hide animation, show it on "onAnimationStart" event
when animation is hidden we show a static image of the flying people (ie first frame of animation)

In lottie-react-web the onAnimationStart method does not work

@StanislavShevchenko @AlexeyKosinski

I dont believe its a "wrong type", loadimage pre-loads the image using an XHR call, compare this to other places where we pre-cache images i believe the type will also be XHR
it doest support events
https://github.com/felippenardi/lottie-react-web/blob/master/src/index.js#L37

@sirpy @AlexeyKosinski
I tried to start the animation on the loaded images event, but it starts when the first picture is loaded. This is seen in the GIF

@StanislavShevchenko @AlexeyKosinski
I see the following events are defined in lottie_web
this should be enough to make what I asked for working
you can also use addEventListener with the following events:

complete
loopComplete
enterFrame
segmentStart
config_ready (when initial config is done)
data_ready (when all parts of the animation have been loaded)
data_failed (when part of the animation can not be loaded)
loaded_images (when all image loads have either succeeded or errored)
DOMLoaded (when elements have been added to the DOM)
destroy

@StanislavShevchenko @AlexeyKosinski
I see the following events are defined in lottie_web
this should be enough to make what I asked for working
you can also use addEventListener with the following events:

complete
loopComplete
enterFrame
segmentStart
config_ready (when initial config is done)
data_ready (when all parts of the animation have been loaded)
data_failed (when part of the animation can not be loaded)
loaded_images (when all image loads have either succeeded or errored)
DOMLoaded (when elements have been added to the DOM)
destroy

@sirpy please reread what @StanislavShevchenko comment. it is not a solution for what u ask. it is just test for events. we've tried all of them. some not working at all. for example data_ready. loaded_images event triggered when the first image loaded. (for this case @StanislavShevchenko make u a gif)

@sirpy

first please also add code

so events do not work how we expect. that's why I thnik the best solution for web is make new animation with all images inside the data.json (vector shapes). only for web animation

@sirpy @AlexeyKosinski

@LiavGut please check how it looks on web

@AlexeyKosinski
Please take a look at the white rectangle on the background and where is its top edge in ratio to the visual.

@LiavGut please check how it looks on web

@AlexeyKosinski
Please take a look at the white rectangle on the background and where is its top edge in ratio to the visual.

please tell me where it should be?

@LiavGut here is more general formula for margin top for all devices

@AlexeyKosinski need to resolve conflict
also have you verified the images you save in json are high res enough for ios retina?

@AlexeyKosinski need to resolve conflict
also have you verified the images you save in json are high res enough for ios retina?

Images were generated by Adobe AfterEffects (Bodymovin plugin). so I can't set the resolution of images it always max resolution I think.

Just received and bug report.
This animation won't work on real android devices

this is the animation, but the problem is on android. I’m use the current version of react-native branch
This animation generate an instant-crash. I’m testing on real device


Bug: CDD and Data Type drop down for tablet & mobile breaks

Test Case
Test Case: TC231
Updates based on backlog refinement 1/12
1. Accessing the custom data download for Mobile and tablet breakpoints
Given that a user has accessed the cdd on a mobile or tablet device
When the functionality is displayed
Then the the helper text, data type, preview data, and filters functionality are displayed (see screen capture below)
And the filters functionality is disabled until a data type and data sub type is applied

2. Selecting a data type for mobile and tablet breakpoints
Given that a user has selected data type
When the functionality is displayed
Then the user has the ability to apply a data type  and data sub type
AND the ability to  cancel    (see screen capture below)
Given that the data type functionality is displayed
When the cancel is selected
Then the user is directed to the cdd helper text page  (see screen capture below)

3. User has applied the data type
Given that a user has applied their data type and sub type selection
When the functionality is displayed
Then the system displays the selected data type and data sub type (see screen capture below) Note: The back arrow will be replaced with a back button. The back button will be below the selected data type and data sub type
Given that a user has applied their data type and sub type selection
When the users selects back
Then the system displays the helper text page
Given that a user has applied their data type and sub type selection
When change is selected
Then the user has the ability to change their data type
AND cancel
Given that a user has selected to change their data type
When cancel is selected
Then the system displays the users previously selected data type and data sub type

Steps to Reproduce

Navigate to CAMPD at 480 or 640 resolution
Select Data type
Apply a data type and data sub type

Actual Results

At 480 res, the cancel button does not appear on the data type screen and there is whitespace at the bottom of screen that is not in alignment with the wireframes

At 640 res, the cancel button does not appear on the data type screen  and there is whitespace at the bottom of screen that is not in alignment with the wireframes

The change data type button is not in alignment with the wireframes

Requirements
User Story
As a custom data download user I want the CDD helper text, side bar, and change data type functionality to adjust to my device screen size so that I can build a query on my device
Acceptance Criteria
Given that a user has accessed the custom data downlead on a mobile or tablet device
When the functionality is displayed
Then the helper text is displayed in accordance with the wireframes (see context)
Given that a user has accessed the custom data downlead on a mobile or tablet device
When the sidebar functionality is displayed
Then the side bar is displayed in accordance with the wireframes (see context)
Given that a user has accessed the custom data downlead on a mobile or tablet device
When the custom data download box and preview data button is displayed
Then the functionality is displayed in accordance with the wireframes (see context)
Given that a user has accessed the custom data downlead on a mobile or tablet device
When the data type functionality is displayed
Then the functionality is displayed in accordance with the wireframes (see context)
Developer Notes
The scope of this ticket includes addressing the responsiveness for the side bar, the helper text, the custom data download title box , and the data type functionality.
Maintain the tool tip by preview data
remove the back arrow on the data type selection screen and maintain the cancel button
Change Data Type Wireframes
-  slides 8,9

CAMPD CDD updates (dev)
CAMPD CDD updates

Open defect in TestQuality D100

Test Select Data Type Page Responsiveness (main page) in Run CDD and Data Type drop down for tablet & mobile breaks (linked to Cycle CAMPD Responsiveness).

Open defect in TestQuality D101

Test CDD and Data Type drop down for tablet & mobile breaks in Run CDD and Data Type drop down for tablet & mobile breaks (linked to Cycle CAMPD Responsiveness).

Defect D101 Resolved


Error communicating with browserless (is 'master' version considered as supported?)

Describe the bug

Version
v0.40.2
How to reproduce
Update to the latest version of browserless.

Desktop (please complete the following information):
Firefox Latest Stable @ Win11
Additional context
Meanwhile in the changedetection log:
Starting connection with playwright - done
ERROR:changedetectionio:Exception on /browser-steps/browsersteps_update [GET]
Traceback (most recent call last):
  File "/usr/local/flask/app.py", line 2073, in wsgi_app
    response = self.full_dispatch_request()
  File "/usr/local/flask/app.py", line 1519, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/usr/local/flask_restful/__init__.py", line 271, in error_router
    return original_handler(e)
  File "/usr/local/flask/app.py", line 1517, in full_dispatch_request
    rv = self.dispatch_request()
  File "/usr/local/flask/app.py", line 1503, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**req.view_args)
  File "/app/changedetectionio/blueprint/browser_steps/__init__.py", line 179, in browsersteps_ui_update
    browsersteps_live_ui_o[browsersteps_session_id] = browser_steps.browsersteps_live_ui(
  File "/app/changedetectionio/blueprint/browser_steps/browser_steps.py", line 180, in __init__
    self.connect(proxy=proxy)
  File "/app/changedetectionio/blueprint/browser_steps/browser_steps.py", line 189, in connect
    self.context = self.playwright_browser.new_context(
AttributeError: 'NoneType' object has no attribute 'new_context'
<IP_ADDRESS> - - [07/Feb/2023 17:26:37] "GET /browser-steps/browsersteps_update?uuid=3a321509-cfb6-4148-8c8c-c488e74d69d8&browsersteps_session_id=1675790799954 HTTP/1.1" 500 473 1.154974

Hopping in to confirm having the same issue

when the timer runs out you have to just reload the page, should solve it

when the timer runs out you have to just reload the page, should solve it

in fact, i never ever successfully seen any loaded page within browsers steps form. i'm instantly getting this error and that's it.

Not sure if it will help but I just discovered for me the issue was cahngedetection & browserless had issues communication via docker IPs. Once I switched to using the host IP and port it worked right away.
Change from
ws://<IP_ADDRESS>:3000/?stealth=1&--disable-web-security=true
to
ws://(HOST IP:HOST PORT)/?stealth=1&--disable-web-security=true

Not sure if it will help but I just discovered for me the issue was cahngedetection & browserless had issues communication via docker IPs. Once I switched to using the host IP and port it worked right away.
Change from ws://<IP_ADDRESS>:3000/?stealth=1&--disable-web-security=true to ws://(HOST IP:HOST PORT)/?stealth=1&--disable-web-security=true

Finaly, I t works
Thanks A lot

can confirm that adding ?stealth=1&--disable-web-security=true part fixes communication problem and also fixes problems parsing specific sites


[JOSS REVIEW] Use of deprecated function cusparseCsrmv  in CUDA executor

This issue is part of the functionality aspect of a JOSS review (see #597 )
I have run into a new issue in building CUDA-enabled ginkgo while building.  After a successful cmake, an attempt to build with make gives
[  1%] Building CXX object cuda/CMakeFiles/ginkgo_cuda.dir/base/executor.cpp.o
In file included from /home/ajacobs/Reporoot/ginkgo/cuda/base/executor.cpp:43:
/home/ajacobs/Reporoot/ginkgo/cuda/base/cusparse_bindings.hpp: In function ‘void gko::kernels::cuda::cusparse::spmv(cusparseHandle_t, cusparseOperation_t, gko::int32, gko::int32, gko::int32, const float*, cusparseMatDescr_t, const float*, const int32*, const int32*, const float*, const float*, float*)’:
/home/ajacobs/Reporoot/ginkgo/cuda/base/cusparse_bindings.hpp:118:33: error: ‘cusparseScsrmv’ was not declared in this scope; did you mean ‘cusparseSbsrmv’?
  118 | GKO_BIND_CUSPARSE32_SPMV(float, cusparseScsrmv);

I deploy the latest stable CUDA tookit and dev environment, so when I looked at my cusparse header files I confirmed that cusparseScsrmv is no longer provided and was deprecated as mentioned here (section 8.8.).
NVIDIA suggests "use cusparseCsrmvEx() instead."
In the meantime, I will explore workarounds (and welcome suggestions).  As CUDA toolkits are made current, however, this will become an issue for more users/systems.

Thanks for letting us know! Can you provide the exact CUDA version you are using?

Lightning fast as usual @upsj !  I aspire!
Here is the result of deviceQuery:
/deviceQuery Starting...

 CUDA Device Query (Runtime API) version (CUDART static linking)

Detected 1 CUDA Capable device(s)

Device 0: "Quadro T2000"
  CUDA Driver Version / Runtime Version          11.0 / 11.0
  CUDA Capability Major/Minor version number:    7.5
  Total amount of global memory:                 3912 MBytes<PHONE_NUMBER> bytes)
  (16) Multiprocessors, ( 64) CUDA Cores/MP:     1024 CUDA Cores
  GPU Max Clock rate:                            1785 MHz (1.78 GHz)
  Memory Clock rate:                             4001 Mhz
  Memory Bus Width:                              128-bit
  L2 Cache Size:                                 1048576 bytes
  Maximum Texture Dimension Size (x,y,z)         1D=(131072), 2D=(131072, 65536), 3D=(16384, 16384, 16384)
  Maximum Layered 1D Texture Size, (num) layers  1D=(32768), 2048 layers
  Maximum Layered 2D Texture Size, (num) layers  2D=(32768, 32768), 2048 layers
  Total amount of constant memory:               65536 bytes
  Total amount of shared memory per block:       49152 bytes
  Total number of registers available per block: 65536
  Warp size:                                     32
  Maximum number of threads per multiprocessor:  1024
  Maximum number of threads per block:           1024
  Max dimension size of a thread block (x,y,z): (1024, 1024, 64)
  Max dimension size of a grid size    (x,y,z):<PHONE_NUMBER>, 65535, 65535)
  Maximum memory pitch:<PHONE_NUMBER> bytes
  Texture alignment:                             512 bytes
  Concurrent copy and kernel execution:          Yes with 3 copy engine(s)
  Run time limit on kernels:                     No
  Integrated GPU sharing Host Memory:            No
  Support host page-locked memory mapping:       Yes
  Alignment requirement for Surfaces:            Yes
  Device has ECC support:                        Disabled
  Device supports Unified Addressing (UVA):      Yes
  Device supports Managed Memory:                Yes
  Device supports Compute Preemption:            Yes
  Supports Cooperative Kernel Launch:            Yes
  Supports MultiDevice Co-op Kernel Launch:      Yes
  Device PCI Domain ID / Bus ID / location ID:   0 / 1 / 0
  Compute Mode:
     < Default (multiple host threads can use ::cudaSetDevice() with device simultaneously) >

deviceQuery, CUDA Driver = CUDART, CUDA Driver Version = 11.0, CUDA Runtime Version = 11.0, NumDevs = 1
Result = PASS

Arch's package database defaults to CUDA 11.0.2 (https://www.archlinux.org/packages/community/x86_64/cuda/).
I do suspect it's possible CUDA on my system went from a late 10.x into 11.0 between builds.

Hello @adam-m-jcbs,
thank you for your feedback. I am assuming you are using CUDA 11 since it is the 'latest stable CUDA toolkit'.
In CUDA 11, a lot of functionality was removed (that we used in Ginkgo). We are currently working on getting it to work with CUDA 11 in the PR #603, but since there are so many changes (and new functions with not ideal documentation), it takes a while to make it work.

If you are using ArchLinux, then yes, that actually happened to me as well recently.

Thanks for pointing that out, @thoasm .  I missed that PR.  For the purposes of the functionality review #597 I will downgrade to 10.x and evaluate what was submitted.  This issue is more relevant for the future.


Bump default gcc to 6.1

@rouson I haven't had a chance to look at this in detail, but I am concerned about the impact that requiring GCC 6 will have on our test infrastructure before formulae make it into Homebrew and/or whitelisted Ubuntu PPAs.

@zbeekman Would it be possible to set up the tests so that they install with an earlier version temporarily?
./install.sh --with-c=blah --with-c++=blahblah --with-fortran-blahblahblah
If so, I'd be glad to test the above approach manually with 5.3.0 before merging this pull request.
The key concern is that users don't currently have access to the STOP bug fix and also that some users might want to install just for purposes of building 6.1.0.  There's some discussion online at the moment about difficulties with installing 6.1.0 binaries. Our installer could be an alternative.

Sure default can be bumped so long as minimum is not

Great.  I'll test the -with-* flags today with the GCC 5.3 compilers.  Then I'll approve and merge this pull request any required adjustment to the Travis-CI scripts.  I think the solution will take the following form: let the CMake scripts specify the minimum and let install.sh specify the default.  Then it should work to just install with the aforementioned --with-* flags to override the default in a way that meets the minimum.

Perfect, sounds great!
On Wed, May 4, 2016 at 12:12 PM Damian Rouson<EMAIL_ADDRESS>wrote:

Great. I'll test the -with-* flags today with the GCC 5.3 compilers. Then
I'll approve and merge this pull request any required adjustment to the
Travis-CI scripts. I think the solution will take the following form: let
the CMake scripts specify the minimum and let install.sh specify the
default. Then it should work to just install with the aforementioned
--with-* flags to override the default in a way that meets the minimum.
—
You are receiving this because you were mentioned.
Reply to this email directly or view it on GitHub
https://github.com/sourceryinstitute/opencoarrays/pull/180#issuecomment-216915837

[Current coverage][cc-pull] is 38.73%

Merging [#180][cc-pull] into [master][cc-base-branch] will not change coverage

@@             master       #180   diff @@
==========================================
  Files             2          2
  Lines           901        901
  Methods           0          0
  Messages          0          0
  Branches          0          0
==========================================
  Hits            349        349
  Misses          552        552
  Partials          0          0

Powered by Codecov. Last updated by [4cf2b88...d753b76][cc-compare]
[cc-base-branch]: https://codecov.io/gh/sourceryinstitute/opencoarrays/branch/master?src=pr
[cc-compare]: https://codecov.io/gh/sourceryinstitute/opencoarrays/compare/4cf2b88294ff24624afbd8dae9ca062a4e83215b...d753b7653d4dfb401e679cbbb4882353e0808d9e
[cc-pull]: https://codecov.io/gh/sourceryinstitute/opencoarrays/pull/180?src=pr

With the additional commits that have been added, this pull request functions properly as follows:

If the user specifies compilers with --with-fortran (or -f), --with-c (or -c), and --with-cpp (or -C), then those compilers are used.
In the absence of the --with-* arguments, GCC 6.1.0 is the minimum compiler version required to be in PATH or in download/prerequisites in order to avoid triggering the download, build, and installation of GCC 6.1.0.

LGTM


ORC-1578: Fix SparkBenchmark on sales data according to SPARK-40918

This is a clone of

#1734

This is resolved via dcf3472ca


[Feature] Remember docs collapsing

The markdown docs for the services is a pretty neat feature, but it's kind of annoying to have the docs expanded every single time I open a service definition, even though I collapse it every time (since I already know how it works!).
My suggestion is to remember the collapse status on a per-service basis, with an indication (ie: an icon, whatever) to show that there's documentation in there.
Thanks!

Fixed in v3.0! Coming soon in a couple of weeks.


Grab whole URL or URL Fragments from IHTTPSession

I start a new Webserver with the serve Method that has an IHTTPSession object.
I use an api, that redirects to this webserver, and generates the following request:
http://mywebserver.com/?state=adsf#otherkey=value
so I want to grab the URL Fragment "otherkey=value" or, the whole url as shown above, so I can use split for # to get the URL Fragment.
How is this possible in NNanoHttpd?
I didn't find any solution.

You don't use the '#', you use an '&' and then NanoHTTP automatically parses it for you and stores it in a HashMap<String, String>. I think it's called 'parms' or something, it's available on the request object.

please reopen if there is special need for this feature. (If it is specify the reason why it is needed)

Fragment identifier such as #otherkey=value are not send to the server.
That makes them unprocessable for any webserver.

That's because those are client-side only. They are processed by the browser AFTER the server's response arrives.
To send data to the server you must either send it in a POST body or use a query string, like this
http://resources.domain.org/images?key1=value1&key2=value2&flag1&key3=value3&flag4 as the request URL.


hubble: Add OnFlowDelivery and OnGetFlows

Coverage increased (+0.01%) to 46.993% when pulling 25e5382ed0b7acb54a8836d4a5dec4758a162202 on pr/tgraf/hubble-on-get-flows into 5f0ad79eac9278432541e99021908057ea866fc6 on master.

test-me-please


feat(overlay): add keyboard dispatcher for targeting correct overlay

Fixes https://github.com/angular/material2/issues/6330
Fixes https://github.com/angular/material2/issues/3251
Closes https://github.com/angular/material2/pull/3460

@jelbourn comments addressed. Also added a demo to the overlay.

@crisbeto comments addressed. Please take another look!

@willshowell looks like the prerender task is still failing. You can debug it locally using gulp ci:prerender. Ping me to mark as merge ready.

@crisbeto I had issues with fromEvent not working well with the DOCUMENT token, so I opted to make the dispatch start lazily. PTAL.

Rebased. cc @kara

@kara is there anything I need to do regarding the presubmit failure?

Getting some AOT issue:
Error: Error encountered resolving symbol values statically. Only initialized variables and constants can be referenced because the value of this variable is needed by the template compiler (position 10:22 in the original .ts file), resolving symbol DOCUMENT in /platform-browser/src/dom/dom_tokens.d.ts, resolving symbol DOCUMENT in /platform-browser/src/platform-browser.d.ts, resolving symbol DOCUMENT in /platform-browser/public_api.d.ts, resolving symbol DOCUMENT in /platform-browser/index.d.ts, resolving symbol DOCUMENT in platform_browser_safe/index.d.ts, resolving symbol OVERLAY_KEYBOARD_DISPATCHER_PROVIDER in /src/cdk/overlay/keyboard/overlay-keyboard-dispatcher.ts, resolving symbol OVERLAY_PROVIDERS in /src/cdk/overlay/overlay-module.ts, resolving symbol OverlayModule in /src/cdk/overlay/overlay-module.ts, resolving symbol OverlayModule in /src/cdk/overlay/overlay-module.ts

Can you try building in AOT?

@andrewseguin I wasn't able to reproduce, but I've rebased and updated the license.
I'm passing on gulp ci:lint, aot, prerender (ci:test is broken from something else).

Is injecting DOCUMENT instead of using document critical here? Removing the DOCUMENT stuff fixes the error @andrewseguin  mentioned

@mmalerba we should only need to use DOCUMENT if we're mocking something in a test

I think DOCUMENT is special somehow, I tried creating a different injection token, OVERLAY_DOCUMENT, and everything worked fine. So we should switch it and if we need it for testing just create our own provider. @willshowell Once that's done I can try again on presubmitting.

Oh yeah, now I remember. I had to do the same thing for the tests for Directionality. BidiModule has
{provide: DIR_DOCUMENT, useExisting: DOCUMENT},

Doesn't seem there's any need to mock document for the tests, so I've removed the token.

@mmalerba should be ready for another spin


Serialization Filter Query

Hi
I just wonder if it would be possible to deserialize this JSON below into an com.google.cloud.firestore.Filter object ?
The purpose would be to call that way if possible :
Filter composite = new Gson().fromJson(stringJson, Filter.class);
Any help or advice would be appreciate :-)
Thanks
{
    "filters": [
        {
            "field": {
                "segments": [
                    "messageType"
                ]
            },
            "operator": "EQUAL",
            "value": "text"
        },
        {
            "filters": [
                {
                    "field": {
                        "segments": [
                            "message"
                        ]
                    },
                    "operator": "LESS_THAN",
                    "value": "Hi"
                },
                {
                    "field": {
                        "segments": [
                            "message"
                        ]
                    },
                    "operator": "GREATER_THAN",
                    "value": "Ok"
                },
                {
                    "filters": [
                        {
                            "field": {
                                "segments": [
                                    "message"
                                ]
                            },
                            "operator": "LESS_THAN",
                            "value": "Hi"
                        },
                        {
                            "field": {
                                "segments": [
                                    "message"
                                ]
                            },
                            "operator": "GREATER_THAN",
                            "value": "Ok"
                        }
                    ],
                    "operator": "AND"
                }
            ],
            "operator": "OR"
        },
        {
            "filters": [
                {
                    "field": {
                        "segments": [
                            "message"
                        ]
                    },
                    "operator": "LESS_THAN",
                    "value": "Hi"
                },
                {
                    "field": {
                        "segments": [
                            "message"
                        ]
                    },
                    "operator": "GREATER_THAN",
                    "value": "Ok"
                }
            ],
            "operator": "AND"
        }
    ],
    "operator": "AND"
}

I'm afraid I'm not familiar with the Gson library or its capabilities. I don't know of any way to, in general, convert JSON objects into complex Java objects though. Did you have a specific strategy in mind?

I process to conversion (object to string) like below and i would like to do the same in other way (string to object)
In general, i used to do it with with Gson ou Jackson
But for this Filter object (UnaryFilter/ CompositeFilter) , it seems not easy to implement.
Maybe not possible ...
Maybe a recursive strategy could be a solution. (juste wondering)
        Filter filter =
                Filter.and(
                        Filter.equalTo("messageType", "text"),
                        Filter.or(
                                Filter.lessThan("message", "Hi"),
                                Filter.greaterThan("message", "Ok"),
                                Filter.and(
                                            Filter.lessThan("message", "Hi"),
                                            Filter.greaterThan("message", "Ok")
                                        )

                                ),
                        Filter.and(
                                Filter.lessThan("message", "Hi"),
                                Filter.greaterThan("message", "Ok")
                                )
                        );

        log.info("TEST : "+new Gson().toJson(filter));

I see. I'm sorry but we don't officially support the serialization strategy you're trying to implement. Combined with my lack of Gson and Jackson knowledge, I cannot spend time investigating this. If you investigate and find a "reasonably easy" fix to our code then then I'd definitely entertain a PR.


[PLT-6229] Add plus sign for adding to existing emoji reactions

Summary
This PR adds an additional button beside a post's reactions that opens the Emoji Picker. This allows the user to add a new reaction to a post that already has reactions.
Ticket Link
https://github.com/mattermost/mattermost-server/issues/6284
https://mattermost.atlassian.net/browse/PLT-6229
Screenshot:

Checklist

[x] Has UI changes

Setup Test Server label detected. Spinmint test server created if build succeeds (checks pass and no conflicts with base branch).

Spinmint test server created at: http://i-08de7d1ea55a89f72.spinmint.com:8065/pr157
Test Account 1: Email<EMAIL_ADDRESS>| Password: passwd
Test Account 2: Email<EMAIL_ADDRESS>| Password: passwd
Instance ID: i-08de7d1ea55a89f72

@esethna Will take a look at it!

Spinmint test server destroyed

Setup Test Server label detected. Spinmint test server created if build succeeds (checks pass and no conflicts with base branch).

Spinmint test server created at: http://i-0cdde38e31229861d.spinmint.com:8065/pr157
Test Account 1: Email<EMAIL_ADDRESS>| Password: passwd
Test Account 2: Email<EMAIL_ADDRESS>| Password: passwd
Instance ID: i-0cdde38e31229861d

Created a ticket for Asaad to help take a look at this and another PR for CSS changes: https://mattermost.atlassian.net/browse/PLT-7942

@esethna Improved the styling of the button, and have hidden it on mobile.
Furthermore, the issue in no 2 is not caused by this PR, I have filed a bug ticket for it, and also submitted a fix here.

Spinmint test server destroyed

Setup Test Server label detected. Spinmint test server created if build succeeds (checks pass and no conflicts with base branch).

Spinmint test server created at: http://i-08aebdc661f82cc27.spinmint.com:8065/pr157
Test Account 1: Email<EMAIL_ADDRESS>| Password: passwd
Test Account 2: Email<EMAIL_ADDRESS>| Password: passwd
Instance ID: i-08aebdc661f82cc27

Spinmint test server destroyed

Setup Test Server label detected. Spinmint test server created if build succeeds (checks pass and no conflicts with base branch).

Spinmint test server created at: https://i-052a3cc69e6623f57.spinmint.com
Test Account 1: Email<EMAIL_ADDRESS>| Password: passwd
Test Account 2: Email<EMAIL_ADDRESS>| Password: passwd
Instance ID: i-052a3cc69e6623f57

Spinmint test server destroyed

@asaadmahmood looks like there are conflicts, can you please help look into it

@R-Wang97 can you please help resolve the conflicts when you get a chance?

@esethna Will do

@esethna Done.

Setup Test Server label detected. Spinmint test server created if build succeeds (checks pass and no conflicts with base branch).

Spinmint test server created at: http://i-08286ab7f40cf2813.spinmint.com
Test Account 1: Email<EMAIL_ADDRESS>| Password: passwd
Test Account 2: Email<EMAIL_ADDRESS>| Password: passwd
Instance ID: i-08286ab7f40cf2813

@esethna Done.

Spinmint test server destroyed

Setup Test Server label detected. Spinmint test server created if build succeeds (checks pass and no conflicts with base branch).

Spinmint test server created at: http://i-06d843ddcefeae22a.spinmint.com
Test Account 1: Email<EMAIL_ADDRESS>| Password: passwd
Test Account 2: Email<EMAIL_ADDRESS>| Password: passwd
Instance ID: i-06d843ddcefeae22a

Spinmint test server destroyed

Setup Test Server label detected. Spinmint test server created if build succeeds (checks pass and no conflicts with base branch).

Spinmint test server created at: http://i-0255444e75b6a84fa.spinmint.com
Test Account 1: Email<EMAIL_ADDRESS>| Password: passwd
Test Account 2: Email<EMAIL_ADDRESS>| Password: passwd
Instance ID: i-0255444e75b6a84fa

Got a chance to play with this and it's really cool.
I've just notice that it's not working in RHS when RHS is expanded or when the browser is resized to like 900px. See GIF below.
Also please help rebase this PR to latest master when you got a chance. Thanks!

Thanks, good catch Saturn, @R-Wang97 can you please help look into the expanded sidebar issue ^.
@saturninoabril, resizing the browser to mobile view is expected that it disabled this functionality.

@esethna I did some investigation, and it looks like this is an issue that exists in master. On master, if I view a message in the expanded sidebar, and try to add a reaction by pressing the emoji icon, the picker does not show either. I feel like this might be a CSS issue, but I'm not entirely sure.

@R-Wang97 @saturninoabril Confirmed the issue reproduces on master, created a separate ticket for it: https://mattermost.atlassian.net/browse/PLT-8123
@saturninoabril please help re-review?

Spinmint test server destroyed

Setup Test Server label detected. Spinmint test server created if build succeeds (checks pass and no conflicts with base branch).

Spinmint test server created at: http://i-00222bd5747384f0f.spinmint.com
Test Account 1: Email<EMAIL_ADDRESS>| Password: passwd
Test Account 2: Email<EMAIL_ADDRESS>| Password: passwd
Instance ID: i-00222bd5747384f0f

@R-Wang97 This needs a rebase

@hmhealey Will do!


Which script were used for 4bit quantization?

As far as I can see the model don't use GGML weights here, is that correct? (did not checked yet).
If so - what script is used to make 4bit quantization here?
For instance - if I am going to try vicuna (which is LLAMA + some delta weights) I can generate full vicuna weights, but than I will need to perform quantization - which one is used in this library case?

Okay, I see it should be able to use gptq weights (safetensor format). I am facing another issues while trying to generate text, but that's offtopic for this issue.
So my problem should be solveable (well, at least if vicuna code itself is not different).

Currently this repo does not have any code related to model quantization. I think you can use it from GPTQ repo or GPTQ-LLAMA


Make sure that min and max do not collide with Windows.h macros

This is a minor improvement for people that work under the OS Windows and happen to include both Windows.h and include/faker-cxx/String.h. The header Windows.h might define the macros min and max which then leads to a compilation error in line 25 and 26 in the CharCount class.

Good job! check out project issues for more! :D

Thanks :) I will browse through the code base, apply some minor code refactorings like the one I did in this PR and eventually plan to work on https://github.com/cieslarmichal/faker-cxx/issues/154.


Cover elements in implementation code in "Augmented type of a type usage appearing in code"

For spec 0.3, we said that annotations anywhere in implementation code were "unrecognized," which at the time was a broader category that contained not only "bad" locations (e.g., class Foo extends @Nullable Bar) but also locations that we just wanted to call out of scope.
For spec 1.0, we now use "unrecognized" only for "bad" locations, so locations like local-variable type arguments are now recognized. Yay!
For some future spec version, we should specify more about the nullness of at least elements in implementation code. This means things like:

Exception parameters are non-null.
Local variables (including resource parameters, meaning those in try-with-resources) are nullable. Or perhaps they're "inferred" in some different sense than nullness is normally inferred, as we describe it in the Javadoc:@NullMarked
class Foo {
  final @Nullable String s;

  Foo(String sParam) {
    this.s = sParam;
    // The element `s` has type `String?`, but dataflow knows that the expression `s` has type `String!`.
    Boolean b = true;
    // TBD:
    // - The element `b` has type `Boolean?`, but dataflow knows that the expression `b` has type `Boolean!`?
    // - The element `b` has type `Boolean` at this point?
  }
}

Local variables declared by instanceof are non-null. (This is separate from another issue that is about subcomponents.)

My thinking is that this initial work would still not need to get into complexities like how casts work, let alone dataflow or even the basics of expressions (e.g., the fact that string concatenation returns a non-null string): I'm thinking here only about "elements"/"symbols," to use javac terms.

(related: rules for union types)


single sections no longer have a dropdown

As I was thinking about theme documentation, I noticed there was a need for sections with only one page. In that case, I made the section clickable and if you are on the page, the top navigation will use project name. This also avoids the situation where you have both section name and pagename to be the same.

Thanks @charnpreetsingh. Looks nice!


organised with GDS reception how registration will work

What
Make arrangements with GDS reception for attendees to the event in November
Why
Check-in process for attendees, and we can monitor how many people attend the event
Who needs to work on this
Imran, Kam
Who needs to review this
Done when

[ ] decide how we want to check-in attendees
[ ] print list
[ ] liaise with reception in preparation of the event
[x] add WCB attendees to Bluepoint for main reception

Print eventbrite list - and add to bluepoint

email sent to<EMAIL_ADDRESS>request support at reception

GDS reception have confirmed that they are happy to help

An update from WCB building reception:
they don’t need anything from us other than registering guests on Bluepoint
they are happy for DS team people to be downstairs helping guide people
if we want to put up the pull up banner, we need to request this with an email specifying timing and what it’s for to<EMAIL_ADDRESS>

face-to-face attendees and 3 DSA reserved tickets added to bluepoint

Imran to chase DSA reserved ticket people

Due to building policies at WCB, they can’t allow any banners or signs on the ground floor.

Attendee list
I have saved the attendee list to our shared drive as of 26/11
A-Z by surname
Online
Reserved
Face to face


Facebook Login ERROR_INVALID_CREDENTIAL

I'm trying to log in using an AuthCredential generated by Facebook, but it doesn't work, I already tested the Facebook API and everything is fine. I was analyzing all the generated accessToken, it looks different from the one generated by the google login
error:
Exception has occurred.
PlatformException (PlatformException(ERROR_INVALID_CREDENTIAL, The supplied auth credential is malformed or has expired. [ Unsuccessful debug_token response from Facebook: {"error":{"message":"Invalid OAuth access token signature.","type":"OAuthException","code":190,"fbtrace_id":"A4fHA7EI2XEClpIQIcbyXvt"}} ], null))
token: EAAIp82wZBI5MBADZBlh4lQ3oRsKnOwPD0ZAidYnZCBYS083LUU2AnHKkadxfXTa3N13qlA9YxwPMMZB6pfv3CB7ZAdCZBRRAROIQpaJ5IRQ1YhEXND38my8bB3hUdrf
Future<FirebaseUser> signInWithFacebook() async {
    final facebookLogin = FacebookLogin();
    final result = await facebookLogin.logIn(['email', 'public_profile']);
    if (result.status == FacebookLoginStatus.loggedIn) {
      final accessToken = result.accessToken;
      final token = accessToken.token;
      final credential = FacebookAuthProvider.getCredential(accessToken: token);
      await _firebaseAuth.signInWithCredential(credential);
      final graphResponse = await dio.get(
          'https://graph.facebook.com/v2.12/me?fields=name,first_name,last_name,email&access_token=$token');

      return _firebaseAuth.currentUser();
    }
  }

I suspect the expires timestamp is not getting set.  I see this on the Android platform, but not IOS.  (Token Expires: 1969.12.31 11:59:59 PM)
        final accessToken = await _facebookLogin.currentAccessToken;

        if (!accessToken.isValid()) {
          DateFormat dateFormat = DateFormat('yyyy.MM.dd hh:mm:ss aaa');
          logger.e(
              'Facebook accessToken appears invalid.  Now: ${dateFormat.format(DateTime.now())}  Expires: ${dateFormat.format(accessToken.expires)}');
        }

Facing the issue.
( 2132): Inactivity, disconnecting from the service
I/BiChannelGoogleApi( 2132): [FirebaseAuth: ] getGoogleApiForMethod() returned Gms: com.google.firebase.auth.api.internal.zzaq@25a6e6
I/flutter ( 2132): PlatformException(ERROR_INVALID_CREDENTIAL, The supplied auth credential is malformed or has expired. [ Unsuccessful debug_token response from Facebook: {"error":{"message":"(#100) You must provide an app access token or a user access token that is an owner or developer of the app","type":"OAuthException","code":100,"fbtrace_id":"AWTXhVaxr_YYaZEhBgXxdzh"}} ], null)```

Not sure why its calling `getGoogleApiMethod()` while authorizing Facebook.


Update AKS Samples for WKO

Context
Operator 4.1.0 released  and it removed create-domain.sh in this commit, while the sample in AKS is still using the script.
To make the sample still work with the latest 4.1.0 version, the sample document should be updated.
Checklist

[x]  The issue must be addressed before current PR is merged.
[x] Sign with OCA

Hello @ankedia, could you help review this PR?

Hello @ankedia, is this ready to go? If so, when can we expect it to be merged?

Hello @ankedia, is this ready to go? If so, when can we expect it to be merged?

Yes, I approved it. The delay was because I was on vacation for a couple of days.

Commits merged through our automation pipeline.


Updating ampinstmgr to 2412 on Linux will shut down all instances

Bug Report
System Information

Operating System (Including distribution name and version number) Ubuntu 20.04.5
AMP version and build date (Always use the version number, 'latest' is not valid!) [Info] AMP Instance Manager v<IP_ADDRESS> built 21/12/2022 17:55
Which AMP release stream you're using (Mainline, Nightly or FastTrack) Mainline

I confirm:

[x] that I have searched for an existing bug report for this issue.
[x] that I am using the latest available version of AMP.
[x] that my operating system is up-to-date.

Symptoms

What are you trying to do? Update AMP (and thereby ampinstmgr) from <IP_ADDRESS> or <IP_ADDRESS> to <IP_ADDRESS>
What are you expecting to happen? Updating ampinstmgr on linux should not affect the underlying instances
What is actually happening? ('Nothing' is not an acceptable answer!) All AMP instances will shutdown/crash when ampinstmgr is updated

Reproduction

Have ampinstmgr v<IP_ADDRESS> or <IP_ADDRESS> with instances running under ie (ie. ADS, game instances)
Check to see all instances are up and running
apt-get update
apt upgrade ampinstmgr
Check instances again - all but ADS are up

Would need logs from systemd to see what went on here. Shared mode instances are shut down when this happens but regular ones shouldn't be.

I note that I had to update ADS on another target, this time using apt update ampinstmgr - this time, it did not restart all instances.
I get the feeling that the upgrade part was touching docker, so it restarted all the docker instances (or at least shut them down). Will be able to confirm on next release when we do a large scale update.

Going to close for now then until it has been confirmed, because indeed a Docker update would absolutely cause this if you did an apt update.


With new python2.7 alpine image, xml libraries are not installed properly (Django 1.4 init failed)

Stack Trace:
web_1            | {"asctime": "24/Dec/2018 03:34:00", "levelname": "INFO", "instance_name": "", "name": "management_commands", "filename": "init.py", "lineno": 227, "pathname": "/webapps/website/instance/management/commands/init.py", "funcName": "handle", "message": "adding search.."}
web_1            | {"asctime": "24/Dec/2018 03:34:00", "levelname": "INFO", "instance_name": "", "name": "management_commands", "filename": "init.py", "lineno": 235, "pathname": "/webapps/website/instance/management/commands/init.py", "funcName": "handle", "message": "Loading initial data.."}
web_1            | Traceback (most recent call last):
web_1            |   File "manage.py", line 15, in <module>
web_1            |     execute_manager(settings)
web_1            |   File "/usr/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 459, in execute_manager
web_1            |     utility.execute()
web_1            |   File "/usr/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 382, in execute
web_1            |     self.fetch_command(subcommand).run_from_argv(self.argv)
web_1            |   File "/usr/local/lib/python2.7/site-packages/django/core/management/base.py", line 196, in run_from_argv
web_1            |     self.execute(*args, **options.__dict__)
web_1            |   File "/usr/local/lib/python2.7/site-packages/django/core/management/base.py", line 232, in execute
web_1            |     output = self.handle(*args, **options)
web_1            |   File "/webapps/website/instance/management/commands/init.py", line 290, in handle
web_1            |     call_command('loaddata', concatenated_fixtures_file_path, verbosity=1, database=using)
web_1            |   File "/usr/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 150, in call_command
web_1            |     return klass.execute(*args, **defaults)
web_1            |   File "/usr/local/lib/python2.7/site-packages/django/core/management/base.py", line 232, in execute
web_1            |     output = self.handle(*args, **options)
web_1            |   File "/usr/local/lib/python2.7/site-packages/django/core/management/commands/loaddata.py", line 239, in handle
web_1            |     (full_path, ''.join(traceback.format_exception(sys.exc_type,
web_1            | UnboundLocalError: local variable 'full_path' referenced before assignment
web_1 exited with code 1

when manually setting  full_path='' traced out to error below.
Problem installing fixture '': Traceback (most recent call last):
  File "/usr/local/lib/python2.7/site-packages/django/core/management/commands/loaddata.py", line 124, in handle
    if format in serializers.get_public_serializer_formats():
  File "/usr/local/lib/python2.7/site-packages/django/core/serializers/__init__.py", line 82, in get_public_serializer_formats
    _load_serializers()
  File "/usr/local/lib/python2.7/site-packages/django/core/serializers/__init__.py", line 120, in _load_serializers
    register_serializer(format, BUILTIN_SERIALIZERS[format], serializers)
  File "/usr/local/lib/python2.7/site-packages/django/core/serializers/__init__.py", line 54, in register_serializer
    module = importlib.import_module(serializer_module)
  File "/usr/local/lib/python2.7/site-packages/django/utils/importlib.py", line 35, in import_module
    __import__(name)
  File "/usr/local/lib/python2.7/site-packages/django/core/serializers/xml_serializer.py", line 12, in <module>
    from xml.sax.expatreader import ExpatParser as _ExpatParser
  File "/usr/local/lib/python2.7/xml/sax/expatreader.py", line 24, in <module>
    raise SAXReaderNotAvailable("expat not supported", None)
SAXReaderNotAvailable: expat not supported

Note: This issue applicable only in latest version of alpine(3.6,3.7,.3.8) based python images

Can you give all the commands you ran and any relevant contextual information or files for reproducing the issue. I suspect it's either an issue with Alpine's musl library or with the Django version being too out of date seeing that 1.11.17 seems to be fine.
Installing Django 1.4.22
$ docker run --rm -dit --name python python:2.7-alpine
153c87d989b108d6709124e7ade843a64c6ea839495ff4e62d2d8a2bd98c629d
$ docker exec -it python sh

/ # pip install django==1.4.22
Collecting django==1.4.22
  Downloading https://files.pythonhosted.org/packages/46/7f/cead60a10b0208451c42e80db2cc90564cf810148ee46631699ec691cbea/Django-1.4.22.tar.gz (7.8MB)
    100% |████████████████████████████████| 7.8MB 3.3MB/s
Building wheels for collected packages: django
  Running setup.py bdist_wheel for django ... error
  Complete output from command /usr/local/bin/python -u -c "import setuptools, tokenize;__file__='/tmp/pip-install-4g4W8g/django/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" bdist_wheel -d /tmp/pip-wheel-863Uw2 --python-tag cp27:
  Traceback (most recent call last):
    File "<string>", line 1, in <module>
    File "/tmp/pip-install-4g4W8g/django/setup.py", line 69, in <module>
      raise RuntimeError('Django 1.4 does not support wheel. This error is safe to ignore.')
  RuntimeError: Django 1.4 does not support wheel. This error is safe to ignore.

  ----------------------------------------
  Failed building wheel for django
  Running setup.py clean for django
Failed to build django
Installing collected packages: django
  Running setup.py install for django ... done
Successfully installed django-1.4.22

/ # python
Python 2.7.15 (default, Dec 21 2018, 03:51:20)
[GCC 6.4.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.

>>> import django
>>> print(django.get_version())
1.4.22

>>> exit()
/ # python -m django --version
/usr/local/bin/python: No module named django.__main__; 'django' is a package and cannot be directly executed

Installing Django 1.11.17
$ docker run --rm -dit --name python1 python:2.7-alpine
dcfb08d4848c9183fec9c4fa3b4a947c906e9957d412badd90abdfdd01038f0e
$ docker exec -it python1 sh

/ # pip install django
Collecting django
  Downloading https://files.pythonhosted.org/packages/09/2b/6c2d363e3d46307251a9d6bf74ec28543805bbcadf56ca729f4a04846914/Django-1.11.17-py2.py3-none-any.whl (7.0MB)
    100% |████████████████████████████████| 7.0MB 3.8MB/s
Collecting pytz (from django)
  Downloading https://files.pythonhosted.org/packages/f8/0e/2365ddc010afb3d79147f1dd544e5ee24bf4ece58ab99b16fbb465ce6dc0/pytz-2018.7-py2.py3-none-any.whl (506kB)
    100% |████████████████████████████████| 512kB 26.9MB/s
Installing collected packages: pytz, django
Successfully installed django-1.11.17 pytz-2018.7

/ # python
Python 2.7.15 (default, Dec 21 2018, 03:51:20)
[GCC 6.4.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.

>>> import django
>>> print(django.get_version())
1.11.17

>>> exit()
/ # python -m django --version
1.11.17

When you install py-cairo, you're grabbing a Python package from Alpine's APK repository, which is not likely to be compatible with the Python that's explicitly installed in (and the purpose of) this image, so that really is not recommended.

I've had success with the following to install pycairo (from https://pypi.org/project/pycairo/ directly):
FROM python:2.7-alpine

RUN set -eux; \
	apk add --no-cache \
		pkgconf \
		cairo-dev \
		gcc \
		musl-dev \
	; \
	pip install pycairo

For further help, I'd suggest trying the Docker Community Forums, the Docker Community Slack, or Stack Overflow.


Proposal: export default

Let LiveScript support export default syntax in addition to the current export keyword. For example,
export default class ChatLog
   ->
     # Init codes

will compile into
var out$ = typeof module !== 'undefined' && module.exports;
if (out$) {
   Object.defineProperty(out$, '__esModule', { value: true });
} else {
   // Possibly throw error here because `export default` doesn't make sense here
}
out$['default'] = ChatLog
module.exports = out$['default']

what is this __esModule thing?
The reason we don't have such a thing is because module.exports = is no code duplication (compared to exports.a = a etc)

__esModule is used for compatibility with Babel, TypeScript, and Traceur compiler, who use this value as a CommonJS flag.

I've always used module.exports and it worked fine. I'm going to clause this, as I've never needed anything like that, and I use modules all the time.

this is for compliance with babel transpiler - but I think that it would be betterr if LS is transpiled to vanilla es6, maintaining the export default syntax. if further compat is needed, then run that code through babel and let babel add the __esModule stuff.

that's another issue :)